Cara Menghitung Luas , Keliling , dan Centroid suatu Citra


Proses pengenalan objek dalam citra umumnya membutuhkan suatu ciri yang dapat membedakan antara objek yang satu dengan objek lainnya. Ciri yang dapat diekstrak antara lain adalah ciri ukuran (luas dan keliling) dan posisi (koordinat centroid) dari suatu objek.

Berikut ini merupakan contoh aplikasi 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

2. Mengkonversi citra grayscale menjadi citra biner

3. Melakukan operasi morfologi ‘filling holes’

4. Menentukan centroid dan boundary objek

5. Menampilkan koordinat centroid masing-masing objek

6. Labelling objek

7. Menghitung luas masing-masing objek (Area)

8. Menghitung keliling masing-masing objek (Perimeter)

9. Menampilkan semua hasil penghitungan

File source code lengkap beserta citra pada pemrograman di atas dapat diperoleh melalui halaman 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. 50 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

  5. ini menggunakan matlab versi brp y mas? bisa digunakan di matlab R2013a gk?

  6. mas adi, saya mau nanya. kalau untuk menghitung panjang dan lebar obejct caranya gmn ya? contohnya beras. mksh

  7. maksud saya menghitung ukuran objek, misalnya beras, tp dalam panjang dan lebarnya. bagaimana ya mas?

  8. kalo mencari titik tengah sebgai titik acuan(set point) dari suatu objek pada gambar untuk sistem kendali gimana ya?

  9. contohnya yg postingannya diatas ya mas?

  10. mas kalau mau membedakan berbagai bentuk bagaimana ya?

  11. mas kalau mau menghitung diameter gimana ya mas?

  12. gan ini luas areanya dalam satuan apa ya? piksel kah?

  13. menampilkann secara bertahap gmana kak?

  14. punya saya cuman nampilin hasil akhirnya kak, gak ada dari awal

  15. maaf mas, kalau menghitung luas objek citra dari segmentasi deteksi tepi bagaimana ya?

  16. Mas, kalau objeknya bertumpuk itu bagaimana?

  17. saya pakai metode distance transform untuk mensegmentasi objek yang bertumpuk, kalau pelabelannya itu bagaimana yah mas. Terima kasih sebelumnya

  18. kalau mau hitung luas yg bentuknya abstrak bagusnya pakai metode apa mas?

  19. Mas mau nanya untuk menghitung luasan yang bentuknya tidak beraturan (abstract) apakah bisa menggunakan source code diatas? Terima kasih sebelumnya

  20. apakah bisa menghitung luas persegi panjang?

  21. asslamualaikum mas, saya mau tanya bagaimana cara membandingkan tinggi dan lebar objek dalam bentuk piksel dengan objek sebenarnya?, mohon bantuannya mas
    . terimakasih

  22. Mas mau nanya, bagaimana cara menghitung jarak perpindahan objek pada video dari satu posisi ke posisi lainya? terimakasih sebelumnya mas

  23. maaf mas adi mau nanya lagi, kalau boleh tau contoh code yang bagian menghitung perpindahan centroid objek pada frame ke-i dengan frame ke-i+1 itu gimana ya mas?

  24. mas, apakah untuk penghitungan diatas bisa menggukan bhasa php ya?

  25. maaf mas mau bertanya, jika dari area yang sudah diketahui kan masih berupa satuan pixel, bagaimana jika kita ingin menetahui area koin tersebut dalam satuan milimeter?

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 )

Facebook photo

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

Connecting to %s

%d bloggers like this: