Pengenalan Pola Bentuk Menggunakan Moment Invariants Dan Jaringan Syaraf Tiruan LVQ


Moment Invariants merupakan salah satu metode ekstraksi ciri bentuk yang nilainya tidak berubah terhadap perlakuan rotasi, translasi, pencerminan, dan penskalaan. Pada metode ini dihasilkan tujuh nilai moment yang dapat menggambarkan suatu objek berdasarkan posisi, orientasi dan parameter-parameter lainnya.

Berikut ini merupakan contoh pemrograman MATLAB untuk melakukan pengenalan pola bentuk menggunakan moment invariants dan jaringan syaraf tiruan Learning Vector Quantization (LVQ).

Citra yang digunakan terdiri dari tiga jenis bentuk yaitu bentuk hewan burung (bird), kadal (lizard), dan gurita (octopus). Pada data latih digunakan 15 citra pada masing-masing hewan sehingga jumlah total data latih adalah 45 citra. Sedangkan pada data uji digunakan 5 citra pada masing-masing hewan sehingga jumlah total data uji adalah 15 citra (sumber dataset citra: http://www.dabi.temple.edu/~shape/MPEG7/dataset.html)

Beberapa citra pada data latih ditunjukkan pada gambar berikut ini:

Langkah-langkah pemrogramannya adalah sebagai berikut:

1. Pelatihan sistem dengan tahapan ekstraksi ciri menggunakan algoritma moment invariants dan identifikasi dengan algoritma jaringan syaraf tiruan LVQ

clc; clear; close all;

image_folder = 'data latih';
filenames = dir(fullfile(image_folder, '*.gif'));
total_images = numel(filenames);

M = zeros(7,total_images);

for n = 1:total_images
    full_name = fullfile(image_folder, filenames(n).name);
    img = logical(imread(full_name));
    M(:,n) = feature_vec(img);
end

target = zeros(1,total_images);
target(1:15) = 1;   % bird
target(16:30) = 2;  % lizzard
target(31:45) = 3;  % octopus

t = ind2vec(target);

hiddenSize = 10;
lvqLR = 0.1;
lvqLF = 'learnlv2';
numEpochs = 100;

net = lvqnet(hiddenSize,lvqLR,lvqLF);
net.trainParam.epochs = numEpochs;
net = train(net,M,t);

y = net(M);
classes = vec2ind(y);

[a,~] = find(classes==target);
train_accuracy = sum(a)/total_images*100

save net_keluaran net

Akurasi pelatihan yang dihasilkan adalah sebesar 91.1111%

2. Pengujian sistem terhadap data uji

clc; clear; close all;

image_folder = 'data uji';
filenames = dir(fullfile(image_folder, '*.gif'));
total_images = numel(filenames);

M = zeros(7,total_images);

for n = 1:total_images
    full_name = fullfile(image_folder, filenames(n).name);
    img = logical(imread(full_name));
    M(:,n) = feature_vec(img);
end

target = zeros(1,total_images);
target(1:5) = 1;    % bird
target(6:10) = 2;   % lizzard
target(11:15) = 3;  % octopus

load net_keluaran
y = net(M);
classes = vec2ind(y);

[a,~] = find(classes==target);
test_accuracy = sum(a)/total_images*100

Akurasi pengujian yang dihasilkan adalah sebesar 73.3333%

3. Memvisualisasikan proses pengenalan citra hewan

clc; clear; close all;

full_name = 'data uji\octopus-18.gif';
img = logical(imread(full_name));
M = feature_vec(img);

load net_keluaran
y = net(M);
classes = vec2ind(y);

switch classes
    case 1
        class_out = 'bird';
    case 2
        class_out = 'lizzard';
    case 3
        class_out = 'octopus';
end

figure, imshow(img);
title(['Result -> ',class_out])

Contoh hasil pengenalan yang benar

Contoh hasil pengenalan yang salah

Source code dan citra pada pemrograman di atas dapat diperoleh pada halaman berikut ini: Source Code

Posted on August 14, 2018, in Pengenalan Pola, Pengolahan Citra and tagged , , , , , , , , , , , . Bookmark the permalink. 1 Comment.

  1. permisi mas adi, kalo training gambar dijdiin 1 folder untuk 1 binatang. kodingan yg dirubah yg mana yah?

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: