Thuật toán tìm xơ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 48 - 52)

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)

{

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; (adsbygoogle = window.adsbygoogle || []).push({});

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

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 48 - 52)