dip : image aquisition with matlab gui

15
การประมวลผลภาพดิจิทัล ดร . วีรวรรณ จันทนะทรัพย์ อาจารย์ประจาสาขาวิชาวิทยาการคอมพิวเตอร์ E-mail: [email protected] (Digital Image Processing) เอกสารประกอบการเรียนการสอน สาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยเทคโนโลยีราชมงคลพระนคร RMUTP OPEN COURSEWARE Course: Digital Image Processing

Upload: veerawan-janthanasub

Post on 12-Apr-2017

149 views

Category:

Science


4 download

TRANSCRIPT

Page 1: DIP : Image Aquisition with  MATLAB GUI

การประมวลผลภาพดิจิทัลดร. วีรวรรณ จันทนะทรัพย์

อาจารย์ประจ าสาขาวิชาวิทยาการคอมพิวเตอร์E-mail: [email protected]

(Digital Image Processing)เอกสารประกอบการเรียนการสอนสาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยีมหาวิทยาลัยเทคโนโลยีราชมงคลพระนคร

RMUTP OPEN COURSEWARECourse: Digital Image Processing

Page 2: DIP : Image Aquisition with  MATLAB GUI

MATLAB® GUI : Image Acquisition

วัตถปุระสงคก์ารเรยีน

1. เพื่อใหผ้้เ้รยีนมทีกัษะในการเขยีนโปรแกรมในรป้แบบ GUI และใชเ้ครื่องมอืต่าง ๆ ของ MATLAB ในการสรา้ง GUI

2. เพื่อใหผ้้เ้รยีนมทีกัษะการเขยีนโปรแกรมส าหรบัเชื่อมตอ่อปุกรณ ์ ดิจิทลัเวบ็แคม อันเป็นทีไ่ดม้าซึง่ภาพ (Image Acqusition)

หัวขอ้แบบฝึกทกัษะปฏบิตัิการเขยีนโปรแกรมเพื่อเชื่อมตอ่อปุกรณ ์ดิจิทลัเวบ็แคมเพื่อใหไ้ดภ้าพดจิทิลั(Image Acquisition: Connect Digital WebCAM)

Page 3: DIP : Image Aquisition with  MATLAB GUI

ออกแบบ GUI ก าหนด Property Inspector ดังภาพ

axes3

axes1axes1

btnConnectWebcam

btnCapture

btnSave btnCrop

uipanel1edithwID

edithwRes

listboxWebCam

listboxRes

btnExit

Page 4: DIP : Image Aquisition with  MATLAB GUI

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);

เขียนรหสัค าสัง่

Page 5: DIP : Image Aquisition with  MATLAB GUI

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);

เขียนรหสัค าสัง่

Page 6: DIP : Image Aquisition with  MATLAB GUI

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');

เขียนรหสัค าสัง่

Page 7: DIP : Image Aquisition with  MATLAB GUI

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);

เขียนรหสัค าสัง่

Page 8: DIP : Image Aquisition with  MATLAB GUI

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');

เขียนรหสัค าสัง่

Page 9: DIP : Image Aquisition with  MATLAB GUI

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

เขียนรหสัค าสัง่

Page 10: DIP : Image Aquisition with  MATLAB GUI

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);

เขียนรหสัค าสัง่

Page 11: DIP : Image Aquisition with  MATLAB GUI

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)

เขียนรหสัค าสัง่

Page 12: DIP : Image Aquisition with  MATLAB GUI

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)

เขียนรหสัค าสัง่

Page 13: DIP : Image Aquisition with  MATLAB GUI

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

เขียนรหสัค าสัง่

Page 14: DIP : Image Aquisition with  MATLAB GUI

จากบทเรยีนImage Processing withImage Acquisition

และแบบฝึกปฏบิตันิี้

ให้ผ้้เรยีนเขยีนรหสัค าสัง่ดงันี้

**ก าหนดสง่ใหผ้้เ้รยีนดจ้ากระบบการเรยีนการสอนออนไลน ์ LMS

งานทีม่อบหมายประจ าสปัดาห์

ฝึกปฏบิตัเิขยีนรหสัค าสัง่ในหอ้งเรยีน แลว้เขียนโปรแกรมส่วนเพิม่ขยาย ดังนี้ แสดงผลฮติโตแกรมของภาพทีไ่ดด้ าเนนิการ Capture ฟังกช์นัแปลงภาพเป็นภาพ Grayscale Image ฟังกช์นัแปลงภาพเป็นภาพ Binary Image ฟังกช์นัแปลงภาพสลบัส ี Inverts Color Image

Page 15: DIP : Image Aquisition with  MATLAB GUI

เอกสารอา้งองิหลกั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