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

Posted on November 4, 2018, in Pengenalan Pola, Pengolahan Citra and tagged , , , , , , , , , , , , , , . Bookmark the permalink. 2 Comments.

  1. Ridho Aji Pangestu

    permisi mau tanya pak, itu untuk luas dari bola satuan piksel ya ?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: