Uploaded by khoa.tranhbn_111201

Luan Van

advertisement
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN-ĐIỆN TỬ- BỘ MÔN VIỄN THÔNG
LUẬN VĂN TỐT NGHIỆP
ỨNG DỤNG THÔNG TIN MÀU SẮC VÀ THUẬT
TOÁN SIFT VÀO NHẬN DẠNG MỐNG MẮT
SVTH: Hồ Tấn Phước - 1712744
GVHD: T.S. Trịnh Hoàng Hơn
TP HỒ CHÍ MINH - 12/2021
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
……………………………………………………………………………………………..
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
i
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
ii
LỜI CAM ĐOAN
Tôi tên: Hồ Tấn Phước là sinh viên chuyên ngành Kỹ thuật Điện tử - Truyền thông, khóa
2017, tại Đại học Quốc gia thành phố Hồ Chí Minh – Trường Đại học Bách Khoa. Tôi xin
cam đoan những nội dung sau đều là sự thật:
(i)
Công trình nghiên cứu này hoàn toàn do chính tôi thực hiện;
(ii)
Các tài liệu và trích dẫn trong luận văn này được tham khảo từ các nguồn
thực tế, có uy tín và độ chính xác cao;
(iii)
Các số liệu và kết quả của công trình này được tôi tự thực hiện một cách
độc lập và trung thực.
TP. HCM, ngày 22, tháng 12 năm 2021
iii
LỜI CẢM ƠN
Trong thời gian nghiên cứu và hoàn thiện luận văn em đã nhận được sự giúp đỡ chu
đáo của các Thầy, Cô giáo trong khoa Điện – Điện tử, Trường Đại Học Bách Khoa, Đại
Học Quốc Gia Hồ Chí Minh.
Em xin bày tỏ lòng biết ơn sâu sắc đến thầy Trịnh Hoàng Hơn, người đã trực tiếp
hướng dẫn em trong quá trình nghiên cứu và thực hiện đề tài với tất cả lòng nhiệt tình chu
đáo, ân cần cùng với thái độ nghiên cứu khoa học nghiêm túc và thẳng thắn của một nhà
khoa học uy tín, mẫu mực. Em xin gửi lời cảm ơn Thầy, Cô giáo, Khoa Điện- Điện tử,
Đại học Bách Khoa, Đại học Quốc Gia Hồ Chí Minh đã tận tình dạy dỗ, truyền đạt những
kiến thức nền tảng và chuyên môn. Em xin chân thành cảm ơn gia đình, các bạn đã có
những động viên, giúp đỡ em trong suốt quá trình em nghiên cứu và hoàn thiện khóa luận
này.
Mặc dù em đã có nhiều cố gắng hoàn thiện luận văn bằng tất cả sự nhiệt tình và nỗ
lực của mình, tuy nhiên không thể tránh khỏi những thiếu sót, em rất mong nhận được
những ý kiến đóng góp quý báu của quý Thầy Cô và các bạn.
Hồ Chí Minh, ngày 22 tháng 12 năm 2021
SINH VIÊN
HỒ TẤN PHƯỚC
iv
TÓM TẮT LUẬN VĂN
Cuộc cách mạng 4.0 diễn ra, công nghệ xác thực sinh trắc học đang đà phát triển
nhanh chóng, đem đến đóng góp lớn trong lợi ích kinh tế và an ninh đất nước như ứng
dụng bảo mật an toàn, nhận diện công dân, xác thực hộ chiếu, chấm công, truy tìm tội
phạm … đang được nước ta và thế giới sử dụng phổ biến, tầm quan trọng của các công
nghệ hiện đại là không thiếu trong một đất nước đang phát triển. Hiện nay nền công nghệ
đang gặp một số khó khăn do sự bùng phát của đại dịch Covid-19 diễn ra vào năm 2019,
ngày càng phức tạp, nguy hiểm, kéo dài đến hôm nay. Một trong những khó khăn đó là
việc tiếp xúc công nghệ trực tiếp bây giờ đang là nguy cơ lây nhiễm virus cho người sử
dụng, đặc biệt ở những thiết bị đặt nơi công cộng như ATM, máy chấm công vân tay, …
Vì thế luận văn tiến hành nghiên cứu Hệ thống nhân dạng mống mắt để xác thực, với một
số ưu điểm đã được chuyên gia nhận định như nhận dạng từ xa, chính xác, nhanh, khó giả
mạo. Hệ thống xác thực mà nghiên cứu thực hiện có khả năng xác thực dựa trên một bên
mắt của mỗi người và chỉ dùng 1 ảnh để huấn luyện dữ liệu cho hệ thống. Trong đó,
nguyên lý chính của hệ thống là trích xuất đặc trưng màu sắc từ mống mắt và đặc trưng
SIFT trích ra dựa trên giải thuật SIFT để xác thực. Đặc trưng màu sắc là một vector 3
chiều tính toán từ không gian màu RGB. Phương pháp trích xuất đặc trưng SIFT bằng
giải thuật SIFT đã được cải thiện để có thể tùy ý thay đổi số lượng đặc trưng tính ra. Mục
tiêu nghiên cứu tập trung là khảo sát hiệu quả về độ chính xác, thời gian đáp ứng của
chương trình và đánh giá khả năng của cách tiếp cận này.
Qua thử nghiệm, chương trình nhận dạng đã đạt độ chính xác 100% với thời gian đáp ứng
2.731801 giây. Nghiên cứu đề ra được thực hiện trên tập dữ liệu về mống mắt UPOL và
làm việc trên phần mềm MATLAB.
v
ABSTRACT
Biometric authentication is a system widely used in practical applications such as
surveillance, access management, crime verification, time attendance system, etc. Such
systems are very common in companies or government organizations
Today, facing the outbreak of dangerous viruses like COVID-19 in the world
today, technologies are innovating to better suit the situation. Using the device directly or
close to it poses a risk to users, in some countries, the government requires people to wear
masks when working and going out. Therefore, the automatic identity verification system
needs to be innovated to avoid the above effect and be suitable for the situation. In that
regard, we propose an iris-based authentication method. Iris biometrics have several
unique advantages when used for identification and authentication like No physical
contact when scanning, accurate matching performance, can be captured from a distance,
change much as people age, difficult to spoof so it has great potential to replace other
biological systems in the future
In
the
research,
I
present
a
system
of
identity
verification
with
high
accuracy through identifying an individual's iris, and use only one image to train each
subject. By using the eye’s color feature combine SIFT features are extracted based on
SIFT algorithm. The color features are extracted in RGB space which are computed by
averaging the intensity values of red, gray, blue color channels. The number of keypoints
calculated from the SIFT algorithm can be adjusted more efficiently according to our
proposed method. System accuracy reached 100% with response time of 2.731801
seconds when we worked on MATLAB software and UPOL database to perform the
experiments
vi
MỤC LỤC
LỜI CAM ĐOAN…………………………………………………………………………iii
LỜI CẢM ƠN……………….…………………………………………………………….iv
TÓM TẮT LUẬN VĂN ……..……………………………………………………………v
DANH SÁCH HÌNH VẼ………………………………………………………………….xi
DANH SÁCH BẢNG …...………………………………………………………...……xiii
DANH SÁCH VIẾT TẮT……………………………………………………………….xiv
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN……………..…………………………………1
1.1 Đặt vấn đề…………………………………………………………………….1
1.2 Phạm vi và phương pháp nghiên cứu…………………………………………2
1.3 Đóng góp của luận văn…………………………………….…………………2
1.4 Bố cục của luận văn…………………………………………………………..2
CHƯƠNG 2. CÔNG NGHỆ SINH TRẮC HỌC………………………………………….4
2.1 Giới thiệu……………………………………………………………………….4
2.2 Các công nghệ sinh trắc học……………………………………………………5
2.3 So sánh độ chính xác giữa các công nghệ sinh trắc học………………………..6
2.4 Kết luận…………...……………………………………………………………6
CHƯƠNG 3 MÔ HÌNH NHẬN DẠNG MỐNG MẮT…..……………………………….7
3.1 Giới thiệu……………………………………………………………………….7
3.2 Một số nghiên cứu liên quan…………………………………………………...7
3.3 Tổng quan về mống mắt……………………………………………………….8
vii
3.4 Xây dựng mô hình nhận dạng mống mắt……………………………………………...9
3.4.1 Giai đoạn 1: Tạo dữ liệu hệ thống…………………………………… 9
3.4.2 Giai đoạn 2: Nhận dạng mống mắt…………………………………10
3.5 Xây dựng các bộ xử lý………………………………………………………..………11
3.5.1 Bộ phân đoạn mống mắt……………………………………………………11
3.5.2 Bộ trích chọn đặc trưng màu sắc……………………………………………12
3.5.3 Bộ truy xuất…………………………………………………………………13
3.5.4 Bộ trích chọn đặc trưng SIFT……………………………………………….14
3.5.4.1 Giới thiệu thuật toán SIFT…………………………………………14
3.5.4.2 Trích chọn đặc trưng SIFT ……………………………………….15
3.5.5 Bộ đối sánh………………………………………………………………….21
CHƯƠNG 4 MỘT SỐ CẢI THIỆN CHO MÔ HÌNH NHẬN DẠNG MỐNG MẮT …..22
4.1 Giới thiệu……………………………………………………………………22
4.2 Điều chỉnh số lượng đặc trưng SIFT………………………………………….23
4.2.1 Giới thiệu……………………………………………………………23
4.2.2 Đặt vấn đề……………………………………………………………23
4.2.3 Thiết lập thử nghiệm………………………………………………….24
4.2.3.1 Cơ sở dữ liệu……………………………………………….24
4.2.3.2 Phương thức tiếp cận………………………………………25
4.2.3.3 Kết quả…………………………………………………….26
4.2.4 Kết luận……………………………………………………………….27
viii
4.3 Trích chọn đặc trưng màu sắc……………………………………………….28
4.3.1 Giới thiệu …………………………………………………………….28
4.3.2 Đặt vấn đề ……………………………………………………………28
4.3.3 Thực hiện thử nghiệm…………………………………………………29
4.3.3.1 Cơ sở dữ liệu……………………………………………….29
4.3.3.2 Cách tiếp cận……………………………………………….29
4.3.3.3 Kết quả……………………………………………………..30
4.3.4 Kết luận………………………………………………………………..32
CHƯƠNG 5 .
KẾT QUẢ VÀ NHẬN XÉT……………………………….33
5.1 Giới thiệu……………………………………………………………………..33
5.2 Mô phỏng quá trình đối sánh………………………………………………….33
5.2.1 Kết quả ………………………………………………………………..33
5.2.2 Nhận xét chung………………………………………………………..42
5.3 Nhận dạng mống mắt…………………………………………………………42
5.3.1 Nền tảng phần cứng
………………………………………………..42
5.3.2 Cơ sở dữ liệu …………………………………………………………42
5.3.3 Phương thức tiếp cận…………………………………………………43
5.3.4 Kết quả………………………………………………………………..44
5.3.4.1 Kết quả độ chính xác……………………………………….44
5.3.4.2 Kết quả thời gian đáp ứng………………………………….46
ix
5.3.5 Nhận xét………………………………………………………………47
5.4 Mô hình nhận dạng mống mắt bằng GUI…………………………………….48
5.4.1 Giao diện chương trình………………………………………………..48
5.4.2 Quá trình hoạt động………………………………………………….49
5.4.3 Kết quả………………………………………………………………52
5.4.4 Nhận xét……………………………………………………………..54
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN………………………………54
6.1 Kết luận……………………………………………………………………….54
6.2 Hướng phát triển………………………………………………………………55
TÀI LIỆU THAM KHẢO………………………………………………………………..55
PHỤ LỤC………………………………………………………………………………58
x
DANH MỤC HÌNH VẼ
Hình 3.1 Cấu tạo ngoài của mắt…………….……………………………………………..8
Hình 3.2 Quá trình tạo cơ sở dữ liệu hệ thống.……………………………………………9
Hình 3.3 Quá trình nhận dạng mống mắt………………………………………………...10
Hình 3.4 : Quá trình phân đoạn mống mắt……………………………………………….12
Hình 3.5 Mô tả giải thuật kNN…………………………...………………………………14
Hình 3.6 Mô tả Diffirence of Gaussian- DoG……………………………………………16
Hình 3.7 Mô tả quá trình xác định điểm cực trị………………………………………….16
Hình 3.8 Mô tả vị trí chính xác của điểm cực trị…………………………………………18
Hình 3.9 Mô tả quá trình phân hướng……………………………………………………20
Hình 3.10 Quá trình mô tả đặc trưng SIFT………………………………………….……21
Hình 4.1 Một số ảnh trong tập dữ liệu……………………………………………………25
Hình 4.2 Biểu đồ biễu diễn sự thay đổi của N (Số lượng keypoint tiềm năng sau khi lọc…
ngưỡng tương phản) và N2 (số lượng đặc trưng SIFT ) theo N1 (số lượng keypoint….
tiềm năng sau khi qua lọc ngưỡng tương phản) ở 384 ảnh…………………………...27
Hình 4.3 So sánh kết quả giữa phương pháp của [Jayaraman, 2012] với đổi mới đề ra...32
Hình 5.1 Một số kết quả khi mô phỏng đối sánh cho 2 ảnh của cùng một mống mắt…..33
Hình 5.2 Một số kết quả khi mô phỏng đối sánh cho mống mắt bên trái và bên phải của…
cùng một người…………………………………………………………………….…34
Hình 5.3 Một số kết quả mô phỏng đối sánh cho 2 ảnh của một mống mắt, trong đó một…
ảnh đã có sự thay đổi cường độ ánh sáng…………………………………………….35
Hình 5.4 Một số kết quả mô phỏng đối sánh cho 2 ảnh của một mống mắt, trong đó một…
ảnh đã có sự biến đổi xoay………………………………………….………...……...36
xi
Hinh 5.5 Một số kết quả mô phỏng đối sánh cho 2 ảnh của một mống mắt, trong đó một
ảnh đã có sự biến đổi tỉ lệ……………………………………….…………...…..…...37
Hình 5.6 Mô phỏng đối sánh cho ảnh Lena gốc và ảnh đã thu nhỏ đến 90%....................38
Hình 5.7 Mô phỏng đối sánh cho ảnh gốc và ảnh đã thu nhỏ đến 70%.............................38
Hình 5.8 Mô phỏng đối sánh cho ảnh gốc và ảnh đã xoay 30 độ ……….……………....39
Hình 5.9 Mô phỏng đối sánh cho ảnh gốc và ảnh đã xoay 45 độ …….………………….40
Hình 5.10 Mô phỏng đối sánh cho ảnh gốc và ảnh đã xoay 60 độ ….…………………..40
Hình 5.11 Mô phỏng đối sánh cho ảnh gốc và ảnh tăng cường độ sáng (Gamma
Correction=1.5) ……………………………………………………………………....41
Hình 5.12 Mô phỏng đối sánh cho ảnh gốc và ảnh tăng cường độ sáng (Gamma
Correction=2.5) ……………………………………………………………………....41
Hình 5.13 : Biễu diễn độ chính xác theo số lượng truy vấn……………………………...45
Hình 5.14 Biểu đồ thời gian đáp ứng theo số lượng truy vấn……………………………46
Hình 5.15 Biểu đồ thời gian đáp ứng theo số lượng truy vấn……………………………48
Hình 5.16 Giao diện chương trình………………………………………………………..48
Hình 5.17 Giao diện hoạt động…………………………………………………….……..49
Hình 5.18 Hướng dẫn chạy nhận dạng trong GUI(1)…………………………………….50
Hình 5.19 Hướng dẫn chạy nhận dạng trong GUI(2)…………………………………….51
Hình 5.20 Kết quả nhận dạng trong GUI (1) ……………...……………………………..52
Hình 5.21 Kết quả nhận dạng trong GUI (2)……………………………………………..52
Hình 5.22 Kết quả nhận dạng trong GUI (3)……………………………………………..53
Hình 5.23 Kết quả nhận dạng trong GUI (4)……………………………………………..53
xii
DANH MỤC BẢNG
Bảng 2.1: Độ chính xác của các công nghệ sinh trắc học…………………………………6
Bảng 4.1 Khảo sát N(số lượng keypoint tiềm năng sau bước đầu), N1(số lượng keypoint
tiềm năng sau khi qua lọc ngưỡng tương phản), N2 (số lượng đăc trưng SIFT ) ở 384
ảnh…………………………………………………………………………………….26
Bảng 4.2 Phần trăm chính xác khi truy dựa trên pp của [Jayaraman, 2012]…………….30
Bảng 4.3 Phần trăm chính xác khi truy vấn ảnh dựa trên đổi mới đề ra
………………31
Bảng 5.1 : Kết quả độ chính xác của chương trình nhận dạng……………………………...
theo số lượng ảnh truy vấn………………………………………………………………44
Bảng 5.2 : Kết quả đáp ứng thời gian của chương trình nhận dạng theo số lượng ảnh truy
vấn… ……………………………………………………………………………...…46
xiii
DANH MỤC TỪ VIẾT TẮT
kNN
k Nearest Neighbor
SIFT
Scale-invariant feature transform
DoG
Diffirence of Gaussian
GUI
Graphical User Interface
xiv
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN
1.1 Đặt vấn đề
Trước sự bùng phát của đại dịch Corona diễn ra từ năm 2019 đến nay, xã hội gặp
thiệt hại lớn. Công nghệ đứng trước thử thách đổi mới để thích nghi. Trong những thử
thách đó có thúc đẩy phương thức sử dụng không tiếp xúc trên những thiết bị để hạn chế
sự lây lan virus và đảm bảo sự an toàn cho người sử dụng. Thấy được xu hướng phát triển
trên, luận văn nghiên cứu hệ thống nhận diện mống mắt với để tài : “Ứng dụng thông tin
màu sắc và thuật toán SIFT vào nhận dạng mống mắt” nhằm mục đích đề ra một giải pháp
giải quyết những khó khăn và hạn chế mà những hệ thống xác thực sinh trắc khác đang
gặp phải trong trình hình này
Câu hỏi nghiên cứu đặt ra của luận văn là:
Độ chính xác và thời gian đáp ứng của chương trình nhận dạng là bao nhiêu ?
Có thể điều chỉnh số lượng đặc trưng SIFT trích xuất trên mỗi ảnh hay không?
Sử dụng phương pháp trích chọn đặc trưng màu sắc nào là hiệu quả ?
1.2 Phạm vi và phương pháp nghiên cứu
Thiết kế chương trình nhận dạng mống mắt
Thực hiện chương trình trên phần mềm Matlab
Giới hạn số ảnh huấn luyện cho mỗi đối tượng bằng 1.
Khảo sát với số lượng lớn lần thực hiện để đưa ra kết quả
Sử dụng tập dữ liệu về mống mắt UPOL để đánh giá
1
1.3 Đóng góp của luận văn
 Dựa trên lý thuyết, luận văn đã thực hiện hóa giải thuật SIFT
 Đề xuất, chứng minh phương pháp điều chỉnh số lượng đặc trưng SIFT
 Đề xuất, chứng minh phương pháp trích chọn đặc trưng màu sắc hiệu quả
 Khảo sát độ chính xác và thời gian đáp ứng tại mỗi giá trị k, với k là số lượng ảnh
truy xuất ( truy xuất k ảnh từ 128 ảnh đã huấn luyện)
 Mô phỏng kết quả đối sánh ảnh trên MATLAB
 Mô phỏng chương trình nhận dạng mống mắt bằng GUI trên MATLAB
1.4 Cấu trúc của luận văn
Nội dung của luận văn bao gồm 6 chương
Chương 1 : Giới thiệu tổng quan
Chương 2 : Công nghệ sinh trắc học
Trong chương 2 Những khái quát về công nghệ sinh trắc học, ưu nhược , thách thức của
các công nghệ sinh trắc sinh trắc học trong tình hình Covid19 bùng phát sẽ được trình bày
Chương 3 : Mô hình nhận dạng mống mắt
Đưa ra mô hình nhận dạng mống mắt tổng quát và thiết kế các phận xử lý cho mô hình
nhận dạng
Chương 4 : Cải thiện mô hình nhận dạng
Trình bày và chứng minh 2 đề xuất cải thiện cho mô hình nhận dạng mống mắt
2
Chương 5 : Kết quả và nhận xét
Trình bày những kết quả cho những mục tiêu ban đầu
Chương 6 : Kết luận và phương hướng phát triển
Nêu ra những thành tích đã đạt. phương hướng phát triển nghiên cứu trong tương lai.
3
CHƯƠNG 2
CÔNG NGHỆ SINH TRẮC HỌC
2.1 Giới thiệu
Công nghệ sinh trắc học là công nghệ nhận dạng tự động một cá nhận dựa trên những đặc
trưng cơ thể hoặc hành vi của cá nhân đó chẳng hạn như vân tay , mống mắt, khuôn mặt ,
giọng nói…
Những năm gần đây, công nghệ nhận dạng sinh trắc học dần đóng vai trò quan trọng
trong lĩnh vực bảo mật như: bảo mật máy tính, điện thoại, tài khoản ngân hàng, các hệ
thống kiểm soát ra vào,…Đảm bảo an ninh công cộng như hệ thống camera giám sát công
cộng, kiểm soát xuất nhập cảnh,… hay quá trình xây dựng các thành phố thông minh…
.Công nghệ sinh trắc học đang được sử dụng ngày càng rộng rãi tại nhiều quốc gia, kể đến
như :
Năm 2004 Hoa Kỳ kiểm soát dấu vân tay của khách du lịch nước ngoài
Năm 2007 Nhật Bản kiểm soát dấu vân tay du khách nước ngoài
Năm 2017 Trung Quốc kiểm soát dấu vân tay du khách nước ngoài
Năm 2018 Singapore thử nghiệm quét mống mắt thay thế vân tay
Năm 2020 Singapore đã áp dụng công nghệ nhận dạng mống mắt và khuôn mặt thay thế
quét vân tay để xác định danh tính người nhập cảnh tại tất cả các trạm kiểm soát nhập
cảnh
Tháng 6/2020 EU triển khai xây dựng hệ thống sinh trắc học bảo đảm an ninh biên giới
Tháng 3 năm 2021 sân bay Dubai thuộc Các tiểu vương quốc Ả-Rập Thống nhất (UAE)
sử dụng công nghệ nhận dạng mống mắt làm thủ tục hộ chiếu.
Với sự bùng nổ mạnh mẽ của thời đại công nghệ số, những nghiên cứu và đầu tư
về công nghệ sinh trắc học đang là vấn đề cấp bách để thúc đẩy nền công nghệ trong
nước.
4
2.2 Các công nghệ sinh trắc học
Các loại công nghệ sinh trắc học phổ biến trên thế giới kể đến như: Nhận diện khuôn
mặt, nhận dạng vân tay, nhận dạng mống mắt, nhận dạng võng mạc, nhận dạng tiếng
nói,…
Nhận dạng khuôn mặt là công nghệ nhận dạng dựa trên những đặc điểm khác biệt trên
khuôn mặt của mỗi người. Thiết bị dùng để thu thập dữ liệu có thể là bất kì camera nào
miễn độ phân giải vừa đủ, thách thức của nhận dạng khuôn mặt là ảnh hưởng của ánh
sáng môi trường, sự thay đổi về độ tuổi, góc chụp, khoảng cách, … Trong tình hình
Covid-19 bùng phát, độ chính xác của nhận dạng khuôn mặt sẽ kém đi do hoạt động mang
khẩu trang đang gắng liền với hoạt động sinh hoạt, sản xuất của con người
Nhận dạng vân tay là phương pháp nhận dạng dựa trên đặc trưng vân tay trên mỗi cá
nhân, đặc trưng vân tay là có tính duy nhất và ổn định cao do đó hệ thống được đánh giá
tốt, có độ chính xác cao. Tuy nhiên công nghệ này yêu cầu tiếp xúc trực tiếp để thu thập
dữ liệu, việc này cũng làm dấy lên nguy cơ lây nhiễm virus, mất vệ sinh cho người sử
dụng.
Nhận dạng giọng nói : là công nghệ nhận dạng dựa trên giọng nói do giọng nói giữa các
cá nhân khác nhau cũng có những đặc điểm không giống nhau, giá thành của công nghệ
thấp hơn các loại khác , thường được ứng dụng theo hướng điều khiển thiết bị thông minh
và không được đánh giá cao trong lĩnh vực bảo mật vì giọng nói có thể dễ dàng thay đổi
theo thời gian, dễ bị bắt chước, dễ ghi âm ,…
Nhận dạng võng mạc là công nghệ nhận dạng dựa trên đặc trưng võng mạc ở mỗi người,
nhận dạng võng mạc có độ chính xác rất cao ,tốc độ nhanh, rất khó bị đánh lừa. Tuy nhiên
công nghệ này đòi hỏi thiết bị chuyên dụng để quét dữ liệu, người sử dụng phải áp sát vào
thiết bị để nhận dạng
5
Nhận dạng mống mắt là công nghệ xác thực danh tính dựa trên cấu trúc của mống mắt .. ,
Quá trình nhân dạng mống mắt có thể diễn ra từ xa, nhanh chóng, ổn định, chính xác cực
cao và khó giả mạo vì thế công nghệ này hiện đang được áp dụng trong việc nhận diện
công dân, xác thực hộ chiếu, nhân khẩu tại nhiều quốc gia tiên tiến trên thế giới.
2.3 So sánh độ chính xác giữa các công nghệ sinh trắc học
Dựa vào thống kê[22] người ta đưa ra bảng so sánh về độ tin cậy của công nghệ nhận
dạng mông mắt so với các công nghệ sinh trắc học khác như sau:
Bảng 2.1: Độ chính xác của các công nghệ sinh trắc học
Phương thức
Tỷ lệ nhận dạng sai
Nhận dạng mống mắt
Nhận dạng vân tay
Nhận dạng bàn tay
Nhận dạng khuôn mặt
Nhận dạng chữ ký
Nhận dạng giọng nói
1/1,200,000
1/1000
1/700
1/100
1/100
1/30
Từ bảng so sánh trên, ta nhận thấy công nghệ nhận dạng mống mắt có độ chính xác
vượt trội so với các công nghệ khác
2.4 Kết luận
Qua nội dung Chương 2 ta kết luận công nghệ sinh trắc học trong nước cần được
quan tâm và thúc đẩy nhiều hơn. Trong các công nghệ sinh trắc, nhận dạng mống mắt đã
chứng tỏ độ chính xác, ưu điểm vượt trội so với các công nghệ khác. Ngoài ra, vì nhận
dạng mống mắt là công nghệ hoạt động không cần tiếp xúc trực tiếp nên nhận dạng mống
mắt đang được thế giới xem là một giải pháp để đem lại sự an toàn cho người sử dụng
trong bối cảnh Covid-19 bùng phát hiện nay.
6
CHƯƠNG 3
MÔ HÌNH NHẬN DẠNG MỐNG MẮT
3.1 Giới thiệu
Dựa vào những nghiên cứu sinh trắc học, mống mắt là đặc điểm có tính phân biệt
giúp nhận dạng, xác minh thân phận với độ chính xác cao, ổn định và không khó khăn
trong việc thu thập dữ liệu. Về khía cạnh thương mại, từ lâu công nghệ nhận dạng mống
mắt đã là công nghệ khao khát của con người, chúng xuất hiện trên các thước phim khoa
học viễn tưởng của Mỹ những thập kỉ trước, ở đó công nghệ nhận dạng mống mắt cho
thấy sự tân tiến, nhanh chóng, chính xác cao và khó giả mạo. Ngày nay, nhờ những tiến
bộ về khoa học - kĩ thuật, công nghệ nhận dạng mống mắt đã thành hiện thực và phổ biến
trên thế giới. Tháng 10 năm 2020 Singapore đã áp dụng công nghệ nhận dạng mống mắt
và khuôn mặt thay thế quét vân tay để xác định danh tính người nhập cảnh tại tất cả các
trạm kiểm soát nhập cảnh. Tháng 3 năm 2021 sân bay Dubai thuộc Các tiểu vương quốc
Ả-Rập Thống nhất (UAE) sử dụng công nghệ nhận dạng mống mắt làm thủ tục hộ chiếu
cho hành khách không cần phải xuất trình một loại giấy tờ
Công nghệ nhận dạng mống mắt đang được các quốc gia trên thế giới xem là công
cụ giúp kiểm soát sự lây lan của chủng vi rút corona, đảm bảo an toàn cho người sử dụng
3.2 Một số nghiên cứu liên quan
Quá trình nghiên cứu và phát triển công nghệ nhận dạng mống mắt đã được hình
thành từ rất sớm. Trong đó một số nghiên cứu liên quan đến luận văn kể đến như nghiên
cứu của Mohamad Aly (2006) áp dụng giải thuật SIFT và các phương pháp đo lường
khoảng cách vào quá trình đối sánh để nhận dạng khuôn mặt. H.B Kekre và cộng sự
(2010) tiến hành nghiên cứu nhận dạng mống mắt qua những đặc trưng được trích dựa
trên Haarlet Pyramid, H.B Kekre và cộng sự (2010) trình bày phương pháp nhận dạng
mống mắt sử dụng vector lượng tử; Alaa Eleyan và cộng sự (2013) nghiên cứu nhận dạng
mống mắt qua đặc trưng SIFT trích xuất trên những vùng ảnh thuộc mống mắt. Giáo sư
R.H. Kulkarni và cộng sự (2014) sử dụng giải thuật SIFT để trích xuất đặc trưng mống
mắt. Năm 2018, Yuslena Sari và cộng sự khảo sát nhận dạng mống mắt dựa trên thuật
toán PCA và các phương pháp đo lượng khoảng cách.
7
Từ những nghiên cứu ta nhận thấy nhận dạng mống mắt dựa trên các đặc trưng
toàn cuc hầu như không có khả năng đem lại hiệu suất cao, nhạy cảm với tác động môi
trường, đặc trưng cục bộ đem đến chính xác, ổn định cao trước những ảnh hưởng môi
trường nhưng lại có khuyết điểm bởi thời gian tính toán lâu.
Luận văn sử dụng đặc trưng cục bộ SIFT vì thế cần đề ra những giải pháp giảm
thời gian tính toán, trong phần kế tiếp luận văn đề cập những kiến thức tổng quát về mống
mắt để đề ra giải pháp hợp lý giải quyết vấn đề trên
3.3 Tổng quan về mống mắt
Mống mắt là vòng sắc tố nằm giữa đồng tử và củng mạc, giữ vai trò quyết định màu
của mắt. Trong đó củng mạc là phần màu trắng nằm ngoài và đồng tử là phần màu đen
nằm bên trong mống mắt
Hình 3.1 Cấu tạo ngoài của mắt
Mống mắt có chức năng điều chỉnh kích thước đồng tử và số lượng ánh sáng đi
vào mắt. Đường kính trung bình của mống mắt là 12 mm và kích thước đồng tử
biến đổi từ 10 đến 80% đường kích mống mắt
8
Cấu trúc trên mống mắt có tính đặc thù rất cao, dù là mống mắt ở các cặp sinh đôi
hay cùng một người (trái và phải ) cũng có những điểm khác nhau
Màu sắc trên mống mắt chịu ảnh hưởng lớn bởi loại gien trong cơ thể
Màu mắt sẫm màu như nâu phổ biến nhất thế giới. Tuy nhiên, do đột biến gen xuất
hiện thêm nhiều màu mắt hiếm có như mắt màu đỏ hồng, hổ phách, xanh lá…
Xem xét sự đa dạng màu sắc tổng thể của mắt và sự đa dạng của các mảng màu
thuộc mống mắt. Ta nhận thấy màu sắc trên mống mắt rất đa dạng nên ta có thể sử dụng
đặc điểm màu sắc để thực hiện truy vấn dữ liệu làm hệ thống nhanh hơn.
Qua đó, phương pháp nhận dạng mống mắt của luận văn sẽ tiếp cận dựa trên đặc
trưng màu sắc và cấu trúc
3.4 Xây dựng mô hình nhận dạng mống mắt
Mô hình nhận dạng mống mắt bao gồm hai giai đoạn chính:
Giai đoạn 1: Tạo dữ liệu hệ thống
Giai đoạn 2: Nhận dạng mống mắt
3.4.1 Giai đoạn 1: Tạo dữ liệu hệ thống
Thực hiện tạo cơ sở dữ liệu của hệ thống
Hình 3.2 Quá trình tạo cơ sở dữ liệu hệ thống
Chương trình đưa từng ảnh huấn luyện đến bộ phân đoạn và bộ trích chọn đặc
trưng sau đó lưu trữ những đặc trưng đã tính toán vào bộ dữ liệu hệ thống. Quá trình thực
hiện đến khi tất cả ảnh huấn luyện được xử lý xong.
9
3.4.2 Giai đoạn 2: Nhận dạng mống mắt
Thực hiện nhận dạng cho ảnh vào hệ thống
Hình 3.2 Quá trình nhận dạng mống mắt
10
Hai giai đoạn chính trên được xây dựng từ các bộ xử lý chính sau : bộ phân đoạn, bộ trích
chọn đặc trưng, bộ truy xuất, bộ đối sánh.
 Bộ phân đoạn mống mắt : Thực hiện chức năng xác định vùng ảnh mống mắt và
trích chọn vùng ảnh quan tâm.
 Bộ trích chọn đặc trưng: Thực hiện trích chọn đặc trưng màu sắc trưng và đặc
trưng SIFT
 Bộ truy xuất : Thực hiện truy xuất một phần dữ liệu trong dữ liệu hệ thống
 Bộ đối sánh: Thực hiện đánh giá độ tương thích giữa hai ảnh
3.5 Xây dựng các bộ xử lý
3.5.1 Xây dựng bộ phân đoạn mống mắt
Bộ dữ liệu của hệ thống chứa những ảnh mắt. Trên mỗi ảnh bao gồm những thông
tin dư thừa (lông mi, củng mạc, đồng tử, màng mắt) có thể làm việc nhận dạng không
chính xác, vì vậy cần xây dựng bộ phân đoạn để xác định vùng mống mắt và trích chọn
vùng ảnh quan tâm để tăng độ chính xác và tối ưu dữ liệu lưu trữ.
Việc xác định vùng mống mắt cần một số yêu cầu như chính xác, nhanh chóng để
phù hơp với thực tế.
Trong luận văn này, bộ phân đoạn thực hiện dựa vào phương pháp Histogram của
[Ibrahim, 2013] trình bày trong nghiên cứu của mình. Ưu điểm của phương pháp cho thấy
hời gian xử lý nhanh hơn 4.5 lần so với phương pháp xác định mống mắt bằng thuật toán
Circle Hough Transform
Cụ thể quá trình phân đoạn dựa vào Histogram thực hiện các bước sau:
1. Chuyển đổi ảnh màu sang ảnh xám sau đó xây dựng biểu đồ histogram.
11
2. Sử dụng thông tin từ biểu đồ Histogram, chọn giá trị ngưỡng để tách biệt phần kết
mạc và phần còn lại của mắt.
3. Tạo dựng đồ thị bằng cách lấy tổng cường độ trên từng cột ảnh, lần lượt từ trái
sang phải. Tại cực trị bên trái và phải của đồ thị ta thu về vị trí giáp ranh kết mạc mống mắt bên trái và phải của mắt
4. Thực hiện tương tự cho chiều từ trên xuống dưới ta thu về vị trí giáp ranh kết mạc
và mống mắt phía trên và dưới của mắt
5. Từ tập điểm trên, dễ dàng thực hiện việc cắt phần mống mắt từ ảnh mắt ban đầu
Hình 3.3 : Quá trình phân đoạn mống mắt
3.5.2 Xây dựng bộ trích chọn đặc trưng màu sắc.
Khi hoàn thành quá trình phân đoạn ảnh, trích xuất đặc trưng màu sắc được sử dụng
để lọc ra những ảnh huấn luyện có màu sắc gần giống với màu của ảnh vào dựa trên đặc
trưng màu sắc, nhằm giảm số lượng ảnh tham gia vào quá trình đối sánh, giảm thời gian
xử lý.
12
Để trích xuất đặc trưng màu sắc, một trong những phương pháp thường sử dụng là
histogram màu sắc. Theo phương pháp này, kết quả của histogram sẽ biểu diễn thành
vector đặc trưng màu sắc. Tuy nhiên phương pháp này gặp phải nhược điểm khi số chiều
của một vector đặc trưng rất lớn , dù áp dụng phương phảp lượng tử hoặc tiền xử lý thì
vector đặc trưng khoảng 100 chiều trở lên.
[Jayaraman, 2012] , trong nghiên cứu nhận dạng mống mắt dựa trên đặc trưng SUFT của
mình, có đề ra phương pháp trích đặc trưng màu sắc 2 chiều từ không gian màu YCrCb để
truy vấn ảnh
𝑌(𝑥, 𝑦) = 16 +
Cb(𝑥, 𝑦) = 128 +
Cr (𝑥, 𝑦) = 128 +
1
(65.7 𝑅(𝑥, 𝑦) + 129 𝐺 (𝑥, 𝑦) + 25 𝐵(𝑥, 𝑦))
256
1
256
1
256
(1)
(−37.9 𝑅(𝑥, 𝑦) − 74.4 𝐺 (𝑥, 𝑦) + 112.4 𝐵 (𝑥, 𝑦))
(2)
(112.4 𝑅(𝑥, 𝑦) − 94.1 𝐺 (𝑥, 𝑦) − 18.2 𝐵(𝑥, 𝑦))
(3)
𝑏𝐼 =
1
∑ 𝐶𝑏 (𝑥, 𝑦)
|𝐼|
(4)
1
∑ 𝐶𝑟 (𝑥, 𝑦)
|𝐼|
(5)
∀(𝑥,𝑦)𝜖𝐼
𝑟𝐼 =
∀(𝑥,𝑦)𝜖𝐼
DL =(bI , rI ) là vector đặc trưng màu sắc trích chọn trên mỗi ảnh.
3.5.3 Xây dựng bộ truy xuất.
Nhiệm vụ của bộ truy xuất là dựa vào đặc trưng màu sắc thực hiện truy xuất một phần dữ
liệu từ bộ dữ liệu lưu trong hệ thống. Việc truy xuất đem lại tốc độ xử lý nhanh hơn.
Cách thức truy xuất của bộ truy xuất.dựa trên giải thuật k hàng xóm gần nhất ( k Nearest
Neighboor ), là thuật toán tìm kiếm k đối tượng “gần nhất” đối tượng kiểm tra, tiêu chuẩn
13
đánh giá “gần” dựa trên một trong các phương pháp đo lường khoảng cách như Euliance,
Manhattan, …
Xem đặc trưng màu sắc trích chọn từ ảnh kiểm tra là đối tượng kiểm tra. Bằng giải thuật
kNN ta dễ dàng truy xuất ra k ảnh có đặc trưng màu sắc gần nhất với ảnh kiểm tra.
Hình 3.4 Mô tả giải thuật kNN
3.5.4 Bộ trích chọn đặc trưng SIFT
3.5.4.1 Giới thiệu thuật toán SIFT
Scale Invariant Feature Transform - SIFT đưa ra bởi Lowe [1999,2004] là thuật
toán xác định những điểm đặc trưng cục bộ và mô tả thành bộ các vector cột. Mỗi vector
đều sự độc lập và bất biến với những phép biến đổi như co dãn, xoay, dịch chuyển , góc
nhìn hoặc sự thay đổi của cường độ ánh sáng. Đặc trưng SIFT đã được chứng minh là bất
biến đối với phép co dãn, phép xoay và bất biến đối với hiện tượng méo hình [Karami,
2015]. Ngày nay, phương pháp trích chọn đặc trưng dựa trên thuật toán SIFT được ứng
dụng rộng rãi trong xác định, nhận dạng đối tượng, mô hình hóa 3D …
14
3.5.4.2 Trích chọn đặc trưng SIFT
Quá trình trích chọn đặc trưng SIFT từ một ảnh được thực hiện theo các bước
chính sau:
Phát hiện các điểm cực trị trong không gian tỉ lệ (Scale -Space Extrema
Detection)
Ở giai đoạn này, giải thuật SIFT thực hiện xác định các điểm cực trị trên tất cả các
tỉ lệ và vị trí của ảnh. Điều được thực hiện hiệu quả thông qua hàm Diffirent of GaussianDoG ở những tỉ lệ khác nhau.. Những điểm cực trị đó là những điểm tiềm năng có đặc
điểm bất biến trước co giãn và xoay ảnh. Trong bài báo gốc chúng được Lowe gọi bằng
điểm hấp dẫn tiềm năng (potential interest point hoặc là keypoint candidate)
Ảnh DoG ( Diffirence of Gaussian ), ký hiệu D(x, y, σ) của một ảnh tại tỉ lệ khác
nhau được được tính bởi :
D(x, y, σ) = (G(x, y, kσ) − G(x, y, σ)) ∗ I(x, y)
(6)
= L(x, y, kσ) − L(x, y, σ)
Trong đó
𝑥 2 +𝑦2
1
−
G(x, y, σ) =
ⅇ 2𝜎2
2𝜋𝜎 2
(7)
Các ảnh D(x, y, σ) sau khi tính xong sẽ nhóm lại thành octave . Mỗi octave tương
ứng với gấp đôi giá trị sigma σ ,và giá trị k được chọn để cố định số ảnh D(x, y, σ) được
tạo ra trên mỗi octave.
15
Trong mỗi octave, giải thuật SIFT thực hiện xác định các điểm cực trị trên những
DoG tại các tỉ lệ khác nhau bằng cách so sánh mỗi pixel ở trên DoG đang xét với 8 pixel
xung quanh và 9 pixel trên các DoG lân cận.
Hình 3.5 Mô tả Diffirence of Gaussian- DoG
Hình 3.6 Mô tả quá trình xác định điểm cực trị
16
Chỉ định vị trí điểm hấp dẫn ( Keypoint Localization)
Sau bước thực hiện đầu tiên, có nhiều điểm hấp dẫn tiềm năng được xác định (phụ
thuộc vào kích thước ảnh, nội dung ảnh, thông số lựa chọn khi thực hiện giải thuật) nhưng
không đem lại hiệu suất cao và tăng thời gian xử lý .Vì thế, tại mỗi điểm hẫn dẫn đã xác
đinh, Lowe xây dựng một mô hình lọc để lấy những điểm ổn định. Mô hình xây dựng qua
3 bước
Nội suy vị trí chính xác (Interpolation of Nearby Data for Accurate
Position)
Do những giới hạn trong quá trình lấy mẫu nên vị trí đã xác định của những điểm
hấp dẫn tiềm năng đã xác định đã xác định ở bước đầu chưa được chính xác( Minh họa
hình 3.1) . Vì thế, trong mô hình, Taylor mở rộng được sử dụng để nội suy vị trí chính
xác, điều này khá quan trọng để cải thiện tính ổn định, đặc biệt là ở các ảnh có độ phân
giải thấp
Ta có Taylor bậc 2 như sau
𝐷 (𝑥 ) = 𝐷 +
𝜕𝐷 𝑇
1
𝜕2𝐷
𝑥 + 𝑥𝑇
𝑥
𝜕𝑥
2
𝜕𝑥 2
(8)
D và các đạo hàm của D được tính toán tại vị trí các điểm hấp dẫn tiềm năng. Từ đó ta có
thể xác định vị trí chính xác của điểm hấp dẫn tiềm năng, 𝑥̂ bằng cách lấy đạo hàm hàm
trên theo 𝑥 và đặt phương trình bằng 0 . Khi đó
𝑥̂ = −
𝜕 2 𝐷 −1 𝜕𝐷
𝜕𝑥 2 𝜕𝑥
17
(9)
Hình 3.7 Mô tả vị trí chính xác của điểm cực trị
Loại bỏ tương phản thấp (Discarding Low Constrast Keypoint)
Tại mỗi điểm hấp dẫn tiềm năng, độ tương phản thấp có thể dễ bị ảnh hưởng bởi
nhiễu. Do đó mô hình xây dựng bước này để loại bớt những điểm nhỏ hơn một giá trị
ngưỡng 𝑡𝑝 cho trước. Tất nhiên, ngưỡng được lựa chọn có thể linh hoạt thay đổi tùy
vào ngữ cảnh, ứng dụng mà người nghiên cứu đối mặt , ví dụ nghiên cứu xác định đối
tượng trong ngữ cảnh đơn hay đa đối tượng chồng lấn ngẫu nhiên, ứng dụng phân lớp
đối tượng nào đó dựa trên đặc trưng SIFT
1 ∂DT
D(x̂) = D +
x̂
2 ∂x
18
(11)
Trong bài báo gốc [Lowe,2004] . Lowe sử dụng ngưỡng 𝑡𝑝 = 0.03 . Từ đó ta có ví
dụ cụ thể sau: |𝐷(𝑥̂ )| < 𝑡𝑝 =0.03 thì loại bỏ , với giả sử giá trị của mỗi pixel đã được quy
về khoảng [0, 1]
Loại bỏ đáp ứng cạnh ( Eliminating edge responses)
DoG rất nhạy cảm với cạnh, để loại bỏ điểm hấp dẫn tiềm năm là các cạnh, SIFT
sử dụng ma trận Hessian 2x2 để tính ra các những đường cong chính. Khi các giá trị riêng
lớn hơn một ngưỡng nào đó thì điểm hấp dẫn tiềm năng sẽ bị loại bỏ. Cho một đỉnh
(𝑥, 𝑦, 𝜎) ; thuật toán đánh giá Hessian tại (𝑥, 𝑦, 𝜎) trên DoG tỷ lệ 𝜎 được tính như sau:
𝐻=[
Nếu
𝑇𝑟(𝐻)2
𝐷𝑒𝑡(𝐻)
>
(r+1)2
r
𝐷𝑥𝑥
𝐷𝑥𝑦
𝐷𝑥𝑦
]
𝐷𝑦𝑦
(12)
𝑇𝑟 (𝐻 ) = 𝐷𝑥𝑥 + 𝐷𝑦𝑦
(13)
𝐷ⅇ𝑡 (𝐻 ) = 𝐷𝑥𝑥𝐷𝑦𝑦 − (𝐷𝑥𝑦) 2
(14)
thì điểm hấp dẫn tiềm năng đó cần loại bỏ
Trong quá trình thực nghiệm luận văn sử dụng 𝑟 = 10 dựa theo nghiên cứu trên bài
báo của Lowe năm 2004
19
Xác định hướng cho các điểm hấp dẫn (Orientation assignment)
Trong phần này SIFT thực hiện phân hướng cho mỗi điểm hấp dẫn. Hướng phân cho
điểm hấp dẫn sẽ dựa vào lược đồ hướng (Orientation Histogram ), hình thành từ các
định hướng(Gradient) của một vùng láng giềng quanh điểm hấp dẫn.
𝑚(𝑥, 𝑦) = √(𝐿(𝑥 + 1, 𝑦) − 𝐿(𝑥 − 1, 𝑦)) + (𝐿 (𝑥, 𝑦 + 1) − 𝐿(𝑥, 𝑦 − 1))
2
2
(15)
𝜃 (𝑥, 𝑦) = tan−1 ( (𝐿(𝑥, 𝑦 + 1) − 𝐿(𝑥, 𝑦 − 1) )/ (𝐿(𝑥 + 1, 𝑦) − 𝐿(𝑥 − 1, 𝑦)))
(16)
Trong đó 𝑚(𝑥, 𝑦) và 𝜃(𝑥, 𝑦) là độ lớn và hướng của định hướng. Khi đã tính toán
độ lớn và hướng của các pixel trong một vùng láng giềng của điểm hấp dẫn. Các ngăn của
lược đồ được tích lũy dựa trên trọng số định hướng 𝑚(𝑥, 𝑦) của mỗi pixel. Sau khi lược
đồ được tích lũy xong, những ngăn có độ lớn lớn hơn 80% độ lớn lớn nhất, được gán làm
hướng cho điểm hấp dẫn.
20
Hình 3.8 Mô tả quá trình phân hướng
Mô tả các điểm hấp dẫn (Keypoint descriptor)
Bước cuối cùng là quá trình mô tả đặc trưng của vùng lân cận quanh điểm hấp dẫn
thành vector đặc trưng SIFT. Quá trình mô tả dựa trên vùng lân cận 16x16 quanh mỗi
điểm hấp dẫn được chia thành 16 vùng lân cận con kích thước 4x4. Với mỗi vùng lân cận
con, tính lược đồ hướng (Oriantation Histogram ) 8 ngăn . Từ đó ta được 128 giá trị để có
thể biễu diễn thành một vector đặc trưng SIFT 128 chiều. Cuối cùng, vector đó được
chuẩn hóa nhằm đạt sự bất biến với thay đổi cường độ ánh sáng.
Hình 3.9 Quá trình mô tả đặc trưng SIFT
3.5.5 Xây dựng bộ đối sánh
Trong ứng dụng nhận dạng đối tượng, ảnh huấn luyện có số lượng đặc trưng tương
thích với ảnh kiểm tra nhiều nhất được xem là kết quả. Do đó, nhiệm vụ của bộ đối sánh
là xác định số lượng cặp tương thích giữa tập đặc trưng SIFT được trích chọn từ ảnh kiểm
tra và từ ảnh huấn luyện
21
Quá trình thực hiện như sau :
Với mỗi vector đặc trưng SIFT A được trích chọn từ ảnh kiểm tra, thực hiện tính
khoảng cách từ A đến các đặc trưng SIFT của ảnh huấn luyện ta thu được 1-NN là khoảng
cách nhất với A và 2-NN là khoảng cách gần nhì với A.
Nếu kết quả của tỉ lệ 1-NN/ 2-NN nhỏ hơn một giá trị ngưỡng thì được xem như
giữa ảnh kiểm tra và ảnh huấn luyện có một điểm tương thích. (luận văn sử dụng ngưỡng
0.7)
Thực hiện tương tự cho tất cả các vector đặc trưng của ảnh kiểm tra. Ta xác định
được số lượng cặp đặc trưng tương thích giữa ảnh kiểm tra và ảnh huấn luyện.
CHƯƠNG 4 MỘT SỐ CẢI THIỆN CHO MÔ HÌNH NHẬN DẠNG MỐNG MẮT
4.1 Giới thiệu
Ibrahim Meşecan,2013 nghiên cứu nhận dạng mống mắt bằng đặc trưng SIFT trích
chọn trên một số vùng ảnh của mống mắt. Kết quả nghiên cứu cho thấy dựa trên đặc trưng
SIFT trích từ những vùng ảnh như phần lõi , phía dưới đồng tử nhận dạng mống mắt
chính xác 100% (chưa rõ số ảnh dùng huấn luyện cho đối tượng), ở những vùng bên trái
hoặc phải đồng tử số lượng đặc trưng trích xuất ra quá ít để việc nhận dạng mống mắt đạt
chính xác. Phương pháp nhận dạng mống mắt bằng thuật toán SIFT cần cải thiện thời
gian xử lý
Trong Chương này em đề xuất hai cải tiến cho mô hình nhận dạng mống mắt của
ình. Một là đề xuất phương pháp điều chỉnh số lượng đặc trưng trích xuất ra trên mỗi ảnh
nhằm giảm thời gian xử lý và tăng độ chính xác. Hai là , trích chon đặc trưng màu sắc từ
không gian màu RGB thay cho không gian YCbCr như chương 4
22
4.2 Điều chỉnh số lượng đặc trưng SIFT
4.2.1 Giới thiệu
Theo giải thuật SIFT, số lượng điểm hấp dẫn ( keypoint) được trích xuất dựa trên
kích thước, nội dung, đặc trưng ảnh và thông số lựa chọn trong giải thuật. Trong thực tế
ảnh vào đưa vào hệ thống xử lý là ngẫu nhiên vậy nên việc thay đổi kích thước ảnh để
điều chỉnh số lượng điểm hấp dẫn là không khả thi ; tương tự việc điều chỉnh số lượng
điểm hấp dẫn dựa trên nội dung hay đặc trưng ảnh được xem như không khả thi. Do đó,
yếu tố mà nghiên cứu chú ý đó là dựa trên việc điều chỉnh thông số xử lý. [Ibrahim,2013]
sử dụng phương pháp Adaptive non-maximal suppression để giảm số lượng điểm hấp dẫn
khi số lượng điểm hấp dẫn trích xuất trên ảnh vượt quá 2000 gây ảnh hưởng đến bộ nhớ.
Nguyên tắc của Adaptive non-maximal suppression là khi số lượng điểm hấp dẫn vượt
quá số lượng mong muốn, thuật toán giữ điểm hấp dẫn có giá trị lớn nhất trong một vùng
tròn bán kính R và loại bỏ những điểm khác, quá trình tính toán lặp lại nhiều lần kéo theo
thời gian tính toán tăng.
[Ioan Păvăloi,2019] thực hiện khảo sát thay đổi ngưỡng tương phản trong thuật
toán SIFT, kết luận nghiên cứu nhận định khi giảm ngưỡng tương phản, độ chính xác và
số lượng đặc trưng SIFT tăng nhanh chóng; sau đó đến một mức nhất định, kết quả bão
hòa.
4.2.2 Đặt vấn đề
Nghiên cứu của [Ibrahim,2013] chỉ ra vấn đề rằng áp dụng thuật toán SIFT theo đúng
nguyên bản tạo ra số lượng đặc trưng không đủ ở một số vùng mống mắt.
23
Nghiên cứu của [Ioan Păvăloi,2019] dẫn ra hướng giải quyết cho vấn đề của Ibrahim, nếu
số lượng đặc trưng ở một số vùng mống mắt không đủ, ta cần giảm ngưỡng tương phản
đến khi độ chính xác đạt bão hòa.
Tuy nhiên khi áp dụng ta gặp vấn đề như sau:
Ảnh đưa vào hệ thống là ngẫu nhiên. Số lần thay đổi ngưỡng tương phản để đạt số
lượng đặc trưng mong muốn là không xác định. Nếu quá trình thay đổi ngưỡng tương
phản bị lặp lại nhiều lần sẽ kéo theo thời gian xử lý tăng lên, việc áp dụng không còn tính
khả thi
Đặt ra lập luận:
Giả sử sau bước đầu tiên của giải thuật ta xác định được N keypoint tiềm năng.
Qua quá trình lọc ngưỡng tương phản ta thu được N1 keypoint tiềm năng (N1 ≤ N ) , sau
khi loại bỏ đáp ứng cạnh ta còn lại N2 keypoint (N2 ≤ N1 ). Sau cùng số lượng đặc trưng
SIFT sẽ lớn hơn số lượng keypoint đã xác định, N2, do hướng phân cho mỗi keypoint luôn
lớn hơn hoặc bằng 1.
Nếu số lượng keypoint tiềm năng xác định được sau quá trình lọc ngưỡng tương
phản, N1, không lệch nhiều so với số lượng đặc trưng, ta có thể thay thế quá trình lọc
ngưỡng tương phản bằng quá trình truy vấn k keypoint tiềm năng có giá trị lớn nhất. Từ
đó số lượng đặc trưng sẽ ta kiểm soát thông qua việc lựa chọn thông số k
4.2.3 Thiết lập thử nghiệm
4.2.3.1 Cơ sở dữ liệu
Thực hiện trên tập dữ liệu UPOL, được tạo bởi Palacký University, Olomouc .Bao gồm
384 ảnh mắt từ 64 người; chụp 3 ảnh bên mắt trái và 3 ảnh bên phải trên mỗi người, kích
thước 768×576 pixels , ảnh màu định dạng PNG. Ảnh được chụp bằng thiết bị TOPCON
TRC50IA đã được kết nối với camera SONY DXC-950P 3CCD.
24
Mẫu mắt(3 trái – 3 phải) của một số người trong tập dữ liệu
Người 1:
Người 3:
Người 7:
Hình 4.1 Một số ảnh trong tập dữ liệu
4.2.3.2 Phương thức tiếp cận
Thực hiện giải thuật SIFT trên 384 ảnh dữ liệu,ghi nhận số lượng keypoint tiềm
năng sau bước đầu( N ),số lượng keypoint tiềm năng sau khi lọc ngưỡng tương phản (N1 )
, số lượng đặc trưng (N2).
25
4.2.3.3 Kết quả
Bảng 4.1 Khảo sát số lượng keypoint tiềm năng sau bước đầu(N), sau khi lọc ngưỡng
tương phản (N1), số lượng đăc trưng SIFT(N2) trên 384 ảnh
Số thứ tự
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
…
374
375
376
377
378
379
380
381
382
383
384
Tên ảnh
035R_3.png
029R_1.png
006R_3.png
029L_3.png
038R_3.png
036L_1.png
035R_2.png
047R_2.png
010R_2.png
006L_1.png
039L_1.png
010R_3.png
039L_3.png
041R_1.png
039R_1.png
…
060R_3.png
028L_3.png
062R_3.png
044R_2.png
060L_3.png
060L_1.png
028L_2.png
028R_1.png
062L_2.png
052R_2.png
055R_2.png
Min
Max
Trung bình
N
N1
N2
2389
2347
2439
2299
2328
2241
2322
2463
2268
2375
2171
2283
2239
2345
2339
…
2105
2198
2250
2285
1970
2051
2009
1956
2206
2342
1813
1596
2723
2200.471354
927
915
897
894
891
890
874
871
871
869
868
865
863
862
862
…
219
198
196
192
190
189
182
170
167
136
132
132
927
600.3385417
1048
1061
964
983
957
981
960
940
1006
936
964
994
989
919
903
…
218
199
185
252
195
226
214
186
188
169
142
142
1061
665.3020833
26
3000
2500
2000
1500
1000
500
1
12
23
34
45
56
67
78
89
100
111
122
133
144
155
166
177
188
199
210
221
232
243
254
265
276
287
298
309
320
331
342
353
364
375
0
N
N1
N2
Hình 4.2 Biểu đồ biễu diễn sự thay đổi của N (Số lượng keypoint tiềm năng sau khi lọc
ngưỡng tương phản) và N2 (số lượng đặc trưng SIFT ) theo N1 (số lượng keypoint tiềm
năng sau khi qua lọc ngưỡng tương phản) ở 384 ảnh
Nhận xét: Quan sát số liệu ở bảng 4.1 cùng với hình 4.2 ta nhận thấy N1 (số lượng
keypoint tiềm năng sau khi qua lọc ngưỡng tương phản) không bị ảnh hưởng bởi số
lượng N (số lượng điểm cực trị).
Mức độ chênh lệch giữa N2 và N1 là ngẫu nhiên , tuy nhiên sự chênh lệch không lớn.
4.2.4 Kết luận
Do số lượng điểm hấp dẫn sau khi lọc bằng ngưỡng tương phản và số lượng đặc
trưng SIFT không có sự chênh lêch lớn
Vậy nên nếu thay thế quá trình lọc ngưỡng tương phản bằng quá trình truy vấn k
keypoint tiềm năng có giá trị lớn nhất. Ta có thể kiểm soát số lượng đặc trưng thông qua
việc lựa chọn thông số k
27
4.3 Trích chọn đặc trưng màu sắc
4.3.1 Giới thiệu
Trong hơn thập kỉ phát triển, chủ đề “Trích chọn đặc trưng màu sắc từ ảnh màu “
được quan tâm và nghiên cứu nhiều. Mặc dù những đặc trưng màu sắc không thể giải
quyết hoàn toàn việc nhận dạng đối tượng, nhưng chúng lại dễ dàng tích hợp vào các mô
hình nhận dạng, những mô hình nhận dạng nhờ đó có thể truy vấn số lượng ít hơn nhiều
so với tập ảnh dữ liệu lưu trữ.
[Srivastava,2015] đã trình bày và đánh giá một phương pháp trích xuất đặc trưng
màu phổ biến như Lược đồ màu sắc toàn cục (Global Color Histogram), lược đồ màu sắc
cục bộ (Local Histogram), giao nhau của lược đồ (Histogram Intersection), tương quan
màu sắc(Color Correlogram), …các phương pháp hầu hết các phương pháp tiếp cận theo
lược đồ tạo nên tập đặc trưng có số chiều lớn. [Jayaraman, 2012], trong nghiên cứu nhận
dạng mống mắt của mình đã trích đặc trưng màu sắc 2 chiều từ không gian màu YCbCr
để truy vấn ảnh
4.3.2 Đặt vấn đề
Qua nghiên cứu của [Jayaraman, 2012] chỉ ra trích chọn đặc trưng từ không gian màu
YCbCr, với phương pháp tính toán cường độ trung bình trên kênh Cr ,Cb làm thành phần
cho vector đặc trưng màu sắc đem lại kết quả truy vấn hiệu quả
Nghiên cứu phân lớp dựa trên thông tin màu sắc của [Hui Zhang và cộng sự,2012], đã
chỉ ra kết luận rằng không gian màu RGB cho kết quả tốt hơn không gian màu YCrCb
Vậy nếu dựa theo phương pháp của Jayaraman nhưng thực hiện trích chọn trên không
gian màu RGB sẽ đem lại kết quả như thế nào?
4.3.3 Thực hiện thử nghiệm
28
4.3.3.1 Cơ sở dữ liệu
Thực hiện trên tập dữ liệu UPOL, được tạo bởi Palacký University, Olomouc .Bao
gồm 384 ảnh mắt từ 64 người; chụp 3 ảnh bên mắt trái và 3 ảnh bên phải trên mỗi người .
Theo sinh trắc học nhận định mống mắt trái và phải của cùng một người là có cấu trúc
khác nhau, và mục tiêu của chương trình nhận dạng là phân biệt được cả mống mắt bên
trái và phải nên ta xem như tập dữ liệu chứa 128 mống mắt với mỗi mống mắt là 3 . Ta
thực hiện tao tập kiểm tra và tập huấn luyện như sau:
Tập kiểm tra :
Gồm 128 ảnh lấy từ ảnh đầu tiên của mỗi mống mắt.
Tập huấn luyện : Gồm 128 ảnh lấy từ ảnh thứ 3 của mỗi mống mắt.
4.3.3.2 Cách tiếp cận
Đặc trưng màu sắc : Ảnh màu được chia làm 3 kênh R, G, B ; thực hiện tính toán giá
trị cường độ trung bình trên mỗi kênh từ đó thu được vector đặc trưng màu
𝜇𝑅 = ∑ 𝑅(𝑥, 𝑦)
(17)
∀(𝑥,𝑦)∈𝐼
𝜇𝐺 = ∑ 𝐺(𝑥, 𝑦)
(18)
∀(𝑥,𝑦)∈𝐼
𝜇𝐵 = ∑ 𝐵(𝑥, 𝑦)
(19)
∀(𝑥,𝑦)∈𝐼
⃗ =( 𝜇𝑅 , 𝜇𝐺 , 𝜇𝐵 )
Vector đặc trưng màu sắc trích chọn trên ảnh : 𝐷
Lưu trữ dữ liệu đặc trưng trích chọn từ tập huấn luyện vào hệ thống. Tại mỗi giá trị k
từ 1 đến 128 (Số lượng ảnh truy xuất ra từ tập huấn luyện), thực hiện truy vấn từng
ảnh thuộc tập kiểm tra , ghi nhận phần trăm truy vấn đúng.
So sánh kết quả khi áp dụng phương pháp của [Jayaraman,2012] và phương pháp đề ra
29
4.3.3.3 Kết quả
+ Khi truy vấn dựa trên phương pháp của [Jayaraman, 2012]
Bảng 4.2 Phần trăm chính xác khi truy dựa trên pp của [Jayaraman, 2012]
Số lượng ảnh
truy xuất
1
2
3
4
5
6
7
Phần trăm
chính xác
27.34375
44.53125
50.78125
57.03125
62.5
66.40625
72.65625
Số lượng ảnh
truy xuất
8
9
10
11
12
13
14
Phần trăm
chính xác
73.4375
75.78125
78.125
78.125
82.03125
83.59375
85.9375
Số lượng ảnh
truy xuất
15
16
17
18
19
20
21
Phần trăm
chính xác
85.9375
89.0625
90.625
91.40625
92.96875
92.96875
93.75
Số lượng ảnh
truy xuất
22
23
….
30
31
32
33
Phần trăm
chính xác
95.3125
96.875
96.875
97.65625
97.65625
98.4375
98.4375
Số lượng ảnh
truy xuất
34
Phần trăm
chính xác
99.21875
…
…
86
…
128
100
100
100
30
+ Khi truy vấn trên đổi mới đề ra
Bảng 4.3 Phần trăm chính xác khi truy vấn ảnh dựa trên đổi mới đề ra
Số lượng ảnh
truy xuất
1
2
3
4
5
6
7
Phần trăm
chính xác
51.56%
68.75%
79.69%
85.55%
87.89%
90.63%
92.19%
Số lượng ảnh
truy xuất
8
9
10
11
12
13
14
Phần trăm
chính xác
93.75%
94.14%
95.31%
95.70%
96.094%
97.266%
97.266%
Số lượng ảnh
truy xuất
15
16
17
18
19
20
21
98.047%
98.047%
Số lượng ảnh
truy xuất
22
23
Phần trăm
chính xác
99.609%
100%
Phần trăm
chính xác
98.047%
98.047%
…
128
100%
100%
31
98.828%
98.828%
99.219%
120.000%
100.000%
80.000%
60.000%
PP đề ra
[Jayaraman, 2012]
40.000%
20.000%
0.000%
0
20
40
60
80
100
120
140
Hình 4.3 So sánh kết quả giữa phương pháp của [Jayaraman, 2012] với đổi mới đề ra
4.3.4 Kết luận
Bằng số liệu ghi nhận cho thấy dựa trên cách thức trích dẫn đặc trưng màu sắc của
[Jayaraman,2012] nhưng thực hiện trích chọn trên không gian RGB thay vì không gian
YCbCr cho ta kết quả tốt hơn
32
CHƯƠNG 5 .
KẾT QUẢ VÀ NHẬN XÉT
5.1 Giới thiệu
Nội dung chương này, luận văn trình bày những kết quả mà phần mở đầu đã đề ra bao
gồm phương pháp tiếp cận thử nghiệm để dẫn ra kết quả. Dựa theo số liệu ghi nhận để
thực hiện nhận xét
5.2 Mô phỏng quá trình đối sánh
5.2.1 Kết quả
Dựa theo kinh nghiệm khi quá trình thực hiện luận văn, em nhân thấy mô phỏng đối sánh
ảnh là cách tiếp cận giúp quá trình hiểu thuật toán SIFT trở nên nhanh hơn, hiểu rõ hơn về
khả năng của đặc trưng SIFT và là cách kiểm tra rõ ràng nhất cho kết quả trích chọn đặc
trưng SIFT diễn ra đúng hay không.
+ Mô phỏng đối sánh cho 2 ảnh của cùng một mống mắt
Ảnh 25L_1.png
Ảnh 25L_2.png
Kết quả
Ảnh 008R_1.png
Ảnh 008R_2.png
Kết quả
Hình 5.1 Một số kết quả khi mô phỏng đối sánh cho 2 ảnh của cùng một mống mắt
33
+ Mô phỏng đối sánh cho mống mắt bên trái và bên phải của cùng một người
Ảnh 025L_1.png
Ảnh 025R_2
Kết quả
Ảnh 008R_1.png
Ảnh 008L_1.png
Kết quả
Hình 5.2 Một số kết quả khi mô phỏng đối sánh cho mống mắt bên trái và bên phải của
cùng một người
Dựa vào kết quả mô phỏng Hình 5.1 và Hình 5.2 ta nhận thấy việc đối sánh(matching)
giữa 2 ảnh cùng một mống mắt diễn ra rất tốt. Kết quả đối sánh giữa mống mắt bên trái và
bên phải trên cùng một người chỉ xuất hiện một vài điểm ở điểm đèn chiếu trên đồng tử
hoặc ở vùng biên ngoài mống mắt.
Do đó ta thấy nhận định của lý thuyết sinh trắc học là đúng và chương trình nhận dạng
hoàn toàn có thể phân biệt mống mắt trái và phải hoặc xác minh thân phận chỉ cần một
bên mắt
34
+Mô phỏng đối sánh cho 2 ảnh của một mống mắt, trong đó một ảnh đã có sự thay
đổi cường độ ánh sáng
Ảnh 025L_1.png
Ảnh 025L_2.png
tăng cường độ sáng
(Gamma
correction=1.2)
Kết quả
Ảnh 025L_1.png
Ảnh 025L_2.png
tăng cường độ sáng
(Gamma
correction=1.5)
Kết quả
Hình 5.3 Một số kết quả mô phỏng đối sánh cho 2 ảnh của một mống mắt, trong đó
một ảnh đã có sự thay đổi cường độ ánh sáng
35
+ Mô phỏng đối sánh cho 2 ảnh của một mống mắt, trong đó một ảnh đã có sự thay
đổi xoay
Ảnh 025L_1.png
Ảnh 025L_2.png đã
xoay 30 độ
Kết quả
Ảnh 025L_1.png
Ảnh 025L_2.png đã
xoay 50 độ
Kết quả
Hình 5.4 Một số kết quả mô phỏng đối sánh cho 2 ảnh của một mống mắt, trong đó
một ảnh đã có sự biến đổi xoay
36
+ Mô phỏng đối sánh cho 2 ảnh của một mống mắt, trong đó một ảnh có đã có sự
thay đổi thu phóng (Scale). Lưu ý, do chuẩn hóa kích thước là một phần của quá trình
phân đoạn mống mắt nên kết quả mô phỏng của trường hợp này nhìn thấy có cùng kích
thước, thực tế ảnh vào đã được chỉnh sửa như đã nêu
Ảnh 025L_1.png
Ảnh 025L_2.png Kết quả
thu nhỏ 80%
Ảnh 025L_1.png
Ảnh 025L_2.png
thu nhỏ 50%
Kết quả
Hình 5.5 Một số kết quả mô phỏng đối sánh cho 2 ảnh của một mống mắt, trong đó
một ảnh đã có sự biến đổi tỉ lệ
37
*Để việc đánh giá kết quả đối sánh dựa trên đặc trưng SIFT trở nên tổng quát và
chính xác hơn. Luận văn mở rộng cho mô phỏng đối sánh cho đối tượng ảnh có nhiều chi
tiết như ảnh Lena (ảnh mẫu trên phần mềm MATLAB)
Hình 5.6
Mô phỏng đối sánh cho ảnh Lena gốc và ảnh đã thu nhỏ đến 90%
38
Hình 5.7 Mô phỏng đối sánh cho ảnh gốc và ảnh đã thu nhỏ đến 70%
Hình 5.8 Mô phỏng đối sánh cho ảnh gốc và ảnh đã xoay 30 độ
39
Hình 5.9 Mô phỏng đối sánh cho ảnh gốc và ảnh đã xoay 45 độ
Hình 5.10 Mô phỏng đối sánh cho ảnh gốc và ảnh đã xoay 60 độ
40
Hình 5.11 Mô phỏng đối sánh cho ảnh gốc và ảnh tăng cường độ sáng
(Gamma Correction=1.5)
Hình 5.12 Mô phỏng đối sánh cho ảnh gốc và ảnh tăng cường độ sáng
(Gamma Correction=2.5)
41
5.2.2 Nhận xét chung
Dựa vào kết quả mô phỏng trên ta thấy thuật toán SIFT vẫn hoạt động hiệu quả
trước thay đổi thu phóng, xoay, cường độ sáng, bất kể đối tượng có nhiều chi tiết phức
tạp như mống mắt, hay là một ảnh có nhiều chi tiết chồng lấn nhau.
Dựa vào đặc trưng SIFT ta có thể phân biệt hai đối tượng có cấu trúc không giống
nhau nhưng dễ dàng đánh lừa thị giác con người như trường hợp mô phỏng đối sánh
cho mống bên trái và bên phải của cùng một người
5.3 Nhận dạng mống mắt
5.3.1 Nền tảng phần cứng
Thử nghiệm được thực hiện trên Matlab2019a, Intel Core i5, RAM 4 GB
5.3.2 Cơ sở dữ liệu
Thực hiện trên tập dữ liệu UPOL, được tạo bởi Palacký University, Olomouc .Bao
gồm 384 ảnh mắt từ 64 người; chụp 3 ảnh bên mắt trái và 3 ảnh bên phải trên mỗi người,
kích thước 768×576 pixels , ảnh màu định dạng PNG. Ảnh được chụp bằng thiết bị
TOPCON TRC50IA đã được kết nối với camera SONY DXC-950P 3CCD.
Dựa trên lý thuyết sinh trắc học, mống mắt trái và phải của cùng một người cũng
không giống nhau hoàn toàn nên trong nghiên cứu của luận văn. Mống mắt phải hoặc trái
của cùng một người cũng được xem như là nhiệm vụ cần phân biệt của hệ thống,
Trong quá trình thực nghiệm, cơ sở dữ liệu UPOL được chia làm 3 tập dữ liệu con bao
gồm:
42
Tập dữ liệu kiểm tra chứa 128 ảnh, được lấy từ ảnh đầu tiên của mống mắt trái và phải 64
người trong tập dữ liệu
Tập huyến luyện 1 chứa 128 ảnh, được lấy từ ảnh thứ 2 của mống mắt trái và phải 64
người trong tập dữ liệu
Tập huyến luyện 2 chứa 128 ảnh, được lấy từ ảnh thứ 3 của mống mắt trái và phải 64
người trong tập dữ liệu
5.3.3 Phương thức tiếp cận
Thay đổi hệ số K (số ảnh trích ra từ tập huấn luyện dựa trên đặc trưng màu sắc) từ
1 đến 128. Tại mỗi giá trị K , ta thực hiện nhận dạng cho 128 mống mắt trong tập kiểm
tra, từ đó ghi nhận độ chính xác và thời gian đáp ứng (Lưu ý nhận dạng mống mắt là tìm
kiếm ảnh huấn luyện trong hệ thống, ảnh mà có số lượng đặc trưng tương thích với ảnh
kiểm tra nhiều nhất như đã đề cập phần 3.5.5). Thực hiện lặp lại cho 2 trường hợp:
Dữ liệu huấn luyện lưu trong hệ thống là tập huấn luyện 1
Dữ liệu huấn luyện lưu trong hệ thống là tập huấn luyện 2
43
5.3.4 Kết quả
5.3.4.1 Kết quả độ chính xác
Bảng 5.1 : Kết quả độ chính xác của chương trình nhận dạng theo số lượng ảnh truy vấn
Số lượng ảnh
truy vấn-K
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
…
128
Độ chính xác
(Dữ liệu huấn luyện 1)
51.563%
66.406%
79.688%
85.156%
85.938%
89.844%
92.188%
93.750%
94.531%
96.875%
97.656%
97.656%
98.438%
98.438%
98.438%
98.438%
98.438%
98.438%
98.438%
98.438%
99.219%
99.219%
100%
…
100%
Độ chính xác
(Dữ liệu huấn luyện 2)
51.563%
71.094%
79.688%
85.938%
89.844%
91.406%
92.188%
93.750%
93.750%
93.750%
93.750%
94.531%
96.094%
96.094%
97.656%
97.656%
97.656%
97.656%
99.219%
99.219%
99.219%
100%
100%
…
100%
44
Độ chính xác
trung bình
51.563%
68.750%
79.688%
85.547%
87.891%
90.625%
92.188%
93.750%
94.141%
95.313%
95.703%
96.094%
97.266%
97.266%
98.047%
98.047%
98.047%
98.047%
98.828%
98.828%
99.219%
99.609%
100%
…
100%
Độ chính xác
120.000%
100.000%
80.000%
60.000%
40.000%
20.000%
1
5
9
13
17
21
25
29
33
37
41
45
49
53
57
61
65
69
73
77
81
85
89
93
97
101
105
109
113
117
121
125
0.000%
Hình 5.13 : Biễu diễn độ chính xác theo số lượng truy vấn
Theo Bảng 4.3 - Kết quả của truy vấn ảnh và Bảng 5.1 Kết quả nhận dạng mống mắt ta
nhận thấy kết quả truy vấn ảnh đúng bằng kết quả nhận dạng mống mắt , tức là nếu việc
việc nhận dạng mống mắt dựa trên đặc trưng SIFT luôn đúng nếu trong số những ảnh truy
vấn ra có chứa ảnh của đối tượng kiểm tra
45
5.3.4.2 Kết quả thời gian đáp ứng
Bảng 5.2 : Kết quả đáp ứng thời gian của chương trình nhận dạng theo số lượng ảnh truy
vấn
K Coefficient
Training Set 1
Training Set 2
Average Total
1
1.317279
1.341385
1.329332
5
1.676378
1.586234
1.631306
K Coefficient
Training Set 1
Training Set 2
Average Total
23
2.79111
2.672493
2.731801
25
2.963853
2.856217
2.910035
10
1.952932
1.984066
1.968499
15
2.379934
2.258366
2.31915
20
2.576552
2.543083
2.559818
128
8.85332582
8.33017262
8.59174922
THỜI GIAN ĐÁP ỨNG
10
9
8
7
6
5
4
3
2
1
0
0
20
40
60
80
Hình 5.14 Biểu đồ thời gian đáp ứng theo số lượng truy vấn
46
100
120
140
6.3.5 Nhận xét
Dựa trên số liệu khảo sát (256 lần nhận dạng tại mỗi giá trị K , K từ 1 đến 128):
+ Mô hình nhận dạng mống mắt đạt đến độ chính xác của 100%
+ Thời gian đáp ứng nhanh nhất là 1.329332 s , thời gian đáp ứng chậm nhất là
8.59174922s
+ Mô hình khảo sát cho hiệu suất tốt nhất tại K=23 (Số lượng ảnh truy suất ra từ tập huấn
luyện) , đạt độ chính xác 100%, thời gian đáp ứng trung bình đạt 2.731801
+ Dù chỉ dùng một ảnh làm huấn luyện, chương trình nhận dạng mống mắt vẫn hoạt động
chính xác 100%
+ Mống mắt trái và phải của cùng một người rất giống nhau tuy nhiên chương trình vẫn
phân biệt chính xác nếu cấu trúc khác nhau
47
5.4 Mô hình nhận dạng mống mắt bằng GUI
5.4.1 Giao diện chương trình
Hình 5.15 Giao diện chương trình
Hình 5.16 Giao diện hoạt động
48
5.4.2 Quá trình hoạt động
Bước 1: Khởi động chương trình
Từ giao diện chương trình , cick chuột vào nút “Khởi động ” chương trình sẽ chuyển sang
giao diện để người dùng có thể thực hiện nhận dạng mống mắt như hình 6.4.2
Hình 5.17 Hướng dẫn chạy nhận dạng GUI(1)
49
Bước 2 : Chọn ảnh kiểm tra
Thực hiện click chuột vào nút “Chọn ảnh”. Chương trình sẽ xuất hiện một cửa sổ như
dưới , ta thực hiện chọn ảnh kiểm tra sau đó click Open
50
Bước 3 Chạy nhận dạng
Sau khi thực hiện “chọn ảnh” , chương trình sẽ hiển thị như dưới. Ta tiếp tục click nút
“Dò tìm “ để thực hiện chạy nhận dạng
Hình 5.18 Hướng dẫn chạy nhận dạng trong GUI(2)
Bước3 Đọc kết quả
Sau khi chương trình thực hiện xong nhận dạng sẽ hiển thị ảnh kết quả và một số
thông tin của mống mắt trong cửa sổ kết quả. Trong biểu diễn tên của mống mắt , ba số
đầu định danh người, kí tự L hoặc R chỉ mắt trái hoặc phải của người đó, từ đó ta biết
được người đó là ai
51
6.4.3 Kết quả
+ Kết quả nhận diện (dựa trên những nghiên cứu, khảo sát đã thực hiện)
Hình 5.19 Kết quả nhận dạng trong GUI (1)
Hình 5.20 Kết quả nhận dạng trong GUI (2)
52
+ Kết quả mở rộng ( Ảnh kiểm tra khác với đối tượng đã khảo sát, chưa được đánh giá
phần trăm chính xác)
Hình 5.21 Kết quả nhận dạng trong GUI (3)
Hình 5.22 Kết quả nhận dạng trong GUI (4)
53
6.4.4 Nhận xét
Mô hình phỏng GUI đã mô phỏng chính xác cho những ảnh vào đã thực hiện nghiên cứu,
khảo sát
Tuy qua khảo sát nhận dạng ở tập dữ liệu UPOL, chương trình đánh giá độ chính xác
100% tuy nhiên với những nhận dạng cho mống mắt bị biến dạng lớn nằm ngoài nghiên
cứu đề ra, kết quả vẫn có thể xuất hiện sai. Do đó việc nhận dạng các ảnh ngoài lề nghiên
cứu cần được khảo sát và nghiên cứu kĩ lưỡng riêng
Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1 Kết luận
Sau khi tìm hiểu và nghiên cứu đề tài: “ Ứng dụng thông tin màu sắc và thuật toán
SIFT vào nhận dạng mống mắt” , luận văn đạt được kết quả như sau:
 Dựa trên lý thuyết, luận văn đã thực hiện hóa giải thuật SIFT
 Đề xuất, chứng minh phương pháp cải thiện giải thuật SIFT và đặc trưng màu sắc
góp phần tăng độ chính xác và thời gian xử lý
 Hoàn thành khảo sát độ chính xác và thời gian đáp ứng khi thay đổi số lượng ảnh
truy xuất ( truy xuất k ảnh từ 128 ảnh huấn luyện)
 Chương trình nhận dạng mống mắt đạt chính xác 100% với thời gian đáp ứng
nhanh (thời gian đáp ứng trung bình đạt 2.731801)
 Dữ liệu huấn luyện cho một đối tượng mống mắt chỉ có 1
 Mô phỏng quá trình đối sánh ảnh trên MATLAB
 Mô phỏng chương trình nhận dạng mống mắt bằng GUI trên MATLAB
54
6.2 Hướng phát triển
Trong phạm vi nghiên cứu, luận văn chỉ thực hiện nhận dạng trên tập dữ liệu cho
trước, ảnh mống mắt trong tập dữ liệu đã những thay đổi về cường độ chiếu sáng, dịch
chuyển, thu phóng, che khuất, tuy nhiên thực tế sự che khuất bởi lông mi , mi mắt lớn hơn
rất nhiều so với những ảnh trong tập huấn luyện đã sử dụng. Do đó trong tương lai đề tài
có thể khảo sát độ chính xác nhận dạng mống mắt cho cho tập dữ liệu đã đẩy lên hạn chế
che khuất như nhận dạng mống mắt khi mống mắt bị mi che khuất một phần, hoặc đang
có sự cản trước của mắt kính.
TÀI LIỆU THAM KHẢO
[1]
Y. Sari , M. Alkaff , R. A. Pramunendar, Iris
recognition
based
on
distance
similarity and PCA, AIP Conference Proceedings 1977, 2018.
[2]
U. Jayaraman , S. Prakash, P. Gupta,
An efficient color and texture based iris
image retrieval technique, Expert Systems with Applications .Expert Systems with
Applications 39 ,pp. 4915 -4926, 2012.
[3]
Simona G. Crihalmeanua , Arun A. Ross ,
Images,
An Indexing Method for Color Iris
Proc. of SPIE Biometric and Surveillance Technology for Human and Activity
Identification XII, (Baltimore, USA), April 2015.
[4]
A. S. Narote, L. M. Waghmare,
Color Iris Authentication using Color Models,
International Journal of Computer Applications (0975 – 8887) Volume 159 – No 2,
February 2017.
[5]
Anca Ignata, Ioan Păvăloib.
Experiments on iris recognition using SURF
descriptors, texture and a repetitive method,
24th
International
Conference
Knowledge-Based and Intelligent Information & Engineering Systems, 2020.
55
on
[6]
Ehsan Sadeghipour, Nasrollah Sahragard.
Face
Recognition
Based
on
Improved SIFT Algorithm , (IJACSA) International Journal of Advanced Computer
Science and Applications, Vol. 7, No. 1, 2016.
[7]
Susovan Jana , Ranjan Parekh,
Intra-class Recognition of Fruits using Color
and Texture Features with Neural Classifiers , International Journal of Computer
Applications (0975 – 8887) Volume 148 – No.11, August 2016.
[8]
Ioan Păvăloia , Anca Ignat, Iris Image Classification Using SIFT Features, 23rd
International Conference on Knowledge-Based and Intelligent Information & Engineering
Systems, 2019.
[9]
Lowe, David G. (1999) “Object recognition from local scale-invariant features”,
International Conference on Computer Vision, Corfu, Greece, pp. 1150–1157
[10]
Lowe, David G. (2004) “Distinctive Image Features from Scale-Invariant
Keypoints”, International Journal of Computer Vision, 60(2), pp. 91-110
[11]
Kinjal M. Gandhi & Prof. R. H. Kulkarni ,
Sift Algorithm for Iris Feature
Extraction , Global Journal of Computer Science and Technology: F Graphics & Vision
Volume 14 Issue 3 Version 1.0 Year 2014.
[12]
Ibrahim Meşecan, Alaa Eleyan , Bekir Karlik, Sift-based Iris Recognition Using
Sub-Segments,
The International Conference on Technological Advances in
Electrical, Electronics and Computer Engineering (TAEECE), 2013.
[13]
Dr. H B Kekre , T K Sarode , V A Bharadi, A A Agrawal, R J Arora , M C Nair,
Iris Recognition Using Vector Quantization.
Acquisition and Processing, 2010.
56
International
Conference
on
Signal
[14]
Hui Zhang, Zhenan Sun, Tieniu Tan, and Jianyu Wang,
Classification Based on Color Information,
Iris
Image
21st International Conference on Pattern
Recognition (ICPR 2012).
[15]
Oyeniran, Oluwashina A; Adegoke, Benjamin O; Oyeniyi, Joshua O, Multiple
Classifiers: An Approach In Iris Recognition System, The jounal Annals. Computer
Science Series. 17th Tome 2nd Fasc. – 2019.
[16]
Jaspreet Kaur, Shivali Puri, Varinderjit Kaur,
Iris Recognition Using Hough's
Transform Gamma Correction And Histogram Thresholding Method,
International
Journal of Engineering Sciences & Research Technology, October, 2016.
[17]
Iris Database: http://phoenix.inf.upol.cz/iris/download/
[18] Darshana.A.V, Sachin.D.P “Target Identification using SIFT Alogorithm “
International Journal of Engineering Research & Technology , Vol 3 , Issue 6, June
2014s
[19] S. Cardoso, Sahil .K, et.al , “Understading SIFT Algorithm and its uses” ,
International Journal Science Technology & Engineering Volume 2 , Issue10, April 2016
[20] E. Karami, S. Parami , et.al ,”Image Matching Using SIFT, SUFT, BRIEF AND
ORB: Performance Comparison for Distored Images” . Conference: 2015 Newfoundland
Electrical and Computer Engineering Conference .
[21] D. Srivastava and et.al ,”A Review: Color Feature Extraction Methobs for Content
Based Image Retrieval” , International Jounrnal of Computational Engineering &
Management, Vol. 18 Issue 3, May 2015
[22] “Nhận dạng màng mống mắt trong xác thực sinh học”, Luận văn thạc sĩ ,Nguyễn Thị
Thúy Vân, 2008
57
PHỤ LỤC A
A.2 Code chương trình xử lý dữ liệu dùng Matlab
function [Result_Recogniton
Time_Consuming]=Iris_Recognition_Offline(TestImage_Name)
tic;
DB_Test=[];
DB_Test_Refine=[];
Data_Test=crop_iris(TestImage_Name);
I_Test=imresize(Data_Test,[10 210]);
I_Test=double(I_Test) ;
R=I_Test(:,:,1);G=I_Test(:,:,2);B=I_Test(:,:,3);
u_R=sum(R,'all');
u_B=sum(B,'all');
u_G=sum(G,'all');
D_R=sum((R-u_R/2100*ones(10,210)).^2,'all');D_R=sqrt(D_R/2100);
D_G=sum((G-u_G/2100*ones(10,210)).^2,'all');D_G=sqrt(D_G/2100);
D_B=sum((B-u_B/2100*ones(10,210)).^2,'all');D_B=sqrt(D_B/2100);
D1=[u_R;u_G;u_B] ;D1=D1/norm(D1) ;
D2=[D_R ; D_G; D_B] ;D2=D2/norm(D2) ;
DB_Test=[DB_Test D1];
DB_Test_Refine=[DB_Test_Refine D2];
load DB_Training.mat ;
load DB_Training_Refine.mat ;
Distance=[];
diff = (DB_Test*ones(1,size(DB_Training,2))-DB_Training).^2;
A= sum(diff,1);
Distance= [Distance; A.^0.5] ;
[~ ,index] =sort(Distance,2,'ascend') ;
%% Step Refine Selection
Bound=size(DB_Training,2) ;
Index=index(:,1:Bound) ;
Index_Refine=[];
Divide_Coef=20 ;
Index_Part1=Index(:,1:Divide_Coef) ;
Index_Part2=Index(:,Divide_Coef+1:40) ;
Data_Part2=[];
58
for r=1:size(Index_Part2,1)
Temp=[] ;
for c=1:size(Index_Part2,2)
Temp=[Temp DB_Training_Refine(:,Index_Part2(r,c))] ;
end
Data_Part2=[Data_Part2 Temp];
end
Set=[];
Diff= ((DB_Test_Refine*ones(1,size(Index_Part2,2)) -Data_Part2).^2) ;
Distance=sum(Diff,1) ;
Set=[Set ;Distance.^0.5] ;
[~,A]=sort(Set,2,'ascend') ;
for i=1:size(A,2)
x=A(1,i) ;
Index_Refine(1,i)= Index_Part2(1,x);
end
%% Extract k from Data
Final_Index= [Index_Part1 Index_Refine] ;
Bound_Optimal=23 ;
Final_Index=Final_Index(:,1:Bound_Optimal) ;
%%
des1= Sift_Feature(Data_Test);
Save_num=[];
load FileData_2.mat ;
for o=1 :size(Final_Index,2)
object_index=Final_Index(o);
des2= DataStore{object_index,1};
for i = 1 : size(des1,1)
Manhattan_Dis=ones(size(des2,1),1)* des1(i,:) - des2;
Manhattan_Dis=sum(abs(Manhattan_Dis),2);
[vals,indx] = sort(Manhattan_Dis,1);
if (vals(1)/vals(2)<0.7)
match(i) = indx(1);
else
match(i)=0;
end
end
num = sum(match > 0);
Save_num=[Save_num num];
end
%% Find out Recognition's Result
59
[~,ind]=max(Save_num);
Index_Result=Final_Index(1,ind);
Result_Recogniton=DataStore{Index_Result,2};
Time_Consuming=toc;
fprintf('\n The Result is %s , with time consuming is
%04f',Result_Recogniton,Time_Consuming);
end
function iris= crop_iris(image)
% clear all;
% close all;
% tic;
im= imread(image);
% im= imread('TrainingData/048R_2.png');
[~,~,ColorChannel] = size(im);
if ColorChannel > 1
im_gray=rgb2gray(im);
else
im_gray=im;
end
[counts x]=imhist(im_gray);
a=20; b=200;
counts= counts(a:b);
[~ ,peak_pos]=max(counts);
peak_pos= a +peak_pos;
%% find crop bound image of iris
thresh= peak_pos +0.4*peak_pos;
image = im_gray > thresh & im_gray < 255;
%% Horizon
sum_col= sum(image,1);
x=1:size(im_gray,2);
width_sample=ceil(size(im_gray,2)/6);
set_neighbor_left=sum_col(1:width_sample);
set_neighbor_right=sum_col(size(im_gray,2)-width_sample:size(im_gray,2)); %
width_sample+1 tran to 1
60
[~,extrema_left] = max(set_neighbor_left);
[~,extrema_right] = max(set_neighbor_right);
extrema_right= size(im_gray,2)-width_sample+ extrema_right; %% offset =
width_sample
%% Vertical
sum_row= sum(image,2);
y=1:size(im_gray,1);
width_sample=ceil(size(im_gray,1)/13);
set_neighbor_upper=sum_row(1:width_sample);
set_neighbor_bellow=sum_row(size(im_gray,1)-width_sample:size(im_gray,1));
[~,extrema_upper] = max(set_neighbor_upper);
[~,extrema_bellow] = max(set_neighbor_bellow);
extrema_bellow= size(im_gray,1)-width_sample+extrema_bellow; %% offset =
width_sample
width=abs(extrema_left - extrema_right);
optimal_width= sqrt(2)/2*width;
delta=ceil( width*0.5 - sqrt(2)*width*0.25 );
set_crop_iris = [extrema_left+delta, extrema_bellow-width+delta , optimal_width ,
optimal_width];
iris= imcrop(im,set_crop_iris);%iris= imcrop(im_gray,set_crop_iris);
iris=imresize(iris,[210,210]);
% time=toc;
% fprintf(' %f',time);
%% show figure
% figure
% subplot(4,3,1)
% imshow(im_gray)
% subplot(4,3,2)
% imshow(image)
% subplot(4,3,3)
% plot(x,sum_col) ; hold on;
% plot([extrema_left extrema_left],[0 576]);
% plot([extrema_right extrema_right],[0 576]);
% subplot(4,3,4)
% plot(y,sum_row) ; hold on;
% plot([extrema_upper extrema_upper],[0 576]);
% plot([extrema_bellow extrema_bellow],[0 576]);
% subplot(4,3,5)
% imshow(iris)
% end
61
function DESCRIPTOR= Sift_Feature(IMAGE)
[~,~,ColorChannel] = size(IMAGE);
if ColorChannel > 1
IMAGE=rgb2gray(IMAGE);
end
IMAGE = double(IMAGE)/255;
%% Set parameter
ScaleSpaceNum = 3; % number of scale space intervals
SigmaOrigin = 2^0.5; % default sigma
OctaveNum = 3;
GaussianFilterSize = 21;
ScaleFactor = 2^(1/ScaleSpaceNum);
StackNum = ScaleSpaceNum + 3; % number of stacks = number of scale space intervals
+3
OctaveImage = cell(OctaveNum,StackNum); % save the Gaussian-filtered results of
image
OctaveImageDiff = cell(OctaveNum,StackNum-1); % save the Difference of Gaussianfiltered results of image
%% Gaussian Convolution of Images in Each Octave
ImgOctave = cell(OctaveNum,1);
for Octave = 1:OctaveNum
Sigma = SigmaOrigin * 2^(Octave-1); % when up to a new octave, double the sigma
ImgOctave{Octave} = imresize(IMAGE, 2^(-(Octave-2)));
for s = 1:StackNum
SigmaScale = Sigma * ScaleFactor^(s-2);
% calculate Guassian kernel
GaussianFilter =
fspecial('gaussian',[GaussianFilterSize,GaussianFilterSize],SigmaScale);
% do convolution with Gassian kernel
OctaveImage{Octave,s} = imfilter(ImgOctave{Octave}, GaussianFilter,'symmetric');
end
end
% calculate difference of Gaussian (in original paper eq.1)
for Octave = 1:OctaveNum
for s = 1:StackNum-1
OctaveImageDiff{Octave,s} = OctaveImage{Octave,s+1} OctaveImage{Octave,s};
62
end
end
%% Find the local minima and maxima between stacks
DiffMinMaxMap = cell(OctaveNum,StackNum-3);
for Octave = 1:OctaveNum
for s = 2:size(OctaveImageDiff,2)-1
CompareDiffImg = zeros(size(OctaveImage{Octave,1},1)2,size(OctaveImage{Octave,1},2)-2,27);
indx = 0; % 3rd dimension indx for CompareDiffImg
for s2 = s-1:s+1
for k = 1:9
[i,j] = ind2sub([3,3],k);
CompareDiffImg(:,:,indx+k) = OctaveImageDiff{Octave,s2}(i:end-3+i,j:end3+j);
end
indx = indx + 9;
end
[~,MinMap] = min(CompareDiffImg,[],3);
MinMap = (MinMap == 14);
[~,MaxMap] = max(CompareDiffImg,[],3);
MaxMap = (MaxMap == 14);
DiffMinMaxMap{Octave,s-1} = MinMap + MaxMap; % the center indx is 9 + 5 =
14
end
end
%% Accurate keypoint localization
DiffMinMaxMapAccurate = DiffMinMaxMap;
Statis=[];
for Octave = 1:OctaveNum
Sigma = SigmaOrigin * 2^(Octave-1);
for DiffMinMaxMapIndx = 1:size(DiffMinMaxMap,2)
Map = DiffMinMaxMap{Octave,DiffMinMaxMapIndx};
SSCindx = find(Map); % Scale-Space-Corner Index
if isempty(SSCindx)
continue;
end
Save=[];
for kp = 1:length(SSCindx)
[Row,Col] = ind2sub([size(Map,1),size(Map,2)], SSCindx(kp));
if (Row <= 1) || (Row >= size(Map,1)) || (Col <= 1) || (Col >= size(Map,2))
DiffMinMaxMapAccurate{Octave,DiffMinMaxMapIndx}(Row,Col) = 0;%
discard out of matrix boundary
63
continue;
end
RowDiff = OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row+1,Col) OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row-1,Col);
ColDiff = OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col+1) OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col-1);
ScaleDiff = OctaveImageDiff{Octave,DiffMinMaxMapIndx+2}(Row,Col) OctaveImageDiff{Octave,DiffMinMaxMapIndx}(Row,Col);
offset = [2; 2; Sigma * ScaleFactor^(DiffMinMaxMapIndx) - Sigma *
ScaleFactor^(DiffMinMaxMapIndx-2)];
DxHat = OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col) + 0.5 *
([RowDiff,ColDiff,ScaleDiff] * offset);
Save=[Save abs(DxHat)];
end
Statis=[Statis Save];
end
end
Statis=sort(Statis,'descend');
UnstableExtremaThreshold= Statis(400);
for Octave = 1:OctaveNum
Sigma = SigmaOrigin * 2^(Octave-1);
for DiffMinMaxMapIndx = 1:size(DiffMinMaxMap,2)
Map = DiffMinMaxMap{Octave,DiffMinMaxMapIndx};
SSCindx = find(Map); % Scale-Space-Corner Index
if isempty(SSCindx)
continue;
end
for kp = 1:length(SSCindx)
[Row,Col] = ind2sub([size(Map,1),size(Map,2)], SSCindx(kp));
if (Row <= 1) || (Row >= size(Map,1)) || (Col <= 1) || (Col >= size(Map,2))
DiffMinMaxMapAccurate{Octave,DiffMinMaxMapIndx}(Row,Col) = 0;%
discard out of matrix boundary
continue;
end
RowDiff = OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row+1,Col) OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row-1,Col);
ColDiff = OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col+1) OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col-1);
ScaleDiff = OctaveImageDiff{Octave,DiffMinMaxMapIndx+2}(Row,Col) OctaveImageDiff{Octave,DiffMinMaxMapIndx}(Row,Col);
64
offset = [2; 2; Sigma * ScaleFactor^(DiffMinMaxMapIndx) - Sigma *
ScaleFactor^(DiffMinMaxMapIndx-2)];
DxHat = OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col) + 0.5 *
([RowDiff,ColDiff,ScaleDiff] * offset);
if abs(DxHat) < UnstableExtremaThreshold
DiffMinMaxMapAccurate{Octave,DiffMinMaxMapIndx}(Row,Col) = 0; %
discard unstable extrema
end
end
end
end
%% distribution keypoint on separation space
radius=3;
for Octave = 1:3
for s = 1 : 3
[Y, X] = find(DiffMinMaxMapAccurate{Octave,s});
for i=1 : length(Y)
y= Y(i);
x= X(i);
if x<radius+1 || x> size(DiffMinMaxMapAccurate{Octave,s},2)-radius ||
y<radius+1 || y> size(DiffMinMaxMapAccurate{Octave,s},1)-radius
continue;
end
Sub_Image= DiffMinMaxMapAccurate{Octave,s}(y-radius : y+radius, x-radius :
x+radius).* OctaveImageDiff{Octave,s}(y+1-radius : y+1+radius, x+1-radius :
x+1+radius);
[~ ,pos_max]=max(abs(Sub_Image(:)));
I= zeros(2*radius+1,2*radius+1) ;
I(pos_max)=1;
DiffMinMaxMapAccurate{Octave,s}(y-radius : y+radius, x-radius : x+radius)=
DiffMinMaxMapAccurate{Octave,s}(y-radius : y+radius, x-radius : x+radius)&I;
end
end
end
%% Eliminating edge responses
gamma = 10; % set the threshold gamma as 10 (the same as the original paper)
DetermineThreshold = (gamma + 1)^2 / gamma;
DiffMinMaxMapNoEdge = DiffMinMaxMapAccurate;
for Octave = 1:OctaveNum
65
for DiffMinMaxMapIndx = 1:size(DiffMinMaxMap,2)
Map = DiffMinMaxMapAccurate{Octave,DiffMinMaxMapIndx};
SSCindx = find(Map); % Scale-Space-Corner Index
if isempty(SSCindx)
continue;
end
for kp = 1:length(SSCindx)
[Row,Col] = ind2sub([size(Map,1),size(Map,2)], SSCindx(kp));
if (Row <= 1) || (Row >= size(Map,1)) || (Col <= 1) || (Col >= size(Map,2))
DiffMinMaxMapNoEdge{Octave,DiffMinMaxMapIndx}(Row,Col) = 0; %
discard out of matrix boundary
continue;
end
Dyy = OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row+1,Col) 2*OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col) +
OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row-1,Col);
Dxx = OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col+1) 2*OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col) +
OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row,Col-1);
Dxy = OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row-1,Col+1) OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row-1,Col-1) OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row+1,Col+1) +
OctaveImageDiff{Octave,DiffMinMaxMapIndx+1}(Row+1,Col-1);
TrH = Dxx + Dyy;
DetH = Dxx*Dyy - Dxy^2;
if ((TrH^2 / DetH) >= DetermineThreshold)
DiffMinMaxMapNoEdge{Octave,DiffMinMaxMapIndx}(Row,Col) = 0; %
discard unstable extrema
end
end
end
end
%% SIFT feature descriptors generation
% the size of window around keypoint is 16;
% the size of window to perform calculation gradient is 26;
DESCRIPTOR = [];
for Octave = 1:OctaveNum
Sigma = SigmaOrigin * 2^(Octave-1); % when up to a new octave, double the sigma
Octave_descriptor=[];
for DiffMinMaxMapIndx = 1:size(DiffMinMaxMap,2)
stack = DiffMinMaxMapIndx+1;
66
SigmaScale = Sigma * ScaleFactor^(stack-2);
GaussianSmoothedImage = OctaveImage{Octave,stack};
Map = DiffMinMaxMapNoEdge{Octave,DiffMinMaxMapIndx};
SSCindx = find(Map); % Scale-Space-Corner Index
if isempty(SSCindx)
continue;
end
DomOri = []; % first column is for sita, second column is for magnitude
DoG_descriptor=[];
for kp = 1:length(SSCindx)
KP_location=[];
KP_descriptor=[];
[Row,Col] = ind2sub([size(Map,1),size(Map,2)], SSCindx(kp));
Row = Row+1; Col = Col+1; % offset = [1,1];
if (Row <= 14) || (Row >= size(GaussianSmoothedImage,1)-14) || (Col <= 14) ||
(Col >= size(GaussianSmoothedImage,2)-14)
% skip if out of boundary
continue;
end
factor=size(OctaveImage{2,1},1)/size(OctaveImage{Octave,1},1);
% magnitude and sita of sample points in the patch
mag = ((GaussianSmoothedImage(Row-13:Row+12,Col-12:Col+13) GaussianSmoothedImage(Row-13:Row+12,Col-14:Col+11)).^2 +
(GaussianSmoothedImage(Row-12:Row+13,Col-13:Col+12) GaussianSmoothedImage(Row-14:Row+11,Col-13:Col+12)).^2).^0.5;
sita = atan2((GaussianSmoothedImage(Row-12:Row+13,Col-13:Col+12) GaussianSmoothedImage(Row-14:Row+11,Col13:Col+12)),(GaussianSmoothedImage(Row-13:Row+12,Col-12:Col+13) GaussianSmoothedImage(Row-13:Row+12,Col-14:Col+11)));
sita = sita*360/(2*pi);
sita = mod(sita +180/36 + 360, 360); % the range of atan2 function is -pi~pi, map
it to 0~2*pi
% Dominant orientation calculation
GaussianFilter = fspecial('gaussian',[16,16],1.5*SigmaScale);
Dmag = mag(5:20,5:20).* GaussianFilter; % magnitude is weighted by gaussian
filter
sitaquantize = mod(sita(5:20,5:20) + 180/36,360);
sitaquantize = floor(sitaquantize / 10);
sitabin = zeros(36,1);
for patchindx = 1:16^2
67
sitabin(sitaquantize(patchindx)+1,1) = sitabin(sitaquantize(patchindx)+1,1) +
Dmag(patchindx);
end
maxsitabin = max(sitabin);
DominantOriBin = find(sitabin >= 0.8*maxsitabin);
%fit parabola to find peak accurate
for i=1:length(DominantOriBin)
if DominantOriBin(i) == 1
x = 0:2 ;
y = sitabin([36,1,2]);
elseif DominantOriBin(i)== 36
x = 35:37 ;
y = sitabin([35,36,1]);
else
x = DominantOriBin(i)-1:DominantOriBin(i)+1;
y = sitabin(DominantOriBin(i)-1 :DominantOriBin(i)+1);
end
coef = fit_parabola(x(1),x(2),x(3),y(1),y(2),y(3));
DominantOriBin(i)=-coef(2)/2/coef(1);
if length(DominantOriBin)==1
continue;
end
end
DominantOriSita = (DominantOriBin-1)*10;
% SIFT feature calculation
GaussianFilter = fspecial('gaussian',[26,26],16);
Smag = mag.* GaussianFilter;
for DomOriIndx = 1:length(DominantOriSita)
DomOri_descriptor=[];
for m = 5:4:20
for n = 5:4:20
% Creating 8 bin histogram.
hist = zeros(1,8);
for o = 0:3
for p = 0:3
% Rotate pixels coordinates around keypoint
[newx,newy] = rotateCoordinates(m+o,n+p,13,13,DominantOriSita(DomOriIndx));
% adjust the sita according to the coordinate
% axis Dominant Orientation
ConformSita = mod(sita(newx,newy) - DominantOriSita(DomOriIndx) +
180/8 + 360,360);
68
ConformSita = floor(ConformSita / (360/8));
hist(1,ConformSita+1) = Smag(newx,newy);
end
end
DomOri_descriptor = [DomOri_descriptor, hist];
end
end
DomOri_descriptor = DomOri_descriptor ./ norm(DomOri_descriptor,2);
KP_descriptor = [KP_descriptor; DomOri_descriptor] ;
%%
%%% Version1
for j =1:128
if DomOri_descriptor(j) > 0.2
DomOri_descriptor(j) = 0.2;
end
end
DomOri_descriptor = DomOri_descriptor ./ norm(DomOri_descriptor,2);
if length(DominantOriSita) ==1
break;
end
end
DoG_descriptor=[DoG_descriptor ;KP_descriptor];
end
Octave_descriptor =[Octave_descriptor ;DoG_descriptor];
end
DESCRIPTOR=[DESCRIPTOR; Octave_descriptor];
end
end
%% Save data Sift's Feature of file TrainingData2 -FeatureStore2
structTrainImages = dir('TrainingData2');
for i = 3:length(structTrainImages)
if ((~structTrainImages(i).isdir))
if (structTrainImages(i).name(end-3:end)=='.png')
Training_Set{i-2,1} = ['TrainingData2','\',structTrainImages(i).name];
TrainingImage_Name{i-2,1}= structTrainImages(i).name ;
69
end
end
end
DataStore={};
for i=1: length(Training_Set)
image=crop_iris(Training_Set{i,1});
DataStore{i,1}=Sift_Feature(image);
DataStore{i,2}=TrainingImage_Name{i,1};
end
save FileData_2.mat DataStore ;
%%
structTrainImages = dir('TrainingData2');
for i = 3:length(structTrainImages)
if ((~structTrainImages(i).isdir))
if (structTrainImages(i).name(end-3:end)=='.png')
Training_Set{i-2,1} = ['TrainingData2','\',structTrainImages(i).name];
TrainingImage_Name{i-2,1}= structTrainImages(i).name ;
end
end
end
DB_Training=[];
DB_Training_Refine=[];
for i=1: length(Training_Set)
I_Training=crop_iris(Training_Set{i,1});
I_Training=imresize(I_Training,[10 210]);
I_Training=double(I_Training) ;
R=I_Training(:,:,1);G=I_Training(:,:,2);B=I_Training(:,:,3) ;
u_R=sum(R,'all');
u_B=sum(B,'all');
u_G=sum(G,'all');
D_R=sum((R-u_R/2100*ones(10,210)).^2,'all');D_R=sqrt(D_R/2100);
D_G=sum((G-u_G/2100*ones(10,210)).^2,'all');D_G=sqrt(D_G/2100);
D_B=sum((B-u_B/2100*ones(10,210)).^2,'all');D_B=sqrt(D_B/2100);
D1=[u_R;u_G;u_B] ;D1=D1/norm(D1) ;
D2=[D_R ; D_G; D_B] ;D2=D2/norm(D2) ;
DB_Training=[DB_Training D1] ;
DB_Training_Refine=[DB_Training_Refine D2] ;
end
save DB_Training.mat DB_Training ;
save DB_Training_Refine.mat DB_Training_Refine ;
70
Download