Chương 1: Tổng quan Chương này giới thiệu tổng quan về tình hình nghiên cứu trong lĩnh vực nhận dạng chữ viết tay, mô hình tổng quát của một hệ nhận dạng chữ viết tay, một số phương pháp nhận dạng có thể áp dụng vào bài toán nhận dạng chữ viết tay và giới thiệu khái quát về ngôn ngữ lập trình Java và Android. Đồng thời chương này cũng nêu lên những vấn đề còn tồn tại, cũng như chỉ ra những vấn đề mà đề tài cần tập trung nghiên cứu, giải quyết. Chương 2: Phương pháp SVM Chương này nghiên cứu một số vấn đề cơ bản của SVM như phân lớp tuyến tính với siêu phẳng tối ưu, sử dụng hàm nhân để phân lớp gián tiếp thông qua không gian đặc trưng với số chiều cao hơn trong phân lớp phi tuyến, lý thuyết chiều VC (Vapnik – Chervonenkis); một số thuật toán huấn luyện SVM như thuật toán chặt khúc, thuật toán phân rã, thuật toán SMO (Sequential Minimal Optimization) và một số chiến lược SVM cho bài toán phân đa lớp. Chương 3: Xây dựng mô hình nhận dạng chữ Việt viết tay rời rạc áp dụng phương pháp phân lớp SVM Chương này trình bày một số phương pháp trích chọn đặc trưng hiệu quả đối với chữ viết tay và đề xuất một mô hình hiệu quả cho bài toán nhận dạng chữ Việt viết tay rời rạc sử dụng phân lớp SVM.
Chương 4: Kết quả thực hiện Tiến hành kiểm chứng các kết quả của lời giải bài toán được trình bày ở chương 3 bằng việc thiết kế một ứng dụng Android nhận dạng chữ viết tay trên màn hình cảm ứng điện thoại. Các kết quả thu được từ việc nhận dạng chữ Việt in hoa viết tay rời rạc được tổng hợp để tính toán độ chính xác trung bình của mô hình và xác suất nhận dạng sai mỗi ký tự. Chương 5: Kết luận 6 Trình bày các kết quả đạt được và những tồn tại của luận văn. Đề xuất các hướng nghiên cứu tiếp theo.
Chương này cũng sẽ đưa ra những quan điểm cá nhân về việc ứng dụng nhận dạng chữ viết tay trên màn hình cảm ứng của điện thoại thông minh vào đời sống. Đánh giá các tiềm năng và thách thức. TỔNG QUAN Chương này giới thiệu khái quát về lĩnh vực nhận dạng chữ, sơ đồ tổng quát của một hệ nhận dạng chữ viết tay, tổng hợp các phương pháp nhận dạng được áp dụng trong lĩnh vực nhận dạng chữ viết tay và kiến thức chung về ngôn ngữ lập trình Java và Android. Giới thiệu về lĩnh vực nhận dạng chữ Nhận dạng chữ là một trong những lĩnh vực nhận dạng được nhiều nhà nghiên cứu quan tâm và cho đến nay lĩnh vực này cũng đã đạt được nhiều thành tựu lớn lao cả về mặt lý thuyết lẫn ứng dụng thực tế.
Lĩnh vực nhận dạng chữ được chia làm hai loại: Nhận dạng chữ in và nhận dạng chữ viết tay. Đến thời điểm này, nhận dạng chữ in đã được giải quyết gần như trọn vẹn. Tuy nhiên, nhận dạng chữ viết tay vẫn còn nhiều vấn đề thách thức đối với các nhà nghiên cứu. Nhận dạng chữ viết tay được phân ra làm hai loại: nhận dạng chữ viết tay trực tuyến (on-line) và nhận dạng chữ viết tay ngoại tuyến (off-line).
Nhận dạng chữ viết tay on-line được thực hiện trên cơ sở lưu lại các thông tin về nét chữ như thứ tự nét viết, hướng và tốc độ của nét viết trong quá trình nó đang viết. Đây chính là cơ sở để máy tính nhận diện được các chữ cái, do đó việc nhận dạng không gặp quá nhiều khó khăn. Một trong những sản phẩm nhận dạng chữ viết tay trực tuyến tiêu biểu nhất là hệ thống nhận dạng chữ viết tay rời rạc trực tuyến trên một trạm làm việc của IBM do H.Wolf ở phòng thực hành Watson IBM cài đặt [1]. Ngược lại, đối với nhận dạng chữ viết tay off-line, dữ liệu đầu vào là ảnh văn bản được quét vào nên việc nhận dạng có độ khó cao hơn nhiều so với nhận dạng chữ viết tay on-line.
Do dữ liệu đầu vào là ảnh văn bản nên nhận dạng chữ viết tay off-line và nhận dạng chữ in còn được gọi chung là nhận dạng chữ quang học (OCR - Optical Character Recognition). 8 Khó khăn lớn nhất khi nghiên cứu bài toán nhận dạng chữ viết tay là sự biến thiên quá đa dạng trong cách viết của từng người. Cùng một người viết nhưng đôi khi cũng có nhiều sự khác biệt trong cách viết tuỳ thuộc vào từng ngữ cảnh, kiểu viết của một người cũng có thể thay đổi theo thời gian hoặc theo thói quen. Điều này gây ra nhiều trở ngại trong việc trích chọn đặc trưng cũng như lựa chọn mô hình nhận dạng.
Các kiến thức cần thiết để nghiên cứu về lĩnh vực nhận dạng chữ viết tay tương đối rộng, có liên quan đến nhiều lĩnh vực khác nhau: Xử lý ảnh (Image Processing): Các kỹ thuật xử lý ảnh được sử dụng trong các giai đoạn tiền xử lý, tách chữ và trích chọn đặc trưng. Chẳng hạn như các thuật toán khử nhiễu, tìm xương, phát hiện biên, phân vùng ảnh. Lý thuyết nhận dạng (Pattern Recognition): sử dụng các phương pháp luận phân lớp sử dụng trong công đoạn huấn luyện và nhận dạng. Xác suất thống kê và toán ứng dụng: lý thuyết xác suất đóng vai trò rất quan trọng trong các phương pháp phân lớp thống kê như mô hình Markov ẩn (Hidden Markov Model - HMM), phương pháp Bayes, k-láng giềng gần nhất (k-Nearest Neighbors – k-NN), còn đối với phương pháp phân lớp SVM thì kết hợp cả lý thuyết thống kê lẫn toán tối ưu, đặc biệt là bài toán quy hoạch toàn phương.
Ngôn ngữ học và ngôn ngữ học tính toán (Linguistic and Computational Linguistic): Các kiến thức về ngữ pháp đóng vai trò quan trọng trong công đoạn hậu xử lý, nâng cao độ chính xác cho các hệ thống nhận dạng chữ viết. Trong số các lĩnh vực kể trên, luận văn sẽ tập trung vào việc nghiên cứu các kiến thức về xử lý ảnh đặc biệt là tiền xử lý và trích chọn đặc trưng, các kỹ thuật phân lớp dùng trong nhận dạng chữ viết tay đặc biệt là phương pháp SVM. Mô hình tổng quát của một hệ thống nhận dạng chữ viết tay Ảnh chứa chữ viết tay Tiền xử lý Tách chữ Trích chọn đặc trưng Huấn luyện và nhận dạng Hậu xử lý Văn bản được nhận dạng Hình 1. Sơ đồ tổng quát của một hệ thống nhận dạng chữ viết tay Về cơ bản, một hệ nhận dạng chữ viết tay bao gồm năm khối công việc chính (hình 1.
Luận văn chỉ tập trung nghiên cứu hai khối công việc chính: trích chọn đặc trưng và huấn luyện/nhận dạng. Tiền xử lý Giai đoạn này góp phần làm tăng độ chính xác phân lớp của hệ thống nhận dạng, tuy nhiên nó cũng làm cho tốc độ nhận dạng của hệ thống chậm lại. Vì vậy, tùy thuộc vào chất lượng ảnh quét vào của từng văn bản cụ thể để chọn một hoặc một vài chức năng trong khối này. Nếu cần ưu tiên tốc độ xử lý và chất lượng của máy quét tốt thì có thể bỏ qua giai đoạn này.
Khối tiền xử lý bao gồm một số chức năng: Nhị phân hóa ảnh, lọc nhiễu, chuẩn hóa kích thước ảnh, làm trơn biên chữ, làm đầy chữ, làm mảnh chữ và xoay văn bản. Nhị phân hóa ảnh Nhị phân hóa ảnh là một kỹ thuật chuyển ảnh đa cấp xám sang ảnh nhị phân. Trong bất kỳ bài toán phân tích hoặc nâng cao chất lượng ảnh nào, nó cũng cần thiết để xác định các đối tượng quan trọng. Nhị phân hóa ảnh phân chia ảnh thành 2 phần: phần nền và phần chữ.
Hầu hết các phương pháp nhị phân hóa ảnh hiện nay đều lựa chọn một ngưỡng thích hợp theo cường độ sáng của ảnh và sau đó chuyển tất cả các giá trị độ sáng lớn hơn ngưỡng đó thành một giá trị độ sáng (ví dụ “trắng”) và tất cả các giá trị bé hơn ngưỡng thành một giá trị độ sáng khác (“đen”). Nhị phân hóa ảnh 1. Lọc nhiễu Nhiễu là một tập các điểm sáng thừa trên ảnh. Khử nhiễu là một vấn đề thường gặp trong nhận dạng, nhiễu có nhiều loại (nhiễu đốm, nhiễu vệt, nhiễu đứt nét.
Nhiễu đốm và nhiễu vệt Để khử các nhiễu đốm (các nhiễu với kích thước nhỏ), có thể sử dụng các phương pháp lọc (lọc trung bình, lọc trung vị. Tuy nhiên, với các nhiễu vệt (hoặc các nhiễu có kích thước lớn) thì các phương pháp lọc tỏ ra kém hiệu quả, trong trường hợp này sử dụng phương pháp khử các vùng liên thông nhỏ tỏ ra có hiệu quả hơn. Chuẩn hóa kích thước ảnh Hình 1. Chuẩn hóa kích thước ảnh các ký tự “A” và “B” Việc chuẩn hóa kích thước ảnh dựa trên việc xác định trọng tâm ảnh, sau đó xác định khoảng cách lớn nhất từ tâm ảnh đến các cạnh trên, dưới, trái, phải của hình chữ nhật bao quanh ảnh.
Thông qua khoảng cách lớn nhất đó, có thể xác định được một tỷ lệ co, giãn của ảnh gốc so với kích thước đã xác định, từ đó hiệu chỉnh kích thước ảnh theo tỷ lệ co, giãn này. Như vậy, thuật toán chuẩn hóa kích thước ảnh luôn luôn đảm bảo được tính cân bằng khi co giãn ảnh, ảnh sẽ không bị biến dạng hoặc bị lệch. Làm trơn biên chữ Đôi khi do chất lượng quét ảnh quá xấu, các đường biên của chữ không còn giữ được dáng điệu trơn tru ban đầu mà hình thành các đường răng cưa giả tạo. Trong các trường hợp này, phải dùng các thuật toán làm trơn biên để khắc phục [2].
(a) Ảnh gốc, (b) Ảnh sau khi được làm trơn biên 12 1. Làm đầy chữ Chức năng này được áp dụng với các ký tự bị đứt nét một cách ngẫu nhiên. Ảnh đứt nét gây khó khăn cho việc tách chữ, dễ bị nhầm hai phần liên thông của ký tự thành hai ký tự riêng biệt, tạo nên sai lầm trong quá trình nhận dạng. Làm mảnh chữ Đây là một bước quan trọng nhằm phát hiện khung xương của ký tự bằng cách loại bỏ dần các điểm biên ngoài của các nét.
Tuy nhiên, quá trình làm mảnh chữ rất nhạy cảm với việc khử nhiễu. Hiện nay có nhiều phương pháp làm mảnh chữ, các thuật toán tìm xương có thể tham khảo ở [2]. Làm mảnh chữ 1. Điều chỉnh độ nghiêng của văn bản Do trang tài liệu quét vào không cẩn thận hoặc do sự cố in ấn, các hàng chữ bị lệch so với lề chuẩn một góc α, điều này gây khó khăn cho công đoạn tách chữ, đôi khi không thể tách được.
Trong những trường hợp như vậy, phải tính lại tọa độ điểm ảnh của các chữ bị sai lệch.