1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế mô phỏng hệ thống nhận dạng trên cơ sở thuật toán pca

68 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 68
Dung lượng 1,44 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Chương 1. MATLAB VÀ XỬ LÝ ẢNH (8)
    • 1.1. MATLAB (8)
    • 1.2. Giới thiệu khái quát về ảnh số (11)
    • 1.3. Xử lý ảnh với Matlab (12)
    • 1.4. Toolbox bắt ảnh và xử lý ảnh (15)
    • 1.5. Tạo giao diện người dùng nhờ công cụ GUIDE (21)
  • Chương 2. PHƯƠNG PHÁP XỬ LÝ VÀ NHẬN DẠNG KHUÔN MẶT (26)
    • 2.1. Sơ lƣợc về phân tích thành phần chính PCA (26)
    • 2.2. Thuật toán PCA (27)
    • 2.3. Định nghĩa bài toán xác định khuôn mặt người (27)
    • 2.4. Ứng dụng của phương pháp xác định khuôn mặt (27)
    • 2.5. Phương pháp xác định khuôn mặt (29)
    • 2.6. Khó khăn và thử thách trong bài toán xác định khuôn mặt người (35)
    • 2.7. Bài toán nhận dạng khuôn mặt bằng PCA (36)
  • Chương 3. THUẬT TOÁN PCA VÀ CHƯƠNG TRÌNH MÔ PHỎNG (47)
    • 3.1. Ưu điểm của phương pháp PCA (47)
    • 3.2. Nhược điểm của phương pháp PCA (47)
    • 3.3. Lưu đồ giải thuật (48)
    • 3.4. Kết quả mô phỏng (53)
    • 3.5. Tốc độ thực hiện (54)
  • TÀI LIỆU THAM KHẢO (58)
  • PHỤ LỤC (59)

Nội dung

MATLAB VÀ XỬ LÝ ẢNH

MATLAB

MATLAB là công cụ lập trình và mô phỏng bậc cao, hỗ trợ giải quyết các bài toán khoa học kỹ thuật Với khả năng tích hợp tính toán và hiển thị kết quả, MATLAB mang đến giao diện thân thiện và dễ sử dụng cho người dùng Thư viện dữ liệu phong phú và các ứng dụng được lập trình sẵn giúp người sử dụng tối ưu hóa quy trình làm việc.

 Sử dụng các hàm có sẵn trong thƣ viện MATLAB, các phép tính toán học thông thường

 Cho phép lập trình tạo ra những ứng dụng mới

 Cho phép mô phỏng các mô hình thực tế

 Phân tích, khảo sát và hiển thị dữ liệu

 Với phần mềm đồ hoạ cực mạnh

 Cho phép phát triển, giao tiếp với một số phần mềm khác nhƣ C++, Fortran

1.1.2 Tổng quan về cấu trúc dữ liệu của MATLAB, các ứng dụng

MATLAB là một hệ thống tương tác mạnh mẽ, cho phép người dùng làm việc với các phần tử dữ liệu dưới dạng mảng mà không cần yêu cầu về kích thước Nó hỗ trợ giải quyết các vấn đề lập trình máy tính, đặc biệt là thông qua các phép toán ma trận và vectơ Ngoài ra, người dùng có thể tích hợp ngôn ngữ lập trình C và Fortran để phát triển ứng dụng và thực hiện các lệnh gọi từ MATLAB.

"MATrix LABoratory" là thư viện ma trận, từ đó phần mềm Matlab được phát triển để truy cập dễ dàng vào các tính năng của ma trận Phần mềm này được xây dựng dựa trên các công trình Linpack và Eispack Hiện nay, Matlab đã được cải tiến bởi Lapack và Artpack, tạo nên một nghệ thuật phần mềm cho việc xử lý ma trận.

Dữ liệu của MATLAB thể hiện dưới dạng ma trận (hoặc mảng - tổng quát), và có các kiểu dữ liệu đƣợc liệt kê sau đây:

 Kiểu đơn single, kiểu này có lợi về bộ nhớ dữ liệu vì nó đòi hỏi ít byte nhớ

9 hơn, kiểu dữ liệu này không đƣợc sử dụng trong các phép tính toán học, độ chính xác kém hơn

 Kiểu double kiểu này là kiểu thông dụng nhất của các biến trong Matlab

 Kiểu uint8, uint8, uint16, uint64

 Kiểu char ví dụ “Hello”

Trong Matlab kiểu dữ liệu double là kiểu mặc định sử dụng trong các phép tính số học b) Ứng dụng

Matlab tạo điều kiện thuận lợi cho:

 Các khoá học về toán học

 Các kỹ sƣ, các nhà nghiên cứu khoa học

 Dùng Matlab để tính toán, nghiên cứu tạo ra các sản phẩm tốt nhất trong sản xuất c) Toolbox là một công cụ quan trọng trong MAT AB

Công cụ này đƣợc MATLAB cung cấp cho phép bạn ứng dụng các kỹ thuật để phân tích, thiết kế, mô phỏng các mô hình

Ta có thể tìm thấy toolbox ở trong mô trường làm việc của

Hệ thống giao diện của MATLAB đƣợc chia thành 5 phần:

Môi trường phát triển là không gian chứa các thanh công cụ và phương tiện hỗ trợ người dùng thực hiện lệnh và quản lý file Trong môi trường này, người dùng có thể dễ dàng truy cập và sử dụng các tính năng cần thiết cho công việc lập trình.

The library includes mathematical functions that cover a range of structures such as summation, sine, cosine, atan, and atan2, as well as simple calculations and more complex operations like matrix inversion, eigenvalues, Fourier transforms, Laplace transforms, and symbolic computation.

Ngôn ngữ Matlab là một ngôn ngữ lập trình cao cấp chuyên về ma trận và mảng, cung cấp các dòng lệnh, hàm và cấu trúc dữ liệu để xử lý thông tin Matlab hỗ trợ lập trình hướng đối tượng, giúp người dùng phát triển các ứng dụng phức tạp một cách dễ dàng.

Đồ họa trong Matlab bao gồm các lệnh cho phép hiển thị hình ảnh trong môi trường 2D và 3D, tạo ra các hình ảnh động, và cung cấp giao diện tương tác giữa người dùng và máy tính.

 Giao tiếp với các ngôn ngữ khác Matlab cho phép tương tác với các ngôn ngữ khác nhƣ C, Fortran…

Hình 1.1 Cửa sổ khi khởi động MATLAB

Để khởi động MATLAB, trước tiên bạn cần nhấp vào biểu tượng MATLAB trên màn hình Sau khi mở, một cửa sổ sẽ xuất hiện, chứa các thanh công cụ cần thiết cho việc quản lý file, biến và cửa sổ lệnh Giao diện desktop của MATLAB được cấu trúc thành các panel, giúp quản lý và tương tác với từng cửa sổ nhỏ một cách hiệu quả.

Trên hình vẽ ta thấy cửa sổ desktop (cửa sổ lớn nhất), và các cửa sổ phụ của nó

Giới thiệu khái quát về ảnh số

1.2.1 Các khái niệm cơ bản về ảnh Ảnh số là tập hợp hữu hạn các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật Số điểm ảnh xác định độ phân giải của ảnh Ảnh có độ phân giải càng cao thì càng thể hiện rõ nét các đặt điểm của tấm hình càng làm cho tấm ảnh trở nên thực và sắc nét hơn a) Điểm ảnh (Picture Element) Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần nhƣ ảnh thật Mỗi phần tử trong ma trận đƣợc gọi là một phần tử ảnh b) Mức xám của ảnh

Mức xám là giá trị độ sáng của một điểm ảnh, được biểu diễn bằng một số nguyên dương trong khoảng từ 0 đến 255 Giá trị này phản ánh sự biến đổi tương ứng của độ sáng từng điểm ảnh.

Các thang giá trị mức xám thông thường bao gồm 16, 32, 64, 128 và 256, trong đó mức 256 là phổ biến nhất do kỹ thuật máy tính sử dụng 1 byte (8 bit) để biểu diễn mức xám, cho phép hiển thị 256 mức từ 0 đến 255 Độ phân giải của ảnh được định nghĩa là mật độ điểm ảnh được ấn định trên một ảnh số khi hiển thị.

Khoảng cách giữa các điểm ảnh cần được xác định sao cho mắt người vẫn cảm nhận được sự liên tục của hình ảnh Việc lựa chọn khoảng cách này tạo ra mật độ phân bổ, hay còn gọi là độ phân giải, được phân bố theo hai trục x và y trong không gian hai chiều.

Độ phân giải của màn hình CGA (Color Graphic Adaptor) là 320 điểm chiều dọc và 200 điểm chiều ngang (320*200) Màn hình CGA 12” cho hình ảnh mịn hơn so với màn hình 17” cùng độ phân giải 320*200, vì diện tích màn hình lớn hơn làm giảm độ mịn của các điểm ảnh.

1.2.2 Các cách phân loại ảnh Ảnh nhị phân: Giá trị xám của tất cả các điểm ảnh chỉ nhận giá trị 1 hoặc 0 nhƣ vậy mỗi điểm ảnh trong ảnh nhị phân đƣợc biểu diễn bởi 1 bit Ảnh xám: Giá trị xám nằm trong [0, 255] nhƣ vậy mỗi điểm ảnh trong ảnh nhị phân đƣợc biểu diễn bởi 1 byte Ảnh màu:

Một pixel đƣợc biểu diễn bằng 3 giá trị (R, G, B) trong đó R, G, B là một giá trị xám và đƣợc biểu biểu diễn bằng 1 byte Khi đó ta có một ảnh 24 bits

- Hệ màu CMY: là phần bù của hệ màu RGB

=> Hệ màu này thường được dùng trong máy in

- Hệ màu CMYK: trong đó K là độ đậm nhạt của màu K= min(C, M, Y)

Với (C1, M1, Y1) ta sẽ có K=min(C1, M1, Y1) vậy CMYK=(C1-K, M1-K, Y1-K, K)

Xử lý ảnh với Matlab

Xử lý ảnh bắt đầu bằng việc thu nhận hình ảnh từ thế giới bên ngoài thông qua các thiết bị như camera Trước đây, ảnh được thu qua camera tương tự (CCIR), nhưng hiện nay, với sự phát triển công nghệ, ảnh màu hoặc đen trắng được chuyển đổi trực tiếp thành ảnh số, tạo điều kiện thuận lợi cho các bước xử lý tiếp theo Máy ảnh số hiện nay là một ví dụ tiêu biểu cho xu hướng này.

1.3.2 Các giai đoạn xử lý ảnh a) Thu nhận ảnh

- Ảnh đƣợc thu từ nhiều nguồn khác nhau: máy ảnh, máy quay phim, máy quét, ảnh vệ tinh…

Mục đích của việc biến đổi thông tin hình ảnh là để chuyển đổi các cấu trúc được lưu trữ trong máy tính, giúp hiển thị chúng trên các thiết bị ngoại vi như máy in và màn hình.

+ Biến đổi năng lƣợng quang học thành năng lƣợng điện

+ Tổng hợp năng lƣợng điện thành ảnh hoặc ma trận số b) Tiền xử lý

Tiền xử lý (Image Processing) là quá trình sử dụng các kỹ thuật xử lý ảnh để làm ảnh tốt lên theo mục đích sử dụng

+ Điều chỉnh độ chiếu sáng để khắc phục hậu quả của việc chiếu sáng không đều

+ Giảm thành phần nhiễu của ảnh tức là các đối tƣợng xuất hiện ngoài ý + Hiệu chỉnh giá trị độ sáng giữa nền và đối tƣợng

+ Chuẩn hoá độ lớn, màu, dạng của ảnh

+ Điều chỉnh bộ lọc để khuyếch đại và nén các tần số c) Phân đoạn (Segmentation)

- Là quá trình phân chia nội dung các đối tƣợng cần khảo sát ra khỏi ảnh

- Phân chia các đối tƣợng tiếp giáp nhau

Phân tách các đối tượng riêng biệt thành các đối tượng con là bước quan trọng trong xử lý ảnh Biểu diễn ảnh sau khi phân đoạn bao gồm các điểm ảnh của vùng ảnh đã phân đoạn cùng với mã liên kết giữa các vùng lân cận Việc chuyển đổi các số liệu này thành định dạng phù hợp là cần thiết để thực hiện các bước xử lý ảnh tiếp theo Nhận dạng và nội suy ảnh cũng là một phần không thể thiếu trong quá trình này.

Nhận dạng ảnh là quá trình xác định và phân loại hình ảnh bằng cách so sánh với các mẫu chuẩn đã được học trước đó Quá trình này cho phép nội suy, tức là đưa ra phán đoán dựa trên thông tin đã nhận diện.

Trên phong bì thư, một chuỗi số và dấu gạch ngang có thể được suy luận thành mã điện thoại Ảnh có thể được phân loại theo nhiều cách khác nhau Theo lý thuyết nhận dạng, các mô hình toán học của ảnh được chia thành hai loại nhận dạng cơ bản.

- Nhận dạng theo tham số

- Nhận dạng theo cấu trúc

Hiện nay, nhiều đối tượng nhận dạng phổ biến đang được ứng dụng trong khoa học và công nghệ, bao gồm nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản (Text), nhận dạng vân tay, nhận dạng mã vạch và nhận dạng khuôn mặt.

Ảnh là một đối tượng phức tạp với nhiều yếu tố như đường nét, độ sáng, dung lượng điểm ảnh và môi trường thu ảnh, dẫn đến hiện tượng nhiễu Trong quá trình xử lý và phân tích ảnh, các phương pháp toán học được đơn giản hóa để thuận tiện hơn Mục tiêu là mô phỏng quy trình tiếp nhận và xử lý ảnh của con người, và nhiều bước hiện nay đã áp dụng các phương pháp trí tuệ nhân tạo Điều này cho thấy sự phát huy của các cơ sở tri thức trong lĩnh vực này.

1.3.3 Phân loại ảnh a) Ảnh được định chỉ số (Indexed Images)

Một ảnh chỉ số bao gồm một ma trận dữ liệu X và ma trận bản đồ màu map

Ma trận dữ liệu có thể có kiểu thuộc lớp uint8, uint16 hoặc kiểu double, trong khi ma trận bản đồ màu là một mảng mx3 kiểu double với các giá trị nằm giữa 0 và 1 Mỗi hàng trong bản đồ màu đại diện cho các giá trị của màu đỏ, xanh lá và xanh dương cho một màu đơn Ảnh chỉ số sử dụng ánh xạ trực tiếp giữa giá trị pixel và giá trị trong bản đồ màu, với màu sắc của mỗi pixel được tính toán dựa trên giá trị tương ứng của X được ánh xạ tới giá trị chỉ số trong bản đồ màu, trong đó giá trị 1 tương ứng với hàng đầu tiên và giá trị 2 với hàng thứ hai.

Bản đồ màu thường đi kèm với ảnh chỉ số và được tự động nạp khi sử dụng hàm imread để đọc ảnh Tuy nhiên, người dùng không bị giới hạn chỉ với bản đồ màu mặc định, mà có thể lựa chọn bất kỳ bản đồ màu nào theo ý thích Ảnh cường độ (Intensity Images) cũng là một khái niệm quan trọng trong lĩnh vực này.

Ảnh cường độ là ma trận dữ liệu đại diện cho cường độ ánh sáng trong các vùng của ảnh Trong Matlab, ảnh cường độ được lưu trữ dưới dạng ma trận đơn, với mỗi phần tử tương ứng với một pixel Ma trận này có thể thuộc các lớp dữ liệu như double, uint8 hoặc uint16.

15 được lưu với bản đồ màu, MATLAB sử dụng bản đồ màu để hiển thị chúng

Các phần tử trong ma trận cường độ thể hiện các mức độ cường độ khác nhau hoặc độ xám Điểm có cường độ 0 thường được biểu thị bằng màu đen, trong khi cường độ 1, 255 hoặc 65535 thường đại diện cho cường độ cao nhất, tức là màu trắng Ảnh nhị phân (Binary Images) là một loại hình ảnh đặc trưng bởi sự phân chia rõ ràng giữa các mức cường độ này.

Trong ảnh nhị phân, mỗi pixel chỉ có thể mang một trong hai giá trị 0 hoặc 1, tương ứng với trạng thái bật hoặc tắt Ảnh nhị phân được lưu trữ dưới dạng một mảng logic của các giá trị này.

Ảnh RGB, hay còn gọi là true-color, được lưu trữ trong MATLAB dưới dạng một mảng dữ liệu 3 chiều với kích thước mxnx3, xác định giá trị màu đỏ, xanh lá và xanh dương cho từng pixel Ảnh RGB không sử dụng bảng màu, và màu sắc của mỗi pixel được xác định bởi sự kết hợp của các giá trị R, G, B tại vị trí của pixel Định dạng file đồ họa lưu trữ ảnh RGB tương tự như ảnh 24 bit, trong đó mỗi màu R, G, B chiếm 8 bit, cho phép tạo ra tới 16 triệu màu khác nhau.

Một mảng RGB có thể có các kiểu dữ liệu như double, uint8 hoặc uint16 Trong mảng RGB kiểu double, giá trị của mỗi thành phần màu nằm trong khoảng từ 0 đến 1 Cụ thể, một pixel với giá trị màu (0, 0, 0) sẽ hiển thị màu đen, trong khi pixel có giá trị (1, 1, 1) sẽ hiển thị màu trắng Ba thành phần màu của mỗi pixel được lưu trữ trong chiều thứ ba của mảng dữ liệu.

G, B của pixel (10, 5) được lưu trữ trong RGB(10, 5, 1), RGB(10, 5, 2) và RGB(10,

Để tính toán màu sắc của pixel tại vị trí hàng 2 và cột 3, ta cần xem xét bộ ba giá trị lưu trữ tại tọa độ (2, 3, 1:3) Ví dụ, nếu giá trị tại (2, 3, 1) là 0.5176, điều này sẽ ảnh hưởng đến màu sắc của pixel tại vị trí đó.

2) chứa giá trị 0.1608 và (2, 3, 3) chứa giá trị 0.0627 thì màu sắc của pixel tại (2, 3) sẽ là (0.5176, 0.1608, 0.0627).

Toolbox bắt ảnh và xử lý ảnh

Image Acquisition Toolbox và Image processing là tật hợp các hàm có nhiệm

16 vụ thu thập và xử lý hình ảnh số từ các thiết bị thu hình Cụ thể là:

 Thu nhập hình ảnh từ các thiết bị thu hình khác nhau, từ loại chuyên dùng đến loại r tiền nhƣ Webcam ( giao tiếp qua cổng USB)

 Trình chiếu (preview) luồng dữ liệu video từ thiết bị thu hình

 Trích hình ảnh từ luồng dữ liệu video

 Thiết lập các callback cho các sự kiện khác nhau

 Chuyển dữ liệu hình ảnh vào không gian workpace của MATLAB để xử lý ảnh tiếp theo

1.4.2 Thu nhập cơ bản với Toolbox

Việc thu nhập cơ bản với Toolbox được thực hiện qua các bước sau:

 Gắn thiết bị thu hình vào máy

 Cài đặt driver (trình điều khiển) cho thiết bị, (đƣợc cho bởi nhà sản xuất)

 Xem thử hình ảnh video trên máy tính thông qua phần mềm của nhà sản xuất

 Ta cần chỉ định cho MATLAB biết phần cứng nào dùng để lấy dữ liệu ( vì có thể có nhiều camera kết nối với PC)

 Gõ lệnh imaqhwinfo để biết tên các loại thiết bị có thể dùng

The designation of devices varies based on the type of adapter used; each similar device connected to the PC is assigned a unique ID number The first device is identified with deviceID=1, while the second device is assigned deviceID=2.

 Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy tính, ta cũng dùng lệnh imaqhwinfor với đối số là winvideo:

>> imaqhwinfo('winvideo') ans AdaptorDllName: [1x81 char]

Có một thiết bị với DeviceID = 1 Ta có thể tìm hiểu thêm thông tin về thiết bị này

>> imaqhwinfo('winvideo',1) ans DefaultFormat: 'RGB24_320x240'

DeviceName: 'USB PC Camera (SN9C120)'

- Bước : Tạo đối tượng đại diện vào máy để làm đề tài này

 Để tạo luồng dữ liệu video, dùng lệnh videoinput

Summary of Video Input Object Using 'USB PC Camera (SN9C120)'

Acquisition Source(s): input1 is available

Acquisition Parameters: 'input1' is the current selected source

10 frames per trigger using the selected source

'RGB24_320x240' video data to be logged upon START Grabbing first of every 1 frame(s)

Log data to 'memory' on trigger

Trigger Parameters: 1 'immediate' trigger(s) on START

- Bước : Hiện thị luồng video trên màng hình để xem thử

 Để xem trước luồng dữ liệu video, dùng lệnh preview

 Màn hình lúc này hiện lên cửa sổ video của đối tƣợng vid

 Nếu muốn kết thúc xem, dùng lệnh stoppreview Hoặc để đóng cửa sổ preview, dùng lệnh closepreview(vid)

- Bước Lấy một khung hình ảnh và lưu thành file đồ hoạ

 Để lấy 1 ảnh vào xử lý ta sử dụng lệnh getsnapshot Để lưu ảnh thành file đồ hoạ ta dùng lệnh imwrite

Ví dụ: hinh = getsnapshot(vid);

- Bước : Làm sạch bộ nhớ

 Sau khi lấy dữ liệu hình ảnh ta có thể giải phóng bớt bộ nhớ bằng các lệnh sau:

1.4.3 Toolbox xử lý ảnh Image Processing Toolbox a) Loại file dữ li u của ảnh

- JPG, JPEG( Joint Photographic Experts Group)

- TIFF ( Tagged Image File Format)

- XWD ( X Window Dump) b) Các hàm đọc và lưu ảnh

- Image, imshow: hiển thị ảnh

- Imagese: sắp xếp dữ liệu và hiển thị nhƣ ảnh

- Imread: đọc ảnh từ file đồ họa

- Immovie: tạo phim từ loạt nhiều khuôn hình

- Imwrite: cất ảnh vào file đồ họa

- Imfinfo: lấy thông tin ảnh từ file

- Ind2rgb: đổi ảnh có chỉ số sang ảnh RGB

MATLAB coi ảnh nhƣ một ma trận hai chiều, mỗi phần tử là một phần tử hình

Hình ảnh được xử lý dưới dạng ma trận với các phần tử có thể là double (64 bit), uint16 (16 bit) hoặc uint8 (8 bit) Ảnh index được biểu diễn thông qua hai ma trận: ma trận dữ liệu ảnh X và ma trận màu (bản đồ màu) Các ma trận này có thể có kiểu uint8, uint16 hoặc double, trong đó ma trận màu có kích thước m x n.

Ma trận 3 chiều chứa các thành phần kiểu double với giá trị từ 0 đến 1, mỗi hàng biểu thị thành phần red, green, blue của một màu trong tổng số m màu được sử dụng trong ảnh Giá trị của từng phần tử trong ma trận dữ liệu ảnh xác định màu sắc của điểm ảnh tương ứng.

Trong MATLAB, có nhiều hàm xử lý ảnh cơ bản giúp cải thiện chất lượng ảnh, chẳng hạn như làm rõ ảnh bị mờ hoặc loại bỏ nhiễu Những hàm này hoạt động độc lập, nhưng để xử lý thời gian thực, cần sử dụng các ngôn ngữ lập trình như VB hoặc Delphi Ngoài ra, có thể chuyển đổi các hàm m sang c để tiết kiệm thời gian lập trình Một phương pháp khác để xử lý thời gian thực là lập trình trong MATLAB và sử dụng Toolbox Com Builder để biến chương trình thành COM Object, từ đó tích hợp với các ngôn ngữ lập trình khác.

- rgb2gray: đổi ảnh màu RGB ra ảnh cường độ xám

- gray2ind: đổi ảnh trắng đen (gray scale) thành ảnh indexed

- im2bw: đổi sang ảnh nhị phân e) Xử lý hình học

- Imcrop(A), imcrop(A.rec): xén ảnh A theo hình chữ nhật định bởi con chuột

20 hay bởi thông số kèm theo trong hàm

- Imresize (A, m, mothod): thay đổi kích thước ảnh A theo tỉ lệ m và theo phương pháp nội suy method

- Imrotate (A, angle, method): quay ảnh A một góc angle và dùng phương pháp nội suy method f) ọc nhiễu

Các hàm lọc nhiễu dùng để tăng chất lượng ảnh Có các phương pháp lọc tuyến tính, lọc trung vị và lọc thích nghi

- Lọc tuyến tính: pixel ảnh biến đổi là tổ hợp tuyến tính các pixel lân cận của pixel gốc, các hàm thường dùng là conv2 (tích chập), concn, filter2

- Lọc trung vị: là loại lọc phi tuyến, gồm các hàm medfilt2, ordfilt2

- Lọc thích nghi: wiener2 g) Phân tích ảnh

Hàm imhist (X, map) được sử dụng để vẽ histogram của ảnh chỉ số X dựa trên bảng màu Cường độ của ảnh được phân chia từ 0 (đen) đến 255 (trắng) thành n khoảng, và histogram là biểu đồ thể hiện số lượng pixel có cường độ nằm trong các khoảng tương ứng.

- Histeq: cân bằng histogram ảnh cường độ để tăng độ tương phản

- Edge: tách biên ảnh dùng các thuật toán Sobel, Prewitt, Canny, Laplace,…

- Qtdecomp, qtgeblk, qtsetblk: các lệnh dùng trong phân vùng ảnh quadtree h) Biến đổi ảnh

- Fft2: biến đổi Fourier hai chiều nhanh

- Ifft2: biến đổi ngƣợc hai chiều nhanh

- Dct2: biến đổi cosin rời rạc hai chiều

- Idct2: biến đổi ngƣợc cosin rời rạc i) Đọc ghi và hiển thị ảnh

- Imview: ảnh cho phép hiển thị ảnh trên các cửa sổ riêng j) Các hàm xử lý ma trận

: X=A./B chia các phần tử tương ứng với nhau

- Định thức : d = det(A) k) Điều ki n if, else, elseif

- Cú pháp của if: if

Nếu điều kiện trong biểu thức kiểm tra đúng, thì các lệnh trong khối if sẽ được thực hiện Tương tự, các câu lệnh else và else if cũng hoạt động theo cách này Trong trường hợp sử dụng switch, điều kiện sẽ được kiểm tra để xác định khối lệnh nào cần thực hiện.

- Cú pháp của switch nhƣ sau : switch case n1 :

case nn : otherwise : end m) Điều kiện while

- Vòng lặp while dùng khi không biết trước số lần lặp Cú pháp của nó như sau: while

Tạo giao diện người dùng nhờ công cụ GUIDE

Giao diện người dùng (graphical user interface GUI) cho phép thực hiện các

Trong Matlab, người dùng có thể thực hiện 22 lệnh thông qua menu và nút nhấn, tương tự như các ngôn ngữ lập trình Visual Basic Lập trình giao diện người dùng (GUI) có thể được thực hiện bằng công cụ GUIDE (Môi trường Phát triển GUI) hoặc bằng cách tạo một file m.

1.5.1 Khởi động giao diện GUIDE

- Mở phần mềm MATLAB, chọn File/GUI/Open Existing GUI/Open

Hình 1.4 Cửa số biên soạn GUIDE

Giao diện rất giống với các chương trình lập trình giao diện như Visual Basic, Visual C++, … Các bạn di chuyển chuột qua các biểu tƣợng ở bên trái sẽ

23 thấy tên của các thanh công cụ điều khiển Xin nói qua một vài công cụ điều khiển hay dùng:

- Push Button: Là một nút nhấn, giống nhƣ nút Command Button trong VB

Là các nút bấm nhƣ nút OK, Cancel mà ta vẫn bấm

- Toggle button: Là một nút bật giống nhƣ push button nhƣng có hiện thị trạng thái thay đổi mỗi khi nhấn nút

- Radio Button: Nút nhỏ hình tròn để chọn lựa

- Check Box: Là hộp kiểm tra cho phép đƣa vào các chọn lựa khi bấm chuột vào nó

- Edit Text: Là hộp văn bản đƣa chuỗi ký tự vào đó

- Static Text: Dòng văn bản dùn để đặt nhãn, tiêu đề, hướng dẫn

- Pop-up Menu: menu sổ xuống trình bày một bảng các chọn lựa khi nhấp chuột vào

- List Box: Gồm một bảng các mục có thể lựa chọn

- Slider: Thanh trƣợt dùng để đƣa giá trị vào trong một vùng giới hạn

- Run (Ctr + T): nhấn vào để chạy chương trình mà ta đã viết Có lỗi là hiện ra ngày

- Align Object: dùng để làm cho các điều khiển sắp xếp gọn đẹp theo ý mình nhƣ cùng căn lề bên trái, …

Lưới và thước kẻ là công cụ quan trọng để cấu hình giao diện, giúp hình dung nó như một ma trận các ô vuông nhỏ Thay đổi giá trị của lưới cho phép người dùng tự do thả các điều khiển, tạo nên sự hài hòa và thẩm mỹ cho giao diện.

- Menu Editor: trình này để tạo menu cho điều khiển

- Tab Order Editor: sắp xếp Tab order là thứ tự khi ta nhấn phím Tab

- Gui Options: lựa chọn cho giao diện GUI

Khi bạn lưu file dưới tên "TÊN", cửa sổ Editor sẽ mở ra và hiển thị file TÊN.m của bạn Trong thư mục lưu trữ, bạn sẽ thấy hai file được tạo ra.

- TUT01.fig: file này chứa giao diện của chương trình

- TUT01.m: file chứa các mã thực thi cho chương trình như các hàm khởi tạo, các hàm callback

1.5.3 Thay đổi thuộc tính điều khiển

Nhấp chuột vào component trong vùng layout để soạn tính chất của component

Ví dụ: Nhấn chuột vào Edit text, sẽ hiện ra cửa sổ Property Inspector

- Tag: dùng để đặt tên cho component

- BackgroundColor: màu nền của component

- ForegroundColor: màu chữ trên component

- String: văn bản hiển thị trên component

- Enable: cho phép component hoạt động hay không

- Visible: hiển thị component hay không

Hình 1.5 Cửa sổ thuộc tính

Callback là hàm con quan trọng mà file áp dụng M sẽ gọi khi người dùng tương tác với component Để soạn thảo callback, bạn chỉ cần nhấp chuột phải vào component trong cửa sổ layout và chọn "View callbacks" Sau khi hoàn tất việc soạn thảo, bạn lưu lại và Matlab sẽ tự động tạo ra hai file với cùng tên nhưng khác phần mở rộng.

- File có phần mở rộng.fig chứa nội dung của giao diện

- File có phần mở rộng.m chứa những đoạn mã liên quan đến giao diện

Kết luận chương 1 Ở chương này em đã trình bày được cơ bản các kiến thức sử dụng MATLAB và giao diện GUIDE của nó

Trình bày đƣợc cơ bản xử lý ảnh, phân loại ảnh, và các hàm xử lý ảnh trong phần mềm MATLAB

PHƯƠNG PHÁP XỬ LÝ VÀ NHẬN DẠNG KHUÔN MẶT

Sơ lƣợc về phân tích thành phần chính PCA

Phân tích thành phần chính (PCA) được hiểu qua nhiều góc độ khác nhau Đối với các nhà thống kê cổ điển, PCA nhằm xác định các trục chính của ellipsoid nhiều chiều, chứa đựng đám mây dữ liệu phân phối chuẩn Các trục này được ước lượng từ một mẫu n cá thể, trong đó mỗi cá thể được đo p chỉ tiêu Kỹ thuật này được giới thiệu lần đầu bởi H Hotelling vào năm 1933, sau đó được phát triển bởi T.W Anderson vào năm 1958 và A.M Kshirsagar vào năm 1972.

Kỹ thuật phân tích nhân tố cổ điển được áp dụng trong trường hợp các phương sai gần như bằng không, đây là một phương pháp đặc biệt Phương pháp này thường được sử dụng trong lĩnh vực phân tích tâm lý, theo nghiên cứu của Horst.

Phân tích thành phần chính (PCA) là một kỹ thuật tối ưu hóa dữ liệu theo tiêu chuẩn đại số và hình học, không yêu cầu giả thuyết thống kê hay mô hình đặc biệt Kỹ thuật này trở nên phổ biến với sự phát triển của máy tính điện tử và được đề xuất bởi K Pearson vào năm 1901 C.R Rao đã trình bày lý thuyết PCA một cách đơn giản và rõ ràng vào năm 1964 Phương pháp PCA có ứng dụng rộng rãi trong nhiều lĩnh vực như công nghiệp, nông nghiệp, kinh tế và khoa học cơ bản.

Thuật toán PCA

Khuôn mặt con người chứa nhiều đặc điểm nhận diện, cho phép chúng ta nhận ra bạn bè dù thời gian có thể làm thay đổi một số chi tiết như làn da hay kiểu tóc Chúng ta không chỉ nhớ từng bộ phận như mắt, mũi hay môi, mà chính diện mạo tổng thể của họ giúp chúng ta nhận ra Từ đó, chúng ta có thể phát triển các thuật toán nhận diện khuôn mặt dựa trên ý tưởng về nét tổng thể này.

Phân tích thành phần chính (PCA) là một thuật toán nhận diện hình ảnh dựa trên các đặc điểm tổng quát của khuôn mặt Thuật toán này được áp dụng để thực hiện hai nhiệm vụ chính: nhận diện khuôn mặt và giảm thiểu kích thước dữ liệu mà vẫn giữ lại thông tin quan trọng.

 Thứ nhất là xác định vị trí những khuôn mặt người trong một bức ảnh

 Thứ hai là tìm một khuôn mặt giống với khuôn mặt cho trước

Trong quá trình huấn luyện nhận diện khuôn mặt, chúng ta bắt đầu với một tập ảnh khuôn mặt, mỗi bức ảnh có kích thước M*N, được coi như một vector trong không gian M*N chiều Các vector này không phân bố ngẫu nhiên mà tuân theo một quy luật nhất định, hình thành nên một không gian con gọi là không gian khuôn mặt Từ tập huấn luyện, chúng ta sẽ xác định một cơ sở trực chuẩn cho không gian khuôn mặt, trong đó các vector thuộc cơ sở này đại diện cho những đặc trưng tổng thể của khuôn mặt.

Định nghĩa bài toán xác định khuôn mặt người

Xác định khuôn mặt người (Face Detection) là một kỹ thuật máy tính giúp nhận diện vị trí và kích thước khuôn mặt trong ảnh kỹ thuật số Kỹ thuật này tập trung vào các đặc trưng của khuôn mặt, đồng thời loại bỏ các yếu tố không liên quan như tòa nhà, cây cối và cơ thể người.

Ứng dụng của phương pháp xác định khuôn mặt

Có rất nhiều ứng dụng đã và đang đƣợc nghiên cứu, và đƣợc ứng dụng trong thực tế:

Hệ thống tương tác giữa người và máy hỗ trợ những người bị tật hoặc khiếm khuyết trong việc giao tiếp Nhờ vào công nghệ này, những người sử dụng ngôn ngữ ký hiệu có thể dễ dàng trao đổi thông tin với những người không bị khuyết tật, tạo ra một cầu nối giao tiếp hiệu quả.

Nhận diện người A để xác định xem có phải là tội phạm truy nã hay không là một nhiệm vụ quan trọng, giúp cơ quan an ninh quản lý con người hiệu quả hơn Quá trình nhận diện có thể diễn ra trong môi trường bình thường hoặc trong điều kiện thiếu ánh sáng, chẳng hạn như sử dụng camera hồng ngoại.

Hệ thống quan sát và bảo vệ sử dụng camera để xác định và theo dõi con người, nhằm phát hiện các hành vi vi phạm như xâm phạm vào những khu vực cấm.

Hiện nay, tình trạng mất thẻ ATM và mã số PIN đang gia tăng, dẫn đến việc kẻ xấu rút tiền trái phép Để đối phó với vấn đề này, các ngân hàng đã triển khai lưu trữ hình ảnh khuôn mặt của người rút tiền Việc này giúp họ xác minh danh tính và xử lý các giao dịch đáng ngờ, bảo vệ quyền lợi của khách hàng và ngăn chặn hành vi gian lận.

 Th căn cước, chứng minh nhân dân (Face Identification)

Hệ thống điều khiển ra vào cho văn phòng, công ty và trụ sở được trang bị công nghệ nhận diện vân tay và mống mắt, cho phép nhân viên truy cập dễ dàng Nhân viên có thể đăng nhập vào máy tính cá nhân mà không cần nhớ tên đăng nhập hay mật khẩu, chỉ cần xác nhận qua khuôn mặt.

An ninh sân bay và quy trình xuất nhập cảnh tại Mỹ hiện nay đã được cải thiện với việc áp dụng các biện pháp xác thực nhằm kiểm tra danh tính của hành khách Điều này không chỉ giúp xác minh người xuất nhập cảnh mà còn nhằm phát hiện và ngăn chặn những cá nhân có liên quan đến khủng bố.

Trong tương lai, các loại thẻ thông minh sẽ được phát triển với tính năng tích hợp đặc trưng của người dùng Khi người dùng khác truy cập hoặc xử lý tại các hệ thống, họ sẽ phải kiểm tra các đặc điểm khuôn mặt so với thẻ để xác định xem có phải là chủ thẻ hay không.

Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua nhận diện khuôn mặt trên các cơ sở dữ liệu lớn như internet và các đài truyền hình Ví dụ, có thể tìm các video của tổng thống Bush phát biểu, các bộ phim có diễn viên Lý Liên Kiệt hoặc các trận bóng đá có sự tham gia của Ronaldo.

Hiện nay, có nhiều phương pháp để xác định xem một bức ảnh có phải là ảnh khỏa thân hay không Một trong những yếu tố quan trọng được sử dụng gần đây là khuôn mặt của người trong bức ảnh.

 Ứng dụng trong video phone

Phân loại hình ảnh trong điện thoại di động được thực hiện thông qua việc xác định khuôn mặt và trích xuất đặc trưng Dựa trên các đặc trưng này, hình ảnh được sắp xếp lưu trữ một cách hiệu quả, giúp người dùng dễ dàng truy tìm khi cần thiết.

 Kiểm tra trạng thái người lái xe có ngủ gật, mất tập trung hay không, và hỗ trợ thông báo khi cần thiết

 Phân tích cảm xúc trên khuôn mặt

 Trong lãnh vực thiết kế điều khiển robot

Hãng máy chụp hình Canon đã tích hợp công nghệ nhận diện khuôn mặt vào các dòng máy chụp hình mới, giúp cải thiện chất lượng hình ảnh, đặc biệt là trong việc chụp chân dung.

Phương pháp xác định khuôn mặt

Nhiều nghiên cứu đã phát triển các phương pháp xác định khuôn mặt người, từ ảnh xám đến ảnh màu hiện đại Các phương pháp này được phân loại thành bốn hướng tiếp cận chính dựa trên tính chất của chúng.

Hướng tiếp cận dựa trên tri thức liên quan đến việc mã hóa hiểu biết của con người về các loại khuôn mặt thành các quy tắc Những quy tắc này thường mô tả mối quan hệ giữa các đặc trưng của khuôn mặt.

Các thuật toán nhận diện khuôn mặt tập trung vào việc tìm kiếm các đặc trưng không thay đổi của khuôn mặt, đảm bảo rằng những đặc trưng này vẫn giữ nguyên dù có sự thay đổi về tư thế, vị trí thiết bị thu hình hoặc điều kiện ánh sáng.

2.5.1 Hướng tiếp cận dựa trên tri thức

Trong phương pháp tiếp cận top-down, việc xác định khuôn mặt người phụ thuộc vào tri thức của các tác giả nghiên cứu Họ có thể xây dựng các luật cơ bản để mô tả đặc trưng khuôn mặt và mối quan hệ giữa chúng Chẳng hạn, khuôn mặt thường có hai mắt đối xứng qua trục thẳng đứng, cùng với một mũi và một miệng Các mối quan hệ này có thể được mô tả qua khoảng cách và vị trí Thông thường, các tác giả sẽ trích xuất đặc trưng khuôn mặt trước, sau đó sử dụng các luật để xác định các ứng viên.

30 ứng viên nào là khuôn mặt và ứng viên nào không phải khuôn mặt Thường áp dụng quá trình xác định để giảm số lƣợng xác định sai

Một thách thức lớn trong việc chuyển giao tri thức con người thành các quy tắc hiệu quả là sự cân bằng giữa độ chi tiết và tính tổng quát của các quy tắc Nếu quy tắc quá chi tiết, có thể bỏ sót một số khuôn mặt trong ảnh do không đáp ứng đủ điều kiện Ngược lại, nếu quy tắc quá tổng quát, có thể dẫn đến việc nhận diện sai các vùng không phải khuôn mặt là khuôn mặt Hơn nữa, việc mở rộng bài toán để nhận diện các khuôn mặt ở nhiều tư thế khác nhau cũng gặp nhiều khó khăn.

Hai tác giả Yang và Huang đã phát triển một phương pháp tiếp cận để xác định khuôn mặt, bao gồm ba mức luật Mức cao nhất sử dụng khung cửa sổ quét trên ảnh để tìm các ứng viên có thể là khuôn mặt thông qua một tập luật Mức thứ hai mô tả tổng quát hình dáng khuôn mặt bằng một tập luật khác Cuối cùng, mức chi tiết sử dụng một tập luật riêng biệt để phân tích sâu hơn.

2.5.2 Các đặc trƣng khuôn mặt

Một số phương pháp xác định các đặc trưng của khuôn mặt có tỷ lệ chính xác cao:

Phương pháp xác định khuôn mặt từ một ảnh phức tạp sử dụng kỹ thuật dựa trên cạnh, kết hợp phương pháp Candy và Heuristics để loại bỏ các cạnh không cần thiết, chỉ giữ lại đường bao quanh khuôn mặt Hình ellipse được sử dụng để bao trùm khuôn mặt, giúp tách biệt vùng đầu khỏi hình nền Thuật toán này đạt tỷ lệ chính xác lên đến 80%.

Phương pháp xác định khuôn mặt trong ảnh xám sử dụng bộ lọc để làm nổi bật các biên và áp dụng các phép toán hình thái học nhằm làm rõ các vùng có cường độ cao, như mắt Qua việc phân tích histogram, chúng ta có thể xác định các đỉnh nổi bật để chuyển đổi ảnh xám thành hai ảnh nhị phân Các thành phần dính nhau trong hai ảnh này sẽ được xem là vùng ứng viên khuôn mặt, sau đó tiến hành phân loại để xác định xem có phải là khuôn mặt hay không Phương pháp này đã được kiểm tra trên các ảnh chỉ có đầu và vai của người, nhưng vẫn còn thách thức trong việc áp dụng các phép toán morphology và xác định khuôn mặt trên các vùng ứng viên.

Phương pháp xác định khuôn mặt dựa trên mô hình xác suất giúp nhận diện khuôn mặt trong ảnh có nền phức tạp bằng cách sử dụng bộ xác định đặc trưng cục bộ và so khớp đồ thị ngẫu nhiên Bài toán này được xem như một quá trình tìm kiếm thứ tự các đặc trưng quan trọng của khuôn mặt, bao gồm hai mắt, hai lỗ mũi và phần nối giữa mũi và miệng Quan hệ khoảng cách giữa các đặc trưng cặp, chẳng hạn như mắt trái và mắt phải, được tính toán và mô hình hóa bằng phân bố Gauss Mẫu khuôn mặt được tạo ra từ trung bình của một tập đa hướng và đa tỷ lệ của bộ lọc đạo hàm Gauss Các đặc trưng ứng viên được xác định từ ảnh bằng cách so khớp từng điểm ảnh với vector mẫu, chọn hai ứng viên hàng đầu để tìm kiếm các đặc trưng khác Quá trình này tương tự như xây dựng một đồ thị quan hệ, trong đó mỗi node đại diện cho các đặc trưng của khuôn mặt và xác suất được đưa vào để xác định Tỷ lệ xác định chính xác đạt 86%.

Phương pháp xác định khuôn mặt dựa trên lý thuyết xác suất thống kê hình dáng sử dụng hàm mật độ xác suất (PDF) qua N điểm đặc trưng (xi, yi), với giả định phân bố Gauss trong không gian 2N chiều Các tác giả áp dụng phương thức cực đại khả năng (ML) để xác định vị trí khuôn mặt, cho phép phát hiện khuôn mặt ngay cả khi bị che khuất Tuy nhiên, phương pháp này không có khả năng xác định nhiều khuôn mặt trong cùng một bức ảnh.

Phương pháp xác định khuôn mặt dựa vào đặc trưng sử dụng nhiều dấu hiệu từ ảnh và ngữ cảnh Đầu tiên, bộ lọc đạo hàm Gauss thứ hai được áp dụng để xác định các điểm mấu chốt tại cực đại địa phương, từ đó chỉ ra các đặc trưng tiềm năng Giai đoạn tiếp theo kiểm tra các cạnh xung quanh điểm mấu chốt và nhóm chúng thành các vùng dựa trên tiêu chí gần gũi và tương tự về hướng và cường độ Các đặc tính của vùng như chiều dài cạnh, cường độ cạnh và biến thiên cường độ được lưu trữ trong một vector đặc trưng Dựa trên dữ liệu đặc trưng đã được huấn luyện, giá trị trung bình và ma trận hiệp phương sai cho mỗi đặc trưng khuôn mặt sẽ được tính toán Một vùng được coi là ứng viên khuôn mặt khi khoảng cách Mahalanobis giữa các vector đặc trưng đều nằm dưới ngưỡng cho phép.

Phương pháp Bayes được sử dụng để xác định xem ứng viên có phải là khuôn mặt hay không, với tỷ lệ chính xác đạt 85% Tuy nhiên, tỷ lệ sai sót lên tới 28% và chỉ áp dụng hiệu quả cho hình khuôn mặt có kích thước 60x60 điểm ảnh Ngoài ra, phương pháp này còn được kết hợp với mô hình đường viền linh hoạt để nâng cao hiệu suất nhận diện.

Phương pháp xác định khuôn mặt sử dụng tích đặc trưng võng mạc và cử động nhỏ của mắt, với thuật toán hoạt động trên bản đồ các mấu chốt để mô hình hóa lưới võng mạc Quy trình bắt đầu bằng việc ước lượng thô vùng khuôn mặt qua bộ lọc, sau đó tinh chế ở độ phân giải cao hơn Tỷ lệ sai số đạt được chỉ là 4.69%.

Phương pháp xác định khuôn mặt dựa trên hình thái học tập trung vào việc trích xuất các đoạn giống mắt (eye-analogue) để nhận diện khuôn mặt con người Phương pháp này nhấn mạnh rằng mắt và lông mày là những đặc trưng nổi bật và ổn định nhất, rất hữu ích trong việc xác định khuôn mặt Các đoạn giống mắt được xác định thông qua các phép toán morphology như đóng, cắt bỏ sai khác và phân ngưỡng, nhằm trích xuất các điểm ảnh có cường độ thay đổi đáng kể Sau đó, các đoạn này được gán nhãn để tìm kiếm các vùng tiềm năng có thể là khuôn mặt, dựa trên sự kết hợp của các đặc tính hình học của mắt, mũi, lông mày và miệng Cuối cùng, một mạng neural sẽ kiểm tra các vùng này để xác định xem chúng có phải là khuôn mặt hay không, với tỷ lệ chính xác đạt 94%.

Phương pháp xác định khuôn mặt dựa trên hình dáng được áp dụng cho các khuôn mặt chụp thẳng, bao gồm hai giai đoạn: tập trung và phân loại chi tiết Giai đoạn tập trung sử dụng các mảnh cạnh trích từ bộ xác định cạnh đơn giản thông qua sự khác biệt cường độ Sau khi có các ứng viên từ quá trình tập trung, thuật toán CART được áp dụng để xây dựng cây phân loại từ các ảnh huấn luyện, nhằm xác định xem ứng viên nào là khuôn mặt người.

Khó khăn và thử thách trong bài toán xác định khuôn mặt người

Việc xác định khuôn mặt người có những khó khăn nhất định như sau:

Hướng của khuôn mặt khi chụp ảnh rất quan trọng, bao gồm các tư thế như nhìn thẳng, nhìn nghiêng, hoặc nhìn từ trên xuống Trong một bức ảnh, có thể xuất hiện nhiều khuôn mặt với các tư thế khác nhau, tạo nên sự đa dạng và phong phú cho bức hình.

 Sự có mặt của các chi tiết không phải là đặc trƣng riêng của khuôn mặt người, như: râu quai nón, mắt kính, …

 Các nét mặt (facial expression) khác nhau trên khuôn mặt, nhƣ: vui, buồn, ngạc nhiên, …

 Mặt người bị che khuất bởi các đối tượng khác có trong ảnh

 Điều kiện ảnh, đặc biệt là về độ sáng và chất lƣợng ảnh, chất lƣợng thiết bị thu hình

 Trục toạ độ của máy ảnh so với ảnh

 Kích thước khác nhau của các khuôn mặt người, và đặc biệt là trong cùng một ảnh

 Màu sắc của môi trường xung quanh, hay màu sắc quần áo của người được chụp lấy ảnh

 Xuất hiện thành phần khuôn mặt hay không

 Nhiều khuôn mặt có vùng da dính lẫn nhau

Các thách thức trong việc nhận diện khuôn mặt cho thấy rằng không có phương pháp nào (thuật toán) có thể hoàn toàn hoàn hảo mà không gặp phải một số hạn chế nhất định Để đánh giá và so sánh các phương pháp nhận diện khuôn mặt, người ta thường dựa trên các tiêu chí nhất định.

Tỷ lệ xác định chính xác là tỷ lệ giữa số lượng khuôn mặt người được nhận diện đúng từ hệ thống so với tổng số khuôn mặt thực sự có trong ảnh.

 Số lƣợng xác định nhầm là số lƣợng vùng trong ảnh không phải là khuôn mặt người mà hệ thống xác định nhầm là khuôn mặt người (false positives)

 Thời gian thực hiện là thời gian để máy tính xác định khuôn mặt người trong ảnh (running time).

Bài toán nhận dạng khuôn mặt bằng PCA

Trong hơn một thập kỷ qua, nghiên cứu về xác định khuôn mặt người từ ảnh đã có những bước tiến đáng kể, từ việc xử lý ảnh đen trắng với một khuôn mặt nhìn thẳng đến việc mở rộng sang ảnh màu có nhiều khuôn mặt và nhiều tư thế khác nhau Các nghiên cứu không chỉ dừng lại ở môi trường đơn giản như phòng thí nghiệm mà còn phát triển để nhận diện khuôn mặt trong các bối cảnh phức tạp hơn, như trong tự nhiên, nhằm đáp ứng nhu cầu thực tiễn của con người.

Ma trận T có kích thước M*NxP chứa tất cả ảnh trong cơ sở dữ liệu, với mỗi ảnh là một vector cột Để áp dụng thuật toán PCA, trước tiên ta tính trung bình m của tất cả ảnh trong ma trận T bằng hàm "mean" của Matlab Tiếp theo, ta trừ ảnh trung bình khỏi từng bức ảnh trong T để tạo ra ma trận A có kích thước M*NxP Để tìm Eigenfaces, ta cần xác định các vector riêng của ma trận A*A', nhưng do kích thước quá lớn, ta sẽ tìm các vector riêng của ma trận A’*A có kích thước PxP Việc tìm vector riêng được thực hiện bằng hàm eig trong Matlab Giả sử v là một vector riêng của ma trận A’*A, thì A*v sẽ là vector riêng của ma trận A*A’ Tập hợp các vector riêng của ma trận A*A’ được gọi là Eigenfaces.

- A: là tập hợp những ảnh - ảnh trung bình

- E: là những vector riêng của ma trận A*A’

Tìm một cơ sở trực chuẩn:

- u k là vector riêng của AA T

-  k là trị riêng tương ứng của AA T

H là bức ảnh M x N suy ra H là vector M*N chiều K = H –m

- A i = A(:,i) là ảnh thứ i trong cơ sở dữ liệu

Xác định khuôn mặt giống nhau của cùng một người

- s= K K f là khoảng cách từ H đến không gian mặt

- s i = C  C i là khoảng cách từ H đến bức ảnh T i

So sánh  và  là hai ngƣỡng nào đó

- s <  : H là bức ảnh khuôn mặt

- s i <  : T i và H là ảnh cùng 1 người

Khi so sánh hình chiếu của bức ảnh khuôn mặt người với ảnh gốc, ta thấy sự tương đồng cao, trong khi hình chiếu của bức ảnh không phải khuôn mặt lại khác biệt rõ rệt Điều này cho thấy khoảng cách từ bức ảnh mặt người tới không gian mặt nhỏ hơn nhiều so với khoảng cách từ bức ảnh không phải mặt người Để phân tích mối quan hệ giữa các biến và cá thể trong bảng số liệu với nhiều cột và dòng, ta cần thể hiện chúng trong một không gian có số chiều thấp hơn.

Trong ví dụ này ta có một tập huấn luyện gồm những bức ảnh khuôn mặt kích nếu I = j nếu I  j

Kích thước 38 thước 180x200 pixel, dưới đây là một số hình ảnh của các eigenfaces đã được thu thập Lưu ý rằng đây chỉ là các vector trực giao; các eigenfaces thực sự là những vector này sau khi được chuẩn hóa.

Bây giờ ta chiếu hai bức ảnh lên không gian khuôn mặt này:

Hình 2.3 Bức ảnh kiểm tra và hình chiếu của nó

Khi so sánh hình chiếu của bức ảnh khuôn mặt với ảnh gốc, ta nhận thấy sự tương đồng rõ rệt, trong khi hình chiếu của bức ảnh không phải khuôn mặt lại khác biệt đáng kể Điều này cho thấy khoảng cách từ bức ảnh khuôn mặt đến không gian mặt nhỏ hơn nhiều so với khoảng cách từ bức ảnh không phải khuôn mặt Ví dụ, trong một tập huấn luyện với các bức ảnh kích thước 18x27 pixel, chúng ta có thể xác định các Eigenface và tìm face map cho một bức ảnh kiểm tra, trong đó ảnh con H(x,y) nằm trong vùng hình chữ nhật có tâm tại (x,y).

39 trên bức ảnh và có kích thước 18x27 pixel

Hình 2.5 Face map của bức ảnh ban đầu

Vị trí của mỗi khuôn mặt trong bức ảnh được xác định là những vùng cực tiểu địa phương, thể hiện qua các đốm đen nằm trong những khu vực trắng hình chữ nhật.

Nếu chúng ta sở hữu một cơ sở dữ liệu chứa các hình ảnh không phải khuôn mặt, bao gồm những chi tiết như cổ áo hay một phần của khuôn mặt, thì có thể tiến hành tìm kiếm face map cho bức ảnh gốc dựa trên không gian không phải khuôn mặt này.

Các kết quả thu được chỉ mang tính lý thuyết, trong khi thực tế, các thuật toán nhận dạng khuôn mặt đã phát triển vượt bậc từ ý tưởng của PCA để đạt được độ chính xác cần thiết.

Hình 2.6 Face map ảnh ban đầu với không gian không phải là khuôn mặt

Hình trên cũng khá giống với face map ứng với không gian khuôn mặt nhƣng tại mỗi vùng sáng hình chữ nhật thì không hề có tâm ở giữa

Face map liên quan đến không gian khuôn mặt, cho phép xác định vị trí của các khuôn mặt thông qua thuật toán tìm vị trí cực tiểu địa phương Việc sử dụng face map trong không gian không phải khuôn mặt chỉ là một phương pháp đơn giản giúp cải thiện độ chính xác trong việc xác định vị trí.

2.7.3 Ứng dụng Eigenfaces trong việc nhận dạng mặt người

Hệ thống nhận diện gương mặt trước đây cho rằng việc nhận diện các góc cạnh của gương mặt trong các trạng thái khác nhau là rất quan trọng Việc xác nhận khoảng cách cũng được coi là cần thiết Do đó, chúng tôi đề xuất áp dụng phương pháp lý thuyết thông tin để mã hóa và giải mã hình ảnh gương mặt, nhằm làm rõ bản chất nội dung thông tin của những bức ảnh này Chúng tôi nhấn mạnh các đặc trưng “cục bộ” và “toàn cục”, liên quan đến cách mà chúng ta quan sát trực quan các đặc điểm như đôi mắt, mũi, môi và mái tóc.

Trong lý thuyết thông tin, mục tiêu là trích xuất và mã hóa hiệu quả thông tin quan trọng từ ảnh mặt người, đồng thời so sánh các gương mặt đã mã hóa với kho dữ liệu mẫu tương tự Một phương pháp đơn giản để thực hiện điều này là chỉ ra sự khác biệt trong tập hợp ảnh mặt người, đảm bảo tính độc lập trong quá trình phân tích.

41 trong phân tích các nét mặt, và sử dụng những thông tin này mã hóa và so sánh các ảnh gương mặt cá thể

Về mặt toán học, chúng ta xác định các thành phần chính trong sự phân bố của mặt người thông qua các vectơ riêng (eigenvectors) từ ma trận tương quan của dãy ảnh mặt người Những vectơ riêng này đại diện cho các điểm đặc trưng, liên kết để mô tả sự khác biệt giữa các ảnh Mỗi vị trí trong ảnh đóng góp vào việc tạo ra các vectơ riêng, cho phép chúng ta hình dung chúng dưới dạng một loại mặt ma gọi là eigenface Một số ví dụ về loại mặt này được trình bày trong hình 2.7.

Hình 2.7 a) Những gương mặt dùng để huấn luyện b) Ảnh trung bình ψ

Mỗi ảnh mặt người trong dãy huấn luyện có thể được tái hiện chính xác thông qua eigenfaces, với số lượng eigenfaces tương đương với số ảnh mặt người được đưa vào huấn luyện Tuy nhiên, chỉ cần sử dụng "best eigenfaces" để xấp xỉ các gương mặt, được tạo ra từ các giá trị riêng lớn nhất, giúp tính toán độ sai biệt lớn nhất với chuỗi ảnh mặt người Việc sử dụng ít eigenfaces mang lại hiệu quả cao trong quá trình tính toán M' eigenfaces mở rộng ra không gian con M' chiều - “không gian mặt người” - của tất cả ảnh có thể, trong khi đường hình sin biểu thị các pha và tần số khác nhau là hàm cơ bản của phân bố Fourier.

Ý tưởng về eigenfaces được phát triển dựa trên kỹ thuật của Sirvokick và Kirby, cho phép mô tả hiệu quả các gương mặt thông qua phương pháp phân tích thành phần chính (PCA).

Nghiên cứu cho thấy rằng việc tái tạo các bộ sưu tập ảnh mặt người có thể thực hiện gần đúng bằng cách lưu trữ trọng số cho từng gương mặt cùng với một chuỗi hình ảnh chuẩn nhỏ, có thể nhỏ hơn nhiều so với bộ sưu tập gốc.

Quá trình nhận dạng có thể tóm tắt nhƣ sau:

 Chuẩn bị: Thu thập dãy huấn luyện của ảnh mặt người và tính toán các eigenfaces, xác định không gian mặt người

 Khi nhận đƣợc bức ảnh mới, tính toán dãy trọng số dựa vào ảnh đầu vào và

M eigenfaces bằng cách chiếu ảnh đầu vào với từng eigenface

 Có thể xác định ảnh đầu vào có phải là gương mặt hay không dưa vào việc kiểm tra ảnh đó có gần không gian mặt người hay không

 Nếu đã là gương mặt thi phân loại các trọng số xem đó có phải người đã biết trước hay chưa

 Nếu gương mặt chưa biết xuất hiện vài lần thì tính toán các trọng số thành phần và sát nhập vào những gương mặt đã biết (học nhận dạng)

THUẬT TOÁN PCA VÀ CHƯƠNG TRÌNH MÔ PHỎNG

Ngày đăng: 01/08/2021, 10:40

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w