Minggu, 30 April 2023
Kamis, 30 Maret 2017
DUNIA PENA: My History : Selalu Mengungkit Masa Lalu, Bisa Berakibat Fatal
Diposting oleh andifikim di 12.01Selasa, 15 Maret 2016
Metode Deteksi Tepi pada Citra dalam MATLAB
Diposting oleh andifikim di 02.42Metode Deteksi Tepi pada Citra dalam MATLAB
Dasar Teori
Prinsip-Prinsip Deteksi Tepi
•Pendeteksian tepi
Untuk meningkatkan penampakan garis batas suatu daerah atau obyek di dalam
citra.
Deteksi tepi (Edge Detection) pada suatu citra
adalah suatu proses yang menghasilkan tepi-tepi dari obyek-obyek citra,
tujuannya adalah :
• Untuk menandai bagian yang menjadi detail citra
• Untuk memperbaiki detail dari citra yang kabur,
yang terjadi karena error atau adanya efek dari proses akuisisi
citra. Suatu titik (x,y) dikatakan
sebagai tepi (edge) dari suatu citra bila titik tersebut
mempunyai perbedaan yang tinggi dengan tetangganya.
Macam-macam metode untuk proses deteksi tepi ini,
antara lain:
1. Metode Robert
2. Metode Prewitt
3. Metode Sobel
4. Metode Canny
Metode Robert
Metode Robert adalah nama lain dari teknik
differensial yang dikembangkan di atas, yaitu differensial pada arah
horisontal dan differensial pada arah vertikal, dengan ditambahkan proses konversi biner setelah dilakukan
differensial. Teknik konversi biner yang disarankan adalah konversi biner dengan meratakan
distribusi warna hitam dan putih.
Metode Prewitt
Metode Prewitt merupakan pengembangan metode robert
dengan menggunakan filter HPF yang diberi
satu angka nol penyangga. Metode ini mengambil prinsip dari fungsi laplacian
yang dikenal sebagai fungsi untuk
membangkitkan HPF.
Metode Sobel
Metode Sobel merupakan pengembangan metode robert
dengan menggunakan filter HPF yang diberi
satu angka nol penyangga. Metode ini mengambil prinsip dari fungsi laplacian
dan gaussian yang dikenal sebagai fungsi untuk membangkitkan HPF. Kelebihan
dari metode sobel ini adalah
kemampuan untuk mengurangi noise sebelum melakukan perhitungan deteksi tepi.
Metode Canny
Salah satu
algoritma deteksi tepi modern adalah deteksi tepi dengan menggunakan metode Canny.
Deteksi tepi Canny ditemukan oleh Marr dan Hildreth yang meneliti pemodelan
persepsi visual manusia. Ada beberapa kriteria pendeteksi tepian paling optimum
yang dapat dipenuhi oleh algoritma Canny:
a.
Mendeteksi dengan baik (kriteria deteksi)
Kemampuan
untuk meletakkan dan menandai semua tepi yang ada sesuai dengan pemilihan
parameter-parameter konvolusi yang dilakukan. Sekaligus juga memberikan
fleksibilitas yang sangat tinggi dalam hal menentukan tingkat deteksi ketebalan
tepi sesuai yang diinginkan.
b.
Melokalisasi dengan baik (kriteria lokalisasi)
Dengan Canny
dimungkinkan dihasilkan jarak yang minimum antara tepi yang dideteksi dengan
tepi yang asli.
c. Respon
yang jelas (kriteria respon)
Hanya ada
satu respon untuk tiap tepi. Sehingga mudah dideteksi dan tidak menimbulkan
kerancuan pada pengolahan citra selanjutnya. Pemilihan parameter deteksi tepi
Canny sangat mempengaruhi hasil dari tepian yang dihasilkan. Beberapa parameter
tersebut antara lain :
1. Nilai
Standart Deviasi Gaussian
2. Nilai Ambang
Kita menggunakan Software MATLAB.
MATLAB (Matrix Laboratory) adalah sebuah program untuk analisis dan komputasi
numerik dan merupakan suatu bahasa pemrograman matematika lanjutan yang
dibentuk dengan dasar pemikiran menggunkan sifat dan bentuk matriks.
GUIDE atau GUI builder merupakan sebuah graphical user interface (GUI)
yang dibangun dengan obyek grafik seperti tombol (button), kotak teks,
slider, menu dan lain-lain. Aplikasi yang menggunakan GUI umumnya lebih mudah
dipelajari dan digunakan karena orang yang menjalankannya tidak perlu
mengetahui perintah yang ada dan bagaimana kerjanya. Untuk Memulai GUIDE Matlab
dapat dilakukan dengan dua cara, yaitu:
1.
Melalui command matlab dengan mengetikkan: >> guide
2.
Klik tombol Start Matlab dan pilihlah MATLAB, lalu pilih GUIDE (GUI Bulder)
Setelah kita masuk dalam fitur GUI,
maka kita buat tampilan untuk program Deteksi Tepi ini dengan
membuat 2 Axes dan 7 Pushbutton. Axes berguna untuk
menampilkan sebuah grafik atau gambar (image). Axes sebenarnya tidak
masuk dalam UIControl, tetapi axes dapat diprogram agar pemakai
dapat berinteraksi dengan axes dan obyek grafik yang ditampilkan melalui axes.
SedangkanPushbutton merupakan jenis kontrol berupa tombol tekan
yang akan menghasilkan tindakan jika diklik, misanya tombol OK, Cancel, Hitung,
Hapus, dan sebagainya.
Untuk penulisan koding di
pushbutton, klik kiri pada push button sebelah kiri, kemudian pilih callbacks
dan pilih lagi view callback, ini berguna untuk mempermudah letak dalam menulis
coding. Dibawah komentar itulah kita menulis kodingannya.
function
varargout = Dteksi(varargin)
% DTEKSI
M-file for Dteksi.fig
% DTEKSI, by itself, creates a new DTEKSI
or raises the existing
% singleton*.
%
% H = DTEKSI returns the handle to a new
DTEKSI or the handle to
% the existing singleton*.
%
%
DTEKSI('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in DTEKSI.M with
the given input arguments.
%
% DTEKSI('Property','Value',...) creates a
new DTEKSI or raises the
% existing singleton*. Starting from the left, property value pairs
are
% applied to the GUI before
Dteksi_OpeningFcn gets called. An
% unrecognized property name or invalid
value makes property application
% stop.
All inputs are passed to Dteksi_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools
menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See
also: GUIDE, GUIDATA, GUIHANDLES
% Edit the
above text to modify the response to help Dteksi
% Last
Modified by GUIDE v2.5 18-Dec-2012 11:06:07
% Begin
initialization code - DO NOT EDIT
gui_Singleton =
1;
gui_State =
struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Dteksi_OpeningFcn,
...
'gui_OutputFcn', @Dteksi_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
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 Dteksi is made visible.
function
Dteksi_OpeningFcn(hObject, eventdata, handles, varargin)
% This
function has no output args, see OutputFcn.
%
hObject handle to figure
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
% varargin command line arguments to Dteksi (see
VARARGIN)
% Choose
default command line output for Dteksi
handles.output =
hObject;
% Update
handles structure
guidata(hObject,
handles);
% UIWAIT
makes Dteksi wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% ---
Outputs from this function are returned to the command line.
function
varargout = Dteksi_OutputFcn(hObject, eventdata, handles)
%
varargout cell array for returning
output args (see VARARGOUT);
%
hObject handle to figure
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
% Get
default command line output from handles structure
varargout{1} =
handles.output;
Kodingan
untuk memanggil gambar/ mencari gambar :
% ---
Executes on button press in pushbutton1.
function
pushbutton1_Callback(hObject, eventdata, handles)
%
hObject handle to pushbutton1 (see
GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
proyek=guidata(gcbo);
[namafile,direktori]=uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif'},'Buka
Gambar')
if
isequal(namafile,0)
return;
end
eval(['cd
''' direktori ''';']);
I=imread(namafile);
set(proyek.figure1,'CurrentAxes',proyek.axes1);
set(imshow(I));
set(proyek.figure1,'Userdata',I);
set(proyek.axes1,'Userdata',I);
Kodingan
untuk method Prewitt :
% ---
Executes on button press in pushbutton2.
function
pushbutton2_Callback(hObject, eventdata, handles)
%
hObject handle to pushbutton2 (see
GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
gray=rgb2gray(I);
BW=edge(gray,'prewitt');
set(proyek.figure1,'CurrentAxes',proyek.axes2);
set(imshow(BW));
set(proyek.axes2,'Userdata',A);
redo_Callback(hObject,eventdata,
handles);
Kodingan
untuk method Roberts :
% ---
Executes on button press in pushbutton3.
function
pushbutton3_Callback(hObject, eventdata, handles)
%
hObject handle to pushbutton3 (see
GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
gray=rgb2gray(I);
BW=edge(gray,'roberts');
set(proyek.figure1,'CurrentAxes',proyek.axes2);
set(imshow(BW));
set(proyek.axes2,'Userdata',A);
redo_Callback(hObject,eventdata,
handles);
Kodingan
untuk method Canny :
% ---
Executes on button press in pushbutton4.
function
pushbutton4_Callback(hObject, eventdata, handles)
%
hObject handle to pushbutton4 (see
GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
gray=rgb2gray(I);
BW=edge(gray,'canny');
set(proyek.figure1,'CurrentAxes',proyek.axes2);
set(imshow(BW));
set(proyek.axes2,'Userdata',A);
redo_Callback(hObject,eventdata,
handles);
Kodingan
untuk method Sobel :
% ---
Executes on button press in pushbutton5.
function
pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
gray=rgb2gray(I);
BW=edge(gray,'sobel');
set(proyek.figure1,'CurrentAxes',proyek.axes2);
set(imshow(BW));
set(proyek.axes2,'Userdata',A);
redo_Callback(hObject,eventdata,
handles);
Kodingan
untuk method LOG :
% ---
Executes on button press in pushbutton6.
function
pushbutton6_Callback(hObject, eventdata, handles)
%
hObject handle to pushbutton6 (see
GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
gray=rgb2gray(I);
BW=edge(gray,'log');
set(proyek.figure1,'CurrentAxes',proyek.axes2);
set(imshow(BW));
set(proyek.axes2,'Userdata',A);
redo_Callback(hObject,eventdata,
handles);
Pengolahan Citra Image Dengan Matlab
Diposting oleh andifikim di 00.58Pengolahan Citra Image Dengan Matlab
1. Buka Matlab anda.
2. Klik File, New, GUI lalu klik "Blank GUI (Default)
Letakkan gambar ikon seperti tampilan diatas secara berurutan:
a. Klik "panel" sebanyak 4 buah.
b. Klik "axes" didalam masing-masing panel dan atur posisinya.
c. Letakkan tombol-tombol yang ada.
d. Buatlah text untuk "Title" atau keterangan lainnya.
e. Bila telah selesai, klik 2x tombol masing-masing yang ada dan ubah propertinya seperti gambar
diatas atau sesuai keinginan anda.
f. Bila sudah, klik kanan tombol yang ada dimulai dari tombol dalam panel, kemudian klik "viev
callback" lalu "callback"
g. Isikan "Skrip" program" pada kursor yang ditunjuk pada M-filenya
Untuk listing skrip lengkapnya sebagai berikut, cocokan pada tombol-tombol yang anda klik bila susunan skrip ini berbeda dengan model GUI yang anda buat, contoh:
Bila anda mengklik tombol button1, maka periksa / cari listing skrip yang didalam perintah
% --- Executes on button press in pushbutton1, copy skrip yang tidak ada tanda "%"-nya
Listing skrip lengap untuk program model GUI diatas;
function varargout = Sharpening(varargin)
% SHARPENING M-file for Sharpening.fig
% SHARPENING, by itself, creates a new SHARPENING or raises the existing
% singleton*.
%
% H = SHARPENING returns the handle to a new SHARPENING or the handle to
% the existing singleton*.
%
% SHARPENING('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in SHARPENING.M with the given input arguments.
%
% SHARPENING('Property','Value',...) creates a new SHARPENING or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Sharpening_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Sharpening_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Sharpening
% Last Modified by GUIDE v2.5 08-Nov-2012 21:01:51
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Sharpening_OpeningFcn, ...
'gui_OutputFcn', @Sharpening_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
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 Sharpening is made visible.
function Sharpening_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Sharpening (see VARARGIN)
% Choose default command line output for Sharpening
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Sharpening wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Sharpening_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
proyek=guidata(gcbo);
[namafile,direktori]=uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif';'*.*'},'Buka Gambar')
if isequal(namafile,0)
return;
end
eval(['cd ''' direktori ''';']);
I=imread(namafile);
set(proyek.figure1,'CurrentAxes',proyek.axes1);
set(imshow(I));
imshow(I), title('Citra Asli');
set(proyek.figure1,'Userdata',I);
set(proyek.axes1,'Userdata',I);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
if isequal(I,[])
msgbox('Belum ada gambar!','Peringatan','warn');
else
PSF=fspecial('unsharp');
A=imfilter(I,PSF,'replicate');
set(proyek.figure1,'CurrentAxes',proyek.axes2);
set(imshow(A));
imshow(A), title('Citra dengan penajaman');
set(proyek.axes2,'Userdata',A);
end
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
proyek=guidata(gcbo);
[namafile,direktori]=uiputfile({'*.jpg';'*.*'},'Simpan Citra');
I=get(proyek.axes2,'Userdata');
imwrite(I,strcat(direktori,namafile));
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
selection=questdlg(['Apa Anda Yakin ? ' ],[' Keluar ' ],'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)
% --------------------------------------------------------------------
%function Untitled_1_Callback(hObject, eventdata, handles)
% hObject handle to Untitled_1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
proyek=guidata(gcbo);
I=get(proyek.axes2,'Userdata');
if isequal(I,[])
msgbox('Belum ada gambar!','Peringatan','warn');
else
gaussianFilter = fspecial('gaussian');
A=imfilter(I, gaussianFilter, 'symmetric', 'conv');
set(proyek.figure1,'CurrentAxes',proyek.axes3);
set(imshow(A));
imshow(A), title('Citra dengan pengaburan');
set(proyek.axes3,'Userdata',A);
end
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
proyek=guidata(gcbo);
I=get(proyek.axes3,'Userdata');
if isequal(I,[])
msgbox('Belum ada gambar!','Peringatan','warn');
else
gray = rgb2gray(I);
A = imnoise(gray, 'Gaussian', 0.02);
thresh = graythresh(A);
biner = im2bw(A, thresh);
set(proyek.figure1,'CurrentAxes',proyek.axes4);
set(imshow(A));
imshow(A), title('Citra dengan Noise Abu-abu');
set(proyek.axes4,'Userdata',A);
end
% --- Executes on button press in pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
cla(handles.axes4);
cla(handles.axes3);
cla(handles.axes1);
Sharpening
Sharpening
(Penajaman) yaitu memperjelas detil suatu citra(menambah kontras) dengan
penjumlahan atas citra tepi dengan citra aslinya maka bagian tepi objek akan
terlihat berbeda dengan latarnya, sehingga citra terkesan lebih tajam. Proses penajaman berhubungan dengan
deteksi tepi perubahan
warna yang dilemahkan untuk menciptakan efek tepi tajam. Menggunakan fspecial yang akan
membuat filter untuk menajamkan (sharpening)
gambar. Filter khususnya bernama 'unsharp'.
Proses Penajaman ini hanya
menggunakan fungsi yang telah tersedia dari MATLAB, yaitu fungsi Filter
Unsharp. Filter Unsharp ini merupakan “edge enchancemen filter” yang
akan menyebabkan citra input akan menjadi lebih jelas dan tajam tepiannya. Filter Unsharp mempunyai rumusan
sebagai berikut:
Bluring.
Bluring.
Blurring (Pengaburan) yaitu filter
spasial low-pass yang melenyapkan
detil halus dari suatu citra. Pengaburan dicapai melalui konvolusi dari seluruh koefisien
mask bernilai sama. Blurring ini merupakan
perataan nilai pixel-pixel tetangga, makin besar ukuran mask maka makin besar efek pengaburan
yang dihasilkan. Pelembutan
Citra (smoothing)
mempunyai tujuan mengurangi noise pada suatu image. Noise-noise tersebut muncul sebagai
akibat dari hasil pensamplingan yang
tidak bagus. Pixel komponen yang mempunyai noise pada umumnya memiliki frekuensi yang tinggi.
Kompoen citra yang berfrekuensi rendah akan diloloskan dan komponen yang
mempunyai frekuensi tinggi akan ditahan. Filter smoothing dapat dibangun di
Matlab dengan menggunakan fungsi
fspecial (filter khusus),
contohnya:
gaussianFilter = fspecial
('gaussian', [7, 7], 5)
dalam pemanggilan fungsi ini akan
membangun matriks gaussian filter dengan
7 baris dan 7 kolom, dengan standar deviasi 5.
2.3
Smoothing & RGB To Gray.
Smoothing & RGB To Gray.
Selain
menggunakan fungsi blurring di atas, dapat pula menggunakan pengolahan gambar
dengan metode pelembutan citra (smoothing). Pertama, gambar diconvert menjadi
noise abu-abu agar terlihat perubahan gambarnya. Kemudian, dibuat pelembutannya
sehingga gambar yang kasar menjadi lebih lembut dan terlihat lebih jelas.
Fungsi uint8(x) digunakan untuk converts matrix x ke uint8 data type (0-255).
Aplikasi berorientasi Obj
Aplikasi GUI yang dibuat
mengguanakan Matlab 7.1 telah menerapkan sistem berorietasi obyek. Penggunaan
ini ditunjukkan dengan adanya struktur Handles. Semua hal yang muncul dalam
figure Matlab merupakan sebuah Handles Graphics, karena setiap obyek dalam layar
memiliki identifier yang unik, disebut handle, hal ini menjadikan untuk kembali
dan memodifikasi obyek setiap saat[6]. Gambar 2 merupakan hirarki dari sistem
berorientasi obyek dalam Handle Graphics dalam Matlab.
Desain Algortihma
Algorithma yang digunakan adalah Desain Algorithma Aplikasi yang
dikembangkan menggunakan Matlab 7.0 dengan membuat program dan menggunakan
interface GUI (Graphical User Interface), sehingga aplikasi ini
diharapkan mudah digunakan bagi user. Algoritma program aplikasi ini
dikembangkan untuk melakukan proses
Pengambilan Citra Digital
Pengambilan citra digital
dilakukan dengan membuka jendela dialog untuk membuka file citra yang akan
diproses, dalam Matlab digunakan perintah imshow untuk membaca sebuah
file. Selain melakukan proses pengambilan file citra digital ini, juga
sekaligus dilakukan pengubahan tipe citra, yang semula bertipe RGB dirubah
menjadi tipe grayscale atau skala keabuan. Konversi tipe citra ini
dimaksudkan untuk mempermudah analisis citra lebih lanjut, karena tipe citra
skala keabuan memiliki kedalaman warna 8 bit yaitu dari 0 hingga 255 dan 16 bit
yaitu dari 0 hingga 65535 sehingga dapat dilakukan pengolahan dengan ekualisasi
histogram. Dalam aplikasi ini, setiap citra yang diambil dikonversi menjadi citra
dengan skala keabuan 8 bit. Gambar 4 merupakan contoh tampilan GUI yang
digunakan untuk membuka file citra digital Fungsi untuk melakukan
pengambilan file citra digunakan perintah uigetfile yang akan menampilkan
jendela pembuka file serta digunakan argumen untuk memfilter tipe file yatu Jpg,
Png, bmp, Tif atau semua file. Berikut program yang terdapat dalam aplikasi GUI
ketika penekanan tombol Ambil Citra dilakukan.
proyek=guidata(gcbo);
[namafile,direktori]=uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif';'*.*'},'Buka Gambar')
if
isequal(namafile,0)
return;
end
eval(['cd ''' direktori ''';']);
I=imread(namafile);
set(proyek.figure1,'CurrentAxes',proyek.axes1);
set(imshow(I));
imshow(I), title('Citra Asli');
set(proyek.figure1,'Userdata',I);
set(proyek.axes1,'Userdata',I);
Program di atas setelah mengambil file citra, maka
citra digital tersebut akan ditampilkan dalam axes yaitu fungsi GUI MATLAB
untuk menampilkan grafik maupun gambar. Perintah untuk menampilkan gambar adalah
imshow (nama_citra). Citra yang digunakan merupakan citra dengan format berupa
citra asli.
Pengubahan Ketajaman Citra (Sharpening)
Proses Penajaman Gambar (Sharpening),
lalu aktifkan button yang ke 2 (“Proses”) dan ketikkan script di bawah
ini :
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
if isequal(I,[])
msgbox('Belum ada
gambar!','Peringatan','warn');
else
PSF=fspecial('unsharp');
A=imfilter(I,PSF,'replicate');
set(proyek.figure1,'CurrentAxes',proyek.axes2);
set(imshow(A));
imshow(A), title('Citra dengan penajaman');
set(proyek.axes2,'Userdata',A);
end
Script diatas berfungsi untuk pemrosesan
Penajaman Gambar. Awalnya kita gunakan variable I untuk mendeteksi gambar
dari axes1 , namun jika gambar belum ada, maka akan dimunculkan alert atau
message box. Jika gambar terdeteksi makan akan dilakukan penajaman dan hasil
akan dimasukan ke dalam Axes2.
Proses Penajaman ini hanya
menggunakan fungsi yang telah tersedia dari MATLAB, yaitu fungsi Filter
Unsharp. Filter Unsharp ini merupakan “edge enchancemen filter” yang
akan menyebabkan citra input akan menjadi lebih jelas dan tajam tepiannya. Filter Unsharp mempunyai rumusan
sebagai berikut :
Pada program fungsi Filter
Unsharp ini dilakukan dengan menggunakan fungsi imfilter dan fspesial
dengan parameter unsharp
dan alpha, dengan sintaks sebagai
berikut :
Filter = fspecial(‘unsharp’, alpha);
Citra_output = imfilter (citra_output, filter,’replicate’).
Yang
akan akan melakukan penyaringan dengan filter
peningkatan kontras unsharp dengan
matriks 3x3. Fspesial akan membuat filter unsharp dari citra negatif hasil laplace dengan parameter alpha. Alpha akan mengendalikan bentuk
dari hasil laplace filter tersebut
dan harus berkisar di range 0.0 s/d 1.0. Harga default untuk alpha adalah 0.2.
Pengaburan
Citra (Bluring).
Pengaburan citra atau bluring
adalah peningkatan noise pada citra asli yang dalam tugas ini adalah proses
pengaburan pada citra yang sudah dilakukan sharpening sesuai dengan alur
algorithma dalam tugas ini. Dalam proses pengaburan (bluring) ini digunakan
filter Gaussian dengan perintah fspecial (‘Gaussian’) seperti pada script dibawah
ini;
proyek=guidata(gcbo);
I=get(proyek.axes2,'Userdata');
if isequal(I,[])
msgbox('Belum ada
gambar!','Peringatan','warn');
else
gaussianFilter = fspecial('gaussian');
A=imfilter(I, gaussianFilter, 'symmetric', 'conv');
set(proyek.figure1,'CurrentAxes',proyek.axes3);
set(imshow(A));
imshow(A), title('Citra dengan pengaburan');
set(proyek.axes3,'Userdata',A);
end
Pengubahan Citra Abu-abu (Gray Scale).
Adalah convert citra yang diblur
ke skala abu-abu, dengan perintah gray = rgb2gray(I);
dan A = imnoise(gray, 'Gaussian', 0.02); yang lengkapnya seperti skrip berikut ini;
proyek=guidata(gcbo);
I=get(proyek.axes3,'Userdata');
if isequal(I,[])
msgbox('Belum ada
gambar!','Peringatan','warn');
else
gray = rgb2gray(I);
A = imnoise(gray, 'Gaussian', 0.02);
thresh = graythresh(A);
biner = im2bw(A, thresh);
set(proyek.figure1,'CurrentAxes',proyek.axes4);
set(imshow(A));
imshow(A), title('Citra dengan Noise Abu-abu');
set(proyek.axes4,'Userdata',A);
end
Penyimpanan Pemrosesan Citra.
Penyimpanan citra hasil proses dilakukan dengan
menuliskan skrip seperti berikut ini;
proyek=guidata(gcbo);
[namafile,direktori]=uiputfile({'*.jpg';'*.*'},'Simpan Citra');
I=get(proyek.axes2,'Userdata');
imwrite(I,strcat(direktori,namafile));
Memproses Kembali.
Adalah merupakan fasilitas untuk
memproses kembali citra gambar baik obyek yang sama atau obyek dari file yang
berbeda dengan menghapus atau membersihkan semua tampilan gambar yang ada.
Sripnya sebagai berikut:
cla(handles.axes4);
cla(handles.axes3);
cla(handles.axes2);
cla(handles.axes1);
Keluar dari lembaran kerja.
Tombol ini digunakan untuk keluar
dari lembar kerja secara menyeluruh dengan menampilkan kotak dialog
pemberitahuan pada user untuk meyakini apa yang akan dilakukan itu perlu. Perintah
skrip sebagai berikut ini;
selection=questdlg(['Apa Anda Yakin
? ' ],[' Keluar ' ],'Ya','Tidak','Ya');
if
strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)
Selamat mencoba...moga berhasil.....
Wassalam,
Created by: Andi fikom
Subscribe to:
Postingan (Atom)
Teknik Informatika
Andi Fikom
Peugah Ju Pu Yang Galak
Saya sangat bersyukur atas ilmu yang miliki sekarang berkat doa dan usaha saya ..insyaallah kalau ada kemauan pasti ada jalan