BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN
HUỲNH MINH TRÍ
TÌM HIỂU VÀ NÂNG CAO HIỆU QUẢ
NHẬN DẠNG CHỮ VIẾT TAY RỜI RẠC
DỰA TRÊN CÁC KỸ THUẬT LẤY ĐẶC TRƯNG
VÀ PHÁT TRIỂN ỨNG DỤNG
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Ngành Công nghệ thông tin
CÁN BỘ HƯỚNG DẪN:
ThS. Nguyễn Đình Cường
Nha Trang – 2014
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
1
MỤC LỤC
MỤC LỤC 1
DANH MỤC CÁC CỤM TỪ VIẾT TẮT 4
DANH MỤC CÁC BẢNG 5
DANH MỤC CÁC HÌNH 6
DANH MỤC CÁC SƠ ĐỒ, BIỂU ĐỒ 8
MỞ ĐẦU 10
CHƯƠNG 1. TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG CHỮ VIẾT TAY 11
1.1. Giới thiệu về bài toán nhận dạng chữ viết tay 11
1.2. Sơ lược về một số nghiên cứu trước đây 12
1.3. Quy trình thực hiện nhận dạng chữ viết tay 16
1.3.1. Sơ đồ tổng quát 16
1.3.2. Các giai đoạn thực hiện 18
CHƯƠNG 2. CÁC KỸ THUẬT RÚT TRÍCH ĐẶC TRƯNG TRONG BÀI TOÁN
NHẬN DẠNG CHỮ VIẾT TAY 33
2.1. Ảnh hưởng giai đoạn rút trích đặc trưng đối với hiệu quả bài toán 33
2.2. Một số kỹ thuật rút trích đặc trưng đang được sử dụng 33
2.2.1. Kỹ thuật Zoning 33
2.2.2. Kỹ thuật Coutour profile 34
2.2.3. Kỹ thuật Projection 35
2.2.4. Kỹ thuật wavelet Haar 35
2.2.5. Kỹ thuật Diagonal based 37
2.2.6. Kỹ thuật Twelve Direction 40
2.2.7. Kỹ thuật tiếp cận cấu trúc 41
2.2.8. Kỹ thuật Hotspot 43
2.2.9. Kỹ thuật 40-Point 45
2.2.10. Kỹ thuật Background Directional Distribution 47
2
2.2.11. Kỹ thuật Shadow 48
2.2.12. Kỹ thuật Chain code histogram 50
2.2.13. Kỹ thuật Intersection 51
2.2.14. Kỹ thuật Straight line fitting 52
2.3. Giới thiệu kỹ thuật rút trích đặc trưng mới 53
2.4. Vấn đề cải tiến giai đoạn rút trích đặc trưng 57
2.4.1. Xu hướng cải tiến giai đoạn rút trích đặc trưng 57
2.4.2. Những cải tiến của một số kỹ thuật đã nêu 58
CHƯƠNG 3. MÔ HÌNH SVM (SUPPORT VECTOR MACHINE) 60
3.1. Giới thiệu mô hình SVM 60
3.2. Cơ sở toán học của mô hình SVM 62
3.2.1. Bài toán phân lớp nhị phân hoàn toàn 62
3.2.2. Bài toán phân lớp nhị phân không hoàn toàn 66
3.2.3. Vấn đề phân lớp đa lớp sử dụng mô hình SVM 68
3.2.4. Hàm nhân trong mô hình SVM 69
3.3. Nhận xét về mô hình SVM 70
CHƯƠNG 4. CHƯƠNG TRÌNH THỬ NGHIỆM CÁC KỸ THUẬT LẤY ĐẶC
TRƯNG 71
4.1. Giới thiệu về các bộ dữ liệu 71
4.1.1. Bộ dữ liệu MNIST 71
4.1.2. Bộ dữ liệu MyCharacter 72
4.2. Môi trường và công cụ cài đặt 75
4.2.1. Môi trường cài đặt 75
4.2.2. Giới thiệu bộ công cụ CSharp-2.6 75
4.2.3. Cách thức sử dụng bộ công cụ CSharp-2.6 77
4.3. Các chương trình thử nghiệm 81
4.3.1. Điều kiện thí nghiệm 81
4.3.2. Giai đoạn tiền xử lý các bộ dữ liệu 81
3
4.3.3. Các kỹ thuật trích chọn đặc trưng đã sử dụng 81
4.3.4. Kết quả các thí nghiệm trước đây 82
4.3.5. Kết quả và phân tích các thí nghiệm hiện tại 83
4.3.6. Một vài nhận xét rút ra từ các thí nghiệm 113
CHƯƠNG 5. CÀI ĐẶT ỨNG DỤNG ĐỌC BẢNG ĐIỂM SINH VIÊN 115
5.1. Đặc tả ứng dụng 115
5.1.1. Đặc tả hệ thống 115
5.1.2. Đặc tả dữ liệu 119
5.1.3. Các chức năng của ứng dụng 124
5.2. Đánh giá ứng dụng và khả năng phát triển của ứng dụng 132
5.2.1. Kết quả thực hiện ứng dụng 132
5.2.2. Khả năng phát triển của ứng dụng 134
CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 135
6.1. Kết luận của đề tài 135
6.2. Hướng phát triển của đề tài 136
TÀI LIỆU THAM KHẢO 138
4
DANH MỤC CÁC CỤM TỪ VIẾT TẮT
Từ viết tắt
Giải thích
SVM Support Vector Machine
5
DANH MỤC CÁC BẢNG
Bảng 2.1. Cách phân giá trị gradient vào các bin 41
Bảng 4.1. So sánh ưu nhược điểm của một số kỹ thuật rút trích đặc trưng 113
Bảng 5.1. Mô tả vật lý của lược đồ quan hệ Subject 121
Bảng 5.2. Mô tả vật lý của lược đồ quan hệ Record 121
Bảng 5.3. Mô tả vật lý của lược đồ quan hệ Student 121
Bảng 5.4. Mô tả vật lý của lược đồ quan hệ RecordDetail 122
Bảng 5.5. Kết quả chạy ứng dụng trên một số bảng điểm 132
6
DANH MỤC CÁC HÌNH
Hình 1.1. Cách xét góc nghiêng của ký tự 23
Hình 1.2. Cách tính tham số ρ và θ 25
Hình 1.3. Các khuôn mẫu để xét điểm đen cần lược bỏ 30
Hình 2.1. Cách phân vùng trong kỹ thuật Zoning 34
Hình 2.2. Cách lấy chu tuyến của ký tự 34
Hình 2.3. Cách lấy bản đồ chiếu của ký tự 35
Hình 2.4. Cách phân bốn tiểu vùng của wavelet Haar 37
Hình 2.5. Minh họa quá trình phân vùng và lấy đường chéo 38
Hình 2.6. Cách phân giá trị gradient vào 6 bin 42
Hình 2.7. Cách đặt vị trí các hotspot 43
Hình 2.8. Cách chia 16 vùng trong kỹ thuật 40-Point 45
Hình 2.9. Cách lấy vùng 29, 30 và 31 46
Hình 2.10. Cách lấy các vùng từ 33 đến 40 47
Hình 2.11. La bàn 8 hướng trong Background Directional Distribution 47
Hình 2.12. Các mặt nạ tương ứng với 8 hướng 48
Hình 2.13. Cách tính hình chiếu cho kỹ thuật Shadow 49
Hình 2.14. Cách xác định độ dài hình chiếu 49
Hình 2.15. La bàn 8 hướng trong Chain code histogram 50
Hình 2.16. Các giá trị nhãn bin và mốc tính bin 54
Hình 2.17. Vị trí của 5 vùng đặc biệt 54
Hình 2.18. Vị trí 5 vùng đặc biệt đối với hai mẫu dữ liệu 55
7
Hình 2.19. Vị trí bốn tiểu vùng trong một vùng 55
Hình 2.20. Phân vùng kích thước 30 × 20 58
Hình 3.1. Minh họa bài toán SVM trong không gian 2 chiều 61
Hình 3.2. Vị trí siêu phẳng trong không gian 2 chiều 63
Hình 4.1. Một số mẫu trích từ bộ dữ liệu MNIST 72
Hình 4.2. Một số mẫu trích từ bộ dữ liệu MyCharacter 74
Hình 5.1. Minh họa một bảng điểm sinh viên 119
Hình 5.2. Vùng cần lấy thông tin 126
Hình 5.3. Minh họa một ô điểm đã được cắt ra 127
Hình 5.4. Giao diện màn hình sử dụng 130
Hình 5.5. Giao diện màn hình cập nhật cơ sở dữ liệu 131
Hình 5.6. Giao diện xem bảng điểm đã có trong cơ sở dữ liệu 132
Hình 5.7. Điểm số ghi lọt ra ngoài khung điểm 133
Hình 5.8. Điểm được chỉnh sửa ngay trên bảng điểm 134
8
DANH MỤC CÁC SƠ ĐỒ, BIỂU ĐỒ
Sơ đồ 1.1. Cấu trúc chung của một hệ thống nhận dạng 16
Sơ đồ 1.2. Vị trí của giai đoạn huấn luyện 31
Sơ đồ 2.1. Thuật toán Diagonal based 39
Sơ đồ 2.2. Thuật toán Hotspot 44
Sơ đồ 4.1. Quá trình biên dịch bộ công cụ CSharp-2.6 77
Sơ đồ 5.1. Cấu trúc hệ thống nhận dạng bảng điểm sinh viên 116
Sơ đồ 5.2. Mô hình quan niệm dữ liệu của hệ thống 120
Sơ đồ 5.3. Cấu trúc bộ xử lý bảng điểm 125
Biểu đồ 4.1. Kết quả trên MyCharacter của Diagonal based 84
Biểu đồ 4.2. Kết quả trên MNIST của Diagonal based 85
Biểu đồ 4.3. Thí nghiệm Twelve Direction trên MyCharacter và MNIST 87
Biểu đồ 4.4. Tìm xương ký tự đối với Twelve Direction 88
Biểu đồ 4.5. Kích thước ma trận chuẩn hóa đối với Twelve Direction 90
Biểu đồ 4.6. Việc lấy trung bình đối với Twelve Direction 91
Biểu đồ 4.7. Kết quả trên MyCharacter và MNIST của Hotspot 93
Biểu đồ 4.8. Việc tìm xương ký tự đối với Hotspot 94
Biểu đồ 4.9. Kết quả trên MyCharacter và MNIST của 40-Point 96
Biểu đồ 4.10. Việc tìm xương ký tự đối với 40-Point 97
Biểu đồ 4.11. So sánh bốn kỹ thuật lấy đặc trưng 99
Biểu đồ 4.12. Kích thước ma trận chuẩn hóa với Dense Distribution 101
Biểu đồ 4.12. Việc phân bin và xét phân bố đối với Dense Distribution 103
Biểu đồ 4.13. Việc chọn nhãn bin đối với Dense Distribution 104
9
Biểu đồ 4.14. Việc chọn mốc tính bin đối với Dense Distribution 106
Biểu đồ 4.15. Việc đánh giá 5 vùng đặc biệt đối với Dense Distribution 108
Biểu đồ 4.16. Kết quả thực hiện bổ sung trên dữ liệu MNIST 109
Biểu đồ 4.17. Kết quả kết hợp thực hiện trên MyCharacter 111
Biểu đồ 4.18. Kết quả kết hợp thực hiện trên MNIST 112
10
MỞ ĐẦU
Trong những năm gần đây, các lĩnh vực nghiên cứu của ngành Công nghệ
thông tin phát triển hết sức mạnh mẽ. Trong đó, một bài toán được các nhà nghiên
cứu lý thuyết và ứng dụng đặc biệt quan tâm là bài toán nhận dạng chữ viết tay rời
rạc. Bài toán này được nghiên cứu ở nhiều ngôn ngữ khác nhau như tiếng Anh,
tiếng Thái, tiếng Nhật,… và cả ở tiếng Việt. Hiện nay có rất nhiều đề tài nghiên cứu
trong và ngoài nước về bài toán này, cả về báo cáo khoa học lẫn về đồ án tốt nghiệp
đều tăng lên về số lượng và chất lượng. Đây rõ ràng là một bài toán có ý nghĩa lớn
về mặt thực tiễn. Do đó, em đã lựa chọn đề tài “Tìm hiểu và nâng cao hiệu quả nhận
dạng chữ viết tay rời rạc dựa trên các kỹ thuật lấy đặc trưng và phát triển ứng dụng”
trong đồ án tốt nghiệp này.
Một cách khái quát, bài toán nhận dạng chữ viết tay rời rạc bao gồm các
bước tiền xử lý ảnh ký tự, rút trích đặc trưng, huấn luyện và nhận dạng. Ở mỗi một
bước đều có những thuật toán riêng để áp dụng, với những điều kiện và hoàn cảnh
cụ thể. Mục tiêu của đồ án này là nhằm tìm hiểu và nâng cao hiệu quả của bài toán
nhận dạng chữ viết tay rời rạc thông qua việc cải thiện các kỹ thuật rút trích đặc
trưng ký tự, đồng thời trên nền tảng đó đề xuất ra một kỹ thuật rút trích đặc trưng
mới. Bên cạnh đó, đồ án cũng trình bày và nắm bắt nội dung của mô hình SVM
(Support Vector Machine) – một trong những mô hình nhận dạng đang được sử
dụng phổ biến hiện nay. Sau đó, sử dụng kết quả của việc cải tiến để cài đặt ứng
dụng đọc bảng điểm sinh viên trường Đại học Nha Trang, đây là một ứng dụng có
tính chất bước đệm nhằm giúp đơn giản hóa công tác quản lý đào tạo của phòng
Đào tạo, trường Đại học Nha Trang.
Em cũng xin gửi lời biết ơn chân thành và sâu sắc nhất đến Thầy Nguyễn
Đình Cường, giảng viên bộ môn Kỹ thuật phần mềm, đã tận tình hướng dẫn và giúp
đỡ em trong suốt quá trình hoàn thành đồ án tốt nghiệp này.
11
CHƯƠNG 1
TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG CHỮ VIẾT TAY
1.1. Giới thiệu về bài toán nhận dạng chữ viết tay
Kể từ khi chiếc máy tính đầu tiên ENIAC được phát minh vào năm 1946 cho
đến nay, lịch sử phát triển của ngành Công nghệ thông tin đã có nhiều bước tiến
nhảy vọt cả về mặt lý thuyết lẫn mặt ứng dụng. Đi cùng với sự phát triển với tốc độ
bùng nổ của khối lượng thông tin kinh tế - xã hội thì số lượng nhà nghiên cứu cũng
như lĩnh vực chuyên sâu hẹp của tin học tăng lên mạnh mẽ. Song song với vấn đề
đó thì yêu cầu mới trong quá trình lưu trữ dữ liệu và giao tiếp liên tục được phát
sinh, thể hiện mức độ tương tác liên tục giữa người dùng với máy tính. Một trong
những yêu cầu được đặt ra là làm thế nào để có được các sản phẩm phần mềm có
khả năng nhận dạng được các ký tự viết tay của một ngôn ngữ nào đó. Hai mục tiêu
chính yếu của các loại phần mềm ứng dụng kiểu này là: Một là, phục vụ cho quá
trình số hóa dữ liệu (nhất là các bản thảo chép tay có giá trị), phục vụ mục đích xử
lý thông tin tự động sau quá trình số hóa; Hai là, phục vụ cho nhu cầu tương tác cho
người dùng trên các thiết bị khác nhau, đặc biệt là cho người phi bản ngữ có thiết bị
di động (chẳng hạn người không biết tiếng Nhật có thể nhập các ký tự tiếng Nhật
khi tra cứu nhanh trên Internet).
Tuy gần đây mới ra đời các sản phẩm loại trên, nhưng nguồn gốc về nhận
dạng ký tự nói chung và nhận dạng ký tự viết tay nói riêng đã có từ trước. Vào năm
1914, Emanuel Goldberg đã phát minh ra máy có khả năng đọc các ký tự và chuyển
đổi chúng thành những mã điện tín tiêu chuẩn. Và cũng trong thời gian đó, Edmund
Fourier d’Albe đã phát minh ra máy Optophone, một máy quét có phát ra các âm
thanh tương đương với các ký tự đặc biệt nào đấy khi cho chúng quét qua một số
trang bản in. Tuy nhiên mức độ của chúng cũng như độ phức tạp của ký tự khi ấy
được sử dụng hãy còn rất đơn giản.
Nhưng rồi do mục đích dần dần được thay đổi, cộng thêm việc phát triển nền
tảng toán học cho lĩnh vực nhận dạng nói chung mà đến nay, mục tiêu bài toán
12
không còn đơn thuần như lúc ban đầu. Ngày nay, mục tiêu chính yếu cho bài toán là
nhận dạng các ký tự chữ in và chữ viết tay để chuyển chúng sang dạng văn bản,
phục vụ nhiều bài toán khác nhau như bài toán tìm kiếm, bài toán sắp xếp,…
Tính đến thời điểm hiện tại, bài toán nhận dạng chữ in gần như đã được giải
quyết trọn vẹn với một độ chính xác khá cao. Tháng 4 năm 2009, hãng công nghệ
ABBYY hàng đầu thế giới đã giới thiệu và triển khai công nghệ nhận dạng tiếng
Việt chữ in, được gói gọn trong sản phẩm FineReader 9.0. Ngoài ra còn có phần
mềm VietORC.NET cũng đã ra đời phục vụ nhu cầu của nhiều người dùng trong
việc nhận dạng văn bản tiếng Việt hoặc tiếng Anh dưới dạng tập tin hình ảnh.
Mặc dù vậy, đối với bài toán nhận dạng chữ viết tay thì vẫn còn rất nhiều
thách thức do một số nguyên nhân chính, mà chính yếu nhất có thể kể đến là sự đa
dạng của các ký tự viết tay phụ thuộc rất nhiều đến từng người. Nói cách khác, tương
ứng với mỗi một người sẽ có một bộ ký tự viết tay cho riêng họ trong ngôn ngữ mà
họ sử dụng. Hai bài toán đã và đang được nghiên cứu hết sức rộng rãi trong việc nhận
dạng chữ viết tay là nhận dạng on-line (nhận dạng ngay trong quá trình người viết
viết ra ký tự đó, có thể là trên các thiết bi khác nhau, khi đó các thông số về thứ tự
nét, hướng cũng như tốc độ của nét sẽ được ghi nhận để phục vụ cho quá trình nhận
dạng) và nhận dạng chữ viết tay off-line (nhận dạng trên hình ảnh đã được scan, chụp
lại từ các ký tự).
1.2. Sơ lược về một số nghiên cứu trước đây
Trong suốt những năm qua, công tác nghiên cứu lý thuyết và ứng dụng trên
bài toán nhận dạng chữ viết tay nói riêng và chữ viết nói chung đã và đang phát
triển rất mạnh. Hàng loạt các bài báo, các đồ án tốt nghiệp trong lĩnh vực này được
giới thiệu. Dưới đây là một vài nghiên cứu trong số đó.
Phạm Anh Phương, trong nghiên cứu ở [3] đã giới thiệu một số kỹ thuật lấy
đặc trưng đơn giản nhưng hiệu quả cho bài toán nhận dạng chữ viết tay. Các kỹ
thuật được giới thiệu gồm kỹ thuật Zoning (trọng số vùng), Projection (hình chiếu),
Contour profile (trích chọn chu tuyến) và wavelet Haar, được thực hiện trên bộ dữ
13
liệu MNIST. Kết quả nghiên cứu cho thấy kỹ thuật Zoning và wavelet Haar cho độ
chính xác cao hơn. Hai kỹ thuật còn lại độ chính xác thấp hơn đôi chút song do số
chiều của vector đặc trưng ít hơn nên tốc độ xử lý được cải thiện đáng kể.
Himavathi S. và các đồng nghiệp đã đưa ra một kỹ thuật mới trong việc rút
trích đặc trưng ký tự trong nghiên cứu [18], đó là kỹ thuật Diagonal based. Kỹ thuật
này được tiến hành trên bộ dữ liệu chữ viết tiếng Anh gồm 26 ký tự. Kỹ thuật của
Himavathi S. và các đồng nghiệp dựa trên đặc tính về lượng của điểm ảnh và số
lượng phân bố của chúng trên các đường chéo trong mỗi vùng. Ngoài ra, các tác giả
còn nâng cao hiệu quả bằng việc lấy thêm giá trị trung bình vừa tìm được giữa các
vùng trong từng dòng và từng cột. Thí nghiệm được thực hiện trên bộ nhận dạng
bằng mạng nơ ron nhân tạo đa lớp lan truyền ngược. Hiệu quả thu được là rất khả
quan với độ chính xác 97.8% cho tập vector đặc trưng có 54 chiều và 98.5% cho tập
vector đặc trưng có 69 chiều.
Das S.K. và cộng sự thì giới thiệu một kỹ thuật khác, trong đó, số lượng
điểm ảnh màu đen trong một vùng cũng được sử dụng để lấy đặc trưng [11], gọi là
kỹ thuật 40-Point. Kỹ thuật 40-Point cũng được tiến hành trên bộ dữ liệu chữ viết
tay tiếng Anh (780 mẫu huấn luyện và 260 mẫu kiểm tra), dùng mạng nơ ron nhân
tạo đa lớp lan truyền ngược. Độ chính xác trong nghiên cứu đạt được là 83.84%.
Trong nghiên cứu ở [23], Schomaker L. và cộng sự đã đề xuất kỹ thuật
Hotspot, một kỹ thuật rút trích đặc trưng ký tự theo hướng tiếp cận về sự phân bố
các điểm đen so với một vài vị trí xác định trong ảnh, được gọi là các hotspot. Các
hotspot này được coi như những lính canh, có tác dụng như những cột mốc để tính
khoảng cách từ chúng đến các điểm đen gần nhất theo một số hướng nhất định. Do
đó, Schomaker L. và các đồng nghiệp đã đưa ra một nhận xét quan trọng rằng hai
yếu tố ảnh hưởng lớn nhất đến hiệu quả chung cho kỹ thuật Hotspot là số lượng các
hotspot và số hướng xác định khoảng cách (có thể là 4 hoặc là 8). Kết quả cho thấy
với 25 hotspot và 4 hướng, cho ra tập vector đặc trưng có số chiều là 100 thì hiệu
14
quả chính xác là tốt nhất. Cụ thể với bộ dữ liệu MNIST là 89.9%, với bộ dữ liệu chữ
số Bangla (Ấn Độ) là 90.1%.
Budhiraja S. và Singh P. thì tiếp cận cải tiến kỹ thuật lấy đặc trưng theo
hướng kết hợp một vài kỹ thuật lại với nhau [8]. Các thí nghiệm này được thực hiện
trên bộ dữ liệu là chữ viết tay Gurmukhi (tiếng Ấn Độ), vốn đang rất ít ỏi về mặt số
lượng nghiên cứu so với tiếng Anh. Với việc kết hợp kỹ thuật Zoning với kỹ thuật
Background Directional Distribution, sử dụng SVM có hàm nhân Radial Basis
Function để phân lớp thì độ chính xác thu được là 95.04%. Đây là một kết quả rất
đáng khích lệ vì chữ viết Gurmukhi tồn tại rất nhiều vần đề gây khó khăn cho việc
nhận dạng như các chữ gần giống nhau, cách viết thay đổi theo từng người và thậm
chí của cùng một người.
Dutta M. và các đồng nghiệp, trong nghiên cứu ở [14], đã chỉ ra kỹ thuật
Twelve Direction có thể được sử dụng cho bất kỳ loại ký tự viết tay nào của bất cứ
ngôn ngữ nào trên thế giới. Cụ thể, trong nghiên cứu của mình, họ đã sử dụng ba bộ
dữ liệu là chữ viết Hindi (tiếng Ấn Độ), chữ viết tiếng Anh và một số ký tự đặc biệt,
được nhận dạng bằng mạng nơ ron nhân tạo lan truyền ngược lỗi. Kết quả đạt được
trong nghiên cứu này là 97%.
Hallale S.B. và Salunke G.D. cũng đưa ra nghiên cứu về kỹ thuật lấy đặc
trưng trên các ký tự viết tay tiếng Anh (chữ cái và chữ số)[17]. Họ cũng chọn việc
phân các giá trị gradient vào 12 bin, mỗi bin tương ứng với 30º, nhưng không sử
dụng mạng nơ ron để phân lớp mà dùng độ tương tự (similarity) giữa mẫu cần phân
lớp với các khuôn mẫu thu được từ giá trị trung bình các vector trong cùng lớp. Dữ
liệu được sử dụng bao gồm 500 mẫu huấn luyện và 200 mẫu kiểm tra, độ chính xác
đạt được là 88.29%.
Cũng lấy giá trị đặc trưng từ gradient của điểm ảnh, nhưng nghiên cứu [13]
của Dubey P. và Sinthupinyo W. lại chia ma trận điểm ảnh ra thành 16 vùng và lấy
histogram giá trị bin của gradient. Trước đó, tất cả các giá trị gradient đã được phân
15
vào 6 bin trải rộng từ 0 đến 2π, mỗi khoảng tương ứng với
3
. Kỹ thuật này thực
hiện trên 50750 mẫu ký tự tiếng Thái và tiếng Anh, sử dụng thuật toán phân cụm K-
Mean và đạt được độ chính xác trung bình là 95%.
Cavalcanti G.D.C và các đồng nghiệp đã kết hợp các kỹ thuật lấy đặc trưng
khác nhau để tăng tỉ lệ nhận dạng lên [10]. Sáu kỹ thuật được kết hợp bao gồm kỹ
thuật đặc tính cấu trúc (structural characteristics), kỹ thuật bản đồ cạnh (modified
edge maps), kỹ thuật hình chiếu (image projections), kỹ thuật đa vùng (multi
zoning), kỹ thuật đo độ lõm (concavities measurement) và kỹ thuật gradient định
hướng (MAT-based gradient directional features). Nghiên cứu sử dụng mạng nơ ron
lan truyền ngược và đã đạt được độ chính xác cao nhất, tính đến thời điểm hiện tại
trên bộ dữ liệu MNIST, là 99.68%.
Arora S. và các cộng sự cũng nâng cao hiệu quả của hệ thống nhận dạng theo
hướng kết hợp các kỹ thuật lấy đặc trưng khác nhau [6]. Bằng việc sử dụng bốn kỹ
thuật là Shadow (hình chiếu), Chain code histogram (histogram chuỗi mã định
hướng), Intersection (giao điểm) và Straight line fitting (đường thẳng xấp xỉ) và lần
lượt cho các tập vector đặc trưng riêng đi qua từng mạng nơ ron lan truyền ngược
riêng biệt, nghiên cứu đã đạt được độ chính xác cuối cùng là 92.8% trên bộ dữ liệu
chữ viết tay Devnagari. Bộ dữ liệu này gồm có 3332 mẫu huấn luyện và 1568 mẫu
kiểm tra.
Nhằm khái quát lại những kỹ thuật đã sử dụng trong bài toán nhận dạng chữ
viết, Ali J. và Verma R. đưa ra một bức tranh chung cho vấn đề này trong báo cáo
[5]. Trong bài báo này, Ali J. và đồng nghiệp đã nêu ra các bước cần thực hiện trong
bài toán nhận dạng chữ viết tay gồm số hóa ảnh ký tự, tiền xử lý, phân đoạn, rút
trích đặc trưng, phân lớp và hậu xử lý. Các kỹ thuật lấy đặc trưng được đề cập gồm
hai hướng tiếp cận là đặc trưng toàn cục hay thống kê (global or statistical features)
và đặc trưng cấu trúc hay hình học (structural or topological features). Bên cạnh đó,
các kỹ thuật phân lớp đã và đang được sử dụng cũng được đưa ra như phương pháp
thống kê, phương pháp đối sánh mẫu, mạng nơ ron nhân tạo, mô hình SVM.
16
Mặc dù số lượng các thuật toán lấy đặc trưng cũng như thuật toán phân lớp,
tính đến thời điểm hiện tại là không ít, song tùy thuộc vào từng điều kiện cụ thể, đặc
biệt là tùy vào bộ dữ liệu (loại ký tự, chất lượng ký tự,…) mà áp dụng các kỹ thuật
cụ thể. Một trong những lý do có thể giải thích cho điều này là mỗi thuật toán đều
có những ưu và nhược điểm riêng, như các kỹ thuật rút trích đặc trưng thống kê
(chẳng hạn số lượng điểm ảnh màu đen trong một vùng nhất định,…) có độ chính
xác phụ thuộc nhiều vào số lượng mẫu huấn luyện cũng như số lượng lớp.
1.3. Quy trình thực hiện nhận dạng chữ viết tay
1.3.1. Sơ đồ tổng quát
Do trên thực tế, việc ứng dụng các bộ nhận dạng hết sức đa dạng và phụ
thuộc rất nhiều vào mục đích phục vụ cuối cùng của bộ nhận dạng đó, cho nên với
những yêu cầu khác nhau thì sơ đồ tổng quát của hệ thống cũng sẽ khác nhau. Dưới
đây là một sơ đồ hệ thống nhận dạng được xem là phổ biến, tham khảo từ [3], trong
đó đã bỏ qua các thành phần chuyên biệt cho từng mục đích cụ thể của hệ thống:
Sơ đồ 1.1. Cấu trúc chung của một hệ thống nhận dạng
Trong sơ đồ 1.1:
Tập dữ liệu
huấn luyện
Cơ sở dữ liệu
nhận dạng
Tập dữ liệu
nhận dạng
Kết quả
nhận dạng
Tiền xử lý Trích chọn
đặc trưng
Huấn luyện
Nhận dạng
17
Tập dữ liệu huấn luyện (Training Set): là tập dữ liệu chứa các mẫu dữ liệu
được sử dụng để huấn luyện mô hình cho hệ thống nhận dạng, tức là dùng để xây
dựng cơ sở dữ liệu nhận dạng.
Tập dữ liệu nhận dạng (Test Set): đây chính là tập dữ liệu của bài toán
thực tế để đưa vào nhận dạng.
Tiền xử lý: do dữ liệu đầu vào thông thường bị nhiễu, không quy chuẩn
hoặc chưa phù hợp thật sự với yêu cầu của nhận dạng, đồng thời để tăng tính chính
xác cho quá trình nhận dạng nên ta phải tiến hành tiền xử lý. Quá trình tiền xử lý
gồm các công đoạn chính là lọc mịn ảnh (lọc muối tiêu, lọc nhiễu,…), nhị phân ảnh,
tách liên thông, chỉnh nghiêng, phóng ảnh về kích thước tiêu chuẩn, phát hiện biên
và làm trơn đường biên,…
Trích chọn đặc trưng: từ dữ liệu đã qua tiền xử lý, tùy theo mục tiêu
nghiên cứu và ý định khác nhau mà mỗi nhà nghiên cứu sử dụng một cơ chế trích
chọn đặc trưng khác nhau. Một trong những phương pháp trích chọn đặc trưng phổ
biến nhất là lấy vector đặc trưng có n đặc trưng, trong đó n đặc trưng được lấy theo
các phương pháp trọng số vùng, biểu đồ chiếu, trích chọn chu tuyến, wavelet
Haar,…
Huấn luyện: là quá trình sử dụng bộ vector đặc trưng đã thu được ở trên để
đưa vào huấn luyện mạng nơ ron nhân tạo, huấn luyện SVM (Support Vector
Machine). Kết thúc giai đoạn này ta thu được mô hình nhận dạng.
Cơ sở dữ liệu nhận dạng: đây là nơi lưu trữ toàn bộ những gì cần thiết cho
quá trình nhận dạng, nó có thể là tập các vector đặc trưng (như trong phương pháp
so sánh bằng khoảng cách Euclide), có thể là bộ trọng số của mạng nơ ron mà ta đã
huấn luyện, và cũng có thể là các thông số của mô hình Support Vector Machine.
Nhận dạng: là bộ sẽ dựa trên cơ sở dữ liệu nhận dạng và các đặc trưng của
bộ dữ liệu nhận dạng (Test Set) để đưa ra quyết định một vector đặc trưng từ một
mẫu của Test Set sẽ tương ứng với ký tự nào.
18
Kết quả nhận dạng: thu nhận kết quả có được từ bộ Nhận dạng và đưa vào
lưu trữ ở dạng văn bản, hiển thị lên màn hình,…
1.3.2. Các giai đoạn thực hiện
Bởi vì hiện nay, bài toán nhận dạng ký tự đã và đang phát triển thành nhiều
bài toán nhỏ khác nhau dẫn đến sử dụng một loạt các thuật toán khác nhau trong
mỗi giai đoạn tiến hành, do vậy ở đây chỉ tập trung đến những nội dung liên quan
đến nhận dạng chữ viết tay rời rạc, tức là mỗi ký tự viết tay được xử lý riêng biệt.
a. Giai đoạn tiền xử lý
Tiền xử lý là một giai đoạn cực kỳ quan trọng trong quá trình nhận dạng một
ký tự, kể cả đó là nhận dạng ký tự in máy hay chữ viết tay. Mục tiêu chính của giai
đoạn tiền xử lý là:
Giảm đi các yếu tố có thể ảnh hưởng đến đường nét của các ký tự trong
ảnh như các điểm muối tiêu, các vệt mờ/đậm không liên quan đến ký tự, xuất hiện
trong quá trình thu thập ảnh do tình trạng vật lý hiện tại của thiết bị (khả năng quét
không tốt, bề mặt máy quét không tốt, có vết trầy xước), do thao tác của người quét
thủ công (không để bản giấy phẳng, để nếp nhăn,…),…
Giảm đi sự phức tạp cho quá trình nhận dạng thông qua việc nhị phân ảnh.
Đưa ảnh ký tự về kích thước quy chuẩn để phục vụ cho quá trình trích
chọn đặc trưng.
Bên dưới đây là một số công đoạn chính của giai đoạn tiền xử lý ảnh ký tự.
Lọc mịn ảnh
Đối với một ảnh bất kỳ, không riêng ảnh ký tự, khi lọc người ta thường sử
dụng hai bộ lọc rất quan trọng là lọc thông thấp (Low – pass filter) [20] và lọc thông
cao (High – pass filter) [19]. Trong đấy:
Lọc thông thấp (Low-pass filter, còn gọi là Blurring filter hay Smoothing
filter) là bộ lọc có khả năng làm cho các phần tử ảnh trở nên trơn hơn, tạo cho mắt
19
ta có cảm giác các điểm ảnh li ti có khả năng “tan đều” trong không gian ảnh, đặc
biệt là những điểm ảnh có sự khác biệt lớn về màu sắc so với các láng giềng của
mình (sáng hơn hẳn so với láng giềng hoặc tối hơn hẳn so với láng giềng).
Lọc thông cao (High-pass filter, còn gọi là Sharpening filer) là bộ lọc có
khả năng làm cho các phần tử ảnh trở nên sắc sảo hơn, tạo cho mắt ta có cảm giác
các điểm ảnh li ti có khả năng nổi bật hóa mình lên.
Do yêu cầu là phải giảm nhiễu muối tiêu và làm trơn ảnh nên ta chọn sử
dụng bộ lọc thông thấp. Người ta thông thường sử dụng nhân lọc trung bình [1]:
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
1
L
(1.1)
Song nếu chúng ta không muốn bộ lọc khiến các điểm ảnh bị “tan ra” quá, ta
có thể sử dụng bộ lọc sau đây:
0
8
1
0
8
1
2
1
8
1
0
8
1
0
2
L
(1.2)
Điểm ảnh ở vị trí trung tâm nhân lọc sẽ được thay thế bằng tổng các phần tử
láng giềng 8 nhân với bộ lọc trên.
Mặc dù vậy, thực nghiệm cho thấy, nếu sử dụng bộ lọc thứ hai cho ảnh xám
rồi đưa qua bộ nhị phân ảnh thì các vết nhiễu xuất hiện trở lại, làm mất vai trò của
bước lọc mịn ảnh. Vì vậy, trong các thí nghiệm nhận dạng ký tự nên sử dụng bộ lọc
trung bình thì tốt hơn.
Nhị phân ảnh
Mặc dù tính đến thời điểm hiện tại việc xử lý ảnh màu hoặc ảnh xám ký tự
đang được quan tâm nghiên cứu do bảo toàn được nhiều tính chất của ảnh, nhất là
20
đặc điểm về việc biến thiên mức năng lượng, song các thuật toán nhận dạng hiện
nay hầu như đều xử lý trên ảnh nhị phân (ảnh chỉ có hai loại điểm ảnh là hoàn toàn
đen hoặc hoàn toàn trắng). Hai lý do có thể kể đến cho vấn đề này là:
Việc nghiên cứu các thuật toán áp dụng trên ảnh màu bao giờ cũng tốn
nhiều chi phí (thời gian, độ phức tạp) hơn so với ảnh nhị phân. Để đơn giản nhất ta
xét ví dụ về ảnh màu dùng hệ màu RGB thì phải tiến hành trên ít nhất ba ma trận
điểm ảnh tương ứng với ba gam màu red – green – blue.
Một vài thuật toán chỉ có thể áp dụng trên ảnh nhị phân, đặc biệt là các
thuật toán tính đến thời điểm hiện tại.
Cách thức để nhị phân ảnh phổ biến nhất là dựa trên dữ liệu hiện thời của ảnh
(đặc biệt là dữ liệu về Histogram) để đưa ra một ngưỡng nhị phân, sau đó xét trên
toàn bộ các điểm ảnh, điểm ảnh nào có giá trị nhỏ hơn ngưỡng nhị phân thì quy về
pixel 0, điểm ảnh nào có giá trị lớn hơn ngưỡng nhị phân thì quy về pixel 1.
Sau đây là một số kỹ thuật nhị phân đang được sử dụng, tham khảo từ [16]:
Kỹ thuật ngưỡng toàn cục giản đơn (Global fixed threshold): đây là kỹ
thuật nhị phân đơn giản nhất, theo đó b
i
= 1 nếu x
i
>= 0.5 và b
i
= 0 nếu x
i
<= 0.5.
Kỹ thuật ngưỡng Otsu (Otsu threshold) [22]: kỹ thuật này ta tìm ra một
ngưỡng toàn cục t, là một kỹ thuật nhị phân hết sức cơ bản, được trình bày chi tiết
sau đây.
Ảnh đang xét ở dạng ảnh xám gồm có L mức xám [1, 2, …, i,…, L]. Gọi số
điểm ảnh có giá trị màu i là n
i
thì ta có tổng số điểm ảnh là N = n
1
+n
2
+…+n
L
.
Tương ứng với mỗi mức là xác suất của mức đó:
L
i
ii
i
i
pp
N
n
p
1
1,0, (1.3)
Bây giờ xét một mức xám là k (
Lk
1
) để xem k có phải là mức xám tốt
nhất để phân ngưỡng hay không. Nhiệm vụ của chúng ta là phân các điểm ảnh ra
thành hai lớp là lớp C
0
(điểm ảnh 0) và lớp C
1
(điểm ảnh 1). Ta có:
21
)7.1(
)(1
)(
)|(
)6.1(
)(
)(
)|(
)5.1()(1)(
)4.1()()(
1
1
1
1
1
0
1
00
1
11
1
00
L
ki
Ti
L
ki
i
k
i
i
k
i
L
ki
i
k
i
i
k
k
ip
Ciyprobabiliti
k
k
ip
Ciyprobabiliti
kpCyprobabilit
kpCyprobabilit
Hay
)9.1()(
)8.1()(
1
1
k
i
i
k
i
i
ipk
pk
Ta cũng có:
)10.1()(
1
L
i
iT
ipL
Nên theo kết quả của Nobuyuki Otsu [22] thì mức xám tốt nhất k
optimal
để
phân ngưỡng là mức xám thỏa mãn biểu thức:
)11.1(
)(1)(
)()(
max)(max)(
2
1
2
1
2
kk
kk
kk
T
LkLk
optimal
Hay nói cách khác bài toán phân ngưỡng lúc này trở thành bài toán cực đại
hóa phương sai của lớp.
Kỹ thuật ngưỡng Otsu đa phân giải (Multiresolution Otsu): đây là một
cách tiếp cận mới, theo đó toàn bộ ảnh sẽ được chia ra thành các ô
hh 22
liền kề
nhau và không xếp đè lên nhau, rồi áp dụng tìm ngưỡng Otsu cục bộ cho từng ô. Kỹ
thuật này trải qua 7 bước sau:
22
Bước 1: Chia toàn bộ ảnh ra thành các ô kích thước
hh 22
không được xếp
đè lên nhau.
Bước 2: Với mỗi ô, tìm ngưỡng Otsu cho các pixel thuộc về ô đó.
Bước 3: Các điểm ảnh trong ô được nhị phân hóa theo ngưỡng vừa tìm được.
Bước 4: Nếu trong ô đó, tỉ lệ số điểm ảnh 1 so với số điểm ảnh 0 ít hơn 2 thì
lặp lại lần lượt từ bước số 2 đến bước số 4 cho các ô có kích thước lớn hơn
(
hh 44
,
hh 88
,
hh 1616
,…).
Bước 5: Mỗi ô
hh 22
sẽ được nhị phân bởi ngưỡng Otsu cuối cùng tìm
được qua quá trình trên.
Bước 6: Ngưỡng t
i
cho mỗi điểm ảnh sẽ được chuẩn hóa bởi nội suy song
tuyến tính từ các ngưỡng có được trong bước 5.
Bước 7: Mỗi điểm ảnh x
i
của ảnh gốc sẽ được so sánh với ngưỡng tương ứng
t
i
để từ đó chuẩn hóa thành điểm ảnh nhị phân b
i
.
Kỹ thuật Sauvola – Niblack: trong kỹ thuật này ta cũng chia toàn bộ ảnh ra
thành các ô có kích thước
NN
liền kề nhau và không xếp đè lên nhau, sau đó
cũng tính ngưỡng cục bộ cho từng ô.
Theo kinh nghiệm của Sauvola có được từ các nghiên cứu thì kích thước ô
phù hợp là
6464
.
Với mỗi điểm ảnh x
i
thì
i
và
i
lần lượt là độ lệch trung bình và độ lệch
chuẩn của khối mức xám chứa điểm x
i
đó.
Ngưỡng Sauvola cho mỗi điểm x
i
là
))1)/((1(
Rk
iii
(1.12), trong
đó
5.0
k
và
255
128
R .
Để giảm công sức tính toán thì ta chỉ tính
i
của điểm ảnh trung tâm ô, với
các điểm ảnh khác cũng thuộc ô đó ta sẽ tính
i
từ phép nội suy song tuyến.
23
Chỉnh nghiêng
Đối với một ảnh ký tự, sự nghiêng của một ký tự trong ảnh có thể ảnh hưởng
rất lớn đến kết quả của toàn bộ quá trình nhận dạng, do đó một trong những bài toán
con của bài toán nhận dạng chữ viết tay là bài toán phát hiện và chỉnh nghiêng cho
các ký tự trong ảnh – một bài toán mà đến nay vẫn còn đang được nghiên cứu rất
mạnh mẽ.
Nguyên nhân chính của việc ký tự bị nghiêng có thể do khi đưa ảnh vào máy
quét thì người thao tác đã đặt nghiêng ảnh, nhiều khi góc nghiêng nhỏ nên chúng ta
bằng mắt thường nếu không để ý cũng có thể không nhận ra. Ngoài ra còn có thể là
do chính quá trình sao chụp ảnh bằng máy ảnh dẫn đến ký tự cũng bị nghiêng.
Nguyên lý chung của các kỹ thuật chỉnh nghiêng ký tự là sử dụng một thuật
toán để tìm ra góc nghiêng α của ký tự, sau đó dùng góc nghiêng đó để hiệu chỉnh
lại ma trận ảnh, có thể là dùng một nhân lọc chẳng hạn.
Hình 1.1. Cách xét góc nghiêng của ký tự
Bài toán phát hiện và hiệu chỉnh góc nghiêng trong ảnh hiện nay tồn tại
nhiều thuật toán, chẳng hạn thuật toán cụm láng giềng gần nhất, thuật toán sử dụng
biến đổi Morphology, thuật toán sử dụng biến đổi Hough,…