Nghiên cứu xây dựng hệ thống nhận dạng mặt người online

Hiện nay, vấn đề an ninh là một trong những vấn đề được quan tâm hàng đầu trên thế giới. Bài toán nhận dạng vì vậy được quan tâm rất nhiều. Trong vấn đề nhận dạng con người, đã có nhiều phương pháp được đưa ra và có độ chính xác cao. Các bài toán nhận dạng được áp dụng theo 2 con đường là nhận dạng offline và nhận dạng online. Nhận dạng offline: Đối tượng thu thập thành các file dữ liệu và được chuyển về trung tâm. tại đố các số liệu sẽ được phân tích xử lý, thời gian xử lý không yêu cầu quá khắt khe. Nhận dạng online: đối tượng thu thập và xử lý trực tiếp tại hiện trường. thời gian xử lý luôn được yêu cầu khắt khe để có thể bám theo đối tượng. Một bài toán nhận dạng con người đang phổ biến hiện nay: - Nhận dạng vân tay - Nhận dạng bàn tay - Nhận dạng vân mắt - sử dụng thẻ xác nhận Các phương án đã qua thời gian dài phát triển nên có dộ chính xác cáo. tuy nhiên nó cũng có hạn chế. Với sự phát triển của khoa học máy tính, vấn đề nhận dạng khuôn mặt được quan tâm và yêu cầu của đồ án như sau: Xây dựng một hệ thống nhận dạng mặt người online với đầu vào là ảnh khuôn mặt người cần nhận dạng, được thu thập bằng camera số, đầu ra là kết quả nhận dạng cho khuôn mặt đó. Để có thể xử lý được bài toán trên, đồ án đề xuất hướng tiếp cận là xử dụng các kỹ thuật xử lý ảnh số. các ảnh số được thu thập bằng camera số và xử lý thông qua máy tính PC Bài toán nhận dạng mặt người online là kết hợp của 2 bài toán: - Bài toán xác định mặt người trong ảnh số - Bài toán nhận dạng mặt người Nội dung đồ án: - CHương 1: Trình bày yêu cầu đối với đầu vào và đầu ra, thời gian thực hiện của hệ thống Chương 2: Trình bày về ảnh số, xử lý ảnh số, ứng dụng của ảnh số trong tác và nhận dạng mặt người, các phương pháp hiện có và lựa chọn phương án để giải quyết yêu cầu đề ra. Chương 3: Nói về quá trình thiết kế, thi công các phần của đồ án Chương 4: kết quả, giao diện chương trình, các trường hợp đúng, các trường hợp sai và phân tích các trường hợp sai Chương 5: trình bày các kết quả đã đạt được, các tồn tài và hướng phát triển của đồ án Chương 6: các tài liệu tham khảo

pdf59 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2862 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Nghiên cứu xây dựng hệ thống nhận dạng mặt người online, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ể mang lại hiệu quả nhận dạng cao hơn. 2. Phân tích hệ thống và các cơ sở lý thuyết - 15 - Nhược ñiểm của PCA: - PCA phân loại theo chiều phân bố lớn nhất của tập vec-tơ. Tuy nhiên, không phải bao giờ chiều phân bố lớn nhất lại mang lại hiệu quả cao nhất cho nhận dạng. ðây là nhược ñiểm cơ bản của PCA. - PCA rất nhạy với nhiễu, vì vậy nhiệm vụ tiền xử lý (lọc nhiễu, chuẩn hóa,…) ñòi hỏi phải thực hiện rất kỹ 2.5.2.2. Nhận dạng bằng LDA Tương tự như PCA, LDA (Linear Discriminants Analysis) cũng là một phương pháp nhận dạng theo hướng tiếp cận Apprearance Based. Mục ñích của LDA là tìm ra một không gian mới ñể tách rời các nhóm ảnh với nhau. Không gian ñó ñược tạo bởi các vec-tơ không nhất thiết phải trực giao từng ñôi một. Trong không gian tạo ra từ LDA, các ảnh trong cùng một nhóm sẽ gần nhau, và các nhóm khác nhau sẽ cách xa nhau. LDA khắc phục ñược nhược ñiểm của PCA, ñó là “không phải hướng biến thiên mạnh nhất luôn mang thông tin nhận dạng cao nhất”. ðối với một nhóm, gọi dwithin là khoảng cách lớn nhất các phần tử trong nhóm ñó, và dbetween là khoảng cách bé nhất từ tâm của nhóm ñó tới tâm của các nhóm khác. Mục tiêu của LDA là trong không gian mới, ta có dwithin bé nhất và dbetween lớn nhất. ðể tính các khoảng cách dwithin, dbetween, ta dựa trên tính toán mối tương quan của các thành viên trong một nhóm và sự tương quan giữa các nhóm với nhau. Các mối tương quan này thể hiện qua các ma trận scatter. Các Hình 2.9 và Hình 2.10 minh họa cho tư tưởng của phương pháp LDA. (a) Các ñiểm trong không gian khi chiếu lên một trục bị lẫn với nhau (b) Các ñiểm ñó chiếu lên một trục khác. ðây là mục tiêu của phương pháp LDA. Hình 2.9. Phân loại với LDA 2. Phân tích hệ thống và các cơ sở lý thuyết - 16 - (a) Kết quả phân loại tốt khi khoảng cách dwithin bé nhất và khoảng cách dbetween lớn nhất. (b) Kết quả phân loại không tốt. Hình 2.10. Phân loại dựa trên between và within theo LDA. Ma trận scatter biểu diễn within-class là: w 1 1 ( )( ) jNC j j T i j i j j i S µ µ = = = Γ − Γ −∑∑ (2.4) Với jiΓ là vec-tơ thứ i trong nhóm thứ j, jµ là trung bình của nhóm thứ j, C là số nhóm, jN là số phần tử trong nhóm j. Ma trận scatter biểu diễn between-class là: 1 ( )( ) C T b j j j S µ µ µ µ = = − −∑ (2.5) Với µ là trung bình của tất cả các nhóm. Không gian tạo ra bởi phương pháp LDA là một tập các vec-tơ [ ]1 2W W ,W ,...,Wd= ñược xác ñịnh bởi công thức: argmax T b T W w W S W W W S W = (2.6) Ưu ñiểm của phương pháp: - LDA mang hầu hết các ưu ñiểm của phương pháp PCA, ñồng thời khắc phục ñược nhược ñiểm cơ bản của PCA. Nhược ñiểm của phương pháp: - LDA ñòi hỏi một khối lượng tính toán rất lớn. Nếu ảnh có kích thước 200 200× , thì ma trận biểu diễn bS , wS sẽ có kích thước là 40000 40000× . Hiện nay vẫn chưa có cách tính nhanh phương pháp LDA. - LDA cũng nhạy với nhiễu giống như PCA, ñiều này ñòi hỏi nhiệm vụ tiền xử lý ảnh phải ñược thực hiện kỹ lưỡng. 2. Phân tích hệ thống và các cơ sở lý thuyết - 17 - Qua phân tích ưu nhược ñiểm của từng phương pháp nhận dạng, với ñiều kiện ảnh ñầu vào có kích thước là 600 800× , thời gian xử lý ngắn, ta lựa chọn phương pháp PCA ñể nhận dạng. PCA có nhiệm vụ tạo ra vec-tơ ñặc tính dùng cho việc nhận dạng. 2.6. Nội dung phương pháp PCA Trong nhận dạng mặt người, khi sử dụng PCA, ta coi một ảnh xám R C× pixels là một vec-tơ trong không gian N R C= × chiều. Không gian mới ñược tạo ra bởi PCA ñược cấu thành từ K vec-tơ ñơn vị có chiều là N ,N R C<< × . Mỗi vec-tơ ñược gọi là một Eigenface. Phép biến ñổi: 1 1 2 2 N K            = → =            a w a w A W a w ⋮ ⋮ với K N≪ Theo công thức: = ⋅W T A (2.7) Với T là ma trận chuyển ñổi. T có kích thước là K N× - Gọi M là số ảnh ñầu vào, mỗi ảnh ñã ñược chuyển thành một vec-tơ N chiều. Ta có tập hợp ñầu vào 1 2{ , ,..., }M=X x x x ( N i ∈x ℝ ). - Trung bình của các vec-tơ ñầu vào (tâm của tập hợp ñầu vào): 1 1 M i iM = = ∑x x (2.8) - Sai lệch so với tâm: i iΦ = −x x (2.9) - Gọi 1 2[ , ,..., ]M= Φ Φ ΦA , ta có covariance matrix của A: 1 1 M T T i i iM = = Φ Φ = ⋅∑C A A (2.10) - Gọi các giá trị riêng của C là 1 2, ,..., Nλ λ λ sắp xếp theo thứ tự giảm dần, tương ứng với N vec-tơ riêng 1 2, , , Nu u u… . Các vec-tơ riêng này trực giao từng ñôi một. Mỗi vec-tơ riêng iu ñược gọi là một eigenface. Tập hợp vec-tơ ban ñầu ñược biểu diễn trong không gian tạo bởi N eigenface theo mô tả sau: 1 1 2 2 1 ... N N N i i i w w w w = − = + + + =∑x x u u u u (2.10) - Chọn lấy K vec-tơ riêng u tương ứng với K giá trị riêng λ lớn nhất. Ta có: 2. Phân tích hệ thống và các cơ sở lý thuyết - 18 - ɵ 1 1 2 2 1 ... K K K i i i w w w w = − = + + + =∑x x u u u u với K N≪ (2.11) Véc-tơ các hệ số khai triển 1 2[ , ,..., ]Kw w w chính là biểu diễn mới của ảnh ñược tạo ra trong không gian PCA. Ảnh mới xˆ vẫn giữ ñược các ñặc ñiểm chính của khuôn mặt ñầu vào. Véc-tơ 1 2[ , ,..., ]Kw w w ñược tính theo công thức sau: 11 2 2 ( ) ( ) T T T T K K w w w          = − = ⋅ −            u u x x U x x u ⋮ ⋮ (2.12) Vấn ñề cần giải quyết ở ñây là ma trận covariance T= ⋅C A A có kích thước 2N . Với N = 200 × 200 = 40000, khối lượng tính toán sẽ rất lớn. Do ñó, ñể tính ñược các eigenface mà không cần phải tính cả ma trận C, người ta ñưa ra phương pháp tính nhanh dựa vào tính vec-tơ riêng và giá trị riêng của ma trận T= ⋅L A A có kích thước M×M, với M là số ảnh ñầu vào. Ta có thể chứng mình như sau: gọi iv , iµ lần lượt là vec-tơ riêng và giá trị riêng của ma trận L: T i i iµ⋅ ⋅ = ⋅A A ν ν (2.13) Nhân cả 2 vế với A ta có: T i i iµ⋅ ⋅ ⋅ = ⋅ ⋅A A A ν A ν (2.14) Ta thấy i⋅A ν chính là vec-tơ riêng của T= ⋅C A A , ứng với giá trị riêng iµ . 2.7. Sơ ñồ khối và nhiệm vụ từng khối trong hệ thống 2.7.1. Sơ ñồ khối phần cứng Sơ ñồ các khối phần cứng của hệ thống như sau: Hình 2.11. Mô hình phần cứng của hệ thống 2. Phân tích hệ thống và các cơ sở lý thuyết - 19 - Trong khuôn khổ của ñồ án, ảnh số của ñối tượng ñược thu thập thông qua một webcam. Tín hiệu webcam truyền về PC là một luồng hình ảnh với tốc ñộ 25 hình/s theo kênh truyền thông qua cổng USB. Khối thu thập ảnh có chức năng lấy ra một hình ảnh trong ñó có chứa ñối tượng cần nhận dạng. MATLAB sẽ ñiều khiển toàn bộ quá trình thu nhận từng luồng và giữ lại ảnh cần chọn. MATLAB cho phép chúng ta ñiều khiển quá trình hoạt ñộng và truyền dữ liệu của camera có kết nối với máy tính theo các chuẩn khác nhau. ðể ñiều khiển thiết bị, MATLAB sẽ thông qua driver Windows API (Application Programming Interface) ñể tác ñộng tới các phần cứng kết nối với máy tính. Thư viện chuyên dụng Image Acquisition Toolbox của MATLAB ñược thiết kế riêng dành cho mục ñích ñiều khiển thiết bị và thu nhận ảnh. Chức năng ñiều khiển của MATLAB thông qua thư viện Image Acquisition Toolbox ñược minh họa trên Hình 2.12 Hình 2.12: Thu thập hình ảnh từ webcam theo các chuẩn khác nhau bằng thư viện Image Acquisition Toolbox của MATLAB Từ Hình 2.12 ta thấy khối thu thập ảnh và xử lý ảnh ñược kết nối với nhau thông qua Image Acquisition Toolbox. Luồng tín hiệu ñược truyền về PC và ñược MATLAB thu nhận. Cơ chế lấy ảnh theo luồng tín hiệu của MATLAB ñược thể hiện trong Hình 2.13. 2. Phân tích hệ thống và các cơ sở lý thuyết - 20 - Hình 2.13: Luồng dữ liệu ảnh và thu nhận frame ảnh bằng MATLAB Luồng tín hiệu theo chuẩn USB ñược truyền lên liên tục khi có lệnh start từ máy tính ñiều khiển Webcam hoạt ñộng. Mỗi frame là một ảnh. Dữ liệu sẽ ñược ghi vào bộ nhớ bắt ñầu từ khi có lệnh Trigger và kết thúc quá trình lưu bởi lệnh Acquisition stop. Khi ta cần lấy một ảnh, thời gian giữa Trigger và Acquisition Stop sẽ có chiều dài bằng 1 frame. Khi ñó ta sẽ có ảnh cần chụp. Các tín hiệu Trigger và Acquisition có thể ñược ñiều khiển tự ñộng (automatic) hoặc bằng tay (manual). ðồ án lựa chọn phương pháp manual, các lệnh Trigger và Acquisition ñược ñiều khiển bởi người sử dụng. 2.7.2. Sơ ñồi khối phần mềm: Phần mềm chủ yếu là ñược viết ñối với khối Xủ lý ảnh số. Tiền xử lý Trích chọn ñặc tính Thu thập và tách mặt người trong ảnh Cơ sở dữ liệu Phân loại, nhận dạng Xử lý kết quả Ảnh cần nhận dạng Ảnh ñược chuẩn hóa Vec-tơ ñặc tính Xử lý ảnh số Hình 2.14. Sơ ñồ khối phần mềm hệ thống nhận dạng mặt người 2. Phân tích hệ thống và các cơ sở lý thuyết - 21 - 2.7.2.1. Cơ sở dữ liệu Các ảnh mẫu ñược chọn và ñược xử lý qua hai bước Tiền xử lý và Trích chọn ñặc tính. Các vec-tơ ñặc tính của các ảnh học ñược lưu vào cơ sở dữ liệu, sử dụng ñể ñối chiếu với các ñối tượng mới cần nhận dạng. Ảnh ñối tượng cần nhận dạng cũng ñược xử lý qua các bước trên. Qua bước xử lý Phân loại và nhận dạng, vec-tơ ñặc tính của ảnh ñầu vào sẽ ñược so sánh lần lượt với vec-tơ ñặc tính của từng ảnh học trong cơ sở dữ liệu ñể ñưa ra kết quả nhận dạng. Trong ñồ án này, cơ sở dữ liệu ñược dùng là hai bộ ảnh: - Bộ ảnh thứ nhất ñược download từ thư viện của trường ñại học Cambridge, ảnh khuôn mặt ñược cắt thủ công bằng chương trình Photoshop 7.0. ðộ phân giải của các ảnh là 220×170 pixels và ñược lưu trong ổ cứng máy PC với ñịnh dạng JPEG. - Bộ thứ hai là ảnh ñược chụp trực tiếp bằng webcam, ñược tách ra từ khối thu thập ảnh của hệ thống. Ảnh ñược tách có ñộ phân giải 310×250 pixels, lưu trong ổ cứng máy PC dưới ñịnh dạng JPEG. 2.7.2.2. Thu thập và tách mặt người trong ảnh Ảnh ñược chụp bằng Webcam kỹ thuật số, ñược mã hóa thành file ảnh dạng JPEG có kích thước 600×800 pixel, hệ màu RGB 24 bits. Chương trình MATLAB ñiều khiển việc thu thập ảnh, hình ảnh ñược xử lý, hiển thị lên màn hình PC và lưu trữ trong bộ nhớ máy tính. Nhiệm vụ của khối là sau khi thu thập ñược ảnh, tự ñộng tách mặt người ra khỏi ảnh số. 2.7.2.3. Tiền xử lý Nhiệm vụ của khối: tách mặt ra khỏi ảnh và chuẩn hóa. ðầu vào của khối: hóa ảnh ñầu vào, là các ảnh ñược trích trực tiếp từ webcam (có ñộ phân giải là 800×600 pixel, ảnh màu RGB 24 bits). ðầu ra của khối: Ảnh mặt người ñược tách khỏi nền và ñược chuẩn hóa. Chức năng của khối gồm: - Tách mặt người ra khỏi ảnh. - Chuẩn kích thước về 310×250 pixel. - Căn tư thế thẳng ñứng (xoay ngang theo ñường nối hai mắt). - Chuẩn ánh sáng - Chuẩn mức xám - Lọc nhiễu 2.7.2.4. Trích chọn vec-tơ ñặc tính Nhiệm vụ của khối là tạo ra vec-tơ ñặc tính mang những ñặc tính riêng của khuôn mặt cần nhận dạng. Số chiều của vec-tơ ñặc tính phải nhỏ hơn rất nhiều so với tín hiệu ñầu vào. 2. Phân tích hệ thống và các cơ sở lý thuyết - 22 - ðầu vào của khối: ảnh sau khi ñã qua tiền xử lý. ðầu ra của khối: vec-tơ ñặc tính ñược tính bằng phương pháp PCA. - Các bước tiến hành trích chọn ñặc tính với PCA: 1. Tạo một tập S gồm M ảnh (ảnh học). Mỗi ảnh có kích thước R C× . Mỗi ảnh ñược chuyển thành một vec-tơ N R C= × chiều. { }1 2 3, , ,..., MS = Γ Γ Γ Γ (2.15) 2. Tính ảnh trung bình Ψ của tập hợp trên. 1 1 M i iM = Ψ = Γ∑ (2.16) 3. Tính sai lệch của các ảnh ñầu vào so với trung bình i iΦ = Γ −Ψ (2.17) 4. Tìm tập hợp gồm M vec-tơ trực giao, u , biểu diễn chiều phân bố mạnh nhất của tập dữ liệu Φ . Tập hợp các vec-tơ u ñược gọi là eigenface của tập dữ liệu học. 5. Xây dựng các ảnh mới kω theo M vec-tơ u [ ]1 2 ( ) , ,..., T k k k T M uω ω ω ω = Γ −Ψ Ω = (2.18) Cuối cùng, ta có kω là vec-tơ ñặc tính của ảnh thứ k trong tập cơ sở dữ liệu ñầu vào. Ảnh mới cần nhận dạng, Γ , sẽ ñược trích chọn vec-tơ ñặc tính theo công thức: ( )Tkuω = Γ −Ψ (2.19) 2.7.2.5. Phân loại, nhận dạng Khối này có chức năng ñối chiếu vec-tơ ñặc tính ñược tạo ra với cơ sở dữ liệu, từ ñó ñưa ra ñược kết quả nhận dạng. Trong bài toán, kết quả nhận dạng là “ñã ñược biết” hay là “chưa ñược biết”. Khối này có thể ñược thực hiện theo nhiều phương pháp khác nhau như khoảng cách Euclides, mạng nơ-ron, SVM,… Khoảng cách Euclides là phương pháp ñơn giản nhất, nó có kết quả tốt ñối với các ñối tượng tạo thành các nhóm cách xa nhau. Trong ñồ này, ta sử dụng phương pháp 2. Phân tích hệ thống và các cơ sở lý thuyết - 23 - này ñể nhận dạng. Vec-tơ ñặc tính của ñối tượng cần nhận dạng sẽ ñược so sánh lần lượt với vec-tơ ñặc tính của từng ảnh mẫu ñã ñược học trước ñó. Các khoảng cách ngắn nhất ñược lưu lại. Nếu khoảng cách ngắn nhất nhỏ hơn một ngưỡng cho phép, ta xác nhận rằng ñối tượng “ñã ñược biết ñến”. Việc nhận dạng trên ñược thực hiện qua công thức sau: { }min , 1,k k Mε ω ω= − = (2.20) Nếu thresholdε ≤ , ta xác nhận ảnh Γ là “ñã ñược biết”. Nếu thresholdε > , ta xác nhận ảnh Γ là “chưa ñược biết”. Trong ñó threshold là giá trị của ngưỡng nhận biết. Giá trị này ñược ñiều chỉnh cho từng bộ cơ sở dữ liệu. Nếu kết quả nhận dạng là ñối tượng “ñã ñược biết”, hệ thống sẽ tìm ñến một file dữ liệu chứa các thông tin về ñối tượng vừa tìm ñược. Các thông tin ñó sẽ ñược hiển thị trên giao diện của chương trình. Chương 2 ñã trình bày về các khối của hệ thống và phương án giải quyết cho từng khối. Chương 3 sẽ thể hiện quá trình vận dụng các phương án ñó vào hệ thống. Các bước thiết kế và kết quả triển khai vào hệ thống sẽ ñược trình bày chi tiết cho từng khối. 3. Thiết kế chi tiết và triển khai hệ thống - 24 - Chương 3. Thiết kế chi tiết và triển khai hệ thống 3.1. Thu thập và tách mặt người trong ảnh ðầu vào của khối: ảnh lấy ñược từ Webcam. ðầu ra của khối: Ảnh người cần nhận dạng ñược tách khỏi nền. Khối này sử dụng phương pháp trừ ảnh ñể tách ñối tượng. Cho ảnh nền X và ảnh chứa ñối tượng Y có cùng kích thước 600×800. Ảnh kết quả của phép trừ ảnh là I. Xét pixel có tọa ñộ 0 0( , )x y , ta có: 0 0 0 0 0 0 0 0 0 0 1 ( , ) ( , ) ( , ) 0 ( , ) ( , ) khi X x y Y x y I x y khi X x y Y x y ε ε  − > =  − ≤ (3.1) Kết quả của phép trừ ảnh là một ảnh nhị phân. Khu vực chứa ñối tượng sẽ có màu trắng (giá trị bằng 1), và khu vực còn lại sẽ có màu ñen (giá trị bằng 0). Tuy nhiên, do sự thay ñổi cường ñộ sáng ở một mức ñộ nào ñó giữa ảnh nền và ảnh chứa ñối tượng, ảnh sẽ có nhiều nhiễu. Lọc nhiễu: - Lọc các nhiễu (các vùng màu trắng không có ñối tượng) có diện tích bé. Vùng chứa ñối tượng luôn là vùng có diện tích tích lớn nhất. - Lọc các vùng ñen bên trong khu vực chứa ñối tượng. (a) (b) (c) (d) (e) Hình 3.1. Quá trình thu thập và tách ñối tượng khỏi ảnh. a. - Ảnh nền, b- Ảnh chưa ñối tượng, c. Kết quả trừ ảnh, d. Mặt nạ sau khi lọc nhiễu, e – ðối tượng ñược tách khỏi nền. 3. Thiết kế chi tiết và triển khai hệ thống - 25 - 3.2. Chuẩn hóa ảnh - ðầu vào: Ảnh ñối tượng sau khi ñã ñược tách ở khâu thu thập. - ðầu ra: Ảnh có kích thước cố ñịnh (310×250 pixels), bao trọn khuôn mặt ñối tượng, ñược xoay thẳng và ñược cân bằng sáng. 3.2.1. Cắt và xoay chuẩn ảnh: ðể thực hiện nhiệm vụ tìm khung khuôn mặt mà xoay chuẩn, ñồ án sử dụng phương pháp tìm tâm 2 mắt ñể xác ñịnh vị trí khuôn mặt. ðể xác ñịnh vùng mắt, ta nhận thấy mắt là một vùng có ánh sáng tối nằm ở một khu vực riêng trên khuôn mặt, xung quanh là vùng màu da. Do ñó, ta sử dụng phương pháp tách vùng ñể tìm ra vùng chứa mắt. Phương pháp phân ngưỡng ñược sử dụng. Các bước thực hiện: Hình 3.2. Khối chuẩn hóa ảnh 3. Thiết kế chi tiết và triển khai hệ thống - 26 - a – Xác ñịnh tâm mắt Ta thấy, số pixel quy ñịnh gương mặt có tỉ lệ gần như không ñổi so với tổng số pixel (ñiều này do ta ñã quy ñịnh chặt chẽ ñiều kiện biên). Ảnh chứa ñối tượng Lược ñồ mức xám của ảnh Hình 3.3. Xác ñịnh vùng mắt bằng phân tích lược ñồ mức xám Ta thấy khu mực chứa màu mắt khá nổi bật trong lược ñồ mức xám. Nhận thấy tỉ lệ của vùng da và nền so với tổng số pixel luôn nằm trong một khoảng cố ñịnh, do ñó ta có thể tính ñược ngưỡng của vùng màu mắt. Do diện tích của vùng mắt là nhỏ hơn rất nhiều so với vùng tóc, nên ta sử dụng chương trình lọc ñể bỏ ñi các vùng có diện tích lớn. Vùng có diện tích lớn hơn ngưỡng sẽ ñược thay thế bằng giá trị 0 (màu ñen). Qua khảo sát, ñồ án lựa chọn ngưỡng ñó là 1000 pixels. Việc ñặt ngưỡng thông thường sẽ sinh ra các vùng nhiễu có diện tích bé. ðể lọc các vùng này, ta cũng sử dụng hàm lọc giống như trên nhưng chỉ ñể lọc với các vùng có diện tích bé hơn ngưỡng. Qua khảo sát, ñồ án lựa chọn ngưỡng ñó là 100 pixels. Sau khi lọc nhiễu, ta có kết quả như sau: Ảnh mặt nạ sau khi ñặt ngưỡng tách màu mắt Ảnh mặt nạ sau khi ñược lọc nhiễu. Vùng mắt ñược tách Hình 3.4. Quá trình ñặt ngưỡng tách vùng mắt. Sau khi tách ñược vùng mắt, sử dụng phương pháp tìm tâm của một vùng, ta có ñược tâm của mắt như sau: 3. Thiết kế chi tiết và triển khai hệ thống - 27 - Hình 3.5. Xác ñịnh tâm mắt của ñối tượng Tìm ñược tâm 2 mắt, từ ñây ta có thể thực hiện phép xoay ảnh và tách ñược vùng mặt như mong muốn. b – Xoay ảnh và tắt khung mặt Từ tọa ñộ tâm 2 mắt, ta xác ñịnh góc nghiêng α của khuôn mặt so với phương thẳng ñứng. Nếu 05α > , ta sẽ thực hiện phép xoay ảnh. α α Hình 3.6. Xác ñịnh góc nghiêng của khuôn mặt dựa trên tâm mắt. Giả sử tại tâm 2 mắt có tọa ñộ tương ứng là (x1,y1) và (x2,y2) khi ñó ta có: 2 1 2 1 y x y tg x α − = − (3.2) Xoay chuẩn ñổi tượng thực chất là một phép biến ñổi hệ tọa ñộ. Giả sử ảnh f ban ñầu ở trong hệ tạo ñộ (w,z), thông qua phép biến ñổi T ta ñược ảnh f’ trong hệ tọa ñộ (x, y); ( ){ }( , ) ,x y T w z= (3.3) Phương pháp biến ñổi phổ biến hay ñược dùng là phương pháp affine transform theo phương pháp này thì: 3. Thiết kế chi tiết và triển khai hệ thống - 28 - [ ] [ ] [ ] 11 12 21 22 31 32 0 1 1 1 0 1 t t x y w z w z t t t t    = ⋅ = ⋅      T (3.4) Các phép chuyển ñổi thông thường có thể là: scale, rotation translation,… ðối với mỗi phương pháp có ma trận T khác nhau, trong trường hợp xoay ảnh thì ma trận T tương ứng sẽ là: cos sin 0 sin cos 0 0 0 1 α α α α    = −     T (3.5) Tương ứng với phương trình toán học: cos sin sin cos x w z y w z α α α α = − = + (3.6) Sau khi xoay, tọa ñộ của các ñiểm trong ảnh cũ sẽ bị dịch chuyển ñi theo công thức trên. Trong hệ tọa ñộ mới, ta có ñược khuôn mặt theo tư thế thẳng ñứng và hai tâm mới tương ứng với mắt của ñối tượng. Từ ñây, ta có ñược khung ñể tách phần mặt mong muốn ra khỏi ảnh. Kết quả thực hiện như sau: 01α = 09α = Hình 3.7. Xoay chuẩn ñối tượng theo góc α 3. Thiết kế chi tiết và triển khai hệ thống - 29 - c) Chuẩn sáng ảnh ðể kiểm tra mức sáng, ta kiểm tra biểu ñồ mức xám của ảnh và sử dụng thuật toán san bằng mức xám (histogram equalization). Ảnh sau khi ñược san bằng mức xám thì mức xám của ảnh sẽ phân bố ñều từ 0-255. (a) 0 50 100 150 200 250 0 500 1000 1500 b) (b) (c) 0 50 100 150 200 250 0 500 1000 1500 2000 d) (d) Hình 3.8. Kết quả cân bằng mức xám, biểu ñồ sau khi mức xám phân bố ñều hơn so với ban ñầu. 3.3. Trích chọn ñặc tính bằng phương pháp PCA Các khâu trong quá trình trích chọn ñặc tính: - ðầu vào: Ảnh ñã ñược chuẩn hóa - ðầu ra: vec-tơ ñặc tính của ảnh ñầu vào. ðể có ñược vec-tơ ñặc tính, ta cần phải qua 2 giai ñoạn: Giai ñoạn 1: Tạo ra các eigenfaces thông qua quá trình học các ảnh mẫu. Giai ñoạn 2: Chiếu vec-tơ ảnh cần nhận dạng vào không gian eigenface. Các vec-tơ ñặc tính của ảnh ñầu vào là phép chiếu tử ảnh ban ñầu vào không gian tạo bởi các eigenface. Quá trình trích chọn ñặc tính ñược thể hiện qua lưu ñồ sau: 3. Thiết kế chi tiết và triển khai hệ thống - 30 - Khối Trích chọn ñặc tính Hình 3.9. Sơ ñồ bên trong khối Trích chọn ñặc tính sử dụng PCA 3.3.1. Quá trình học Mô hình ñược xây dựng và kiểm nghiệm trên 2 bộ dữ liệu: - Bộ 1: Ảnh ñược download từ bộ dữ liệu ảnh mẫu ORL của Cambridge University Engineering Department. Bộ dữ liệu lựa chọn có 20 người, ảnh ñược cắt thủ công, mỗi người 5 ảnh. Trong số 5 ảnh của mỗi người ta chọn ngẫu nhiên 2 ảnh ñể tạo bộ số liệu học, và 3 ảnh còn lại ñể kiểm tra mô hình. Trong bộ ảnh này, các ảnh học ñược xếp vào cùng một thư mục, có ñánh số thứ tự. - Bộ 2: Bộ thu thập trực tiếp từ hệ thống webcam ñược thiết kế trong khuôn khổ của ñồ án. Người chụp ñứng cách webcam khoảng 1m, tư thế tương ñối ngay ngắn. Số người ñược thu thập là 6 người, mỗi người có 5 ảnh ñể xây dựng mô hình. Ảnh ñể kiểm tra mô hình cũng ñược lấy trực tiếp từ webcam. Trong bộ ảnh này, ảnh ñược xếp theo nhóm. Các ảnh của cùng một người ñược xếp chung vào một thư mục. Những người khác nhau sẽ ñược ñặt trong các thư mục khác nhau. Trong mỗi thư mục có một file dữ liệu chứa thông tin về người có ảnh ñặt trong thư mục ñó. Các thư mục ñược ñánh số theo thứ tự. 3. Thiết kế chi tiết và triển khai hệ thống - 31 - Các khuôn mặt trong trong bộ dữ liệu 1 ñược cắt thủ công . Tư thế của mỗi khuôn mặt là ngẫu nhiên và chưa ñược căn chỉnh. Các ảnh chưa ñược chuẩn sáng và san bằng mức xám. Trong bộ cơ sở dữ liệu 2, các ảnh ñều ñã ñược căn chỉnh về tư thế thẳng ñứng. Các ảnh cũng chưa ñược chuẩn sáng và san bằng mức xám. Tất cả các ảnh học của mỗi bộ ñược liệt kê và ñược thể hiện trên các Hình 3.10 (a) và Hình 3.10(b) sau: Hình 3.10 (a). Các ảnh học của bộ dữ liệu 1 3. Thiết kế chi tiết và triển khai hệ thống - 32 - (b) Hình 3.10 (b). Các ảnh học của bộ dữ liệu 2. 3.3.1.1. Chuẩn hóa ma trận ảnh Chuẩn hóa vec-tơ là khâu ñầu tiên cần thực hiện khi sử dụng thuật toán PCA. Sự phân bố của một vec-tơ trong không gian ñược thể hiện qua trung bình (mean) và chuẩn (standart) của vec-tơ ñó. Cho vec-tơ [ ]1 2, ,..., Nx x x=X , trung bình và chuẩn của vec-tơ X ñược tính như sau: 1 2 1 1 ( ) ( ) ( ) 1 N i i N i i mean x N x std N = = = = − = − ∑ ∑ X X X X (3.7) Theo công thức trên, từ một ảnh Γ ban ñầu, ta có trung bình Γ và chuẩn ( )std Γ của Γ . Phép chuẩn hóa ma trận ảnh ñược thực hiện theo công thức sau: 3. Thiết kế chi tiết và triển khai hệ thống - 33 - ( , ) '( , ) ( ) x y x y std Γ − Γ Γ = Γ (3.8) trong ñó, 'Γ là ma trận ảnh ñã ñược chuẩn hóa, (x, y) là tọa ñộ ñiểm ảnh. Kết quả quá trình chuẩn hóa ñược thể hiện như sau: Ảnh ñầu vào Ảnh sau chuẩn hóa Hình 3.11. Chuẩn hóa ma trận ảnh 3.3.1.2. Tính trung bình tập ảnh ñầu vào Khâu này cho ta xác ñịnh ñược gốc tọa ñộ của không gian vec-tơ biểu diễn các ảnh. Ảnh trung bình ñược tính bằng trung bình cộng của tất cả các ảnh. Ảnh trung bình này thể hiện những ñiểm giống nhau nhất giữa tất cả các khuôn mặt. Gọi số ảnh học là N, mỗi ảnh có kích thước R C× . { }1 2 3, , ,..., MS = Γ Γ Γ Γ (3.9) Trung bình N ảnh trên ñược tính theo công thức: 1 1 M i iM = Ψ = Γ∑ (3.10) Kết quả thực hiện trên 2 bộ dữ liệu: Trung bình tập ảnh học của bộ 1 Trung bình tập ảnh học của bộ 2 Hình 3.12. Trung bình ảnh của các tập dữ liệu học. Sau khi tính ñược ảnh trung bình của bộ ảnh học, các ảnh ñầu vào sẽ ñược so sánh với ảnh trung bình này. Ảnh mới sẽ chứa những ñiểm khác nhau giữa ảnh ñầu 3. Thiết kế chi tiết và triển khai hệ thống - 34 - vào so với các ảnh còn lại. Ta có tập vec-tơ ñầu vào mới sau khi so sánh với trung bình: 1 2[ , ,..., ] , 1, M i i i M = Φ Φ Φ Φ = Γ −Ψ = A (3.11) 3.3.1.3. Tính eigenface Ma trận Covariance (covariance matrix) thể hiện sự tương quan của từng vec-tơ ñối với các vec-tơ còn lại trong không gian. Cho 2 vec-tơ N chiều [ ]1 2, ,..., Nx x x=X và [ ]1 2, ,..., Ny y y=Y . Ta có tương quan giữa 2 vec-tơ trên ñược tính theo công thức: 1 ( )( ) cov( , ) 1 N i i i x y N = − − = − ∑ X Y X Y (3.12) Nếu hai véc tơ ñã ñược chuẩn hóa trước, ứng với 0, 0= =X Y , ta có: 1 1cov( , ) ( ) 1 1 N i i Ti x y N N == = ⋅ − − ∑ X Y X Y (3.13) Cho một tập M vec-tơ N chiều 1 2[ , ,..., ]MΦ Φ Φ , xếp thành một ma trận A kích thước N M× , ta có covariance của ma trận A là một ma trận C có kích thước N N× , phần tử ( , )C i j ñược tính như sau: ( , ) cov( , )i jC i j = Φ Φ (3.13) Vec-tơ riêng (eigenvector) và giá trị riêng (eigenvalue) : Cho ma trận vuông N N×∈C ℝ , vec-tơ riêng u và giá trị riêng λ khi và chỉ khi: λ⋅ = ⋅C u u (3.14) Eigenface: Theo lý thuyết, eigenface chính là các vec-tơ riêng u ứng với các giá trị riêng v có giá trị lớn nhất của ma trận covariance: 1 1 M T T i i iM = = Φ Φ = ⋅∑C A A ðể tính nhanh các eigenface này, người ta chuyển sang tính toán với ma trận T= ⋅L A A . Lựa chọn K vec-tơ riêng v ứng với K giá trị riêng lớn nhất của L. Ta có 3. Thiết kế chi tiết và triển khai hệ thống - 35 - công thức chuyển ñổi: = ⋅u A v . Các giá trị riêng của L cũng chính là các giá trị riêng của C Gọi các giá trị riêng của L là: { }1 2, ,..., Mλ λ λ λ= sắp xếp theo thứ tự giảm dần. K giá trị riêng lớn nhất ñược lựa chọn theo công thức: 1 1 K i i M i i λ ε λ = = ≥ ∑ ∑ (3.15) Trong ñó, ε là ngưỡng chọn. ðồ án lựa chọn 0,97ε = Kết quả tính eigenface cho 2 bộ số liệu như sau: Bộ 1: Theo công thức (3.15), 34 giá trị riêng cần tìm ñược thể hiện trên Hình 3.13. 10 20 30 40 50 60 70 80 0 5 10 15 x 10 4 Hình 3.13. Biều ñồ giá trị riêng của covariance matrix. Chọn 34 giá trị riêng ñầu tiên ñể trích chọn ñặc tính. Trong hình trên, các giá trị riêng biến thiên rất nhanh về 0. Tổng giá trị của 34 giá trị riêng ñầu tiên chiếm hơn 97% tổng giá trị tất cả các giá trị riêng tìm ñược. 34 eigenface tương ứng với 34 giá trị riêng trên ñược thể hiện trên Hình 3.14 sau: 3. Thiết kế chi tiết và triển khai hệ thống - 36 - Hình 3.14. 34 eigenfaces tìm ñược. Bộ 2: Theo công thức (3.15), 26 giá trị riêng cần tìm ñược thể hiện trên Hình 3.15. 10 20 30 40 50 60 70 0 0.5 1 1.5 2 2.5 x 10 5 Hình 3.15. Biều ñồ giá trị riêng của covariance matrix. Chọn 26 giá trị riêng ñầu tiên ñể trích chọn ñặc tính. Tương tự bộ 1, các giá trị riêng tìm ñược cũng biến thiên rất nhanh về 0. Tổng giá trị 26 giá trị riêng ñầu tiên chiếm hơn 97% tổng giá trị tất cả các giá trị riêng tìm ñược. Do ñó ta chọn 26 giá trị riêng ñầu tiên. 3. Thiết kế chi tiết và triển khai hệ thống - 37 - 26 eigenface tương ứng với 26 giá trị riêng trên ñược thể hiện qua Hình 2.16 Hình 3.16. 26 eigenfaces tìm ñược. Qua các Hình 3.14 và Hình 3.16, ta có thể thấy ñược sự biến thiên của các eigenface tìm ñược.Các eigenface ñầu tiên rất rõ rệt, ñặc trưng cho chiều biến thiên mạnh nhất của bộ dữ liệu học. Các eigenface sau “nhạt” dần, thể hiện cho các hướng biến thiên giảm dần của bộ dữ liệu học. Các eigenface cuối cùng tương ứng với các giá trị riêng gần bằng 0. Số lượng eigenface quyết ñịnh số chiều của vec-tơ ñặc tính. Các eigenface tìm ñược là các vec-tơ tạo ra không gian mới ñể thực hiện nhiệm vụ trích chọn ñặc tính. Vec-tơ ñặc tính của ñối tượng cần nhận dạng chính là hình chiếu của ảnh ñầu vào lên không gian mới này. Từ ñây, các mô hình nhận dạng sẽ ñược áp dụng ñể mang lại hiệu quả nhận dạng cao mà vẫn ñáp ứng ñược yêu cầu về thời gian xử lý của hệ thống. 3.3.2. Quá trình tạo ñặc tính Cho ảnh ñầu vào Γ . Trong không gian ñược tạo bởi K eigenface, ảnh Γ sẽ ñược thể hiện bởi các hệ số [ ]1 2, ,..., Kw w wω = ñược tính theo công thức sau: 3. Thiết kế chi tiết và triển khai hệ thống - 38 - ( )Tkuω = Γ −Ψ (3.16) Trong ñó, Ψ là trung bình các ảnh học ñã ñược tính trong phần học. Trong không gian eigenface này, ảnh mới ′Γ sẽ ñược biểu diễn bởi công thức sau: 1 1 2 2 ... K Kw w w′Γ = Ψ + ⋅ + ⋅ + + ⋅u u u (3.17) Trong ñó { }1 2, ,..., Ku u u u= là các eigenface. Sai số ′Γ −Γ càng nhỏ thì lượng thông tin bị mất khi trích chọn ñặc tính càng nhỏ, ñiều ñó có nghĩa là vec-tơ ñặc tính tạo ra có chất lượng tốt.. Theo công thức trên, kết quả thu ñược trên 2 bộ số liệu ñược minh họa trong Hình 3.17 sau: Bộ 1 Bộ 2 Ảnh ñầu vào Ảnh tái tạo từ các vec-tơ ñặc tính. Hình 3.17. Khôi phục ảnh từ các vec-tơ ñặc tính Từ Hình 3.17 ta thấy, ảnh ñược khôi phục lại từ vec-tơ ñặc tính trong không gian mới hầu như không bị mất thông tin. Từ ñây là có thể ñánh giá ñược chất lượng các vec-tơ ñặc tính ñược tạo ra là tốt. 3. Thiết kế chi tiết và triển khai hệ thống - 39 - 3.4. Quá trình nhận dạng - ðầu vào: Vec-tơ ñặc tính của ảnh chứa ñối tượng cần nhận dạng - ðầu ra: Trả lời ñối tượng “ñã ñược nhận biết” hay “chưa ñược biết”. Quá trình nhận dạng ñược thực hiện bằng cách so sánh khoảng cách giữa vec tơ ñặc tính của ảnh cần nhận dạng và vec-tơ ñặc tính của từng ảnh học, tìm ra ảnh học gần với ảnh cần nhận dạng nhất. Nếu khoảng cách bé nhất ñó bé hơn một ngưỡng xác ñịnh, ta kết luận là ñối tượng ñã ñược nhận biết. Tập ảnh học { }1 2 3, , ,..., MS = Γ Γ Γ Γ lần lượt ñược chiếu vào không gian eigenface, vec-tơ ñặc tính của các ảnh học lần lượt là: 1 2, ,..., Mω ω ω . Ảnh chứa ñối tượng cần nhận dạng Γ , chiếu vào không gian eigenface ta ñược vec-tơ ñặc tính ω . Ta cần tìm ảnh XΓ trong cơ sở dữ liệu học có khoảng cách ngắn nhất tới ñối tượng cần nhận dạng theo công thức sau: argminX k ω ω ω ω= − Xσ ω ω= − (3.18) Nếu σ ε< , ñối tượng ñã ñược biết ñến, là người XΓ trong cơ sở dữ liệu học. Nếu σ ε≥ , ñối tượng chưa ñược biết ñến. Ảnh ñầu vào Ảnh tách ñược 61.6σ = 66.7σ = 94.8σ = Các kết quả gần với ñối tượng nhất tương ứng với các giá trị σ Hình 3.18. Nhận dạng theo khoảng cách Euclide. Sau khi thiết kế và triển khai hệ thống, ñồ án sẽ ñi tới nhiệm vụ thiết kế giao diện và kiểm tra sự hoạt ñộng của hệ thống. Các thiết bị lựa chọn, ngôn ngữ lập trình và các 3. Thiết kế chi tiết và triển khai hệ thống - 40 - chương trình tự viết sẽ ñược trình bày trong chương 4. Ngoài ra, chương 4 sẽ trình bày về giao diện chương trình, các chức năng, cách sử dụng giao diện, các kết quả nhận dạng cho từng bộ số liệu và phân tích các trường hợp dẫn ñến kết quả nhận dạng sai. 4. Các kết quả triển khai hệ thống và áp dụng - 41 - Chương 4. Các kết quả triển khai hệ thống và áp dụng 4.1. Lựa chọn thiết bị và công cụ lập trình Các thiết bị sử dụng trong triển khai hệ thống như sau: 4.1.1. Camera - Tên Camera: Webcam Tako 10. - ðặc ñiểm: o Kết nối với máy tính theo chuẩn USB. o Tốc ñộ truyền: 25 hình/s o ðộ phân giải: 600×800 pixel, có thể ñiều chỉnh. 4.1.2. PC Cấu hình máy: - Chip Pentium IV 2.4GHz - DDRAM 512GB 4.1.3. Công cụ lập trình - Tên chương trình: MATLAB version 7.0.4 R2004 - Các thư viện: o Image Acquisition Toolbox Version 1.8 o Image Processing Toobox, Version 5.0.2 4.2. Các hàm sử dụng ðể phục vụ cho các tính toán và mô phỏng thuật toán, trong khuôn khổ ñồ án ñã có nhiều hàm và chương trình ñược tự xây dựng. Các hàm và chương trình này ñược viết bằng ngôn ngữ MATLAB. Một số hàm thư viện khác của MATLAB cũng ñược sử dụng trong ñồ án sẽ ñược giới thiệu trong phần tài liệu tham khảo. 4.2.1. Khối tách ảnh ñối tượng function res = SubImages(im,ba,thresh) % Tru anh voi nen % Input: % + im: ảnh ñầu vào chứa ñối tượng. % + ba: ảnh nền % + thresh: ngưỡng trừ ảnh % Output: % + res: Kết quả của phép trừ ảnh 4. Các kết quả triển khai hệ thống và áp dụng - 42 - function res = OuterBox(x,T) % Tạo mặt nạ ñối tượng % + Lọc nhiễu % + Bỏ phần chứa thân người % Input: % + x : ảnh cần xử lý (kết quả của phép trừ ảnh) % + T : Thông số của hàm % Ouput: % + Ảnh ñã ñược xử lý function res = FFE(im,ba) % Face Frame Extraction % Tách vùng chứa ñối tượng ra khỏi ảnh % Input: % + im: Ảnh ñầu vào % + ba: Ảnh nền % Output: % + res: Ảnh chứa ñối tượng tách 4.2.2. Khối tiền xử lý function [L1,L2, R1, R2] = LeftRight(im) % Tìm tâm 2 mắt % Input: % +im: ảnh ñã ñược tách sau khối FFE. % Output: % + L1, L2: Tọa ñộ tâm mắt trái % + R1, R2: Tọa ñộ tâm mắt phải function res = RotTrans(im) % Xoay và tách ñối tượng dựa vào ñường nối tâm 2 mắt % Input: % + anh sau ham FFE (Face Frame Extraction) % Output: % + res: Ảnh có kích thước không ñổi, % bao trọn khuôn mặt ñối tượng. 4.2.3. Khối trích chọn ñặc tính function [x,M] = PCA_input() % ðọc dữ liệu ảnh cho quá trình học. % Input: % + Ảnh tại một thư mục mặc ñịnh của chương trình. % Output: % + x: Tập ảnh học % + M: Số lượng ảnh. function res = pre_processing(x) % Khối tiền xử lý: Chuẩn hóa ánh sáng, san bằng mức xám và % lọc nhiễu ảnh vào. % Input: % + Tập ảnh học % Output: % + res: Tập ảnh sau khi ñược tiền xử lý. 4. Các kết quả triển khai hệ thống và áp dụng - 43 - function S = normalization(x) % Chuẩn hóa ma trận ñiểm ảnh % Input: % + Tập ảnh học ñã qua bước tiền xử lý % Output: % + S: Tập ảnh sau khi chuẩn hóa và % ñược chuyển vào ma trận S. function [res1, MEAN] = average(S) % Tính ảnh trung bình, xác ñịnh sai lệch của từng ảnh học % so với ảnh trung bình % Input: % + Ma trận tạo bởi các ảnh học sau bước chuẩn hóa % (normalization) % Output: % + MEAN: Ảnh trung bình % + res1: sai lệch của các ảnh so với ảnh trung bình function [A,u,phi] = eigen(x) % Tính các eigenface, ma trận chuyển ñổi và % biểu diễn của các ảnh học trong không gian mới. % Input: % + Tập ảnh học sau khi ñược chuẩn hóa và % và tính sai lệch so với ảnh trung bình. % Output: % + A : Ma trận chuyển ñổi % + u : Tập các eigenface % + phi: Biểu diễn của các ảnh học trong không gian % eigenface (vec-tơ ñặc tính của các ảnh học) 4.2.4. Khối nhận dạng: function [correct, MATCH1, MATCH2, MATCH3] = recognition(im) % Nhận dạng % Input: % + ảnh chứa ñối tượng % Output: % + correct: Cho biết kết quả nhận dạng. correct nhận các giá % trị 0 hoặc 1. % correct = 0 ==> ảnh chưa ñược biết ñến. % correct = 1 ==> ảnh ñã ñược biết ñến. % + MATCH1, MATCH2, MATCH3: thứ tự 3 người trong % tập ảnh học gần với ñối tượng nhất function [name, age, offical_im] = info(K) % ðọc thông tin về ñối tượng ñã nhận dạng ñược % Input: % + K: Số thứ tự của ảnh học gần với ñối tượng nhất. % Output: % + name: Tên của ñối tượng. % + age : Tuổi của ñối tượng. % + official_im: Ảnh ñại diện của ñối tượng. 4. Các kết quả triển khai hệ thống và áp dụng - 44 - 4.3. Giao diện Giao diện ñược thực hiện trên GUI (Graphical User Interface), trên nền MATLAB version 7.0.4 R2004. Hiện tại, ñể chạy giao diện này ta phải thông qua MATLAB. Các kết quả nhận dạng ñối tượng “ñã ñược nhận biết” và “chưa ñược nhận biết” sẽ lần lượt ñược thể hiện trong các Hình 4.1 và Hình 4.2. Hình 4.1. Giao diện chương trinh, với kết quả là nhận dạng ñược ñối tượng. 4. Các kết quả triển khai hệ thống và áp dụng - 45 - Hình 4.2. Giao diện chương trinh, với kết quả là không nhận dạng ñược ñối tượng. Giao diện với 3 phần: phần hiển thị ñầu vào, phần hiển thị kết quả và panel ñiều khiển. Panel hiển thị ñầu vào: - Input: Sau khi chọn Open File (với nhập ảnh từ CSDL có sẵn) hoặc Snapshot (ñối với ảnh nhập trực tiếp từ webcam), ảnh chứa ñối tượng sẽ ñược hiển thị ở ñây. Panel hiển thị kết quả: - Detected Image: Hiển thị khuôn mặt ñã ñược tách và xoay chuẩn. - Comparision Result: Hiển thị 3 ảnh thuộc CSDL gần với ảnh cần nhận dạng nhất, với Comp. Index là khoảng cách σ tương ứng. Comp.Index có màu xanh là giá trị σ bé nhất. - Recognition Result: Hiển thị kết quả nhận dạng. o Nếu giá trị σ bé nhất bé hơn ngưỡng, kết quả sẽ là hình ảnh người ñược nhận dạng và thông tin về người ñó (tên, tuổi). Nếu giá trị σ bé nhất lớn hơn ngưỡng, kết quả trả lời là unknown face. Panel ñiều khiển CONTROL PANEL có chức năng: - ðiều khiển truy nhập dữ liệu. Có 2 chế ñộ là online bằng Camera, và offline bằng file trong CSDL. - Update CSDL, tạo CSDL mới. 4. Các kết quả triển khai hệ thống và áp dụng - 46 - - ðiều khiển quá trình học và lưu trữ dữ liệu. Cho thực hiện nhập ảnh cần nhận dạng, có 2 chế ñộ ñể lựa chọn: lấy ảnh trực tiếp từ camera và lấy ảnh từ file ñặt trong bộ nhớ PC. - Lấy ảnh trực tiếp từ camera: o Chọn phím Open Cam ñể mở Camera, lúc này phím Snapshot ñược kích hoạt. o Chọn phím Snapshot ñể lấy ảnh từ Camera. - Lấy ảnh từ file: chọn phím Open File ñể chọn file. ðể thực hiện nhận dạng, chọn phím Recognize. Khi cần cập nhật hoặc học dữ liệu mới, ta sử dụng phím Learn Data. Thực hiện tạo dữ liệu mới, chọn phím CreateData. Khi chọn phím này, chương trình sẽ chuyển ñến của sổ Create Data: Hình 4.3. Cửa sổ Create Data. Tại của sổ Create Data, ta có các phím lựa chọn: - Mở camera (Open Cam) - Lựa chọn nền (Get Background) - Chụp ảnh mới (Snapshot). - Tách khuôn mặt (Extract) - Lưu ảnh (Save Pic) 4. Các kết quả triển khai hệ thống và áp dụng - 47 - 4.2. Kết quả nhận dạng 4.2.1. Test với bộ dữ liệu có sẵn Với cơ sở dữ liệu là bộ mẫu có sẵn có 20 người, mỗi người có 5 ảnh, mỗi người ñược chọn 2 ảnh học và 3 ảnh ñể test. Sau khi khảo sát, ngưỡng nhận dạng ñược chọn là 100. Do chỉ có 2 ảnh học cho mỗi người, nên với bộ dữ liệu này ta chỉ ñưa ra 2 người gần với ñối tượng nhất Kết quả nhận dạng như sau: - Kiểm tra với ñầu vào là các ảnh học: Số ảnh: 40. Nhận dạng ñúng: 40, tỉ lệ 100% - Kiểm tra với các ảnh khác: Số ảnh: 60 Nhận dạng ñúng: 53, tỉ lệ 88,3%. Các ñối tượng có kết quả nhận dạng ñúng ñược chia là 2 trường hợp: - Ảnh dễ nhận dạng: Kết quả nhận dạng là 2 ảnh trong CSDL học của ñúng người ñó. Giá trị nhận dạng ứng với 2 ảnh tìm ñược ñều nhỏ hơn ngưỡng. - Ảnh khó nhận dạng: Giá trị nhận dạng bé nhất nhỏ hơn ngưỡng nhận dạng và ảnh trong CSDL học ứng với giá trị nhận dạng ñó ñúng là của ñối tượng. Giá trị nhận dạng bé thứ 2 lớn hơn ngưỡng nhận dạng. Các trường hợp nhận dạng ñúng trên ñược thể hiện trong các Hình 4.4 và Hình 4.5. (a) (b) 86σ = (c) 91σ = Hình 4.4. Kết quả nhận dạng ñúng, trường hợp “dễ nhận dạng”. a - ảnh cần nhận dạng, b,c – 2 ảnh gần nhất với ñối tượng và các giá trị nhận dạng tương ứng. (a) (b) 71σ = (c) 122σ = Hình 4.5. Kết quả nhận dạng ñúng,trường hợp “khó nhận dạng”. a - ảnh cần nhận dạng, b,c – 2 ảnh gần nhất với ñối tượng và các giá trị nhận dạng tương ứng. 4. Các kết quả triển khai hệ thống và áp dụng - 48 - Với các trường hợp sai: - Sai hoàn toàn, mặc dù người trong ảnh ñã ñược học, nhưng trong các kết quả ñưa ra không có cái nào trùng với người ñó. - Sai do vượt ngưỡng: Ảnh ứng với giá trị nhận dạng nhỏ nhất của ñúng ñối tượng cần nhận dạng, tuy nhiên giá trị nhận dạng lại lớn hơn ngưỡng. Nguyên nhân dẫn ñến kết quả sai là do nét mặt và tư thế của người chụp ảnh biến ñổi rất nhiều so với ảnh gốc (ví dụ, há miệng, nhăn nhó,...), và một số ảnh bị sai do trang phục của người cần nhận dạng. Các trường hợp trên sẽ ñược minh họa trong các Hình 4.6 và Hình 4.7. 118σ = 131σ = (a) (b) (c) Hình 4.6. Một số trường hợp nhận dạng sai hoàn toàn: (a) - ảnh gốc trong CSDL, (b) - ảnh ñầu vào có “nhiễu” (hàng trên - ảnh nét mặt biến ñổi mạnh, hàng dưới - ảnh ñội mũ), (c) – ảnh nhận dạng (a) (b) 123σ = Hình 4.7. .Kết quả nhận dạng sai do vượt ngưỡng, a - ảnh cần nhận dạng, b - ảnh tương ứng với giá trị nhận dạng bé nhất. 4. Các kết quả triển khai hệ thống và áp dụng - 49 - 4.2.2. Test với bộ dữ liệu ñược lấy từ webcam hệ thống. Bộ mẫu test ñược chụp trực tiếp từ webcam với 120 ảnh cho 6 người, mỗi người 20 ảnh. Với boọ dữ liệu này, kết quả sẽ ñưa ra 3 người trong ảnh học gần nhất với ñối tượng. Qua khảo sát, ngưỡng nhận dạng sử dụng cho bộ 2 là 100. Mỗi người ñược cho học 5 ảnh. Kết quả nhận dạng như sau: - Kiểm tra với ñầu vào là các ảnh học: Số ảnh: 30, Nhận dạng ñúng: 30, tỉ lệ 100% - Kiểm tra với các ảnh khác: Số ảnh: 90 nhận dạng ñúng: 82, tỉ lệ 91,11%. Cũng giống như bộ 1, các trường hợp nhận dạng ñúng cũng ñược chia ra làm hai trường hợp là “dễ nhận dạng” và “khó nhận dạng”. Hai trường hợp này sẽ ñược minh họa trên Hình 4.8 và Hình 4.9 (a) (b) 61σ = (c) 88σ = Hình 4.8. Kết quả nhận dạng ñúng,trường hợp “dễ nhận dạng”. a - ảnh cần nhận dạng, b,c – 2 ảnh gần nhất với ñối tượng và các giá trị nhận dạng tương ứng. (a) (b) 98σ = (c) 111σ = Hình 4.9. Kết quả nhận dạng ñúng,trường hợp “khó nhận dạng”. a - ảnh cần nhận dạng, b,c – 2 ảnh gần nhất với ñối tượng và các giá trị nhận dạng tương ứng. Với trường hợp “khó nhận dạng”, ñể tăng ñộ tin cậy ta cần kết hợp thêm với các phương pháp khác (ví dụ như so sánh lông mày, so sánh khoảng cách mắt, …). Các phương án kết hợp này sẽ ñược trình bày ở phần hướng phát triển của ñồ án. 4. Các kết quả triển khai hệ thống và áp dụng - 50 - Với các kết quả nhận dạng sai, tương tự như bộ 1, cũng ñược phân thành 2 trường hợp là “sai hoàn toàn” và “sai do vượt ngưỡng”.Những nguyên nhân chủ yếu là: - Tư thế của người cần nhận dạng như mặt quá nghiêng, ñứng cách camera không ñúng cự ly yêu cầu (1m). - Trạng thái khuôn mặt của người chụp thay ñổi mạnh so với mẫu học (nhắm mắt, cau mày,...) - Các trường hợp Can not detect là do: chương trình không phát hiện ñược vùng mắt ñối tượng khi ñối tượng nhắm mắt hoặc nghiêng mặt với ñộ nghiêng lớn, dẫn ñến vị trí 2 mắt trong ảnh không còn cân ñối trong vùng mặt. Các trường hợp sai ñược mô tả trong Hình 4.10 và Hình 4.11 (a) (b) (c) 113σ = (d) 119σ = (e) 130σ = (f) Hình 4.10. Trường hợp nhận dạng sai do vượt ngưỡng. a - ảnh chứa ñối tượng, b – ðối tượng ñược tách khỏi nền, c - Ảnh sử dụng ñể nhận dạng, d,e,f – Ảnh trong CSDL học tương ứng với 3 giá trị nhận dạng σ bé nhất. (a) (b) (c) 117σ = (d) 135σ = (e) 180σ = (f) Hình 4.11. Trường hợp nhận dạng sai hoàn toàn do ñối tuợng ñứng quá gần camera a- ảnh ñầu vào, b- ñối tượng ñược tách khỏi nền, c,d,e- ảnh dùng cho nhận dạng và các kết quả gần nhất. 4. Các kết quả triển khai hệ thống và áp dụng - 51 - Can not detect Unknow face Can not detect Unknow face (a) (b) (c) (d) Hình 4.12. Các trường hợp nhận dạng sai hoàn toàn của bộ dữ liệu 2. a - Ảnh ñầu vào (khuôn mặt quá lớn, nghiêng mặt quá nhiều, nhắm mắt), b – ðối tượng ñược tách khỏi nền, c - Ảnh ñể nhận dạng, d - Kết quả nhận dạng. Như vậy, ta có ñánh giá tổng thể như sau: kết quả nhận dạng ñối với bộ 2 là cao hơn so với bộ 1, lý do là do bộ 2 có ñối tượng ít hơn, ñược chụp trong ñiều kiện biên ñã hạn chế, tiền xử lý ñược áp dụng mạnh hơn so với bộ 1. Sau các bước ñặt vấn ñề, phân tích, thiết kế, thi công và kiểm tra hoạt ñộng của hệ thống, ñồ án sẽ tổng kết lại toàn bộ quá trình ñã thực hiện trên. Chương 5 trình bày về các kết quả ñã ñạt ñược, tìm hiểu các tồn tại và ñề xuất các hướng phát triển của ñồ án dựa trên việc khắc phục những tồn tại trên. Cạnh ñó, chương 5 sẽ ñề xuất các hướng ứng dụng của hệ thống trong hai trường hợp nhận dạng online và nhận dạng offline. 5. Kết luận và hướng phát triển - 52 - Chương 5. Kết luận và hướng phát triển Với các kết quả ñã ñược trình bày ở các chương trên, qua thời gian thực hiện, ñồ án ñã ñạt ñược một số kết quả sau: - Nắm ñược các vấn ñề cơ bản của ảnh số và xử lý ảnh số - Sử dụng thành thạo phần mềm MATLAB và ứng dụng của MATLAB trong thu thập ảnh số và xử lý ảnh số. - Nắm ñược các ñặc ñiểm của một bài toán nhận dạng nói chung và nhận dạng khuôn mặt nói riêng. - Tìm hiểu ñược một số phương pháp nhận dạng mặt người, nắm ñược ưu nhược ñiểm của từng phương pháp. Test thử thành công trên các bộ số liệu mẫu. - Xây dựng ñược hệ thống thu thập và nhận dạng ảnh số sử dụng PC và phần mềm MATLAB. - Giải quyết và phối hợp ñược 2 bài toán: Human Face Detecting và Human Face Recognition: Bài toán tách mặt, tách các ñối tượng ñặc biệt (mắt, lông mày,…), PCA, LDA, … - Nắm ñược quy trình phân tích, thiết kế, triển khai một ñồ án nói riêng và một công việc phức hợp nói chung. Tuy ñã ñạt ñược một số kết quả nhất ñịnh nhưng trong ñồ án vẫn còn một số tồn tại như: - Chương trình ñang cần phải thông qua MATLAB và PC ñể thực hiện - Số lượng người nhận dạng còn ít. - Chương trình tách mặt chưa ñáp ứng ñược với ñối tượng có tư thế bất kỳ, các ñối tượng có tóc phủ mắt, trang phục ñặc biệt (ñeo kính, ñội mũ,…). - Quá trình trích chọn ñặc tính sử dụng PCA nên mang những nhược ñiểm của phương pháp PCA. Nhược ñiểm lớn nhất của PCA là không phải trong mọi trường hợp thì hướng biến thiên mạnh nhất cũng mang nhiều thông tin nhận dạng nhất - Thuật toán nhận dạng dựa trên mô hình khoảng cách ngắn nhất chưa thực sự ưu việt. - Chương trình chưa xử lý hiệu quả ñối với trường hợp nhận dạng sai do vượt ngưỡng, các trường hợp mà ñối tượng có tâm trạng thay ñổi mạnh so với mẫu học (cau có, há miệng,…) - Quá trình tách mặt và nhận dạng còn phụ thuộc rất nhiều vào ñiều kiện ánh sáng, môi trường xung quanh. Từ những tồn tại trên ta có thể xác ñịnh ñược một số hướng phát triển của ñề tài như sau: 5. Kết luận và hướng phát triển - 53 - Hướng phát triển: - Mở rộng số lượng người cần nhận dạng - Giải quyết mở rộng các khả năng xử lý của chương trình với các trường hợp thay ñổi tư thế, trạng thái cảm xúc của ñối tượng và giảm thiểu ảnh hưởng của phục trang. - Thử nghiệm, phối hợp các mô hình nhận dạng khác nhau (mạng nơ-rôn, SVM,…) và các phương pháp nhận dạng ảnh khác (LDA, ICA,…) ñể mang lại ñộ tin cậy cao hơn cho hệ thống. - Quy ñịnh ánh sáng tại những nơi có sử dụng hệ thống ñể giảm thiểu sai số nhận dạng do cường ñộ sáng thay ñổi. - “Nhúng” hệ thống xuống các hệ vi xử lý ñể ta có ñược một thệ thống chuyên dụng và không phải phụ thuộc vào PC hay MATLAB. Với những kết quả ñã ñạt ñược, các tồn tại và phương hướng giải quyết ñã nêu, hệ thống hoàn thiện có thể ñược ứng dụng vào thực tế. Dựa trên những vấn ñề hiện nay, ñồ án ñề xuất một số hướng ứng dụng cho hệ thống thu thập và nhận dạng mặt người như sau: Nhận dạng online: - Theo dõi kín ñáo ñối tượng vào ra các khu vực ñặc biệt. Với các phương pháp hiện có (vân tay, bàn tay, …), ñối tượng luôn chủ ñộng tiếp xúc với thiết bị nhận dạng. Với hệ thống nhận dạng qua khuôn mặt, có thể thu thập và nhận dạng ñược ñối tượng một cách kín ñáo. - Sử dụng ñể kiểm soát vào ra các khu vực có nhiều người ra vào, các ñịa ñiểm công cộng như sân bay, nhà ga, rạp chiếu phim,… Các phương pháp nhận dạng khác ñã trình bày thường chỉ sử dụng trong các trường hợp ñặc biệt, số lượng người ra vào ñược hạn chế (vân tay, bàn tay,…) hoặc phải là thành viên ñặc biệt ñược cấp thẻ (sử dụng thẻ). Nhận dạng mặt người bằng camera số sẽ giúp cho người quản lý kiểm soát ñược người vào ra, và khách hàng cũng không bị làm phiền bởi việc bắt buộc phải kiểm tra vân tay,… - Kết hợp với thẻ ñể tăng tính an toàn trong các dịch vụ như rút tiền tự ñộng. Sự kết hợp này có thể hạn chế ñược việc ăn cắp thẻ. Người rút tiền ngoài việc phải sử dụng thẻ, hệ thống còn ñối chiếu giữa khuôn mặt người ñang rút tiền với những người ñược phép sử dụng tài khoản ñó. Việc kiểm tra khuôn mặt này sẽ ñược thực hiện kín ñáo mà không gây phiền nhiễu cho khách hàng. - Kết hợp với các phương pháp khác ñể có ñược các hệ thống khóa thông minh có ñộ tin cậy cao. - … 5. Kết luận và hướng phát triển - 54 - Nhận dạng offline: - Phát hiện ra trong cơ sở dữ liệu các thông tin gần giống với ñối tượng cần xác ñịnh nhất, trong trường hợp không có số liệu khác như vân tay, bàn tay,… Trong ñiều kiện không có ñược ñầy ñủ các bộ số liệu vân tay, thì sử dụng nhận dạng bằng khuôn mặt sẽ giúp nhà ñiều tra khoang vùng ñược ñối tượng. - Kiểm tra người những người ra vào trong một thời gian như trong ngày, trong tuần,… Người quản lý tại một thời ñiểm muốn kiểm tra những người ñã vào ra một khu vực nào ñó (nhà riêng, cơ quan, …), hệ thống sẽ thực hiện việc nhận dạng tự ñộng dựa trên các hình ảnh ñã thu thập từ trước ñó. - 55 - Tài liệu tham khảo [1] Gonzalez R C., Wood R.E., “Digital Image Processing Using Matlab”, Prentice Hall, 2004. [2] Lương Mạnh Bá , Nguyễn Thanh Thủy. “Nhập môn xử lý ảnh số”, ðại học Bách khoa Hà Nội, 2000 [3] Phạm Thế Bảo, Nguyễn Thành Nhựt, Cao Minh Thịnh, Trần Anh Tuấn, Phan Phúc Doãn. “Tổng quan các phương pháp xác ñịnh khuôn mặt người”. [4] Ilker Atalay – Computer Engineer M.Sc. “Face Recognition Using Eigenfaces”, Istanbul Technical University , January 1996 [5] M. Tunk and A. Pentland. “Face recognition using eigenfaces”, Proc. of IEEE Conference on Computer vision and Partten Recognition, pp.586-591, June 1991 [6] Lindsay I. Smith. “A tutorial on Principal Components Analysis”, February 26, 2002 [7] Alla Eleyan, Hasan Demirel. “PCA and LDA based Neural Networks for Human Face Recognition”, Eastern Mediterranean University Northern Cyprus, 2007. [8] Kamran Etemad ,Rama Chellappa. “Discriminant analysis for recognition of human face images”, Department of Electrical Engineering and Center for Automation Research, University of Maryland, College Park,Maryland, 1996 [9] A. Hossein Sahoolizadeh, B. Zargham Heidari, and C. Hamid Dehghan. “A New Face Recognition Method using PCA, LDA and Neural Network”, Proceeding of world Academy of Science, Engineering and Technology, Vol 31, 2008. [10] Michelle M. Mendonça , Juliana G. Denipote, “Illumination Normalization Methods for Face Recognition”, Universidade de São Paulo, 2006. [11] Martin D. Levine, Maulin R. Gandhi, Jisnu Bhattacharyya. “Image Normalization for Illumination Compensation in Facial Images”, Department of Electrical & Computer Engineering & Center for Intelligent Machines McGill University, Montreal, Canada, 2004. [12] P. Campadelli, R. Lanzarotti G. Lipori. “Automatic Facial Feature Extraction for Face Recognition”, University of Milan, Italy, 2008. [13] Vo Dinh Minh Nhat, SungYoung Lee. “Image-based Subspace Analysis for Face Recognition”, Kyung Hee University Korea, 2008. [14] D. Sidibe, P. Montesinos, S. Janaqi. “A simple and efficient eye detection method in color images”, LGI2P/EMA - Ales School of Mines, 2007 [15] Các tài liệu về Matlab tại:

Các file đính kèm theo tài liệu này:

  • pdfNghiên cứu xây dựng hệ thống nhận dạng mặt người online.pdf