Thuật toán tách ngỡng tự động

Một phần của tài liệu Tìm hiểu và mô phỏng các kỹ thuật nhận dạng vân tay (Trang 47)

Thuật toán này đợc thực hiện bằng hàm ToBinary() trong lớp Image.cs (phụ lục, trang 64).

4.2.4.1 Phơng pháp

B

ớc 1 : Tìm ngỡng bằng cách gọi t(g) là số điểm ảnh có giá trị ≤ g, m(g) là giá trị trung bình của các điểm ảnh có giá trị ≤g:

∑ = = g i i h g t 0 ) ( ) ( ) ( ) ( . ) ( 0 g t i h i g m g i ∑= = B ớc 2 : Gọi G là số cấp xám đợc xét, P là số điểm ảnh đợc xét:

[ ( ) ( 1)] 1 * ) ( ) ( ) ( − − 2− − = m g m G g t P g t g f

Giá trị ngỡng cần tìm là θ, sao cho ƒ(θ) = max ƒ(g) B

ớc 3: Rồi tách ngỡng.

4.2.4.2. Thực nghiệm phơng pháp tách ngỡng theo cơ chế tìm ngỡng tự động.

Click vào nút “Nhị phân hoá” ta sẽ ra kết quả của việc tách ngỡng nhờ tìm ng- ỡng tự động nh sau:

Hình 4.4: ảnh đã đợc nhị phân hoá

4.2.5. Thuật toán tìm xơng.

4.2.5.1. Phơng pháp.

B

ớc 1 : Tìm các điểm biên. Kiểm tra điểm biên nào có thể xóa đợc thì thực hiện xóa.

B

ớc 2 : Thuật toán kiểm tra điểm (x,y) có là điểm biên hay không, thực hiện I(x,y) =

1 nếu I(x,y)≥θ

BOOL IsBorder(int x, int y) { If (Image[x-1][y] ==0 || Image[x][y-1] ==0 || Image[x-1][y-1] ==0 || Image[x][y] ==0) return TRUE; return FALSE; }

Điều kiện xoá điểm biên phải đảm bảo:

 Không làm mất tính chất lu thông.

 Không tạo ra lỗ hổng.

 Không làm mất điểm cụt.

 Các điểm còn lại thuộc trục trung vị.

 Bất biến với phép quay tịnh tiến.

Với các điều kiện trên, ta có thể xoá các điểm P nh sau: A: các điểm có giá trị bằng P.

B: các điểm có giá trị khác P. *: các điểm tuỳ ý.

B

ớc 3 : Thuật toán kiểm tra điều kiện xóa của điểm (x,y) đợc thực hiện nh sau:

BOOL IsDeletable(int x, int y)

{ (adsbygoogle = window.adsbygoogle || []).push({});

BOOL p1 = image[x - 1, y - 1], int p2 = image[x, y - 1],

p3 = image[x + 1, y - 1], int p4 = image[x - 1, y],

p5 = image[x + 1, y], p6 = image[x - 1, y + 1],

p7 = image[x, y + 1], p8 = image[x + 1, y + 1];

if ((p1 + p2 + p3) == 0 && (p6 * p7 * p8 > 0)) return TRUE; if ((p1 + p4 + p6) == 0 && (p3 * p5 * p8 > 0)) return TRUE; if ((p1 + p2 + p4) == 0 && (p5 * p7 * p8 > 0)) return TRUE; if ((p6 + p7 + p8) == 0 && (p1 * p2 * p3 > 0)) return TRUE; if ((p3 + p5 + p8) == 0 && (p1 * p4 * p6 > 0)) return TRUE; if ((p5 + p7 + p8) == 0 && (p1 * p2 * p4 > 0)) return TRUE; if ((p2 + p3 + p5) == 0 && (p4 * p6 * p7 > 0)) return TRUE;

if ((p4 + p6 + p7) == 0 && (p2 * p3 * p5 > 0)) return TRUE; return FALSE;

}

B

ớc 4 : Việc tìm xơng đợc thực hiện nh sau:

void MakeBone()

{ BOOL Manh = FALSE;

Stack S;

S.Empty(); // Khởi tạo ngăn xếp rỗng

while (!Manh)

{ Manh = TRUE;

for (int i=0; i<M; i++) for (int j=0; j<N; j++)

if (IsBorder(i,j))

if (IsDeletable(i,j)) // Đẩy các điểm có thể xoá đợc { S.Push(i,j); //vào ngăn xếp

Manh = FALSE; }

while (!S.IsEmpty) //Xoá tất cả các điểm trong ngăn xếp

{ S.Pop(i,j); Image[i][j] = 0; } } } 4.2.5.2 Kết quả thực thi.

Hình 4.5: ảnh đã đợc tìm xơng

4.2.6. Tìm kiếm chi tiết

4.2.6.1 Phơng pháp

Chi tiết ảnh chính là những điểm ảnh đặc biệt nằm trên xơng của vân và hớng vân cục bộ tại điểm đó. Điểm đặc biệt chính là điểm kết thúc hoặc rẽ nhánh của đờng vân. Việc kiểm tra một điểm có là điểm rẽ nhánh hay điểm kết thúc hay không đợc thực hiện bằng cách tính tổng các trị tuyệt đối của hiệu các cặp điểm liên tục xung quanh điểm đang xét (tất nhiên việc xử lý này đợc thực hiện trên ảnh vân tay đã đợc làm mảnh). Nếu tổng bằng 1 thì đó là điểm kết thúc, và bằng 3 nếu nó là điểm rẽ nhánh.

Cụ thể cho điểm ảnh (x,y) nh sau;

BOOL IsMinutiae(int x, int y)

{

If (Image[x][y] ==0)) {

sum = |image[x-1,y-1] - image[x-1,y]| (adsbygoogle = window.adsbygoogle || []).push({});

+ |image[x-1,y+1] - image[x,y+1]| + |image[x+1,y+1] - image[x+1,y]| + |image[x+1,y+1] - image[x+1,y]|

+ |image[x+1,y-1] - image[x,y-1]| If(sum==1or sum==3) return true; }

return FALSE;

}

4.2.6.1 Kết quả thực thi:

Click và nút “Xem chi tiết” sẽ hiện ra các chi tiết của vân tay tìm đợc.

Hình 4.6: Chi tiết ảnh

4.2.7. Thuật toán đối sánh vân tay

4.2.7.1 Phơng pháp.

Phơng pháp này sẽ tiến hành đối sánh hai tập chi tiết của hai ảnh vân tay. Nếu số lợng ảnh vân trùng khớp lớn hơn một giá trị giới hạn nào đấy thì hai vân tay là trùng khớp.

B

ớc 1 : Trớc hết chúng ta tiến hành tịnh tiến và quay tập chi tiết của hai ảnh theo các đại lợng chúng ta thu đợc từ thuật toán Hough. Tiến hành đối sánh lần lợt từng chi tiết của tập chi tiết ảnh vân tay 1 với tập chi tiết thu đợc.

B

ớc 2: Hai chi tiết mi = { xi, yi, θi } và mj ‘ = { xj’, yj’, θ′j } đợc gọi là so khớp

( ) ( ) ( ) 2 2 ' ' ' 0 ' ' ' 0 ( , ) dd( , ) min | |,360 | | j i j i j i j i j i j i sd m m x x y y r m m θ θ θ θ θ = − + − ≤ = − o− − ≤ Với r0 và θ0 là các giá trị giới hạn.

B

ớc 3 : Dựa theo công thức trên sẽ đếm số lợng cặp chi tiết so khớp với nhau. Từ đó rút ra kết luận hai vân tay có trùng khớp với nhau hay không.

4.2.7.2. Kết quả thực thi:

Với hai ảnh vân tay nh sau:

4.2.8 Thuật toán Hough

4.2.8.1 Phơng pháp.

Thuật toán Hough là thuật toán tìm ra các giá trị tịnh tiến theo trục x, trục y, góc quay ngợc chiều kim đồng hồ và độ nở của vân (∆x, ∆y, θ, s) sao cho khi thực hiện các phép biến đổi đó thực hiện trên tập chi tiết của vân tay này sẽ thu đợc tập chi tiết mới mà có số lợng chi tiết trùng khớp với tập chi tiết của vân tay kia là lớn nhất.

Thuật toán dựa trên các tập giới hạn của ∆x là {∆x1 +, ∆x2 +,…, ∆xa+|}, của ∆y là {∆y1 +, ∆y2 +,…,∆yb+|}, của θ là {θ1+, θ2+,…, θc+} và của s là {s1+, s2+,...,sd+}

Thuật toán phát biểu nh sau: Với mỗi mi, i = 1..m Với mỗi mj’, j = 1..n Với mỗi θ+ ∈ {θ+ 1, θ+ 2, …, θ+ c} B

ớc 1 : Nếu khoảng cách trực tiếp (θ’j + θ+, θi) < θ0 Thì với mỗi s + ∈ {s+

1, s+

2, …, s+

d} ta có: {

              − −       =       ∆ ∆ + + + + + j j i i y x s y x y x ' ' cos sin sin cos θ θ θ θ

x+, ∆y+ = lợng tử hoá của ∆x, ∆y tới tập gần nhất A[∆x+, ∆y+, θ+, s+] = A[∆x+, ∆y+, θ+, s+] + 1 } (adsbygoogle = window.adsbygoogle || []).push({});

ở đây A chính là mảng bốn chiều mà giá trị của A[∆x+, ∆y+, θ+, s+] thể hiện số cặp chi tiết ủng hộ cho [∆x+, ∆y+, θ+, s+].

B

ớc 2: ở cuối quá trình tích lũy, biến đổi có căn chỉnh tốt nhất (∆x*, ∆y*, θ*,

s*) nhận đợc nh sau:

(∆x*, ∆y*, θ*, s*) = arg max A[∆x+, ∆y+, θ+, s+] Đó chính là giá trị mà ta muốn tìm.

4.2.8.2. Kết quả thực thi.

Vào “Xử lý / Thông tin so sánh” sẽ hiện ra Form hiển thị kết quả của thuật toán Hough nh sau:

KếT LUậN

Đề tài “Tìm hiểu và mô tả các kỹ thuật nhận dạng vân tay” đã đạt đợc một số kết quả sau:

 Nghiên cứu một số thuật toán xử lý ảnh vân tay nh chuẩn hoá, tăng cờng ảnh vân tay và một số thuật toán trong việc trích chọn đặc trng vân tay nh tính h- ớng cục bộ, trích chọn chi tiết, tần suất vân tay.

 Nghiên cứu một số kỹ thuật đối sánh vân tay nh kỹ thuật dựa trên độ tơng quan, kỹ thuật dựa trên chi tiết, kỹ thuật dựa trên đặc trng vân.

 Cài đặt thành công một số thuật toán xử lý ảnh nh chuẩn hóa, tăng cờng ảnh vân và một số thuật toán trích chọn đặc trng vân. Cài đặt thành công các thuật toán dựa trên chi tiết.

 Chơng trình đã có thể đối sánh hai vân tay.

Tuy nhiên, do lần đầu tiếp cận và thời gian hạn chế, Đề tài không tránh khỏi những thiếu sót. Đề tài mới chỉ dừng lại ở mức nghiên cứu và tổng hợp các thuật toán đã có. Xác suất sai số trong khi đối sánh vân tay là khá lớn. Tôi sẽ cố gắng nghiên cứu và phát triển để chơng trình ngày càng hoàn thiện.

TàI LIệU THAM KHảO

[1] Nguyễn Kim Sách, "Xử lý ảnh và video số", NXB Khoa học và Kỹ thuật, 1997.

[2] Nguyễn Đỗ Anh Khoa, VIDEO lập trình C# cơ bản & H ớng đối t ợng đối t - ợng.

[3] Anh Quang - Phan Hoang, Giáo Trình Tự Học Lập Trình C#, Nxb Văn hóa

Thông tin, 09 - 2007.

[4] Đề tài, ''ứng dụng công nghệ nhận dạng vân tay trong bảo mật mạng

doanh nghiệp'', Trung tâm Công nghệ thông tin - Học viện công nghệ bu

chính viễn thông.

[5] Lơng Mạnh Bá, Nguyễn Thanh Thuỷ. Nhập môn xử lý ảnh số. Nhà xuất bản khoa học kỹ thuật, 1999.

[6] Ngô Quốc Tạo. Tập bài giảng Nhập môn xử lý ảnh.

[7] Dario Maio and Davide Maltoni, "Direct Gray-Scale Minutiae Detection In Fingerprints", IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 19, No. 1, January 1998.

[8] Anil Jain, Sharathcha Pankanti, "Fingerprint Classification and Matching". [9] Karthik Nandakumar, Anil K. Jain, "Local Correlation-based Fingerprint Matching", To Appear in Proceedings of ICVGIP, Kolkata, December 2004. [10] Anil Jain, Lin Hong, Yifei Wan, "Fingerprint Image Enhancement: Algorithm and Performance Evaluation ", IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 20, No. 8, 1998.

[11] D.Maltoni, D.Maio, A.K.Jain, S.Prabhakar, "Fingerprint Scanners and their Features" Extract from "Handbook of Fingerprint Recognition", Springer, New York, 2003.

Một phần của tài liệu Tìm hiểu và mô phỏng các kỹ thuật nhận dạng vân tay (Trang 47)