Cara Menghitung Luas , Keliling , dan Centroid suatu Citra


Berikut ini merupakan contoh pemrograman matlab untuk menghitung centroid, luas, dan keliling objek dalam suatu citra grayscale. Centroid merupakan koordinat titik tengah dari suatu objek. Luas merupakan banyaknya piksel yang menyusun suatu objek. Sedangkan keliling merupakan banyaknya piksel yang berada pada boundary objek. Hasil penghitungan geometris tersebut dapat digunakan sebagai ciri masukan dalam tahapan pengenalan pola morfologi/ bentuk.

Langkah-langkah pemrograman untuk menghitung luas, keliling, dan centroid suatu citra adalah sebagai berikut:
1. Membaca dan menampilkan citra grayscale
1

2. Mengkonversi citra grayscale menjadi citra biner
2

3. Melakukan operasi morfologi ‘filling holes’
3

4. Menentukan centroid dan boundary objek
4

5. Menampilkan koordinat centroid masing-masing objek
10

6. Labelling objek
5

7. Menghitung luas masing-masing objek (Area)
6

8. Menghitung keliling masing-masing objek (Perimeter)
7

9. Menampilkan semua hasil penghitungan
9

Source code dan citra pada pemrograman di atas dapat diunduh melalui laman berikut ini: Source Code

Sedangkan tampilan source codenya adalah:

clc;clear;close all;
I = imread('coins.png');
figure, imshow(I)
bw = im2bw(I, graythresh(I));
bw2 = imfill(bw,'holes');

s = regionprops(bw2, 'centroid','area','perimeter');
centroids = cat(1, s.Centroid);
area = cat(1, s.Area);
perimeter = cat(1, s.Perimeter);
hold on
plot(centroids(:,1), centroids(:,2), 'r*')

[B,L] = bwboundaries(bw2,'noholes');
[~,num] = bwlabel(bw2,8);

for k = 1:num
    boundary = B{k};
    plot(boundary(:,2), boundary(:,1), 'y', 'LineWidth', 2)
    text(boundary(1,2),boundary(1,1)-7,strcat(['Label = ',num2str(k)]),'Color','r',...
        'FontSize',10,'FontWeight','bold');
    text(boundary(1,2),boundary(1,1),strcat(['Area = ',num2str(area(k))]),'Color','b',...
        'FontSize',10,'FontWeight','bold');
    text(boundary(1,2),boundary(1,1)+7,strcat(['Perim = ',num2str(perimeter(k))]),'Color','g',...
        'FontSize',10,'FontWeight','bold');
    text(boundary(1,2),boundary(1,1)+14,strcat(['X = ',num2str(centroids(k,1))]),'Color','c',...
        'FontSize',10,'FontWeight','bold');
    text(boundary(1,2),boundary(1,1)+21,strcat(['Y = ',num2str(centroids(k,2))]),'Color','c',...
        'FontSize',10,'FontWeight','bold');
end

Save

Save

Save

Posted on September 10, 2015, in Pengolahan Citra and tagged , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 10 Comments.

  1. maaf, bagaimanakah caranya agar saya bisa menampilkan koordinat posisi masing-masing koin?

  2. kak, ada nggak source code cara hitung luas dan kelilingnya?

  3. gan, kalau menghitung diameter objek telur algoritma apa yang bagus dipakai ?

  4. Kalau boleh minta email dong gan . makasi

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

%d bloggers like this: