Deteksi Lingkaran Menggunakan Transformasi Hough
Apakah yang dimaksud dengan Transformasi Hough??
Transformasi Hough merupakan salah satu metode image processing yang dapat digunakan untuk mendeteksi garis dan lingkaran pada suatu citra digital. Transformasi Hough bekerja dengan cara mencari hubungan ketetanggaan antar piksel menggunakan persamaan garis lurus untuk mendeteksi garis dan persamaan lingkaran untuk mendeteksi lingkaran. Berikut ini merupakan contoh aplikasi pemrograman matlab untuk melakukan deteksi lingkaran pada citra digital menggunakan Transformasi Hough. Sedangkan materi mengenai deteksi garis menggunakan transformasi hough dapat dilihat pada halaman berikut: Deteksi Titik Sudut Citra Untuk Identifikasi Bentuk
Pemrograman yang dilakukan merupakan modifikasi source code yang sebelumnya telah dikembangkan oleh David Young. Modifikasi dilakukan pada pengolahan akhir citra hasil deteksi sehingga objek dapat dipisahkan dengan background dan dapat dihitung luas dan kelilingnya.
Langkah-langkah pemrogramannya adalah sebagai berikut:
1. Membaca citra RGB
clc; clear; close all; warning off all; % membaca citra RGB im = imread('cristiano ronaldo.jpg'); figure,imshow(im);
2. Normalisasi citra dengan cara mengkonversi citra RGB menjadi citra Grayscale
% mengkonversi citra RGB menjadi grayscale im_gray = rgb2gray(im); figure,imshow(im_gray);
3. Melakukan deteksi tepi terhadap citra Grayscale
% melakukan deteksi tepi terhadap citra grayscale e = edge(im_gray, 'canny'); figure,imshow(e);
4. Mendeteksi lingkaran menggunakan Transformasi Hough
% mendeteksi objek yang berbentuk lingkaran radii = 40:1:80; h = circle_hough(e, radii, 'same', 'normalise'); peaks = circle_houghpeaks(h, radii, 'nhoodxy', 15, 'nhoodr', 21, 'npeaks', 1); figure,imshow(im); hold on; bw = false(size(im_gray)); for peak = peaks [x, y] = circlepoints(peak(3)); plot(x+peak(1), y+peak(2), 'y-','LineWidth',4); bw(x+peak(2), y+peak(1)) = true; end hold off
5. Menampilkan citra biner hasil deteksi
% menampilkan citra biner hasil deteksi im2 = insertShape(im,'circle',[peaks(1),peaks(2),peaks(3)],'LineWidth', 4); R = im2(:,:,1); G = im2(:,:,2); B = im2(:,:,3); [r,c,~] = find(R==255 & G==255 & B==0); numind = size(r,1); bin = false(size(im2,1), size(im2,2)); % Mark Skin Pixels for i=1:numind bin(r(i),c(i)) = 1; end bin = imfill(bin,'holes'); str = strel('disk',5); bin = imerode(bin,str); figure, imshow(bin);
6. Menampilkan objek hasil deteksi
% menampilkan objek hasil deteksi R = im(:,:,1); G = im(:,:,2); B = im(:,:,3); R(~bin) = 0; G(~bin) = 0; B(~bin) = 0; RGB = cat(3,R,G,B); figure,imshow(RGB);
7. Melakukan cropping terhadap objek hasil deteksi
% melakukan cropping terhadap objek hasil deteksi stats = regionprops(bin,'All'); bbox = cat(1,stats.BoundingBox); im3 = imcrop(RGB,bbox); imwrite(im3,'myFile.png','Transparency', [0 0 0]) figure, imshow(im3);
8. Menghitung luas dan keliling objek hasil deteksi
% menghitung luas dan keliling objek hasil deteksi area = cat(1,stats.Area); perimeter = cat(1,stats.Perimeter); disp(['Area = ',num2str(area)]) disp(['Perimeter = ',num2str(perimeter)])
Contoh hasil deteksi lingkaran pada citra yang lain:
Contoh pengolahan citra digital di atas dapat dikembangkan lagi lebih lanjut menggunakan metode pengolahan citra terbaru sehingga diperoleh tingkat akurasi yang lebih baik.
File source code lengkap beserta citra yang ada pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code
Penerapan metode transformasi hough untuk mendeteksi objek yang berbentuk lingkaran dapat dilihat pada video tutorial berikut ini:

Posted on November 4, 2018, in Pengenalan Pola, Pengolahan Citra and tagged cara deteksi lingkaran, cara mendeteksi lingkaran, contoh deteksi tepi, contoh pengolahan citra digital, definisi transformasi hough, deteksi lingkaran menggunakan transformasi hough, deteksi tepi, deteksi tepi canny, ekstraksi ciri, menghitung luas dan keliling objek, source code deteksi lingkaran, source code hough transform, source code transformasi hough, transformasi hough adalah, tutorial matlab. Bookmark the permalink. 14 Comments.
permisi mau tanya pak, itu untuk luas dari bola satuan piksel ya ?
Iya betul
Luas dan keliling dalam satuan piksel
dijadikan menjadi satuan cm2 tidak pak ? kalau boleh tau rumusnya bagaimana ? terima kasih 🙂
untuk mengkonversi satuan piksel menjadi cm2 bisa menggunakan resolusi spasial
Maaf mau tanya. setelah deteksi tepi lalu ke deteksi objek bentuk lingkaran ada double type argunen di parameter h. Kira kira cara ataainya bagaimana mas.
Pak klo deteksi lingkaran tidak pas di bola bagai mana pak?
Bisa diperbaiki lagi koding nya supaya pas
izin bertanya pak
bagaimana konsep dasar dan contoh perhitungan manual dari metode cht ini?
mohon bantuan nya
maaf izin bertanya jika fungsi circle_hough tidak terdeteksi bagaimana ya?
source code lengkap beserta data bisa diperoleh melalui tokopedia
sehingga bisa langsung dirunning di matlab tanpa error
Assalamualaikum, maaf mas mas disini, saya mau bertanya,
sewaktu codingan saya jalankan, dan sampai di line fungsi “circle_hough”
Saya mendapatkan error seperti ini:
Undefined function or variable ‘circle_hough’.
itu cara mengatasinya bagaimana ya mas?
MATLAB saya versi R2017b
source code lengkap bisa dibeli melalui tokopedia sehingga tidak error ketika dirunning
Pak Adi, apakah perbedaan kamera dapat mempengaruhi akurasi machine learning, dikarenakan kualitas pixel gambar?
Iya betul perbedaan kamera mempengaruhi akurasi machine learning