MỤC LỤC
Tóm tắt khóa luận.6
Chương1 Mở đầu.7
1.1. Tổng quan.7
1.2. Mục tiêu đềtài.7
Chương2 Giai đoạn phân tích.8
2.1. Xác định vấn đề.8
2.1.1.Các vấn đề.8
2.1.2.Các mong đợi.8
2.2. Các Actor.8
2.3. Sơ đồUse-case.9
2.4. Đặc tảUse-case.10
2.4.1.Use case: Đăng nhập hệthống.10
2.4.2.Use case: Nhận dạng bài thi.11
2.4.3.Use case: Tổchức thi.12
2.4.4.Use case: Quét bài thi.13
2.4.5.Use case: Xem bảng điểm.14
2.4.6.Use case: Chấm điểm vàlưu điểm bài thi.15
2.5. Các sơ đồSequences Diagram.16
2.5.1.Sơ đồSequences Diagram nhận dạng bài thi.16
2.5.2.Sơ đồSequences Diagram nhận chấm điểm bài thi.17
2.6. Các sơ đồCollaboration.18
2.6.1.Sơ đồCollaboration nhận dạng bài thi.18
2.6.2.Sơ đồCollaboration chấm điểm bài thi.19
2.7. Sơ đồmôhình dữliệu.20
2.8. Mô tảchi tiết các bảng.21
Chương3 Giai đoạn thiết kế.29
Chương4 Xác định thuật toán.32
4.1. Cấu trúc của một ảnh Bipmap.32
4.2. Thuật toán đọc và hiển thịfile ảnh Bipmap.33
4.3. Thuật toán xửlý ảnh Bipmap.34
Chương5 Tiến hành cài đặt.40
5.1. Môi trường cài đặt.40
5.2. Đánh giá kết quả đạt được.40
5.3. Hướng phát triển.40
5.4. Kết luận:.41
Danh mục tham thảo.42
42 trang |
Chia sẻ: netpro | Lượt xem: 2421 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Đề tài Chương trình xử lý chấm điểm các bài thi trắc nghiệm trên giấy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
............................................................................... 8
2.3. Sơ đồ Use-case ..................................................................................... 9
2.4. Đặc tả Use-case .................................................................................. 10
2.4.1.Use case: Đăng nhập hệ thống ......................................................... 10
2.4.2.Use case: Nhận dạng bài thi............................................................. 11
2.4.3.Use case: Tổ chức thi ....................................................................... 12
2.4.4.Use case: Quét bài thi ...................................................................... 13
2.4.5.Use case: Xem bảng điểm................................................................ 14
2.4.6.Use case: Chấm điểm và lưu điểm bài thi........................................ 15
2.5. Các sơ đồ Sequences Diagram........................................................... 16
2.5.1.Sơ đồ Sequences Diagram nhận dạng bài thi................................... 16
2.5.2.Sơ đồ Sequences Diagram nhận chấm điểm bài thi......................... 17
2.6. Các sơ đồ Collaboration..................................................................... 18
2.6.1.Sơ đồ Collaboration nhận dạng bài thi............................................. 18
2.6.2.Sơ đồ Collaboration chấm điểm bài thi ........................................... 19
2.7. Sơ đồ mô hình dữ liệu ........................................................................ 20
4
2.8. Mô tả chi tiết các bảng ....................................................................... 21
Chương3 Giai đoạn thiết kế ...................................................................... 29
Chương4 Xác định thuật toán .................................................................. 32
4.1. Cấu trúc của một ảnh Bipmap............................................................ 32
4.2. Thuật toán đọc và hiển thị file ảnh Bipmap ....................................... 33
4.3. Thuật toán xử lý ảnh Bipmap............................................................. 34
Chương5 Tiến hành cài đặt....................................................................... 40
5.1. Môi trường cài đặt .............................................................................. 40
5.2. Đánh giá kết quả đạt được.................................................................. 40
5.3. Hướng phát triển ................................................................................ 40
5.4. Kết luận: ............................................................................................. 41
Danh mục tham thảo. ................................................................................ 42
5
Tóm tắt khóa luận
Vấn đề nghiên cứu: Xây dựng chương trình nhận dạng kết quả trả lời
của bài thi trắc nghiệm trên giấy, sau đó lưu và ghi nhận lại kết quả
xuống cơ sở dữ liệu.
Phương pháp tiếp cận: Sử dụng cách tiếp cận như sau
o Nhận dạng và đọc các điểm ảnh trong file ảnh BMP
o Mô hình chấm điểm các bài thi trắc nghiệm trên giấy theo hai giai
đoạn.Gai đoạn thứ nhất là tiền xử lý ảnh đó là nhận dạng và đọc
được file ảnh BMP.Giai đoạn thứ hai so sánh kết quả nhận dạng
dược với các đáp án đúng trong cơ sở dữ liệu.
Kết quả đạt được: Chương trình hoạt động tốt và đạt được một số kết
quả như sau:
o Tìm hiểu được về cấu trúc của một file ảnh bitmap.
o Đọc và hiển thị file ảnh bitmap.
o Nhận dạng được số báo danh, mã số đề thi, số câu hỏi, phương án
trả lời của bài làm, số câu hợp lệ, không hợp lệ.
o So sánh đáp án của câu hỏi trong bài làm với đáp án của đề thi và
từ đó chấm điểm bài làm.
o Lưu kết quả bài làm xuống cơ sở dữ liệu.
6
Chương1 Mở đầu
1.1. Tổng quan
Trong những năm gần đây, sự phát triển của công nghệ thông tin đã và
đang làm thay đổi cục diện thế giới. Mọi ngành nghề, mọi lĩnh vực như
kinh tế, y khoa, công nghiêp, …dần dần đã được tin học hóa làm cho công
việc ngày càng trở nên dễ dàng, nhanh chóng, chính xác hơn. Đặc biệt là
trong công tác giáo dục việc tin học hóa góp phần nâng cao chất lượng dạy
và học.Trong thi cử cũng vậy, để đảm bảo chất lượng của một kỳ thi tính
khách quan, chính xác phải được đặt lên hàng đầu. Sự kết hợp giữa trắc
nghiệm và tin học hóa không những đáp ứng được các yêu cầu đó, mà còn
giúp tiết kiệm chi phí tổ chức thi, thời gian công sức của giáo viên đồng
thời kết quả lại nhanh chóng và có độ chính xác cao.Với các ưu điểm trên,
Bộ Giáo Dục nước ta đang tiến hành đưa phương pháp thi trắc nghiệm vào
các kỳ thi tuyển sinh đại học trong những năm tới. Còn ở các trường từ phổ
thông đến đại học, thì hình thức thi trắc nghiệm cũng đã và đang được sử
dụng trong hầu hết các môn thi. Nhìn chung, phương pháp thi trắc nghiệm
đang là xu hướng trong đào tạo.
1.2. Mục tiêu đề tài
Sau khi tìm hiểu và nghiên cứu các phương pháp chấm điểm thủ công trước
đây, chúng em đã và đang xây dựng một chương trình chấm điểm các bài
thi trên giấy với mục tiêu: hỗ trợ việc chấm điểm các bài thi trắc nghiệm
trên giấy một cách dễ dàng và nhanh chóng mà độ chính xác lại cao.
7
Chương2 Giai đoạn phân tích
2.1. Xác định vấn đề
2.1.1. Các vấn đề
Việc phân chia các mã đề thi và các bài làm của thí sinh gặp
nhiều khó khăn.
Việc chấm điểm bằng thủ công còn gặp nhiều khó khăn, mất thời
gian và còn nhiều sai sót.
Việc nhập và lưu điểm bằng tay vào sổ sách mất nhiều thời gian
và dễ sai sót
2.1.2. Các mong đợi
Chương trình mới này giúp việc nhận dạng các bài làm theo mã
đề thi một cách nhanh chóng và chính xác.
Chấm điểm tự động một cách nhanh chóng nhờ vào việc so sánh
các đáp án trong cơ sở dữ liệu một cách nhanh chóng và chính
xác.
Nhập và lưu điểm một cách nhanh chóng và không mất nhiều
thời gian.
2.2. Các Actor
2.2.1. Sinh viên:Đăng nhập hệ thống được quyền xem điểm
2.2.2. Giáo viên:Đăng nhập hệ thống được quyền xem bảng điểm, xem
tra cứu đề thi
2.2.3. Quản trị:Đăng nhập hệ thống được quyền quét bài thi, tổ chức thi,
xem tra cứu đề thi, nhận dạng bài thi, chấm điểm và lưu điểm
8
9
2.3. Sơ đồ Use-case
Sơ đồ mức hai của nhận dạng bài thi
nhan dang bai thi
nhan dang so bao danh
nhan dang ma de thi
nhan dang cau hoi va phuong an
>
>
>
2.4. Đặc tả Use-case
2.4.1. Use case: Đăng nhập hệ thống
2.4.1.1. Tóm tắt
-Use case này mô tả chức năng đăng nhập vào hệ thống
của giáo viên, sinh viên, quản trị.
2.4.1.2. Dòng sự kiện
2.4.1.2.1. Dòng sự kiện chính
-Use case này bất đầu khi một Actor muốn đăng nhập vào
hệ thống.
-Hệ thống yêu cầu chọn một trong bốn người dùng.
-Hệ thống yêu cầu nhập tên và mật khẩu.
-Người dùng nhập tên và mật khẩu.
-Hệ thống kiểm tra tên và mật khẩu, xác nhận là đúng và
cho phép người dùng đăng nhập vào hệ thống.
2.4.1.2.2. Dòng sự kiện khác
-Tên mật khẩu sai: Nếu trong dòng sự kiện chính, Actor
nhập sai tên hoặc mật khẩu hoặc cã hai. Hệ thống sẽ hiển
thị thông báo lỗi. Actor có thể chọn trở về đầu dòng sự
kiện chính hoặc hủy bỏ việc đăng nhập.
2.4.1.3. Các yêu cầu đặc biệt: Không có.
2.4.1.4. Điều kiện tiên quyết: Không có.
2.4.1.5. Điều kiện sau khi hoàn thành
10
-Nếu actor nhập sai tên hoặc mật khẩu thì hệ thống sẽ thông báo
lỗi và nếu đăng nhập quá 3 lần cùng một tên thì hệ thống sẽ
ngừng hoạt động của người sử dụng này.
2.4.1.6. Điểm mở rộng: Không có
2.4.2. Use case: Nhận dạng bài thi
2.4.2.1. Tóm tắt
-Use case này mô tả chức năng nhận dạng bài thi của sinh
viên khi được scan qua máy. Người quản trị là actor chính của
use_case này.
2.4.2.2. Dòng sự kiện
2.4.2.2.1. Dòng sự kiện chính
-Use case này bắt đầu khi người quản trị muốn nhận dạng
bài làm có hợp lệ hay không.
-Hệ thống yêu cầu người sử dụng chọn chức năng nhận
dạng bài thi.
-Hệ thống yêu cầu người sử dụng chọn nút browse để chọn
file ảnh của một bài làm.
-Hệ thống sẽ tiến hành kiểm tra thông tin của bài làm theo
quy định và sẽ trả về thông báo bài thi hợp lệ có thể chấm
điểm nếu thỏa điều kiện.
2.4.2.2.2. Dòng sự kiện khác
-Nếu thông tin bài làm không hợp lệ thì hệ thống sẽ trả về
thông báo bài làm không hợp lệ.
2.4.2.3. Các yêu cầu đặc biệt: Không có.
2.4.2.4. Điều kiện tiên quyết
11
-Hệ thống yêu cầu người quản trị phải đăng nhập thành công.
2.4.2.5. Điều kiện sau khi hoàn thành
-Hệ thống phải xuất thông báo là thông tin bài làm là hợp lệ hay
không hợp lệ cho người sử dụng biết.
2.4.2.6. Điểm mở rộng: Không có
2.4.3. Use case: Tổ chức thi
2.4.3.1. Tóm tắt
-Use case này mô tả chức năng tổ chức thi cho sinh
viên.Người quản trị là actor chính của use case này.
2.4.3.2. Dòng sự kiện
2.4.3.2.1. Dòng sự kiện chính
-Use case này bắt đầu khi người quản trị muốn tổ chức
một kỳ thi
-Hệ thống yêu cầu người sử dụng chọn chức năng tổ chức
kỳ thi.
-Hệ thống yêu cầu người sử dụng đánh số kỳ thi.
-Hệ thống sẽ tiến hành kiểm tra thông tin của kỳ thi theo
quy định và sẽ trả về thông báo kỳ thi hợp lệ.
2.4.3.2.2. Dòng sự kiện khác
-Nếu thông tin kỳ thi không hợp lệ thì hệ thống sẽ trả về
thông báo kỳ thi không hợp lệ.
2.4.3.3. Các yêu cầu đặc biệt: Không có.
2.4.3.4. Điều kiện tiên quyết
12
-Hệ thống yêu cầu người quản trị phải đăng nhập thành công.
2.4.3.5. Điều kiện sau khi hoàn thành
-Hệ thống phải xuất thông báo là thông tin kỳ thi là hợp lệ hay
không hợp lệ cho người sử dụng biết.
2.4.3.6. Điểm mở rộng: Không có
2.4.4. Use case: Quét bài thi
2.4.4.1. Tóm tắt
-Use case này mô tả chức năng quét bài thi của sinh viên
khi sinh viên làm bài xong. Người quản trị là actor chính của use
case này.
2.4.4.2. Dòng sự kiện
2.4.4.2.1. Dòng sự kiện chính
-Use case này bắt đầu khi người quản trị muốn quét bài thi
-Hệ thống yêu cầu người sử dụng chọn chức năng quét bài
thi.
-Hệ thống yêu cầu người sử dụng chọn máy scan
-Hệ thống sẽ tiến hành kiểm tra thông tin giấy scan nếu
hợp lệ thì thông báo cho người sử dụng biết
2.4.4.2.2. Dòng sự kiện khác
-Nếu thông tin giấy không hợp lệ thì hệ thống sẽ trả về
thông báo giấy không hợp lệ.
2.4.4.3. Các yêu cầu đặc biệt: Không có.
2.4.4.4. Điều kiện tiên quyết
13
-Hệ thống yêu cầu người quản trị phải đăng nhập thành công.
2.4.4.5. Điều kiện sau khi hoàn thành
-Hệ thống phải xuất thông báo là thông tin giấy là hợp lệ hay
không hợp lệ cho người sử dụng biết.
2.4.4.6. Điểm mở rộng: Không có
2.4.5. Use case: Xem bảng điểm
2.4.5.1. Tóm tắt
-Use case này mô tả chức năng xem bảng điểm của sinh
viên.Người quản trị và sinh viên là actor chính của use_case này.
2.4.5.2. Dòng sự kiện
2.4.5.2.1. Dòng sự kiện chính
-Use case này bắt đầu khi người quản trị và sinh viên
muốn xem điểm.
-Hệ thống yêu cầu người sử dụng chọn chức năng xem
điểm bài thi.
-Hệ thống yêu cầu người sử dụng chọn nút xem điểm.
-Hệ thống sẽ tiến hành kiểm tra thông tin và xuất ra bảng
điểm của các sinh viên.
2.4.5.2.2. Dòng sự kiện khác
-Nếu thông tin xem điểm không hợp lệ thì hệ thống sẽ trả
về thông báo điểm không hợp lệ.
2.4.5.3. Các yêu cầu đặc biệt: Không có.
2.4.5.4. Điều kiện tiên quyết
14
-Hệ thống yêu cầu người quản trị và sinh viên phải đăng nhập
thành công.
2.4.5.5. Điều kiện sau khi hoàn thành
-Hệ thống phải xuất thông báo là thông tin điểm là hợp lệ hay
không hợp lệ cho người sử dụng biết.
2.4.5.6. Điểm mở rộng: Không có
2.4.6. Use case: Chấm điểm và lưu điểm bài thi
2.4.6.1. Tóm tắt
-Use case này mô tả chức năng tự động chấm điểm các bài
thi sau khi đã nhận dạng là hợp lệ. Người quản trị là actor
chính của use case này.
2.4.6.2. Dòng sự kiện
-Use case này bắt đầu khi người sử dụng muốn chấm điểm
các bài thi sau khi đã nhận dạng.
-Hệ thống yêu cầu người sử dụng chọn chức năng chấm
điểm bài thi.
-Hệ thống yêu cầu người sử dụng chọn nút browse để chọn
file ảnh của một bài làm đã được nhận dạng.
-Hệ thống sẽ tiến hành chấm điểm bài làm một cách tự
động khi người sử dụng nhấn vào nút chấm điểm.
-Trả về bài thi cùng số điểm chấm thông qua đáp án có sẳn
của câu hỏi trong bài thi.
2.4.6.3. Các yêu cầu đặc biệt: Không có.
2.4.6.4. Điều kiện tiên quyết
15
16
-Yêu cầu người quản trị phải đăng nhập thành công
-Chỉ chấm được những bài thi thỏa điều kiện nhận dạng.
2.4.6.5. Điều kiện sau khi hoàn thành
-Hệ thống phải trả ra số điểm của bài thi.
2.4.6.6. Điểm mở rộng: Không có
2.5. Các sơ đồ Sequences Diagram
2.5.1. Sơ đồ Sequences Diagram nhận dạng bài thi
17
2.5.2. Sơ đồ Sequences Diagram nhận chấm điểm bài thi
18
2.6. Các sơ đồ Collaboration
2.6.1. Sơ đồ Collaboration nhận dạng bài thi
19
2.6.2. Sơ đồ Collaboration chấm điểm bài thi
20
2.7. Sơ đồ mô hình dữ liệu
2.8. Mô tả chi tiết các bảng
2.8.1. Mô tả bảng sinh viên
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
MSSV Mã số sinh
viên
Char 10 >=1 PK
TenSV Tên sinh viên Varchar 50 >=1
NgaySinh Ngày sinh Date
MSLop Mã số lớp Char 10 >=1 FK
2.8.2. Mô tả bảng lớp
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
MSLop Mã số lớp Char 10 >=1 PK
IDKhoa Mã số khoa Char 10 >=1 FK
TenLop Tên lớp Varchar 50 >=1
2.8.3. Mô tả bảng khoa
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
IDKhoa Mã số khoa Char 10 >=1 PK
TenKhoa Tên khoa Varchar 50 >=1
TruongKhoa Trưởng khoa Varchar 50 >=1
21
2.8.4. Mô tả bảng môn học
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
MSMH Mã số môn học Char 10 >=1 PK
TenMH Tên môn học Varchar 50 >=1
2.8.5. Mô tả bảng kỳ thi
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
IDKyThi Mã kỳ thi Char 10 >=1 PK
LanThi Lần thi Integer
Phong Phòng Char 10 >=1
GiamThi Giám thị Varchar 50 >=1
MSMH Mã số môn
học
Varchar 10 >=1 FK
2.8.6. Mô tả bảng nội dung đề thi
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
IDDT Mã đề thi Char 10 >=1 PK,FK
STTCau Số thứ tự câu Integer PK
IDCauHoi Mã câu hỏi Char 10 >=1 FK
22
2.8.7. Mô tả bảng đề thi
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
IDDT Mã đề thi Char 10 >=1 PK
TenDeThi Tên đề thi Varchar 50
STTDe Số thứ tự đề Integer
ChiSo Chỉ số Integer
ThoiGian Thời gian char 10 >=1
IDKyThi Mã kỳ thi Char 10 >=1 FK
DoKho Độ khó Char 10 >=1 FK
MSGV Mã số giáo
viên
Varchar 20 >=1 FK
2.8.8. Mô tả bảng câu hỏi
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
IDCauHoi Mã câu hỏi Char 10 >=1 PK
NoiDung Nội dung Varchar 200 >=1
DoKho Độ khó int
IDHP Mã học phần int FK
IDNhom Mã nhóm int FK
Sudung Sử dụng bit
23
2.8.9. Mô tả bảng trả lời
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
IDCauHoi Mã câu hỏi Char 10 >=1 PK,FK
PhuongAn Phương án Varchar 200 >=1
ThuTu Thứ Tự Integer
LaDung Câu đúng Bit
2.8.10. Mô tả bảng bài làm
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng buộc
MSSV Mã số sinh
viên
Char 10 >=1 PK,FK
STTCau Số thứ tự câu Integer PK,FK
IDDT Mã đề thi Char 10 >=1 PK,FK
ChonPA Chọn phương
án
Char 10 >=1
24
2.8.11. Mô tả bảng kết quả
Vùng Diễn giải Kiểu dữ liệu Kích
thước
Giá giới
hạn
Giá trị
ngầm
định
Ràng
buộc
IDKyThi Mã kỳ thi Char 10 >=1 PK,FK
MSSV Mã số sinh
viên
Char 10 >=1 PK,FK
MSMH Mã số môn
học
Char 10 >=1 PK,FK
DiemSo Điểm số DECIMAL(10,2)
2.8.12. Mô tả bảng học phần
Vùng Diễn giải Kiểu dữ liệu Kích
thước
Giá giới
hạn
Giá trị
ngầm
định
Ràng
buộc
IDHP Mã học phần Char 10 >=1 PK
MSMH Mã số môn học Char 10 >=1 FK
TenHP Tên học phần Char 50
ThuTu Thứ tự Integer
25
2.8.13. Mô tả bảng quy định kiến thức
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng
buộc
IDCapDo Mã cấp
độ
Char 10 >=1 PK,FK
IDHP Mã học
phần
Char 10 >=1 PK,FK
SoluongCauHoi Số lượng
câu hỏi
Integer
CauHoiDong
DangToiDa
Câu hỏi
đồng
đạng tối
đa
Integer
SoLuongCauHoi
KhoDo1
Số lượng
câu hỏi
khó độ 1
Integer
SoLuongCauHoi
KhoDo2
Số lượng
câu hỏi
khó độ 2
Integer
SoLuongCauHoi
KhoDo3
Số lượng
câu hỏi
khó độ 3
Integer
26
2.8.14. Mô tả bảng cấp độ
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng
buộc
IDCapDo Mã cấp độ Char 10 >=1 PK
TenCapDo Tên cấp độ Varchar 50 >=1
SoluongCau
Hoi
Số lượng
câu hỏi
Integer
2.8.15. Mô tả bảng Nhóm đồng dạng
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng
buộc
IDNhóm Mã số đồng
dạng
Integer PK
Ten Tên nhóm Varchar 50 >=1
IDHP Mã học
phần
Integer FK
27
2.8.16. Mô tả bảng Giáo viên
Vùng Diễn giải Kiểu dữ
liệu
Kích
thước
Giá giới
hạn
Giá trị
ngầm định
Ràng
buộc
MSGV Mã số giáo
viên
Varchar 20 PK
TenGV Tên giáo
viên
Varchar 50 >=1
IDKhoa Mã số khoa Integer FK
Truongkhoa Trưởng
khoa
Varchar 50
28
29
Chương3 Giai đoạn thiết kế
Màn hình đăng nhập
Màn hình chọn công cụ nhận dạng và chấm điểm
30
Cơ chế hoạt động của hệ thống
Hệ thống nhận dạng
và chấm điểm
In điểm
Chọn tên
lượt thiIn bài làm
Mở tập tin
ảnh
Nhận dạng
Lưu bài
Chấm điểm
Thoát khỏi
chương trình
31
Màn hình chính của chương trình nhận dạng và chấm điểm
Chương4 Xác định thuật toán
4.1. Cấu trúc của một ảnh Bipmap
-Gồm 3 phần: - BitmapHeader.
-BitmapInfor.
-BitmapData.
a). BitmapHeader: gồm 14 byte
1-2 Nhận dạng file Kiểu arrayp[1..2] of char:chứa ký tự BM
3-6 Kích thước file Kiểu Longint: tính bằng byte
7-10 Reserve nt : tôi chưa biết(có lẽ là tên file thừa)
11-14 Byte bắt đầu Kiểu longint, vị trí byte bắt đầu vùng
vùng data data kể từ đầu file
b). BitmapInfor: gồm 40 byte
1-4 Số byte trong vùng info Kiểu Longint, hiện tại có
giá trị 40
5-8 Chiều rộng bitmap Kiểu longint tính bằng pixel
9-12 Chiều cao bitmap Kiểu longint tính bằng pixel
13-14 Số Planes màu Kiểu Word số bảng màu
15-16 Số bits cho một pixel Kiểu Word, các giá trị có
thể có 1: Đen/trắng, 4:16
màu, 8:256 màu, 24: 24bit màu
17-20 Kiểu nén dữ liệu Kiểu Longint có giá trị là 0: Không nén
1: Nén runlength+8bit/pixel
2: Nén runlength+4bit/pixel
21-24 Kích thước ảnh Kiểu Longint, bằng số byte của ảnh
25-28 Độ phân giải ngang Kiểu Longint, tính bằng pixel
29-32 Độ phân giải dọc Kiểu Longint, tính bằng pixel
33-36 Số màu được sử dụng Kiểu Longint trong ảnh
37-40 Số màu được sử dụng Kiểu Longint khi hiện ảnh
Bitmap palette
32
-Tiếp theo sau vùng info là palette màu của BMP, gồm nhiều bộ có
kích thước bằng 4 byte xếp liền nhau theo cấu trúc Blue-Green-Red và một
Byte dành riêng cho Itensity.Kích thước của vùng Palette màu bằng 4*số
màu của ảnh.Vì Palette màu của màn hình có cấu tạo theo thứ tự Red-
Green-Blue, nên khi đọc palette màu của ảnh BMP vào ta phải chuyển đổi
lại cho phù hợp. Số màu của ảnh được biết dựa trên số bít cho 1 pixel cụ
thể là: 8bits/pixel: ảnh 256 màu, 4bits/pixel: ảnh 16 màu, 24bits/pixel ảnh
24 bít màu
c). BitmapData:
-Phần này kề tiếp ngay sau Palette màu của BMP.Đây là phần chứa các
giá trị màu của các điểm ảnh trong BMP.Các điểm ảnh được lưu theo thứ tự
từ trái qua phải trên một dòng và các dòng lại được lưu theo thứ tự dưới lên
trên.Mỗi Byte trong vùng BitmapData biểu diễn 1 hoặc nhiều điểm ảnh tùy
theo số bits cho một pixel.
4.2. Thuật toán đọc và hiển thị file ảnh Bipmap
-Thuật toán hiển ảnh BMP gồm các bước sau:
B1:-Khai báo cấu trúc ảnh bitmap
B2:-Đọc BitmapHeader để nhận dạng file có đúng là BMP thật không
(hai byte đầu tiên là "BM") và xác định Byte bắt đầu vùng Bitmap Data
B3:-Đọc BitmapInfo để lấy các thông tin cơ bản về ảnh như chiểu rộng,
chiều cao, số Bits cho 1 pixel từ đó suy ra số màu và kích thước palette
màu.
B4:-Đọc Palette màu và chuyển đổi palette màu từ dạng Blue-Green-
Red-Reverse sang Ren-Green-Blue.
B5:-Đọc phần Bitmap Data, tính toán và vẽ từng điểm ra màn hình theo
thứ tự từ trái qua phải và từ dưới lên trên.
33
4.3. Thuật toán xử lý ảnh Bipmap
4.3.1. Xác định vị trí
4.3.1.1. Vị trí đáp án
Private Sub GetViTri(ByVal SttCau As Long, ByVal PhuongAn As
Long, ByRef x As Long, ByRef y As Long)
x = csGOC1_X - csPAGOC1_Dx + ((SttCau - 1) \ csSOCAUMOICOT) *
csCOL_Dy + (PhuongAn - 1) * csPA_Dx
y = csGOC1_Y + csPAGOC1_Dy + ((SttCau - 1) Mod
csSOCAUMOICOT) * csPA_Dy
End Sub
4.3.1.2. Vị trí số báo danh
Private Sub getvitrisbd(ByVal sttsosbd As Long, ByVal chisosbd As
Long, ByRef x As Long, ByRef y As Long)
x = csGOC1_X - cschisobdGOC1_Dx + (sttsosbd - 1) * cssbd_Dx
y = csGOC1_Y + cschisobdGOC1_Dy + (chisosbd - 1) * cssbd_Dy
End Sub
4.3.1.3. Vị trí mã đề thi
Private Sub getvitridethi(ByVal sttsodethi As Long, ByVal chisodethi
As Long, ByRef x As Long, ByRef y As Long)
x = csGOC1_X - cschisodtGOC1_Dx + (sttsodethi - 1) * cssbd_Dx
y = csGOC1_Y + cschisodtGOC1_Dy + (chisodethi - 1) * cssbd_Dy
End Sub
4.3.2. Đọc file ảnh BMP
Private Sub docbmp()
Dim Position As Long = 0, temp As Integer = 0
On Error GoTo Handle_FileError
Me.Cursor = Cursors.WaitCursor
34
FileOpen(1, listdsbt.Text, OpenMode.Binary)
'---- Doc phan Header----------
Position = 1
FileGet(1, HeaderBmp.NhanDangFile, Position)
Position = Position + 2
FileGet(1, HeaderBmp.KichThuocFile, Position)
Position = Position + 4
FileGet(1, HeaderBmp.DuTru, Position)
Position = Position + 4
FileGet(1, HeaderBmp.ByteDuLieuBatDau, Position)
Position = Position + 4
'---- Doc phan InfoHeader----------
Position = 15
FileGet(1, InfoHeaderBmp.SoByteInfo, Position)
Position = Position + 4
FileGet(1, InfoHeaderBmp.ChieuRongAnh, Position)
Position = Position + 4
FileGet(1, InfoHeaderBmp.ChieuCaoAnh, Position)
Position = Position + 4
FileGet(1, InfoHeaderBmp.SoBangMau, Position)
Position = Position + 2
FileGet(1, InfoHeaderBmp.SoBitMotPixel, Position)
Position = Position + 2
FileGet(1, InfoHeaderBmp.KieuNenDuLieu, Position)
Position = Position + 4
FileGet(1, InfoHeaderBmp.KichThuocAnh, Position)
Position = Position + 4
FileGet(1, InfoHeaderBmp.DoPhanGiaiNgang, Position)
Position = Position + 4
FileGet(1, InfoHeaderBmp.DoPhanGiaiDoc, Position)
Position = Position + 4
35
FileGet(1, InfoHeaderBmp.SoMauSuDungTrongAnh, Position)
Position = Position + 4
FileGet(1, InfoHeaderBmp.SoMauSuDungHienAnh, Position)
Position = Position + 4
Position = HeaderBmp.ByteDuLieuBatDau + 1
FileClose(1)
Me.Cursor = Cursors.Default
Exit Sub
Handle_FileError:
FileClose(1)
Me.Cursor = Cursors.Default
End Sub
4.3.3. Mở file ảnh BMP
Private Sub CmdOpen_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles CmdOpen.Click
On Error GoTo Handle
Dim i As Integer, ThuMucAnh As String, TaptinAnh As String
Dialog = New OpenFileDialog
Dialog.Filter = "Bitmap files (*.bmp)|*.bmp|All files (*.*)|*.*"
Dialog.FilterIndex = 1
Dialog.Multiselect = True
Dialog.ShowDialog(Me)
Dim s As String
listdsbt.Items.Clear()
For i = Dialog.FileNames.GetLowerBound(0) To
Dialog.FileNames.GetUpperBound(0)
s = Dialog.FileNames(i)
listdsbt.Items.Add(s)
Next
TaptinAnh = Dialog.FileName
Exit Sub
Handle:
If Err.Number MsgBoxStyle.Critical Then MsgBox(Err.Description,
MsgBoxStyle.OkOnly + MsgBoxStyle.Exclamation) 'cdlCancel=32755
End Sub
36
4.3.4. Xử lý có tô hay không
Private Function GetToMau(ByVal x As Long, ByVal y As Long) As
Boolean
Dim position As Integer, temp As Short
Dim i As Short, j As Short
Dim mauden As Integer, mautrang As Integer
On Error GoTo Handle_FileError
Me.Cursor = Cursors.WaitCursor
FileOpen(1, listdsbt.Text, OpenMode.Binary)
'---- Doc phan Header----------
position = 1
FileGet(1, HeaderBmp.NhanDangFile, position)
position = position + 2
FileGet(1, HeaderBmp.KichThuocFile, position)
position = position + 4
FileGet(1, HeaderBmp.DuTru, position)
position = position + 4
FileGet(1, HeaderBmp.ByteDuLieuBatDau, position)
position = position + 4
'---- Doc phan InfoHeader----------
position = 15
FileGet(1, InfoHeaderBmp.SoByteInfo, position)
position = position + 4
FileGet(1, InfoHeaderBmp.ChieuRongAnh, position)
position = position + 4
FileGet(1, InfoHeaderBmp.ChieuCaoAnh, position)
Các file đính kèm theo tài liệu này:
- Luận văn- Xây dựng phần mềm chấm điểm bài thi trắc nghiệm trên giấy.pdf