ĐỒ ÁN 3
NHẬN DIỆN DẤU VÂN TAY TRÊN
MATLAB
Mục lục
Danh mục hình vẽ
Hình 1: Một số vân tay
Hình 2: Một số loại sinh trắc
Hình 3: Cấp độ Global
Hình 4: Cấp độ Local
Hình 5: Cấp độ very-fine
Hình 6: Ảnh nhị phân
Hình 7: Ảnh xám
Hình 8: Ảnh RGB
Hình 9: Hệ màu RGB
Hình 10: Lược đồ xám
Hình 11: Cân bằng lược đồ xám
Hình 12: Ảnh đã được tính trường định hướng
Hình 13: Ảnh đã được khoanh vùng
Đồ án 3
Trang 2/31
Hình 14: Ảnh đã được nhị phân hóa và làm mảnh
Hình 15: Vân rẽ nhánh và vân cụt trong nhị phân
Hình 16: Ảnh sau khi được trích chọn đặc trưng
Hình 17: Các vân sai
Hình 18: Các vân sai được sữa và loại bỏ
Hình 19: Giao điện chương trình
Hình 20: Ảnh được load
Hình 21: Vân tay sau cân bằng lược đồ xám
Hình 22: Vân tay sau khi tăng cường chất lượng ảnh bằng FFT
Hình 23: Ảnh sau khi chuyển thành nhị phân
Hình 24: Ảnh sau khi tính trường định hướng
Hình 25: Ảnh sau khi khoanh vùng
Hình 26: Ảnh sau khi làm mảnh
Hình 27: Ảnh sau khi xoá minutaie sai
Hình 28: Ảnh sau khi xóa minutiae sai lần 2
Hình 29: Ảnh sau khi được lọc minutia
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 3/31
Danh mục từ nước ngoài
Minutiae: điểm đặc trưng trên vân tay người
Termination: vân cụt
Bifurcation: vân rẽ nhánh
Sweat pores: các đường cong xếp liên tiếp tạo thành vân
Orientation: trường định hướng
Crossing number: phương pháp dùng để phát hiện minutiae
Binarization: Nhị phân hóa
FFT-Fourier Fast Transform: biến đổi Fourier nhanh
ROI-Region of Interest : vùng mong muốn
Crossover: hiện tượng giữa hai vân song song có cầu nối
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 4/31
Chương 1: Giới thiệu về vân tay
Trong phần này sẽ trình bày về tầm quan trọng của vân tay trong cuộc sống, tính
chất của vân tay để được dùng trong nhận dạng, hình thức cũng như khó khăn
trong việc nhận dạng vân tay.
Hình 1: Một số vân tay
1.1 Giới thiệu về vân tay.
Vân tay là một phần của sinh trắc học, nhận dạng vân tay đã được phát triển từ
lâu. Nhưng tới thời gian gần đây, cùng với sự phát triển của thiết bị điện tử, nó
mới trở thành một trong các phương phát nhận dạng có độ tin cậy cao nhất.
Hình 2: Một số loại sinh trắc
Trong quá trình thu nhận vân tay, rất dễ bị ảnh hưởng bởi điều kiện thu thập
như: nhiệt độ, độ ẩm của da, góc lấy vân, diện tích lấy vân ... nên rất khó trong
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 5/31
việc lấy mẫu và so sách trực tiếp. Do đó sau khi có mẫu vân, ta thường phải lọc
nhiễu, mã hóa thông tin đặc tính (các đặc trưng mà có thể dùng để so sánh với
mẫu khác) sau đó mới có thể so sánh, đối chiếu cũng như lưu trữ với số lượng
lớn mà vẫn có tính chính xác cao.
Tóm tắt quá trình nhận dạng vân tay như sau:
Thu nhận vân tay
Trích chọn đặc tính vân tay
Đối chiếu vân tay
Có nhiều phương pháp để thực hiện nhận dạng vân tay, nhưng trong hạn chế của
•
•
•
thời than cũng như kiến thức, em chọn sử dụng phương pháp phát hiện và sử
dụng các điểm đặc trưng (minutiae).
1.2 Đặc tính riêng của mỗi vân tay.
Các đặc tính của vân tay giúp nhận dạng :
• Tính cá nhân: mỗi người có một dấu vân tay riêng và xác suất trùng với
người khác nhần như bằng không
• Tính bất biến: theo nghiên cứu thì hình dạng tổng thể của vân tay mỗi
•
người không thay đổi theo thời gian.
Tính phổ thông: tất cả mọi người đều có vân tay , trừ một số rất ít người
trên thế giới bị bệnh adermatoglyphia sinh ra đã không có vân tay.
1.3 Hình thức thể hiện của vân tay.
Hình thức thể hiện vân tay được chia làm ba cấp độ
• Global: thể hiện tổng thể
ở cấp độ này, ta quan tâm đến sự sắp xếp của đường vân, các điểm kì dị
(singular).
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 6/31
Hình 3: cấp độ global
•
Local: thể hiện vân tay bởi một số điểm đặc trưng sau khi đã làm mảnh
đường vân còn 1 pixel. Ở cấp độ local, đặc trưng của vân tay được quan
sát là các điểm đặc trưng (minutiae) trong đó nổi bật là vân cụt (ridge
termination) và vân rẽ nhánh (ridge bifurcation).
Hình 4: cấp độ local
• Very-fine: thể hiện các đường cong tạo nên đường vân (sweat pores)
ở cấp độ này, muốn quan sát được những lỗ trên đường vân (pores) thì
phải có ảnh với độ phân giải rất cao.
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 7/31
Hình 5: cấp độ very-fine
1.4 Các khó khăn khi thu nhận vân tay.
Do đang xét trong ứng dụng dân sự, nên các điều kiện khi lấy mẫu ảnh hưởng
rất lớn đến chất lượng ảnh, trong đó gồm:
• Điều kiện khô: ảnh thu được sẽ bị mờ đường vân, hoặc mất hẳn, nguyên
•
nhân là do lực nhấn của tay nhẹ hoặc thiếu mực in.
Điều kiện ướt: ảnh thu được sẽ bị dính liền đường vân, hoặc nhòe,
nguyên dân là do lực nhấn của tay quá lớn hoặc mực in quá nhiều.
• Điều kiện biến dạng: ảnh thu được sẽ bị bóp méo hay chồng lên nhau,
không giống với vân tay thực tế, nguyên nhân do việc kéo, xê dịch tay
khi lấy mẫu.
• Điều kiện vân tay không đầy đủ: ảnh thu được chỉ có một phần vân trên
ngón, nguyên nhân là do để tay không chính xác...
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 8/31
Chương 2: Tổng quan về xử lý ảnh trong matlab
Ảnh số là tập hợp hữu hạn các điểm ảnh (pixel), thường được thể hiện bằng
mảng hai chiều I(x,y) với x số hàng, y là số cột. Số lượng điểm ảnh xác định độ
phân giải của 1 bức ảnh.
2.1 Phân loại ảnh số
2.1.1 ảnh nhị phân
ảnh mà mỗi Pixel chỉ có hai mức 0 hoặc 1, mức 0 thể hiện màu đen và mức 1
thể hiện màu trắng. Vì chỉ có 2 mức , nên mỗi điểm ảnh chỉ cần 1 bit.
Hình 6: ảnh nhị phân
Ảnh xám (grayscale)
Là ảnh mà mỗi điểm ảnh cho biết độ sáng/mức xám của ảnh, được xác định
2.1.2
bằng công thức , trong đó B là số bit để mã hóa . Cụ thể với ảnh 8bit thì ta
có =256 mức nên ta lấy trong khoảng [0;255], với mức 0 là màu đen và mức
255 là màu xám, vì vậy các điểm ảnh cần 8bits.
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 9/31
Hình 7: ảnh xám
Ảnh màu (RBG)
ảnh mà mỗi điểm ảnh gồm ba giá trị đỏ (red) + xanh lam (blue) + xanh lục
2.1.3
(green), mỗi mau lại có giá trị [0;255], tức là mỗi điểm ảnh cần 24bits. Các
màu này được pha trộn với nhau để tạo ra nhiều màu khác nhau, được thể
hiện bằng vector màu từ màu đen (0,0,0) đến màu trắng (1,1,1).
Hình 8: ảnh RGB
Trong matlab, ảnh màu được lưu dưới dạng mảng dữ liệu ba chiều x,y,z
tương ứng với ba màu red green blue.
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 10/31
Hình 9: hệ màu RGB
2.2 Xử lý ảnh trong Matlab
Matlab từ lâu đã được sử dụng như 1 công cụ hỗ trợ tính toán, thiết kế các bài
toán trong kỹ thuật, riêng về mặt xử lý ảnh, các công cụ thường đươc xử dụng
trong Matlab là :
• Image processing toolbox
• Wavelet toolbox
• Signal processing
Các thuật toán sau được sử dụng để xử lý ảnh số:
Lược đồ xám (Histogram Equalization)
Lược đồ xám cung cấp thông tin về phân bố mức xám của ảnh, thể hiện tần
2.2.1
suất xuất hiện của mỗi mức xám. Nếu ảnh tối thì lược đồ xám lệch về phía
bên trái, nếu ảnh sáng thì ngược lại, so với điểm quy chiếu.
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 11/31
Hình 10: Lược đồ xám
Ta cũng có thể tăng cường chất lượng ảnh bằng phương pháp cân bằng lược
đồ xám, giúp cho ảnh đồng đều về cường độ sáng.
2.2.2
Hình 11: Cân bằng lược đồ xám
Biến đổi Fourier rời rạc (Fourier Enchancement)
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 12/31
Bằng cách chia ảnh thành các khối 32 x 32 pixels, ta có thể giữ lại các thành
phần có tần số trội (vùng ảnh có đường vân). Do đó sau khi biến đổi xong,
các đường vân sẽ rõ nét hơn, không bị nhòe cũng như loại bỏ bớt vân lỗi khi
lấy mẫu. Công thức biến đổi FFT:
Trong đó
k: hệ số mũ của phổ Fourier
|F(I[x,y])| phổ Fourier
Nếu chọn k quá lớn, sẽ dẫn đến đường vân bị sai.
Ước lượng trường định hướng vân tay (Orientation)
Trường định hướng thể hiện đặc tính tự nhiên của vân tay. Nguyên lý tính
2.2.3
trường định hướng:
• Chia ảnh thành các khối WxW ( mặc định W=16)
• Tính giá trị gradient theo trục x ( và trục y cho mỗi điểm ảnh của
•
khối
Tính bình phương tối thiểu để tìm ra đường khớp nhất cho vân với
công thức sau:
•
Sau khi tính toán với các block, những block không có thông tin phù
hợp (ở đây là đường vân) sẽ bị loại bỏ dựa vào công thức:
Nếu thực hiện đúng ta sẽ có trường định hướng như sau:
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 13/31
Hình 12: ảnh đã được tính trường định hướng
Khoanh vùng vân tay (ROI extraction)
Theo phương pháp Morphology, có hai phép toán là Openning và Closing
• Openning: Loại bỏ những đối tượng không đủ lớn, tách chúng ra khỏi
2.2.4
những đối tượng lớn.
• Closing: nối liền những mẫu rời nhau, lấp đầy các lỗ nhỏ.
Ở đây ta dùng cả hai tính chất trên để khoanh vùng và chọn vùng mong
muốn.
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 14/31
Hình 13: ảnh đã được khoanh vùng
Nhị phân hóa ảnh (binarization) và làm mảnh (thinking)
Sau khi thực hiện biến đổi Fourier rời rạc, đường vân đã nổi rõ hơn so với
2.2.5
ảnh ban đầu. Ta có thể chuyển ảnh xám sang ảnh nhị phân chỉ có 2 bit 0
hoặc 1, sau đó tiếp tục làm mảnh đường vân lại với độ rộng = 1 pixel.
Hình 14: ảnh được nhị phân hóa và làm mảnh
Phát hiện điểm đặc trưng (Minutiae Extrac)
Thuật toán crossing number (CN) được sử dụng rộng rãi trong việc để chọn
2.2.6
điểm đặc trung, do đó em chọn phương pháp này. Tóm tắt cách làm như sau:
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 15/31
•
•
Chia nhỏ ảnh thành khối 3x3
Lấy giá trị logic của tất cả điểm ảnh trong khối so sánh với điểm ảnh
ở giữa
Dựa vào kết quả, ta có thể xác định đâu là điểm phân rẽ nhánh, đâu là điểm
của vân cụt hoặc đâu là điểm nằm trên đường vân.
Hình 15: vân rẽ nhánh và vân cụt trong nhị phân
Hình 16: ảnh sau khi được trích chọn đặc trưng
Ước lượng khoảng cách giữa các vân
Trong khi tính toán phát hiện điểm đặc trưng ở bước trên, ta có thể gặp
2.2.7
những trường hợp trong một ô 3x3 sẽ phát hiện ra 2 đường vân, nhưng thực
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 16/31
tế đó chỉ là 1 phần nhỏ của vân khác. Vì vậy khâu ước lượng khoảng cách
giữa các vân rất cần thiết để có dữ liệu chính xác về vân tay. Ước lượng
khoảng các các vân có thể hiểu là giá trị trung bình khoảng cách giữa hai
đường vân song song và gần nhau.
Hiệu chỉnh và lọc minutiae sai
Có kiểu vân sai như sau:
2.2.8
Hình 17: các vân sai
Đây là quá trình loại bỏ các vân sai, giúp tăng tính xác thực của mẫu, do mỗi
vân sai đều ảnh hưởng đến kết quả so sánh cuối cùng. Sau khi xử lý xong, ta
lưu lại thông tin của mẫu.
Hình 18: các vân sau khi được sửa và loại bỏ
So sánh đối chiếu vân với dữ liệu có sẵn
Do phương pháp nhận dạng vân tay này dựa trên minutiae, nên việc đối
2.2.9
chiếu/so sánh dựa trên số liệu của ảnh đưa vào (input) và bản mẫu trong cơ
sở dự liệu (template). Bao gồm hai cộng đoạn :
• Khớp mẫu
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 17/31
Để tiến dành khớp mẫu, ta tiến dành đặt input lên trên template sao cho
góc giữa các minutiae đạt một giá trị cho trước. Ta có thể sử dụng thuật
toán alignment:
o
o
o
•
Chọn một cặp minutiae của input và template
Tiến hành xoay, tịnh tiến
Tính mức độ phù hợp cho đến khi đạt giá trị cho trước
Đối chiếu
o Sau khi có được các cặp minutiae ta tính số cặp có cùng vị trí
và hướng để nhận dạng và đưa ra kết quả
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 18/31
Chương 3: Kết quả và hướng phát triển
3.1 Kết quả
• Đã có thể đối chiếu và cho sự giống nhau giũa hai vân
• Đúng với thiết kế ban đầu là nhận dạng dựa trên các minitiae
• Do viết chương trình theo dạng file scipt nên dễ dàng thay đổi và bổ sung
nếu cần thiết
Dưới đây là một số hình ảnh về giao diện chương trình và công dụng các
nút nhấn:
Hình 19: Giao diện chương trình
“Load” dùng để load ảnh
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 19/31
Hình 20: Ảnh được Load
Nút “Histogram” dùng để căng bằng lược đồ sáng, ảnh sau cân bằng sẽ sáng đều
hơn.
Hình 21:
Vân tay sau
cân bằng
Nút “FFT”
lược đồ xám
dùng để tăng
cường chat
lượng ảnh
bằng biến
đổi Fourier
nhanh, ta
có thể lựa
chọn hệ số
Hình 22:
k.
Vân tay sau
khi tăng
cường chất
lượng ảnh
Nút
bằng FFT
“Binarization” dùng để chuyển ảnh xám thành ảnh nhị phân
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 20/31
Hình 23: Ảnh sau khi chuyển thành ảnh nhị phân
Nút”Direction” dùng để tính trường định hướng vân tay
Hình 24: Ảnh sau khi tính trường định hướng
Nút “Draw ROI” thực hiện khoanh vùng vân tay
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 21/31
Hình 25: Ảnh sau khi khoanh vùng
Nút “Thinking” để làm mảnh đường vân với độ rộng bằng 1 pixel
Hình 26: Ảnh sau khi làm mảnh
Nút “remove H breaks” để xóa những minutiae dạng cross over
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 22/31
Hình 27: Ảnh sau khi xóa minutiae sai
Nút “remove spike” xóa những vân thừa ra trên đường vân lớn
Hình 28: Ảnh sau khi xóa minutiae sai lần 2
Nút “Extract” đưa ra các minutiae và nút “Real Minutiae” loại bỏ những điểm
sai
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 23/31
Hình 29: ảnh sau khi được lọc minutiae
3.2 Hướng phát triển đề tài
Tuy đã thành công trong việc nhận dạng vân tay, nhưng đề tài vẫn còn nhưng
hạn chế thiếu sót:
• Cơ sở dữ liệu còn ít, chưa tự động hóa được khâu thu nhận mẫu
• Thuật toán xử lý và giao diện người dùng con thô sơ, cần cải thiện hơn
trong tương lai.
Bên cạnh đó, vẫn có những mặt tốt và hướng phát triển cho đề tài:
• Có thể nâng cấp, áp dụng đề tài cho việc thu nhận/xử lý vân tay trực tiếp,
không cần ảnh số có sẵn.
• Tăng thời gian xử lý chương trình lên, có thể thương mại hóa đồ án này.
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 24/31
Nhận diện dấu vân tay trên MATLAB
Đồ án 3
Trang 25/31
Tài liệu tham khảo
[1]
Nguyễn Hoàng Hải, Nguyễn Khắc Kiểm, Lập Trình Matlab, Nhà xuất bản Khoa
học và kỹ thuật.
[2]
Steven L. Eddins, Digital Image processing using MATLAB, Prentice Hall 2014
[3]
Wuzhili, Fingerprint Recognition, Hong Kong Baptist University, 2002.
0.3%
Nhận diện dấu vân tay trên MATLAB