Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 111 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
111
Dung lượng
6,25 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH ĐIỆN TỬ TRUYỀN THÔNG ỨNG DỤNG XỬ LÝ ẢNH THIẾT KẾ THI CÔNG MẠCH CHỐNG TRỘM THÔNG MINH GVHD: ThS.VÕ ÐỨC DŨNG SVTH: TĂNG NGUYỄN CÔNG THIÊN MSSV: 13141328 SKL005228 Tp Hồ Chí Minh, tháng 07/2018 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH THIẾT KẾ THI CÔNG MẠCH CHỐNG TRỘM THÔNG MINH GVHD : ThS Võ Đức Dũng SVTH: Tăng Nguyễn Công Thiên MSSV : 13141328 Tp Hồ Chí Minh - 7/2018 TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TP HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH Tp HCM, ngày 16 tháng năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: I TÊN ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH THIẾT KẾ THI CÔNG MẠCH CHỐNG TRỘM THÔNG MINH II NHIỆM VỤ Các số liệu ban đầu: Matlab 2017a Sử dụng Webcam Logitech Kit điều khiển chính: Arduino Uno R3, Servo SG90, Module Sim 800A, Nguồn tổ ong 10V-5A, Chuông, Led đơn Nội dung thực hiện: Để tài thực nội dung phát người nhận diện khuôn mặt với đầu vào hình ảnh lấy từ webcam, kết gửi qua arduino để điều khiển Servo SG90, Module Sim 800A, Chuông, Led đơn Nhóm thực nơi dung sau: Tìm hiểu Matlab Tìm hiểu Arduino Uno R3 Cài đặt thưc viện cho Arduino liên kết Matlab Arduino Tìm hiểu thuật tốn nhận diện, phát người khn mặt Xây dựng trình xử lý ảnh đầu vào Xây dựng hệ thống phát người nhận diện khuôn mặt đồng thời gửi liệu thu qua Arduino Xây dựng chương trình điều khiển servo SG90, Module Sim 800A, chuông, Led đơn Đánh giá kết thực III NGÀY GIAO NHIỆM VỤ: 21/03/2018 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 05/07/2018 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Võ Đức Dũng CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP - Y SINH TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC Tp.HCM, ngày 19 tháng 03 năm 2018 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên : Tăng Nguyễn Công Thiên Lớp:13141DT3B Tên đề tài: ỨNG DỤNG XỬ LÝ ẢNH THIẾT KẾ THI CÔNG MẠCH CHỐNG TRỘM THÔNG MINH Tuần/ngày (19-25/3) (26/3-1/4) (2/4-8/4) (9/4-15/4) (16/4-22/4) (23/4-29/4) (30/4-6/5) (7/5-13/5) (14/5-20/5) 10 (21/5-28/5) 11 Hoàn thiện sửa báo cáo gửi cho GVHD (29/5-3/6)để xem xét góp ý lần cuối 12 Nộp báo cáo hoàn chỉnh làm slide (4/6-11/6)powerpoint báo cáo GV HƯỚNG DẪN (Ký ghi rõ họ tên) ii LỜI CAM ĐOAN Đề tài nhóm sinh viên Tăng Nguyễn Công Thiên tự thực hiện, dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước Người thực đề tài Tăng Nguyễn Cơng Thiên iv LỜI CẢM ƠN Trong thời gian thực đề tài, người thực giúp đỡ gia đình, q thầy bạn bè nên đề tài hoàn thành Những người thực xin chân thành gửi lời cảm ơn đến: Thầy Võ Đức Dũng, giảng viên trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM trực tiếp hướng dẫn tận tình giúp đỡ tạo điều kiện để nhóm hồn thành tốt đề tài Những người thực xin chân thành cám ơn đến thầy cô khoa Điện - Điện tử trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM tận tình dạy dỗ, bảo, cung cấp cho người thực kiến thức nền, chun mơn làm sở để hồn thành đề tài Cảm ơn gia đình động viên ln ln bên cạnh lúc khó khăn Xin gửi lời cảm ơn đến người bạn sinh viên khoa Điện-Điện tử giúp đỡ người thực đề tài để hồn thành tốt đề tài Xin chân thành cảm ơn! Người thực đề tài: Tăng Nguyễn Cơng Thiên v MỤC LỤC Trang bìa i Nhiệm vụ đồ án ii Lịch trình thực đồ án tốt nghiệp iii Cam đoan iv Lời cảm ơn v Mục lục vi Liệt kê hình vẽ ix Liệt kê bảng vẽ xi Tóm tắt xii CHƯƠNG TỔNG QUAN 1.1 LÝ DO CHỌN ĐỀ TÀI 1.2 MỤC TIÊU 1.2.1 Mục tiêu 1.2.2 Giới hạn 1.3 BỐ CỤC ĐỒ ÁN TỐT NHIỆP CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU VỀ HỆ THỐNG XỬ LÝ ẢNH 2.1.1 Phần thu nhận ảnh (Image Acquisiton) 2.1.2 Tiền xử lý (Image Processing) 2.1.3 Phân đoạn (Segmentation) hay phân vùng ảnh 2.1.4 Biểu diễn ảnh (Image Representation) 2.1.5 Nhận dạng nội suy (Image Recognition and Interpretation) 2.1.6 Cơ sở tri thức 2.1.7 Các thành phần hệ thống 2.2 NHỮNG VẤN ĐỀ CƠ BẢN TRONG XỬ LÝ ẢNH 2.2.1 Điểm ảnh (Picture Element) 2.2.2 Độ phân giải ảnh 2.2.3 Mức xám ảnh 2.2.4 Định nghĩa ảnh số vi 2.3 GIỚI THIỆU KHÁI QUÁT VỀ CÁC LINH KIỆN SỬ DỤNG TRONG THIẾT KẾ, THI CÔNG ĐỀ TÀI 2.3.1 Mạch Arduino Uno R3 2.3.2 Tổng quan động Servo 14 2.3.3 Tổng quan Buzzer 14 2.3.4 Module SIM 800A 15 CHƯƠNG TÍNH TỐN VÀ THIẾT KẾ 16 3.1 TỔNG QUAN CÁC KỸ THUẬT NHẬN BIẾT MÀU DA DỰA TRÊN TÍNH CHẤT ĐIỂM ẢNH 16 3.1.1 Giới thiệu 16 3.1.2 Không gian màu sử dụng cho mơ hình hóa màu da 16 3.1.2.1 Không gian màu RGB 17 3.1.2.2 Không gian RGB chuẩn hóa 17 3.1.2.3 Không gian màu HIS, HSV, HSL 18 3.1.2.4 Không gian màu HIS 18 3.1.2.5 Không gian màu HSV 19 3.1.2.6 Không gian màu HSL 20 3.1.2.7 Không gian màu TSL 21 3.1.2.8 Không gian màu Y 21 3.1.2.9 Các hệ tọa độ không gian màu khác 22 3.1.3 Mô hình hóa màu da 22 3.1.3.1 Xác đinh ngƣỡng cụ thể điểm ảnh màu da 22 3.1.3.2 Phƣơng pháp mô hình hóa màu da sử dụng phân phơi khơng tham số 23 3.1.3.3 Bảng tra cứu chuẩn cứu (LUT – Lookup Table) 23 3.1.3.4 Phân lớp Bayes (bayes Classifier) 24 3.1.3.5 Tổng kết phƣơng pháp không tham số 25 3.1.3.6 Mơ hình hóa phân phối màu da có tham số 25 3.1.3.7 Mơ hình dựa phân phối Gauss đơn 26 3.1.3.8 Mơ hình kết hợp dựa phân phối Gauss 26 3.1.3.9 Đa phân phối Gauss 27 3.1.3.10 Tổng kết phƣơng pháp mơ hình hóa theo tham số 27 3.1.4 So sánh kết mơ hình 27 3.1.5 Đánh giá phƣơng pháp 29 vii 3.1.6 Chọn lựa không gian màu phƣơng pháp mơ hình hóa dùn để nhận biết màu da cho đồ án 29 3.2 PHÂN TÍCH THÀNH PHẦN CHÍNH PCA 30 3.2.1 Tổng quan phƣơng pháp PCA 30 3.2.1.1 Giới thiệu 30 3.2.1.2 Ý tƣởng 30 3.2.2 Trích chọn đặc trƣng khn mặt ngƣời dựa phƣơng pháp PCA 34 3.2.2.1 Chuyển đổi ảnh 34 3.2.2.2 Tính khn mặt ngƣời trung bình 35 3.2.2.3 Trừ ảnh cho mặt trung bình 35 3.2.2.4 Xây dựng ma trận hợp phƣơng sai 35 3.2.2.5 Phép chiếu 36 3.3 PHÂN TÍCH HOG 37 3.3.1 Giới thiệu 37 3.3.2 Chuẩn hóa hình ảnh trƣớc xử lý 38 3.3.3 Tính tốn gradient 38 3.3.4 Lấy votes cell 39 3.3.5 Chuẩn hóa block 40 3.3.6 Sử dụng toán object recognition 40 3.3 KẾT NỐI VỚI THIẾT BỊ NGOẠI VI 41 3.4.1 Khối xử lý trung tâm 42 3.4.2 Khối Module Sim 800A 42 3.4.3 Khối động servo 43 3.4.4 Khối hiển thị báo động 44 3.4.5 Khối nguồn 45 3.4.6 Sơ đồ nguyên lý hệ thống ngoại vi 46 CHƯƠNG THI CÔNG HỆ THỐNG 47 4.1 GIỚI THIỆU 47 4.2 THI CÔNG HỆ THỐNG 47 4.2.1 Hệ thống nhận chuyển động 47 4.2.1 Hệ thống nhận diện khuôn mặt 50 4.2.2.1 Lƣu đồ giải thuật hệ thống nhận diện khuôn mặt 50 4.2.2.2 Lƣu đồ giải thuật hệ thống huấn luyện 51 4.2.2.3 Yêu cầu liệu ảnh 52 viii TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách tham khảo [1] Nguyễn Thanh Hải, Giáo trình Xử lý ảnh, Nhà xuất ĐH Quốc Gia TP HCM, 2014 [2] Lương Mạnh Bá Nguyễn Thanh Thủy, Chương 7, Nhập Môn Xử Lý ảnh số, Nxb Khoa học Kỹ Thuật, 2002, trang 179-208 [3] John Boxal, “ Arduino Workshop, Willinam Pollock”, May 2013 [4] Stuart William Perry, Hau-San Wong and Ling Guan, Adaptive Image Processing: A Computational Intelligence Perspective, CEC Press LLC, 2002 [5] Kyungnam Kim, Face Recognition using Principle Component Analysis, Department of Computer Science University of MaryLand, USA, trang1-6 [6] Howard A Draper, Kyungim Baek, Marian Stewart Barlett, J Ross Bervridge, “Recognizing Faces with PCA and ICA”, 2004, trang 1-24 DATASHEET [7] Arduino Uno R3, https://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3schematic.pdf [8] Sim 800A, http://simcomm2m.com/En/module/detail.aspx?id=138 [9] Tập lệnh AT, http://www.espruino.com/datasheets/SIM900_AT.pdf [10] Động Servo, http://www.micropik.com/PDF/SG90Servo.pdf BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC PHỤ LỤC CHƢƠNG TRÌNH CỦA TỪNG HỆ THỐNG I Chƣơng trình hệ thống nhận diện phát chuyển động function varargout = giaodien123(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @giaodien123_OpeningFcn, 'gui_OutputFcn', @giaodien123_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 function giaodien123_OpeningFcn(hObject, eventdata, handles, varargin) guidata(hObject, handles); function varargout = giaodien123_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function figure1_CreateFcn(hObject, eventdata, handles) im = imread('GetArticleImage.jpg'); imshow(im); function pushbutton1_Callback(hObject, eventdata, handles) global s; s=serial('COM6'); fopen(s); i=0; peopleDetector = vision.PeopleDetector('MergeDetections',true); peopleDetector.ClassificationThreshold =2; pointTracker = vision.PointTracker('MaxBidirectionalError', 2); cam = webcam(); videoFrame = snapshot(cam); frameSize = size(videoFrame); videoPlayer = vision.VideoPlayer('Position', [100 100 [frameSize(2), frameSize(1)]+30]); runLoop = true; numPts = 0; frameCount = 0; while runLoop videoFrame = snapshot(cam); videoFrameGray = rgb2gray(videoFrame); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC frameCount = frameCount + 1; if numPts < 10 bbox = step(peopleDetector,videoFrame); if ~isempty(bbox) points = detectMinEigenFeatures(videoFrameGray, 'ROI', bbox(1, :)); xyPoints = points.Location; numPts = size(xyPoints,1); release(pointTracker); initialize(pointTracker, xyPoints, videoFrameGray); oldPoints = xyPoints; bboxPoints = bbox2points(bbox(1, :)); bboxPolygon = reshape(bboxPoints', 1, []); D=1; videoFrame = insertObjectAnnotation(videoFrame,'rectangle',bbox,D); end else [xyPoints, isFound] = step(pointTracker, videoFrameGray); visiblePoints = xyPoints(isFound, :); oldInliers = oldPoints(isFound, :); numPts = size(visiblePoints, 1); if numPts >= 30 bbox = step(peopleDetector,videoFrame); [xform, oldInliers, visiblePoints] = estimateGeometricTransform( oldInliers, visiblePoints, 'similarity', 'MaxDistance', 4); bboxPoints = transformPointsForward(xform, bboxPoints); bboxPolygon = reshape(bboxPoints', 1, []); D=1; videoFrame = insertObjectAnnotation(videoFrame,'rectangle',bbox,D); step(videoPlayer,videoFrame); oldPoints = visiblePoints; setPoints(pointTracker, oldPoints); if i==0 fwrite(s,2) end i=1; end end step(videoPlayer, videoFrame); runLoop = isOpen(videoPlayer); end clear cam; release(videoPlayer); release(pointTracker); close; function figure1_DeleteFcn(hObject, eventdata, handles) global s; fwrite(s,0); out = instrfind; fclose(out); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC function pushbutton2_Callback(hObject, eventdata, handles) global s; fwrite(s,0); out = instrfind; fclose(out); II Chƣơng trình hệ thống nhận diện khn mặt function varargout = regconition(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @regconition_OpeningFcn, 'gui_OutputFcn', @regconition_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 function regconition_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = regconition_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function figure1_CreateFcn(hObject, eventdata, handles) global q; q = serial('com3'); fopen(q); im = imread('GetArticleImage.jpg'); imshow(im); function pushbutton1_Callback(hObject, eventdata, handles) global co if isfield(handles,'vdx') vid = handles.vdx; stoppreview(vid) delete(vid) handles = rmfield(handles,'vdx'); guidata(hObject,handles) cla(handles.axes1) reset(handles.axes1) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC set(handles.axes1,'box','on','xcolor','w','ycolor','w','xtick',[],'ytick',[],'color',[0.0431 0.5176 0.7804],'linewidth',1.5) cla(handles.axes2) reset(handles.axes2) set(handles.axes2,'box','on','xcolor','w','ycolor','w','xtick',[],'ytick',[],'color',[0.0431 0.5176 0.7804],'linewidth',1.5) end fd = vision.CascadeObjectDetector(); fd.MergeThreshold = 15; info = imaqhwinfo('winvideo'); did = info.DeviceIDs; if isempty(did) msgbox({'YOUR SYSTEM DO NOT HAVE A WEBCAM';' ';'CONNECT A ONE'},'WARNING !!!!','warn','modal') return end did = cell2mat(did); for k = 1:length(did) devinfo = imaqhwinfo('winvideo',k); na(1,k) = {devinfo.DeviceName}; sr(1,k) = {devinfo.SupportedFormats}; end [a,b] = listdlg('promptstring','SELECT A WEB CAM DEVICE','liststring',na,'ListSize', [125, 75],'SelectionMode','single'); if b == return end if b ~= frmt = sr{1,a}; [a1,b1] = listdlg('promptstring','SELECT RESOLUTION','liststring',frmt,'ListSize', [150, 100],'SelectionMode','single'); if b1 == return end end frmt = frmt{a1}; l = find(frmt == '_'); res = frmt(l+1 : end); l = find(res == 'x'); res1 = str2double(res(1: l-1)); res2 = str2double(res(l+1 : end)); axes(handles.axes1) vid = videoinput('winvideo', a); vr = [res1 res2]; nbands = get(vid,'NumberofBands'); h2im = image(zeros([vr(2) vr(1) nbands] , 'uint8')); preview(vid,h2im); handles.vdx = vid; guidata(hObject,handles) tx = msgbox('PLZ STAND IN FRONT OF CAMERA STILL','INFO !!!'); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC pause(1) delete(tx) kx = 0; while im = getframe(handles.axes1); im = im.cdata; bbox = step(fd, im); vo = insertObjectAnnotation(im,'rectangle',bbox,'FACE'); axes(handles.axes2) imshow(vo) if size(bbox,1) > msgbox({'TOO MANY FACES IN FRAME';' ';'ONLY ONE FACE IS ACCEPTED'},'WARNING !!!','warn','modal') uiwait stoppreview(vid) delete(vid) handles = rmfield(handles,'vdx'); guidata(hObject,handles) cla(handles.axes1) reset(handles.axes1) set(handles.axes1,'box','on','xtick',[],'ytick',[],'xcolor',[1 1],'ycolor',[1 1],'color',co,'linewidth',1.5) cla(handles.axes2) reset(handles.axes2) set(handles.axes2,'box','on','xtick',[],'ytick',[],'xcolor',[1 1],'ycolor',[1 1],'color',co,'linewidth',1.5) return end kx = kx + 1; if kx > 10 && ~isempty(bbox) break end end imc = imcrop(im,[bbox(1)+3 bbox(2)-35 bbox(3)-10 bbox(4)+70]); imx = imresize(imc,[300 300]); fhx = figure(2); set(fhx,'menubar','none','numbertitle','off','name','PREVIEW') imshow(imx) cd ('database'); l = length(dir(pwd)); n = [int2str(l-1) '.jpg']; imwrite(imx,n); cd while qq = inputdlg('WHAT IS UR NAME?','FILL'); if isempty(qq) msgbox({'YOU HAVE TO ENTER A NAME';' ';'YOU CANT CLICK CANCEL'},'INFO','HELP','MODAL') uiwait else break BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC end end qq = qq{1}; if exist('info.mat','file') == load ('info.mat') r = size(z2,1); z2{r+1,1} = {n , qq}; save('info.mat','z2') else z2{1,1} = {n,qq}; save('info.mat','z2') end close gcf stoppreview(vid) delete(vid) handles = rmfield(handles,'vdx'); guidata(hObject,handles) cla(handles.axes1) reset(handles.axes1) cla(handles.axes2) reset(handles.axes2) function pushbutton2_Callback(hObject, eventdata, handles) flist = dir('database'); if length(flist) == msgbox('NOTHING TO DELETE','INFO','modal'); return end cd('database') [f,p] = uigetfile('*.jpg','SELECT A PIC TO DELETE IT'); if f == cd return end p1 = fullfile(p,f); delete(p1) flist = dir(pwd); if length(flist) == cd return end for k = 3:length(flist) z = flist(k).name; z(strfind(z,'.') : end) = []; nlist(k-2) = str2double(z); end nlist = sort(nlist); h = waitbar(0,' MATLAB IS RENAMING','name','PROGRESS '); for k = 1:length(nlist) if k ~= nlist(k) p = nlist(k); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC movefile([num2str(p) '.jpg'] , [num2str(k) '.jpg']) waitbar((k-2)/length(flist),h,sprintf('RENAMED %s to %s',[num2str(p) '.jpg'],[num2str(k) '.jpg'])) end pause(.5) end close(h) cd function pushbutton4_Callback(hObject, eventdata, handles) runLoop = true; global co global q; if exist('features.mat','file') == msgbox('FIRST TRAIN YOUR DATABASE','INFO !!!','MODAL') return end ff = dir('database'); if length(ff) == h = waitbar(0,'Xin ch? ','name','SCANNING IS IN PROGRESS'); for k = 1:100 waitbar(k/100) pause(0.03) end close(h) msgbox({'NO IMAGE FOUND IN DATABASE';'FIRST LOAD YOUR DATABASE';'USE ''ADD NEW IMAGE'' MENU'},'WARNING !!!','WARN','MODAL') return end if isfield(handles,'vdx') vid = handles.vdx; stoppreview(vid) delete(vid) handles = rmfield(handles,'vdx'); guidata(hObject,handles) cla(handles.axes1) reset(handles.axes1) set(handles.axes1,'box','on','xcolor','w','ycolor','w','xtick',[],'ytick',[],'color',[0.0431 0.7804],'linewidth',1.5) cla(handles.axes2) reset(handles.axes2) set(handles.axes2,'box','on','xcolor','w','ycolor','w','xtick',[],'ytick',[],'color',[0.0431 0.7804],'linewidth',1.5) end info = imaqhwinfo('winvideo'); did = info.DeviceIDs; if isempty(did) msgbox({'YOUR SYSTEM DO NOT HAVE A WEBCAM';' ';'CONNECT A ONE'},'WARNING !!!!','warn','modal') return BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC end fd = vision.CascadeObjectDetector(); fd.MergeThreshold =15; did = cell2mat(did); for k = 1:length(did) devinfo = imaqhwinfo('winvideo',k); na(1,k) = {devinfo.DeviceName}; sr(1,k) = {devinfo.SupportedFormats}; end [a,b] = listdlg('promptstring','SELECT A WEB CAM DEVICE','liststring',na,'ListSize', [125, 75],'SelectionMode','single'); if b == return end if b ~= frmt = sr{1,a}; [a1,b1] = listdlg('promptstring','SELECT RESOLUTION','liststring',frmt,'ListSize', [150, 100],'SelectionMode','single'); if b1 == return end end while runLoop frmt = sr{1,a}; frmt = frmt{a1}; l = find(frmt == '_'); res = frmt(l+1 : end); l = find(res == 'x'); res1 = str2double(res(1: l-1)); res2 = str2double(res(l+1 : end)); axes(handles.axes1) vid = videoinput('winvideo', a); vr = [res1 res2]; nbands = get(vid,'NumberofBands'); h2im = image(zeros([vr(2) vr(1) nbands] , 'uint8')); preview(vid,h2im); handles.vdx = vid; guidata(hObject,handles) tx = msgbox('XIN DUNG YEN TRUOC CAMERA','INFO !!!'); pause(1) delete(tx) kx = 0; while im = getframe(handles.axes1); im = im.cdata; bbox = step(fd, im); vo = insertObjectAnnotation(im,'rectangle',bbox,'FACE'); axes(handles.axes2) imshow(vo) if size(bbox,1) > BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC msgbox({'QUA NHIEU KHUON MAT';' ';'CHI DUOC MOT KHUON MAT'},'WARNING !!!','warn','modal') uiwait stoppreview(vid) delete(vid) handles = rmfield(handles,'vdx'); guidata(hObject,handles) cla(handles.axes1) reset(handles.axes1) set(handles.axes1,'box','on','xtick',[],'ytick',[],'xcolor',[1 1],'ycolor',[1 1],'color',co,'linewidth',1.5) cla(handles.axes2) reset(handles.axes2) set(handles.axes2,'box','on','xtick',[],'ytick',[],'xcolor',[1 1],'ycolor',[1 1],'color',co,'linewidth',1.5) return end kx = kx + 1; if kx > 10 && ~isempty(bbox) break end end bbox(4)+70]); imc = imcrop(im,[bbox(1)+3 bbox(2)-35 bbox(3)-10 imx = imresize(imc,[300 300]); axes(handles.axes1) image(imx) text(20,20,'\bfHINH HIEN TAI.','fontsize',12,'color','y','fontname','comic sans ms') set(handles.axes1,'xtick',[],'ytick',[],'box','on') immxx = imx; zz = findsimilar(immxx); zz = strtrim(zz); fxz = imread(['database/' zz]); q1= ehd(immxx,0.1); q2 = ehd(fxz,0.1); q3 = pdist([q1 ; q2]); disp(q3) if q3 < 0.5 axes(handles.axes2) image(fxz) set(handles.axes1,'xtick',[],'ytick',[],'box','on') text(20,20,'\bf HINH LUU TRU.','fontsize',12,'color','y','fontname','comic sans ms') set(handles.axes2,'xtick',[],'ytick',[],'box','on') xs = load('info.mat'); xs1 = xs.z2; for k = 1:length(xs1) st = xs1{k}; stx = st{1}; if strcmp(stx,zz) == str = st{2}; break end BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC end fid = fopen('attendence_sheet.txt','a'); fprintf(fid,'%s %s %s %s\r\n\n', 'Name','Date','Time', 'Attendence'); c = clock; if c(4) > 12 s = [num2str(c(4)-12) ,':',num2str(c(5)), ':', num2str(round(c(6))) ]; else s = [num2str(c(4)) ,':',num2str(c(5)), ':', num2str(round(c(6))) ]; end fwrite(q,1) pause(4) else msgbox('BAN KHONG PHAI NGUOI TRONG NHA', 'WARNING','WARN','MODAL') cla(handles.axes1) reset(handles.axes1) cla(handles.axes2) reset(handles.axes2) fwrite(q,3); end pause(5); end function pushbutton5_Callback(hObject, eventdata, handles) f = dir('database'); if length(f) == msgbox('YOUR DATA BASE HAS NO IMAGE TO DISPLAY','SORRY','modal') return end l = length(f)-2; while a = factor(l); if length(a) >= break end l = l+1; end d = a(1: ceil(length(a)/2)); d = prod(d); d1 = a(ceil(length(a)/2)+1 : end); d1 = prod(d1); zx = sort([d d1]); figure('menubar','none','numbertitle','off','name','Images of Database','color',[0.0431 0.5176 0.7804],'position',[300 200 600 500]) for k = 3:length(f) im = imread(f(k).name); subplot(zx(1),zx(2),k-2) imshow(im) title(f(k).name,'fontsize',10,'color','w') end BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC function pushbutton6_Callback(hObject, eventdata, handles) x = questdlg({'Tat Ca Du Lieu Se Bi Xoa'},'Please select !!'); if strcmpi(x,'yes') == delete('attendence_sheet.txt') delete('features.mat') delete('info.mat') cd ([pwd, '\database']) f = dir(pwd); for k = 1:length(f) delete(f(k).name) end cd cla(handles.axes1); reset(handles.axes1); set(handles.axes1,'box','on','xcolor','w','ycolor','w','xtick',[],'ytick',[],'color',[0.0431 0.5176 0.7804],'linewidth',1.5) cla(handles.axes2); reset(handles.axes2); set(handles.axes2,'box','on','xcolor','w','ycolor','w','xtick',[],'ytick',[],'color',[0.0431 0.5176 0.7804],'linewidth',1.5) beep msgbox('All Reset','Info','modal') end function pushbutton7_Callback(hObject, eventdata, handles) if exist('attendence_sheet.txt','file') == winopen('attendence_sheet.txt') else msgbox('NO ATTENDENCE SHEET TO DISPLAY','INFO !!!','HELP','MODAL') end function pushbutton8_Callback(hObject, eventdata, handles) ff = dir('database'); if length(ff) == h = waitbar(0,'Xin Doi Trong Giay Lat','name','SCANNING IS IN PROGRESS'); for k = 1:100 waitbar(k/100) pause(0.03) end close(h) msgbox({'NO IMAGE FOUND IN DATABASE';'FIRST LOAD YOUR DATABASE';'USE ''ADD NEW IMAGE'' MENU'},'WARNING !!!','WARN','MODAL') return end if exist('features.mat','file') == bx = questdlg({'TRAINING HAS ALREDY BEEN DONE';' ';'WANT TO TRAIN DATABASE AGAIN?'},'SELECT','YES','NO','CC'); if strcmpi(bx,'yes') == builddatabase msgbox('TRAINING DONE PRESS OK TO CONTINUE','OK','modal') BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC return else return end else builddatabase msgbox('TRAINING DONE PRESS OK TO CONTINUE','OK','modal') return end function figure1_DeleteFcn(hObject, eventdata, handles) if ~isempty(instrfind) fclose(instrfind); delete(instrfind); end III CHƢƠNG TRÌNH HỆ THỐNG NGOẠI VI #include "SoftwareSerial.h" #include "Hshopvn_GSM.h" #include SoftwareSerial sim800ds(2, 3); HshopGSM HGSM = HshopGSM(&sim800ds); String Str_PhoneNum = "01672131349"; unsigned long UL_PhoneNum = 1672131349; Servo myservo; int data =0; int servoPin = 10; int j=1; int led = 4; int bell = 9; int i; void setup() { Serial.begin(9600); HGSM.init(&GSM_Ready, 9600); pinMode(led, OUTPUT); pinMode(bell, OUTPUT); myservo.attach(servoPin); myservo.write(130); } void loop() { HGSM.handle(); if(Serial.available()>0){ data = Serial.read(); j=1; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC i=1; } if (data == 2) { digitalWrite(led,HIGH); delay(1000); digitalWrite(led,LOW); delay(1000); digitalWrite(bell,HIGH); if (i==1){ HGSM.sendsms(Str_PhoneNum, "BAO DONG CO TROM "); i =i + 1; } } else if (data == 1) { if (j==1){ myservo.write(0); delay(4000); myservo.write(130); j=j+1; } } else { digitalWrite(led,LOW); digitalWrite(bell,LOW); } } void GSM_Ready() { if (HGSM.getDataGSM() != "") { Serial.println(HGSM.getDataGSM()); //show data comming } else; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ... ? ?Ứng dụng xử lý ảnh thi? ??t kế thi công mạch chống trộm thông minh. ” để làm đồ án tốt nghiệp Nhằm khắc phục phần ngăn ngừa hậu nêu trên, nhóm sinh viên chúng em chọn đề tài ? ?Ứng dụng xử lý ảnh thi? ??t. .. CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH THI? ??T KẾ THI CÔNG MẠCH CHỐNG TRỘM... Chương 2: Cơ sở lý thuyết Giới thi? ??u hệ thống xử lý ảnh Những vấn đề hệ thống xử lý ảnh Giới thi? ??u khái quát linh kiện sử dụng thi? ??t kế, thi công đề tài Chương 3: Tính tốn thi? ??t kế Tổng quan