ĐẠ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