Tìm hiểu kỹ thuật nhận dạng ký tự quang học và xây dựng ứng dụng giải toán

84 302 0
Tìm hiểu kỹ thuật nhận dạng ký tự quang học và xây dựng ứng dụng giải toán

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN Nguyễn Thị Kim Xuân TÌM HIỂU KỸ THUẬT NHẬN DẠNG KÝ TỰ QUANG HỌC VÀ XÂY DỰNG ỨNG DỤNG GIẢI TOÁN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC (Ngành Công nghệ Thông tin) CÁN BỘ HƯỚNG DẪN: Ths Lê Hoàng Thanh Nha Trang – năm 2017 LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu riêng hướng dẫn khoa học Ths Lê Hoàng Thanh Các nội dung nghiên cứu, kết đề tài trung thực chưa công bố hình thức trước Những số liệu bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá tác giả thu thập từ nguồn khác có ghi rõ phần tài liệu tham khảo Ngoài ra, đồ án sử dụng số nhận xét, đánh số liệu tác giả khác, quan tổ chức khác có trích dẫn thích nguồn gốc Nếu phát có gian lận xin hoàn toàn chịu trách nhiệm nội dung đồ án Trường Đại học Nha Trang không liên quan đến vi phạm tác quyền, quyền gây trình thực (nếu có) Nha Trang, tháng năm 2017 Sinh viên Nguyễn Thị Kim Xuân MỤC LỤC LỜI CAM ĐOAN MỤC LỤC DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH LỜI MỞ ĐẦU CHƯƠNG 1: GIỚI THIỆU 12 1.1 Mục đích, lý chọn đề tài .12 1.2 Đối tượng phạm vi nghiên cứu 12 1.3 Ý nghĩa khoa học thực tiễn 14 CHƯƠNG 2: TỔNG QUAN VỀ NHẬN DẠNG KÝ TỰ QUANG HỌC 16 2.1 Các giai đoạn phát triển 17 2.2 Tình hình nghiên cứu nước 18 2.3 Tình hình nghiên cứu nước 19 CHƯƠNG 3: CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP NGHIÊN CỨU .21 3.1 Cơ sở lý thuyết xử lý ảnh 21 3.1.1 Tổng quan ảnh số 21 3.1.2 Nhị phân hóa ảnh 21 3.1.3 Các phép biến đổi hình thái học (Morphology) 22 3.1.4 Các phương pháp nâng cao chất lượng ảnh .24 3.2 Các phương pháp tách ký tự 26 3.2.1 Tách chữ dùng lượt đồ ánh sáng .26 3.2.2 Tách chữ 27 3.3 Các phương pháp rút trích đặc trưng ký tự 27 3.3.1 Các phương pháp chia vùng 27 3.3.2 Biểu đồ chiếu Histogram 29 3.3.3 Contour Profile 29 3.3.4 Wavelet Haar .29 3.3.5 Crossing Distance 30 3.3.6 Binary 30 3.4 Các phương pháp nhận dạng ký tự 31 3.4.1 K Nearest Neighbors (KNN) 31 3.4.2 Support Vector Machine (SVM) .32 3.4.3 Mạng Neural 35 3.5 Ký pháp nghịch đảo Ba Lan .48 3.5.1 Lịch sử 48 3.5.2 Tên gọi ý nghĩa .48 3.5.3 Ứng dụng Ký pháp nghịch đảo Ba Lan 49 3.6 Cấu trúc hệ nhận dạng chữ viết sử dụng đồ án 52 3.7 Tiền xử lý 53 3.8 Tách chữ .53 3.8.1 Tách dòng ký tự 53 3.8.2 Tách ký tự 54 3.9 Rút trích đặc trưng 56 3.10 Huấn luyện Nhận dạng .57 3.11 Hậu xử lý 60 3.11.1 Kiểm tra đầu vào toán 61 3.11.2 Kiểm tra dạng toán .62 3.11.3 Tính giá trị biểu thức 66 3.11.4 Giải phương trình bậc .66 3.11.5 Giải phương trình bậc hai 67 3.11.6 Giải hệ phương trình bậc hai ẩn .70 CHƯƠNG 4: KẾT QUẢ NGHIÊN CỨU VÀ CÀI ĐẶT THỬ NGHIỆM ỨNG DỤNG GIẢI TOÁN 71 4.1 Xây dựng Dataset 71 4.2 Kết thử nghiệm tách ký tự .72 4.3 Thực nghiệm xây dựng mạng Neural 73 4.3.1 Thực nghiệm chọn số nút ẩn 73 4.3.2 Thực nghiệm xác định tốc độ học 74 4.3.3 Kết nhận dạng ký tự 75 4.4 Cài đặt thử nghiệm ứng dụng giải toán 76 4.4.1 Giao diện chương trình 76 4.4.2 Một số hàm chương trình 78 KẾT LUẬN VÀ KIẾN NGHỊ 82 DANH MỤC TÀI LIỆU THAM KHẢO .84 DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT Ký hiệu ANN ASCII CMYK GDI+ HSV KNN MLP RGB SVM Thuật ngữ Artificial Neural Network (Mạng Neural nhân tạo) American Standard Code for Information Interchange (Chuẩn mã trao đổi thông tin Hoa Kỳ) C=Cyan: xanh lơ, M=Magenta: hồng sẫm, Y=Yellow: vàng Graphics Device Interface (Thư viện đồ họa) H = Hue: màu sắc, S = Saturation: độ đậm đặc, bảo hòa, V = value: giá trị cường độ sáng K Nearest neighbors (thuật toán K láng giềng) MultiLayer Perceptron (Mạng Perceptron nhiều tầng) Hệ màu Red-Green-Blue Support Vector Machines DANH MỤC CÁC BẢNG Bảng 3.1: Một số hàm truyền thông dụng 37 Bảng 3.2: Quá trình tính toán giải biểu thức hậu tố 50 Bảng 3.3: Quá trình chuyển biểu thức trung tố thành biểu thức hậu tố 51 Bảng 4.1: Tỉ lệ tách ký tự 72 Bảng 4.2: Mức lỗi theo số nút ẩn 73 Bảng 4.3: Mức lỗi theo tốc độ học 74 Bảng 4.4: Tỉ lệ nhận dạng 75 DANH MỤC CÁC HÌNH Hình 1.1: Mô hình nhận dạng chữ viết .13 Hình 1.2: Giao diện phần mềm Math Input Panel 15 Hình 3.1: Ngưỡng ảnh .22 Hình 3.2: Erosion 23 Hình 3.3: Dilation 23 Hình 3.4: Closing 23 Hình 3.5: Opening .24 Hình 3.6: Bộ lọc Gaussian Blur 25 Hình 3.7: Lọc trung bình 25 Hình 3.8: Lọc song phương .26 Hình 3.9: Tách dòng dựa histogram theo chiều ngang khối chữ 26 Hình 3.10: Xác định khoảng cách hai kí tự hai từ dựa histogram theo chiều thẳng đứng dòng chữ 27 Hình 3.11: Chia vùng (Zone) 27 Hình 3.12: Diagonal 28 Hình 3.13: Biểu đồ chiếu Histogram 29 Hình 3.14: Contour profile 29 Hình 3.15: Wavelet Haar 29 Hình 3.16: Crossing Distance .30 Hình 3.17: Binary 30 Hình 3.18: Phân lớp SVM 33 Hình 3.19: Mô hình neural nhân tạo 35 Hình 3.20: Chia hàm truyền thành khâu 36 Hình 3.21: Mạng tự kết hợp 37 Hình 3.22: Mạng kết hợp khác kiểu 38 Hình 3.23: Mạng truyền thẳng 38 Hình 3.24: Mạng phản hồi 39 Hình 3.25: Mạng Neural lan truyền ngược MLP 39 Hình 3.26: Ảnh hưởng kích thước mẫu 47 Hình 3.27: Mô hình nhận dạng chữ viết tay sử dụng đồ án 52 Hình 3.28: Quá trình tách dòng 54 Hình 3.29: Kết tách ký tự 56 Hình 3.30: Mô hình mạng Neural .57 Hình 3.31: Sơ đồ thuật toán huấn luyện mạng 59 Hình 3.32: Sơ đồ thuật toán nhận dạng ký tự 60 Hình 3.33: Ví dụ thuật toán tách số hạng 64 Hình 4.1: Một số ảnh tập huấn luyện Chars 74K 71 Hình 4.2: Một số ảnh tập liệu mẫu tự xây dựng 72 Hình 4.3: Một số ảnh ký tự tách sai 72 Hình 4.4: Đồ thị biến thiên mức lỗi theo số nút ẩn 73 Hình 4.5: Đồ thị biến thiên mức theo tốc độ học .74 Hình 4.6: Một số ký tự dễ nhầm liệu huấn luyện 76 Hình 4.7: Giao diện chương trình .77 LỜI MỞ ĐẦU Nhận dạng toán xuất cách lâu thu hút nhiều quan tâm, nghiên cứu Đặc biệt vài thập niên gần đây, thúc đẩy trình tin học hóa lĩnh vực, toán nhận dạng không dừng lại mức độ nghiên cứu mà trở thành lĩnh vực để áp dụng vào thực tế Các toán nhận dạng ứng dụng thực tế tập trung vào nhận dạng mẫu, nhận dạng tiếng nói nhận dạng chữ Trong số này, nhận dạng ký tự quang học toán quan tâm nhiều đạt nhiều thành tựu rực rỡ [1] Về mặt lý thuyết, chưa có phương pháp hoàn chỉnh cho toán tính phức tạp, biến dạng liệu đầu vào Những năm gần đây, với phát triển lý thuyết nhận dạng, công nghệ xử lý ảnh, có nhiều nghiên cứu mang lại số kết cho toán nhận dạng ký tự quang học, từ mở hàng loạt ứng dụng thực tế Đồ án “Tìm hiểu kỹ thuật nhận dạng ký tự quang học xây dựng ứng dụng giải toán” nhằm giới thiệu cách tiếp cận toán nhận dạng chữ viết tay với số ràng buộc để vào ứng dụng thực tiễn Được đồng ý hướng dẫn tận tình ThS Lê Hoàng Thanh, người tận tình giúp đỡ truyền đạt nhiều kinh nghiệm để đề tài thực hoàn thành Mặc dù cố gắng, song thời gian có hạn, vốn kiến thức hạn chế hạn chế thân chưa có nhiều kinh nghiệm nghiên cứu lập trình nên đồ án tránh khỏi thiếu sót, em mong nhận thông cảm góp ý quý Thầy, Cô để đồ án hoàn thiện Em xin chân thành cảm ơn! Nha Trang, tháng năm 2017 Sinh viên Nguyễn Thị Kim Xuân 10 NHẬN XÉT (Của giảng viên hướng dẫn) 70  Lần lượt xét ký tự biểu thức ( a ) o Công việc xét tìm giá trị chuỗi s giống Sử dụng biến phụ a1, b1 để lưu giá trị o Nếu s chứa giá trị ký tự chữ (biến bậc 1) tính giá trị s sau thay ký tự chữ “1” gán vào a1 o Nếu s không chứa ký tự chữ, tính giá trị s sau gán váo b1  Sau tính xong giá trị a1 b1 đem giá trị nhân với d cộng trừ a, b tương ứng, việc cộng hay trừ số hạng quy định Sau duyệt hết tất số hạng ta tiến hành giải phương trình bậc hai với biến a, b, c đưa kết 3.11.6 Giải hệ phương trình bậc hai ẩn Trước giải hệ phương trình cần phải kiểm tra tính hợp lệ hệ phương trình:  Phải đảm bảo đủ hai phương trình hai biến (var1 var2)  Mỗi phương trình phải có biến có ký tự ‘=’ Dạng tổng quát hệ phương trình bậc hai { 𝑎1 ∗ 𝑥 + 𝑏1 ∗ 𝑦 = 𝑐1 𝑎2 ∗ 𝑥 + 𝑏2 ∗ 𝑦 = 𝑐2 cần tìm giá trị a1, b1, c1, a2, b2, c2 để giải hệ phương trình Việc tìm tách số hạng phương trình thực giống thuật toán tách số hạng trình bày mục 3.11.2, sau có số hạng ta cần kiểm tra số hạng thuộc vào giá trị cần tìm:  Nếu số hạng chứa var1 thuộc hàng đưa vào a1  Nếu số hạng chứa var2 thuộc hàng đưa vào b1  Nếu số hạng không chứa biến thuộc hàng đưa vào c1  Nếu số hạng chứa var1 thuộc hàng đưa vào a2  Nếu số hạng chứa var2 thuộc hàng đưa vào b2  Nếu số hạng không chứa biến thuộc hàng đưa vào c2 Sau có tất tham số ta tiến hành giải hệ phương trình tìm giá trị biến 71 CHƯƠNG 4: KẾT QUẢ NGHIÊN CỨU VÀ CÀI ĐẶT THỬ NGHIỆM ỨNG DỤNG GIẢI TOÁN 4.1 Xây dựng Dataset Tập huấn luyện Chars 74K gọi ký tự tiếng Anh Bộ liệu bao gồm 64 lớp (0-9, A-Z, a-z) với 7705 ký tự thu từ hình ảnh tự nhiên, 3410 ký tự viết tay rút ký tự cách sử dụng máy tính bảng 62992 ký tự tổng hợp từ phông chữ máy tính Điều cho phép tổng cộng 74 nghìn hình ảnh (giải thích tên liệu) Cùng với hình ảnh ký tự riêng chứa thư mục Trong này, có thư mục cho lớp ký tự Mỗi mẫu ký tự xuất hình ảnh PNG Hình 4.36: Một số ảnh tập huấn luyện Chars 74K Vì sử dụng liệu Chars 74K không đồng với ảnh đầu vào đồ án dẫn đến nhận dạng sai Do cần xây dựng lại liệu mẫu với 4960 hình ảnh có kích thước 80×80 pixel bao gồm 31 lớp với ký tự 0-9, a, b, c, d, e, h, k, m, n, u, v, x, y, z, +, -, *, /, =, (, ).trong có 3000 ảnh tự vẽ 840 ảnh từ tập Chars 74K cắt sát biên chữ Với lớp có 160 ảnh ký tự với định dạng hình ảnh PNG, ảnh tập liệu mẫu chứa thư mục, ký tự có nhãn tương ứng với lớp ký tự ta xây dựng lại 72 Hình 4.37: Một số ảnh tập liệu mẫu tự xây dựng 4.2 Kết thử nghiệm tách ký tự Với tập 250 ảnh nhìn rõ ký tự mắt thường Chạy ảnh chương trình, quan sát kết nhận dạng mắt Kết kiểm nghiệm thu sau: Bảng 4.4: Tỉ lệ tách ký tự Ảnh đầu vào Số ảnh 250 Phát 245 Phát sai Tỉ lệ phát 98% Tỉ lệ phát sai 2% Thời gian tách ký tự < 1s Một số nguyên nhân dẫn đến tách ký tự sai: Ảnh viết liền nét Ảnh viết không rõ dòng Hình 4.38: Một số ảnh ký tự tách sai Ảnh viết tách rời 73 4.3 Thực nghiệm xây dựng mạng Neural Mục đích thí nghiệm nhằm tìm tham số mạng Neural (số nút ẩn, tốc độc học, ngưỡng lỗi, …) Thực nghiệm xây dựng mạng Neural từ tham số tìm được, sử dụng ảnh đầu vào có kích thước 80×80 ứng với 256 đặc trưng, tỉ lệ nhận dạng ký tự có độ xác cao 4.3.1 Thực nghiệm chọn số nút ẩn Chọn số lần học định, đặt tốc độ học nhỏ, thay đổi số nút ẩn huấn luyện mạng để đánh giá số nút ẩn cho kết nhận dạng với tỉ lệ lỗi thấp Thực nghiệm chọn lặp 100 lần học tốc độ học đặt 0.5 Bảng 4.5: Mức lỗi theo số nút ẩn Số lớp ẩn Mức lỗi 0.0016 64 128 192 256 0.0015 0.001 0.00087 0.00082 320 384 0.00079 0.00078 0.0015 0.0014 0.0012 0.001 0.001 0.00087 0.00082 0.00079 0.00078 256 320 384 0.0008 0.0006 0.0004 0.0002 0 64 128 192 Hình 4.39: Đồ thị biến thiên mức lỗi theo số nút ẩn Nhìn vào đồ thị hình 4.4 khoảng từ 192-384 số nút ẩn, mức lỗi biến thiên không đáng kể, ta chọn số nút ẩn khoảng (192,384) thích hợp 74 4.3.2 Thực nghiệm xác định tốc độ học Sau có số lớp ẩn tối ưu thí nghiệm chọn số lớp ẩn, ta thay đổi tốc độ học từ 0.3 đến 1.9 để tìm tốc độ học cho mức lỗi nhỏ với mô hình mạng có 192 lớp ẩn Số lần học dừng để ghi nhận kết sau 100 lần Bảng 4.6: Mức lỗi theo tốc độ học Tốc độ học Mức lỗi 0.3 0.0015 0.5 0.00091 0.7 0.0006 0.9 0.0005 1.1 0.00039 1.3 0.00034 1.5 0.0003 1.7 0.00033 1.9 0.0032 0.0035 0.0032 0.003 0.0025 0.002 0.0015 0.0015 0.00091 0.001 0.0006 0.0005 0.0005 0.00039 0.00034 0.0003 0.00033 0 0.3 0.6 0.9 1.2 1.5 1.8 Hình 4.40: Đồ thị biến thiên mức theo tốc độ học 2.1 75 Nhìn vào đồ thị hình 4.5 tốc độ học khoảng từ 1.1 đến 1.7, mức lỗi biến thiên không lớn, ta chọn tốc độ học khoảng (1.1, 1.7) 4.3.3 Kết nhận dạng ký tự Kết nhận dạng ký tự với tham số mạng gồm 192 nút ẩn, 256 nút vào, nút ra, tốc độ học 1.5, ngưỡng lỗi 0.00001 Chạy ứng dụng nhận dạng giải toán, đưa 3100 ảnh ký tự riêng lẻ để kiểm tra ghi nhận kết nhận dạng xác 2883 ảnh nhận dạng (93%) Với tập 350 ảnh viết rõ ràng nhìn rõ ký tự mắt thường Chạy ảnh chương trình, quan sát kết nhận dạng mắt Kết kiểm nghiệm thu sau: Bảng 4.7: Tỉ lệ nhận dạng Ảnh đầu vào Số ảnh 350 Ảnh nhận dạng 322 Ảnh nhận dạng sai 28 Tỉ lệ nhận dạng 92% Tỉ lệ nhận dạng sai 8% Thời gian nhận dạng < 1s Vậy kết nhận dạng chung ứng dụng từ khâu tách ký tự, rút trích đặc trưng nhận dạng ký tự đạt tới 90% Một số nguyên nhân ký tự nhận dạng sai:  Nhầm lẫn hình dáng ký tự x dấu * (hình 4.6), chữ b số  Mỗi người có cách viết nét chữ không giống nên việc nhận dạng chữ khó khăn 76 Hình 4.41: Một số ký tự dễ nhầm liệu huấn luyện 4.4 Cài đặt thử nghiệm ứng dụng giải toán Ứng dụng giải toán cài đặt để nhận dạng tách ký tự tiến hành nhận dạng giải toán Để phát ký tự, chương trình thu nhận ảnh vào nét vẽ chuột vùng vẽ, thuật toán cài đặt thư viện EmguCV thư viện Graphics Device Interface Công việc tách ký tự đưa vào mạng Neural để nhận dạng (tham số mạng học), sau xác định dạng toán tiến hành giải Môi trường thực nghiệm:  Chương trình cài đặt ngôn ngữ Visual C# thử nghiệm hệ điều hành Windows 10, máy tính tốc độ 2.7 GHz, 4GB Ram  Bộ Dataset hình với định dạng *.png lưu chung thư mục 4.4.1 Giao diện chương trình 77 Hình 4.42: Giao diện chương trình  Chú Thích Vùng vẽ chuột ảnh scan đưa vào chứa ký tự toán cần nhận dạng Khung nội dung chữ sau nhận dạng Khung thông báo, kết toán File: Nhóm chức xử lý file  New: Tạo vùng vẽ  Open: Mở ảnh scan với định dạng *.png, *.jpg, *.jpeg, *.jpe, *.jfif, *.gif, *.bmp, *.dib  Save: Lưu lại file ảnh với tên cũ ảnh lưu, lưu tên với ảnh chưa lưu với số định dạng sau *.png, *.jpg, *.jpeg, *.jpe, *.jfif, *.gif, *.bmp, *.dib  Save as: Lưu ảnh với tên với số định dạng sau *.png, *.jpg, *.jpeg, *.jpe, *.jfif, *.gif, *.bmp, *.dib  Exit: Đóng chương trình Image Processing: Nhóm chức xử lý ảnh  Pencil: Bút chì để vẽ  Eraser: Cục tẩy sử dụng tẩy nét vẽ sai  Clear: Xóa hết có vùng vẽ  Detection: Tách ký tự vùng vẽ  Dilation: Sử dụng phép Dilation, dùng muốn xem ảnh Dilation  Erosion: Sử dụng phép Erosion, dùng muốn xem ảnh Erosion  Opening: Sử dụng phép Opening, dùng muốn xem ảnh Opening  Closing: Sử dụng phép Closing, dùng muốn xem ảnh Closing  Gaussian: Sử dụng phép lọc Gausian, dùng muốn xem ảnh lọc Gausian  Bilateral: Sử dụng phép lọc Bilateral, dùng muốn xem ảnh lọc Bilateral Recognition: Nhóm chức nhận dạng 78  Training: Trainning mạng, dùng muốn huấn luyện mạng  LoadWeight: Load ma trận trọng số tranning sẵn  Recognition: Nhận dạng ký tự có hình Solve: Nhận dạng giải toán Sử dụng nhanh chức New file ảnh Sử dụng nhanh chức Open file ảnh 10 Sử dụng nhanh chức Save file ảnh 11 Sử dụng nhanh chức Pencil để vẽ 12 Sử dụng nhanh chức Eraser ảnh vẽ 13 Sử dụng nhanh chức Training mạng 14 Sử dụng nhanh chức LoadWeight mạng Training trước 15 Start: Sử dụng nhanh tích hợp chức tách ký tự, nhận dạng ký tự, nhận dạng giải toán 4.4.2 Một số hàm chương trình CutCharFromImage (tách ký tự) Input: Ảnh đầu vào Output: Các ký tự Mục đích: Tách ký tự ảnh đầu vào để đưa vào mạng Neural nhận dạng private void CutCharFromImage(Image img) { int bot = 0, top = 0, left = 0, right = 0, chk = 0; for (int k = 0; k < img.Width; k++) { if (chkBlackPointX(img, k, 0, img.Height - 1) == true && chk == 0) { left = k; chk = 1; } if (chkBlackPointX(img, k, 0, img.Height - 1) == false && chk == 1) { right = k - 1; chk = 2; } if (chk == 2) { for (int i = 0; i < img.Height; i++) if (chkBlackPointY(img, i, left, right) == true && chk == 2) { 79 chk = 3; top = i; break; } for (int i = img.Height - 1; i >= 0; i ) if (chkBlackPointY(img, i, left, right) == true && chk == 3) { chk = 4; bot = i - 1; break; } } if (chk == 4) { Image result = new Image(right - left + 1, bot - top + 1); for (int i = left; i

Ngày đăng: 08/08/2017, 23:44

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan