chuyen de 2

22
LOGO GVHD: LÊ MẠNH THẮNG NHÓM 3: PHẠM MINH THÀNH PHẠM ANH THANH NGUYỄN DUY HẬU BÁO CÁO MÔN HỌC CHUYÊN ĐỀ II ĐỀ TÀI: TÁCH MẶT NGƯỜI DÙNG CÔNG CỤ IMAGE PROCESSSING TOOLBOX TRONG MATLAB

Upload: independent

Post on 24-Feb-2023

2 views

Category:

Documents


0 download

TRANSCRIPT

LOGO

GVHD: LÊ MẠNH THẮNG NHÓM 3: PHẠM MINH THÀNH

PHẠM ANH THANH

NGUYỄN DUY HẬU

BÁO CÁO MÔN HỌCCHUYÊN ĐỀ II

ĐỀ TÀI:TÁCH MẶT NGƯỜI DÙNG CÔNG

CỤ IMAGE PROCESSSING TOOLBOX TRONG MATLAB

ĐẶT VẤN ĐỀ

Xử lý ảnh là một lĩnh vực nghiên cứu rộng và có rất nhiều ứng dụng trong các mặt của đời sống xã hội. Nhận dạng khuôn mặt là một trong những khía cạnh của xử lý ảnh. Kỹ thuật này cho phép chúng ta nhận diện một khuôn mặt người từ ảnh tĩnh hay từ video bằng cách so sánh với kho dữ liệu có sẵn trong hệ thống. Nhận dạng khuôn mặt được ứng dụng trong lĩnh vực phòng chống tội nghiên cứu một phương pháp nhận dạng khuôn mặt dùng thuật toán phân tích thành phần cơ bản. Trong đồ án này sẽ tìm hiểu về một số vấn đề của bài toán nhận dạng và phát hiện khuôn mặt ở chuyên đề này chúng ta sẽ nói đến mảng trích đăc trưng và tách khuôn mặt người bằng công cụ Image Processing toolbox trong Matlab R2009a, các kết quả của chương trình cho thấy tính khả thi của việc áp dụng chương trình vào trong thực tế.

MỤC TIÊU CỦA ĐỀ TÀI

Mục tiêu của đề tài “ Tách mặt người dùng Matlab” là thực hiện chương trình chụp hình từ WC, lưu lại, sau đó xử lý đưa về hình cắt mặt người trong ảnh vừa chụp

Để tiện theo dõi nhóm em xin trình bày đề tài theo ba phần như sau:

Phần đầu là giới thiệu về thuật toán PCA là ứng toán được sử dụng rất nhiều trong viễn thông. Và đề tài này sử dụng thuật toán PCA.

Phần tiếp theo là giới thiệu các lệnh được sử dụng trong chương trình.

Phần cuối cùng là giới thiệu giao diện chương trình và code nguồn.

CÁC THUẬT TOÁN NHẬN DẠNG KHUÔN MẶT

1.1 Đị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 để 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…..

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

Có nhiều ứng dụng đã được và đang thiết kế, nhóm em chỉ xin đưa ra một số loại ứng dụng sau:

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ững người bị bại liệt thông qua một số ký hiệu nháy mắt có thể biểu lộ những gì họ muốn, .. Đó là các bài toán điệu bộ của bàn tay (hand gesture), điệu bộ khuôn mặt.

Hệ thống quan sát, theo dõi và bảo vệ.

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

An ninh sân bay, xuất nhập cảnh.

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

Có nhiều nghiên cứu tìm phương pháp xác định khuôn mặt người, từ ảnh xám đến ngày nay là ảnh màu. Em sẽ trình bày một cách tổng quát nhất những hướng giải quyết chính cho bài toán, từ những hướng chính này nhiều tác giả thay đổi một số ý nhỏ bên trong để có kết quả mới.

1.4 Nhận dạng ảnh dựa trên PCA

Khuôn mặt con người có rất nhiều nét để nhận biết, nếu như ta gặp lại một người bạn sau một thời gian dài, ta có thể nhận ra ngay người đó từ những chi tiết cụ thể trên mặt có thể thay đổi như da, mái tóc . Ta nhận ra không phải vì nhớ đôi mắt , hay mũi hay môi hay tóc , lông mày người đó mà ta nhận ra vì nhớ diện mạo của người đó . Tức là trên khuôn mặt tồn tại một nét tổng thể nào đó để có thể nhận diện , thuật toán của ta bắt đầu từ ý tưởng này.

Phân tích thành phần chính (Principal Component Analysis ) gọi tắt là PCA là thuật toán nhận dạng ảnh dựa trên những nét tổng thể của khuôn mặt .

2. CÁC LỆNH XỬ LÝ ẢNH TRONG MATLAB.

Các hàm hiển thị ảnh trong Matlab Để hiển thị ảnh, Matlab cung cấp 2 hàm cơ bản là image và imagesc.

Ngoài ra, trong Image Processing Toolbox cũng có hai hàm hiển thị khác là imview và imshow

Hàm image(x,y,c) hiển thị hình ảnh biểu diễn bởi ma trận c kích thước mxn lên hệ trục tọa độ. x,y là các véctơ xác định vị trí của các điểm c(1,1) và c(m,n).

Hàm imagesc có chức năng tương tự hàm image, ngoại trừ việc dữ liệu ảnh sẽ được co giãn để sử dụng toàn bộ bản đồ màu hiện hành.

Hàm imview cho phép hiển thị ảnh trên của sổ riêng nền Java, gọi là Image Viewer.

Hàm imshow cho phép hiển thị ảnh trên một Figure và tự động thiết lập giá trị các đối tượng image, axes, figure để hiển thị hình ảnh.

3.SƠ ĐỒ GIẢI THUẬT VÀ CODE CỦA CHƯƠNG TRÌNH

BEGIN

MỞ VIDEO

CHỤP VÀ LƯU ẢNH

ĐỌC ẢNH VÀ TIỀN XỬ LÝ

TÁCH MÀU DA

LỌC NHIỄU

ĐÓNG KHUNG MẶT NGƯỜI

CẮT ẢNH VÀ HIỂN THỊ

END

vid= videoinput('winvideo',1);preview(vid);pause(5);hi= getsnapshot(vid);imwrite(hi,'D:\1.jpg');a=imread('D:\1.jpg ');imshow(a);srgb2lab = makecform('srgb2lab');lab2srgb = makecform('lab2srgb');a_lab = applycform(a, srgb2lab); max_luminosity = 100;L = a_lab(:,:,1)/max_luminosity;

ĐOẠN CODE XỬ LÝ ẢNH TRONG MATLAB

ĐOẠN CODE XỬ LÝ ẢNH TRONG MATLAB

a_imadjust = applycform(a_imadjust, lab2srgb);

a_imadjust = a_lab;a_imadjust(:,:,1) = imadjust(L)*max_luminosity;

a_histeq = a_lab;a_histeq(:,:,1) = histeq(L)*max_luminosity;

a_histeq = applycform(a_histeq, lab2srgb);

sz=size(a_histeq);for i=1:sz(1)for j=1:sz(2)

www.themegallery.com

ĐOẠN CODE XỬ LÝ ẢNH TRONG MATLAB

www.themegallery.com

if a(i,j,1)>60 & a(i,j,2)<130 & a(i,j,3)<160 & a(i,j,1)<190 & a(i,j,2)>80 & a(i,j,3)>60white (i,j)=1;green(i,j)=0;blue(i,j)=0;red(i,j)=0;else white (i,j)=0;green(i,j)=0;blue(i,j)=0;red(i,j)=0;

endendendSE = strel('rectangle',[28 25]);BW2 = imerode(white,SE);BW3 = imdilate(BW2,SE);Ifill = imfill(BW3,'holes');[Label,Total]=bwlabel(Ifill,8); Sdata=regionprops(Label,'BoundingBox'); for i=1:Total Img=imcrop(a,Sdata(i).BoundingBox);

imwrite(Img,'b.jpg'); b=imread('b.jpg');[m n p] =size(b); d=imcrop(b, [0 0 n 3/5*m]);

figure, imshow(d); end

ĐOẠN CODE XỬ LÝ ẢNH TRONG MATLAB

Kết nối WC với matlab, chụp ảnh và lưu lại

vid= videoinput('winvideo',1); preview(vid); pause(5); hi= getsnapshot(vid); imwrite(hi,'D:\1.jpg');

GiẢI THÍCH CODE

ĐỌC ẢNH VÀ XỬ LÝ ẢNH:

a=imread('D:\1.jpg ');imshow(a);srgb2lab = makecform('srgb2lab');lab2srgb = makecform('lab2srgb');a_lab = applycform(a, srgb2lab); max_luminosity = 100;L = a_lab(:,:,1)/max_luminosity;a_imadjust = a_lab;

www.themegallery.com

ĐỌC ẢNH VÀ XỬ LÝ ẢNH:

a_imadjust(:,:,1) = imadjust(L)*max_luminosity;

a_imadjust = applycform(a_imadjust, lab2srgb);

a_histeq = a_lab;a_histeq(:,:,1) = histeq(L)*max_luminosity;

a_histeq = applycform(a_histeq, lab2srgb);

www.themegallery.com

TÁCH MẶT NGƯỜI RA TỪ ẢNH VỪA CHỤP

sz=size(a_histeq);for i=1:sz(1)for j=1:sz(2)if a(i,j,1)>60 & a(i,j,2)<130 & a(i,j,3)<160 & a(i,j,1)<190 & a(i,j,2)>80 & a(i,j,3)>60

white (i,j)=1;green(i,j)=0;blue(i,j)=0;red(i,j)=0;else white (i,j)=0;green(i,j)=0;blue(i,j)=0;red(i,j)=0;endendend

LỌC NHIỄUSE = strel('rectangle',[28 25]);% tạo ra hình chữ nhật

BW2 = imerode(white,SE); % làm xói mònBW3 = imdilate(BW2,SE);% làm giãn nởIfill = imfill(BW3,'holes');% lấp các lỗ hỗng trong ảnh

ĐÓNG KHUNG TẤT CẢ MẶT NGƯỜI TRONG ẢNH VỪA LỌC TỪ ĐÓ CẮT VÀ HiỂN THỊ LÊN TẤT CẢ MẶT NGƯỜI CÓ TRONG HÌNH CHỤP.

[Label,Total]=bwlabel(Ifill,8);tạo nhãn trong ảnh, trả về số nhãn tạo đc

Sdata=regionprops(Label,'BoundingBox'); đóng khung nhãn

for i=1:Total Img=imcrop(a,Sdata(i).BoundingBox); cắt ảnh

imwrite(Img,' D:\ b.jpg'); b=imread(' D:\ b.jpg');[m n p] =size(b); d=imcrop(b, [0 0 n 4/6*m]); figure, imshow(d); end

KẾT QUẢ ĐẠT ĐƯỢC VÀ HẠN CHẾ

Kết quả đạt được: - Đã tìm hiểu được tổng quan về Matlab công cụ image processing toolbox

- Ứng dụng công cụ image processing toolbox để hoàn thành được đề tài giao viên đưa ra là tách được mặt người từ hình chụp từ WC.

Hạn chế: - Thời gian làm đề tài ngắn nên chưa tìm hiểu sâu về công cụ image processing toolbox mà chỉ tìm hiểu tổng quan ở những hàm cơ bản.

- Chỉ mới tìm hiểu 1 phương pháp nhận dạng mặt người qua màu da nên kết quả chưa được cao.

- Quá trình nhận dạng còn bị ảnh hưởng bởi độ sáng, màu áo nên bị nhiễu lớn dẫn đến kết quả kém chính xác hơn không như mong muốn.

HƯỚNG MỞ RỘNG CỦA ĐỀ TÀI

Hướng mở rộng của đề tài Đề tài có thể được phát triển thành một phần mện nhận dạng mặt người tốt hơn, bằng cách kết hợp với một số thuật toán nhận dạng và xử lý ảnh hiện đại hơn. Cho ra kết quả chính xác hơn.

Cảm ơn thầy và các bạn đã lắng nghe bài thuyết trình

của nhóm.