1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

BAI TAP THI Xử LÝ Ảnh

37 31 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 0,91 MB

Nội dung

function varargout = Chuyen_he_mau(varargin) % bat dau viet chuong trinh gui_Singleton = 1; gui_State = struct(gui_Name, mfilename, ... gui_Singleton, gui_Singleton, ... gui_OpeningFcn, Chuyen_he_mau_OpeningFcn, ... gui_OutputFcn, Chuyen_he_mau_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 % thuc hien ngay truoc khi %chuyen_he_mau hien thi function Chuyen_he_mau_OpeningFcn(hObject, eventdata, handles, varargin) % OutputFcn.đây là hàm không có đối số đầu ra % hObject để xử lý hình ảnh % eventdata dành riêng để xác định phiên bản tiếp theo trong MATLAB % handles cấu trúc có xử lý dữ liệu người dùng (xem trong GUIDATA) % varargin đối số trong dòng lệnh nhắc (xem trong VARARGIN) handles.output = hObject; % cập nhật cấu trúc xử lý guidata(hObject, handles); function varargout = Chuyen_he_mau_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

===========BÀI TẬP CHUYỂN HỆ MÀU============== function varargout = Chuyen_he_mau(varargin) % bat dau viet chuong trinh///////////////////////////// gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @Chuyen_he_mau_OpeningFcn, 'gui_OutputFcn', @Chuyen_he_mau_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 % thuc hien truoc %chuyen_he_mau hien thi function Chuyen_he_mau_OpeningFcn(hObject, eventdata, handles, varargin) % OutputFcn.đây hàm khơng có đối số đầu % hObject để xử lý hình ảnh % eventdata dành riêng để xác định phiên MATLAB % handles cấu trúc có xử lý liệu người dùng (xem GUIDATA) % varargin đối số dòng lệnh nhắc (xem VARARGIN) handles.output = hObject; % cập nhật cấu trúc xử lý guidata(hObject, handles); function varargout = Chuyen_he_mau_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % lap trinh cho nut nhân open///////////////////////////////////////////////// function pushbutton_open_Callback(hObject, eventdata, handles) global Im % khai báo biến toàn cục % ham uigetfile dùng để mở hộp thoại ,cho phép người dùng lựa chon ảnh ( để trả tên %đường dẫn đến tệp bạn chọn) [filename,pathname] = uigetfile({'*.png'},'Please select an png image'); if ~isequal(filename,0) %so sánh file name không Info = imfinfo(fullfile(pathname,filename)); %hien thị thông tin ảnh if Info.BitDepth = = 24 % BitDepth số bit pixel Im = imread(fullfile(pathname,filename)); % đọc ảnh axes(handles.axes1) % hiển thị ảnh axes1 imshow(Im) % hiển thị hình ảnh else msgbox('Select the png image'); % tao hộp thoại với nội dung ‘ select the pnj image’ return end else return end % lâp trình cho nút nhấn CMY/////////////////////////////////////////////////////// function pushbutton_CMY_Callback(hObject, eventdata, handles) global Im % khai báo biến toàn cục CMY=uint8(zeros(size(Im))); % ép kiểu % cơng thức tính tốn ảnh CMY % cơng thức tinh tốn ảnh CMY for i=1:size(Im,1) for j=1:size(Im,2) CMY(i,j,1)=255-Im(i,j,1); % 255 - ảnh Red CMY(i,j,2)=255-Im(i,j,2); % 255- ảnh Green CMY(i,j,3)=255-Im(i,j,3); % 255- ảnh Blue end end cla axes(handles.axes1) % hiển thị ảnh lên axes1 imshow(CMY) % hiển thị ảnh CMY title('CMY model') % thêm vào tiêu đề với nội dung ‘ CMY model ’ % lập trình cho nút nhấn YUV.//////////////////////////////////////////////////////// function pushbutton_YUV_Callback(hObject, eventdata, handles) global Im % khai báo biến toàn cục YUV=uint8(zeros(size(Im))); % ép kiểu % cơng thức tính tốn để ảnh YUV/////////////////////////////////////////////////////////// % cơng thức tính tốn để ảnh YUV////////////////////////////////////////////////////////////////// for i=1:size(Im,1) for i=1:size(Im,1) for j=1:size(Im,2) YUV(i,j,1)=0.299*Im(i,j,1)+0.578*Im(i,j,2)+0.114*Im(i,j,3); % im ( i,j,1) ảnh Red YUV(i,j,2)=-0.147*Im(i,j,1)-0.289*Im(i,j,2)+0.436*Im(i,j,3); % im (i,j,2) ảnh Green YUV(i,j,3)=0.615*Im(i,j,1)-0.515*Im(i,j,2)-0.100*Im(i,j,3); % im (I,j,3) ảnh Blue end end end cla axes(handles.axes1) % hiển thị ảnh lên axes1 imshow(YUV) % hiển thị ảnh YUV title('YUV model') % thêm vào tiêu đề với nội dung ‘ YUV model’ % lập trình cho nút nhấn _YIQ.//////////////////////////////////////////////////////////////////////// function pushbutton_YIQ_Callback(hObject, eventdata, handles) global Im % khai báo biến toàn cục YIQ=uint8(zeros(size(Im))); % ép kiểu % cơng thức tính tốn cho ảnhYIQ//////////////////////////////////////// % cơng thức tính toán cho ảnh YIQ////////////////////////////////////// for i=1:size(Im,1) for j=1:size(Im,2) YIQ(i,j,1)=0.30*Im(i,j,1)+0.59*Im(i,j,2)+0.11*Im(i,j,3); % im ( i,j,1) ảnh Red YIQ(i,j,2)=0.60*Im(i,j,1)-0.27*Im(i,j,2)-0.322*Im(i,j,3); % im (i,j,2) ảnh Green YIQ(i,j,3)=0.21*Im(i,j,1)-0.52*Im(i,j,2)+0.31*Im(i,j,3); % im (I,j,3) ảnh Blue end end cla axes(handles.axes1) % hiển thị ảnh lên axes1 imshow(YIQ) % hiển thị ảnh YIQ title('YIQ model') % thêm vào tiêu đề với nội dung ‘ YIQ model’ % lập trình cho nút nhấn HSV//////////////////////////////////////////////// function pushbutton_HSV_Callback(hObject, eventdata, handles) global Im HSV=uint8(zeros(size(Im))); % ép kiểu HSV=rgb2hsv(Im); % chuyển đổi ảnh rgb sang ảnh hsv cla axes(handles.axes1) % hiển thị ảnh lên axes1 imshow(HSV) % hiển thị ảnh YIQ title('HSV model') % thêm vào tiêu đề với nội dung ‘ YIQ model’ % lập trình cho nút nhấn PAL///////////////////////////////////////////////////////////////// function pushbutton_PAL_Callback(hObject, eventdata, handles) global Im PAL=uint8(zeros(size(Im))); % ép kiểu % cơng thức tính ảnh PAL//////////////////////////////////////////////////////////////////// % cơng thức tính ảnh PAL/////////////////////////////////////////////////////////////// for i=1:size(Im,1) for j=1:size(Im,2) PAL(i,j,1)=0.299*Im(i,j,1)'+0.587*Im(i,j,2)'+0.114*Im(i,j,3)'; PAL(i,j,2)=0.492*(Im(i,j,3)'-PAL(i,j,1)); PAL(i,j,3)=0.877*(Im(i,j,1)'-PAL(i,j,1)); % im ( i,j,1) ảnh Red - im ( i,j,1)’ ảnh chuyển vị ảnh Red % im (i,j,2) ảnh Green im (i,j,2)’ ảnh chuyển vị ảnh Green % im (I,j,3) ảnh Blue im (I,j,3)’ ảnh chuyển vị ảnh blue end end cla axes(handles.axes1) imshow(PAL) title('PAL model') % hiển thị ảnh lên axes1 % hiển thị ảnh PAL % thêm vào tiêu đề với nội dung ‘ PAL model’ % lập trình nút nhấn cho _SECAM///////////////////////////////////////////////////// function pushbutton_SECAM_Callback(hObject, eventdata, handles) global Im % khai báo biến toàn cục SECAM=uint8(zeros(size(Im))); % ép kiểu % cơng thức tính cho ảnh SECAM////////////////////////////////////////////////////// % cơng thức tính cho ảnh SECAM///////////////////////////////////////////////////// for i=1:size(Im,1) for j=1:size(Im,2) SECAM(i,j,1)=0.299*Im(i,j,1)+0.587*Im(i,j,2)+0.114*Im(i,j,3); % im ( i,j,1) ảnh Red SECAM(i,j,2)=-0.450*Im(i,j,1)-0.883*Im(i,j,2)+1.333*Im(i,j,3); % im (i,j,2) ảnGreen SECAM(i,j,3)=-1.333*Im(i,j,1)+1.116*Im(i,j,2)+0.217*Im(i,j,3); % im (I,j,3) ảnh Blue end end cla axes(handles.axes1) % hiển thị ảnh lên axes1 imshow(SECAM) % hiển thị ảnh PAL title('SECAM model') % thêm vào tiêu đề với nội dung ‘ PAL model’ %lập trình cho nút nhấn_Exit/////////////////////////////////////////////////////////////// function pushbutton_Exit_Callback(hObject, eventdata, handles) closereq % lập trình cho nút nhấn _save///////////////////////////////////////////////////// function pushbutton_save_Callback(hObject, eventdata, handles) global Im [filename,pathname]=uiputfile({'*.jpg','JPEG Files(*.jpg)'; '*.bmp','Bitmap Files(*.bmp)';'*.gif','GIF Files(*.gif)'; '*.tif','TIFF Files(*.tif)'; '*.*','all image file'},'Do you want to save the selected image?','Result_Image/'); Imwrite (Im,[pathname,filename]); ==============BÀI TẬP ĐẾM SỐ LƯỢNG ĐỐI TƯỢNG =================== function varargout = Dem_SL_doi_tuong(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @Dem_SL_doi_tuong_OpeningFcn, 'gui_OutputFcn', @Dem_SL_doi_tuong_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 % % thuc hien truoc %chuyen_he_mau hien thi function Dem_SL_doi_tuong_OpeningFcn(hObject, eventdata, handles, varargin) % hàm khơng có đối số đầu % hObject để xử lý hình ảnh % eventdata dành riêng để xác định phiên MATLAB % handles cấu trúc có xử lý liệu người dùng (xem GUIDATA) % varargin đối số dòng lệnh nhắc (xem VARARGIN) handles.output = hObject; guidata(hObject, handles); function varargout = Dem_SL_doi_tuong_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % lập trình cho nut nhấn _open/////////////////////////////////////////////////////// function pushbutton_open_Callback(hObject, eventdata, handles) global Img % khai báo biến toàn cục [filename,pathname] = uigetfile({'*.png'},'Please select an png image'); % ham uigetfile dùng để mở hộp thoại ,cho phép người dùng lựa chon ảnh ( để trả tên % đường dẫn đến tệp bạn chọn) if ~isequal(filename,0) %so sánh file name không Info = imfinfo(fullfile(pathname,filename)); %hien thị thông tin ảnh if Info.BitDepth == % BitDepth số bit pixel Img = imread(fullfile(pathname,filename)); % đọc ảnh axes(handles.axes1) % hiển thị ảnh axes1 imshow(Img) % hiển thị ảnh else msgbox('Select the png image'); % tao hộp thoại với nội dung ‘ select the pnj image’ return end else return end % - lập trình cho nút nhấn _count.////////////////////////////////////////////////// function pushbutton_count_Callback(hObject, eventdata, handles) global Img % khai báo biến toàn cục % biến đổi ảnh thành ảnh nhị phân///////////////////////////////////////////////// level=0.5; % ngưỡng lấy I2=im2bw(Img,level); %im2bw: bien buc anh anh nhi phan, co bien dau vao la gia tri nguong:level %level=0-1, neu ham co gia tri cuong sang < level : 0(mau den), nguoc lai: 1(mau trang) axes(handles.axes1) % hiển thị ảnh axes1 imshow(I2) % hiển thị ảnh BW=imfill(I2,'holes'); % điền đầy lỗ cịn trốn hình axes(handles.axes1) % hiển thị ảnh axes1 imshow(BW) % hiển thị ảnh % đếm số lượng đối tượng///////////////////////////////////////////////// CC=bwconncomp(BW,26); % bwconncomp:ham tim cac doi tuong co lien ket kin voi anh nhi phan % no tra ve thuoc tinh(Connectivity,ImageSize,NumberObjects,PixelIdxList) % 26: dem so luong cac doi tuong co tren 26 lan can lien ket voi no set(handles.edit_display,'String',num2str(CC.NumObjects)); % CC.NumObjects: chuyển từ dạng số sang dạng chuỗi % lấy thuộc tính đối tượng đưa dạng chuỗi để máy tính đọc % thống kê đặc tính vùng trắng s=regionprops(BW,'Centroid'); %regionprops:ham lay duoc dac tinh cua vung trang anh nhi phan %s: la cau truc mang, voi truong : Centroid hay noi cach khac: gia tri % cua tam duoc luu vao truong Centroid center=cat(1,s.Centroid); % dung ham cat:ham ghep chuoi,bien center >1 vector % cat(1,s.Centroid): > tam co dang [X Y] % chung ta co tam cua khoi hinh tron % hiển thị hold on % giữ lại ảnh trước plot(center(:,1),center(:,2),'+r') %tam he toa do, co toa la X va Y %tam(:,1):lay toan bo cac hang + chi lay cot 1(X) %tam(:,2):lay toan bo cac hang + chi lay cot 2(Y) %'+g': de tam co dang dau + va co mau function edit_display_Callback(hObject, eventdata, handles) function edit_display_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end =================BÀI TẬP CẮT BIỂN SỐ XE ====================== function varargout = Tach_BSX(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @Tach_BSX_OpeningFcn, 'gui_OutputFcn', @Tach_BSX_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 Tach_BSX_OpeningFcn(hObject, eventdata, handles, varargin) % OutputFcn.đây hàm khơng có đối số đầu % hObject để xử lý hình ảnh % eventdata dành riêng để xác định phiên MATLAB % handles cấu trúc có xử lý liệu người dùng (xem GUIDATA) % varargin đối số dòng lệnh nhắc (xem VARARGIN) handles.output = hObject; guidata(hObject, handles); function varargout = Tach_BSX_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % lập trình cho nút nhấn open////////////////////////////////////////////////////////////////// function pushbutton1_open_Callback(hObject, eventdata, handles) global IMG % khai báo biến toàn cục cla; [filename path]=uigetfile({'*.jpg';'*.*'},'Select an image'); % ham uigetfile dùng để mở hộp thoại ,cho phép người dùng lựa chon ảnh ( để trả tên % đường dẫn đến tệp bạn chọn) if ~isequal(filename,0); IMG = imread([path,filename]); axes(handles.axes_input); imshow(IMG); else return end %so sánh file name không % đọc ảnh theo tên đường dẫn % hiển thị ảnh lên axes % hiển thị ảnh % lập trình cho nút nhấn separate//////////////////////////////////////////////////////////////////////// function pushbutton3_separate_Callback(hObject, eventdata, handles) global IMG % gọi biến toàn cục IMG = imresize(IMG,[500,600]); %thu nhỏ kích thước ảnh cịn lại [500,600]pixel I1 = rgb2gray(IMG); % chuyển ảnh màu sang ảnh xám bw = I1 < mean(I1(:)); %chuyển từ ảnh xám thành ảnh trắng đen với ngưỡng trung bình tất pixel %Hàm mean hàm lấy ngưỡng pixel % chụp ảnh bị nghiêng thực xoay ảnh câu lệnh sau S = regionprops(I1,'Orientation'); %regionprops:hàm đo để lấy đặc tính vùng trắng ảnh nhị phân alpha = S.Orientation; % tìm góc nghiêng alpha hàm orientation if alpha N) plot(boundary(:,2),boundary(:,1),'g','LineWidth',2); %dùng hàm boundary để trả lại viền xanh cho ảnh theo vị trí hàng cột với độ dày % (LineWidth)của viền else plot(boundary(:,2),boundary(:,1),'r','LineWidth',2); %dùng hàm boundary để trả lại viền đỏ cho ảnh theo vị trí hàng cột với độ dày (LineWidth)của viền % end end % phần cắt ảnh ////////////////////////////////////////////////////////////////////////////////////////////////////////// Sdata=regionprops(L,'BoundingBox'); % tạo vùng giới hạn đường bao h = 0; for i=1:N Img=imcrop(I3,Sdata(i).BoundingBox); % Hàm imcrop cắt đường bao tạo %Khi cắt ảnh lấy ảnh: quy luật lấy ảnh từ trái sang phải cắt từ viền đỏ vô %trong,khi cắt từ trái sang phải ta cắt số đứng trước cắt từ xuống imwrite(Img,'D:\\image_test.jpg'); %Hàm imwrite lưu ảnh vừa cắt thử với tên ảnh image_test info = imfinfo('D:\\image_test.jpg'); %Hàm imfinfo lấy thông tin ảnh vừa cắt thử with = info.Width; % lấy thông tin chiều rông hieght = info.Height; % lấy thông tin chiều cao if with >15 && hieght >15 % Lấy ngưỡng độ rộng chiều cao để việc cắt đường bao với số h = h+1; if h = = imwrite(Img,'D:\\img1.jpg'); info1 = imfinfo('D:\\image_test.jpg'); size1 = info1.FileSize; else if h = = imwrite(Img,'D:\\img2.jpg'); % lưu ảnh với tên img1 % lấy thông tin ảnh với hàm imfinfo % thông tin ảnh lấy thông tin file size 10 k=k+1; cd cd 'D:\Kytu\6' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Number 6'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\7' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Number 7'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\8' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Number 8'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd 23 cd 'D:\Kytu\9' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Number 9'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\A' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter A'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\B' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter B'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\C' k=1; str='.bmp'; 24 for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter C'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\D' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter D'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\E' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter E'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\F' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); 25 axes(handles.axes1); set(handles.text2,'String','Read Letter F'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\G' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter G'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\H' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter H'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\I' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter I'); set(handles.edit1,'String',num2str(i)); 26 imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\J' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter J'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\K' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter K'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\L' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter L'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); 27 end k=k+1; cd cd 'D:\Kytu\M' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter M'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\O' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter O'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\P' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter P'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd 28 cd 'D:\Kytu\Q' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter Q'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\R' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter R'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\S' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter S'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\T' k=1; 29 str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter T'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\U' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter U'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\V' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter V'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\X' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); 30 a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter X'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\Y' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter Y'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\Z' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter Z'); set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd cd 'D:\Kytu\W' k=1; str='.bmp'; for i=1:15 filename=strcat(num2str(i),str); a=imread(filename); axes(handles.axes1); set(handles.text2,'String','Read Letter W'); 31 set(handles.edit1,'String',num2str(i)); imshow(a) pause(0.05); end k=k+1; cd function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end =====ĐIỀU KHIỂN ĐỘNG CƠ BẰNG NHẬN DẠNG KHUÔN MẶT ========= function varargout = c(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @c_OpeningFcn, 'gui_OutputFcn', @c_OutputFcn, 'gui_LayoutFcn', [] , 32 '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 c_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = c_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % lập trình cho nút nhấn pushtton1/////////////////////// function pushbutton1_Callback(hObject, eventdata, handles) global A; % khai báo biến toàn cục %chon anh va tai anh len axes1 cla(handles.axes1,'reset'); cla(handles.axes2,'reset'); cla(handles.axes3,'reset'); cla(handles.axes4,'reset'); cla(handles.axes1,'reset'); [filename, pathname] = uigetfile('*','LOAD AN IMAGE'); %chon va lay ten va duong dan tep tin A=imread(fullfile(pathname, filename)); %A = doc ma tran anh tuxay dung mot dac ta tap tin day du tu thu muc ten va tap tin %duoc chi dinh axes(handles.axes1); % hiển thị ảnh lên axes1 imshow(A); %Hien thi hinh anh A handles.fullname= A; guidata(hObject, handles); % lập trinh cho nut nhan pushbutton2////////////////////////////////////////////////////////////// function pushbutton2_Callback(hObject, eventdata, handles) global A; %Lay khung khuon mat nguoi tu anh va hien thi axes2 cla(handles.axes2,'reset'); A=handles.fullname; 33 axes(handles.axes2); imshow(A); %Hien thi hinh anh A FaceDetect = vision.CascadeObjectDetector; %Thuat toan cau hinh de phat hien va tao khung khuon mat BB = step(FaceDetect,A); y=size(BB,1); hold on % giữ lại ảnh trươc for i=1:y a=rectangle('Position', [BB(i,1),BB(i,2),BB(i,3),BB(i,4)+15],'LineWidth',3,'LineStyle','-','EdgeColor','r'); end % lập trình cho nut nhấn function pushbutton3_Callback(hObject, eventdata, handles) global A; %Hien thi cac khung anh khuon mat da phat hien//////////////////////////////////////////////// FaceDetect = vision.CascadeObjectDetector; BB = step(FaceDetect,A); hold on J = imcrop(A,[BB(1,1),BB(1,2),BB(1,3),BB(1,4)]); %J= Cat anh A theo kich co da duoc dinh vi khung khuon mat axes(handles.axes4) %Gan cho axes4 imshow(J); %Hien thi anh J handles.J= J; % - lập trinh chonut nhấn pushbutton/5///////////////////////////////////////////////////////////////// function pushbutton5_Callback(hObject, eventdata, handles) global A; FaceDetect = vision.CascadeObjectDetector; BB = step(FaceDetect,A); hold on J = imcrop(A,[BB(1,1),BB(1,2),BB(1,3),BB(1,4)]); B = imread('D:\btlxla\1.jpg'); FaceDetect1 = vision.CascadeObjectDetector; BB = step(FaceDetect1,B); hold on K= imcrop(B,[BB(1,1),BB(1,2),BB(1,3),BB(1,4)]); %J= Cat anh A theo kichco da duoc dinh vi khung khuon mat////////////////////////////////////// gray = rgb2gray(K); gray2 = rgb2gray(J); tem=sum(sum(gray)); tem2=sum(sum(gray2)); if (tem-100 < tem2 && tem2 < tem+100) set(handles.text2,'String',('gai dep')) axes(handles.axes3); imshow(B); s = serial('COM3'); fopen(s); fprintf(s,'1'); 34 fclose(s); else set(handles.text2,'String',('khong nhan dang duoc')) end =============XỬ LÝ ẢNH THEO BIÊN ===================== function varargout = xulyanhtheobien(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @xulyanhtheobien_OpeningFcn, 'gui_OutputFcn', @xulyanhtheobien_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 35 gui_mainfcn(gui_State, varargin{:}); end function xulyanhtheobien_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = xulyanhtheobien_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % Lập trình cho nút nhan open///////////////////////////////////////////// function open_Callback(hObject, eventdata, handles) global y ; [filename path]=uigetfile({'*.jpg';'*.png';'*.bmp';'*.jpeg';'*.tif';'*.*'},'File Selector'); full=strcat(path,filename); a=imread(full); axes(handles.axes1) imshow(a) b=rgb2gray(a); c=edge(b,'canny'); axes(handles.axes2) imshow(c) [x y]=find(c) % lập trình cho nút nhấn button0//////////////////////////////////// function button0_Callback(hObject, eventdata, handles) global s; fwrite(s,[0]); % lập trình cho nut nhấn button1/////////////////////////////////// function button1_Callback(hObject, eventdata, handles) global s ; global y ; fwrite(s,[y]); % lập trình cho nut nhấn buttonopen//////////////////////////// function buttonopen_Callback(hObject, eventdata, handles) global s; s= serial('COM1'); fopen(s); set(handles.buttonopen,'Enable','off'); set(handles,buttonclose,'Enable','on'); % lập trình cho nut nhấn buttonclose/////////////////////////////////// 36 function buttonclose_Callback(hObject, eventdata, handles) global s; fclose(s); set(handles.buttonopen,'Enable','on'); set(handles,buttonclose,'Enable','off'); 37

Ngày đăng: 25/06/2021, 06:46

TỪ KHÓA LIÊN QUAN

w