Segmentasi Citra Menggunakan Algoritma Klustering


Segmentasi citra merupakan suatu tahapan untuk mengelompokkan region-region di dalam suatu citra. Pengelompokan tersebut dilakukan agar dapat dilakukan analisis pada region tertentu saja.

Berikut ini merupakan contoh aplikasi pengolahan citra untuk melakukan segmentasi citra menggunakan algoritma klustering. Citra yang digunakan adalah citra ‘plage de carataggio tahiti beach.jpg’ yang akan dikelompokkan dalam 3 kelas region yaitu region laut, region pepohonan, dan region pasir. Algoritma klustering yang digunakan antara lain adalah random forest, k-nearest neighbors, naive bayes, dan decision tree (pohon keputusan).

Langkah-langkah pengolahan citranya adalah sebagai berikut:

1. Membaca citra rgb dan memperkecil ukuran citra

clc; clear; close all; warning off all;

% membaca citra rgb
Img = imread('plage de carataggio tahiti beach.jpg');
% memperkecil ukuran citra 0,5x semula untuk mempercepat komputasi
Img = imresize(Img,0.5);
figure, imshow(Img), title('Citra RGB');

2. Mengkonversi ruang warna citra rgb menjadi ycbcr

% mengkonversi ruang warna citra rgb menjadi ycbcr
YCbCr = rgb2ycbcr(Img);
figure, imshow(YCbCr), title('Citra YCbCr');

3. Melakukan segmentasi citra menggunakan algoritma random forest

% mengekstrak komponen cb dan cr
CbCr = double(YCbCr(:,:,2:3));
% mengambil sampel untuk masing2 cluster
CbCr1 = reshape(CbCr(61:70,181:190,:),100,2);   % region laut
CbCr2 = reshape(CbCr(91:100,561:570,:),100,2);  % region pepohonan
CbCr3 = reshape(CbCr(261:270,521:530,:),100,2); % region pasir
% mempersiapkan matriks input dan region cluster
X = [CbCr1;CbCr2;CbCr3];
Y = cell(15,1);

for a = 1:100
    Y{a} = 'laut';
end

for b = 101:200
    Y{b} = 'pepohonan';
end

for c = 201:300
    Y{c} = 'pasir';
end

% klasifikasi menggunakan algoritma random forest
iNumBags = 60;
str_method = 'classification';
Mdl = TreeBagger(iNumBags,X,Y,'OOBPred','On','Method',str_method);
% membaca cluster keluaran
nrows = size(CbCr,1);
ncols = size(CbCr,2);
CbCr = reshape(CbCr,nrows*ncols,2);
y = predict(Mdl,CbCr);
% menyusun citra hasil clustering
Img2 = zeros(nrows,ncols);
for n = 1:numel(Img2);
    if isequal(y{n},'laut')
        Img2(n) = 1;
    elseif isequal(y{n},'pepohonan')
        Img2(n) = 2;
    elseif isequal(y{n},'pasir')
        Img2(n) = 3;
    end
end

% menampilkan citra hasil clustering
figure, imshow(Img2,[]), title('Hasil Clustering');

4. Menampilkan masing-masing region hasil klustering

% menampilkan citra region laut
R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);
R(Img2~=1) = 0;
G(Img2~=1) = 0;
B(Img2~=1) = 0;
RGB = cat(3,R,G,B);
figure, imshow(RGB), title('Region Laut');

% menampilkan citra region pepohonan
R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);
R(Img2~=2) = 0;
G(Img2~=2) = 0;
B(Img2~=2) = 0;
RGB = cat(3,R,G,B);
figure, imshow(RGB), title('Region Pepohonan');

% menampilkan citra region pasir
R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);
R(Img2~=3) = 0;
G(Img2~=3) = 0;
B(Img2~=3) = 0;
RGB = cat(3,R,G,B);
figure, imshow(RGB), title('Region Pasir');

5. Membandingkan hasil segmentasi masing-masing algoritma klustering

Seluruh file lengkap source code dan citra pada pemrograman di atas dapat diperoleh pada halaman berikut ini: Source Code

Posted on July 28, 2019, in Pengolahan Citra and tagged , , , , , , , . Bookmark the permalink. Leave a comment.

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s

%d bloggers like this: