Các bước thực hiện chương trình

Một phần của tài liệu DÒ TÌM VÀ CẮT ẢNH MẶT NGƯỜI DÙNG PCA (Trang 81)

Khi chạy chương trình “Dò tìm và cắt ảnh mặt người dùng PCA” ta thao tác theo trình tự các bước sau:

Bước 1: Đưa ảnh vào để xử lý

Ở bước này chúng ta có hai cách để chọn ảnh nguồn để xử lý là từ một nguồn có sẵn và từ một nguồn đưa ảnh trực tiếp ở ngoài vào thông qua webcam.

- Cách thứ nhất: Đưa ảnh vào từ một nguồn có sẵn. Ta chọn nút chọn ảnh để tìm nguồn ảnh gốc đưa ảnh vào xử lý cụ thể là tập ảnh trong thư mục ảnh test. Sau khi chọn ảnh cần kiểm tra ta chọn nút open để chọn ảnh đã chọn.

- Cách thứ hai: Đưa ảnh trực tiếp thu từ ngoài vào nhờ thiết bị thu hình đó là webcam. Ta nhấn nút camera để mở chương trình chạy webcam, sau khi đã điều chỉnh khoảng cách và kích thước ảnh đầu vào hợp lý ta nhấn vào nút chụp ảnh để đưa ảnh chụp vào xử lý các công đoạn tiếp theo.

Bước 2: Dò tìm ảnh mặt người.

Để thực hiện bước này ta cần điều kiện là phải có ảnh kiểm tra mới chạy được chương trình dò tìm ảnh mặt người. Khi đã có đủ điều kiện ta nhấn nút nhận dạng thì chương trình sẽ bắt đầu thực hiện: lấy ảnh chọn làm ảnh ban đầu đưa vào chương trình

nhận dạng ảnh tìm và xác định vị trí của những khuôn mặt có trong tấm ảnh. Đây là đoạn chương trình chính của bài toán, đoạn chương trình sử dụng thuật toán PCA và là giai đoạn chiếm thời gian nhiều nhất của bài toán “Dò tìm và cắt ảnh mặt người dùng PCA”.

Bước 3: Cắt ảnh mặt người.

Là quá trình tách những khuôn mặt có trong tấm ảnh đầu vào chia thành những tấm ảnh nhỏ riêng lẻđể giúp ta có thể lưu lại từng khuôn mặt một cách dể dàng hay để dùng những tấm ảnh đó vào những công việc khác một cách nhanh chóng và chính xác hơn.

Bước 4: Lưu ảnh khuôn mặt.

Sau tất cả các quá trình thực hiện phương pháp tìm và tách ảnh mặt người thì cuối cùng kết quả cũng đạt được dù không chuẩn xác nhưng mục đích cuối cùng là ta phải lưu trữ lại những gì mà ta đã làm được, khi ta nhấn vào nút save thì sẽ hiện lên thư mục để lưu ảnh và thực hiện thao tác lưu ảnh.

Bước 5: Nhận dạng khuôn mặt.

Quá trình nhận dạng khuôn mặt cũng được thực hiện dựa vào thuật toán PCA, sau khi cắt ảnh mặt người, từ ảnh đó ta đặt làm ảnh test, ảnh test này sẽ được xử lý bằng cách xác định khoảng cách của ảnh test đến ảnh cơ sở dữ liệu. Nếu ảnh test có nằm trong cơ sở dữ liệu ảnh, thì ảnh test sẽ được nhận dạng bằng một bức ảnh khác nằm trong cơ sở dữ liệu ảnh, còn nếu ảnh test không nằm trong cơ sở dữ liệu ảnh, thì sẽ không nhận dạng được.

4.1.3 Lưu đồ giải thuật 4.1.3.1 Lưu đồ giải thuật chính Hình 4.4 Lưu đồ giải thuật chính 4.1.3.2 Lưu đồ giải thuật chi tiết a) Lưu đồ giải thuật chọn ảnh Chọn ảnh có hai cách: • Cách 1: Chọn ảnh tĩnh (ảnh có sẵn). • Cách 2: Chọn ảnh động (nhận ảnh từ webcam). Chọn ảnh Chương trình dò tìm và cắt ảnh mặt người Chương trình nhận dạng ảnh mặt người Bắt đầu Kết thúc

Hình 4.5 Lưu đồ giải thuật chọn ảnh Chọn ảnh động Bắt đầu Chạy chương trình mở webcam Chọn và chụp ảnh Chọn thư mục chứa ảnh cần kiểm tra Chọn ảnh Hiển thịảnh đã chọn Kết thúc Chọn ảnh tĩnh

b) Lưu đồ giải thuật chương trình dò tìm ảnh mặt người

Hình 4.6 Lưu đồ giải thuật chương trình dò tìm ảnh mặt người

S Bắt đầu

Kết thúc Đánh dấu

Tập ảnh huấn luyện Face và Nface Ảnh dò tìm Dò tìm ảnh mặt người bằng PCA Mặt người Đóng khung Tách mặt Lưu Đ Không đánh dấu Không đóng khung

c) Lưu đồ giải thuật chương trình nhận dạng

Hình 4.7 Lưu đồ giải thuật chương trình nhận dạng

Thuật toán nhận dạng PCA

Ảnh mẫu để so sánh nhận dạng Ảnh có trong tập dữliệu Truy xuất thông tin ảnh nhận dạng Hiển thị thông tin vàảnh nhận dạng Chọn ảnh nhận dạng

Dò tìm thông tin từ file Excel “hoso1.xls”

Không có Bắt đầu

d) Lưu đồ thuật toán PCA

Hình 4.8 Lưu đồ giải thuật PCA

Thuật toán PCA

Tạo cơ sở dữ liệu Chuyển ảnh thành vector Tạo ma trận ảnh Tính giá trị ảnh trung bình Tính các giá trị Eigenface Xác định Eigenface của ảnh chọn ban đầu Bắt đầu Kết thúc

4.1.4 Kết quả mô phỏng

a) Giao diện của chương trình

Hình 4.9 Giao diện chính

Hình 4.11 Giao diện chương trình 2 (ảnh động)

b) Giao diện của kết quả dò tìm và nhận dạng

Ảnh 1 khuôn mặt:

Hình 4.13 Giao diện kết quả chương trình 2 (ảnh động)với 1 khuôn mặt

Ảnh 2 khuôn mặt:

Hình 4.14 Giao diện kết quả chương trình 1 (ảnh tĩnh) với 2 khuôn mặt

Hình 4.15 Giao diện kết quả chương trình 1 (ảnh tĩnh) với 4 khuôn mặt nữ

Hình 4.16 Giao diện kết quả chương trình 1 (ảnh tĩnh) với 4 khuôn mặt nam

4.1.5 Tốc độ thực hiện

Tốc độ thực hiện chương trình thể hiện thời gian mà chương trình tính toán trong quá trình xử lý, tùy theo giá trị kích thước ảnh đưa vào lớn hay nhỏ mà tốc độ

thực hiện nhanh hay chậm. Nếu ảnh đầu vào có kích thước nhỏ, quá trình xử lý của chương trình sẽ thực hiện nhanh chóng, nếu ảnh đầu vào có kích thước lớn, quá trình xử lý của chương trình sẽ thực hiện chậm, mặc khác tốc độ thực hiện cũng tùy thuộc vào tốc độ xử lý của máy tính, vì vậy, yêu cầu cần có một cấu hình thích hợp để thực hiện chương trình một cách nhanh chóng, tạo điều kiện thuận lợi cho việc dò tìm và nhận dạng khuôn mặt.

Tốc độ thực hiện là quá trình đo đạc thời gian xử lý chương trình, đó là chương trình dò tìm ảnh mặt người và chương trình nhận dạng ảnh mặt người.

4.2 Nhận xét kết quảđạt được

Qua quá trình tìm hiểu và nghiên cứu, chúng em đã xây dựng được một cái nhìn khái quát về bài toán nhận dạng, đặc biệt là nhận dạng mặt người. Đồng thời, nắm bắt được một số vấn đề về xử lý ảnh: các dạng ảnh, tính chất ảnh, không gian, tọa độảnh, ma trận ảnh,… và vận dụng nó kết hợp với các công cụ xử lý ảnh trong Matlab (Image Processing Toolbox).

Từ kết quả thu được, ta nhận thấy: ta có thể dò tìm được 1 khuôn mặt, 2 khuôn mặt, 3 khuôn mặt và tối đa là 4 khuôn mặt trong 1 bức ảnh, nguyên nhân do sự hạn chế về kích thước của khuôn mặt và bức ảnh, và những khuôn mặt này có thể có hoặc không có trong tập ảnh huấn luyện, đây chính là ưu điểm của bài toán. Tuy chưa có sự chuẩn xác trong quá trình dò tìm và nhận dạng mặt người, nhưng bài toán phần nào đã được giải quyết. Trong quá trình thao tác, có thể có những ưu và khuyết điểm, nhưng bài luận văn này của chúng em cũng đã hoàn thành tương đối có thể chấp nhận được, sau đây là một số ưu điểm và khuyết điểm của bài toán cũng như trong quá trình thực hiện luận văn.

¾ Ưu điểm

- Ta có thể nhận dạng được một bức ảnh với 1 khuôn mặt, 2 khuôn mặt, 3 khuôn mặt và 4 khuôn mặt.

- Đối với thuật toán PCA, đây là một thuật toán được sử dụng trong rất nhiều lĩnh vực, đối với lĩnh vực chuyên ngành điện tử, thuật toán được vận dụng trong Matlab với nhiều công cụ xử lý, tạo điều kiện thuận lợi cho việc thực hiện đề tài.

¾ Khuyết điểm

- Nội dung của bài toán là dò tìm và nhận dạng mặt người, nên sử dụng rất nhiều khuôn mặt của nhiều đối tượng với các trạng thái khác nhau, nên khuyết điểm của bài toán này là cần một số lượng lớn nguồn tài nguyên của khuôn mặt của nhiều đối tượng, từ đó mới có thể tạo ra được một khối lượng cơ sở dữ liệu phong phú. Cho nên có những trường hợp chúng ta sẽ không dò tìm được một vài khuôn mặt trong bức ảnh, vì không tìm được những nét đặc trưng cơ bản của khuôn mặt.

- Chương trình được thực hiện nhờ vào hoạt động của máy tính, nên cần có một cấu hình cần thiết để xử lý và tính toán, từđó mới có thể áp dụng trong công nghệ hiện đại, điều này ảnh hưởng đến tốc độ thực hiện của chương trình. Ví dụ như nhận dạng khuôn mặt người qua một thiết bị quan sát, nếu tốc độ xử lý nhanh ta có thể có một kết quả mỹ mãn và hài lòng hơn.

- Về nội dung của bài toán, việc chọn lọc đưa ảnh vào để xử lý, thì có hai cách: sử dụng một ảnh tĩnh có sẵn và sử dụng nguồn dữ liệu đưa vào từ webcam. Đối với webcam, hay một thiết bị thu hình nào, thì điều đầu tiên là cần phải có độ phân giải tốt đểảnh đưa vào rõ nét, như vậy khả năng xử lý sẽ cao hơn và chính xác hơn.

- Đồng thời khó khăn về cách xác định khoảng cách và tọa độ khuôn mặt người trong quá trình đưa ảnh vào xử lý, cụ thể là kích thước ảnh mặt người so với kích thước của ảnh huấn luyện (quá lớn hoặc quá bé). Vì phương pháp nhận dạng PCA là phương pháp dò quét ảnh nhận dạng theo khối cho nên vấn đề khoảng cách và kích thước của khuôn mặt ảnh đưa vào so với kích thước của tập ảnh huấn luyện (tập ảnh face) là rất quan trọng. Cho nên thuật toán thường gặp khó khăn nhiều về vấn đề này.

- Khó khăn trong việc xử lý dò tìm và nhận dạng, điều kiện ảnh đưa vào xử lý phải phù hợp: độ sáng, góc lệch, cảm xúc, biến dạng,… Chính vì điều này, đôi khi có những khuôn mặt mà không đủ điều kiện về ánh sáng (ảnh bị tối) hoặc khuôn mặt bị sai khác quá nhiều so với ảnh dữ liệu (méo dạng, khuôn mặt nhăn nhó, nhiều cảm xúc,…)

Như vậy, dựa vào xác suất thống kê trong quá trình làm việc, có một vài trường ảnh không nhận dạng được, với nhiều lí do khách quan.

Một số trường hợp bị lỗi, không dò tìm được khuôn mặt, do nhiều nguyên nhân khác nhau:

- Ảnh có nhiều điểm đặc trưng khác: râu quai nón…

- Ảnh không phải là ảnh ảnh thật: tranh vẽ…, làm cho độ sắc nét của ảnh không cao.

Chương 5

KẾT LUẬN

5.1 Kết luận

Trong quá trình thực hiện đồ án tốt nghiệp gặp rất nhiều khó khăn và thử thách,

đòi hỏi sự cố gắng và tập trung cao độ trong quá trình thực hiện, nhưng chúng em cũng

đã cố gắng hoàn thành đúng tiến độ làm việc theo yêu cầu đề ra, tuy nhiên bài luận này cũng chỉ đạt được một số kết quả tương đối, và còn nhiều sai sót trong vấn đề dò tìm cũng như nhận dạng mặt người.

Kết quả đạt được của chúng em là đã dò tìm và nhận dạng được một số ảnh đã có trong cơ sở dữ liệu và một sốảnh nằm ngoài cơ sở dữ liệu, đó là những bức ảnh có

độ sắc nét và tương phản cao, còn những ảnh không có độ sắc nét cao thì vẫn chưa xử

lý được, đó chính là khuyết điểm của đề tài cũng như thuật toán PCA. Đối với ảnh

động, việc xử lý ảnh đưa vào đã gây ra rất nhiều khó khăn, nó không chỉđòi hỏi sự sắc nét của bức ảnh, mà còn yêu cầu về khoảng cách…

5.2 Hướng phát triển đề tài

- Nhận diện mặt người qua tập dữ liệu có sẵn từ camera. - Nhận diện danh tính của người phạm tội qua ảnh chụp.

- Có thể kết hợp với nhiều thuật toán khác như: ICA, Neural,… để xử lý một cách chính xác hơn.

- Dò tìm và nhận dạng đối tượng vi phạm kỷ luật từ xa qua một thiết bị quan sát.

- Bảo mật hệ thống bằng cách nhận dạng khuôn mặt khi một hay nhiều đối tượng muốn ra vào một công ty, xí nghiệp, hay một cơ quan nào đó.

- Quản lý thời gian làm việc của các nhân viên của một xí nghiệp mà chỉ cần một camera quan sát.

Tài Liu Tham Kho

[1]. Ngô Hoàng Khắc Tiến, Trần Xuân Bách, Đồ án tốt nghiệp Dò tìm ảnh mặt người dùng PCA, Khoa Công nghệ điện tử, trường Đại học Công Nghiệp TP HCM, 2009.

[2]. Lương Mạnh Bá, Nguyễn Thanh Thủy, Nhập Môn Xử lý ảnh số, Nxb Khoa học và Kỹ thuật, 2002.

[3]. Võ Đức Khánh, Hoàng Văn Kiếm. Giáo trình xử lý ảnh số, Nhà xuất bản Đại học Quốc gia Thành phố Hồ Chi Minh, 2003.

[4]. Phạm Thế Bảo, Tổng quan các phương pháp xác định khuôn mặt người, Tạp chí bưu chính viễn thông.

[5]. Ngô Quốc Tạo, Ngô Phương Đông, Nguyễn Thanh Hòa, Phạm Việt Bình (2003), Báo cáo “Nhận dạng mặt người trong môi trường độ sáng không đồng nhất”, Hội thảo Công nghệ thông tin quốc gia lần thứ VIII, Thái Nguyên, 29- 31/8/2003.

[6]. Nguyễn Hoài Sơn, Giáo trình Matlab căn bản, Khoa Xây dựng và Cơ học ứng dụng, trường ĐHSPKT.

[7]. Burce A. Draper, Kyungim Baek, Marian Stewart Bartlett, J. Ross Beveridge,

“Recognizing Faces with PCA and ICA”.

[8]. Stan Z. Li , Anil K. Jain, “Handbook of Face Recognition”, 2006.

[9]. IEEE Computer Society, “Automatic face and gesture recognition”, 2004 [10]. Các Wedsite:

http://www.mathworks.com/matlabcentral/fileexchange/?term=Variable http://www.picvietnam.com/forum//showthread.php?t=387

www. diendandientu. com www. dientuvienthong. net

GVHD: Ths. Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu

PHỤ LỤC

************ Chương trình chính***************

function varargout = luanvantotnghiep(varargin)

% LUANVANTOTNGHIEP M-file for luanvantotnghiep.fig

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @luanvantotnghiep_OpeningFcn, ... 'gui_OutputFcn', @luanvantotnghiep_OutputFcn, ... 'gui_LayoutFcn', [] , ...

'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

% End initialization code - DO NOT EDIT

% Executes just before luanvantotnghiep is made visible.

function luanvantotnghiep_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

function varargout = luanvantotnghiep_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

function THOAT_Callback(hObject, eventdata, handles) close1;

% --- Executes on button press in pushbutton6.

function pushbutton6_Callback(hObject, eventdata, handles) chuongtrinh1;

delete(handles.figure1);

% --- Executes during object creation, after setting all properties.

function axes1_CreateFcn(hObject, eventdata, handles) imshow('anhnen.jpg');

% --- Executes during object creation, after setting all properties.

function axes3_CreateFcn(hObject, eventdata, handles) imshow('vo.jpg');

% --- Executes during object creation, after setting all properties.

GVHD: Ths. Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu

imshow('logo.bmp');

****************************************************

**************Chương trình cắt ảnh tĩnh*********

function varargout = chuongtrinh1(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @chuongtrinh1_OpeningFcn, ... 'gui_OutputFcn', @chuongtrinh1_OutputFcn, ... 'gui_LayoutFcn', [] , ...

'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

% --- Executes just before chuongtrinh1 is made visible.

function chuongtrinh1_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% --- Outputs from this function are returned to the command line.

function varargout = chuongtrinh1_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

% --- Executes on button press in CHONANH.

function CHONANH_Callback(hObject, eventdata, handles) xoaanh;

chonanh;

% --- Executes on button press in TACHMAT.

function TACHMAT_Callback(hObject, eventdata, handles) axes(handles.axes4); imshow('anhluu/anh1.jpg'); axes(handles.axes5); imshow('anhluu/anh2.jpg'); axes(handles.axes6); imshow('anhluu/anh3.jpg'); axes(handles.axes7); imshow('anhluu/anh4.jpg');

% --- Executes on button press in Timmat.

function Timmat_Callback(hObject, eventdata, handles)

tic % tic là hàm đếm thời gian bắt đầu đếm

thuchien; % gọi hàm thuchien.m

axes(handles.axes2);

imshow('anhluu/anh_kq.jpg'); %hiện ảnh kết quả

GVHD: Ths. Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu

% --- Executes on button press in NHANDANG.

function NHANDANG_Callback(hObject, eventdata, handles) tic

nhandang;

set(handles.times,'string',toc);

% --- Executes on button press in save1.

function save1_Callback(hObject, eventdata, handles) s=imread('anhluu/anh1.jpg');

save1;

% --- Executes on button press in save2.

function save2_Callback(hObject, eventdata, handles) s=imread('anhluu/anh2.jpg');

save1;

% --- Executes on button press in save3.

function save3_Callback(hObject, eventdata, handles) s=imread('anhluu/anh3.jpg');

save1;

% --- Executes on button press in save4.

function save4_Callback(hObject, eventdata, handles) s=imread('anhluu/anh4.jpg');

save1;

% --- Executes on button press in chon1.

Một phần của tài liệu DÒ TÌM VÀ CẮT ẢNH MẶT NGƯỜI DÙNG PCA (Trang 81)

Tải bản đầy đủ (PDF)

(115 trang)