Ekstraksi Ciri Citra Grayscale
Ekstraksi ciri merupakan tahapan yang sangat penting dalam pengenalan pola. Tahapan ini bertujuan untuk memperoleh informasi yang terkandung dalam suatu citra untuk kemudian dijadikan sebagai acuan untuk membedakan antara citra yang satu dengan citra yang lain.
Ekstraksi ciri dapat dilakukan setelah tahapan segmentasi citra (memisahkan antara objek dengan background) maupun tanpa segmentasi citra (objek adalah background dan background adalah objek).
Berikut ini merupakan contoh aplikasi pemrograman matlab untuk melakukan ekstraksi ciri citra grayscale baik yang didahului dengan tahapan segmentasi maupun tidak.
Langkah-langkah pemrogramannya yaitu:
A. Ekstraksi ciri didahului dengan segmentasi
1. Membaca dan menampilkan citra RGB asli
clc; clear; close all; warning off all; I = imread('candy.png'); figure, imshow(I);
2. Mengkonversi citra RGB menjadi citra Grayscale
I_Gray = rgb2gray(I); figure, imshow(I);
3. Melakukan thresholding terhadap citra Grayscale sehingga diperoleh citra biner hasil segmentasi
I_bw = im2bw(I_Gray,.88); figure, imshow(I_bw);
4. Melakukan komplemen citra agar objek berwarna putih (bernilai 1) dan background berwarna hitam (0)
I_bw = imcomplement(I_bw); figure, imshow(I_bw);
5. Melakukan operasi morfologi berupa filling holes untuk menyempurnakan hasil segmentasi
I_bw = imfill(I_bw,'holes'); figure, imshow(I_bw);
6. Menampilkan citra Grayscale hasil segmentasi
I_Gray(~I_bw) = 0; figure, imshow(I_Gray);
7. Melakukan pelabelan terhadap masing-masing objek yang tersegmentasi, melakukan ekstraksi ciri berdasarkan parameter mean, max intensity, min intensity, standard deviation, dan variance, serta menampilkan hasil ekstraksi ciri pada masing-masing objek yang terlabeli
[L,num] = bwlabel(I_bw); for n = 1:num bw = L==n; figure, imshow(bw); [a,b] = find(bw==1); gray_level = zeros(1,numel(a),1); for m = 1:numel(a) gray_level(m) = I_Gray(a(m),b(m)); end mean_gray_level = mean(gray_level); max_gray_level = max(gray_level); min_gray_level = min(gray_level); std_gray_level = std(gray_level); var_gray_level = var(gray_level); [B,~] = bwboundaries(bw,'noholes'); boundary = B{1}; position = [boundary(1,2)+40,boundary(1,1)-50;boundary(1,2)+40,boundary(1,1)-25;... boundary(1,2)+40,boundary(1,1);boundary(1,2)+40,boundary(1,1)+25;... boundary(1,2)+40,boundary(1,1)+50;boundary(1,2)+40,boundary(1,1)+75]; text_str = cell(6,1); text_str{1} = ['Label: ' num2str(n)]; text_str{2} = ['Mean: ' num2str(mean_gray_level,'%0.2f')]; text_str{3} = ['Max: ' num2str(max_gray_level)]; text_str{4} = ['Min: ' num2str(min_gray_level)]; text_str{5} = ['Std: ' num2str(std_gray_level,'%0.2f')]; text_str{6} = ['Var: ' num2str(var_gray_level,'%0.2f')]; I_Gray2 = I_Gray; I_Gray2(~bw) = 0; figure, imshow(I_Gray2); RGB = cat(3,I_Gray2,I_Gray2,I_Gray*0); RGB2 = insertText(RGB,position,text_str,'FontSize',16,'BoxOpacity',0.8,'TextColor','black'); figure, imshow(RGB2); end
Label 1
Label 2
Label 3
Label 4
Label 5
Label 6
B. Ekstraksi ciri tanpa didahului dengan segmentasi
1. Membaca dan menampilkan citra RGB asli
clc; clear; close all; warning off all; I = imread('batik.jpg'); figure, imshow(I);
2. Mengkonversi citra RGB menjadi citra grayscale
I_Gray = rgb2gray(I); figure, imshow(I_Gray);
3. Melakukan ekstraksi ciri berdasarkan parameter mean, max intensity, min intensity, standard deviation, dan variance, serta menampilkan hasilnya pada citra grayscale
mean_gray_level = mean2(I_Gray); max_gray_level = max(max(I_Gray)); min_gray_level = min(min(I_Gray)); std_gray_level = std2(I_Gray); var_gray_level = var(double(I_Gray(:))); position = [10,10;10,60;10,110;10,160;10,210]; text_str = cell(5,1); text_str{1} = ['Mean: ' num2str(mean_gray_level,'%0.2f')]; text_str{2} = ['Max: ' num2str(max_gray_level)]; text_str{3} = ['Min: ' num2str(min_gray_level)]; text_str{4} = ['Std: ' num2str(std_gray_level,'%0.2f')]; text_str{5} = ['Var: ' num2str(var_gray_level,'%0.2f')]; RGB = cat(3,I_Gray,I_Gray,I_Gray); RGB2 = insertText(RGB,position,text_str,'FontSize',24,'BoxOpacity',0.8,'TextColor','black'); figure, imshow(RGB2);
Ciri yang diekstrak dapat digunakan untuk tahapan selanjutnya yaitu tahapan pengenalan pola dengan mengembangkan berbagai macam algoritma.
File source code lengkap beserta citra pada pemrograman matlab di atas dapat diperoleh melalui halaman berikut ini: Source Code
Posted on July 2, 2017, in Pengenalan Matlab, Pengenalan Pola, Pengolahan Citra and tagged algoritma matlab, algoritma pemrograman matlab, analisis citra batik, analisis citra grayscale, aplikasi matlab, cara mengkonversi citra rgb menjadi grayscale, citra, citra adalah, citra batik, citra biner adalah, citra grayscale adalah, citra rgb adalah, contoh koding ekstraksi fitur, contoh koding ekstraksi fitur matlab, contoh koding matlab thresholding, contoh program matlab pengolahan citra, contoh program matlab sederhana, contoh source code matlab pengolahan citra, ekstraksi ciri adalah, ekstraksi ciri citra adalah, ekstraksi ciri citra batik, ekstraksi ciri citra grayscale, ekstraksi ciri orde pertama, ekstraksi ciri orde satu, ekstraksi fitur adalah, fitur adalah, grayscale, image processing adalah, image processing menggunakan matlab, koding ekstraksi ciri matlab, koding matlab analisis tekstur, koding matlab ekstraksi ciri, koding matlab ekstraksi ciri citra, koding matlab pengolahan citra, koding matlab sederhana, Matlab, pengolahan citra, pengolahan citra adalah, pengolahan citra batik, Pengolahan Citra Digital, pengolahan citra digital adalah, program ekstraksi ciri matlab, segmentasi, segmentasi adalah, segmentasi citra, segmentasi citra adalah, segmentasi citra grayscale. Bookmark the permalink. 30 Comments.
assalamaualaikum mas adi, mau tanya maksudnya script data_latih = zeros(6,total_images); itu untuk apa? karna saya nyoba ga sengaja terbalik jadi data_latih = zeros(total_images, 6); tetep ada hasilnya cuma ada perbedaan dikit sih
hehe.
Waalaikumsalam azkya novia
Dalam koding di atas tidak ada perintah yg novia maksud
Mungkin bisa ditunjukkan lagi koding yg novia maksud ada pada materi yg mana
ini materi mas adi yang identifikasi jenis bunga 100 itu. nah saya lagi mencoba mengartikan script baris perbaris :v dan blm paham mksd dr baris ini data_latih = zeros(6,total_images); hoho
Kalau arti dari perintah itu adalah
Membuat matriks yang nilai nya nol semua
Dengan ukuran 6 baris dan 100 kolom
Karena kebetulan jumlah citra nya ada 100
Kalau dibalik, maka ukuran matriks akan ada 100 baris dan 6 kolom
Tetapi koding yg saya buat pada materi tsb sdh sesuai dg prosedur pemrograman jst di matlab utk ukuran matriks data latih
Jumlah baris menyatakan banyaknya ciri masukan
Sedangkan jumlah kolom menyatakan banyaknya citra masukan
Pada matriks yang nilai nya nol semua itu kemudian diisi nilai nya dg hasil ekstraksi ciri utk masing masing citra
oke sip, paham skrg. oiya dipostingan ini kalimat terakhirnya “Ciri yang diekstrak dapat digunakan untuk tahapan selanjutnya yaitu tahapan pengenalan pola” bukankah mengekstrak ciri itu sama dengan pengenalan pola(tujuannyasama) ?
Beda novia
Prosedur pengenalan pola yg lengkap adalah seperti ini
Akuisisi citra, segmentasi citra, ekstraksi ciri, dan pengenalan/identifikasi
Materi lengkap nya novia bisa melihat pada halaman berikut ini
https://pemrogramanmatlab.com/pengenalan-pola-citra-digital-menggunakan-matlab/
hmmm oke-oke. saya kira jika udah nyoba, misal 100 gambar yg dicoba ternyata punya mean,stdDev,kurtosis yang masing2 gambar berbeda itu sudah cukup untuk menjadikan nilainya sebagai input untuk identifikasi, misalnya inputan untuk membuat matfile pada jst gitu(?).
Pada prinsipnya dalam ekstraksi ciri itu diharapkan ciri yg diekstrak mampu untuk membedakan antara objek yg satu dg objek yg lain
Sedangkan pada objek yg sama diharapkan ciri tsb memiliki nilai yg tidak terlalu berbeda
oke mas adi. terimakasih
Sama sama novia
Assalamualaikum mas adi, saya ingin melakukan ekstraksi ciri citra satelit awan. Dalam satu citra tersebut terdapat 3 jenis awan yang berbeda yang saling berdekatan atau bisa juga saling bersinggungan. Mohon pencerahannya bagaimana caranya mengekstraksi 3 jenis awan tersebut yang terdapat dalam 1 frame citra?
Waalaikumsalam neneng
Neneng bisa menggunakan segmentasi warna atau tekstur utk memisahkan antara awan yg satu dg yg lain
Hasil dari proses segmentasi tsb adalah citra biner
Jika hasil dari segmentasi masih bersinggungan maka neneng bisa menggunakan operasi morfologi thd citra biner agar dapat memisahkan antar awan
setelah saya segmentasi, bagaimana cara nya mengekstrasksi satu persatu bagian awannya??
Bisa menggunakan labelling seperti yg ada pada materi di atas
jika saya ingin menerapkan ekstraksi features glcm bisa tidak? kemudian saya ingin menyimpan setiap hasil ekstraksi dalam bentuk m file,bagaimana ya?
Bisa neneng, bisa dicoba diimplementasikan
terimakasih mas adi, saya coba dulu
Baik neneng sama sama
Assalamualaikum mas, saya ingin bertanya lagi. Saya sudah melakukan segmentasi terhadap citra satelit yg saya olah dgn menggunakan multithresh. Kemudian saya gunakan label2rgb untuk merubah dan melihatnya kebentuk rgb. Saya ingin melakukan ekstraksi terhadap 3 bagian yg tersegment tersebut. Mohon bantuannya penulisan codingnya seperti apa ya?
Waalaikumsalam neneng
ekstraksi ciri bisa dilakukan menggunakan berbagai macam metode
di antaranya adalah metode ekstraksi ciri warna, tekstur, dan bentuk
dalam website ini terdapat beberapa materi mengenai ekstraksi ciri tersebut yang bisa neneng pelajari
saya mau mengekstraksi cirinya dengan metode glcm dan glcm membutuhkan citra grayscale. saya masih bingung mas coding untuk mendapatkan setiap bagian yg tersegment itu secara terpisah dan kembali kescala grayscale untuk dapat diekstraksi satu persatu.
Assalammualaikum mastah, saya ingin bertanya apakah anda memiliki materi tentang cara kerja dari ektraksi fitur / ciri dengan metode BLOB?
assalamaualaikum mas adi, saya mau tanya, project saya pengenalan ciri pola text vocal dengan metode jaringan syaraf tiruan, apakah mass adi, bisa memberitahu tahapan apa saja, yang harus di lalui agar project itu bisa selesai, mohon bantuanya mass adi.
terima kasih atas perhatian.
Waalaikumsalam khoirul mustaqim
Untuk tahapan penelitian tsb bisa dilihat pada halaman berikut ini
https://pemrogramanmatlab.com/pengenalan-pola-citra-digital-menggunakan-matlab/
Malam mas adi ..
Mau tanya kalau pemrosesan citra ini di kombinasikan dengan algoritma c4.5 bisa ngak ya .?
Algoritma C4.5 bisa dicoba diimplementasikan
Malam mas adi ..
Mau tanya kalau pemrosesan citra ini di kombinasikan dengan algoritma c4.5 bisa ngak ya .?
Mohon bantuannya mas 🙏
baik terimakasih