Selasa, 16 Desember 2014

Deteksi Tepi dengan Operator Kompas



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