• Tidak ada hasil yang ditemukan

Hough Transform Deteksi Garis

N/A
N/A
Protected

Academic year: 2021

Membagikan "Hough Transform Deteksi Garis"

Copied!
15
0
0

Teks penuh

(1)

COMPUTER VISION COMPUTER VISION

HOUGH TRANSFORM UNTUK MENDETEKSI GARIS BERBASIS OPEN CV HOUGH TRANSFORM UNTUK MENDETEKSI GARIS BERBASIS OPEN CV

Oleh : Oleh :

1.

1. Ahmad Ahmad Hanafi Hanafi ( ( 1204505007 1204505007 )) 2.

2.  Ngurah Padang Adnyana  Ngurah Padang Adnyana ( 1204505015 )( 1204505015 ) 3.

3. Krishna Krishna Anugrah Anugrah Pratama Pratama ( ( 1204505023 1204505023 )) 4.

4. Setyo Setyo Hadi Hadi Kusumo Kusumo ( ( 1204505039 1204505039 ))

Jurusan Teknologi Informasi

Jurusan Teknologi Informasi

Fakultas Teknik

Fakultas Teknik

 –  – 

 Universitas Udayana

 Universitas Udayana

2014

2014

(2)

Teori

Hough Transform (HT) didesain untuk menemukan garis pada suatu citra. HT diperkenalkan oleh Paul Hough pada tahun 1962. Hough Transform adalah sebuah metode yang dapat digunakan untuk mengisolasi feature tertentu dalam sebuah citra. Metode Hough Transform biasanya digunakan untuk mendeteksi bentuk geometri yang dapat dispesifikasikan dalam bentuk parametrik seperti garis, lingkaran, elips, dan lain – lain.

Ide dari HT adalah membuat persamaan dari suatu piksel dan mempertimbangkan semua  pasangan yang memenuhi persamaan ini. Semua pasangan ditempatkan pada suatu larik

akumulator, yang disebut larik transformasi (Mc Andrew 2004). Transformasi Hough menggunakan bentuk parametrik dan menggunakan pemungutan suara terbanyak (voting) untuk menentukan nilai parameter yang tepat. Apabila dalam citra terdapat beberapa garis yang saling  berpotongan pada suatu titik, maka apabila kemudian titik tersebut ditransformasi ke dalam ruang parameter m - c   akan didapati bahwa transformasi dalam ruang parameter m - c   adalah sebuah garis lurus dengan persamaan garis dinyatakan sebagai,y i = mx i + c .

Sebaliknya jika dalam citra terdapat sebuah garis lurus, dimana garis tersebut mempunyai  persamaan seperti persamaan y i  = mx i  + c , maka apabila ditransformasi ke dalam ruang

 parameter m - c   akan diperoleh bahwa transformasi dalam ruang parameter m - c   adalah  beberapa garis yang saling berpotongan dalam suatu titik. Persamaan transformasi diperoleh

dengan cara memanipulasi persamaan garisnya yaitu persamaan y i = mx i + c   menjadi bentuk

 parametrik menjadi persamaan,c = y i - mx i .

Perhitungan transformasi dilakukan dengan cara menghitung tiap titik dalam citra kedalam semua variasi nilai m - c . Dalam kenyataannya, apabila ditemui sebuah garis vertikal, maka akan terjadi masalah dalam penghitungannya dikarenakan garis vertikal mempunyai nilai gradien kemiringan yang besarnya tak berhingga ∞. Sebagai alternatifnyadigunakan persamaanr = x cos θ + y sin θ . Dimana gambar koordinat kartesiannya ditunjukkan pada Gambar 1.

(3)

Gambar 1. Citra sebuah garis dalam koordinat Kartesian dengan satu titik uji

Sebuah titik B dalam gambar tersebut apabila ditransformasi ke dalam ruang parameter r - maka akan menjadi seperti Gambar 2.

Gambar 2. Hasil transformasi dari satu titik uji dalam ruang parameter r -θ 

Apabila di dalam citra terdapat suatu garis lurus, maka jika garis lurus citra ditransformasi kedalam ruang parameter r - θ   akan terjadi suatu titik penumpukan antar kurva sinusoida hasil pentransformasian masing-masing komponen piksel garis yang membentuk garis lurus tersebut.

Prinsip kerja metode ini dalam pendeteksian garis adalah dengan mencari bentuk geometriyang paling bersesuaian dengan kumpulan titik pada citra. Kelebihan Hough Transform adalah :

a. mampu mendeteksi garis pada bentuk geometri dengan kumpulan tepi yang terputus- putus,

(4)

c.  parameter yang mempengaruhi performansi adalah kuantisasi parameter pada ruang Hough.

OpenCV mendukung dua jenis baris yang berbeda pada Hough transform, Pada Hough standar transform dan pada Hough probabilistik progresif transformasi.

Fungsi untuk menghitung rupa untuk saluran individu di samping Orientasi. Ini adalah "probabilistik" karena, daripada mengumpulkan setiap titik mungkin dalam pesawat akumulator, terakumulasi hanya sebagian kecil dari mereka. Th e ide adalah bahwa jika puncak akan menjadi cukup tinggi bagaimanapun, kemudian memukul itu hanya sebagian kecil dari waktu akan cukup untuk fi nd itu; hasil dari dugaan ini dapat pengurangan substansial dalam waktu komputasi. Kedua algoritma ini diakses dengan fungsi OpenCV yang sama, meskipun arti dari beberapa argumen bergantung pada Metode yang digunakan.

CvSeq* cvHoughLines2( CvArr* image, void* line_storage, int method, double rho, double theta, int threshold, double param1 = 0, double param2 = 0 );

Source Code diatas merupakan contoh script dari openCV

E pertama pada argumen Th adalah gambar input. merupakan gambar 8-bit, akan tetapi input dilakukan perubahan ke informasi biner (yaitu, semua piksel nol dianggap setara). Kemudian Argumen adalah pointer ke tempat di mana hasilnya dapat disimpan, yang dapat berupa  penyimpanan memori atau polos N-oleh 1 matriks array (yang jumlah baris, N, akan berfungsi untuk membatasi jumlah maksimum baris kembali). Argumen berikutnya, metode, dapat Cv Hough standard, cv hough probabilistik atau cv hough multi scale untuk masing –  masing metode atau varian multiskala dari hough standar.

dua argumen berikutnya yaitu rho dan theta, yang digunakan menetapkan resolusi yang diinginkan untuk baris. E unit th rho adalah piksel dan unit theta adalah radian. dengan demikian,

(5)

 pesawat akumulator dapat dianggap sebagai histogram dua dimensi dengan sel-sel rho dimensi  piksel dengan radian theta. Th nilai e threshold adalah nilai dalam bidang akumulator yang harus dihubungi untuk rutin untuk melaporkan baris. adalah argumen terakhir adalah sedikit rumit dalam praktek; itu tidak normal, sehingga Anda harus mengharapkan untuk skala itu dengan ukuran gambar untuk hough standard. Ingatlah bahwa argumen ini adalah, dalam eff ect, menunjukkan jumlah poin yang harus mendukung garis untuk line untuk dikembalikan.

Argumen param1 dan param2 tidak digunakan oleh SHT tersebut. Untuk PPHT, param1 menetapkan panjang minimum dari segmen garis yang akan dikembalikan, dan param2 menetapkan pemisahan antara segmen collinear dibutuhkan untuk algoritma tidak bergabung dengan mereka ke dalam segmen tunggal lagi. Untuk HT multiskala, dua parameter yang digunakan untuk menunjukkan resolusi yang lebih tinggi dimana parameter untuk lini harus dihitung. Multiskala HT pertama menghitung lokasi dari garis dengan akurasi yang diberikan oleh rho dan parameter theta dan kemudian melanjutkan untuk kembali baik-baik saja hasil tersebut dengan faktor param1 dan param2, masing-masing (yaitu, penyelesaian akhir di rho adalah rho dibagi dengan param1 dan resolusi akhir dalam theta, theta dibagi dengan param2).

Fungsi return tergantung bagaimana fungsi tersebut dipanggil. Jika nilai line  penyimpanan adalah array matriks, maka nilai kembali yang sebenarnya akan NULL. Dalam hal

ini, matriks harus dari jenis CV_32FC2 jika SHT atau multi-skala HT sedang digunakan dan harus CV_32SC4 jika PPHT yang digunakan. Dalam pertama dua kasus, ρ- dan θ-nilai untuk setiap baris akan ditempatkan di dua saluran array. Dalam kasus PPHT, empat saluran akan terus x dan y-nilai awal dan titik akhir dari segmen kembali. Dalam semua kasus ini, jumlah baris dalam array akan diperbarui oleh cvHoughLines2 () untuk benar mencerminkan jumlah baris kembali. Jika nilai line penyimpanan adalah pointer ke sebuah memori, * maka nilai kembali akan menjadi pointer ke struktur urutan CvSeq. Dalam hal ini, Anda bisa mendapatkan setiap  baris atau segmen garis dari urutan dengan perintah seperti

float* line = (float*) cvGetSeqElem( lines , i );

Dimana garis adalah nilai kembali dari cvHoughLines2 () dan i adalah indeks dari garis tujuan. Dalam hal ini, garis akan menjadi pointer ke data untuk baris tersebut, dengan garis [0] dan garis

(6)

[1] menjadi terapung- point nilai ρ dan θ (untuk SHT dan MSHT) atau struktur CvPoint untuk titik akhir dari segmen (untuk PPHT).

Studi Kasus

Studi kasus yang akan dibahas pada tugas ini yaitu “Pembuatan Aplikasi Transformasi Hough Untuk Deteksi Garis Lurus berbasis OpenCV. Tujuannya adalah untuk memunculkan dan mempertegas keberadaan garis lurus dalam sebuah citra berdasarkan ciri citra yang dimiliki serta untuk menganalisis hasil deteksi garis lurus yang diperoleh dari Transformasi Hough.

Algoritma

Algoritma adalah metode efektif diekspresikan sebagai rangkaian terbatas dari instruksi-instruksi yang telah didefinisikan dengan baik untuk menghitung sebuah fungsi. Dimulai dari sebuah kondisi awal dan input awal (mungkin kosong), instruksi-instruksi tersebut menjelaskan sebuah komputasi yang, bila dieksekusi, diproses lewat sejumlah urutan kondisi terbatas yang terdefinisi dengan baik, yang pada akhirnya menghasilkan "keluaran" dan berhenti di kondisi akhir. Transisi dari satu kondisi ke kondisi selanjutnya tidak harus deterministik; beberapa algoritma, dikenal dengan algoritma pengacakan, menggunakan masukan acak.

Flowchart adalah adalah suatu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses (instruksi) dengan proses lainnya dalam suatu program.

Algoritma yang digunakan pada  Hough Transform untuk mendeteksi garis dijelaskan melalui flowchart berikut :

(7)

Mulai

Pembacaan Citra

Pembacaan citra menjadi asli menjadi citra aras keabuan

Deteksi tepi

Deteksi dan rekonstruksi garis lurus

Selesai

Operasi Hough Transform

Gambar 3 Flowchart  Aplikasi Transformasi Hough Untuk Deteksi Garis Lurus

Metode proses yang digunakan dalam hough transform mendeteksi suatu garis pada objek berdasarkan algoritma flowchart pada gambar 1 dapat dijelaskan sebagai berikut :

1. Pembacaan Berkas Citra

Pembacaan berkas citra dilakukan untuk membaca citra asli yang menjadi source gambar suatu objek. Citra (image) itu sendiri memiliki arti secara harfiah yaitu sebagai gambar pada  bidang dua dimensi (dwimatra). Ditinjau dari sudut pandang matematis, citra merupakan fungsi

(8)

2. Pengubahan Citra menjadi Citra Aras Keabuan

Setelah dilakukan pembacaan citra, dilanjutkan dengan pengubahan citra menjadi citra aras keabuan. Supaya citra digital bisa diolah oleh komputer, maka citra digital harus mempunyai format tertentu. Format citra digital yang dipakai adalah citra skala keabuan (Gray Scale). Format citra ini disebut skala keabuan karena pada umumnya warna yang dipakai warna hitam sebagai warna minimal (0) dan warna putih (255) sebagai warna maksimalnya, sehingga warna antaranya adalah abu-abu.

Gambar 4 Citra Grayscale

3. Deteksi Tepi

Deteksi tepi dilakukan untuk meningkatkan penampakan garis pada citra tepi. Terdapat  beberapa macam metode untuk mendeteksi tepi. Pada tugas ini digunakan metode Canny untuk

(9)

Gambar 5 Deteksi Tepi

4. Operasi Hough Transform

Pada proses operasi hough transform ini berfungsi untuk menampung citra dalam bentuk koordinat berdasarkan hasil deteksi tepi menggunakan metode canny edge.

5. Deteksi dan Rekonstruksi Garis Lurus

Setelah dilakukan deteksi tepi pada citra, lalu dilanjutkan dengan deteksi dan rekonstruksi garis Dari tahapan ini user dapat mengetahui bentuk garis lurus yang terdapat di dalam suatu objek citra.

(10)

Implementasi Aplikasi OpenCV

1. Pembacaan Citra

Pembacaan berkas citra dilakukan untuk membaca citra asli yang menjadi source gambar suatu objek. Untuk membaca suatu citra dapat dilakukan dengan kode program berikut.

/* load the image */

IplImage* img = cvLoadImage("./segitiga.j pg"); //jpg – bmp

Kode Program 1 Pembacaan Citra

Citra yang akan dijadikan sebagai citra uji hough transform untuk mendeteksi garis lurus adalah sebagai berikut.

Gambar 7 Citra Uji

2. Pengubahan Citra menjadi Citra Aras Keabuan

Supaya citra digital bisa diolah oleh komputer, maka citra digital harus mempunyai format tertentu. Format citra digital yang dipakai adalah citra skala keabuan (Gray Scale). Untuk mengkonversi citra asli menjadi citra aras keabuan terlebih dahulu dibuat ruang untuk membuat image  kosong yang nantinya akan menampung hasil proses pengolahan dari masing-masing

(11)

tahap, img1 untuk hasil konversi ke citra Gray Scale, img2 untuk hasil deteksi tepi menggunakan operasi Canny Edge, img3 untuk hasil Hough Transform garis.

/* create image to receive image processing result */ IplImage* img1 = cvCreateImage(cvSize(>height, img->width),IPL_DEPTH_8U,1);

IplImage* img2 = cvCreateImage(cvSize(>height, img->width),IPL_DEPTH_8U,1);

IplImage* img3 = cvCreateImage(cvSize(>height, img->width),IPL_DEPTH_8U,1);

Kode Program 2 Ruang menampung hasil proses pengolahan dari masing-masing tahap

Setelah dibuatnya ruang untuk menampung hasil proses pengolahan, maka langkah selanjutnya adalah mengkonversi citra asli ke citra aras keabuan.

Kode Program 3 Konversi Citra Aras Keabuan

Gambar 8 Citra Grayscale /* convert to grayscale */

(12)

3. Deteksi Tepi

Deteksi tepi dilakukan untuk meningkatkan penampakan garis pada citra tepi. Metode yang digunakan adalah metode Canny untuk mendeteksi tepi. Untuk mengkonversi citra ke dalam metode canny edge dapat dilakukan dengan kode program sebagai berikut.

/* canny edge detection */

cvCanny( img1, img2, 0, 5, 3 );

Kode Program 4 Konversi Metode Canny Edge

Gambar 9 Citra Konversi Canny Edge

4. Operasi Hough Transform

Proses selanjutnya adalah deteksi dan rekonstruksi garis lurus. Deteksi garis lurus dilakukan dengan pembandingan antara besar tiap-tiap R yang ada terhadap besar R maksimum yang telah dikalikan dengan nilai ambang yang telah ditentukan yaitu sebesar 0,75. Besarnya R maksimum yang telah dikalikan dengan nilai ambang dijadikan sebagai batas minimal besar R yang harus dipenuhi sebagai syarat dideteksi dan direkonstruksi sebagai sebuah garis lurus. Penerapan rekontruksi garis lurus dapat digunakan dengan program sebagai berikut.

(13)

/* draw line into image */

for( int i = 0; i < MIN(houghLines->total,100); i++ ) { float* line = (float*)cvGetSeqElem(houghLines,i); float rho = line[0];

float theta = line[1]; CvPoint pt1, pt2;

double a = cos(theta), b = sin(theta); double x0 = a*rho, y0 = b*rho;

pt1.x = cvRound(x0 + 1000*(-b)); pt1.y = cvRound(y0 + 1000*(a)); pt2.x = cvRound(x0 - 1000*(-b)); pt2.y = cvRound(y0 - 1000*(a));

cvLine( img3, pt1, pt2, CV_RGB(255,0,0), 3, 8 ); }

Kode Program 5 Rekontruksi Garis Lurus

Gambar 10 Citra uji vertikal.bmp terekonstruksi garis lurus

Perekonstruksian garis lurus pada program ini dilakukan pada tiap-tiap titik penumpukan yang telah dideteksi sebagai garis lurus. Perekonstruksian garis lurus pada program ini dimulai dengan penghitungan dan penentuan letak titik asal terhadap titik tengah citra hasil pendeteksian tepi yang dijadikan sebagai titik referensi. Jarak antara letak titik asal terhadap letak titik tengah adalah merupakan jarak terdekat antara garis lurus dengan titik tengah jarak tersebut dinyatakan dengan symbol . Titik tengah citra adalah suatu titik yang berada persis di tengah matriks suatu

(14)

dijadikan sebagai alat bantu untuk mempermudah proses perekonstruksian selanjutnya. Setelah itu ditentukan batas titik x sesuai batas kolom matriks pada citra asli. Selanjutnya dihitung dan ditentukan batas titik y dengan mengacu pada letak titik asal dan batas titik x. Setelah itu direkonstruksi garis lurus dan titik asalnya sesuai dengan batas titik x dan batas titik y yang  bersesuaian yang telah dihitung sebelumnya.

(15)

Referensi : 1. http://id.scribd.com/doc/43121235/Pendeteksian-Garis-Dengan-Memanfaatkan-Transformasi-Hough 2. http://eprints.undip.ac.id/25328/1/ML2F003503.pdf  Format laporan: 1. Cover

2. Teori Hough Transform

a. Hough Transform Line ( laporan)

b. Hough Tranform Line in OpenCV ( Oreilly Ebook, OpenCV Doc:

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_li nes.html )

3. Implementasi Hough Transform Menggunakan OpenCV ( algoritma) Penjelasan Algoritma ( explanation dari OpenCV Doc:

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html ): a. Pembacaan Citra

b. …

Referensi

Dokumen terkait

Sebagai salah satu mata kuliah pilihan yang diminati oleh mahasiswa, menjadi menarik untuk diteliti dengan maksud mengembangkan model komunikasi berbasis integrasi

seseorang bertambah, tekanan darah pun akan meningkat. Anda tidak dapat mengharapkan bahwa tekanan darah anda saat muda akan sama ketika anda bertambah tua. Namun anda

Pada periode Klasik, istilah sonata cenderung mengacu kepada komposisi untuk satu atau dua instrumen saja, contohnya Piano Sonata, yang merupakan komposisi untuk piano

Mahasiswa wajib menambil mata kuliah micro teaching sebelum mengambil PPL. Mata kuliah micro teaching adalah pembelajaran awal yang diberikan oleh Universitas Negeri

Data tersedia adalah catatan data debit banjir maksimum tahunan sebanyak 40 (catatan selama 40 tahun), yang setelah diurutkan diperolh hasil seperti pada Tabel 3.3. Hasil

Syukur Alhamdulillah saya panjatkan kepada Allah SWT atas rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan tugas akhir yang berjudul ”Pengaruh Acrylamide

Berdasarkan hasil Penelitian yang dilakukan terhadap seluruh bayi usia 0-6 bulan yang berobat di RSUD Ambarawa pada bulan Desember 2010, didapatkan jumlah sampel sebanyak 39 bayi,

ditunjukkan dan tidak dihadapan orang lain (penonton) sama halnya dengan lesbian sebagai subjek, menyadari dirinya adalah pelaku lesbian maka mereka bertindak