đặc trƣng tổng quát
Trên cơ sở các kết quả phân tích ở trên, ta xây dựng phƣơng pháp nhận biết các dạng cơ bản thể hiện bằng một bảng quyết định nhƣ sau:
- 54 –
Tâm điểm Tam phân điểm trái Tam phân điểm phải Số đếm vân trái Số đếm vân giữa Số đếm vân phải Dạng cơ bản - 0 0 0 0 0 Cung thƣờng 1 0 1 0 0 0 Cung trồi 1 1 0 0 0 0 Cung trồi 1 0 1 0 0 >=1 Quai trái 2 0 1 0 0 >=1 Quai búp trái 1 1 0 >=1 0 0 Quai phải 2 1 0 >=1 0 0 Quai búp phải 1 1 1 >=1 0 >=1 Xoáy thƣờng 2 1 1 >=1 0 >=1 Xoáy thƣờng
2 1 1 >=1 >=1 >=1 Xoáy đôi quai
3 1 2 >=1 >=1 >=1 Xoáy bất thƣờng
3 2 1 >=1 >=1 >=1 Xoáy bất thƣờng
- - - Không x/định
Bảng 4: Bảng nhận biết dạng cơ bản
2.2.6. Xây dựng sơ đồ thuật toán phân mảnh ảnh chỉ bản 10 ngón và phân loại vân tay
Để phân mảnh ảnh chỉ bản 10 ngón theo phƣơng pháp đề xuất, ta phân chia quá trình phân mảnh thành hai công đoạn: công đoạn xử lý phân mảnh thô và công đoạn phân mảnh mịn.
Mục tiêu của bƣớc xử lý thô là phân mảnh toàn ảnh chỉ bản thành các ảnh riêng rẽ của từng ngón. Với phần đầu chỉ bản lƣu thông tin nhân thân, ta cần phân mảnh vùng mã vạch để đọc tự động số căn cƣớc đối tƣợng và toàn bộ ảnh phần ghi thông tin các nhân. Với vùng giữa chỉ bản, ta cần tách 10 vân tay lăn thành 10 ảnh riêng rẽ và với phần đuôi chỉ bản, ta cần phân mảnh 4 ô vân trên chỉ bản thành 10 ô tƣơng ứng với 10 ngón vân tay ấn.
Công đoạn phân mảnh thô về thực chất đảm nhận phần đầu vào cho công đoạn phân mảnh mịn hơn và phân loại dạng cơ bản. Sau đây là sơ đồ thuật toán phân mảnh mịn và phân loại dạng cơ bản.
- 55 –
Y: Có số đếm vân >= 1;
N: Không có số đếm vân hoặc số đếm vân bằng 0; Để phân mảnh, ta tiến hành 2 bƣớc sau:
- Bước 1: Đưa vào một ảnh vân tay đã được số hóa;
- Bước 2: Xây dựng ma trận hướng:
Ảnh vân tay đƣợc chia thành các khối, sau đó ƣớc lƣợng hƣớng chủ đạo của phần đƣờng vân trong mỗi khối, và bỏ trắng nếu hƣớng không xác định đƣợc. Một quy trình khác sẽ kiểm tra hƣớng của tất cả các đƣờng vân này, và sẽ loại bỏ hoặc sửa đổi những chi tiết vụn vặt, dựa theo hƣớng của đƣờng vân thực.
- Bước 3: Phân đoạn ảnh:
Ảnh vân tay
Xây dựng ma trận hướng
Phân mảnh ảnh
Trích chọn tâm điểm, tam phân điểm và tính số đếm vân
Bảng phân loại dựa trên số tâm điểm, số tam phân điểm, số đếm vân
-,0,N
Cung thường
1,1,N
Quai trái hoặc quai phải
Quai trái Quai phải Cung trồi
Xoáy thường Xoáy đôi quai
Tam trái Số đếm vân giữa 2,2,Y Xoáy thường hoặc đôi quai
2,1,Y Tam phải Không XĐ Quai búp trái Quai búp phải Xoáy bất thường Quai búp trái hoặc búp phải Tam trái Tam phải Còn lại 1,1,Y >2,>2,Y
- 56 –
Xác định những vùng có tính định hƣớng tốt kết hợp với luật cân bằng trắng đen, từ đó tách vùng vân ra khỏi vùng nền.
- Bước 4: Làm trơn vùng ảnh:
Xử lý loại bỏ các chi tiết vụn nhƣ bẩn, đoạn quá ngắn, nét vụn, ... để làm cho các vùng ảnh có hƣớng thuần nhất.
- Bước 5: Trích chọn tâm điểm, tam phân điểm và tính số đếm vân.
Để xác định tâm điểm, tam phân điểm ta dựa trên quy tắc tính Pointcaré Index để duyệt ma trận hƣớng, tại mỗi điểm, sau khi tính cho 4 ô liền kề ta xác định các thay đổi hƣớng.
Pointcaré Index = 0o
: là đƣờng vân bình thƣờng Pointcaré Index = -180o : là tam phân điểm. Pointcaré Index = 180o : là tâm điểm đơn. Pointcaré Index = 360o : là tâm điểm kép.
Để tính đƣợc số đếm vân, ta tính trên ảnh nhị phân theo các bƣớc sau:
+ Kẻ đoạn thẳng nối tâm điểm và tam phân điểm, đoạn thẳng này sẽ cắt các dòng đƣờng vân và các dòng đƣờng rãnh, tức là đi qua các loạt giá trị 1 và 0 trên ảnh nhị phân.
+ Tính số lần thay đổi từ 1 sang 0 và 0 sang 1 để xác định số đếm vân.
- Bước 6: Dựa vào bảng quyết đi ̣nh để đưa ra các dạng cơ bản.
Nhƣ vậy, bằng cách xác định đƣợc tâm điểm, tam phân điểm và tính số đếm vân, bài toán phân loại vân tay cơ bản đã đƣợc giải quyết. Vấn đề còn lại là tiến hành cài đặt, thử nghiệm, đánh giá và cải tiến nâng cao hiệu quả.
- 57 – CHƢƠNG III
LẬP TRÌNH CÀI ĐẶT PHẦN MỀM PHÂN MẢNH ẢNH CHỈ BẢN 10 NGÓN, PHÂN LOẠI VÂN TAY TỰ ĐỘNG VÀ KIỂM
TRA VỊ TRÍ CÁC NGÓN TRÊN CHỈ BẢN
Mục tiêu của chƣơng này là cài đặt phần mềm phân mảnh ảnh chỉ bản 10 ngón, phân loại vân tay tự động theo dạng cơ bản và kiểm tra vị trí ngón trên ảnh chỉ bản theo phƣơng pháp đƣợc đề xuất ở Chƣơng 2.
3.1 LẬP TRÌNH CÀI ĐẶT THUẬT TOÁN PHÂN MẢNH, PHÂN LOẠI VÂN TAY THEO DẠNG CƠ BẢN VÀ KIỂM TRA VỊ TRÍ NGÓN
3.1.1. Phân mảnh chỉ bản 10 ngón
Cho một chỉ bản vân tay 10 ngón nhƣ Hình 2.1, để cài đặt thuật toán tự động định vị và tách từ chỉ bản vân tay 10 ngón thành 16 vùng riêng rẽ gồm: 2 vùng ảnh chứa mã vạch và phần đầu chỉ bản; 10 vùng ảnh cho 10 ngón lăn, 10 vùng cho 10 ngón ấn (gồm 2 vùng nhỏ cho 2 ngón cái phải, cái trái và 4 vùng lƣu 4 ngón chụm trái và 4 vùng cho 4 ngón chụm phải), ta phân chia quá trình xử lý theo các bƣớc xử lý nhƣ sau:
Công đoạn 1: Phân mảnh sơ bộ
Bƣớc 1: Thu nhận ảnh chỉ bản 10 ngón (mặt trƣớc); Xử lý hạ bậc độ phân giải (mỗi chiều xuống 8 lần);
Bƣớc 2: Làm trơn ảnh, chuyển đổi ảnh làm trơn về dạng nhị phân;
Bƣớc 3: Tiến hành tách vùng trên ảnh bằng phƣơng pháp phân tích thành phần liên thông hoặc véc tơ hóa đƣờng biên, sau đó dùng bộ phân loại 2 lớp để luyện và nhận biết các vùng vân tay.
Bƣớc 4: Xử lý cắt và tách ảnh vùng vân thành các ảnh vân từng ngón riêng rẽ. Đối với vùng mã vạch ở phần đầu chỉ bản cũng tách ra để làm đầu vào cho phân hệ đọc tự động số đối tƣợng.
Công đoan 2: Phân mảnh mịn hơn
Do công đoạn 1 xử lý nhanh trên ảnh chỉ bản độ phân giải đã hạ bậc nên cần công đoạn 2 để xử lý đƣờng biên vùng phân mảnh tinh hơn, mịn hơn trên độ phân giải gốc. Các bƣớc xử lý nhƣ sau:
Bƣớc 1: Tiếp nhận các kết quả phân mảnh từ công đoạn 1;
Bƣớc 2: Tính ma trận hƣớng, chuyển đổi ảnh về dạng nhị phân lần 1;
- 58 –
Bƣớc 4: Thu nhận kết quả là ảnh nhị phân chất lƣợng cao và đƣờng biên mịn hơn để chuyển cho các bƣớc xử lý tiếp theo (Trích chọn đặc điểm, đánh giá sàng lọc các đặc điểm trích chọn đƣợc và phân loại tự động).
Công đoạn 3: Đối sánh ảnh chỉ bản để kiểm tra vị trí các ngón trên chỉ bản.
Công đoạn này rất quan trọng, nếu bỏ qua công đoạn kiểm tra này thì việc đối sánh sẽ bị bỏ sót, bởi vì trƣớc khi đối sánh theo các đặc trƣng chi tiết trên các ngón tay ta đã sử dụng bộ dạng cơ bản để phân loại, nếu không may chỉ bản lập sai trật tự ngón thì bộ dạng cơ bản sẽ bị thay đổi vì vậy sẽ bỏ sót các vân tay trên chỉ bản này.
Trong cả 3 công đoạn trên, công đoạn 2 có ý nghĩa đặc biệt quan trọng.
3.1.2. Phân mảnh mịn và phân loại vân tay tự động
Nhƣ đã trình bày ở trên, vân tay thƣờng đƣợc phân chi tiết thành 7 loại cơ bản sau: Cung thƣờng (Arch), Cung trồi (Tented Arch), Quai trái (Left Loop), Quai phải (Right Loop), Xoáy thƣờng (Whorl), Xoáy đôi quai (Twin Loop) và Xoáy bất thƣờng (Acidental Whorl). Thuật toán này thực hiện việc tìm các tiêu điểm (tâm điểm và tam phân điểm) của ảnh vân tay, sau đó phân loại dựa trên số lƣợng và vị trí của những điểm này. Việc phân loại này sẽ không thay đổi khi quay, dịch hoặc thay đổi tỷ lệ của ảnh.
Thuật toán phân loại này gồm ba bƣớc chính: - Tính hƣớng của điểm trên ảnh;
- Tìm tiêu điểm trên ảnh đã đƣợc tính hƣớng; - Phân loại ảnh dựa trên bảng quyết định.
Mỗi bƣớc của thuật toán sẽ đƣợc trình bày chi tiết trong các phần sau đây.
Thuật toán tính ma trận hướng
Phƣơng pháp tính hƣớng vân của từng pixel trên ảnh vân tay đã đƣợc nhiều tác giả đề cập [15 ], [17], [22], [25], ở đây ta sẽ trình bày một thuật toán tính hƣớng nhƣ sau:
Phƣơng pháp tính ma trận hƣớng vân của ảnh vân tay đầu vào đƣợc thực hiện bằng cách tính hƣớng tại mỗi điểm trên ảnh. Để tính đƣợc hƣớng tại mỗi điểm trên ảnh ta sử dụng một mặt nạ 9 x 9 với điểm chính giữa của mặt nạ chính là điểm đang xét. Ta tính tổng giá trị mức xám của các điểm trong tám hƣớng (vị trí các hƣớng đƣợc đánh số từ 0 đến 7) và lƣu lại thành tám tổng s0, s1, ..., s7. Ví dụ, giá trị mức xám của ảnh tại điểm (i,j) đƣợc biểu hiện bằng I(i,j) thì tổng s1 tại điểm (i,j) đƣợc tính nhƣ sau:
s1 = I(i-2,j-4) + I(i-1,j-2) + I(i+1,j+2) + I(i+2,j+4)
Việc tính toán tƣơng tự cũng đƣợc thực hiện với các tổng còn lại. Việc tính đƣợc 8 tổng từ s0 đến s7 cũng tƣơng đƣơng với việc tính tích chập với tám mặt nạ 9x9 m0, m1,
- 59 –
…, m7. Mặt nạ mi sẽ có giá trị 1 tại vị trí mà mặt nạ đƣợc chỉ ra ở hình dƣới đây có giá trị i, còn các vị trí còn lại có giá trị 0. 6 5 4 3 2 7 6 5 4 3 2 1 7 1 0 0 (i,j) 0 0 1 7 1 2 3 4 5 6 7 2 3 4 5 6 Đặt 0 p,q7 trong đó 7 ,..., 0 min i i p s s 7 ,..., 0 max i i q s s
Hƣớng của mỗi pixel trên ảnh đƣợc định nghĩa là hƣớng p nếu pixel đó nằm trên một đƣờng vân (vùng tối) và là hƣớng q nếu pixel đó nằm trên một đƣờng rãnh (vùng sáng). Nếu giá trị cấp xám tại điểm đang cần tính hƣớng là C, thì hƣớng d của nó sẽ đƣợc tính nhƣ sau: otherwise q s s s C if p d p q i i 7 0 8 3 4
Việc tính toán theo công thức trên sẽ cho chúng ta hƣớng của mỗi pixel trên ảnh, đƣợc định lƣợng bằng 8 giá trị. Những hƣớng tính đƣợc này thƣờng không chính xác do ảnh hƣởng của nhiễu, vì vậy ta cần phải làm trơn và tính trung bình với các hƣớng láng giềng. Có một khó khăn trong việc tính hƣớng trung bình là vì các hƣớng này là các giá trị modulo 8 nên việc tính trung bình bằng một phép cộng đơn giản sẽ không đem lại kết quả chính xác. Do đó có một phƣơng pháp biểu diễn đẹp hơn cho các hƣớng này là sử dụng vector. Với mỗi pixel, ta tính hƣớng của chúng là một góc α độ (α [0,180o]), nhân giá trị này cho 2, và thay thế nó bằng một vector đơn vị với hƣớng v = (cos2α,sin2α). Ảnh đƣợc biểu diễn theo cách này có thể đƣợc làm trơn bằng cách tính trung bình 2 thành phần của vector này một cách riêng biệt. Với cách biểu diễn nhƣ vậy, chúng ta tính đƣợc vectơ hƣớng trung bình cũng nhƣ độ dài của nó. Và cũng thật dễ dàng khi muốn chuyển đổi một vector đƣợc biểu diễn dạng (x,y) về một
- 60 – giá trị hƣớng d bằng cách tính x y d arctan 2 1
. Tuy nhiên, khi tính các giá trị trung bình hay làm trơn, chúng ta vẫn có thể làm việc bình thƣờng với cách biểu diễn vector và chỉ chuyển chúng về hƣớng biểu diễn theo góc độ khi cần thiết.
Sau khi tính đƣợc hƣớng của tất cả các pixel trên ảnh, chúng ta chuyển đổi các hƣớng này về cách biểu diễn bằng vector đơn vị. Một ảnh gồm 512x512 vector sẽ đƣợc lát bằng các cửa sổ có kích thƣớc là 8x8 và các vector trong mỗi cửa sổ này đƣợc tính trung bình để đƣa ra một ảnh vector có kích thƣớc 64x64. Ảnh có kích thƣớc tƣơng đối nhỏ này lại tiếp tục đƣợc làm trơn (làm trơn mỗi vector thành phần một cách riêng biệt). Ta sử dụng một cửa sổ lọc trung bình có kích thƣớc 3x3. Cửa sổ lọc này đem lại hiệu quả rất cao và nó đƣợc áp dụng nhiều lần nhằm làm trơn và hạ bậc ảnh vector. Một trong những vấn đề cốt yếu nhất của thuật toán phân loại vân tay là xác định đƣợc số lần cần thiết làm trơn trên ảnh vector 64x64. Ta sẽ sử dụng một phép lặp, mỗi lần làm trơn ảnh một lần, ta sẽ thử phân loại ảnh đó, nếu kết quả phân loại chƣa chính xác, ta làm trơn ảnh một lần nữa và lại tiếp tục phân loại tiếp. Quá trình làm trơn cuối cùng sẽ kết thúc ví bất cứ ảnh nào khi làm trơn đủ một số lần sẽ thu đƣợc ảnh với hƣớng không thay đổi. Và ta có thể phân loại ảnh đó là dạng cung thường.
Thuật toán định vị các (tâm điểm và tam phân điểm) và phân loại vân tay theo các dạng cơ bản.
Để phân loại đƣợc ảnh đầu vào với kích thƣớc 64x64 các vector có hƣớng, trƣớc hết ta phải tìm đƣợc các tiêu điểm (tâm điểm và tam phân điểm), sau đó phân loại ảnh dựa trên số lƣợng và vị trí của các tiêu điểm đó. Việc định nghĩa tâm điểm và tam phân điểm ở đây có thể khác với một số bài báo khác trên thế giới (chẳng hạn, Henry [16] định nghĩa tâm điểm là điểm cao nhất của vân trong cùng nhất trên vân tay). Với chúng ta, một điểm trên một ảnh vân tay có hƣớng xác định sẽ thuộc một trong hai loại: điểm bình thƣờng hay tiêu điểm (tâm điểm, tam phân điểm). Dựa vào việc tính chỉ số Pointcaré (Pointcaré Index) của một đƣờng cong khép kín nhỏ xung quanh điểm đó ta sẽ xác định đƣợc điểm đó thuộc loại nào . Chỉ số Pointcaré đƣợc tính toán bằng cách tổng hợp sự thay đổi góc hƣớng xung quanh đƣờng cong đó. Khi chạy đủ một vòng ngƣợc chiều kim đồng hồ xung quanh mỗi đƣờng cong trên toàn bộ ảnh có hƣớng, chúng ta sẽ nhận thấy sự thay đổi góc hƣớng trả về sau mỗi lần tổng hợp thƣờng là o o o
360 , 180 ,
0 ,… Một điểm đƣợc gọi là điểm bình thƣờng nếu góc trả về là
o
0 , là tâm điểm nếu góc trả về là o
180 và là tam phân điểm nếu góc trả về là o
180 . Còn các giá trị trả về cao hơn hoặc thấp hơn có thể gọi điểm đó là tâm điểm kép hoặc tam phân điểm kép.
- 61 –
Trong ảnh 64x64, ta có thể tính chỉ số Pointcaré tại mỗi điểm (i,j) bằng cách sử dụng 1 cửa sổ 2x2 lấy điểm góc trên bên trái làm điểm cần tính. Cửa sổ này sẽ đƣợc chạy vòng quanh theo chiều ngƣợc chiều kim đồng hồ:
i,j i1,j i1,j1 i,j1 i,j
Khi tính đô ̣ chênh lê ̣ch giữa 2 góc (giá trị có thể đạt tới o
180
), chúng ta sẽ chọn giá trị có giá trị tuyệt đối nhỏ hơn.
Sau khi xác định đƣợc tất cả các tâm điểm và tam phân điểm, ta sẽ phân loại ảnh vân tay dựa trên số lƣợng và vị trí của những điểm này. Nhƣ đã trình bày ở trên, ảnh vân tay cung thƣờng sẽ không có tâm điểm và tam phân điểm, cung trồi và các dạng hình quai có 1 tâm điểm và 1 tam phân điểm, còn xoáy thƣờng và xoáy đôi quai thì có 2 tâm điểm và 2 tam phân điểm.
Ta phân biệt cung trồi và các dạng hình quai (đều có 1 tâm điểm và 1 tam phân điểm) bằng cách sử dụng một đƣờng thẳng giả tƣởng nối tâm điểm và tam phân điểm. Đối với cung trồi, hƣớng của đƣờng thẳng sẽ dọc theo hƣớng của các vector của ảnh nằm trên đƣờng thẳng đó, trong khi với các dạng hình quai thì hƣớng của đƣờng thẳng đó sẽ cắt ngang các vector nằm trên đƣờng thẳng. Gọi là góc nghiêng của đƣờng