Bentuk merupakan salah satu ciri yang dapat diekstrak dari suatu objek untuk membedakan objek tersebut dengan objek lainnya. Berikut ini merupakan contoh aplikasi 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

2. Mengkonversi citra RGB menjadi citra grayscale

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

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

5. Operasi morfologi yaitu closing dan filling holes

6. Labelling objek

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

8. Mengklasifikasikan bentuk objek dengan ‘aturan if’ sederhana

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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

File source code lengkap beserta citra pada materi di atas dapat diperoleh melalui halaman berikut ini: Source Code


sumber : https://pemrogramanmatlab.com/pengenalan-pola-citra-digital-menggunakan-matlab/pola-bentuk-morfologi/

 Copyright stekom.ac.id 2018 All Right Reserved