Tải bản đầy đủ (.pdf) (61 trang)

Nhận dạng khuôn mặt sử dũng thuật toán PCA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.19 MB, 61 trang )

LỜI CẢM ƠN
Từ những kiến thức và kỹ năng em học tập và rèn luyện, em đã hoàn thành đồ
án tốt nghiệp đại học của mình.
Để hoàn thiện đƣợc đồ án này, em xin gửi lời cảm ơn chân thành tới thầy ThS.
Tạ Hùng Cƣờng đã hƣớng dẫn, động viên em trong quá trình làm đồ án vừa qua.
Em cũng xin gửi lời cảm ơn tới quý thầy/cô đã giúp em để hoàn thành đồ án
này.
Trong quá trình làm đồ án chắc chắn không tránh khỏi những thiếu sót, rất
mong nhận đƣợc những đóng góp ý kiến từ phía các đơn vị.
Nghệ An, tháng 05 năm 2016
Sinh viên thực hiện
Đặng Thế Hƣởng

1


MỤC LỤC

LỜI CẢM ƠN .............................................................................................................1
MỤC LỤC ...................................................................................................................2
LỜI NÓI ĐẦU ............................................................................................................4
DANH MỤC HÌNH SỬ DỤNG TRONG ĐỒ ÁN .....................................................5
CÁC TỪ VIẾT TẮT SỬ DỤNG TRONG ĐỒ ÁN ....................................................6
Chƣơng 1. MATLAB VÀ XỬ LÝ ẢNH ....................................................................7
1.1. MATLAB..........................................................................................................7
1.2. Giới thiệu khái quát về ảnh số ........................................................................10
1.3. Xử lý ảnh với Matlab .....................................................................................11
1.4. Toolbox bắt ảnh và xử lý ảnh .........................................................................14
1.5. Tạo giao diện ngƣời dùng nhờ công cụ GUIDE .............................................20
Kết luận chƣơng 1 .....................................................................................................24
Chƣơng 2. PHƢƠNG PHÁP XỬ LÝ VÀ NHẬN DẠNG KHUÔN MẶT ..............25


2.1. Định nghĩa bài toán xác định khuôn mặt ngƣời.............................................25
2.2. Ứng dụng của phƣơng pháp xác định khuôn mặt ...........................................25
2.3. Phƣơng pháp xác định khuôn mặt..................................................................27
2.4. Khó khăn và thử thách trong bài toán xác định khuôn mặt ngƣời .................32
2.5. Bài toán nhận dạng khuôn mặt bằng PCA ......................................................33
Kết luận chƣơng 2 .....................................................................................................39
Chƣơng 3. THUẬT TOÁN PCA VÀ CHƢƠNG TRÌNH MÔ PHỎNG..................40
3.1. Ƣu điểm của phƣơng pháp PCA .....................................................................40
3.2. Nhƣợc điểm của phƣơng pháp PCA ...............................................................40
3.3. Lƣu đồ giải thuật .............................................................................................41
3.4. Kết quả mô phỏng ...........................................................................................46
3.5. Tốc độ thực hiện .............................................................................................47
3.6. Nhận xét quá trình thực hiện ..........................................................................47
Kết luận chƣơng 3 .....................................................................................................49
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ................................................................50
TÀI LIỆU THAM KHẢO .........................................................................................51
PHỤ LỤC ..................................................................................................................52

2


TÓM TẮT ĐỒ ÁN
Đồ án đã trình bày các khái niệm cơ bản về nhận dạng, xử lý ảnh. Đồ án
cũng đã thuật toán PCA ứng dụng nó trong xử lý và nhận dạng.
Đồ án thiết kế và xây dựng chƣơng trình mô phỏng thành công việc nhận
dạng trên cơ sở của thuật toán PCA.

ABSTRACT

Blueprints presented basic concepts of image processing. Also presented

bleprints PCA algorinthm in processing application and identity.
Since then the scheme has been designed and successfully simulate on the
basic of the identificaption of the PCA algorithm.

3


LỜI NÓI ĐẦU

Vấn đề an ninh bảo mật đang đƣợc yêu cầu khắt khe tại mọi quốc gia trên thế
giới. Các hệ thống nhận dạng con ngƣời đƣợc ra đời với độ tin cậy ngày càng cao.
Một trong các bài toán nhận dạng rất đƣợc quan tâm hiện nay là nhận dạng khuôn
mặt. Bên cạnh đó, việc thu thập, xử lý thông tin qua ảnh để nhận biết đối tƣợng
đang đƣợc quan tâm và ứng dụng rộng rãi.
Với phƣơng pháp này, chúng ta có thể thu nhận đƣợc nhiều thông tin từ đối
tƣợng mà không cần tác động nhiều đến đối tƣợng nghiên cứu. Sự phát triển của
khoa học máy tính tạo môi trƣờng thuận lợi cho bài toán nhận dạng từ ảnh số. Các
hệ thống nhận dạng offline đã ra đời và có độ tin cậy cao, tuy nhiên các hệ thống
nhận dạng online lại chƣa đáp ứng đƣợc.
Bài toán nhận dạng là một bài toán hấp dẫn, không giới hạn giải pháp sử dụng,
vận dụng linh hoạt kiến thức trong nhiều lĩnh vực, đã thách thức nhiều ngƣời nghiên
cứu vì tính ứng dụng to lớn trong thực tế. Đây là vấn đề cần đƣợc nghiên cứu để
ứng dụng vào việc chế tạo nhƣ: robot, các thiết bị camera, các hệ thống bảo mật,
nhận dạng,… Do đó em chọn đề tài “Thiết kế mô phỏng hệ thống nhận dạng trên
cơ sở thuật toán PCA”. Đề tài này đƣợc trình bày bao gồm có 3 chƣơng:
Chƣơng 1: Matlab và xử lý ảnh.
Chƣơng 2: Phƣơng pháp xử lý và nhận dạng khuôn mặt.
Chƣơng 3: Thiết kế chƣơng trình mô phỏng nhận dạng dung thuật toán PCA.
Nội dung đề tài bao gồm:
-


Tìm hiểu phƣơng pháp nhận diện ảnh.

-

Nghiên cứu PCA.

-

Dò tìm ảnh mặt ngƣời có không gian .

-

Cắt ảnh mặt và lƣu vào 1 file.

-

Xử lý ảnh động qua webcam.

Trong bài luận này em xin đề cập tới vấn đề dò tìm và nhận dạng mặt ngƣời
qua một ảnh tĩnh cho trƣớc, đồng thời mở rộng hơn là xử lý ảnh thu đƣợc qua một
thiết bị thu ảnh, ví dụ nhƣ: camera, webcam, …

4


DANH MỤC HÌNH SỬ DỤNG TRONG ĐỒ ÁN
Hình 1.1. Cửa sổ khi khởi động Matlab .....................................................................9
Hình 1.2. Biểu diễn ảnh index ...................................................................................18
Hình 1.3. Cửa số GUIDE ..........................................................................................21

Hình 1.4. Cửa số biên soạn GUIDE ..........................................................................21
Hình 1.5. Cửa sổ thuộc tính ......................................................................................23
Hình 2.1. Một mẫu khuôn mặt, có 16 vùng và 23 quan hệ (các mũi tên). ...............32
Hình 3.1. Lƣu đồ thuật toán chính của chƣơng trình ................................................41
Hình 3.2. Lƣu đồ thuật toán chọn ảnh .......................................................................42
Hình 3.3. Lƣu đồ thuật toán dò tìm mặt ....................................................................43
Hình 3.4. Lƣu đồ giải thuật chƣơng trình nhận dạng ................................................44
Hình 3.5. Lƣu đồ giải thuật PCA ..............................................................................45
Hình 3.6. Giao diện chính .........................................................................................46
Hình 3.7. Giao diện chƣơng trình nhận dạng ảnh tĩnh ..............................................46
Hình 3.8. Giao diện chƣơng trình dò tìm ảnh động ..................................................47

5


CÁC TỪ VIẾT TẮT SỬ DỤNG TRONG ĐỒ ÁN

PCA

Principal Component Analysis

Phân tích thành phần chính

COM

Component Object Model

Phần kết hợp

RGB


Red Green Blue

Đỏ Lục Lam

MATLAB

Matrix Laboratory

Thƣ viện ma trận

CGA

Color Graphic Adaptor

Độ phân giải màn hình

SVM

Support Vector Machine

Vector hỗ trợ

ICA

Independent Component
Analysis

6


Phân tích thành phần độc lập


Chƣơng 1
MATLAB VÀ XỬ LÝ ẢNH
1.1. MATLAB
1.1.1. Khái niệm MATLAB
Matlab là một công cụ mô phỏng, lập trình bậc cao đƣợc sử dụng để giải các
bài toán về khoa học kỹ thuật. MATLAB tích hợp đƣợc việc tính toán, thể hiện kết
quả, cho phép lập trình, giao diện làm việc rất dễ dàng cho ngƣời sử dụng. Dữ liệu
cùng với thƣ viện đƣợc lập trình sẵn cho phép ngƣời sử dụng có thể có đƣợc những
ứng dụng sau đây.
 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 giao, các phần tử dữ liệu là một mảng (mảng
này không đòi hỏi về kích thƣớc). Chúng cho phép giải quyết các vấn đề liên quan
đến lập trình bằng máy tính, đặc biệt sử dụng các phép tính về ma trận hay vectơ
và có thể sử dụng ngôn ngữ C học Fortran lập trình rồi thực hiện ứng dụng lập
trình đó bằng các câu lệnh gọi từ MATLAB. MATLAB đƣợc viết tắt từ chữ
“MATrix LABoratory” tức là thƣ viện về ma trận, từ đó phần mềm Matlab đƣợc
viết nhằm cung cấp cho việc truy cập vào phần mềm ma trận một cách dễ dàng,
phần mềm ma trận này đƣợc phát triển bởi các công trình Linpack và Eispack.

Ngày nay Matlab đƣợc phát triển bởi Lapack và Artpack tạo nên một nghệ thuật
phần mềm cho ma trận.
a) Dữ liệu

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ớ
7


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 Sparse.
 Kiểu uint8, uint8, uint16, uint64...
 Kiểu char ví dụ “Hello”.
 Kiểu cell.
 Kiểu Structure.

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 MATLAB


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.
 Mạng nơron.
 Logic mờ.
 Simulink.
1.1.3. Hệ thống MATLAB
Hệ thống giao diện của MATLAB đƣợc chia thành 5 phần:
 Môi trƣờng phát triển.
Đây là nơi đặt các thanh công cụ, các phƣơng tiện giúp chúng ta sử dụng các
lệnh và các file, ta có thể liệt kê một số nhƣ sau.
+ Desktop.
+ Command Window.
+ Command History.
8


+ Browsers for viewing help.
 Thƣ viện, các hàm toán học bao gồm các cấu trúc nhƣ tính tổng, sin cosin
atan, atan2 etc..., các phép tính đơn giản đến các phép tính phức tạp nhƣ tính ma
trận nghich đảo, trị riêng, chuyển đổi fourier, laplace, symbolic library.
 Ngôn ngữ Matlab. Đó là các ngôn ngữ cao về ma trận và mảng, với các dòng
lệnh, các hàm, cấu trúc dữ liệu vào, có thể lập trình hƣớng đối tƣợng.
 Đồ hoạ trong Matlab. Bao gồm các câu lệnh thể hiện đồ họa trong môi
trƣờng 2D và 3D, tạo các hình ảnh chuyển động, cung cấp các giao diện tƣơng tác
giữa ngƣời sử 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…
1.1.4. Làm việc với MATLAB


Hình 1.1. Cửa sổ khi khởi động MATLAB
Trƣớc tiên để khởi động MATLAB ta kích click vào biểu tƣợng file MATLAB
trên màn hình xuất hiện cửa sổ nhƣ hình vẽ. Cửa sổ đó chứa các thanh công cụ
(Giao diện ngƣời và máy) cần thiết cho việc quản lý các files, các biến, cửa sổ
lệnh, có thể coi desktop là các panel gồm các ô, vùng, quản lý và tác dụng của từng
cửa sổ nhỏ đƣợc quản lý bởi desktop.
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ó.

9


1.2. 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à kết quả của sự biến đổi tƣơng ứng 1 giá trị độ sáng của 1 điểm
ảnh với 1 giá trị nguyên dƣơng. Thông thƣờng nó xác định trong [0, 255] tuỳ thuộc
vào giá trị mà mỗi điểm ảnh đƣợc biểu diễn.

Các thang giá trị mức xám thông thƣờng: 16, 32, 64, 128, 256. (Mức 256 là
mức phổ dụng. Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức
xám. Mức xám dùng 1 byte biểu diễn: 28=256 mức, tức là từ 0 đến 255).
c) Độ phân giải của ảnh

Định nghĩa: Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh đƣợc ấn
định trên một ảnh số đƣợc hiển thị.
Theo định nghĩa, khoảng cách giữa các điểm ảnh phải đƣợc chọn sao cho mắt
ngƣời vẫn thấy đƣợc sự liên tục của ảnh. Việc lựa chọn khoảng cách thích hợp tạo
nên một mật độ phân bổ, đó chính là độ phân giải và đƣợc phân bố theo trục x và y
trong không gian hai chiều.
Ví dụ: Độ phân giải của ảnh trên màn hình CGA (Color Graphic Adaptor) là
một lƣới điểm theo chiều ngang màn hình: 320 điểm chiều dọc * 200 điểm ảnh
(320*200). Rõ ràng, cùng màn hình CGA 12” ta nhận thấy mịn hơn màn hình CGA
17” độ phân giải 320*200. Lý do: cùng một mật độ (độ phân giải) nhƣng diện tích
màn hình rộng hơn thì độ mịn (liên tục của các điểm) kém hơn.
10


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:
- Hệ màu RGB:

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.
P(x, y) = (R, G, B)

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

(C, M, Y) = (1, 1, 1) - (R, G, B)
hay

C+R=M+G=Y+B=1

=> 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)

P(x, y) = (C-K, M-K, V-K, K).
Ví dụ:
Với (C1, M1, Y1) ta sẽ có K=min(C1, M1, Y1)
vậy CMYK=(C1-K, M1-K, Y1-K, K)
1.3. Xử lý ảnh với Matlab
1.3.1. Xử lý ảnh
Các bƣớc cần thiết trong xử lý ảnh. Đầu tiên, ảnh tự nhiên từ thế giới ngoài
đƣợc thu nhận qua các thiết bị thu (nhƣ Camera, máy chụp ảnh). Trƣớc đây, ảnh thu
qua Camera là các ảnh tƣơng tự (loại Camera ống kiểu CCIR). Gần đây, với sự phát
triển của công nghệ, ảnh màu hoặc đen trắng đƣợc lấy ra từ Camera, sau đó nó đƣợc
chuyển trực tiếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo. Máy ảnh số hiện nay
là một thí dụ gần gũi.
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…
11



- Mục đích: biến đổi thông tin hình ảnh về các cấu trúc đƣợc lƣu trữ trong

máy tính, có thể hiển thị ra các thiết bị ngoại vi nhƣ là máy in, màn hình…
- Gồm hai tiến trì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.
- Mục đích:

+ Đ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.
d) Biểu diễn ảnh (Image Representation)

Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ả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 biến đổi các số liệu này thành
dạng thích hợp là cần thiết cho xử lý ảnh tiếp theo bằng máy tính.
e) Nhận dạng và nội suy ảnh (Image Recognition and Interpretation)


Nhận dạng ảnh là quá trình xác định ảnh. Quá trình này thƣờng thu đƣợc bằng
cách so sánh với mẫu chuẩn đã đƣợc học (hoặc lƣu) từ trƣớc. Nội suy là phán đoán
theo ý nghĩa trên cơ sở nhận dạng.
Ví dụ: một loạt chữ số và nét gạch ngang trên phong bì thƣ có thể đƣợc nội
suy thành mã điện thoại. Có nhiều cách phân loai ảnh khác nhau về ảnh. Theo lý
thuyết về nhận dạng, các mô hình toán học về ảnh đƣợc phân theo hai loại nhận
dạng ảnh cơ bản:
12


- Nhận dạng theo tham số.
- Nhận dạng theo cấu trúc.

Một số đối tƣợng nhận dạng khá phổ biến hiện nay đang đƣợc áp dụng trong
khoa học và công nghệ là: 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, nhận dạng mặt
ngƣời…
Nhƣ đã nói ở trên, ảnh là một đối tƣợng khá phức tạp về đƣờng nét, độ sáng
tối, dung lƣợng điểm ảnh, môi trƣờng để thu ảnh phong phú kéo theo nhiễu. Trong
nhiều khâu xử lý và phân tích ảnh ngoài việc đơn giản hóa các phƣơng pháp toán
học đảm bảo tiện lợi cho xử lý, ngƣời ta mong muốn bắt chƣớc quy trình tiếp nhận
và xử lý ảnh theo cách của con ngƣời. Trong các bƣớc xử lý đó, nhiều khâu hiện
nay đã xử lý theo các phƣơng pháp trí tuệ con ngƣời. Vì vậy, ở đây các cơ sở tri
thức đƣợc phát huy.
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. Ma trận
bản đồ màu là một mảng mx3 kiểu double bao gồm các giá trị dấu phẩy động

nằm giữa 0 và 1. Mỗi hàng của bản đồ chỉ ra các giá trị mà: red, green và blue của
một màu đơn. Một ảnh chỉ số sử dụng ánh xạ trực tiếp giữa giá trị của pixel ảnh tới
giá trị trong bản đồ màu. Màu sắc của mỗi pixel ảnh đƣợc tính toán bằng cách sử
dụng giá trị tƣơng ứng của X ánh xạ tới một giá trị chỉ số của map. Giá trị 1 chỉ ra
hàng đầu tiên, giá trị 2 chỉ ra hàng thứ hai trong bản đồ màu…
Một bản đồ màu thƣờng đƣợc chứa cùng với ảnh chỉ số và đƣợc tự động nạp
cùng với ảnh khi sử dụng hàm imread để đọc ảnh. Tuy nhiên, ta không bị giới hạn
khi sử dụng bản đồ màu mặc định, ta có thể sử dụng bất kì bản đồ màu nào.
b) Ảnh cường độ (Intensity Images)

Một ảnh cƣờng độ là một ma trận dữ liệu ảnh mà giá trị của nó đại diện cho
cƣờng độ trong một số vùng nào đó của ảnh. Matlab chứa một ảnh cƣờng độ nhƣ
một ma trận đơn, với mỗi phần tử của ma trận tƣơng ứng với một pixel của ảnh. Ma
trận có thể thuộc lớp double, uint8 hay uint16. Trong khi ảnh cƣờng độ hiếm khi
13


đƣợc lƣu với bản đồ màu, MATLAB sử dụng bản đồ màu để hiển thị chúng.
Những phần tử trong ma trận cƣờng độ đại diện cho các cƣờng độ khác nhau
hoặc độ xám. Những điểm có cƣờng độ bằng 0 thƣờng đƣợc đại diện bằng màu đen
và cƣờng độ 1,255 hoặc 65535 thƣờng đại diện cho cƣờng độ cao nhất hay màu
trắng.
c) Ảnh nhị phân (Binary Images)

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

Một ảnh RGB - thƣờng đƣợc gọi là true-color, đƣợc lƣu trữ trong MATLAB

dƣới dạng một mảng dữ liệu có kích thƣớc 3 chiều mxnx3 định nghĩa các giá trị
màu red, green và blue cho mỗi pixel riêng biệt. Ảnh RGB không sử dụng palette.
Màu của mỗi pixel đƣợc quyết định bởi sự kết hợp giữa các giá trị R, G, B (Red,
Green, Blue) đƣợc lƣu trữ trong một mặt phẳng màu tại vị trí của pixel. Định dạng
file đồ hoạ lƣu trữ ảnh RGB giống nhƣ một ảnh 24 bits trong đó R, G, B chiếm
tƣơng ứng 8 bit một. Điều này cho phép nhận đƣợc 16 triệu màu khác nhau.
Một mảng RGB có thể thuộc lớp double, uint8 hoặc uint16. Trong một mảng
RGB thuộc lớp double, mỗi thành phần màu có giá trị giữa 0 và 1. Một pixel mà
thành phần màu của nó là (0, 0, 0) đƣợc hiển thị với màu đen và một pixel mà thành
phần màu là (1, 1, 1) đƣợc hiển thị với màu trắng. Ba thành phần màu của mỗi
pixel đƣợc lƣu trữ cùng với chiều thứ 3 của mảng dữ liệu. Chẳng hạn, giá trị màu R,
G, B của pixel (10, 5) đƣợc lƣu trữ trong RGB(10, 5, 1), RGB(10, 5, 2) và RGB(10,
5, 3) tƣơng ứng.
Để tính toán màu sắc của pixel tại hàng 2 và cột 3 chẳng hạn, ta nhìn vào bộ
ba giá trị đƣợc lƣu trữ trong (2, 3, 1:3). Giả sử (2, 3, 1) chứa giá trị 0.5176; (2, 3,
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).
1.4. Toolbox bắt ảnh và xử lý ảnh
1.4.1. Nhiệm vụ của Toolbo
Image Acquisition Toolbox và Image processing là tật hợp các hàm có nhiệm
14


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 Toolbo
Việc thu nhập cơ bản với Toolbox đƣợc thực hiện qua các bƣớc sau:
-

ƣớc :
 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.
 Khởi động MATLAB.

-

ƣớc
 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.
Chỉ định thiết bị: Tuỳ vào loại thiết bị (adaptor name), mỗi thiết bị cùng loại gắn
vào PC đƣợc gắn đánh số ID, thiết bị thứ nhất có deviceID=1, thiết bị thứ 2 có
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]
AdaptorDllVersion: '3.3 (R2009a)'
AdaptorName: 'winvideo'


15


DeviceIDs: {[1]}
DeviceInfo: [1x1 struct]
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'
DeviceFileSupported: 0
DeviceName: 'USB PC Camera (SN9C120)'
DeviceID: 1
ObjectConstructor: 'videoinput('winvideo', 1)'
SupportedFormats: {1x11 cell}
ƣớ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.
>> vid = videoinput('winvideo',1)
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.
Status: Waiting for START.
0 frames acquired since starting.

0 frames available for GETDATA.
ƣớ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.

>> preview(vid)


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).
16


ƣớ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);
Imwrite(hinh,’d.jpg’);
-

ƣớ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:
Delete(vid)
Clear
Close(gcf)
1.4.3. Toolbo

ử lý ảnh ( Image Processing Toolbox)

a) Loại file dữ liệu của ảnh
- BMP ( Microsoft Windows Bitmap)
- HDF (Hierarchical Data Format).
- ICO ( Windows Icon Resources)
- JPG, JPEG( Joint Photographic Experts Group).
- PCX (Paintbrush).
- PNG(Porable Network Graphics).
- TIFF ( Tagged Image File Format).
- XWD ( X Window Dump).
b) Các hàm đọc và lưu ảnh
- Axis: vẽ trục.
- 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
17


pixel, do đó ta có thể xử lý hình nhƣ đối với ma trận, các phần tử ma trận có thể là
double (64 bit), uint 16 (16 bit), uint 8 (8 bit). Ảnh index đƣợc biễu diễn bởi hai ma
trận, một ma trận dữ liệu ảnh X và một ma trận màu (còn gọi là bản đồ màu). Ma
trận có thể là kiểu uint8, uint16, double. Ma trận màu là một ma trận kích thƣớc m x
3 gồm các thành phần thuộc kiểu double có giá trị trong khoảng [0 1]. Mỗi hàng của
ma trận xác định thành phần red, green, blue của một màu trong tổng m màu đƣợc
sử dụng trong ảnh. Gía trị của một phần tử trong ma trận dữ liệu ảnh cho biết màu
của điểm ảnh đó nằm ở hàng nào trong ma trận.

Hình 1.2. Biểu diễn ảnh index
c) Các hàm xử lý ảnh c bản trong Matlab
Đôi khi ảnh bị mờ, không nét, bị nhiễu cần phải xử lý hoặc cần phải tách một
chi tiết nào đó ra khỏi ảnh. Sau đây là một số hàm xử lý ảnh cho phép thực hiện các
công việc này một cách dễ dàng. Chú ý là các hàm này chỉ thực hiện độc lập, còn
muốn thực hiện thời gian thực cần phải dùng các ngôn ngữ lập trình nhƣ VB,
Delphi, ta cũng có thể biến đổi các hàm xử lý ảnh .m ra hàm .c để giảm bớt thời
gian lập trình, còn có một cách để xử lý thời gian thực là lập trình xử lý trong
MATLAB, sau đó dùng Toolbox Com Builder biến chƣơng trình thành COM
Object rồi ghép vào các ngôn ngữ lập trình.
d) Đổi màu và loại ảnh
- 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
18


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) Lọ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
- Imhist (X, map): vẽ histogram của ảnh chỉ số X theo bảng màu. Cƣờng độ

ảnh từ 0 (đen) đến 255 (trắng) đƣợc chia thành n khoảng, histogram là đồ thị cho
biết số pixel có cƣờng độ nằm trong 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
-

Imread: đọc ảnh.

-

Imwrite: ghi ảnh.

-

Imshow: 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
-

Cộng : X= A + B.
19


-

Trừ : X= A – B.

-

Nhân : X= A * B.

-

Chia : X = A/B lúc đó X*B = A
: X = A\B lúc đó A*X = B
: X=A./B chia các phần tử tƣơng ứng với nhau

-

Luỹ thừa : X = A^2.


-

Nghịch đảo : K = inv(A).

-

Định thức : d = det(A)

k) Điều kiện if, else, elseif
-

Cú pháp của if:
if <biểu thức điều kiện>

end.

- Nếu <biểu thức điều kiện> cho kết quả đúng thì phần lệnh trong thân của if

đƣợc thực hiện. Các phát biểu else và leseif cũng tƣơng tự.
l) Điều kiện switch
-

Cú pháp của switch nhƣ sau :
switch <biểu thức>
case n1 : <lệnh 1>
...............
case nn : <lệnh n>
otherwise : <lệnh n+1>
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 <biểu thức>

end.
1.5. 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
20


lệnh trong Matlab thông qua menu, nút nhấn, tƣơng tự nhƣ các ngôn ngữ Visual
Basic. Lập trình GUI đƣợc thực hiện nhờ công cụ GUIDE (GUI Development
Environnment) hoặc bằng cách soạn 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.3. Cửa số GUIDE
1.5.2. Cửa số GUIDE

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ẽ

21



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.

-

Axes: Vẽ hệ trục.

-

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, …
-


Grid and Rulers: dùng để cấu hình về lƣới trong giao diện vì nó sẽ coi giao

diện nhƣ một ma trận các ô vuông nhỏ, ta sẽ thay đổi giá trị này để cho các điều
khiển có thể thả ở đâu tùy ý cho đẹp.
-

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.

-

Các bạn save dƣới tên: “ TÊN”, khi đó đồng thời xuất hiện cửa sổ Editor và

đang mở file TÊN.m của bạn. Trong thƣ mục bạn save sẽ có 2 file là:
-

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.

22


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.

-

FontName: kiểu chữ.

-

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
- Quan trọng nhất đối với các component là callback, tức là hàm con mà file

áp dụng M sẽ gọi khi ta tác động vào component. Để soạn thảo callback ở cửa số
layout nhấp chuột phải vào component muốn soạn thảo sau đó chọn View callbacks
-> callback ta sẽ vào màn hình soạn thảo callback cho component đó. Sau khi soạn
thảo xong ta lƣu, lập tức Matlab sẽ lƣu thành hai file có cùng tên nhƣng khác nhau
về phần mở rộng:
23


- 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ó.
Khái quát đƣợc khái niệm, các ví dụ cơ bản về ảnh số và cách thực hiện ảnh số
trên MATLAB thông qua các hàm.

24


Chƣơng 2
PHƢƠNG PHÁP XỬ LÝ VÀ NHẬN DẠNG KHUÔN MẶT
Hơn một thập kỷ qua có rất nhiều công trình nghiên cứu về bài toán xác định

khuôn mặt ngƣời từ ảnh đen trắng, xám đến ảnh màu nhƣ ngày hôm nay. Các
nghiên cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có một khuôn mặt ngƣời nhìn thẳng
vào thiết bị thu hình và đầu ở tƣ thế thẳng đứng trong ảnh đen trắng. Cho đến ngày
hôm nay bài toán mở rộng cho ảnh màu, có nhiều khuôn mặt trong cùng một ảnh,
có nhiều tƣ thế thay đổi trong ảnh. Không những vậy mà còn mở rộng cả phạm vi từ
môi trƣờng xung quanh khá đơn giản (trong phòng thí nghiệm) cho đến môi trƣờng
xung quanh rất phức tạp (nhƣ trong tự nhiên) nhằm đáp ứng nhu cầu thật sự và rất
nhiều của con ngƣời.
2.1. Định nghĩa bài toán á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 để xác
định các vị trí và các kích thƣớc của các khuôn mặt ngƣời trong các ảnh bất kỳ (ảnh
kỹ thuật số). Kỹ thuật này nhận biết các đặc trƣng của khuôn mặt và bỏ qua những
thứ khác nhƣ: tòa nhà, cây cối, cơ thể,…
2.2. Ứng dụng của phƣơng pháp á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: giúp những ngƣời bị tật hoặc
khiếm khuyết có thể trao đổi. Những ngƣời dùng ngôn ngữ tay có thể giao tiếp với
những ngƣời bình thƣờng.
 Nhận dạng ngƣời A có phải là tội phạm truy nã hay không? Giúp cơ quan
an ninh quản lý tốt con ngƣời. Công việc nhận dạng có thể ở trong môi trƣờng bình
thƣờng cũng nhƣ trong bóng tối (sử dụng camera hồng ngoại).
 Hệ thống quan sát, theo dõi và bảo vệ. Các hệ thống camera sẽ xác định
đâu là con ngƣời và theo dõi con ngƣời đó xem họ có vi phạm gì không, ví dụ xâm
phạm khu vực không đƣợc vào,….
 Lƣu trữ (rút tiền ATM, để biết ai rút tiền vào thời điểm đó), hiện nay có
tình trạng những ngƣời bị ngƣời khác lấy mất th ATM hay mất mã số PIN và
những ngƣời ăn cắp này đi rút tiền, hoặc những ngƣời chủ th đi rút tiền nhƣng lại
25



×