.16 Ảnh nhị phân và gán nhãn cho các thành phần liên kết

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu trích chọn đặc trưng ứng dụng cho tìm kiếm từ trong ảnh tài liệu (Trang 47)

Giả sử rằng B là một ảnh nhị phân với MaxRow+1 hàng và MaxCol+1 cột. Chúng ta muốn tìm những thành phần liên kết trên 1 điểm ảnh và một ảnh đầu ra có đã gán nhãn. Có nhiều thuật toán khác nhau để thao tác với thành phần liên thông. Nhưng trong luận văn này được dùng là thuật toán đánh nhãn theo từng dòng (Row- by-row Labeling Algorithm ) sử dụng cấu trúc Union-Find. Mục đích sử dụng cấu trúc Union – Find là lưu một tập các tập rời rạc và thực hiện các thao tác Union ( gộp hai tập thành một ) và thủ tục Find ( xác định một thành phần nào đó có thuộc bên trong một tập hay không).

Nhìn một cách tổng quan, giải pháp có sử dụng Union-Find này cũng trải qua 2 lần duyệt ảnh nên nó thuộc nhóm các thuật giải CCL(Connected Component Labeling) 2 pass. Tuy nhiên việc ứng dụng Union Find đã giải quyết vấn đề tối ưu cấu trúc dữ liệu, giúp làm tăng đáng kể tốc độ xử lí, thoát ra khỏi những hướng đi cũ. Không giống như phương pháp đã trình bày, thuật toán này không tiến hành đánh nhãn ngay trong bước 1 mà chỉ thực hiện việc xây dựng cây để kết nối các nốt (mỗi điểm ảnh của từ (Foreground pixel ) là một nốt với một nhãn được khởi tạo tăng dần ban đầu). Kết quả cuối cùng thu được của lần duyệt hình đầu tiên (Union) là một cây duy nhất thể hiện mối liên kết giữa các nhãn, các cặp nhãn tương thích như đã đề cập ở bài viết trước sẽ có quan hệ nốt cha và con. Bước 2 (Find) sẽ tiến hành việc đánh nhãn dựa trên kết quả thu về từ bước 1. Do điểm đặc biệt làm nên hiệu quả của Union-Find chính là ở cấu trúc dữ liệu nó sử dụng nên đôi khi người ta còn đánh đồng giải thuật này là cấu trúc Union-Find (Union-Find structures). Trong thực hành, cấu trúc này thường được biểu diễn dựa trên một mảng 1 chiều kí hiệu là

PARENT, trong đó chỉ mục (index) của mảng lần lượt đại diện cho các nốt có nhãn tương ứng, giá trị của phần tử tại từng chỉ mục thể hiện nhãn nốt cha của nốt có nhãn là chỉ mục đó. Trong trường hợp giá trị bằng chỉ mục (hay 0), có nghĩa là nốt được đại diện bởi giá trị chỉ mục đó là nốt gốc (root: không có cha). Để làm chi tiết thêm những gì đã trình bày chúng ta sẽ cùng nhau từng bước xử lý một ví dụ như sau. Cho hình nhị phân và ma trận nhãn của điểm ảnh của từ (Foreground pixel ) đã được khởi tạo tăng dần như là minh họa dưới đây (bên trái là ảnh nhị phân, bên phải là ma trận nhãn đã được khởi tạo)

Hình 2.17 Nhị phân và ma trận nhãn của điểm ảnh nổi (Foreground pixel ) được khởi tạo tăng dần

Ma trận nhãn sẽ được duyệt theo chiều từ trên xuống và trái sang phải. Với những cặp nhãn tương thích, nhãn nhỏ hơn sẽ là cha và nhãn lớn hơn sẽ là node con. Chúng ta sẽ có cấu trúc Union-Find thể hiện qua mảng PARENT như sau:

Hình 2.18 Cấu trúc Union-Find thể hiện qua mảng PARENT

Như vậy về mặt thực hành mảng PARENT ở trên chính là kết quả của quá trình duyệt ảnh (mảng label) lần thứ nhất với tiến trình Union. 1-2, 1-3, 1-4, 1-5, 5- 7, 5-6 là những cặp nhãn tương thích được tìm thấy trong quá trình duyệt. Trước khi tiến hành lần duyệt thứ hai để đánh nhãn chính xác cho từng điểm ảnh, tiến trình Find cho từng nhãn cần được thực hiện để xác định đâu là cha thực sự của các nốt

là cha của 7 chứ không phải 5. Quá trình này bắt đầu từ xét giá trị PARENT[7], ta thấy PARENT[7] = 5 có nghĩa là nốt cha của 7 có nhãn là 5, ta xét tiếp PARENT[5], ta thấy PARENT[5] = 1 có nghĩa là nốt cha của 5 có nhãn là 1, ta xét tiếp PARENT[1], ta thấy PARENT[1] = 1 có nghĩa là 1 là nốt gốc, quá trình xét ngưng vì đã tìm ra 1 mới chính là cha thực sự cần tìm của 7. Sau khi áp dụng Find cho toàn bộ nốt ta có PARENT như sau:

Hình 2.19 Áp dụng Find cho toàn bộ nốt ta có PARENT

Lúc này tiến trình quét ảnh lần hai chỉ làm một nhiệm vụ hết sức đơn giản là đánh nhãn lại cho từng điểm ảnh bằng cách gán giá trị nhãn củ L = PARENT[L].

Lưu ý thành phần 0 trong mảng PARENT không được sử dụng vì giá trị 0 là nhã biểu diễn cho điểm ảnh nền ( Background Pixel ).

Thủ tục Find là một nhã X và mảng PARENT, thủ tục này duyệt ngược từ nhãn X trong cây để tìm xem nhãn gốc của cây mà X nằm trong đó.

*Giải thuật Find:

Tính nhãn cha của một tập

X là một nhãn bất kỳ trong một tập

PARENT là mảng chứa cấu trúc Union-Find

procedure find(X,PARENT) { j:= X; while PARENT[j]!= 0 j:= PARENT[j]; return j; }

Thủ tục Union là hai nhãn X,Y và mảng PARENT. Thủ tục này sẽ gộp tập chứa X vào trong tập chứa Y nếu cần thiết. Nó duyệt ngược bắt đầu từ nhãn X, Y đến các nhãn cha của nó, rồi đến nhãn gốc. Nếu nhãn gốc là giống nhau, nhãn gốc nãy sẽ là nhãn con của nhãn gốc kia. Thủ tục này cũng đánh dấu theo kích thước của tập để gán tập nhỏ hơn vào tập lớn hơn.

*Giải thuật Union

Xây dựng thủ tục Union giữa hai tập

X là nhãn của tập thứ nhất

Y là nhãn của tập thứ hai

PARENT là mảng chứa cấu trúc Union-Find

procedure union(X,Y,PARENT) { j:= X; k:= Y; while PARENT[j]!= 0 j:= PARENT[j]; while PARENT[k]!= 0 k:= PARENT[k]; if j!=k then PARENT[k]:=j; }

Thuật toán gán nhãn cho các thành phần liên thông gồm hai bước:

Bước thứ nhất thực hiện công việc lan truyền nhãn của một điểm ảnh đến các điểm ảnh lân cận của nó theo hướng bên phải và bên trái so với nó. Bất cứ khi nào hai nhãn khác nhau mà lan truyền đến một điểm ảnh, nhãn nhỏ hơn được lan truyền và hai sự bằng nhau giữa hai nhãn lan truyền được đẩy vào cấu trúc Union-Find. Sau bước này các nhãn bằng nhau hoàn toàn được xác định và có nhãn duy nhất.

Bước thứ hai duyệt ảnh và gán lại nhãn cho điểm ảnh từ mảng cấu trúc Union-Find.

ảnh lân cận có giá trị 1 ở phía bên trên và bên trái của một điểm ảnh trung tâm. Còn hàm labels trả về một tập các nhãn hiện thời gán cho một tập điểm ảnh nào đó.

*Thuật toán tìm và gán nhãn cho các thành liên thông

Tìm các thành phần liên thông trong ảnh nhị phân

B là ảnh nhị phân gốc

LB là ảnh nhị phân đã được đánh nhãn cho các thành phần liên thông

procedure connected_components_labeling(B,LB) {

“Khởi tạo mảng PARENT” label:=0;

for i:=0 to MaxLab PARENT[i] :=0;

“Bước 1: Gán nhãn ban đầu đến mỗi dòng L của ảnh”

for L:=0 to MaxRow {

“Khởi tạo tất cả nhãn trên dòn L bằng 0”

for P:=0 to MaxCol LB[L,B]:=0; “Xử lý trên dòng L” for P:=0 to MaxCol { if B[L,B]==1then { A:=prior_neighbors(L,P); if isempty(A) then{ M:=label;label+=1;}; else M:=min(labels(A)); LB[L,P]:=M;

for X in labels(A) and X != M union(M,X,PARENT);

} }

}

“Bước 2: Gán lại nhãn ở bước 1”

for L:= 0 to MaxRow

for P:=0 to MaxCol

if B[L,P]==1

then LB[L,P]:=find(LB[L,P],PARENT); }

Hình 2.20 Ứng dụng thuật toán gán nhãn cho các thành phần liên thông

Nhìn trên hình 2.20 giải thích ứng dụng thuật toán tìm nhãn các thành

phần liên thông với cấu trúc Union-Find cho ảnh nhị phân hình 2.20 a) đưa ra nhãn cho mỗi điểm ảnh sau bước một và hình 2.20 b) đưa ra cấu trúc Union-Find chỉ ra những tập tương đương trong bước một là {{1,2},{3,7},4,5,6}}. hình 2.20 c) chỉ ra ảnh đã được gán nhãn lại qua bước hai. Lúc này các thành phần liên thông sẽ biểu diễn là các vùng trong ảnh và khi đó các đặc trưng về hình dạng hoặc mật độ của vùng sẽ được tính toán phục vụ cho công việc trích chọn đặc trưng.

2.3.3.3.Phân đoạn từ trong ảnh tài liệu

Sau khi có được các thành phần liên thông, chúng ta phải làm đó là tìm số từ chứa trong ảnh tài liệu. Các thành phần liên thông trong ảnh cũng có thể là nhiễu, những nhiễu này có thể tác động làm ảnh hưởng nhiều đến hình dạng của từ. Do đó, nhiễu và các dấu chấm, ngắt nghỉ câu phải được bỏ đi. Để làm điều này, chúng ta

phần nào có chiều cao nhỏ hơn 70% của CCS (CCch) được coi như là nhiễu và cần phải được loại bỏ. Theo Kavallieratou [5], chiều cao của một từ có thể gấp đôi chiều cao trung bình của các từ khác do sự xuất hiện của phần bên trên (Ascender) và phần bên dưới (Descender). Ở đây việc áp dụng lọc qua các thành phần liên thông có thể bỏ nhiễu nhưng đồng thời cũng bỏ các dấu chấm câu, dấy chấm của chữ i, dấu chấm của dấu chấm than, dấu phẩy, dấu chấm phẩy…Cũng theo Kavallieratou trong một từ các chữ cái thường cách nhau khoảng 20% của CCS (CCch). Như vậy nếu chúng ta mở rộng hình chữ nhật bao quanh thành mỗi thành phần liên thông (

Bounding Box ) theo hai hướng trái và phải 20% của CCS (CCch) thì từ tìm được tạo ra từ các thành phần liên thông của hình chữ nhật bao đè lên nhau.

Hình 2.21 Ảnh tài liệu có nhiều nhiễu

Hình 2.22 Tìm các thành phần liên thông trong ảnh tài liệu

Hình 2.24 Mở rộng kích thước hình chữ nhật bao theo hai hướng trái và phải

Hình 2.25 Xác định từ

Sau khi vùng của từ được xác định ở phần trên bằng cách sử dụng thành phần liên thông. Để đối sánh từ này với từ khác chúng ta phải lấy ra những đặc trưng quan trọng mà đại diện cho mỗi từ. Cũng giống như việc đối sánh giữa các đối tượng khác với nhau. Những đặc trưng phổ biến được sử dụng như là những đặc trưng hình học, đặc trưng về hình dạng, và đặc trưng về mật độ điểm ảnh có trong mỗi vùng.

Tập hợp những đặc trưng này tạo nên vector đặc trưng cho một từ. Công việc đối sánh các từ với nhau bây giờ trở thành công việc tính toán khoảng cách giữa các vector đặc trưng đại diện dựa theo công thức tính khoảng cách Minskowski.

Trong phần này sẽ lần lượt giới thiệu về các đặc trưng chung hay dùng để đối sánh đối tượng và sau đó sẽ đưa ra các đặc trưng đề xuất trong việc đối sánh từ trong hệ thống. Tiếp đó bài viết giới thiệu về vect or đặc trưng và đánh giá độ tương tự của từ dựa trên những vector đặc trưng đó.

2.3.3.4. Đặc trưng về vùng của đối tượng

Mỗi khi tập vùng được xác định, những đặc trưng của vùng trở thành đầu vào cho các thủ tục ở mức cao hơn để thực hiện các công việc như là nhận dạng hoặc kiểm tra đối tượng. Hầu hết các chương trình xử lý ảnh có các thao tác đưa ra một

trưng hình học như là diện tích của vùng, điểm trọng tâm, những điểm biên. Những đặc trưng về hình dạng như là đo dạng tròn và độ giãn nở. Và những đặc trưng về mật độ như là thống kê và các mức xám, hoặc các kết cấu khác nhau.

a) Diện tích của vùng

Chúng ta giả sử tập các điểm ảnh trong một vùng là R. Đặc trưng hình học đơn giản nhất là diện tích A của vùng và điểm trọng tâm (r c, ).

Diện tích của vùng được tính theo công thức:

( , ) 1    r c R A (2.3.3)

Công thức này có nghĩa là khái niệm diện tích chỉ là đếm số điểm ảnh có trong vùng R. Điểm trọng tâm của vùng được định nghĩa theo công thức:

( , ) 1    r c R r r A (2.3.4) ( , ) 1    r c R c c A (2.3.5)

Điểm trọng tâm (r c, ) do đó là vị trí trung bình của những điểm ảnh trong tập

R. Chú ý rằng mỗi cặp giá trị (r,c) là các cặp giá trị nguyên, còn (r c, ) nói chung thường không phải là cặp số nguyên.

b) Chu vi của vùng

Chiều dài chu vi P của một vùng là một đặc trưng chung phổ biến khác. Định nghĩa đơn giản về chu vi của một vùng không có lỗ là một tập các điểm ảnh biên nằm trong vùng của nó. Một điểm ảnh của một vùng là một điểm ảnh biên nếu nó có một vài điểm ảnh lân cận nằm ngoài vùng. Đối với 8 điểm lân cận được sử dụng để xác định có hay không một điểm ảnh trong vùng được liên thông với một điểm ảnh ngoài vùng. Tập kết quả của những điểm ảnh chu vi là những điểm lân cận. Còn đối với 4-điểm lân cận được dùng để xác định có hay không một điểm ảnh trong vùng được liên thông với một điểm ảnh ngoài vùng, tập kết quả của những điểm

ảnh chu vi là những điểm 8-lân cận. Ở đây đưa đến một định nghĩa về các điểm chu vi 4-lân cận P4 và các điểm chu vi 8-lân cận P8 của một vùng.

P 4 = {(r, c) R | P 8(r, c)   R# } (2.3.6)

P 8 = {(r, c) R | P 4(r, c)   R# } (2.3.7)

Để tính toán chiều dài |P| của chu vi P, những điểm ảnh trong P phải được đặt trong dãy P = <(r0, c0), …, (rK-1, cK-1)>, mỗi cặp điểm ảnh liên tiếp trong dãy là các điểm lân cận của nhau, tính cả những điểm ảnh trước và sau nó. Sau đó , chiều dài chu vi |P| được định nghĩa bởi công thức sau:

   

 | 1, 1 4 ,  2 |  1, 1    8 , 4 , 

k kk kk kk kk k

P k r c N r c k r c N r c N r c

(2.3.8) Trong đó, k+1 là được tính theo modulo của K, K là chiều dài của dãy điểm ảnh. Do đó hai điểm ảnh kề nhau theo chiều ngang hoặc dọc trong một chu vi được cộng thêm 1, trong khi đó hai điểm ảnh kề theo đường chéo được cộng thêm

21.4.

c) Độ cong của một vùng

Độ cong của một vùng được tính bằng bình phương chiều dài chu vi chia cho diện tích của vùng đó.

(2.3.9)

Ngoài ra Haralick (1974) [7] cũng đề xuất một phương pháp tính độ cong khác:

2 R R C    (2.3.10)

Trong đóR và R là phương sai và độ lệch chuẩn khoảng cách từ điểm trọng tâm của hình đến biên của hình và có thể được tính theo công thức sau:

1 0 1 ( ( , ) ( , ) ) K R k k k r c r c K       2 1 A P C

1/2 1 2 0 1 ( ( , ) ( , ) ) K R k k R k r c r c K                 (2.3.12)

Trong đó tập các điểm ảnh r ck, k, với k=0,…,K-1 nằm trên chu vi P của vùng. Hình 2.26 giải thích một vài đặc tính cơ bản trên ảnh nhị phân đã được gán nhãn có 3 vùng là hình ellipse, hình chữ nhật, và hình vuông .

Hình 2.26 Các vùng đã được gán nhãn trong ảnh tài liệu

Nhãn vùng Diện tích Điểm trọng tâm (Dòng , Cột ) Chiều dài chu vi Độ cong C1 Độ cong C2 Phương sai Độ lệch chuẩn 1 44 6 11.5 21.2 10.2 15.4 3.33 0.05 2 48 9 1.5 28 16.3 2.5 3.80 2.28 3 9 13 7 8 7.1 5.8 1.2 0.04 Hình 2.27 Các đặc trưng của 3 vùng ở hình 2.26

2.3.3.5. Hình chữ nhật bao và các điểm cực trị

Khái niệm hình chữ nhật bao (Bounding Box) là khái niệm hay dùng để chỉ ra vị trí của vùng nằm ở đâu trong ảnh. Hình chữ nhật bao là một hình chữ nhật với hai phía ngang và dọc đều bao quanh đối tượng và các điểm tận cùng bên trên, bên dưới, bên trái, bên phải của đối tượng đều nằm trên hình chữ nhật này. Hình 2.28

chúng ta nhìn thấy có nhiều nhất 8 điểm cực trị khác nhau của một vùng, các điểm cực trị này đều nằm trên hình chữ nhật bao.

Hình 2.28 Tám điểm cực trị của một vùng nằm trên Hình chữ nhật bao. Các đường chéo đứt đoạn là trục các điểm cực trị

Những điểm cực trị thường đi theo cặp điểm trái ngược nhau, ví dụ như điểm trên cùng bên trái đi cùng với điểm dưới cùng bên trái, điểm trên cùng bên phải với điểm dưới cùng bên phải. Mỗi cặp điểm cực trị trái ngược nhau tạo thành một trục.

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu trích chọn đặc trưng ứng dụng cho tìm kiếm từ trong ảnh tài liệu (Trang 47)

Tải bản đầy đủ (PDF)

(82 trang)