Pola Bentuk


Bentuk merupakan salah satu ciri yang dapat diekstrak dari suatu objek untuk membedakan objek tersebut dengan objek lainnya.

Berikut ini merupakan contoh pemrograman matlab untuk mengekstraksi ciri bentuk suatu objek dalam citra digital berdasarkan parameter luas, keliling, metric, dan eccentricity.

Luas merupakan banyaknya piksel yang menyusun suatu objek.

Sedangkan keliling merupakan banyaknya piksel yang berada pada boundary objek.

Eccentricity merupakan nilai perbandingan antara jarak foci ellips minor dengan foci ellips mayor suatu objek. Eccentricity memiliki rentang nilai antara 0 hingga 1. Objek yang berbentuk memanjang/mendekati bentuk garis lurus, nilai eccentricitynya mendekati angka 1, sedangkan objek yang berbentuk bulat/lingkaran, nilai eccentricitynya mendekati angka 0.

Sedangkan Metric merupakan nilai perbandingan antara luas  dan keliling objek. Metric memiliki rentang nilai antara 0 hingga 1. Objek yang berbentuk memanjang/mendekati bentuk garis lurus, nilai metricnya mendekati angka 0, sedangkan objek yang berbentuk bulat/lingkaran, nilai metricnya mendekati angka 1.

Langkah-langkah ekstraksi ciri pola bentuk adalah sebagai berikut:
1. Membaca citra RGB
1

2. Mengkonversi citra RGB menjadi citra grayscale
2

3. Mengkonversi citra grayscale menjadi citra biner menggunakan metode thresholding Otsu
3

4. Menghilangkan noise dengan cara menghapus objek yang memiliki luas di bawah 30
4

5. Operasi morfologi yaitu closing dan filling holes
5

6. Labelling objek
6

7. Menghitung luas, keliling, metric, dan eccentricity masing-masing objek
7

8. Mengklasifikasikan bentuk objek dengan ‘aturan if’ sederhana
7

Source code untuk mengekstraksi ciri bentuk suatu objek dalam citra digital adalah sebagai berikut:

clc;clear;close all;

RGB = imread('pillsetc.png');
imshow(RGB);

I = rgb2gray(RGB);
threshold = graythresh(I);
bw = im2bw(I,threshold);
bw = bwareaopen(bw,30);

se = strel('disk',2);
bw = imclose(bw,se);
bw = imfill(bw,'holes');
[B,L] = bwboundaries(bw,'noholes');

hold on
for k = 1:length(B)
    boundary = B{k};
    plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)
end

stats = regionprops(L,'Area','Centroid','Eccentricity');

for k = 1:length(B)
    boundary = B{k};
    delta_sq = diff(boundary).^2;
    perimeter = sum(sqrt(sum(delta_sq,2)));
    area = stats(k).Area;
    eccentricity = stats(k).Eccentricity;
    metric = 4*pi*area/perimeter^2;
    
    centroid = stats(k).Centroid;
    text(centroid(1),centroid(2)-16,num2str(k),'Color','r',...
        'FontSize',20,'FontWeight','bold');
    disp('===================================')
    disp(strcat(['Object number = ', num2str(k)]))
    disp(strcat(['Area = ',num2str(area)]))
    disp(strcat(['Perimeter = ',num2str(perimeter)]))
    disp(strcat(['Metric = ',num2str(metric)]))
    disp(strcat(['Eccentricity = ',num2str(eccentricity)]))
    
    if metric>0.8
        text(centroid(1)-16,centroid(2)+16,'Bulat','Color','r',...
            'FontSize',20,'FontWeight','bold');
    else
        text(centroid(1)-16,centroid(2)+16,'Tidak Bulat','Color','b',...
            'FontSize',20,'FontWeight','bold');
    end
end

Materi mengenai pengolahan citra digital untuk mendeteksi warna dan bentuk suatu objek dapat dilihat pada laman berikut: link

  1. Assalamualaikum mas, bisa tunjukan teori nya ?
    Terima kasih

  2. mas, bisa bantu contoh gui perbandingan citra sidik jari untuk mengukur prosentasi keidentikan

  3. idenya saya mau buat sp identifikasi sidik jari, ditempat saya kerja banyak perkara pemalsuan sidik jari, nah ada tantangan ke saya utk bagaimana membuat aplikasi yang mampu mengukur prosentasi keidentikan sidik jari yang di uji dengan sidik jari pembanding, tapi terus terang saja saya baru-baru aja coba pake matlab, sebelumya pake vb ato delphi, jadi kurang paham untuk matlabnya,.mohon bantuannya

  4. Pak Rizal, untuk perancangan sistem identifikasi sidik jari yang terintegrasi dengan hardware saya rekomendasikan untuk tidak menggunakan perangkat lunak matlab
    Meskipun juga support untuk proses interface, Software Matlab lebih difokuskan untuk penghitungan, simulasi, pemodelan, dan visualisasi
    Untuk proses interface, banyak software lain yang lebih handal di antaranya delphi, java, dan c

    Sedangkan untuk sistem identifikasi sidik jari sendiri, metode yang umumnya digunakan adalah deteksi minutiae, atau bisa juga dengan menggunakan metode filter bank gabor

    Semoga dapat memberikan gambaran dalam perancangan sistem tersebut

  5. mau tanya, apa benar untuk ekstraksi fitur kodingan gray (statistik) dan biner (morfologi) berbeda?

    • Benar
      Utk pengenalan pola bentuk, citra yg digunakan adalah citra biner
      Sedangkan utk pengenalan pola tekstur, citra yg digunakan adalah citra grayscale

  6. Mas, untuk mengklarifikasi bentuk seperti gambar nomor 8 bisa minta sourcodenya? Soalnya yg diatas klarifikasi hanya 1 objek (persegi panjang).
    Terima kasih

    • Klasifikasi mas
      Bukan klarifikasi
      Source codenya sdh saya share di atas
      Coding tsb digunakan utk membedakan antara objek berbentuk bulat dg tidak bulat

  7. Mas, mau tanya untuk kasus diatas apabila digunakan lebih dari satu image yang akan diektraksi ciri bentuknya bagaimana ya ? apakah untuk ektraksi ciri bentuk hanya eccoecentricity saja ?

    kemudian hasil dari ekstraksi ciri bentuk tsb akan diklasifikasi dengan menggunakan metode machine learning seperti SVM begitu bagaimana ya ?

    Terima kasih

  8. salam mas adi.,.,
    maaf mas, mu tanya …..
    cara melakukan traning data yang berupa dataset image dengan menggunakan LVQ tekniknya gmn ya mas.,.,?
    terima kasih sebelumnya….

    • secara umum, semua jenis jaringan syaraf tiruan ditraining dengan perintah ‘train’, yang membedakan hanya pembentukan arsitektur jaringannya saja misal perceptron menggunakan perintah ‘newp’, propagasi balik menggunakan perintah ‘newff’

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: