DIP : Image Aquisition with MATLAB GUI
-
Upload
veerawan-janthanasub -
Category
Science
-
view
147 -
download
4
Transcript of DIP : Image Aquisition with MATLAB GUI
การประมวลผลภาพดิจิทัลดร. วีรวรรณ จันทนะทรัพย์
อาจารย์ประจ าสาขาวิชาวิทยาการคอมพิวเตอร์E-mail: [email protected]
(Digital Image Processing)เอกสารประกอบการเรียนการสอนสาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยีมหาวิทยาลัยเทคโนโลยีราชมงคลพระนคร
RMUTP OPEN COURSEWARECourse: Digital Image Processing
MATLAB® GUI : Image Acquisition
วัตถปุระสงคก์ารเรยีน
1. เพื่อใหผ้้เ้รยีนมทีกัษะในการเขยีนโปรแกรมในรป้แบบ GUI และใชเ้ครื่องมอืต่าง ๆ ของ MATLAB ในการสรา้ง GUI
2. เพื่อใหผ้้เ้รยีนมทีกัษะการเขยีนโปรแกรมส าหรบัเชื่อมตอ่อปุกรณ ์ ดิจิทลัเวบ็แคม อันเป็นทีไ่ดม้าซึง่ภาพ (Image Acqusition)
หัวขอ้แบบฝึกทกัษะปฏบิตัิการเขยีนโปรแกรมเพื่อเชื่อมตอ่อปุกรณ ์ดิจิทลัเวบ็แคมเพื่อใหไ้ดภ้าพดจิทิลั(Image Acquisition: Connect Digital WebCAM)
ออกแบบ GUI ก าหนด Property Inspector ดังภาพ
axes3
axes1axes1
btnConnectWebcam
btnCapture
btnSave btnCrop
uipanel1edithwID
edithwRes
listboxWebCam
listboxRes
btnExit
function connectWebCAM_OpeningFcn(hObject, eventdata, handles, varargin)
clc;
imaqreset;
camera_name ='winvideo';
camera_info = imaqhwinfo(camera_name);
camera_id = camera_info.DeviceIDs;
camera_resolution = camera_info.DeviceInfo.SupportedFormats;
handles.flagconnect=0;
set(handles.axes1,'visible','off');
set(handles.axes2,'visible','off');
set(handles.btnCapture,'enable','off');
set(handles.btnCrop,'enable','off');
set(handles.listboxRes,'visible','off');
set(handles.btnSave,'enable','off');
i=imread('logo','jpg');
axes(handles.axes3);
imshow(i);
เขียนรหสัค าสัง่
Continue…
set(handles.btnConnectWebcam,'Enable','off')
if camera_id{1}==0
return
else
set(handles.listboxWebCam,'String',{camera_info.DeviceInfo.DeviceName})
end
handles.camera_name = camera_name;
handles.camera_info = camera_info;
handles.camera_id = camera_id;
handles.camera_resolution = camera_resolution;
movegui(gcf,'center');
handles.output = hObject;
guidata(hObject, handles);
เขียนรหสัค าสัง่
function btnConnectWebcam_Callback(hObject, eventdata, handles)
handles.flagconnect;
if handles.flagconnect == 0
handles.flagconnect=1;
set(hObject,'string','Disconnect WebCAM');
axes(handles.axes1);
vidID = handles.hwID;
vidRes=handles.hwRes;
vid=videoinput('winvideo',vidID,vidRes);
set(vid, 'FramesPerTrigger', Inf);
set(vid, 'ReturnedColorspace', 'rgb')
vidSize = get(vid, 'VideoResolution');
vidnBands = get(vid, 'NumberOfBands');
hImage = image(zeros(vidSize(2), vidSize(1), vidnBands));
preview(vid,hImage);
set(gca,'xdir','reverse')
handles.objVideo=vid;
set(handles.listboxWebCam,'enable','off');
set(handles.listboxRes,'enable','off');
set(handles.btnCapture,'enable','on');
เขียนรหสัค าสัง่
Continue…
else
set(hObject,'string','Connect Webcam');
set(handles.btnCrop,'enable','off');
axes(handles.axes1);cla;
axes(handles.axes2);cla;
set(handles.listboxWebCam,'enable','on');
set(handles.listboxRes,'enable','on');
clear vid
delete(imaqfind);
delete(handles.objVideo);
handles.flagconnect=0;
set(handles.btnCapture,'enable','off');
set(handles.btnSave,'enable','off');
set(handles.btnCrop,'enable','off');
end
guidata(hObject, handles);
เขียนรหสัค าสัง่
function btnCapture_Callback(hObject, eventdata, handles)
set(handles.axes2,'visible','on')
axes(handles.axes2);
im=getsnapshot(handles.objVideo);
handles.image=im;
set(handles.btnCrop,'enable','on');
image(handles.image),axis off;
set(gca,'xdir','reverse')
set(handles.btnSave,'enable','on');
set(handles.btnCrop,'enable','on');
เขียนรหสัค าสัง่
function btnSave_Callback(hObject, eventdata, handles)
% hObject handle to btnSave (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
imsave
เขียนรหสัค าสัง่
function btnCrop_Callback(hObject, eventdata, handles)
imcrop(handles.axes2);
handles.img=getimage(gca); close;
axes(handles.axes2); cla; imshow(handles.img)
%s=num2str(size(handles.img)); set(handles.dim2,'String',s);
guidata(hObject,handles);
%updateg4(handles);
เขียนรหสัค าสัง่
function listboxWebCam_Callback(hObject, eventdata, handles)% hObject handle to listboxWebCam (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns listboxWebCam contents as cell array
% contents{get(hObject,'Value')} returns selected item from listboxWebCam
hwID = get(hObject,'Value');handles.camera_resolution = handles.camera_info.DeviceInfo(hwID).SupportedFormats;
set(handles.listboxRes,'visible','on');
set(handles.listboxRes,'String',handles.camera_resolution);
set(handles.edithwID,'String',hwID);
handles.hwID=hwID;
guidata(hObject, handles)
เขียนรหสัค าสัง่
function listboxRes_Callback(hObject, eventdata, handles)% hObject handle to listboxRes (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns listboxRes contents as cell array
% contents{get(hObject,'Value')} returns selected item from listboxRes
val= get(hObject,'value');
hwRes=char(handles.camera_resolution(val));
set(handles.btnConnectWebcam,'enable','on');
set(handles.edithwRes,'String',hwRes)
handles.hwRes=hwRes;
guidata(hObject, handles)
เขียนรหสัค าสัง่
function btnExit_Callback(hObject, eventdata, handles)
choice = questdlg('Do you want exit ...',...
'Exit Application','Yes','No','No');
switch choice
case 'Yes'
close
case 'No'
return
end
เขียนรหสัค าสัง่
จากบทเรยีนImage Processing withImage Acquisition
และแบบฝึกปฏบิตันิี้
ให้ผ้้เรยีนเขยีนรหสัค าสัง่ดงันี้
**ก าหนดสง่ใหผ้้เ้รยีนดจ้ากระบบการเรยีนการสอนออนไลน ์ LMS
งานทีม่อบหมายประจ าสปัดาห์
ฝึกปฏบิตัเิขยีนรหสัค าสัง่ในหอ้งเรยีน แลว้เขียนโปรแกรมส่วนเพิม่ขยาย ดังนี้ แสดงผลฮติโตแกรมของภาพทีไ่ดด้ าเนนิการ Capture ฟังกช์นัแปลงภาพเป็นภาพ Grayscale Image ฟังกช์นัแปลงภาพเป็นภาพ Binary Image ฟังกช์นัแปลงภาพสลบัส ี Inverts Color Image
เอกสารอา้งองิหลกั1. Rafael C. Gonzalez and Richard E. Woods,
“Digital Image Processing Using MATLAB”, Pearson Prentice-Hall,Upper Saddle River,New Jersey,2004.
2. Rafael C. Gonzalez and Richard E. Woods, “Digital Image Processing”, Addison Wesley,Second Edition, 2002. (Course Textbook).
3. GUI for video capture & image processing.by Diego Barragán19 Feb 2015Video capture & image processingRef: http://www.mathworks.com/matlabcentral/fileexchange/49760-gui-for-video-capture---image-processing