B ước tiền x ử lý được thực hiện ở giai đoạn này n h à m làm tốt ảnh vă n bản đầu vầo. C ác chức n ă n g cơ bản trong khối này là: P h ân ngưỡng, căn chỉnh độ lệch trang văn bản, lọc nhiễu, nối nét đứt trên ảnh.
Nguyễn Thị Thanh Tân Trang - 65 - Luận văn thạc sĩ
1. Căn chỉnh độ lệch tran g văn bản
N h ư đã đề cập, việc hiệu chỉnh độ lệch trang văn bản g ồ m hai thao tác cơ bản đó là p h á t hiện góc n g h iê n g của trang văn bản và xoay lại văn bản cho th ả n g (góc nơhiêng c ủ a văn bản bằn g 0°). Để phát tính góc n g h iê n g của trang văn bản, ở đây ch ú n g tôi sử dụng thuật toán biến đổi H o ug h. Ý tư ở n g c ơ bản của p h ư ơ n g ph áp này là dựa v ào thuật toán biến dổi H ou gh, ta xác định m ộ t đ ư ờ n g thẳng dài nhất trên tranơ văn bản. Đ ư ờ n g th ẳ n g này chính là thành p h ầ n định h ư ớ n g của văn bản. T ro n g thực tế, đ ườ n g th ẳn g này th ư ờ n g k h ô n g liên tục v à ta coi đư ờ n g th ẳ n g dài nh ấ t trong văn bản là đ ư ờ n g thẳn g tập trun g n hiều điểm ảnh nhất (điểm đen). Quá trình thực hiện cụ thể n h ư sau:
T ất cả các đ ườ n g th ẳn g đi qua m ọi đ iểm (x,y) tro n g m ộ t ảnh đều có dạng:
y = mx + c, với các giá trị m v à c khác nhau. B iểu th ứ c này c ũ n g có thể viế t dưới
d ạ n g c = - m x + y , tr o n g đ ó X v à y là các h à n g số, c v à m là các b iế n .
K hi đó m ỗi điểm tro n g k h ô n g gian (x,y) sẽ tư ơ n g ứ n g với m ộ t đường th ẳ n g trong k h ôn g gian (m,c).
■ V ới bất kỳ đư ờ n g th ẳ n g nào đi qu a đ iể m (x,y) đều tư ơ n g ứng với m ộ t điểm trong k h ô ng gian (m ,c) v à tất cả các đ ư ờ n g th ẳ n g đi q u a m ộ t điểm ảnh trong k h ô n g gian (x,y) sẽ tạo nên m ột đ ư ờ n g th ẳ n g tư ơ n g ứ n g trong k h ô n g gian (m,c).
■ G iao điểm của hai đ ư ờ n g th ẳng đ ư ợ c tạo ra tro n g k h ô n g gian (m,c) sẽ tương ứn g với đư ờ n g th ẳ n g đi q u a hai điểm ảnh tro n g k h ô n g gian (x,y).
■ N ế u n điểm trong k h ô n g gian (x,y) c ù n g n ằ m trên m ộ t đư ờ ng thẳng , thì n
đư ờ n g thẳng tươ ng ứ n g trong k h ô n g gian (m ,c) sẽ cắt n h a u tại m ộ t điểm mà tư ơ n g ứ n g với đ ư ờ n g th ẳ n g đó tro n g k h ô n g gian (x,y).
T ừ đó, ta x ác định đ ư ờ n g thẳng n h ư sau:
■ Ta coi k h ô ng gian (m ,c) là m ộ t m ả n g hai chiều.
■ Tât cả các p h â n tử c ủ a m ả n g này đều đ ư ợ c khởi tạo b ằ n g 0.
Nguyễn Thị Thanh Tân Trang - 66 - Luận văn thạc sĩ
■ Đổi với m ỗi điểm ảnh den (x,y), ta thêm 1 vào phần tử (m ,c) của m ản g sao cho thoả mãn: y = mx + c .
■ Tìm các giá trị lớn trong mảng, mỗi giá trị lớn tương ứng với m ột đường thẳng.
Đ ể dễ tính toán hơn, ta chuyển p hư ơ n g trình của đường thẳng về dạng:
R = X * cos(ớ) + y * sin(<9) thay vì y = mx + c
M ỗi cặp (9, R) xác định m ột đường thẳng trong không gian (x,y). B iến 0 xác định góc n g hiên g của đ ườ n g thẳng. Với mỗi góc 0 cho trước, biến R xác định khoảng cách giữa điểm (0,0) v à đường thẳng đi qua (x,y) với góc ngh iên g 9.
T h u ậ t toán được m ô tả cụ thể hơn nh ư sau:
INPUT:
Ảnh văn bản cần nhận dạng OUTPUT:
Độ nghiêng của trang văn bản PROCESS:
B ư ớ c 1:
Tạo mảng lưu trữ, đường thẳng dài nhất trong ảnh là đường chéo:
allocate AccArray[-45..45 step 0.5, O..image_điagonal_length] B ư ớ c 2:
Duyệt tất cả các pixel trên ảnh. Với mỗi điểm ảnh (không phải điểm nền) (x,y), thực hiện các bước sau:
2.1) for 9 = -45° to 45° step 0.5;
2.2) r = x*cos(9*PI/360) + y*sin(e*PI/360); 2.3) if r > 0 then AccArray[9, round(r)]++;
B ư ớ c 3:
Tìm kiếm các giá trị lớn nhất trong mảng AccAưay (góc 9 tương ứng là góc của đường thăng chúng ta đang tìm kiếm)
B ư ớ c 4: return 9
Thuật toán 3-1: Thuật toán xác định góc nghiêng trang văn bản
Nguyễn Thị Thanh Tân Trang - 67 - Luận văn thạc sĩ
Vì mỗi ảnh được tạo thành từ các pixel, m à các pixel có toạ độ dư ơ n g nên ta có thể xem xét R với các giá trị dương. Giá trị lớn nhất của R có thể là độ dài của đường chéo. N h ư vậy, không gian giá trị R sẽ là các giá trị dư ơ n g giữa 0 v à chiều dài đườ ng chéo của ảnh. C húng ta có thể bỏ qua các giá trị âm (n h ữ n g đ ư ờ n g thẳng nằm trên điểm (0,0)) bởi vì dù sao thì chúng cũng chỉ đi qua m ột góc của ảnh.
G óc ngh iên g của văn bản thườ ng nằm tro ng khoảng từ -45° đến 45° (nếu m ột trang văn bản m à nghiêng quá 45° thì có thể coi là nằm ngang). N h ư vậy k h o ản g góc có thể chia th ành 180 phần với độ chính xác là 0.5°. D o đó, góc 9 chỉ có thể nằng trong khoảng từ -45° đến -45° với mỗi bước tăng là 0.5°.
Việc tìm k iếm các giá trị lớn nhất trong m ảng nhằm đảm bảo rằng trang ảnh chúng ta đang xét k h ô n g phải là trang trắng (ở đây chọn tối thiểu là 10 giá trị, n h ư vậy một văn bản ph ải có ít nhất là 10 dòng, tư ơ n g ứn g với ít nhất là 10 giá trị có thể có).
Với m ột d ò ng các kí tự trong ảnh, sẽ có rất nhiều đường th ẳn g có k hả n ă n g được lựa chọn. V ậy thì đườ ng thẳng nào là đường th ẳng xác định hư ớ n g của v ăn bản? C húng ta cũng k h ô n g thể nói rằng ảnh cần phải được tiền xử lý trước khi cung cấp cho thuật toán. M ộ t ý tưởng đã được đề xuất trong [10] là thay thế tất cả vùng liê n thông
( l i ê n t h ô n g b ổ n ) được tạo bởi các điểm đen bằng m ộ t điểm đã đượ c lự a chọn trước.
Có nhiều giải ph áp để lựa chọn điểm này, cách đơn giản nhất là chọn các điểm có toạ độ y là n h ỏ nhất (nếu có nhiều hơn m ộ t điểm có toạ độ y là nhỏ nhất thì lựa chọn điểm có toạ độ X là nhỏ nhất), cách lựa chọn này có nhược đ iểm là đối với các góc nghiêng lớn thì các điểm đại diện cho m ột dòng văn bản có thể sẽ k h ôn g thực sự thẳng hàng. N goài ra, có thể chọn điểm trọng tâm của vùng liê n thông (toạ độ
đ iể m tr ọ n g tâ m c ủ a vùng liên thông đ ư ợ c tín h b ằ n g tr u n g b ìn h c á c t o ạ đ ộ X v à y lớ n
nhất và nhỏ n h ấ t của các điểm tron g ảnh).
M ột vù ng liên thông tương đư ơ ng với m ộ t kí tự của văn bản. D o các đ iểm ảnh kết quả trên m ộ t d ò ng có thể kh ông được sắp thẳng hàng m ột cách tuyệt đổi trên m ột đư ờ ng thăng (do quá trình quét có thê làm biên dạng ảnh). N h ư vậy, việc tính đên
Nguyễn Thị Thanh Tân Trang - 68 - Luận vãn thạc sĩ
các điểm ảnh láng giềng xung q u an h điểm ảnh được lựa chọn trong m ộ t vùng liên th ông sẽ hiệu quà hơn.
Sau khi đã xác định được độ n g h iêng c ủ a tran g văn bản, cần phải xoay lại trang văn bản cho thẳng (góc nghiêng của trang văn bản bằng 0). T hu ật toán xoay ảnh ở đây được thực hiện đơn giản bằng cách c h u y ển từ toạ độ ảnh sang toạ độ cực, sau đó tiến hàn h x o a y ảnh đi m ột góc 0 (góc n g h iê n g của trang văn bản đã đượ c xác định, 0 đ ư ợ c tính theo đơn vị radians) x u n g qu anh tâm của ảnh. T h u ậ t toán xoay lại trang văn bản đươ c thực hiện như sau:
INPUT:
Ảnh của trang văn bản cần nhận dạng (ảnh bị nghiêng). Góc nghiêng của trang ảnh 0 (theo radian).
OUTPUT:
Ảnh đã được xoay đi một góc 9 (ảnh không bị nghiêng). PROCESS:
1) newwidth = abs((oldwidth*cos(0))) + abs((oldheight*sin(9)));
2 ) n e w h e ig h t = a b s ((-o ld w id th *s in (9 ))) + a b s ((o ld h e ig h t*c o s (9 )));
3)
for y = 0 to ncwheight for X = 0 to ne w w idth{
3.1) new_x = (x - haIfnewwidth)*cos(9) + (y-halfnewheight)*sin(0); 3.2) new_y = ( -((x - halfnewwidth)*sin(9)) + (y - halfnewheight)*cos(9)); 3.3) new_x = new_x + halfoldwidth; //xuất phát từ tâm của ảnh
3.4) new_y = new_y + halfoldheight; 3.5) if(get_pixel_value(oldImage, ny, nx)==l) s e tjp ix e l_ v a lu e (n e w lm a g e , y, X, 1) else set_pixel_value(newlmage, y, X, 0); } 4) return nevvlmage
Thuật toán 3-2: Thuật toán xoay ảnh
Nguyễn T hị Thanh Tân T ra n g - 6 9 - Luận văn thạc sĩ
Kết quả thực nghiệm của quá trình căn chỉnh độ lệch tran g văn bản đ ư ợ c thể hiện trên Hình 3.2
The statistical method oJ linear model. Each colli components. The first te
causes can be either CO]
are termed “factors” in ways assume that the fa<
a) Ả n h đầu vào bị nghiêng
The statistical method of ; linear model. Each collec components. The first ten causes can be either cont are termed “factors” in th ways assume that the fact(
b) Ả n h sau khi đ ư ợ c căn chình độ lệch
Hình 3.2: Ảnh đầu vào và đầu ra của thuật toán căn chỉnh độ lệch trang văn bản
2. L ọc nhiễu
Hai loại nhiễu th ư ờ n g gặp trong nh ận dạn g ảnh nói c h u n g v à n h ậ n d ạ n g ch ữ nói riêng là n hiễu đóm và nhiễu vạch (thể hiện trên Hình 3.3)
a) Ảnh nhiễu vạch
•* /V /
b) Anh nhiêu đôm
Hình 3.3: Kiếu nhiễu đốm và nhiễu vạch thường gặp trong nhận dạng
Đ ể k h ử nhiễu, ở đây chúng tôi đã cài đặt cả hai p h ư ơ n g pháp: p h ư ơ n g p h á p lọc tru ng vị (m e d ia n filter) kết hợp với p h ư ơ n g p h á p k h ử m iền liên th ô n g nhỏ. P h ư ơ n g ph áp lọc tru n g vị thích hợp để k h ử các n h iễ u đ ốm . T u y n h iên , với các n hiễu vệt đen
Nguvễn T hị Thanh Tân Trang - 70 - Luận văn thạc sĩ
(hoặc các nhiễu có kích thước lớn) thì các ph ư ơ n g pháp lọc này k h ô n g hiệu quả, trong trư ờ n g hợp này chúng tôi sử dụng phư ơ ng pháp k hử các v ùn g liên thông nhỏ. Ý tư ở n g chính của p hươ ng pháp này n hư sau:
■ X ác định tất cả các vùng liên thông trên ảnh.
■ V ới m ỗi v ù ng liên thông nhỏ (có kích thước < ng ư ỡ n g 0), kiểm tra xem đó có phải là nhiêu hay không (với giới hạn đâu vào của hệ thống là các văn bản chữ viết tay không dấu, m ột vùng liên thông sẽ được coi là nhiễu nếu đó kh ông phải là dấu của chừ ỉ, dấu chấm câu , dấu phẩy )? N ếu đúng, tiến hành x óa các vùng liên th ông này.
3. P h â n ngưchng: Chức năng này có nhiệm vụ chuyển ảnh đa cấp x ám (ảnh grey, ảnh m ầu) về ảnh nhị phân (ảnh đen trắng). P hư ơ ng pháp phân n g ư ỡ n g được cài đặt ở đây là phươ ng pháp sử dụng hàm phân ngưỡng:
T ro n g đó, I(x,y) là giá trị điểm ảnh tại vị trí (x,y) của ảnh nguồn, F ( x >y) là giá trị đ iể m ảnh tương ứng của ảnh đích, T là m ột ngưỡng, giá trị của ng ư ỡ n g này có thể ch ọn cố định trước hoặc tuỳ chọn theo từng v ù n g ảnh đang xét (trường hợp đơn giản nhất, chọn T = 0).
4. N ối nét đ ứ t trên ảnh: ph ư ơ n g ph áp thực hiên ở đây là sử d ụn g các phép toán hình thái dilation (làm béo) và erosion (làm gầy).