• Tidak ada hasil yang ditemukan

Bin, Li & Yeganeh, M.S. 2012. Comparison for Image Edge Detection Algorithms. IOSR Journal of Computer Engineering, Vol. 2, Issue. 6.

Haritha, Ch., Rupavani, B., Lakhsmi P, Venkataramana, A. & Rajendra Prasad, Ch. 2017 Combined Gaussian Filtering Dwt and Morphological Approach For Satelite Image Enhancement. International Journal of Research in Engineering and Technology (IJRET), e-ISSN:2319-1163.

Jadhav, B.D &. Patil, P.M. 2015. An Effective method for Satelite Image Enhancement. International Conference on Computing, Communication and Automation (ICCCA), pp.1171-1175, IEEE.

Jose, Abin & Sekhar, Chandra. 2013. Bilateral Edge Detector. Acoustics, Speech and Signal Processing (ICASSP). eISSN: 2379-190X, IEEE

Lalwani, S & Ansari, U. 2012. Enhancing the resolution of Satelite Image by Denoising, Deblurring and Contrast Setting. International Journal of Advanced Research in Computer Science (IJARCS), Vol.3, No. 4, ISSN:

0976-5697.

Mishra, A., Mahapatra, S. & Banerjee, S. 2017. Modified Frei-Chen Operator based Infrared and Visible Sensor Image Fusion for Real-Time Applications. IEEE Sensor Journal Vol. 17, Issue. 14.

Marjuki, Bramantiyo. 2014. Sistem Informasi Geografis Menggunakan QGIS 2.0.1.(Online)https://books.google.co.id/books?id=9EgVCAAAQBAJ&hl

=id&source=gbs_navlinks_s (24 Mei 2017)

Sharma, A & Khunteta, A. 2016. Satelite Image Enhancement using Discreate Wavelet Transform, Singular Value Decomposition and its Noise Performance Analysis. Micro Electronics and Telecommunication Engineering (ICMETE), IEEE.

Singh, Simanjrit, & Singh Rakesh. 2015.Comparison of Various edge Detection Techniques. IEEE Computing for Sustainable Global Development (INDIACom), 2015 2nd International Conference

Srisuk, Sanun. 2014. Bilateral Filtering As A Tool For Image Smoothing With Edge Preserving Properties. Electrical Engineering Congress (iEECON), IEEE.

Sudeep D. Thepade, & Yogita D. Shinde. 2015. Improvisation of Content Based Image retrieval using Color Edge Detection with various Gradient Filters

and Slope Magnitude Method. International Conference on Computing Communication Control and Automation (ICCUBEA), IEEE.

Tao, Yang & Yue-hong Q. 2015. Improvement and implementation for canny edge detection algorithm. International Conference on Digital Image Processing (ICDIP).

Xiangguang, Leng Kefeng, Ji., Xiangweng, Xing., Huanxin, Zou. & Shilin, Zhou.

2016. Hybrid bilateral filtering algorithm based on edge detection.

Institution of Engineering and Technology (IET), IEEE USGS landsat8 dataset downloaded [online].

https://earthexplorer.usgs.gov/

LAMPIRAN

Gaussian_Filter.m

function varargout = FilterGaussian(varargin) gui_Singleton = 1;

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

% End initialization code - DO NOT EDIT

% --- Executes just before FilterGaussian is made visible.

function FilterGaussian_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

function varargout = FilterGaussian_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

% --- Executes on button press in Frei_Chen.

function Frei_Chen_Callback(hObject, eventdata, handles) global gbrUji;

global runTimeF;

% Menubah Citra RGB Menjadi Grayscale if isrgb(gbrUji)

Gaussian= fspecial ('gaussian',[3 3], 1.4);

Gaussian_Filter=imfilter (Citra,Gaussian,'same');

F1=[1 sqrt(2) 1; 0 0 0; -1 -sqrt(2) -1]/2*sqrt(2);

F2=[1 0 -1; sqrt(2) 0 -sqrt(2); 1 0 -1]/2*sqrt(2);

F3=[0 -1 sqrt(2); 1 0 -1; -sqrt(2) 1 0]/2*sqrt(2);

F4=[sqrt(2) -1 0; -1 0 1; 0 1 -sqrt(2)]/2*sqrt(2);

F5=[0 1 0; -1 0 -1; 0 1 0]/2;

% --- Executes on button press in MSE_Gaussian.

function MSE_Gaussian_Callback(hObject, eventdata, handles) global gbrUji;

CitraHasil = getimage(handles.axes2);

[psnrval mseval] = MSE_PSNR_Gaussian(gbrUji,CitraHasil);

set(handles.text_MSE_Gaussian,'String',mseval);

% --- Executes on button press in PSNR_Gaussian.

function PSNR_Gaussian_Callback(hObject, eventdata, handles) global gbrUji;

% --- Executes on button press in text_RT1.

function text_RT1_Callback(hObject, eventdata, handles) global runTimeGF;

set(handles.RT_Gaussian,'String',runTimeGF);

% --- Executes on button press in Simpan_Gaussian.

function Simpan_Gaussian_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Simpan Gambar');

% --- Executes on button press in Deteksi_Canny.

global gbrUji;

global runTimeC;

% Menguji Apakah Citra Merupakan Citra RGB atau Citra Grayscale if isrgb(gbrUji)

Gaussian= fspecial ('gaussian',[3 3], 1.4);

filtergauss=imfilter (Citra,Gaussian,'same');

% Menentukan Arah Tepian [b,k]=size(MX);

if(nonmax_suppression(i,j)>thres_max) edge(i,j)=nonmax_suppression(i,j);

% --- Executes on button press in Deteksi_Robert.

function Deteksi_Robert_Callback(hObject, eventdata, handles)

global runTimeR;

axes(handles.axes3);

runTimeR = cputime;

% Menguji Apakah Citra Merupakan Citra RGB atau Citra Grayscale if isrgb(gbrUji)

Gaussian= fspecial ('gaussian',[3 3], 1.4);

Gaussian_Filter=imfilter (Citra,Gaussian,'same');

runTimeR = cputime-runTimeR;

% --- Executes on button press in Buka_Citra.

function Buka_Citra_Callback(hObject, eventdata, handles) global gbrUji;

global NamaFile;

[filename,pathname] = uigetfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Pilih File');

Ukuran = [int2str(k) 'x' int2str(b)];

% Atur Data Citra

% --- Executes on button press in Hapus_Citra.

function Hapus_Citra_Callback(hObject, eventdata, handles) axes(handles.axes1);

cla reset;

set(handles.axes1,'XTick',[]);

set(handles.axes1,'YTick',[]);

% --- Executes on button press in Tutup.

function Tutup_Callback(hObject, eventdata, handles)

selection=questdlg(['Tutup Aplikasi ' get(handles.figure1,'Name')''],...

['Tutup Aplikasi ' get(handles.figure1,'Name')''],...

'Ya','Tidak','Ya');

% --- Executes on button press in MSE_Robert.

function MSE_Robert_Callback(hObject, eventdata, handles) global gbrUji;

%baca Citra Hasil

CitraHasil = getimage(handles.axes3);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_MSE_Robert,'String',mseval);

% --- Executes on button press in Simpan_Robert.

function Simpan_Robert_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Simpan Gambar');

% --- Executes on button press in PSNR_Robert.

function PSNR_Robert_Callback(hObject, eventdata, handles) global gbrUji;

%Baca Citra Hasil

CitraHasil = getimage(handles.axes3);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_PSNR_Robert,'String',psnrval);

% --- Executes on button press in RT_Robert.

function RT_Robert_Callback(hObject, eventdata, handles) global runTimeR;

set(handles.text_RT_Robert,'String',runTimeR);

% --- Executes on button press in MSE_Canny.

function MSE_Canny_Callback(hObject, eventdata, handles) global gbrUji;

%baca Citra Hasil

CitraHasil = getimage(handles.axes4);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_MSE_Canny,'String',mseval);

% --- Executes on button press in PSNR_Canny.

function PSNR_Canny_Callback(hObject, eventdata, handles) global gbrUji;

%Baca Citra Hasil

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_PSNR_Canny,'String',psnrval);

% --- Executes on button press in RT_Canny.

function RT_Canny_Callback(hObject, eventdata, handles) global runTimeC;

set(handles.text_RT_Canny,'String',runTimeC);

% --- Executes on button press in Simpan_Canny.

function Simpan_Canny_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Simpan Gambar');

% --- Executes on button press in MSE_Frei_Chen.

function MSE_Frei_Chen_Callback(hObject, eventdata, handles) global gbrUji;

%Baca Citra Hasil

CitraHasil = getimage(handles.axes5);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_MSE_Frei_Chen,'String',mseval);

% --- Executes on button press in PSNR_Frei_Chen.

function PSNR_Frei_Chen_Callback(hObject, eventdata, handles) global gbrUji;

%Baca Citra Hasil

CitraHasil = getimage(handles.axes5);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_PSNR_Frei_Chen,'String',psnrval);

% --- Executes on button press in RT_Frei_Chen.

function RT_Frei_Chen_Callback(hObject, eventdata, handles) global runTimeF;

set(handles.text_RT_Frei_Chen,'String',runTimeF);

% --- Executes on button press in Simpan_Frei_Chen.

function Simpan_Frei_Chen_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Simpan Gambar');

% --- Executes on button press in BtnGaussian_Filter.

function BtnGaussian_Filter_Callback(hObject, eventdata, handles) global gbrUji;

global runTimeGF;

axes(handles.axes2);

runTimeGF = cputime;

% Menguji Apakah Citra Merupakan Citra RGB atau Citra Grayscale

Gaussian= fspecial ('gaussian',[3 3], 1.4);

Gaussian_Filter=imfilter (Citra,Gaussian,'same');

imshow(Gaussian_Filter);

runTimeGF = cputime-runTimeGF;

Bilateral_Filter.m

function varargout = BilateralFilter(varargin) gui_Singleton = 1;

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

% End initialization code - DO NOT EDIT

% --- Executes just before BilateralFilter is made visible.

function BilateralFilter_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

% --- Outputs from this function are returned to the command line.

function varargout = BilateralFilter_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

% --- Executes on button press in Buka_Citra.

function Buka_Citra_Callback(hObject, eventdata, handles) global gbrUji;

global NamaFile;

[filename,pathname] = uigetfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Pilih File');

Tipe = 'RGB';

Ukuran = [int2str(k) 'x' int2str(b)];

% Atur Data Citra

% --- Executes on button press in Hapus_Citra.

function Hapus_Citra_Callback(hObject, eventdata, handles) axes(handles.axes1);

cla reset;

set(handles.axes1,'XTick',[]);

set(handles.axes1,'YTick',[]);

% --- Executes on button press in Bttn_Close.

function Bttn_Close_Callback(hObject, eventdata, handles)

selection=questdlg(['Tutup Aplikasi ' get(handles.figure1,'Name')''],...

['Tutup Aplikasi ' get(handles.figure1,'Name')''],...

'Ya','Tidak','Ya');

% --- Executes on button press in FreiChen.

function FreiChen_Callback(hObject, eventdata, handles) global gbrUji;

global runTimeF;

% Mengubah Citra RGB Menjadi Grayscale if isrgb(gbrUji)

% Compute Gaussian distance weights.

[X,Y] = meshgrid(-N:N,-N:N);

Gs = exp(-(X.^2+Y.^2)/(2*sigma_s^2));

% Apply bilateral filter.

dim = size(Citra);

BF = zeros(dim);

for i = 1:dim(1) for j = 1:dim(2)

% Extract local region.

% --- Executes on button press in MSE_FreiChen.

function MSE_FreiChen_Callback(hObject, eventdata, handles) global gbrUji;

CitraHasil = getimage(handles.axes5);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.MSE_FC,'String',mseval);

% --- Executes on button press in PSNR_FreiChen.

function PSNR_FreiChen_Callback(hObject, eventdata, handles) global gbrUji;

CitraHasil = getimage(handles.axes5);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

% --- Executes on button press in RT_FreiChen.

function RT_FreiChen_Callback(hObject, eventdata, handles) global runTimeF;

set(handles.RT_FC,'String',runTimeF);

% --- Executes on button press in Save_FreiChen.

function Save_FreiChen_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Simpan Gambar');

% --- Executes on button press in Canny.

function Canny_Callback(hObject, eventdata, handles) global gbrUji;

% Compute Gaussian distance weights.

[X,Y] = meshgrid(-N:N,-N:N);

Gs = exp(-(X.^2+Y.^2)/(2*sigma_s^2));

% Apply bilateral filter.

dim = size(Citra);

F1=[1 0; 0 -1];

% Menentukan Arah Tepian [b,k]=size(MX);

if

if(nonmax_suppression(i,j)>thres_max) edge(i,j)=nonmax_suppression(i,j);

% --- Executes on button press in MSE_Canny.

function MSE_Canny_Callback(hObject, eventdata, handles) global gbrUji;

%baca Citra Hasil

CitraHasil = getimage(handles.axes4);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_MSE_Canny,'String',mseval);

% --- Executes on button press in PSNR_Canny.

function PSNR_Canny_Callback(hObject, eventdata, handles) global gbrUji;

%Baca Citra Hasil

CitraHasil = getimage(handles.axes4);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_PSNR_Canny,'String',psnrval);

% --- Executes on button press in RT_Canny.

function RT_Canny_Callback(hObject, eventdata, handles)

global runTimeC;

set(handles.text_RT_Canny,'String',runTimeC);

% --- Executes on button press in Save_Canny.

function Save_Canny_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Simpan Gambar');

% --- Executes on button press in Robert.

function Robert_Callback(hObject, eventdata, handles) global gbrUji;

global runTimeR;

axes(handles.axes3);

runTimeR = cputime;

% Menguji Apakah Citra Merupakan Citra RGB atau Citra Grayscale if isrgb(gbrUji)

% Compute Gaussian distance weights.

[X,Y] = meshgrid(-N:N,-N:N);

Gs = exp(-(X.^2+Y.^2)/(2*sigma_s^2));

% Apply bilateral filter.

dim = size(Citra);

Gx=conv2(BF,F1,'same');

% --- Executes on button press in MSE_Robert.

function MSE_Robert_Callback(hObject, eventdata, handles) global gbrUji;

%baca Citra Hasil

CitraHasil = getimage(handles.axes3);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_MSE_Robert,'String',mseval);

% --- Executes on button press in PSNR_Robert.

function PSNR_Robert_Callback(hObject, eventdata, handles) global gbrUji;

%Baca Citra Hasil

CitraHasil = getimage(handles.axes3);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_PSNR_Robert,'String',psnrval);

% --- Executes on button press in RT_Robert.

function RT_Robert_Callback(hObject, eventdata, handles) global runTimeR;

set(handles.text_RT_Robert,'String',runTimeR);

% --- Executes on button press in Save_Robert.

function Save_Robert_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Simpan Gambar');

% --- Executes on button press in Bilateral_Filter.

function Bilateral_Filter_Callback(hObject, eventdata, handles) global gbrUji;

global runTimeBF;

axes(handles.axes2);

runTimeBF = cputime;

% Menguji Apakah Citra Merupakan Citra RGB atau Citra Grayscale if isrgb(gbrUji)

sigma_s=5;

sigma_r=0.05;

N = 3; % neighborhood window size

% Compute Gaussian distance weights.

[X,Y] = meshgrid(-N:N,-N:N);

Gs = exp(-(X.^2+Y.^2)/(2*sigma_s^2));

% Apply bilateral filter.

dim = size(Citra);

% --- Executes on button press in MSE_BF.

function MSE_BF_Callback(hObject, eventdata, handles) global gbrUji;

%Baca Citra Hasil

CitraHasil = getimage(handles.axes2);

[psnrval mseval] = MSE_PSNR(gbrUji,CitraHasil);

set(handles.text_MSE_BF,'String',mseval);

% --- Executes on button press in PSNR_BF.

function PSNR_BF_Callback(hObject, eventdata, handles) global gbrUji;

% --- Executes on button press in RT_BF.

function RT_BF_Callback(hObject, eventdata, handles) global runTimeBF;

set(handles.text_RT_BF,'String',runTimeBF);

% --- Executes on button press in Save_BilateralFilter.

[filename,pathname] = uiputfile(...

{'*.bmp;*.jpg;*','File Gambar (*.bmp,*.jpg)';'*.*','Semua File (*.*)'},'Simpan Gambar');

NamaFile = strcat(pathname,'\',filename);

axes(handles.axes2);

Citra = getimage(handles.axes2);

imwrite(Citra,filename);

Dokumen terkait