3.3 Các thuật toán khác áp dụng cho biểu mẫu động
3.3.2 Thuật toán xác định góc nghiêng
3.3.2.1.Thuật toán sử dụng phép chiếu
Trong phần nay chúng tôi không đi sâu vào giải thích về phƣơng pháp phép chiếu mà chỉ nêu tóm tắt các bƣớc chính cần thực hiện:
– Các điểm đen trên hình ảnh sẽ đƣợc chiếu theo các đƣờng thẳng song song vào một mảng tích lũy (A). Mỗi phần tử của mảng tƣơng ứng với
83
một đƣờng chiếu và giá trị của nó là số điểm đen nằm trên đƣờng chiếu đó.
– Sử dụng phép chiếu đối với mỗi góc nghiêng giả định, ta thu đƣợc một tập các mảng tích lũy (Aθ). Dựa vào hàm đánh giá F(Aθ) với MINANGLE ≤ θ ≤ MAXANGLE, ta tìm đƣợc góc nghiêng chính xác θ của ảnh là góc làm cho giá trị của hàm đánh giá F(Aθ) đạt cực đại Dựa trên các đặc trƣng của văn bản ta có hai hàm đánh giá :
n i i A i A A F 1 2 1( ) ( [ ] [ 1])
Áp dụng phƣơng pháp phép chiếu, ta thử với từng góc θ nằm trong khoảng ( MINANGLE, MAXANGLE). Góc θ tìm đƣợc là góc có hàm đánh giá tƣơng ứng đạt giá trị cực đại.
Tối ƣu thuật toán
Từ thực tế nghiên các loại biểu mẫu khác nhau, chúng tôi nhận thấy các văn bản dạng biểu mẫu có nhiều đƣờng thẳng, nhiều hình chữ nhật song song với hƣớng của văn bản; khi văn bản bị nghiêng với một góc θ, thì các hình này không bị biến dạng nhiều. Cùng với cách làm trên, chi phí tính toán tập trung nhiều vào việc tính tổng số điểm đen trên đƣờng chiếu. Để khắc phục nhƣợc điểm này chúng ta có thể không cần tính đến tất cả các điểm đen trên đƣờng chiếu mà chỉ xét xem đƣờng chiếu đƣờng chiếu thuộc về kiểu nào trong hai loại: đƣờng chiếu có chứa ít nhất một điểm đen (gọi là đƣờng chiếu đen – gọi tắt là đƣờng đen) và đƣờng chiếu không có chứa điểm đen (gọi là đƣờng chiếu trắng – gọi tắt là đƣờng trắng).
Theo cách này, chúng ta sẽ phân tích ảnh ở tất cả các góc nghiêng θ có thể bằng cách vẽ các đƣờng chiếu song song trên ảnh ở các góc nghiêng này, và xác định các đƣờng các đƣờng đen và các đƣờng trắng. Theo đó các đối tƣợng (nhƣ textline, đƣờng thẳng, hình chữ nhật, bảng…) có thể đƣợc xấp xỉ bằng các hình bình
84
hành. Việc ƣớc lƣợng góc nghiêng của ảnh dựa trên diện tích các hình bình hành hoặc phần bù của các hình bình hành đó.
Hình 3.24: (a) Ảnh scan, các đường màu đỏ là các đường chiếu ở góc nghiêng θ. (b) Ảnh được xấp xỉ bởi các hình bình hành
Để tăng cƣờng độ chính xác chúng ta có thể chia nhỏ đƣờng chiếu bằng cách chia ảnh thành các vùng có độ rộng nhƣ nhau. Ta coi mỗi vùng nhƣ là một ảnh con, và việc phân tích ảnh đƣợc áp dụng trên mỗi một ảnh con này.
85
Hình 3.25: (a) Ảnh scan. (b) (c) (d) Ảnh các đường chiếu đen và trắng ở các góc nghiêng -2.50, -3.50, 20
Đặt A(θ) là diện tích các hình bình hành tƣơng ứng với góc nghiêng θ, T là tổng diện tích của toàn bộ ảnh và B(θ) = T - A(θ) là diện tích phần bù của các hình bình hành. Khi đó góc nghiêng của ảnh sẽ đƣợc ƣớc lƣợng bởi giá trị lớn nhất của tất cả các B(θ ) hay θ* = Max{ B(θ)} [12].
Để tính đƣợc kích thƣớc của vùng trắng, đơn giản chúng ta chỉ việc đếm số điểm ảnh trên đƣờng trắng. Với mỗi một đƣờng chiếu ta làm nhƣ sau:
IF nếu là điểm ảnh màu đen THEN
Chúng ta dừng lại, trả lại giá trị 0, và chuyển sang duyệt đƣờng chiếu tiếp theo
ELSE
Tăng số điểm ảnh trắng lên 1, chuyển sang điểm tiếp theo trong đƣờng chiếu
Trong phƣơng pháp này chúng ta phải phân tích ảnh ở nhiều góc khác nhau, và số lƣợng các đƣờng chiếu là lớn, chi phí của thuật toán tập trung vào việc xác
86
định các đƣờng chiếu. Để nâng cao hiệu quả của thuật toán, chúng ta nên tập chung vào việc giảm chi phí tính toán trên các đƣờng chiếu đó.
Nhận thấy các đƣờng chiếu là các đƣờng song song nhau nên hệ số góc của các đƣờng chiếu này là nhƣ nhau, do vậy chúng ta chỉ cần tính một lần hệ số góc cho mỗi một lần phân tích ảnh ở góc nghiêng θ. Để tránh tính toán trên các số thực chúng tôi sử dụng các đƣờng chiếu là các đƣờng thẳng Bresenham. Với mỗi một góc nghiêng θ, chúng ta sẽ tính trƣớc các điểm trên đƣờng thẳng Bresenham. Sau đó, với mỗi đƣờng chiếu ta sẽ sử dụng lại tập điểm đã tính trƣớc.
Tuy nhiên độ chính xác phụ thuộc vào việc ảnh đó đƣợc chia làm bao nhiêu phần. Nếu chia quá nhỏ thì đối với các góc nghiêng gần nhau (chỉ cách nhau 0.2 o
hoặc 0.3 o) sẽ gần nhƣ không có sự sai khác nhau về tổng diện tích vùng trắng. Do vậy, việc xác định góc nghiêng sẽ không chính xác trong trƣờng hợp này. Để khắc phục nhƣợc điểm đó, chúng ta sẽ sử dụng phƣơng pháp này để ƣớc lƣợng nhanh một góc A, sau đó sử dụng phƣơng pháp ở mục 3.2.2, để chính xác hóa góc nghiêng của ảnh.
Tối ƣu các tham số.
Văn bản sau khi qua máy quét thƣờng tạo ra một hình ảnh bị nghiêng với góc nghiêng nằm trong khoảng [-150
, 150]. Ta sẽ tìm góc nghiêng của ảnh trong khoảng này (MINANGLE = -15, MAXANGLE = 15). Đây là một khoảng xác định phù hợp, vì nếu khoảng tìm kiếm quá lớn sẽ làm tăng thời gian xử lý, ngƣợc lại nếu khoảng quá nhỏ thì có nhiều khả năng góc nghiêng sẽ nằm ngoài khoảng. Trong trƣờng hợp góc nghiêng của hình ảnh vƣợt quá khoảng tìm kiếm thì điều đó cũng sẽ đƣợc phát hiện trong bƣớc xử lý tiếp theo (phân vùng ảnh), khi đó ta sẽ thực hiện tìm kiếm lại góc nghiêng với một khoảng tìm kiếm rộng hơn.
Độ chênh lệch trong việc chọn từng góc θ trong khoảng tìm kiếm cũng có ảnh hƣởng quan trọng đối với hiệu năng và độ chính xác. Ví dụ nhƣ nếu mỗi góc θ cách nhau một khoảng 0.1 và khoảng tìm kiếm là ±150
thì cần xét với 300 trƣờng hợp, độ chính xác của góc nghiêng thu đƣợc là ±0.10. Việc tính hàm ƣớc lƣợng đối
87
với tất cả các góc nghiêng có thể nhƣ vậy là không cần thiết, thay vào đó chúng tôi sử dụng khoảng cách 20
để ƣớc lƣợng ở bƣớc đầu tiên. Sau đó dựa vào kết quả thu đƣợc, chúng tôi thu hẹp khoảng tìm kiếm và khoảng cách giữa các góc cần ƣớc lƣợng để đạt đƣợc độ chính xác cao hơn. Thực nghiệm cho thấy trong bƣớc đầu tiên, nếu lấy khoảng cách là 10
hoặc 20 không làm thay đổi độ chính xác của thuật toán.
Để tăng cƣờng hơn nữa hiệu quả tính toán, trong bƣớc đầu tiên khi độ chính xác là nhỏ, do đó không cần phải sử dụng ảnh lớn và chi tiết. Chúng tôi sử dụng ảnh cỡ khoảng 50DPI (thu nhỏ từ ảnh ban đầu) cho bƣớc sử dụng thuật toán 3.2.3, còn trong các bƣớc tiếp theo (thuật toán 3.2.2) thì sử dụng ảnh gốc để đảm bảo độ chính xác.
88
3.3.2.2.Thuật toán sử dụng đƣờng thẳng dày.
Để xác định góc nghiêng của biểu mẫu, chúng ta có thể thiết kế them trên biểu mẫu một “đường thẳng dày”. Đó là một đƣờng thẳng song song với mép trên của phiếu và có một độ dày nhất định để tránh đƣờng thẳng bị mất nét. Chúng ta sẽ nhận dạng đƣờng thẳng này và độ nghiêng của nó dựa trên thuật toán Hough.
Một vấn đề dễ nhận thấy là thuật toán Hough chỉ tìm những đƣờng thẳng mảnh (có độ dày 1 điểm ảnh). Do vậy nếu áp dụng ngay thuật toán Hough thì sẽ đi đến kết quả không nhƣ mong muốn, vì thuật toán này sẽ tìm đƣợc rất nhiều đƣờng thẳng trên đƣờng thẳng dày này với các độ nghiêng không giống nhau.
Để áp dụng đƣợc thuật toán Hough, chúng ta quan niệm đƣờng thẳng dày là tập hợp các đƣờng thẳng mảnh song song và kề cận nhau hợp thành. Thay vì nhận dạng đƣờng thẳng dày, chúng ta sẽ nhận dạng tập hợp các đƣờng thẳng đó.
Trƣớc tiên, ta có một phát biểu sau: trong vùng của đường thẳng dày, xét tất cả tập hợp của các đường thẳng mảnh song song với nhau và có độ dài bằng độ dài đường thẳng dày, khi đó tập hợp mà có các đường thẳng song song với đường thẳng dày sẽ có số lượng các đường thẳng là lớn nhất.
Ta có thể chứng minh phát biểu này một cách đơn giản nhƣ sau:
Giả sử đƣờng thẳng dày có độ dày là a và độ dài là b, ta dễ dàng nhận ra một tập hợp bao gồm a đƣờng thẳng mảnh song song nhau có độ dài b và song song với đƣờng thẳng dày, tập hợp các đƣờng thẳng này cũng tạo nên đƣờng thẳng dày. Ta sẽ chứng minh tập hợp này có số lƣợng đƣờng thẳng là lớn nhất.
Giả sử có một tập hợp khác bao gồm a’ đƣờng thẳng song song nhau có độ dài b với a’ > a. Khi đó tổng diện tích các đƣờng thẳng trong tập hợp đó là a’.b > a.b là diện tích của đƣờng thẳng dày. Điều này vô lý.
89
Từ đó, chúng tôi đề xuất phƣơng pháp nhận đƣờng thẳng dày nhƣ sau: - Tìm tất cả các đƣờng thẳng trên ảnh phiếu có ngƣỡng lớn hơn hoặc bằng ngƣỡng của đƣờng thẳng dày.
- Xác định tập hợp các đƣờng thẳng song song (cùng nghiêng một góc giống nhau) và kề nhau trong các đƣờng thẳng trên.
- Trong các tập hợp trên, tìm tập hợp có số lƣợng đƣờng thẳng là lớn nhất. Đó chính là tập hợp tạo nên đƣờng thẳng dày.
Qua thực nghiệm, ngƣỡng của đƣờng thẳng dày nên chọn bằng 0.9 độ dài thực tế của đƣờng thẳng vì lý do chất lƣợng của ảnh. Thực tế cho thấy tìm đƣờng thẳng dày bằng phƣơng pháp này cho độ chính xác rất cao cả về vị trí và góc nghiêng của đƣờng thẳng, đạt 99%.
Chỉnh độ nghiêng
Sau khi tìm đƣợc góc nghiêng của đƣờng thẳng dày, ta đến bƣớc điều chỉnh lại ảnh. Trong bƣớc này ta chỉ thuần túy áp dụng phép quay nhƣ đã nói ở mục 2.4.4. Ta cần xét đến trƣờng hợp, khi đƣa phiếu vào quét, giấy bị lộn ngƣợc chiều, tức là đƣờng thẳng dày sẽ đƣợc tìm thấy ở gần mép dƣới của ảnh. Để nhận biết đƣợc trƣờng hợp này, ta có thể kiểm tra xem vị trí của đƣờng thẳng dày ở nửa trên hay nửa dƣới của ảnh. Nếu đƣờng thẳng dày ở nửa trên của ảnh, ta quay ảnh với góc nghiêng của đƣờng thẳng dày. Trong trƣờng hợp ngƣợc lại, ta quay ảnh một góc bằng góc nghiêng của đƣờng thẳng dày cộng với .
Sau khi quay ảnh, ta phải tính lại vị trí của đƣờng thẳng dày (khoảng cách từ mép trên của ảnh đến đƣờng thẳng), điều này quan trọng vì nó liên quan đến bƣớc nhận dạng khung.
90
a. Trƣớc khi xoay b. Sau khi xoay
Hình 3.27. Ảnh trước và sau khi xoay đúng chiều
Đối với trƣờng hợp phiếu trả lời đƣợc quét đúng chiều, khoảng cách mới r’ đƣợc tính nhƣ sau: r’ = ( height – height.sin – width.cos ) / 2 + r
Trong đó width và height là độ rộng và chiều cao của ảnh. là góc giữa
véc tơ pháp tuyến của đƣờng thẳng dày với trục Ox. r là khoảng cách của đƣờng thẳng dày tới gốc tọa độ khi chƣa xoay.
a. Trước khi xoay b. Sau khi xoay
91
Trong trƣờng hợp ảnh bị quét ngƣợc chiều, r’ đƣợc tính theo công thức sau: r’ = ( height + height.sin + width.cos ) / 2 – r
3.4 Thực nghiệm
3.4.1 Môi trƣờng thực nghiệm
Chúng tôi đã tiến hành thực nghiệm với 55 biểu mẫu khác nhau tại Phòng Nhận dạng và Công nghệ tri thức, Viện Công nghệ thông tin. Các biểu mẫu đƣợc in trên máy in Canon với độ phân giải 600dpi, khổ giấy A4. Các mẫu đƣợc quét bằng máy quét Canon với các độ phân giải khác nhau là 150 dpi, 200 dpi, 250 dpi, 300 dpi và 600 dpi. Các thí nghiệm đƣợc tiến hành trên máy tính Pentium 4 3.1GHz, 1G Ram, hệ điều hành Window XP pro. Chi tiết thực nghiệm nhƣ sau :
3.4.2 Thực nghiệm đối với các thuật toán cơ bản trên biểu mẫu động 3.4.2.1.Thực nghiệm tách chữ viết tay khỏi khung điền. 3.4.2.1.Thực nghiệm tách chữ viết tay khỏi khung điền.
3.2.1.1 Sử dụng phép toán gán nhãn
150dpi 200dpi 250dpi 300dpi 600dpi
Thời gian (s) 0.1 0.15 0.21 0.35 1.5 Tỉ lệ đúng (%) 95% 97% 98% 100% 100%
Bảng 3.3: Kết quả thực nghiệm tách chữ ra khỏi khung điền bằng phép toán gán nhãn
3.2.1.2 Sử dụng các phép toán hình thái
92
150dpi 200dpi 250dpi 300dpi 600dpi
Thời gian (s) 0.09 0.14 0.18 0.31 1.2 Tỉ lệ đúng (%) 20% 31% 50% 58% 70%
Bảng 3.4: Kết quả thực nghiệm tách chữ ra khỏi khung điền bằng các phép toán hình thái
Nhận xét : Thông qua quá trình thực nghiệm, việc tách chữ viết tay ra khỏi khung điền thông tin cho kết quả tốt nhất khi thực hiện phép toán gán nhãn. Các phép toán hình thái chỉ cho kết quả tốt khi ảnh quét vào có độ phân giải lớn hơn 250 dpi và nét chữ viết tay lớn hơn nhiều so với độ lớn của từng điểm trong cấu trúc điểm nhỏ. Bởi vậy, chúng tôi chọn phép toán gán nhãn cho việc tách chữ viết tay ra khỏi khung điền.
3.4.2.2.Thực nghiệm xác định vị trí các khung điền thông tin
150dpi 200dpi 250dpi 300dpi 600dpi
Thời gian (s) 0.07 0.09 0.12 0.26 0.8 Tỉ lệ đúng (%) 100% 100% 100% 100% 100%
Bảng3.5: Kết quả thực nghiệm xác định vị trí các khung điền
Nhận xét: Sau khi chỉnh nghiêng chính xác thì việc xác định vị trí của các khung điền qua phép chiếu là rất chính xác thông qua phép chiếu.
93
3.4.2.3.Thực nghiệm xác định cấu trúc điểm nhỏ trong từng khung
150dpi 200dpi 250dpi 300dpi 600dpi
Tỉ lệ đúng (%) 30% 70% 82% 96% 99%
Bảng 3.6: Kết quả thực nghiệm xác định cấu trúc điểm nhỏ
Nhận xét:
- Thời gian nhận dạng là không đáng kể.
- Nếu ảnh chỉnh nghiêng không tốt sẽ ảnh hƣởng nhiều đến kết quả nhận dạng cấu trúc điểm nhỏ.
- Đối với các biểu mẫu đƣợc nhân bản thông qua máy photocopy, thì các điểm ảnh có thể bị nhòe, gây ảnh hƣởng đến kết quả nhận dạng. Bởi vậy chúng tôi khuyến cáo ngƣời sử dụng nên sử dụng các mẫu biểu mẫu đƣợc in trực tiếp.
3.4.3 Thực nghiệm đối với các thuật toán khác
3.4.3.1.Xác định góc nghiêng của ảnh theo phƣơng pháp chiếu
Thực nghiệm về xác định góc nghiêng của ảnh đƣợc cài đặt theo phƣơng pháp phép chiếu trên 60 ảnh, với 300 góc nghiêng khác nhau cho mỗi một ảnh đƣợc nêu trong mục 4.2, tổng số ảnh thử nghiệm là 800 ảnh.
94
Góc thực Kết quả trên ảnh 150 DPI (0
) Kết quả trên ảnh 300 DPI (0
) 5.1 5.1 5.1 5.2 5.2 5.2 5.3 5.2 5.3 5.4 5.4 5.4 5.5 5.5 5.5 5.6 5.6 5.6 5.7 5.7 5.7 5.8 5.8 5.8 5.9 5.9 5.9 6 6 6
Bảng 3.7. Kết quả thực nghiệm xác định góc nghiêng với một số góc tiêu biểu
Qua kết quả thực nghiệm trên ta thấy với những ảnh bé, góc nghiêng xác định đƣợc chỉ có thể đạt đƣợc độ chính xác là ±0.30
đến ±0.20. Với những ảnh lớn thì độ chính xác cao hơn rất nhiều. Ảnh càng lớn thì các đƣờng này càng chuẩn hơn và càng cho kết quả chính xác hơn. Kiểm thử hiệu năng với ảnh 100 DPI, 150 DPI, 200 DPI, 300 DPI, kết quả thu đƣợc trong bảng 3.8 :
DPI Phƣơng pháp phép chiếu (ms)
Phƣơng pháp phép chiếu đã tối ƣu các tham số (ms)
100 225.36 90.33
150 503.60 120.42
200 895.61 200.67
300 2003.2 350.73
95
3.4.3.2.Thực nghiệm nhận dạng đƣờng thẳng dày
Với đƣờng thẳng dày có độ dài 15 cm, độ dày 4 pt, ngƣỡng xác định độ dài là 9/10 độ dài thực tế, ngƣỡng nghiêng là 20, ta có kết quả thực nghiệm:
- Thời gian nhận dạng: 0.03 s
96
Kết luận
Bài toán nhập liệu tự động từ biểu mẫu tài liệu sẽ gồm các vấn đề: quản trị biểu mẫu, nhận dạng các vùng dữ liệu (bài toán phát hiện và phân vùng dữ liệu), nhận dạng chữ viết tay trên các vùng dữ liệu, xử lý từ vựng và ghi nhận vào cơ sở dữ liệu. Trong khuôn khổ của mình, luận văn đã đi vào nghiên cứu quá trình tiền xử lý ảnh, phân vùng ảnh.
Trong quá trình nghiên cứu rất nhiều dạng biểu mẫu văn bản khác nhau,