Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 61 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
61
Dung lượng
2,57 MB
Nội dung
TRƯỜNG ĐẠI HỌC VINH KHOA ĐIỆN TỬ VIỄN THÔNG ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: NGHIÊN CỨU THUẬT TOÁN VIOLA-JONES ỨNG DỤNG PHÁT HIỆN VÀ ĐẾM KHUÔN MẶT Giáo viên hướng dẫn: ThS Đinh Văn Nam Sinh viên thực hiện: Nguyễn Văn Hữu MSSV: 1151080446 Lớp : 52K - ĐTVT Nghệ An, 2016 LỜI CẢM ƠN Trong trình học tập rèn luyện em trang bị kiến thức bản, chuyên môn kinh nghiệm thực tế để hoàn thành tốt đồ án tốt nghiệp Trước hết em xin gửi lời cảm ơn đến thầy Th.S Đinh Văn Nam, người giúp đỡ em nhiều định hướng dẫn cho em suốt thời gian thực đề tài Cuốn đồ án thực theo thời gian quy định nhà trường khoa không nỗ lực em mà có giúp đỡ, bảo thầy hướng dẫn, quý thầy cô bạn sinh viên Em xin chân thành cảm ơn quý thầy cô giáo khoa Điện tử - Viễn thông quan tâm, hướng dẫn, truyền đạt lại kiến thức kinh nghiệm cho em suốt trình học tập trường Mặc dù cố gắng hoàn thành đồ án song không tránh khỏi sai sót, em mong thầy cô bạn đóng góp ý kiến quý báu để đồ án thành công Nghệ An, tháng 05 năm 2016 Sinh viên thực Nguyễn Văn Hữu TÓM TẮT ĐỒ ÁN Đồ án tìm hiểu thuật toán Viola-Jones Trong có đặc trưng HaarLike, thuật toán Adaboost mô hình phân tầng Cascade để ứng dụng vào chương trình phát khuôn mặt người có ảnh Webcam Từ toán phát khuôn mặt phát triển lên ứng dụng điểm danh nhân viên điếm số lượng người … Từ em thiết kế mô thành công chương trình phát đếm số khuôn mặt sở thuật toán Viola-Jones ABSTRACT This thesis studying the Viola-Jones algorithm Including the Haar-Like features, Adaboost algorithm and Cascade Classification Model to apply into Face Detection Program in a picture or in a Webcam Frome the Face Detection Model can improve the roll-call applications or counting people Conclution, I was designed and simulated successfully the detection and counting Faces Programe based on Viola-Jones Algorithm MỤC LỤC Hình 2.1 Độ phân giải ảnh; (a) Ảnh ban đầu có độ phân giải n=1;(b),(c), (d) Ảnh có độ phân giải n=4, 8, 16 .24 Hình 2.4 Chuyển ảnh sang ảnh tích phân 31 Hình 2.13 Đặc trưng Haar-Like phát khuôn mặt 34 DANH MỤC BẢNG BIỂU Hình 2.1 Độ phân giải ảnh; (a) Ảnh ban đầu có độ phân giải n=1;(b),(c), (d) Ảnh có độ phân giải n=4, 8, 16 .24 Hình 2.4 Chuyển ảnh sang ảnh tích phân 31 Hình 2.13 Đặc trưng Haar-Like phát khuôn mặt 34 DANH MỤC HÌNH Hình 2.1 Độ phân giải ảnh; (a) Ảnh ban đầu có độ phân giải n=1;(b),(c), (d) Ảnh có độ phân giải n=4, 8, 16 .24 Hình 2.4 Chuyển ảnh sang ảnh tích phân 31 Hình 2.13 Đặc trưng Haar-Like phát khuôn mặt 34 CÁC TỪ NGỮ VIẾT TẮT Từ viết tắt GPS Pixel R B G IMG GIF JPEG MATLAB Tiếng Anh Tiếng Việt Global Positioning System Picture element Red Blue Geen Graphics Interchange Format Joint Photo-graphic Experts Group Matrix Laboratory Hệ thống định vị toàn cầu Điểm ảnh Màu Đỏ Màu lam Màu lục Ảnh đen trắng Định dạng Trao đổi Hình ảnh Phương pháp nén ảnh JPEG Phần mềm Matlab Giao diện chương trình ứng API Application Program Interface MFL DE GUI PCA PDF ML SVM Mathematical Function Library Development Environment Graphical User Interface Principal Component Analysis Probility Density Function Maximum Likelihood Support Vector Machine dụng Thư viện Chức toán học Tập hợp công cụ Giao diện đồ họa Phân tích thành phần Hàm mật độ xác suất Phương thức cực đại khả Máy vector hỗ trợ Adaptive Boost Thuật toán AdaBoost AdaBoost MỞ ĐẦU Hơn thập kỷ qua có nhiều toán nghiên cứu xử lý ảnh nhận diện khuôn mặt người từ ảnh đen trắng, xám đến ngày hôm ảnh màu nhận diện trực tiếp từ camera Các nghiên cứu từ toán đơn giản, ảnh có khuôn mặt người nhìn thẳng vào máy thu hình đầu tư thẳng đứng ảnh đen trắng Cho đến hôm nhận diện khuôn mặt từ ảnh màu nhiều khuôn mặt ảnh nhận diện nhiều khuôn mặt từ camera Ngày việc thu thập thông tin qua ảnh để nhận biết đối tượng quan tâm ứng dụng rộng rãi, nhận diện khuôn mặt người từ camera bước quan trọng mở đầu cho ứng dụng khác phát triển thêm Với phát triển khoa học máy tình tạo môi trường thuận lợi cho toán nhận dạng khuôn mặt người từ camera Bài toán nhận dạng khuôn mặt người toán thú vị, vận dụng linh hoạt kiến thức nhiều lĩnh vực có tính ứng dụng to lớn thực tế Đây chủ đề mới, ứng dụng mang tính công nghệ cao như: robot, thiết bị theo dõi camera, hệ thống bảo mật, nhận dạng…đã nhiều công ty lớn áp dụng facebook…nhằm nâng cao sản phẩm để cạnh tranh với công ty khác thị trường Với tính từ nhu cầu thực tế, em chọn đề tài “Nghiên cứu thuật toán Viola-Jones ứng dụng phát đếm khuôn mặt” Bài báo cáo trình bày thành chương sau: Chương 1: Tổng quan công nghệ xử lý ảnh Chương 2: Phương pháp phát nhận dạng ảnh Chương 3: Thiết kế phần mềm mô thuật toán phát khuôn mặt Nội dung đề tài: - Tìm hiểu phương pháp nhận diện ảnh - Nghiên cứu thuật toán Viola-Jones Dò tìm mặt người Đếm số lượng khuôn mặt Do khả thời gian hạn chế nên đồ án không tránh khỏi sai sót, mong nhận góp ý thầy cô bạn để đồ án hoàn thiện Em xin chân thành cảm ơn ThS Đinh Văn Nam tận tình hướng dẫn chuyên môn, phương pháp làm việc để em hoàn thành đồ án theo kế hoạch đặt Em xin gửi lời cảm ơn chân thành đến thầy cô giáo, bạn Khoa Điện tử Viễn thông tạo điều kiện giúp em hoàn thành đồ án Nghệ An, tháng 05 năm 2016 Sinh viên thực Nguyễn Văn Hữu CHƯƠNG TỔNG QUAN VỀ CÔNG NGHỆ XỬ LÝ ẢNH 1.1 Giới thiệu xử lý ảnh Xử lý ảnh mảng quan trọng kỹ thuật giác máy tính, tiền đề cho nhiều nghiên cứu thuộc lĩnh vực Hai nhiệm vụ trình xử lý ảnh nâng cao chất lượng thông tin ảnh xử lý số liệu cung cấp cho trình khác việc ứng dụng thị giác vào điều khiển Quá trình việc thu nhận ảnh nguồn (từ nguồn thu nhận ảnh dạng số tương tự) gửi đến máy tính Dữ liệu ảnh lưu trữ dạng phù hợp với trình xử lý Người lập trình tác động thuật toán tương ứng lên giữ liệu ảnh nhằm thay đổi cấu trúc phù hợp với ứng dụng khác Quá trình xử lý nhận dạng xem trình thao tác ảnh đầu vào nhằm cho kết mong muốn Kết đầu trình xử lý ảnh ảnh xử lý kết luận Ảnh xử lý Ảnh Xử Lý Ảnh Hình 1.1 Quá trình xử lý ảnh Kết thông Luận tin lên Con người thu nhận thông tin qua giác quan đưa não để xử lý, thị giác đóng vai trò quan trọng Trong năm gần xử lý ảnh có phát triển cách mạnh mẽ có nhiều ứng dụng sống Xử lý ảnh đóng vai trò quan trọng tương tác người máy Quá trình xử lý ảnh xem trình thao tác ảnh đầu vào nhằm cho kết Các phương phát xử lý ảnh ứng dụng chính: Nâng cao chất lượng ảnh phân tích ảnh Ứng dụng biết đến nâng cao chất lượng ảnh báo truyền cáp từ Luân Đôn đến New York từ năm 1920 Vấn đề nâng cao chất lượng ảnh có liên quan đến phân bố mức độ sang độ phân giải ảnh Việc nâng cao chất lượng ảnh phát triển vào khoảng năm 1955 Điều giải thích sau chiến thứ 2, máy tính phát triển nhanh tạo điều kiện cho xử lý ảnh thuận lợi Năm 1964 máy tính có khả xử lý nâng cao chất lượng ảnh từ mặt trăng vệ tinh Ranger Mỹ bao gồm: làm đường biên lưu ảnh Từ năm 1964 đến nay, phương tiện xử lý ảnh, nâng cao Hình 3.1 Giao diện GUI 3.2 Thiết kế phần mềm mô 3.2.1 Giới thiệu chương trình Chương trình “Nghiên cứu thuật toán Viola-Jone ứng dụng phát đếm khuôn mặt” chương trình thiết kế giao diện người dùng GUI phần mềm Matlab 2014a Rất đơn giản dễ dàng sử dụng a Lưu đồ thuật toán 46 Hình 3.2 Lưu đồ thuật toán b Các bước thực chương trình Khi chạy chương trình “Nghiên cứu thuật toán Viola-Jones ứng dụng phát đếm khuôn mặt ” ta thao tác theo trình tự bước sau: Bước 1: mở giao diện chương trình Để mở chương trình ta làm theo cách Cách thứ nhất: Mở trực tiếp lên chương trình Matlab 2014a Ta đường dẫn đến CHUONGTRINH.fig chạy Cách thứ hai: Có thể chạy trực tiếp file CHUONGTRINH.fig 47 Sau chạy chương trình, xuất hộp thoại hình đây: Hình 3.3 Giao diện chương trình Bước 2: Đưa liệu vào để xử lý Ở bước có hai cách để chọn liệu để xử lý từ ảnh có sẵn máy tính đưa trực tiếp từ vào thông qua WebCam Cách thứ nhất: Từ giao diện chương trình ta chọn nút Hình ảnh để mở chương trình “Phát đếm số khuôn mặt từ hình ảnh” Ta chọn nút Chọn ảnh để chọn ảnh để đưa vào chương trình Sau chọn ảnh ta nhấn nút open để chọn ảnh muốn xử lý Cách thứ 2: Xử lý trực tiếp từ Webcam Từ giao diện chương trình ta chọn nút Camera đề mở chương trình “Phát đếm số khuôn mặt từ Camera” Ta chọn nút Webcam để bật Webcam lên Bước 3: Xử lý liệu Xử lý hình ảnh: Sau chọn ảnh ta nhấn nút Phát để phát điếm số lượng khuôn mặt có hình Có thể xử lý ảnh khác cách ta chọn nút Reset chọn ảnh 48 Xử lý từ Camera: Sau bật camera lên ta nhấn nút ĐẾM để phát điếm số lượng khuôn mặt có hình Sau hai chương trình xử lý xong ta chọn nút Back để trở hình để chạy chương trình lại c Tốc độ xử lý Tốc độ thực chương trình thể thời gian mà chương trình tính toán trình xử lý, tùy theo giá trị kích thước nhỏ, trình xử lý chương trình thực nhanh chóng, ảnh đầu vào có kích thước lớn, trình xử lý chương trình thực chậm, mặt khác tốc độ thực tùy thuộc vào tốc độ xử lý máy tính Vì vậy, yêu cầu cần có máy tính có cấu hình thích hợp để thực chương trình cách nhanh chóng tạo điều kiện thuận lợi cho việc phát khuôn mặt 3.2.2 Kết mô Mở chương trình nhận dạng đếm khuôn măt từ hình ảnh ta có dao diện hình đây: Hình 3.4 Chương trình xử lý từ hình ảnh Sau mở chương trình xong ta chọn ảnh chọn nút NHANDIEN ta có kết sau: Kết chương trình xử lý ảnh có khuôn mặt 49 Hình 3.5 Xử lý ảnh có khuôn mặt Kết chương trình xử lý hình ảnh có nhiều khuôn mặt vị trí thuận lợi cho việc phát Hình 3.6 Xử lý hình ảnh có nhiều khuôn mặt Có ảnh có khuôn mặt bị che phần không góc độ chương trình phát yếu điểm thuật toán Viola-Jones việc phát khuôn mặt 50 Hình 3.7 Xử lý sai với ảnh nhiều khuôn mặt bị nghiêng Chọn nút Back để trở giao diện chương trình Và chọn nút Camera để mở chương trình phát đếm khuôn mặt từ webcam Ta có giao diện chương trình sau: Hình 3.8 Chương trình xử lý từ Webcam Chọn nút Camera để mở webcam lên chọn Xử Lý để bắt đầu xác định khuôn mặt đếm số lượng khuôn mặt có Live video 51 Hình 3.9 Xử lý với người có Video Kết chương trình xử lý từ webcam có nhiều người xuất Live Video với đủ ánh sáng góc mặt phù hợp: Hình 3.10 Xử lý người có video Kết xử lý sai khuôn mặt thiếu ánh sáng góc độ khuôn mặt không phù hợp không nhận dạng 52 Hình 3.11 Xử lý không phát khuôn mặt Hình 3.12 Phát nhầm đối tượng Muốn kết thúc chương trình ta chọn Dừng để dừng lại chọn Back để trở giao diện 3.2.1 Nhận xét kết đạt Quá trình tìm hiểu nghiên cứu, em xây dựng nhìn tổng quát toán phát đối tượng Đồng thời, tìm hiểu thêm số vấn đề xử lý ảnh: Các dạng ảnh, tính chất ảnh, không gian, toại độ ảnh… vận dụng kết hợp với công cụ xử lý ảnh Matlab (image processing Toolbox) 53 Trong trình thao tác, có ưu khuyết điểm, bào báo cáo em hoàn thành tương đối chấp nhận được, say số ưu điểm khuyết điểm toán trình thực báo cáo - Ưu điểm: Với toán phát khuôn mặt dùng thuật toán Viola-Jones ta thấy tốc độ xử lý nhanh so với thuật toán khác Đối với toán phát khuôn mặt, bào toán sử dụng nhiều lĩnh vực khác chuyên ngành điện tử - Khuyết điểm: Nội dung toán phát đếm số lượng khuôn mặt, phát nhầm đối tượng khác khuôn mặt Về nội dung toán, có hai cách để đưa liệu vào xử lý: sử dụng ảnh có sử dụng nguồn liệu đưa vào từ webcam Đối với webcam hay thiết bị thu hình nào, thi điều kiện cần phải có độ phân giải tốt kết xác Khó khăn việc xử lý phát khuôn mặt, điều kiện phát phải phù hợp: độ sáng, góc lệch, biến dạng… Chính thế, có khuôn mặt không phát 54 KẾT LUẬN Trong thời gian làm đồ án tốt nghiệp em gặp nhiều khó khăn thử thách đòi hỏi cố gắng tập trung cao trình thực hiện, giúp đỡ nhiệt tình Thầy giáo Th.s Đinh Văn Nam cố gắng em, hoàn thành tiến độ làm việc theo yêu cầu làm ra, nhiên báo cáo đạt số kết tương đối nhiều sai sót vấn đền phát khuôn mặt Kết đạt em dò tìm số ảnh liệu, ảnh có độ sắc nét tương phản cao, ảnh có độ sắc nét thấp với góc độ phù hợp Đối với toán phát khuôn mặt từ Webcam phát khuôn mặt có video nhưng, có lúc xác định nhầm đối tượng khác khuôn mặt không xác định khuôn mặt khuôn mặt nghiêng bị che khuất Đối với đề tài toán nhỏ bước đệm cần thiết toán khác như: Nhận diện tội phạm từ ảnh từ web cam gắn nơi công cộng Bảo mật hệ thống cách nhận dạng khuôn mặt có nhiều đối tượng lạ muốn đột nhập vào nhà mình, vào công ty, xý nghiệp hay quan nhà nước Quản lý nhân viên công ty, xý nghiệp cần Camera quan sát từ xa Dù hoàn thành xong đề tài giao nhiều sai sót hạn chế Do góp ý Thầy Cô giáo cần thiết cho em Đó kinh nghiệm định hướng cho em phát triển sau bảo vệ đề tài 55 TÀI LIỆU THAM KHẢO [1] Viola, Paul and Michael J Jones, "Rapid Object Detection using a Boosted Cascade of Simple Features", Proceedings of the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2001 Volume: 1, pp.511– 518 [2] Ming-Hsuan Yang, David J Kriegman, Narendra Ahuja, “Detecting Faces in Images: A Survey”, IEEE Transaction on Pattern Analysis and Machine Intelligence (PAMI), Vol 24, No 1, pp 34-47, Jan 2002 [3] G Yang, T S Huang, “Human Face Detection in Complex Background”, Pattern Recognition, Vol 27, No 1, pp 53-63, 1994 [4] PGS.TS Đỗ Năng Toàn, TS Phạm Việt Bình, “Giáo trình Xử Lý Ảnh”, Đại học Thái Nguyên, 2007 [5] Phạm Thế Bảo, Nguyễn Thành Nhựt, Cao Minh Thịnh, Trần Anh Tuấn, Phan Phúc Doãn, “Tổng quan phương pháp xác định khuôn mặt người”, Tạp chí Công nghệ thông tin & Truyền thông, 2007 [6] http://www.mathworks.com/ [7] http://Tailieu.vn 56 PHỤ LỤC Chương trình giao diện: function pushbutton1_Callback(hObject, eventdata, handles) close run HINH.m function pushbutton2_Callback(hObject, eventdata, handles) close run camera.m function axes5_CreateFcn(hObject, eventdata, handles) imshow('dhv.jpg'); Chương trình xử lý từ hình: function pushbutton2_Callback(hObject, eventdata, handles) tic X = handles.data1; stdsize = 176; nameDetector = {'LeftEye'; 'RightEye'; 'Mouth'; 'Nose'; }; mins = [[12 18]; [12 18]; [15 25]; [15 18]; ]; detector.stdsize = stdsize; detector.detector = cell(5,1); for k=1:4 minSize = int32([stdsize/5 stdsize/5]); minSize = [max(minSize(1),mins(k,1)), max(minSize(2),mins(k,2))]; detector.detector{k} = vision.CascadeObjectDetector(char(nameDetector(k)), 'MergeThreshold', thresholdParts, 'MinSize', minSize); end detector.detector{5} = vision.CascadeObjectDetector('FrontalFaceCART', 'MergeThreshold', thresholdFace); % Detect faces bbox = step(detector.detector{5}, X); 57 bbsize = size(bbox); partsNum = zeros(size(bbox,1),1); stdsize = detector.stdsize; for k=1:4 if( k == ) region = [1,int32(stdsize*2/3); 1, int32(stdsize*2/3)]; elseif( k == ) region = [int32(stdsize/3),stdsize; 1, int32(stdsize*2/3)]; elseif( k == ) region = [1,stdsize; int32(stdsize/3), stdsize]; elseif( k == ) region = [int32(stdsize/5),int32(stdsize*4/5); int32(stdsize/3),stdsize]; else region = [1,stdsize;1,stdsize]; end bb = zeros(bbsize); for i=1:size(bbox,1) XX = X(bbox(i,2):bbox(i,2)+bbox(i,4)-1,bbox(i,1):bbox(i,1)+bbox(i,3)-1,:); XX = imresize(XX,[stdsize, stdsize]); XX = XX(region(2,1):region(2,2),region(1,1):region(1,2),:); b = step(detector.detector{k},XX); if( size(b,1) > ) partsNum(i) = partsNum(i) + 1; if( k == ) b = sortrows(b,1); elseif( k == ) b = flipud(sortrows(b,1)); elseif( k == ) b = flipud(sortrows(b,2)); elseif( k == ) b = flipud(sortrows(b,3)); 58 end ratio = double(bbox(i,3)) / double(stdsize); end end bbox = [bbox,bb]; end bbox = [bbox,partsNum]; bbox(partsNum