Nhằm dễ dàng tạo giao diện, tích hợp thư viện xử lý ảnh, phần mềm sẽ được phát triển từ công cụ Visual Studio 2008, ngôn ngữ C++. Chương trình sẽ chạy trong môi trường Windows, sử dụng thư viện .NET framework để tạo giao diện và OpenCV để xử lý ảnh.
Theo yêu cầu và phạm vi đề ra ở phần mở đầu, phần mềm phải có các module sau:
• Quản lý kỳ thi: cho phép tạo, sửa, xóa kỳ thi, môn thi, đề thi và soạn đáp án. Các dữ liệu về kỳ thi sau khi tạo xong sẽ được lưu lại để làm cơ sở cho việc chấm điểm.
• Chấm điểm trực tiếp từ camera: nhằm thực hiện việc mô phỏng khả năng giao tiếp giữa camera và máy tính, thu nhận hình ảnh từ camera và thực hiện chấm điểm.
• Chấm điểm từ file: các file ảnh sẽ được chụp và lưu lại từ trước. Phần mềm đọc các file ảnh này và cho ra kết quả. Mục đích của module này là đo thời gian thực hiện của chương trình, đánh giá độ chính xác của thuật toán chấm điểm trắc nghiệm.
Đề tài này tập trung vào việc xây dựng thuật toán chấm thi trắc nghiệm nên kết quả chấm điểm sẽ được lưu ra file excel chứ không tạo và lưu vào CSDL để đơn giản hóa chương trình, trong khi đó vẫn đảm bảo in ấn, thống kê được.
2.2. Giới thiệu về thư viện mã nguồn mở OpenCV
OpenCV (Open Computer Vision library) do Intel phát triển, được giới thiệu năm 1999 và hoàn thiện phiên bản 1.0 năm 2006. Thư viện OpenCV gồm hơn 500
Windows, Linux, Mas OS, … đóng vai trò xác lập chuẩn giao tiếp, dữ liệu thuật toán cho lĩnh vực thị giác máy tính (Computer Vision) và tạo điều kiện cho mọi người tham gia nghiên cứu, phát triển ứng dụng.
Hình 2.15 Tổ chức thư viện OpenCV
Trước OpenCV không có một công cụ chuẩn nào cho lĩnh vực xử lý ảnh. Các đoạn code đơn lẻ do các nhà nghiên cứu tự viết thường không thống nhất và không ổn định. Các bộ công cụ thương mại như Matlab, Simulink, Halcon, … lại có giá cao chỉ thích hợp với các công ty phát triển ứng dụng lớn. Ngoài ra, các bộ công cụ này thường kèm theo phần cứng và phần lớn là mã đóng và được thiết kế riêng cho từng thiết bị, rất khó khăn cho việc mở rông ứng dụng.
OpenCV là công cụ hữu ích cho người mới làm quen với xử lý ảnh số vì các ưu điểm sau:
• Được Intel phát triển theo hướng tối ưu hóa cho các ứng dụng xử lý và phân tích ảnh, với cấu trúc dữ liệu hợp lý, thư viện tạo giao diện, truy xuất thiết bị phần cứng được tích hợp sẵn, thích hợp để phát triển nhanh ứng dụng.
• Là thư viện mã nguồn mở, miễn phí (với BSD license). Việc xây dựng trên mã nguồn mở giúp OpenCV trở thành công cụ thích hợp cho nghiên cứu và phát triển, với khả năng thay đổi, mở rộng và phát triển các mô hình, thuật toán.
Được sử dụng rộng rãi. Từ năm 1999 đến nay, OpenCV đã thu hút một lượng lớn người dùng, trong đó có các công ty lớn như Microsoft, IBM, Sony, Siemens, Google và các nhóm nghiên cứu ở Standford, MIT, CMU, Cambridge… Nhiều forum hỗ trợ và cộng động người sử dụng được thành lập, tạo nên kênh thông tin rộng lớn, hữu ích cho việc tham khảo, tra cứu.
• Các chức năng của OpenCV tập trung vào thu thập ảnh, xử lý ảnh và các thuật toán phân tích dữ liệu ảnh, bao gồm:
• Truy xuất ảnh và phim: đọc ảnh số từ camera, từ file ảnh và phim.
• Cấu trúc dữ liệu ảnh số và các dữ liệu cần thiết: ma trận, vector, chuỗi, xâu và cây.
• Xử lý ảnh căn bản: các bộ lọc, các chi tiết cạnh, góc, chỉnh đổi màu, phóng to thu nhỏ, hiệu chỉnh mức xám đồ.
• Xử lý cấu trúc: tìm biên, nhận dạng chuyển động thay đổi trong không gian 3D, đối chiếu bản mẫu, tìm các đơn vị hình học cơ sở: mặt phẳng, đa giác, eclipse, đường thẳng.
• Phân tích dữ liệu ảnh: nhận dạng thực thể, theo dõi các chi tiết và phân tích chuyển động.
• Tạo giao diện đơn giản: hiển thị ảnh, thao tác bàn phím, chuột, thanh trượt để chỉnh thông số.
Chức năng vẽ và chú thích lên ảnh.
2.3. Thuật toán nhận dạng và chấm điểm trắc nghiệm bằng camera bằng camera
Như sơ đồ hình 2.1 đã đề xuất ở trên, thuật toán nhận dạng sẽ thực hiện lần lượt qua các bước cụ thể như sau: