Sabtu, 17 November 2012

Pendeteksian Tepi


      I.            Konsep Deteksi Tepi
Tepi adalah perubahan nilai intensitas derajat keabuan yang mendadak (besar) dalam jarak yang singkat. Perbedaan intensitas inilah yang memperlihatkan rincian pada gambar. Tepi dapat diorientasikan dengan suatu arah, dan arah ini berbeda-beda, tergantung pada perubahan intensitas.
Ada tiga macam tepi yang terdapat di dalam citra digital. Ketiganya adalah tepi curam, tepi landai, dan tepi yang mengandung derau.  


A.   Metode dalam Deteksi Tepi
Macam-macam metode untuk proses deteksi tepi ini, antara lain:
1.        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 Robert ini juga disamakan dengan teknik DPCM (Differential Pulse Code Modulation).
2.        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.
3.        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.
4.        Metode Canny
Operator Canny merupakan deteksi tepi yang optimal. Operator Canny menggunakan GaussianDerivative Kernel untuk menyaring kegaduhan dari citra awal untuk mendapatkan hasil deteksi tepi yang halus.
5.        Metode Laplacian of Gaussian (log)
Metode ini akan mendeteksi zero crossing ,untuk menentukan garis batas antara hitam dan putih, yang terdapat pada turunan kedua dari citra yang bersangkutan. Kekurangann dari penerapan perator laplacian adalah sangat sensitif terhadap noise, namun demikian edge detection dengan operator ini dapat di tingkatkan hasilnya dengan menerapkan thresholding.


B.   Teknik Deteksi Tepi
1.     Operator gradien pertama, contoh beberapa gradien pertama yang dapat digunakan untuk mendeteksi tepi di dalam citra, yaitu operator gradien selisih-terpusat, operator Sobel, operator Prewitt, operator Roberts, operator Canny.
2.   Operator turunan kedua, disebut juga operator Laplace. Operator Laplace mendeteksi lokasi tepi khususnya pada citra tepi yang curam. Pada tepi yang curam, turunan keduanya mempunyai persilangan nol, yaitu titik di mana terdapat pergantian tanda nilai turunan kedua, sedangkan pada tepi yang landai tidak terdapat persilangan nol. Contohnya adalah operator Laplacian Gaussian, operator Gaussian.
3.       Operator kompas, digunakan untuk mendeteksi semua tepi dari berbagai arah di dalam citra. Operator kompas yang dipakai untuk deteksi tepi menampilkan tepi dari 8 macam arah mata angin yaitu Utara, Timur Laut, Timur, Tenggara, Selatan, Barat, Barat Daya, dan Barat Laut. Deteksi tepi dilakukan dengan mengkonvolusikan citra dengan berbagai mask kompas, lalu dicari nilai kekuatan tepi (magnitude) yang terbesar dan arahnya. Operator kompas yang dipakai untuk deteksi tepi menampilkan tepi dari 8 macam arah mata angin, yaitu Utara, Timur Laut, Timur, Tenggara, Selatan, Barat, Barat Daya, dan Barat Laut.
Selain operator gradien yang sudah disebutkan, masih ada beberapa operator gradien yang lain yang dapat digunakan untuk mendeteksi tepi di dalam citra, yaitu selisih terpusat, sobel, prewitt, Roberts, dan Canny.
(a)      Operator gradien selisih-terpusat:
   





(b)     Operator Sobel Tinjau pengaturan pixel di sekitar pixel (x,y) : 
Operator Sobel adalah magnitudo dari gradien yang dihitung dengan :

yang dalam hal ini, turunan parsial dihitung dengan :

dengan konstanta c = 2. Dalam bentuk mask, sx dan sy dapat dinyatakan sebagai :

Di bawah ini contoh lain deteksi tepi dengan operator Sobel, di mana hasil konvolusi dilambangkan dengan T = 12.
Citra : | gradien – x | + | gradien – y | :

Hasil pengembangan dengan T = 12 :

(c)  Operator Prewitt Persamaan gradien pada operator Prewitt sama seperti operator Sobel, tetapi menggunakan nilai c = 1 :

(d)     Operator Roberts Operator Roberts sering disebut juga operator silang. Gradien Roberts dalam arah-x dan arah-y dihitung dengan rumus :
Gambar Operator Silang
(e)  Operator Canny Berdasarkan wikipedia, operator Canny merupakan deteksi tepi yang optimal. Operator Canny menggunakan Gaussian Derivative Kernel untuk menyaring kegaduhan dari citra awal untuk mendapatkan hasil deteksi tepi yang halus.
Gambar Gaussian Derivative Kernel 
Faktor kunci dalam mengekstraksi ciri adalah kemampuan mendeteksi keberadaan tepi di dalam citra. Ada beberapa metode deteksi tepi. Penggunaan metode deteksi tepi yang tidak tepat, akan menghasilkan pendeteksian yang gagal. Pendeteksian tepi merupakan tahapan untuk melingkupi informasi di dalam citra. Tepi mencirikan batas objek dan karena itu tepi berguna untuk proses segmentasi dan identifikasi objek di dalam citra. Dalam penulisan tugas ini citra yang akan digunakan sebagai uji coba adalah suatu citra diam berwarna dengan bentuk 2D (frontal) dengan format JPEG/JPG.


  1. Tahapan Proses Pendeteksian Tepi
1.        Image Acquisition
Akuisisi citra merupakan tahap awal, pada tahap ini citra akan diambil/ditangkap. Kamera akan dipergunakan untuk tahapan ini. Kamera yang umum dipergunakan pada tahap ini, dapat berupa kamera analog atau digital. Untuk citra yang diambil dengan menggunakan kamera analog perlu dilakukan konversi ke dalam bentuk citra digital.
2.        Pra Processing (Preprocessing)
Pada Tahap ini dilakukan proses grayscale terhadap citra yang akan dideteksi tepi citraanya.
·     Proses grayscalling : adalah proses untuk mengubah gambar yang memiliki warna menjadi gambar yang memiliki tingkat warna ke abu-abuan.
·       Gambar yang akan di-gray-scalling nilai tiap titik akan disamakan dengan nilai red-green-bluenya sehingga untuk tiap titik hanya memiliki 1 nilai saja, yang disebut nilai gray-level-nya
·     Pada dasarnya proses ini dilakukan dengan meratakan nilai pixel dari 3 nilai RGB menjadi 1 nilai
3.        Segmentasi (Segmentation)
Pada tahap ini citra yang telah diubah menjadi grayscale akan dideteksi tepi citranya menggunakan analisis sobel.
4.        Post Processing
Pada tahap ini akan dihasilkan citra yang berupa citra yang hanya terdiri dari gambar hitam putih yang memiliki tepi citra.


  1. 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)
Produk MATLAB menyediakan alat interaktif dan fungsi command-line untuk operasi analisis data, termasuk:

  • Interpolasi dan menebangi
  • Mengekstrak bagian data, scaling, dan rata-rata
  • Thresholding dan perataan
  • Korelasi, analisis Fourier, dan filtering
  • 1-D puncak, lembah, dan nol menemukan
  • Statistik dasar dan curve fitting
  • Analisis Matrix


III.            Rancangan Program
1.        Pertama buat rancangan GUI terlebih dahulu dengan cara klik File pada Menu bar-New-GUI-Blank GUI-Ok.


2.       Selanjutnya buatlah sebuah rancangan GUI dimana disini kami membuat 6 buah axes dan 8 buah push button, jika sudah selesai simpan file dengan ekstensi (.fig). 




3.      Kemudian pada push button browse, klik kanan-View Callback-Callback maka akan muncul tampilan editor untuk memasukkan script pendeteksian tepi untuk program Matlab yang kami buat.



Ø  Pada pushbutton1 masukkan kodingan berikut untuk memilih gambar yang akan diproses :
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
prj=guidata(gcbo);
[nama,direktori]=uigetfile({'*.jpg'},'BUKA GAMBAR');
if isequal(nama,0)
return;
end;
eval(['cd ''' direktori ''';']);
i=imread(nama);
set(prj.figure1,'CurrentAxes',prj.axes1);
set(imshow(i));
set(prj.figure1,'Userdata',i);
set(prj.axes1,'Userdata',i);
% 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)

Ø  Pada pushbutton2 ketik kodingan berikut untuk memasukkan perintah mengubah gambar menjadi efek sobel :
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
sobel=guidata(gcbo);
i=get(sobel.axes1,'Userdata');
if isequal(i,[])
warndlg('Belum ada gambar !','Sobel Process error');
else
gray=rgb2gray(i);
bw=edge(gray,'sobel');
px=[-1 0 1;-1 0 1;-1 0 1];
grayx=filter2(px,gray);
py=px';
grayy=filter2(py,gray);
edge_p=sqrt(grayx.^2+grayy.^2);
edge_t=im2bw(edge_p/255,0.3);
set(sobel.figure1,'CurrentAxes',sobel.axes2);
set(imshow(edge_t));
set(sobel.axes3,'Userdata',edge_t);
end
%end;
% 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)

Ø  Pada pushbutton3 ketik kodingan berikut untuk memasukkan perintah mengubah gambar menjadi efek robert :
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
robert=guidata(gcbo);
i=get(robert.axes1,'Userdata');
if isequal(i,[])
warndlg('Belum ada gambar !','robert prcess error');
else
gray=rgb2gray(i);
bw=edge(gray,'robert');
px=[0 1;-1 0];
grayx=filter2(px,gray);
py=px';
grayy=filter2(py,gray);
edge_p=sqrt(grayx.^2+grayy.^2);
edge_t=im2bw(edge_p/255,0.3);
set(robert.figure1,'CurrentAxes',robert.axes3);
set(imshow(edge_t));
set(robert.axes3,'Userdata',edge_t);
end
% 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)

Ø  Pada pushbutton4 ketik kodingan berikut untuk memasukkan perintah mengubah gambar menjadi efek prewitt :
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
prewitt=guidata(gcbo);
i=get(prewitt.axes1,'Userdata');
if isequal(i,[])
warndlg('Belum ada gambar1','Prewitt process error');
else
gray=rgb2gray(i);
bw=edge(gray,'prewitt');
px=[-1 0 1;-2 0 1;-1 0 1];
grayx=filter2(px,gray);
py=px';
grayy=filter2(py,gray);
edge_p=sqrt(grayx.^2+grayy.^2);
edge_t=im2bw(edge_p/255,0.3);
set(prewitt.figure1,'CurrentAxes',prewitt.axes4);
set(imshow(edge_t));
set(prewitt.axes4,'Userdata',edge_t);
end
% 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)

Ø  Pada pushbutton5 ketik kodingan berikut untuk memasukkan perintah mengubah gambar menjadi efek canny :
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
prj=guidata(gcbo);
i=get(prj.axes1,'Userdata');
gray=rgb2gray(i);
bw=edge(gray,'canny');
set(prj.figure1,'CurrentAxes',prj.axes5);
set(imshow(bw));
set(prj.axes5,'Userdata',bw);
% 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)

Ø  Pada pushbutton6 ketik kodingan berikut untuk memasukkan perintah mengubah gambar menjadi efek LOG :
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
gray=rgb2gray(I);
BW = edge(gray,'log');
set(proyek.figure1,'CurrentAxes',proyek.axes6);
set(imshow(BW));
set(proyek.axes6,'Userdata',A);
redo_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)

Ø  Pada pushbutton7 ketik kodingan berikut untuk memasukkan perintah menyimpan program yang sudah dibuat :
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
[namafile,direktori]=uiputfile({'*.jpg';'*.*'},'Simpan Citra');
I=get(proyek.axes6,'Userdata');
imwrite(I,strcat(direktori,namafile));
% hObject    handle to pushbutton7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

Ø  Pada pushbutton8 ketik kodingan berikut untuk keluar dari program :
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
selection=questdlg(['Keluar ' get(handles.figure1,'Name')''],...
['Keluar ' get(handles.figure1,'Name')''],...
'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)
% hObject    handle to pushbutton8 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

jika sudah maka simpan data tersebut dengan format “nama_file.fig” kemudian RUN.

4.        Jika sudah di RUN lalu kita pilih gambar yang akan diproses, kemudian klik open. Setelah itu kita coba satu – persatu proses dari pendetekasian tepi pada button yang sudah ditulis kodingnya tadi. Maka akan tampil hasil dari proses tersebut, seperti berikut ini:




5.    Jika telah selesai kita dapat menyimpan hasil gambar program matlab pendeteksian tepi dengan pilih tombol simpan. Lalu tentukan file direktori tempat kita akan menyimpan hasil gambar. Dan simpan gambar dengan file berekstensi (.jgp). klik save.


6.     Jika kita ingin keluar dari program maka pilih button keluar. Pilih Ya jika ingin keluar dri program dan pilih tidak jika tidak ingin keluar dari program





By :      Fitria Ayu Andina              50409379
             Linda Mella Listiara          55409579
                                4IA03

Sumber :