Tải bản đầy đủ (.pdf) (13 trang)

PHẦN MỀM THIẾT KẾ VÀ CHẤM ĐIỂM TỰ ĐỘNG BIỂU MẪU THI TRẮC NGHIỆM - 3 pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (697.12 KB, 13 trang )









Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 22 -
b) Phần trả lời câu hỏi:
Đây là nơi thí sinh đánh dấu câu trả lời của mình. Nó có dạng như hình
sau:

Hình 2-8: Phần trả lời câu hỏi của thí sinh trong đề thi mẫu
c) Các phần khác:
Qua hình minh họa trên ta nhận thấy trên các biểu mẫu có thêm đường
viền đen. Các đối tượng này đóng vai trò là lề của biểu mẫu, điều này giúp ích
rất nhiều cho quá trình chấm điểm được chính xác hơn.
Ngoài những thành phần nêu trên chúng ta còn thấy trên đề còn có một số đối
tượng đồ hoạ như: đường thẳng, hình chữ nhật, hình tròn…

2.1.2 Tổ chức dữ liệu để biểu diễn và lưu trữ biểu mẫu.
Thiết kế biểu mẫu là một phần của hệ thống, nó không chỉ có nhiệm vụ tạo ra
những mẫu bài thi trắc nghiệm mà còn có nhiệm vụ cung cấp thông tin về mẫu bài
thi đó cho quá trình nhận dạng sau này. Do đó việc tổ chức lưu trữ như thế nào cũng









Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 23 -
là vấn đề hết sức quan trọng. Ngày nay công nghệ XML đang phát triển rất mạnh và
đang được áp dụng rất rộng rãi. Ngoài việc giúp cho định nghĩa một đối tượng có
cấu trúc được rõ ràng, nó còn có khả năng chuyển đổi sang các hệ thống khác một
cách dễ dàng. Và đó cũng là lý do mà chương trình chọn cách lưu trữ có sử dụng
XML. [5]
Mỗi biểu mẫu được xem là một “Document” gồm nhiều trang “Page”. Mỗi
trang lạ
i gồm các đối tượng khác. Dựa theo phân tích các đối tượng như trên thì ta
có thể lưu trữ biểu mẫu theo cấu trúc như sau (chi tiết sẽ được đề cập sau).
<Document>
<Page>
<Text/>
<Text/>
<TextField/>
<AnswerSheet/>
<AnswerSheet/>
<Line/>
<Rect/>
<Ellipse/>

</Page>
<Page>
</Page>

</Document>










Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 24 -
2.2 Lý thuyết cho phần chấm điểm tự động:
2.2.1 Tóm tắt quá trình thực hiện của phần chấm điểm tự động
Chương trình khi chấm điểm sẽ thực hiện một quá trình được tóm tắt như sau:
Đầu tiên, bài thi sau khi được làm xong, sẽ được quét đưa vào máy tính
xử lý. Ảnh lúc này là ảnh màu chiếm nhiều thông tin không cần thiết
cho việc chấm điểm, do đó trước khi chấm cần được làm xám và
chuyển thành ảnh nhị phân (tức ảnh trắng đen) để loại bỏ bớt các
thông tin dư thừa. Vì các máy scan hầu hết đều không có vị trí canh
chuẩn, nên ảnh bài thi đầu vào cho việc chấm điểm có thể sẽ bị lệch,
nghĩa là các vị trí cần chấm trong ảnh không chính xác so với mẫu
chấm bài, dẫn đến bài chấm sẽ bị sai.
Dựa vào các đánh dấu có sẵn ở 4 góc của bài thi được xác định bằng
thuật toán Hough Transform, máy sẽ tính được góc lệch của bài thi.
(Tuy nhiên, do ban đầu việc scan bị lệch nên phần rìa của bài thi sẽ bị
vùng đen. Nên để nhận dạng 4 góc đựơc chính xác, trước đó chương
trình cần chuyển vùng rìa đen sang trắng, tức loại bỏ vùng đen đó bằng
thuật toán tô màu. Để cải tiến tốc độ, thu
ật toán tô màu dựa theo
dòng quét cải tiến được sử dụng).

Sau khi tính được góc lệch của ảnh bài thi so với mẫu chấm bài,
chương trình sẽ áp dụng phép xoay ảnh, một trong các lý thuyết xử lý
ảnh, để chuyển bài thi về trạng thái đúng, tức ảnh bài thi không bị lệch
nữa. Lúc này, các vị trí đánh dấu của bài thi đã thay đổi, đều bị xoay
một góc như ảnh bài thi, chương trình sẽ thực hiện các phép tính xoay
để xác định lại vị trí hiện tại của các
đánh dấu ở 4 góc. Tiếp đó, chương
trình sẽ thực hiện cắt bỏ các phần thừa ngoài vùng đánh dấu của bài thi,
chỉ lấy toàn bộ phần bên trong vùng đánh dấu. Kết quả ta đã có đựơc
một ảnh bài thi hoàn chỉnh có các vị trí chấm được xác định theo mẫu








Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 25 -
chấm bài chuẩn. Các bước trên là các giai đoạn làm chuẩn ảnh đầu vào
để việc chấm thi được chính xác.
Công việc tiếp theo là chấm điểm ảnh bài thi đã được chuẩn hoá theo
mẫu chấm tương ứng. Dựa vào các thông tin về các vị trí cần thiết (cho
việc rút trích thông tin thí sinh cũng như chấm điểm cho bài thi) từ bản
mẫu bài thi trong phần thiết kế, ta sẽ lấy ra các vùng ảnh cần được xử
lý (crop).
Tuỳ theo thông tin từ mẫu chấm, ta sẽ biết được vùng ảnh lấy ra cần
thực hiện hoặc việc xem xét có tô hay không, hoặc phức tạp hơn là
nhận dạng chữ viết tay in có trong vùng ảnh đó. Đối với trường hợp xét

một vùng ảnh là có được tô hay không thì công việc chỉ đơn giản là
xét xem mật độ điểm đen trong vùng ảnh đó có lớn hay nhỏ hơn một
ngưỡ
ng nào đó do ta quy định sẵn từ trước. Tuy nhiên, đối với trường
hợp vùng ảnh chứa chữ viết tay in, công việc tương đối phức tạp hơn,
đòi hỏi phải áp dụng lý thuyết về mạng nơron để nhận dạng ký tự
được chứa trong vùng ảnh đang xét. Do mạng nơron có số đầu vào xác
định cụ thể, nên vùng ảnh cần nhận dạng phải được biến đổi tỉ lệ
(scale) lại cho phù hợp với đầu vào của mạng. Chi tiết về việc ứng
dụng mạng nơ ron sẽ được bàn rõ ở phần “Mạng nơ ron và ứng dụng
vào nhận dạng chữ viết tay in”.
Sau khi chấm xong, thông tin của bài làm vừa có sẽ được so với đáp án
để cho ra kết quả, đưa vào danh sách các bài thi đã chấm. Người dùng
có thể lưu lại danh sách kết quả này vào cơ sở dữ liệu để tiện việc xem
xét lại về sau.
Sau đây là sơ đồ mô tả tóm tắt quá trình chấm thi:








Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 26 -










Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 27 -

Hình 2-9: Sơ đồ tóm tắt quá trình chấm thi
2.2.2 Sơ Lược Các Lý Thuyết Về Xử Lý Ảnh Và Nhận Dạng
2.2.2.1 Xử lý ảnh:
2.2.2.1.1 Các thao tác xử lý ảnh cơ bản:
Trong phần chấm điểm tự động này, các thao tác xử lý ảnh được ứng dụng
bao gồm: làm xám ảnh (greyscale), chuyển ảnh sang ảnh nhị phân (threshold), xoay
ảnh, biển đổi tỉ lệ ảnh.
Ta nhận thấy, đối với đề tài nhận dạng bài thi trắc nghiệm cụ thể như yêu
cầu, màu sắc trong ảnh của bài thi là không cần thiết. Do đó, thực hiện vi
ệc chuyển








Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 28 -
đổi từ ảnh màu sang ảnh xám rồi sang ảnh nhị phân là nhằm đơn giản hoá, loại bỏ
các thông tin dư thừa và chuẩn hoá đầu vào của chương trình, giúp quá trình xử lý

của chương trình được gọn nhẹ và nhanh hơn.
Tiếp đến, do bài thi của thí sinh khi được quét vào máy để chấm sẽ xảy ra
trường hợp bài thi bị đặt nghiêng trong máy scan, dẫn đến bài thi trong ảnh đầu vào
không được vuông góc như trong bản thiết kế mà sẽ bị nghiêng m
ột góc bất kỳ.
Việc ứng dụng xoay ảnh ở đây nhằm xoay bài thi lại cho vuông góc như trong mẫu
thiết kế.
Cuối cùng, vì chương trình cho phép các file ảnh đầu vào có kích thước bất
kỳ, nên việc biến đổi tỉ lệ ảnh là cần thiết nhằm giúp chuyển các vùng cần nhận
dạng hay xử lý về một chuẩn chung, cụ thể là về một kích thước chung (chẳng hạn
vùng viết chữ
tay cần nhận dạng sẽ được scale lại thành ảnh có kích thước 16x16 để
phù hợp với đầu vào của mạng nơrôn ứng dụng cho việc nhận dạng chữ viết tay -
xem ở phần nhận dạng chữ viết tay
).
Chi tiết về các thao tác này được bàn rõ ở phần phụ lục.
2.2.2.1.2 Tô màu bằng thuật toán dựa theo dòng quét cải tiến
Các định nghĩa:
9 Một vùng tô bao gồm đường biên và vùng bên trong. Đường biên là
một đường khép kín, ví dụ như đa giác.
9 Tô màu là thao tác tìm các điểm sáng “nằm bên trong” một vùng tô.
9 Tô dựa theo dòng quét (scan line) là tô màu theo dòng điểm sáng trên
màn hình.

Cách thực hiện:
Thuật toán tô màu dựa theo đường biên: [2]
Đường biên trong thuật toán này được mô tả bằng một giá trị duy nhất
là màu của tất cả các điểm thuộc về đường biên.
Bắt đầu từ điểm nằm bên trong vùng tô, ta sẽ kiểm tra các điểm lân cận của
nó đã được tô màu hay có phải là điểm biên hay không, nếu không phải là









Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 29 -
điểm đã tô và không phải là điểm biên, ta sẽ tô màu nó. Quá trình này được
lặp đi lặp lại cho đến khi nào không còn tô được điểm nào nữa thì dừng.
Bằng cách này, toàn bộ các điểm thuộc vùng tô được kiểm tra và sẽ được tô
hết.

Hình 2-10: quá trình thực hiện của thuật toán tô màu dựa theo đường biên
Tuy nhiên, do thuật toán này khi cài đặt có tính đệ quy, thường dẫn
đến tràn bộ nhớ đối với vùng tô khá lớn. Cho nên, để cải tiến, ta sẽ tiến hành
loang dần và lần lượt tô từng đoạn giao theo dòng quét ngang thay vì tô theo
các điểm lân cận (chẳng hạn 4 điểm lân cận). Đó chính là thuật toán tô màu
dựa theo dòng quét cải tiến được trình bày ngay sau đây.

Thuật toán tô màu theo dòng quét cải tiến:
9 Giới thiệu ý tưởng:
Lưu lại thông tin của điểm bắt đầu mỗi đoạn giao nhau của dòng quét
ngang thay vì phải lưu hết tất cả các điểm lân cận chưa được tô xung quanh
điểm hiện hành. Việc tô màu được thực hiện loang theo các dòng quét từ
điểm bắt đầu hướng lên biên trên, sau khi tô xong, lại theo hướng xuống biên
dưới. Ứng với m
ỗi dòng quét ngang, ta sẽ loang và tìm pixel trái nhất để lưu

lại.
9 Chi tiết thuật toán:
Từ một điểm bất kỳ nằm trong vùng cần tô:








Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 30 -
B1: ta tìm điểm bên trái nhất trong vùng cần tô của dòng kề trên và dòng kề
dưới điểm đang xét tính từ vị trí của điểm đang xét (miễn các dòng kề trên và
dòng kề dưới này vẫn nằm trong vùng cần tô). Các điểm trái nhất đó, ta đưa
vào một danh sách chờ theo thứ tự định sẵn (chẳng hạn điểm nằm trên trước
rồi điểm nằm dưới sau) miễn các đ
iểm đó không trùng với các điểm đã có
trong danh sách chờ.
B2: Ta lại tiếp tục xét cho điểm kề bên phải của điểm đang xét. Nếu đã đến
đường biên thì nhảy sang B3, còn ko thì quay lại B1.
B3: Ta lấy phần tử được đưa vào sau cùng của danh sách chờ rồi lại quay trở
về B1 làm tương tự như trên. Nếu danh sách chờ hết phần tử thì đã tô xong
vùng cần tô, thuật toán kế
t thúc.
9 Ví dụ minh hoạ:
Trong hình 2.10 sau, đoạn giao đầu tiên chứa điểm bắt đầu (tô màu
trắng) sẽ được tô trước). Sau đó các vị trí 1, 2 ứng với các đoạn giao của các
dòng quét kế tiếp sẽ được lưu lại.


Hình 2-11
Bước tiếp theo (hình 2.11), điểm ứng với vị trí 2 sẽ được lấy ra và tiến
hành tô màu bằng cách loang từ điểm này ra theo chiều ngang, sau đó pixel
ứng vị trí 3 của dòng quét kế tiếp sẽ được lưu lại.








Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 31 -

Hình 2-12
Sau khi dòng quét ứng với điểm 3 đã được xử lý tương tự như trên
xong, stack lưu các vị trí của các điểm “hạt giống” cho các dòng quét kế tiếp
như trong hình 2.12.


Hình 2-13
Hình 2.13 minh hoạ khi thuật toán đã tô được toàn bộ một phần vùng
phía trên bên phải của vùng tô. Khi pixel ứng với vị trí 5 được xử lý xong, ta
có phần còn lại phía trên bên trái sẽ được tô. Sau đó pixel ứng với vị trí 4 sẽ
được xử lý, các dòng quét phía dưới sẽ được tô tiếp theo.









Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 32 -

Hình 2-14

Ý nghĩa:
Thuật toán tô màu dựa theo dòng quét cải tiến được dùng để tô màu 4 góc
của ảnh bài thi khi mới vừa được đưa vào chấm. Vì ảnh của bài thi ban đầu có phần
rìa xung quanh mày đen, mà nếu cứ để như vậy rồi nhận dạng các ký hiệu định sẵn
ở bốn góc sẽ dẫn đến nhận dạng sai vị trí các ký hiệu đó.
Vì vậy, ta phải dùng thuật toán tô màu để tô trắng các vùng đen ở bốn góc
giúp việc nh
ận dạng đựơc chính xác. Để giúp giảm bớt thời gian thực hiện của
chương trình, trong tình huống cụ thể này, ta đã áp dụng thuật toán tô màu quét
dòng cải tiến giúp việc tô màu được nhanh hơn, không tốn nhiều tài nguyên.

2.2.2.2 Nhận dạng:
2.2.2.2.1 Nhận dạng bốn góc của bài thi bằng thuật toán Hough
Transform

Thuật toán Hough Transform cơ bản
[3] :

Dẫn nhập:









Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 33 -
Xét trường hợp cần nhận dạng các đường thẳng bất kỳ trong một ảnh nhị phân
(với các hình ảnh trên hình được quy định có màu đen):
- Ta biết rằng với mỗi điểm đen bất kỳ trong không gian ảnh sẽ có vô số các
đường thẳng đi qua điểm đó.
- Ta lại biết rằng mọi đường thẳng đều có thể biểu diễn được bằng phương
trình sau:
y = mx + b
với m và b là 2 số thực bất kỳ, trong đó m xác định góc của đường thẳng so
với trục hoành và b xác định vị trí đường thẳng cắt với trục tung.
Do đó, với một cặp điểm đen (x1,y1) xác định bất kỳ, ta sẽ có thể tìm ra được
vô số cặp (m,b) ứng với các đường thẳng có thể đi qua điểm (x1,y1) đó, sao cho m
và b thoả điều kiện sau:
b = y1 – mx1

Thuật toán Hough Transform cơ bản được thực hiện dựa trên ý tưởng
như sau:
Mỗi cặp điểm (x,y) trong ảnh sẽ xác định trong không gian (m,b) một đường
thẳng duy nhất tương ứng với cặp điểm (x,y) đó. Đường thẳng này giúp xác định
các cặp điểm (m,b) mà giá trị của chúng giúp tạo nên các đường thẳng trong ảnh mà
đi qua được cặp điểm (x,y). Với nhiều cặp
điểm (x,y) sẽ xác định nhiều đường

thẳng tương ứng trong không gian (m,b). Như vậy, trong không gian (m,b), nếu tại
điểm (m,b) nào mà có số đường thẳng đi qua vị trí đó trong không gian (m,b) lớn
hơn một giá trị cụ thể (tuỳ theo quy định chiều dài của đường thẳng lớn hơn bao
nhiêu thì là được cho là đường thẳng), thì cặp giá trị (m,b) của điểm đó chính là 2
giá trị xác định nên một trong những đườ
ng thẳng cần được tìm thấy trong ảnh.

Các bước thực hiện:








Phần mềm thiết kế và chấm điểm tự động biểu mẫu thi trắc nghiệm
- 34 -
Cho mảng 2 chiều (m,b). Giá trị tại một vị trí trong mảng cho biết số lần
đường thẳng được tạo bởi cặp giá trị (m,b) tương ứng với vị trí đó xuất hiện trong
ảnh.
B1: quét qua tất cả các điểm cần xét trong ảnh.
B2: với mỗi điểm được xét, ta sẽ tính các cặp giá trị (m,b) thoả các đừơng
thẳng đi qua điểm đó. Từ đ
ó, ta tăng giá trị tại các vị trí (m,b) tương ứng trong
mảng 2 chiều mô tả không gian (m,b) đó lên 1 đơn vị.
B3: sau đó xét tất cả các phần tử trong mảng 2 chiều mô tả không gian (m,b)
đó, nếu tại phần tử nào mà có giá trị lớn hơn chiều dài quy định cần thiết để tạo nên
một đường thẳng thì ta sẽ nhận dạng được một đường thẳng y = mx + b trong đó
m,b xác định nhờ vào vị trí của phần tử đó.


Cải tiến cho thuật toán Hough Transform cơ bản áp dụng cho việc nhận
dạng các đường thẳng:
Trong phần trên, ta thấy m, b trong công thức b = y – mx không bị giới hạn.
Điều này có nghĩa rằng, khi m đến lên vô cực thì b cũng tương ứng đến vô cực. Do
đó, việc sử dụng mảng 2 chiều (là có giới hạn) để mô tả không gian (m,b) (không có
giới hạn), điều này là không tưởng trong việ
c lập trình. Ngoài ra, theo quy định, chỉ
số của mảng không được âm.
Do đó, ta cần một công thức thay thế cho công thức biễu diễn đường thẳng:
y = mx + b
sao cho việc xác định các tham số (như m và b chẳng hạn) nằm trong một
khoảng giới hạn xác định.
Và công thức đó là:
x*cosA + y*sinA = B

×