Deteksi Lingkaran Dengan Transfromasi Hough Menggunakan Matlab
1. Tujuan
Bertujuan untuk menjelaskan, secara matematis, tujuan menyelesaikan masalah dalam Transformasi Hough merupakan salah satu metode image processing yang dapat digunakan untuk mendeteksi garis dan lingkaran pada suatu citra digital
2. Optimasi
Problem optimasi secara tipikal akan memaksimalkan atau meminimalkan suatu fungsi yang disebut fungsi obyektif (objective function) pada himpunan titik-titik S (feasible set).
3. Fungsi
Problem : Menentukan lingkararan bola dalam gambar digital
4. Percobaan
1. Membaca citra RGB
1 2 3 4 5 | clc; clear; close all; warning off all;% membaca citra RGBim = imread('cristiano ronaldo.jpg');figure,imshow(im); |
2. Normalisasi citra dengan cara mengkonversi citra RGB menjadi citra Grayscale
1 2 3 | % mengkonversi citra RGB menjadi grayscaleim_gray = rgb2gray(im);figure,imshow(im_gray); |
3. Melakukan deteksi tepi terhadap citra Grayscale
1 2 3 | % melakukan deteksi tepi terhadap citra grayscalee = edge(im_gray, 'canny');figure,imshow(e); |
4. Mendeteksi lingkaran menggunakan Transformasi Hough
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | % mendeteksi objek yang berbentuk lingkaranradii = 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;endhold off |
5. Menampilkan citra biner hasil deteksi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | % menampilkan citra biner hasil deteksiim2 = 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 Pixelsfor i=1:numind bin(r(i),c(i)) = 1;endbin = imfill(bin,'holes');str = strel('disk',5);bin = imerode(bin,str);figure, imshow(bin); |
6. Menampilkan objek hasil deteksi
1 2 3 4 5 6 7 8 9 | % menampilkan objek hasil deteksiR = 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
1 2 3 4 5 6 | % melakukan cropping terhadap objek hasil deteksistats = 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
1 2 3 4 5 | % menghitung luas dan keliling objek hasil deteksiarea = 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:
5. Link program
clc; clear; close all; warning off all;% membaca citra RGBim = imread('cristiano ronaldo.jpg');figure,imshow(im);% mengkonversi citra RGB menjadi grayscaleim_gray = rgb2gray(im);figure,imshow(im_gray); |












Tidak ada komentar:
Posting Komentar