Thay đổi kích thước Sau khi ảnh đã được đọc vào, kích thước ảnh sẽ là kích thước gốc của ảnh nên sẽ có độ chênh lệch nhất định giữa các bức ảnh gây ra việc sử dụng các thông sốngưỡng đã
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT – HUNG
KHOA CÔNG NGHỆ THÔNG TIN
BÙI QUANG HÀ
XÂY DỰNG MODULE NHẬN DIỆN
SỐ BÁO DANH TRONG PHIẾU TRẢ
LỜI TRẮC NGHIỆM
ĐỒ ÁN HỌC PHẦN 2 CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
HÀ NỘI, NĂM 2021
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT – HUNG
KHOA CÔNG NGHỆ THÔNG TIN
XÂY DỰNG MODULE NHẬN DIỆN
SỐ BÁO DANH TRONG PHIẾU TRẢ
LỜI TRẮC NGHIỆM
ĐỒ ÁN HỌC PHẦN 2 CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
HÀ NỘI, NĂM 2021
Trang 3TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT-HUNG
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI ĐỒ ÁN HỌC PHẦN 2
Mã đề số: QUAN203
Tên đề tài: Xây dựng module nhận diện số báo danh trong phiếu trả lời trắc nghiệm
(trong trường hợp đã tách được vùng tô số báo danh)
Mô tả bài toán
- Module nhận hình ảnh vùng số báo danh làm đầu vào (mẫu như
hình bên)
- Xây dựng giải thuật dựa trên việc sử dụng thư viện opencv để
nhận diện các vùng được khoanh
- Đầu ra của module là chuỗi số báo danh tương ứng
Yêu cầu:
1 Yêu cầu về lý thuyết:
a) Một số kiến thức về xử lý ảnh (Đọc ảnh và một số giải thuật cơ bản)
b) Biết sử dụng thư viện opencv
2 Yêu cầu về chương trình
a) Nhận vào ảnh như hình dưới, xác định vị trí các vùng được đánh dấu (tọa độ)b) Xuất ra chuỗi số báo danh dạng ký tự
c) Tự động cắt vùng số báo danh từ ảnh chụp toàn bộ tờ giấy thi
Gửi lịch làm việc theo tuần
Mỗi tuần phải liên hệ với GV hướng dẫn ít nhất 1 lần qua email, hoặc gặp trực tiếp
Số lượng sinh viên tham gia: 2 (tối đa 2 nhóm)
Thời gian thực hiện tối thiểu: 3 tuần
Nguyễn Hồng Quân
Trang 4ĐT: 0357444000
Email:
nguyenhongquan@viu.edu.vn
Trang 5TRƯỜNG ĐHCN VIỆT – HUNG
KHOA CÔNG NGHỆ THÔNG TIN
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do – Hạnh phúc NHẬN XÉT ĐỒ ÁN HỌC PHẦN 2
Chuyên ngành : Công nghệ thông tin
(Nhận xét của GV hướng dẫn Nhận xét của GV phản biện )
Họ tên sinh viên: Bùi Quang Hà Tên đề tài: Xây dựng module nhận diện số báo danh trong phiếu trả lời trắc nghiệm Người nhận xét (họ tên, học hàm, học vị):
Đơn vị công tác (nếu có):
Ý KIẾN NHẬN XÉT 1 Về nội dung & đánh giá thực hiện nhiệm vụ nghiên cứu của đề tài:
2 Về phương pháp nghiên cứu, độ tin cậy của các số liệu:
3 Về kết quả của đề tài:
Mẫu DA02 ẫ
Trang 6
4 Những thiếu sát và vấn đề cần làm rõ (nếu có):
5 Ý kiến kết luận (mức độ đáp ứng yêu cầu đối với ĐA/KL tốt nghiệp)
6 Câu hỏi người nhận xét dành cho học viên (nếu có):
Đánh giá điểm: Kết luận: Đồng ý / Không đồng ý cho phép sinh viên được tham dự bảo vệ kết quả trước hội đồng Ngày………tháng…… năm……
NGƯỜI NHẬN XÉT
(chữ ký & họ tên)
Trang 7LỜI NÓI ĐẦU
Trung Học phổ thông Quốc gia (THPTQG) là kỳ thi trọng đại nhất của mộtthời học sinh sau bao mồ hôi nước mắt miệt mài đèn sách trên ghế nhà trường Ai aicũng mong muốn hái được quả ngọt thông qua bài thi cuối cùng này, do đó hàng triệubài thi sẽ được các sĩ tử làm và nộp bài trong một khoảng thời gian giới hạn rồi sau đónộp cho bộ phận chấm thi vào một thời điểm duy nhất để tránh việc gian lận có thể sảy
ra Công đoạn chấm thi sẽ được bảo mật khắt khe, nghiêm ngặt nên cần đảm bảo thờigian chấm hàng triệu bài thi phải hoàn thành trong một thời gian ngắn vì nếu để cànglâu sẽ càng dễ tăng cơ hội cho việc gian lận có thể sảy ra
Để xử lý được vấn đề chấm thi một cách nhanh chóng giúp giải quyết bài toántránh nhầm lẫn và gian lận trong chấm thi, khoa học đã ứng dụng công nghệ trongnhững công việc lặp đi lặp lại có tính tuần hoàn với ưu điểm về độ chính xác và khảnăng hoạt động bền bỉ cao trong một thời gian dài vì con người chỉ có thể tập trungcao độ trong một khoảng thời gian nhất định mà khó có thể duy trì hiệu suất cao nhấttrong 12 tiếng liên tục còn máy móc có thể hoạt động 24 giờ một ngày, 365 ngày mộtnăm mà chỉ cần nghỉ 15 đến 30p trong năm
Ứng dụng thị giác máy tính (computer vision) để phát hiện vùng được tô trongbài thi trắc nghiệm ta có rất nhiều hướng đi khác nhau để thực hiện cho từng dạng đặcthù riêng của từng bài toán khác nhau và sau đây chúng ta sẽ cùng tìm hiểu một hướngtiếp cận cho bài toán phát hiện vùng được tô này nhé!
Hà Nội, Ngày 17 tháng 11 năm 2021 Sinh viên thực hiện Bùi Quang Hà
Trang 8NHẬT KÝ THỰC HIỆN ĐỀ TÀI
22/09/2021 Nhận đề tài từ giáo viện hướng dẫn
16/11/2021 Hoàn thiện báo cáo lần 1
17/11/2021 Kiểm tra độ hoàn thiện của báo cáo lần 1
18/11/2021 Hoàn thiện báo cáo lần 2
19/11/2021 Kiểm tra độ hoàn thiện của báo cáo lần 2
20/11/2021 Hoàn thiện báo cáo lần 3
21/11/2021 Kiểm tra độ hoàn thiện của báo cáo lần 3
Trang 9MỤC LỤC
LỜI NÓI ĐẦU 3
NHẬT KÝ THỰC HIỆN ĐỀ TÀI 4
MỤC LỤC 5
DANH MỤC CHỮ VIẾT TẮT 7
MỞ ĐẦU 8
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1
1.1 Phân tích giải thuật trong bài 1
1.1.1 Đọc ảnh đầu vào 1
1.1.2 Thay đổi kích thước 1
1.1.3 Chuyển sang ảnh đen trắng 3
1.1.4 Khử nhiễu 4
1.1.5 Phát hiện đường biên và chuyển sang ảnh nhị phân 5
1.1.6 Lấy các điểm biên 6
1.1.7 Nhóm tọa độ điểm biên đưa ra vùng được chọn 6
1.1.8 Lấy số báo danh 6
1.2 Chấm điểm bài thi 6
1.3 Hiển thị kết quả 6
1.3.1 Hiển thị kết quả trên nền CLI 6
1.3.2 Hiển thị kết quả trên nền GUI 7
CHƯƠNG 2 PHƯƠNG PHÁP ĐỀ XUẤT 8
2.1 Phân tích ý tưởng bài toán 8
2.2 Các bước thực hiện 11
CHƯƠNG 3 XÂY DỰNG MODULE CHƯƠNG TRÌNH 15
3.1 Công nghệ công cụ 15
3.1.1 Ngôm ngữ Python3.9 15
3.1.2 Thư viện Opencv 16
3.1.3 Django framework 16
3.1.4 Cơ sở dữ liệu 16
3.1.5 Html 16
3.2 Module chương trình 17
3.3 Kết quả chạy kiểm thử 18
3.3.1 Tiến trình kiểm thử 18
CHƯƠNG 4 GIAO DIỆN NGƯỜI DÙNG VÀ HƯỚNG DẪN SỬ DỤNG 19
4.1 Giao diện 19
4.1.1 Giao diện CLI 19
4.1.2 Giao diện GUI 20
KẾT LUẬN 25
Trang 10TÀI LIỆU THAM KHẢO 26
Trang 11DANH MỤC CHỮ VIẾT TẮTST
T
1
cv || cv2 Opencv Thư viện opencv để nhậndiện và xử lý ảnh
2 THPTQG Trung học phổ thông Quốc gia Bài thi két thúc 12 năm học
là dấu mốc quan trọng
3 OpenCV Open Computer Vision Thị giác máy tính mã mở
4 CRUD Create, Read, Update,
và Delete
Các phương thức ngườidùng thao tác với dữ liệu
5 HTTP Hypertext Transfer Protocol Giao thức truyền tải siêu văn
10 IDE Integrated Development
Environment Môi trường lập trình tíchhợp
11 CLI Command Line Interface Giao diện dòng lệnh
12 GUI Graphical User Interface Giao diện người dùng
13 VSC ||
VSCode Visual Studio Code Trình soạn thảo
14 OOP Objective Oriented
Programming Hướng đối tượng
15 CMS content management system Hệ thống quản trị nội dung
16 UI/UX (User Interface)/(User
Trang 12I Đặt vấn đề
Vấn nạn “nhầm lẫn và gian lận” trong chấm thi luôn là vấn đề gây tranh cãinhức nhối trong nền giáo dục, điều này đến từ sự vô tình hay cố ý của những ngườithất trách, thiếu trách nhiệm và thiếu trung thực hòng chuộc lợi mà có thể khiến nhântài của đất nước bị bỏ sót gây lãng phí cho Quốc Gia, nên để giải quyết được bài toánnày việc áp dụng công nghệ vào công đoạn chấm thi là điều rất quan trọng
II Mục tiêu nghiên cứu của đề tài
Nghiên cứu, tìm hiểu và ứng dụng giải thuật phát hiện, nhận dạng thông tinđược tô chì trên giấy thi rồi trả ra kết quả là số báo danh dưới dạng chuỗi hoặc dạnghình ảnh được nổi bật bởi những vùng thông tin được tô đậm
III Nhiệm vụ của đề tài
Ứng dụng thư viện OpenCV nhận diện số báo danh trong bài thi THPTQG
- Tiền xử lý: Bài thi THPTQG với kích thước ảnh 1056x1500 sẽ đượcđọc vào và được sử dụng làm mẫu nghiên cứu nhận diện vùng đã đượcthí sinh tô bút chì
- Xác định vùng số báo danh: Là hàng đầu tiên và kích thước chiều rộng
to thứ 2 trên hàng đầu tiên
- Xác định các vùng được tô: áp dụng tách ra các vùng số báo danh và bàilàm của thí sinh đã tô
- Xác định được dãy số báo danh tương ứng: xác định kết quả bài làmthuộc về thí sinh có mã thí sinh là bao nhiêu dựa trên vùng tô số báodanh và vùng tô đáp án
Mục tiêu đưa ra được số báo danh từ ảnh chụp bài thi trắc nghiệm
IV Kết quả đạt được của đề tài
Sau hơn 1 tháng ấp ủ nghiên cứu, thực hiện đề tài đồ án
o Đã thưc hiện hoàn thành được những yêu cầu của đề tài ở mức đạt vàmức khá
o Module đã đọc ảnh và nhận dạng được vùng số báo danh được tô
o Đã hoàn thành mức tốt của đề tài đưa ra được vùng số báo danh đã táchvùng từ toàn bộ giấy thi
o Tích hợp được module nhận dạng số báo danh trên web django để đưaứng dụng có tính ứng dụng cao trong thực tiễn
Trang 13Những điểm còn giới hạn chưa thực hiện được:
o Chưa thực hiện được chấm thi cho phần đáp án bài làm của bài thi
o Chưa thực hiện được nhận dạng vùng được tô bằng model CNN (mạngtích chập nơron) để cho ra kết quả tốt hơn
V Bố cục của đề tài
Đề tài gồm 04 chương như sau:
Chương 1: Cơ sở lý thuyết.
Chương 2: Phương pháp đề xuất.
Chương 3: Xây dựng Module chương trình.
Chương 4: Giao diện kết quả và hướng dẫn sử dụng.
Trang 141.1.1
Trang 151CHƯƠNG 2
“I: Folder File.Extension”\ \ với:
là tên phân vùng chứa.I:
là thư mục chứa tập tin
dữ liệu trong quá trình xử lý khi không dùng đến dữ liệu tệp tin đó nữa
2.1.2 Thay đổi kích thước
Sau khi ảnh đã được đọc vào, kích thước ảnh sẽ là kích thước gốc của ảnh nên
sẽ có độ chênh lệch nhất định giữa các bức ảnh gây ra việc sử dụng các thông sốngưỡng đã nghiên cứu trước sẽ không còn chính xác nữa mà phải thay đổi liên tục để
có thể đưa ra kết quả chính xác dễ gây ra sai sót và mất thời gian cho việc phát hiệnvùng biên vì ảnh to sẽ có nhiều vùng biên được phát hiện hơn là ảnh nhỏ do ảnh càng
to càng những nhiễu cũng sẽ thành vùng biên, chi tiết nhiễu sẽ rõ nên thuật toán pháthiện biên coi nét nhiễu là biên gây ra sai kết quả
Để khắc phục tránh thay đổi thông số đã nghiên cứu từ trước cần thay đổi kíchthước ảnh sử dụng hàm cv2.resize nhằm thay đổi kích thước phục vụ cho công đoạnphát hiện vùng biên và cắt vùng số báo danh sát mép để tránh nhận dạng thiếu cột haythiếu hàng vùng số báo danh
Trang 162Thay đổi kích thước ảnh có rất nhiều cách để thực hiện như giải thuật nén ảnhhay xóa bớt điểm ảnh xen kẽ kề nhau Nhằm tiếp cận nhanh chóng với yêu cầu đề bàikhông quá khắt khe về ảnh đầu ra nên sẽ sử dụng phương pháp loại bỏ bớt các điểmảnh trên ảnh để ảnh nhỏ lại theo đúng kích thước đã nghiên cứu.
Ưu điểm: Xử lý nhanh và quá trình thực hiện giải thuật cũng rất nhanh.Nhược điểm: Ảnh sau khi nén khó khôi phục lại như ảnh ban đầu và không hỗtrợ để phóng to ảnh nếu ảnh đầu vào bé hơn kích thước đã chọn
- Nếu chọn phương pháp nén ảnh cần quan tâm tới thông tin nén là gì nằm ở
đầu (Header) của bức ảnh để chọn được thuận toán giải nén phù hợp
Biểu diễn thuật toán thay đổi kích thước ảnh:
Hình 2.1.2.1 Ảnh gốc trước khi được nén kích thước 5X5
Trên ảnh đen trắng thực tế sẽ được coi là một ma trận mảng 2 chiều với các ôxanh cây như hình trên sẽ là các điểm ảnh được chọn để làm ảnh sau khi thay đổi kíchthước
Hình 2.1.2.2 Ảnh sau khi đã loại trừ điểm ảnh
Trang 173Các điểm màu trắng là các điểm ảnh (pixel) đã được loại bỏ thông qua mộtvòng lặp 2 chiều để xóa bớt các điểm ảnh viền.
Hình 2.1.2.3 Ảnh đã nhỏ gấp 6.25 lần so với ảnh gốc
2.1.3 Chuyển sang ảnh đen trắng
Hệ màu tiêu chuẩn thường được sử dụng cho một số loại ảnh màu là hệ màu
R G B nhưng trongn máy tính lại nhận là hệ màu B G R nên để chuyển ảnh màu sangảnh xám sử dụng hàm cv2.cvtColor và truyền vào hàm 2 tham số tham số đầu là ảnhcần chuyển màu và tham số thứ 2 là cv2.COLOR_BGR2GRAY để chuyển ảnh từ ảnhmàu hệ B G sang ảnh đen trắng GRAY thông qua thuật toán lấy trung bình cộng của
3 dải màu (mức xám) trên cùng 1 điểm ảnh theo công thức:
Hình 2.1.3.1 Công thức chuyển ảnh màu sang ảnh đ
Thông thường ảnh màu B G có 3 dải màu là B , G , R mỗi dải có 265 mức (0 ->
255: 0 là mức tối tương đương màu đen 255 là mức sáng, ) tương đương 2 8 mứcxám nên khi cả 3 màu cùng trong 1 điểm ảnh số lượng màu sắc của điểm ảnh có thểđạt tới 2 8*3 = 2 24 khoảng 16,7 triệu màu Như vậy con số này khá là lớn nếu xử lý vớiảnh nhỏ và cường độ màu thấp thì không sao nhưng đặt bài toán xử lý với những ảnh
có độ sắc nét và độ pha màu cao thì việc xử lý từng pixel trên bức ảnh là điều khá nặng
nề và tốn nhiều tài nguyên của CPU hoặc GPU, do vậy để tăng tốc độ xử lý thay vìviệc dùng 2 mức xám thì sẽ chuyển ảnh về ảnh đen trắng chỉ có 2 mức xám, làm24 8dung lượng ảnh nhẹ hơn và hiệu xuất xử lý sẽ được cải thiện đưa ra kết quả một cáchnhanh chóng
Hình 2.1.3.2 Số dải màu có thể đạt của ảnh màu
Hình 2.1.3.3 Số dải màu có thể đạt của ảnh đen trắng
GRAY
1Pixel Pxel
Trang 18Giải thuật làm mờ ảnh được mô tả: Các thông số làm mờ ảnh sẽ thường đượcchọn là giá trị số lẻ bằng hoặc lớn hơn 3 và áp dụng theo 2 trục (x, y) nên ta cần lấy số
lẻ cho 2 trục (lấy số lẻ cho 2 trục chứ không phải số chẵn vì kỹ thuật làm mờ lấy điểmtrung tâm của ma trận x y làm điểm được xét và lấy các vùng điểm ảnh xung quanhxlàm giá trị trung hòa với trường hợp điểm được xét nằm tại vị trí viền ảnh hoặc gầnviền ảnh khi đó sẽ có các giá trị đệm để lấy trung hòa là các giá trị 0), ví dụ gọi P lànđiểm ảnh (Pixel) được xử lý làm mờ để có thể lấy được giá trị điểm ảnh cho vị trítrung tâm (P ) của ma trận 3x3 sẽ có 2 trường hợp:n
- Nếu điểm ảnh nằm ở vị trí một trong tám viền, cạnh bức ảnh: Các điểm ảnhxung quanh điểm P sẽ có điểm ảnh không có giá trị vậy nên ta sẽ cần đệm thêmncác giá trị 0 (tương đương với độ tối cao nhất) cho những điểm mà không có giátrị thì sẽ tính theo công thức:
Hình 2.1.4.1 Khi điểm ảnh được làm mờ nằm ở một trong 8 vị trí viền ảnh
- Nếu điểm ảnh ở các vị trí tốt nhất: không có điểm lấy giá trị trung hòa nào bịthiếu thì sẽ tính theo công thức:
Hình 2.1.4.2 Các điểm ảnh lân cận 3x3 làm mờ ảnh
Pn P0
Trang 192.1.5 Phát hiện đường biên và chuyển sang ảnh nhị phân
Điểm biên là điểm có sự thay đổi nhanh hoặc đột ngột về mức xám, trong xử lýảnh tìm biên là vấn đề cực kỳ quan trọng trong trích chọn những đặc điểm của ảnh
Để làm nổi được điểm biên tạo nên những đường biên sử dụng phương phápphát hiện biên trực tiếp tìm ra gradient (gradient là một vector biểu thị tốc độ thay đổimức xám điểm ảnh theo 2 hướng x, y) trên ảnh thông qua đạo hàm bậc nhất hàm sốf(x, y) theo công thức đạo hàm:
Các bước của thuật toán phát hiện biên canny:
▪ Bước 1: Làm trơn ảnh Tính tích chập G= I H, với:⊗
▪ Bước 2: Tính Gradient của ảnh bằng mặt nạ theo hai hướng x, y Gọi là Gx vàGy
▪ Bước 3: Tính Gradient theo 8 hướng tương ứng với 8 lân cận của 1 điểm ảnh
▪ Bước 4: Loại bỏ những điểm không phải cực nhằm xóa bỏnhững điểm khôngthuộc biên
▪ Bước 5: Phân ngưỡng Thực hiện lấy Gradient lần cuối
Trang 202.1.6 Lấy các điểm biên
Sau khi đã làm nổi được vùng biên, ảnh sẽ là ảnh nhị phân sử dụng hàm
cv2.findContours áp dụng với các giải thuật tìm kiếm trong giải thuật tham lam để
tìm ra được tọa độ các điểm biên trên ảnh nhị phân đưa ra được một list tọa độ của cácđiểm biên
2.1.7 Nhóm tọa độ điểm biên đưa ra vùng được chọn
Đã lấy được danh sách tọa độ các điểm biên sử dụng hàm cv2.boundingRect
để nhóm các tọa độ điểm biên lại và trả ra kết quả là tọa độ của vùng tô số báo danhcùng với chiều cao và chiều rộng của vùng đã được tô chì lên
2.1.8 Lấy số báo danh
Tọa độ các điểm biên được sắp xếp dọc theo trục x sử dụng hàm sort_contours
sau đó được nhóm lại thành một vùng biên và đưa ra được tọa độ điểm cạnh trái góctrên rồi sử dụng một vòng lặp lặp qua danh sách các vùng biên để lấy tọa độ vùng biênrồi chia cho kích thước của một ô trắc nghiệm ta có thể lấy được tỉ lệ vị trí của vùngbiên so với 1 ô theo chiều cao sẽ đưa ra được số báo danh còn theo chiều ngang sẽ đưa
ra được thứ tự và vị trí xuất hiện của số báo danh đó
2.2 Chấm điểm bài thi
Tương tự như cách xử lý ảnh để lấy ra số báo danh thì ta sẽ thay đổi vùng pháthiện là vùng lớn nhất phía dưới vùng số báo danh đổi chiều lấy đáp án là lấy đáp ándựa theo hàng ngang là đáp án được chọn trong 4 đáp án còn hàng dọc sẽ là vị trí câuđược thể hiện trong bài
Ưu điểm của phát hiện vị trí là dù thí sinh có tô thiếu đáp án thì danh sách đáp
án trả lời đầu ra vẫn sẽ đầy đủ chứ không bị sai thứ tự
Sau khi đã lấy được danh sách đáp án trả lời sẽ so sánh đáp án của thí sinh vớiđáp án của đề thi và đưa ra số điểm của thí sinh đạt được
2.3 Hiển thị kết quả
2.3.1 Hiển thị kết quả trên nền CLI
Khi thao tác với opencv để thuận tiện phát triển chức năng và tìn ra các lỗi đểkịp thời thay đổi sử dụng màn hình giao diện dòng lệnh (CLI) để làm màn hình hiểnthị thông tin trả lại kết quả vì màn hình CLI có thể can thiệp được sâu vào các file hệthống để tương tác với ứng dụng