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 aplikasi 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
File source code lengkap beserta citra pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code
Posted on August 14, 2018, in Pengenalan Pola, Pengolahan Citra and tagged aplikasi jst lvq matlab, contoh koding jst matlab, contoh koding matlab jst, download source code matlab moment invariants, implementasi jst lvq, jst lvq menggunakan matlab, koding jst lvq matlab, moment invariants matlab code, penerapan jst lvq, program jst sederhana menggunakan matlab, program matlab moment invariants, source code matlab moment invariants. Bookmark the permalink. 5 Comments.
permisi mas adi, kalo training gambar dijdiin 1 folder untuk 1 binatang. kodingan yg dirubah yg mana yah?
kalau pengen tahu feature_vec silahkan beli bukunya bang. nanti diberi source codenya juga kok.
mas kalau ada error kaya gini gmna ya?
Undefined function or variable ‘feature_vec’.
Error in pengenalan (line 5)
M = feature_vec(img);
malam pak adi, saya ingin bertanya kegunaan feature_vec itu untuk apa ya pak ?
terima kasih
Assalamualaikum mas, untuk lvq ini untuk mencari bobot awalnya bagaimana ya mas?