(a) là ảnh gốc, (b) là ảnh kết quả sử dụng phép biến đổi tìm xương của đối tượng trong ảnh gốc. (theo tài liệu [3]).
CHƯƠNG 3
ỨNG DỤNG NÂNG CAO CHẤT LƯỢNG ẢNH VĂN BẢN 3.1. Đặt vấn đề
Các hình ảnh văn bản scan đen trắng (hoặc ảnh chụp từ camera) thu được hay gặp các vấn đề: Các ký tự không được rõ nét do độ tương phản chưa cao, các ký tự có thể bị đứt nét, bị nhiễu,…(tác giả gọi chung đó là hình ảnh văn bản bị xuống cấp) điều đó khiến cho việc tiếp nhận thông tin gặp nhiều khó khăn. Đã có rất nhiều các phương pháp của nhiều tác giả đưa ra để giải quyết các vấn đề liên quan tới các hình ảnh văn bản như: phương pháp đại diện rải rác không cục bộ (non-local sparse representation) kết hợp với biểu đồ histogram Gradient theo tài liệu [7] để tăng cường và khôi phục lại ảnh; sử dụng kỹ thuật Gradient và tăng cường độ tương phản của ảnh để khử nhiễu cho ảnh theo tài liệu [8]; Thuật toán khôi phục dựa trên sự ước lượng tham số của hình ảnh bị xuống cấp từ đó sử dụng các tham số này để xây dựng một bảng tìm kiếm cho sự khôi phục lại hình ảnh bị xuống cấp theo tài liệu [9]; sự khôi phục văn bản scan từ đường bao dày theo tài liệu [10], và rất nhiều các kỹ thuật khác nữa.
Trong luận văn này tác giả sẽ dựa trên các phép toán hình thái, kỹ thuật hiệu chỉnh gamma, kỹ thuật phân ngưỡng để nâng cao chất lượng hình ảnh văn bản bị xuống cấp như hình 3.1.
Hình 3.1. Hình ảnh văn bị xuống cấp
Với các hình ảnh văn bản kém chất lượng (như hình 3.1) ta nhận thấy rằng các ký tự bị đứt nét và bị mờ (độ tương phản không cao) do đó ta cần phải khắc phục sự đứt nét cho các ký tự (được đề cập trong mục 3.2) và cần phải làm rõ nét các ký tự (được đề cập trong mục 3.3).
Để kiểm chứng kết quả của chương trình tác giả sẽ so sánh với chức năng nhận dạng chữ và chức năng lọc sắc nét của phần mềm VietOCR.NET. (được đề cập trong mục 3.6).
3.2. Khắc phục sự đứt nét cho các tài liệu scan đen –trắng
Tuỳ theo từng văn bản mà độ đứt nét các chữ là khác nhau và khoảng cách bị đứt là khác nhau. Mặt khác những chỗ giáp cả 2 chữ thường gần hơn hoặc xấp xỉ bằng với khoảng cách bị đứt nét. Nên để cho độ chính xác gần với mong muốn hơn ta nên chọn khoảng cách đứt nét (số lượng pixel) cho phép là bao nhiêu để vừa đảm bảo khắc phục được hiện tượng đứt nét, vừa giảm thiểu tối đa sự dính liền giữa các ký tự với nhau do vậy mà việc lựa chọn phần tử cấu trúc áp dụng cho mỗi trường hợp đứt nét là khác nhau. Để giải quyết vấn đề lựa chọn phần tử cấu trúc sao cho phù hợp tác giả sẽ dựa vào trực quan của chính người sử dụng. Trong chương trình tác giả sẽ cung cấp giao diện cho phép người sử dụng có thể tùy chỉnh hình dạng, kích thước phần tử cấu trúc sẽ tác động vào văn bản và vừa có thể quan sát trước trạng thái của văn bản khi sử dụng phần tử cấu trúc đã lựa chọn.
Mô tả phương pháp
Ta phân sự đứt nét của văn bản theo 2 chiều: Chiều dọc và chiều ngang, được mô tả bằng hình bên dưới.
Hình 3.2. Văn bản bị đứt nét theo chiêu ngang
Tư tưởng khắc phục văn bản bị đứt nét theo chiều ngang
B1: Đầu tiên ta thực hiện làm béo chữ theo phần tử cấu trúc (phần tử cấu trúc nên chọn để đảm bảo chữ sẽ giãn theo chiều ngang là chính), phép toán này làm cho chữ giãn nở ra theo chiều ngang các phần đầu của chữ bị đứt sẽ giao nhau sau khi được làm béo.
Hình 3.4. Ví dụ phần tử cấu trúc sẽ giúp giãn chữ theo chiều ngang (gốc phần tử cấu trúc nằm giữa) (gốc phần tử cấu trúc nằm giữa)
B2: Sau khi thấy phần nét đứt đã nối liền ta thực hiện phép co chữ theo phần tử cấu trúc trên với số lần thực hiện đúng bằng số lần đã giãn nở ở trên phần chữ làm béo theo chiều ngang sẽ trở lại như ban đầu còn phần chữ đã được nối thì giữ nguyên vì nó được thoả mãn điều kiện giữ lại.
Tư tưởng khắc phục văn bản bị đứt nét theo chiều dọc:
B1: Đầu tiên ta thực hiện làm béo chữ theo phần tử cấu trúc (phần tử cấu trúc nên chọn để đảm bảo chữ sẽ giãn theo chiều dọc là chính), phép toán này làm cho chữ giãn nở ra theo chiều dọc các phần đầu của chữ bị đứt sẽ giao nhau sau khi được làm béo.
Hình 3.5. Ví dụ phần tử cấu trúc sẽ giúp giãn chữ theo chiều dọc (gốc phần tử cấu trúc nằm giữa) (gốc phần tử cấu trúc nằm giữa)
B2: Sau khi thấy phần nét đứt đã nối liền ta thực hiện phép co chữ theo phần tử cấu trúc trên với số lần thực hiện đúng bằng số lần đã giãn nở ở trên phần chữ làm béo theo chiều dọc sẽ trở lại như ban đầu còn phần chữ đã được nối thì giữ nguyên vì nó được thoả mãn điều kiện giữ lại.
Với tư tưởng khắc phục chữ nét đứt như đã trình bày thì phép toán ta sẽ chọn để thực hiện đó chính là phép đóng ảnh (closing).
3.3. Khắc phục ảnh văn bản bị mờ
Với những hình ảnh văn bản bị mờ đường nét hình 3.3 (do có nhiều điểm ảnh có giá trị xám thấp nên độ tương phản so với nền là nhỏ), ta có thể khắc phục điều này bằng phương pháp:
B1: Điều chỉnh Gamma(Giá trị Gamma thường là 2.2): Điều chỉnh Gamma sẽ làm cho các ký tự trở nên rõ nét, và không bị mờ đi sau phép biến đổi. Điều này cũng sẽ làm các điểm ảnh không mong muốn trở nên rõ hơn do đó ta sẽ tiến hành phân ngưỡng nhị phân để loại bỏ các điểm ảnh không mong muốn này (đó chính là thao tác thực hiện ở bước thứ 2).
B2: Chuyển về ảnh nhị phân (đen – trắng): Sử dụng kỹ thuật phân ngưỡng động SIS (Simple Image Statistic).
3.4. Giới thiệu chương trình
Chương trình được xây dựng trên nền Dot net và C# (Visual Studio 2010) kết hợp với việc sử dụng gói thư viện Aforge.net Framework [12, 13] cho C#. Trong chương trình tác giả đã cài đặt các chức năng chính:
+ Phép toán hình thái: Theo thuật toán co –dãn – đóng – mở ảnh với ảnh đa cấp xám.
+ Chuyển đổi màu ảnh (ảnh âm bản): Theo thuật toán đổi ảnh sang ảnh âm bản + Chuyển ảnh sang ảnh gray: Theo thuật toán chuyển ảnh rgb sang ảnh gray + Chuyển ảnh sang nhị phân: Theo thuật toán phân ngưỡng động SISThreshold + Xem ảnh: Phóng to, thu nhỏ ảnh
+ Hiệu chỉnh gamma: Theo thuật toán hiệu chỉnh Gamma
+ Nâng cao chất lượng ảnh văn bản: Kết hợp 2 phương pháp khắc phục sự đứt nét và tăng độ sắc nét đã trình bày ở trên.
Muốn sử dụng các chức năng của chương trình đầu tiên ta sẽ tiến hành mở 1 file ảnh sau đó lựa chọn các chức năng tùy ý. Dưới đây tác giả sẽ mô tả việc sử dụng chức năng “Nâng cao chất lượng ảnh”
B2: Chọn chức năng: Nâng cao chất lượng ảnh
Sau khi người dùng chọn chức năng các bước của quá trình sẽ diễn ra như sau:
B2.1. Lựa chọn phần tử cấu trúc sẽ sử dụng cho thao tác đóng ảnh (closing)
Tùy vào độ đứt nét của từng văn bản khác nhau mà người sử dụng sẽ lựa chọn và thay đổi phần tử cấu trúc (tùy ý) dựa vào việc quan sát sự thay đổi của văn bản để có sự điều chỉnh phần tử cấu trúc sao cho đạt tới mục tiêu tốt nhất chọn OK Nếu ảnh không cần khắc phục sự đứt nét (không muốn thực hiện thao tác đóng ảnh) thì người dùng sẽ chọn Cancel và tới b2.2.
B2.2. Điều chỉnh Gamma (Mặc định giá trị gamma=2.2)
B2.3. Sau khi chọn OK ta sẽ có được kết quả cuối cùng của ảnh
3.5. Thực nghiệm
(1a)
(2a)
(2b) (1a) (2a): Ảnh gốc
(1b) (2b): Ảnh sau khi nâng cấp 3.6. Đánh giá
Tác giả sử dụng phần mềm VietOCR.NET để kiểm tra sự nhận dạng ký tự của hình ảnh trước và sau khi xử lý ( VietOCR.NET là một .NET GUI frontend cho Tesseract OCR engine, cung cấp hỗ trợ nhận dạng ký tự cho các dạng ảnh phổ thông, và ảnh chứa nhiều trang. Chương trình có phần hậu xử lý giúp sửa chữa các lỗi thường gặp trong quy trình OCR, tăng độ chính xác trên kết quả. Chương trình còn có khả năng vận hành như một ứng dụng console, thi hành lệnh từ command line).
Tác giả đã thống kê khả năng nhận dạng ký tự trên 15 mẫu ảnh với phần mềmVietOCR.NET và kết quả như sau:
Số lượng từ trên hình ảnh gốc Số lượng từ nhận dạng trước khi xử lý với OCR Số lượng từ nhận dạng sau khi xử lý với chương trình Sau khi xử lý với chức năng “lọc sắc nét” của OCR % trước khi xử lý % của chương trình % sắc nét trong ocr Mẫu 1 (h1.tif) 559 441 491 441 78.89 87.84 78.89 Mẫu 2 (H3.jpg) 52 4 6 4 7.69 11.54 7.69 Mẫu 3(H4.jpg) 72 11 45 23 15.28 62.50 31.94 Mẫu 4(H8.jpg) 73 16 35 21 21.92 47.95 28.77
Mẫu 5(H10.jpg) 207 23 57 9 11.11 27.54 4.35 Mẫu 6(H12.jpg) 281 25 60 43 8.90 21.35 15.30 Mẫu 7(H13.jpg) 176 10 40 29 5.68 22.73 16.48 Mẫu 8(H14.jpg) 144 15 52 21 10.42 36.11 14.58 Mẫu 9(H15.jpg) 120 57 72 37 47.50 60.00 30.83 Mẫu 10(H17.jpg) 228 38 80 64 16.67 35.09 28.07 Mẫu 11(H18.jpg) 144 4 8 2 2.78 5.56 1.39 Mẫu 12(H19.jpg) 200 33 35 2 16.50 17.50 1.00 Mẫu 13(H7.jpg) 544 32 32 32 5.88 5.88 5.88 Mẫu 14(Bangchucai- dutnet.jpg) 26 0 25 0 0.00 96.15 0.00 Mẫu 15(Bangchucai_in hoa-dutnet.jpg) 26 0 22 0 0.00 84.62 0.00 Mẫu 17 (H2.jpg) 120 25 40 38 20.83 33.33 31.67 Từ bảng thống kê trên ta có biểu đồ thống kê sau:
Như vậy với bảng kết quả trên cho thấy rằng ảnh văn bản sau khi xử lý với chương trình nâng cao chất lượng ảnh đã có sự cải thiện so với ảnh ban đầu, và ta cũng nhận thấy rằng kết quả nhận dạng không đạt 100% có thể do một số lý do sau:
+ Với văn bản bị đứt nét các phần bị đứt lớn sẽ không thể nối liền vì nếu nối chúng sẽ gây ra các nét nối bị thừa trong ảnh và dẫn tới cấu trúc của ký tự sẽ không còn đúng nữa.
+ Các ký tự a, e, y, k, s, x, z,w,g, m, n, h, H S W M trong văn bản thường bị thay đổi cấu trúc vì hay bị nối vào trong chữ thành các vòng khép kín.
+ Các văn bản không rõ nét sau quá trình phân ngưỡng sẽ có thể bị mất đi một số điểm ảnh cần thiết.
KẾT LUẬN
Phép toán hình thái là một mảng vô cùng quan trọng trong xử lý ảnh, các đề tài về phép biến đổi này cũng đang được nhiều người quan tâm, bởi vì qua các thuật toán và phép toán cơ sở đó ta có thể mở rộng và phát triển những bài toán khác có liên quan đến lĩnh vực quan sát thăm dò, trí tuệ nhân tạo,…chẳng hạn như ứng dụng camera theo dõi qua các thuật toán nhận biết đối tượng chuyển động, hoặc ghép đối tượng trong hai hình ảnh thông qua các đặc điểm hoặc điểm tương đồng…
Các kết quả đã đạt được: Trong luận văn tác giả đã
- Trình bày tổng quan về xử lý ảnh, các phương pháp nâng cao chất lượng ảnh - Trình bày hệ thống các khái niệm cơ bản của phép toán hình thái dưới góc độ xử lý ảnh; các khái niệm, các tính chất và ứng dụng cơ bản trong xử lý và biểu diễn hình dạng đối tượng. Đồng thời qua đó giải thích, minh họa cụ thể và đưa ra mối liên hệ giữa các phép toán đó với nhau.
- Thực nghiệm các phép toán, thuật toán qua chương trình xử lý. Hướng phát triển:
- Tiếp tục nghiên cứu sâu hơn nữa để tìm ra phương pháp nâng cao chất lượng và khắc phục các khiếm khuyết của hình ảnh văn bản tốt hơn.
TÀI LIỆU THAM KHẢO
[1]. Đỗ Năng Toàn, Phạm Việt Bình - Giáo Trình Môn Học Xử Lý Ảnh, trường ĐH thái nguyên, khoa CNTT - 2008.
[2] PGS.TS Nguyễn Quang Hoan – Giáo trình môn học xử lý ảnh, học viện công nghệ bưu chính viễn thông, 2006.
[3] Ths. Hồ Đức Lĩnh - Khoa Công nghệ Thông tin – Đại học Đông Á: Bài viết “Xử lý hình thái học trên ảnh và ứng dụng”.
[4] Trần Đức Toàn – Luận văn thạc sỹ “ Nghiên cứu một số kỹ thuật nâng cao chất lượng ảnh nhị phân và ứng dụng”.
[5]. J.R.Paker, Algorithms for Image processing and Computer Vision. John Wiley & Sons, Inc, 1997.
[6] J.Kittler and J.Illingworth, “Threshold selection based on a simple image statistic” computer vision, graphics and image processing 30,125-147 (1985)
[7] Mingli Zhang, Reza Farrahi Moghaddam and Mohamed Cheriet “Degraded Document Images Enhancement and Reconstruction Based on Non-local Sparse Representation”
[8] Er. Jagroop Kaur- Dr. Rajiv Mahajan, Improved Degraded Document Image Binarization Using Guided Image Filter, Dept of Computer Science & Engineering,GIMET, India,Volume 4, Issue 9, September 2014 ISSN: 2277 128X. [9] Qigong Zheng and Tapas Kanungo “Morphological Degradation Models and their Use in Document Image Restoration” , N660010028910/IIS9987944 February 2001.
[10] ZHANG ZHENG “Restoration of images scanned from thick bound documents” Image Processing, 2001. Proceedings. 2001 International Conference on (Volume:1) [11] http://www.cambridgeincolour.com/tutorials/gamma-correction.htm [12]http://www.codeproject.com/Articles/16859/AForge-NET-open-source- framework [13] https://code.google.com/p/aforge/ [14]http://luanvan.net.vn/luan-van/do-an-hieu-chinh-anh-sang-trong-anh-31749/ [15]http://dohoafx.com/forum/threads/linear-workflow-gamma-correction-voi-giao- trinh-cua-rubic-studio.62484/#.VIVamNKsWn0 [16]http://www.dfstudios.co.uk/articles/programming/image-programming- algorithms/image-processing-algorithms-part-6-gamma-correction/
PHỤ LỤC
Các mẫu văn bản được sử dụng trong chương trình Mẫu 13:
H10