Deteksi Garis Menggunakan Transformasi Hough

6
  26, 2011  . .   . , . . 2 , () (). 2 (). , . . 1 , (). , , . . 3 , :   .   . , () . .   2, (). , 2 . . , . . :

Transcript of Deteksi Garis Menggunakan Transformasi Hough

5/10/2018 Deteksi Garis Menggunakan Transformasi Hough - slidepdf.com

http://slidepdf.com/reader/full/deteksi-garis-menggunakan-transformasi-hough 1/5

 

[digital image processing]  October 26, 2011 

[{EE&IT UGM, Indonesia} [email protected]]

DETEKSI GARIS MENGGUNAKAN TRANSFORMASI HOUGH

Matlab sebenarnya sudah menyediakan toolbox khusus untuk operasi transformasi Hough.

Seperti diketahui bahwa transformasi ini telah banyak dan masih dipergunakan dalam berbagai

permasalahan khususnya dalam pengolahan citra digital. Kemampuan dari transformasi ini

untuk mendeteksi garis dari yang terpendek hingga terpanjang menjadikannya sebagai solusi

tepat untuk melakukan  filter garis pada citra. Transformasi ini pada dasarnya dirancang untuk 

mendeteksi kurva pada citra, dengan demikian dia juga bisa digunakan untuk mendeteksi

lingkaran.

Transformasi hough bekerja dengan memproyeksikan objek dari koordinat xy ke koordinat 

lingkaran. Sehingga sebuah garis bisa diwakilkan oleh 2 komponen, yakni jari-jari (rho) dan

sudut (theta). Dengan kemampuannya mengembalikan 2 variabel ini kita bisa juga

menggunakannya untuk rekonstruksi citra yakni perbaikan geometri kemiringan (tilt). Sepertiyang telah saya jelaskan secara detil pada artikel lain tentang penggunaan hough untuk 

memperbaiki kemiringan citra, telah saya cantumkan bahwa hough ini menggunakan voting

untuk menentukan garis terpanjang. Semakin besar nilai voting nya maka itu adalah garis

terpanjang. Untuk memilih lebih dari 1 garis, maka kita perlu memberikan nilai ambang batas

(threshold). Nilai ini bisa diberikan secara manual saja, karena memang yang dibutuhkan hanya

observasi terhadap hasil threshold  yang diberikan di awal, apakah sudah cukup bagus atau

belum.

Dalam artikel ini saya akan menjelaskan penggunaan toolbox matlab yakni Hough. Dalam

matlab dikenal ada 3 parameter penting untuk Hough, yakni:

-  Hough

Tugasnya untuk menghitung nilai dari transformasi hough.

-  Houghpeaks

Tugasnya untuk memilih nilai-nilai hough terbesar sesuai dengan nilai threshold yang

diberikan. Dengan menggunakan nilai yang didapat, kita akan mendapatkan nilai theta

(kemiringan) dari citra. Demikian juga kita akan mengetahui nilai rho terbesar.

-  Houghlines

Toolbox ini berkaitan dengan point ke 2, karena kita menggunakan fungsi ini untuk 

mendeteksi garis dan melakukan plot pada figure sesuai dengan nilai hough yang kita

pilih menggunakan nilai ambang batas (threshold). Jika tugas kita hanya ingin

mengetahui besar theta dan rho, maka kita cukup menggunakan point ke 2 saja.

Terpikir oleh saya untuk menyelesaikan game sudoku menggunakan pengolahan citra pada

matlab. Sebagai langkah awal, saya akan menggunakan hough untuk deteksi garis. Tujuannya

agar saya bisa memotong bagian-bagian dari sudoku tersebut. Misalkan saya memiliki citraseperti ini:

5/10/2018 Deteksi Garis Menggunakan Transformasi Hough - slidepdf.com

http://slidepdf.com/reader/full/deteksi-garis-menggunakan-transformasi-hough 2/5

 

[digital image processing]  October 26, 2011 

[{EE&IT UGM, Indonesia} [email protected]]

Tampak bahwa citra di atas terdiri atas banyak angka dan garis. Langkah yang akan saya

lakukan nanti adalah dengan menentukan kotak terbesar terlebih dahulu, lalu melakukan

cropping untuk tiap kotak (berarti ada 9 kotak). Kemudian untuk tiap kotak hasil pemotongan,

saya lakukan deteksi garis untuk memotong mereka menjadi 9 kotak kecil. Artinya nanti aja ada

81 kotak kecil. Tujuannya agar bisa memberikan nilai 0 untuk kotak yang kosong. Tapi untuk 

artikel ini saya akan menggambarkan deteksi terhadap semua garis saja. Karena artikel yang

lain tentang game sudoku akan saya pisahkan dan dibahas secara lengkap.

Berikut ini adalah programnya:

clearall;closeall;clc;

%%importingimagetomatlabfilename='UNSOLVABLE-1.png';I=imread(filename);imshow(I);title('OriginalImage');

[row,col,val]=size(I);if val~=1I=rgb2gray(I);endrotI=I;%%

%%findinghoughtransformBW=edge(I,'canny');[H,T,R]=hough(BW);

figure,imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');xlabel('\theta'),ylabel('\rho');

5/10/2018 Deteksi Garis Menggunakan Transformasi Hough - slidepdf.com

http://slidepdf.com/reader/full/deteksi-garis-menggunakan-transformasi-hough 3/5

 

[digital image processing]  October 26, 2011 

[{EE&IT UGM, Indonesia} [email protected]]

axison,axisnormal,holdon;%%

%%findingmaxvalueofhoughbythresholdP=houghpeaks(H,20,'threshold',ceil(0.35*max(H(:))));x=T(P(:,2));y=R(P(:,1));plot(x,y,'o','color','green');holdoff ;%%

%%findinglineslines=houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);figure,imshow(rotI),title('ImagewithAllLinesDetected'),holdon;max_len=0;

fork=1:length(lines)xy=[lines(k).point1;lines(k).point2];plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

%plotstartingandendpointsplot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');endholdoff ;

%%end

 

Ada beberapa hal yang perlu diperhatikan dari program di atas.

-  Pada Houghpeaks kita harus menentukan berapa jumlah garis yang ingin dideteksi.

Dalam hal ini saya memberikan nilai 20 yang berarti saya membutuhkan matlab untuk 

mengembalikan 20 buah garis. Lalu kita perlu juga untuk memberikan nilai threshold.

Dalam hal ini saya ‘merasakan’ bahwa nilai yang telah ditulis cukup untuk mendeteksigaris yang saya butuhkan.

-  Pada Houghlines kita memberikan nilai pada properti Fillgap dan Minlength. Berhati-

hatilah dalam memberikan nilai ini. Karena semakin kecil nilai yang kita berikan maka

detil-detil yang tidak kita perlukan akan ikut terdeteksi. Dengan demikian perlu

melakukan observasi terhadap nilai yang telah kita berikan.

5/10/2018 Deteksi Garis Menggunakan Transformasi Hough - slidepdf.com

http://slidepdf.com/reader/full/deteksi-garis-menggunakan-transformasi-hough 4/5

 

[digital image processing]  October 26, 2011 

[{EE&IT UGM, Indonesia} [email protected]]

Hasil eksekusinya:

5/10/2018 Deteksi Garis Menggunakan Transformasi Hough - slidepdf.com

http://slidepdf.com/reader/full/deteksi-garis-menggunakan-transformasi-hough 5/5

 

[digital image processing]  October 26, 2011 

[{EE&IT UGM, Indonesia} [email protected]]

Penggunaan dari toolbox matlab ini sangat mudah dan saya sudah mencoba untuk 

menjelaskannya dengan sederhana. Semoga bisa membantu anda. Sebahagian program ini saya

ambil dari HELP matlab. Dengan demikian anda bisa merujuk pada help matlab terkait topik 

hough.

Sumber:

Matlab Help Product 

thanks