Tugas PCD
mendeteksi tepi sebuah Citra dengan menggunakan Operator Kompas.
functionvarargout =
kompas(varargin)
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn',
@kompas_OpeningFcn, ...
'gui_OutputFcn', @kompas_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
ifnargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before kompas is made visible.
functionkompas_OpeningFcn(hObject,
eventdata, handles, varargin)
% Choose default command line output for kompas
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% --- Outputs from this function are returned to the
command line.
functionvarargout =
kompas_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function
pushbutton1_Callback(hObject, eventdata, handles)
[filename,pathname] = uigetfile ( ...
{'*.bmp;*.jpg;*.tif;*.gif', 'file lukisan (*.bmp,*.jpg,*.tif,*.gif)';
'*.bmp', 'gambar bmp (*.bmp)';...
'*.jpg', 'gambar JPEG (*.jpg)';...
'*.tif', 'gambartif (*.tif)';...
'*.gif', 'gambar gif (*.gif)';...
'*.*', 'semua File (*.*)'},...
'pick a file');
citra=imread(fullfile(pathname,filename));
[m n o]=size(citra);
axes(handles.axes1);
imshow(citra);
%Apabilaberupacitrawarnamakaakandirubahkegreeyscale
if(o == 3)
citra = rgb2gray(citra);
end
handles.citra=citra;
handles.m=m;
handles.n=n;
handles.o=o;
guidata(hObject, handles);
% --- Executes on button press in pushbutton2.
function
pushbutton2_Callback(hObject, eventdata, handles)
hasil = compass(handles.citra);
hasil =
uint8(hasil);
axes(handles.axes2);
imshow(hasil);
% --- Executes on button press in pushbutton3.
function
pushbutton3_Callback(hObject, eventdata, handles)
delete(handles.figure1);
%FugnsiKompas
-->dikonvolusikemudiandicarinilakekuatantepiterbesar
functionhasil =
compass(citra)
mask(:,:,1)=[1
1 1; 1 -2 1;-1 -1 -1];
mask(:,:,2)=[1
1 1; -1 -2 1;-1 -1 1];
mask(:,:,3)=[-1
1 1;-1 -2 1;-1 1 1];
mask(:,:,4)=[-1
-1 1;-1 -2 1;1 1 1];
mask(:,:,5)=[-1
-1 -1;1 -2 1;1 1 1];
mask(:,:,6)=[1
-1 -1;1 -2 -1;1 1 1];
mask(:,:,7)=[1
1 -1;1 -2 -1;1 1 -1];
mask(:,:,8)=[1
1 1;1 -2 -1;1 -1 -1];
hasil = konvolusi(citra,mask(:,:,1));
for i=2:8,
hasil=max(hasil,konvolusi(citra,mask(:,:,i)));
end;
%FungsiKonvolusi
functionhasil=konvolusi(x,k)
x = double(x);
hasil = x;
[m n] =
size(x);
for i=2:m-1,
for j=2:n-1,
hasil(i,j) = x(i-1,j-1)*k(1,1) + x(i-1,j)*k(1,2)
+x(i-1,j+1)*k(1,3)...
+ x(i,j-1)*k(2,1) + x(i,j) * k(2,2) +
x(i,j+1)*k(2,3)...
+
x(i+1,j-1)*k(3,1) + x(i+1,j)*k(3,2) + x(i+1,j+1)*k(3,3);
end;
end;
hasil=uint8(hasil);
selamat Mencoba.. /*:D*/
Tidak ada komentar:
Posting Komentar