Upload
jans-hendry
View
1.098
Download
0
Embed Size (px)
Citation preview
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