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
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:
-
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
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.
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
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)
- 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)
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
ả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'
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.
- 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.
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.
-
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
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.
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.
-
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