Adaptive Neuro-Fuzzy Inference System (ANFIS) adalah penggabungan mekanisme fuzzy inference system yang
digambarkan dalam arsitektur jaringan syaraf. Sistem inferensi fuzzy yang digunakan adalah sistem inferensi fuzzy model Tagaki-Sugeno-Kang (TSK)
orde satu dengan pertimbangan kesederhanaan dan kemudahan komputasi.
Metode anfis dapat diaplikasikan pada pemrograman MATLAB untuk mengklasifikasi citra pada daun ke dalam 4 kelompok yaitu (A, B, C, dan D) menggunakan algoritma ANFIS. Pada contoh ini digunakan 40 citra daun yang terdiri dari 10 citra pada masing-masing kelas. Citra gambar tersebut dibagi menjadi dua bagian yaitu sebanyak 28 citra untuk data pelatihan dan 12 citra untuk data pengujian. Contoh citra daun yang digunakan ditunjukkan pada gambar di bawah ini
Membuat Pendeteksi Wajah pasti sering kan atau sering kita sebut Image Proccessing on face picture kita akan bahas terlebih dahulu tentang metode yang digunakan
Apa yang dimaksud thresholding??
Thresholding merupakan salah satu cara untuk membedakan/mengelompokkan citra di mana prosesnya didasarkan pada perbedaan derajat keabuan citra atau grayscale.
Tujuan membedakan/mengelompokkan (segmentasi) citra adalah untuk memisahkan antara objek dengan background. Metode segmentasi citra dapat dikembangkan lebih lanjut agar diperoleh hasil segmentasi yang lebih baik lagi. atau mendeteksi objek melalui gambar. hasil akan seperti contoh dibawah ini
clc; clear; close all; warning off all; %read the image I = imread('satomi.jpg'); figure; imshow(I); %gambar 1 out = uint8(zeros(size(I,1), size(I,2), size(I,3))); %R,G,B components of the input image R = I(:,:,1); G = I(:,:,2); B = I(:,:,3); %Inverse of the Avg values of the R,G,B mR = 1/(mean(mean(R))); mG = 1/(mean(mean(G))); mB = 1/(mean(mean(B))); %Smallest Avg Value (MAX because we are dealing with the inverses) maxRGB = max(max(mR, mG), mB); %Calculate the scaling factors mR = mR/maxRGB; mG = mG/maxRGB; mB = mB/maxRGB; %Scale the values out(:,:,1) = R*mR; out(:,:,2) = G*mG; out(:,:,3) = B*mB; %Convert the image from RGB to YCbCr img_ycbcr = rgb2ycbcr(out); figure, imshow(img_ycbcr); %gambar 2 Y = img_ycbcr(:,:,1); Cb = img_ycbcr(:,:,2); Cr = img_ycbcr(:,:,3); figure, imshow(Y); %gambar 3 figure, imshow(Cb); %gambar 4 figure, imshow(Cr); %gambar 5 %Detect Skin [r,c,v] = find(Cb>=77 & Cb<=128 & Cr>=133 & Cr<=193); numind = size(r,1); bin = false(size(I,1), size(I,2)); %Mark Skin Pixels for i=1:numind bin(r(i),c(i)) = 1; end figure, imshow(bin); %gambar 6 % filling holes untuk mengisi objek yang berlubang bin = imfill(bin,'holes'); figure, imshow(bin); %gambar 7 bin = bwareaopen(bin,500); figure; imshow(bin); %gambar 8 R(~bin) = 0; G(~bin) = 0; B(~bin) = 0; out = cat(3,R,G,B); figure; imshow(out); %gambar 9 s = regionprops(bin,'BoundingBox'); bbox = cat(1, s.BoundingBox); RGB = insertShape(I, 'rectangle', bbox, 'LineWidth', 5); figure, imshow(RGB); %gambar 10
%Detect Skin [r,c,v] = find(Cb>=77 & Cb<=128 & Cr>=133 & Cr<=193); numind = size(r,1);
Dalam nilai batas threshold bisa dirubah sesuai nilai data pixel yang kamu batasi
bisa dipantau pada bagian workspace pada program Matlab untuk berasan tiap gambar yang diproses
satomi.jpg |
- Matematika dan Komputasi
- Pembentukan Algoritma
- Akuisisi Data
- Pemodelan, simulasi dan Pembuatan Prototype, dan masih banyak lagi
Akhir-akhir ini sering
muncul kasus di masyarakat tentang keamanan daging sapi dan kambing
seperti pemalsuan daging sapi, daging kambing dipalsukan dengan daging babi oleh oknum-oknum tidak bertanggung jawab. Kondisi ini tentu
saja dapat merugikan konsumen
terutama konsumen di pasar tradisional dan mengingat banyaknya konsumen di kalangan
masyarakat indonesia ini sebagian besar merupakan masyarakat muslim. Kurangnya pengetahuan masyarakat tentang
cara membedakan daging sapi, daging kambing dengan daging babi menjadikan
konsumen tidak teliti dalam membeli daging. Maka dari itu demi melindungi konsumen
dari kasus penipuan seperti
ini, perlu
adanya suatu alat atau sistem yang dapat membantu masyarakat untuk mengenali
daging sapi, daging kambing dan daging babi. Teknologi pengenalan pola saat ini telah banyak mengalami
perkembangan. Hal ini dapat dimanfaatkan untuk membantu menyelesaikan masalah
ini dengan membuat
suatu sistem
yang dapat mengklasifikasi jenis daging secara otomatis untuk mengurangi
masalah-masalah tentang pemalsuan daging.
Berikut ini merupakan
contoh pemrograman matlab untuk melakukan ekstraksi ciri citra daging babi,
daging kambing, dan daging sapi menggunakan tekstur Tapir Gabor Wavelet .
Langkah-langkahnya sebagai berikut:
1. Membaca citra RGB.
Citra Asli atau Citra RGB
2. Memotong Citra menjadi ukuran 2091.5 x
1371.5 x 978 x 852.
Cropping Citra
3. Resize ukuran citra yang telah di potong
dengan ukuran piksel menjadi 256 x 256, agar piksel dari semua citra sama
Resize Citra
4. Mengkonversi Citra menjadi citra keabuan yang bertujuan untuk menuju tahap selanjutnya yaitu Tapir Gabor Wavelet , karena Tapir Gabor Wavelet hanya dapat diolah ketika citra sudah dalam bentuk citra keabuan.
Citra Keabuan
5. Mencari Nilai Tapir Gabor
Wavelet, Ciri Tapir Gabor Wavelet yang diekstrak menggunaikan
orde pertama diantaranya: Mean, Variance, Skewness, Kurtosis, Entropy, dan Energy.
dalam contoh nilai orientation yang digunakan
adalah 0o dan wavelength adalah 2,, sebenarnya
orientation banyak nilai yang dapat dipakai seperti 0º, 30º, 45º, 60º,
90º, 120º, 135º, 150º, 180º, dan 225º, sedangkan untuk wavelength dapat
menggunakan nilai 0, 1, 2, 3, 4, 5, dan 6 (Semakin rendah nilai wavelength
yang diberikan, maka hasil pengujianpun akan terlihat semakin terang dan blur).
untuk mencari nilai orde pertama yang dicari dari filter gabor adalah dengan
mencari nilai tektur magnitudenya.
Tapir Gabor Wavelet
Source code yang digunakan adalah sebagai berikut:
seluruh citra daging
dapat didownload melalui:
https://mega.nz/folder/PqYynKZQ#_XI31flX_gNlKdlE0JoaSw
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | clc, clear all, warning off all; tic; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Read Image % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [fname,pname] = uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif';'*.ppm';},'Open Image'); gambar = imread([pname fname]); figure (1); imwrite(gambar, 'Gambar Asli.jpg'); imshow(gambar); title('Gambar Asli'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Cropping Gambar % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% crop = imcrop(gambar,[2091.5 1371.5 978 852]); figure (2); imwrite(crop, 'Cropping Gambar.jpg'); imshow(crop); title('Cropping Gambar'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Resize Gambar % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% resize = imresize (crop,[256 256]); figure (3); imwrite(resize, 'Resize Citra.jpg'); imshow(resize); title('Resize Citra'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Grayscale Gambar % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% grayscale = rgb2gray(resize); %proses Grayscaling figure (4); imwrite(grayscale, 'Citra Keabuan.jpg'); imshow(grayscale); title('Citra Keabuan'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % GABOR % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wavelength = 2; orientation = 0; [mag,phase] = imgaborfilt(grayscale,wavelength,orientation); figure(5); imshow(mag,[]); title('Citra Filter Gabor'); H = imhist(mag)'; H = H/sum(H); I = [0:255]/255; CiriMEAN = mean2(mag); CiriVAR = (I-CiriMEAN).^2*H'; CiriSKEW = (I-CiriMEAN).^3*H'/CiriVAR^1.5; CiriKURT = (I-CiriMEAN).^4*H'/CiriVAR^2-3; CiriENT = -H*log2(H+eps)'; foo = H.^2; CiriEN = sum (foo(:)); fprintf('\n\tMEAN :%13.4f\n',CiriMEAN); fprintf('\n\tVARIANCE :%13.4f\n',CiriVAR); fprintf('\n\tSKEWNESS :%13.4f\n',CiriSKEW); fprintf('\n\tKURTOSIS :%13.4f\n',CiriKURT); fprintf('\n\tENTROPY :%13.4f\n',CiriENT); fprintf('\n\tENERGY :%13.4f\n',CiriEN); |
Akhir-akhir ini sering muncul kasus di masyarakat tentang keamanan daging sapi dan kambing seperti pemalsuan daging sapi, daging kambing dipalsukan dengan daging babi oleh oknum-oknum tidak bertanggung jawab. Kondisi ini tentu saja dapat merugikan konsumen terutama konsumen di pasar tradisional dan mengingat banyaknya konsumen di kalangan masyarakat indonesia ini sebagian besar merupakan masyarakat muslim. Kurangnya pengetahuan masyarakat tentang cara membedakan daging sapi, daging kambing dengan daging babi menjadikan konsumen tidak teliti dalam membeli daging. Maka dari itu demi melindungi konsumen dari kasus penipuan seperti ini, perlu adanya suatu alat atau sistem yang dapat membantu masyarakat untuk mengenali daging sapi, daging kambing dan daging babi. Teknologi pengenalan pola saat ini telah banyak mengalami perkembangan. Hal ini dapat dimanfaatkan untuk membantu menyelesaikan masalah ini dengan membuat suatu sistem yang dapat mengklasifikasi jenis daging secara otomatis untuk mengurangi masalah-masalah tentang pemalsuan daging.
Berikut ini merupakan
contoh pemrograman matlab untuk melakukan ekstraksi ciri citra daging babi,
daging kambing, dan daging sapi menggunakan tekstur GLCM. Langkah-langkahnya
sebagai berikut:
1. Membaca citra RGB.
Citra Asli atau Citra RGB
2. Memotong Citra menjadi ukuran 2091.5 x
1371.5 x 978 x 852.
Cropping Citra
3. Resize ukuran citra
yang telah di potong dengan ukuran piksel menjadi 256 x 256, agar piksel
dari semua citra sama
Resize Citra
4. Mengkonversi Citra menjadi citra keabuan yang bertujuan untuk menuju tahap selanjutnya yaitu GLCM, karena GLCM hanya dapat diolah ketika citra sudah dalam bentuk citra keabuan.
Citra Grayscale
5. Mencari Nilai Gray-Level Co-Occurrence Matrix (GLCM), Ciri GLCM yang diekstrak adalah Angular Second Moments, Contrast, Correlation, Variance, Inverse Different Moment, dan Entropy.
GLCM
Source code yang digunakan adalah sebagai berikut:
seluruh citra daging
dapat didownload melalui:
https://mega.nz/folder/PqYynKZQ#_XI31flX_gNlKdlE0JoaSw
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | function CiriOrdeDua(Citra) clc, clear all, warning off all; tic; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Read Image % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [fname,pname] = uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif';'*.ppm';},'Open Image'); gambar = imread([pname fname]); figure (1); imwrite(gambar, 'Gambar Asli.jpg'); imshow(gambar); title('Gambar Asli'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Cropping Gambar % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% crop = imcrop(gambar,[2091.5 1371.5 978 852]); figure (2); imwrite(crop, 'Cropping Gambar.jpg'); imshow(crop); title('Cropping Gambar'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Resize Gambar % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% resize = imresize (crop,[256 256]); figure (3); imwrite(resize, 'Resize Citra.jpg'); imshow(resize); title('Resize Citra'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Grayscale Gambar % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% grayscale = rgb2gray(resize); %proses Grayscaling figure (4); imwrite(grayscale, 'Citra Keabuan.jpg'); imshow(grayscale); title('Citra Keabuan'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % GLCM % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Citra=grayscale; mk000=ko000(Citra); mk045=ko045(Citra); mk090=ko090(Citra); mk135=ko135(Citra); MatKook=(mk000+mk045+mk090+mk135)/4; I=[1:256]; SumX=sum(MatKook); SumY=sum(MatKook'); MeanX=SumX*I'; MeanY=SumY*I'; StdX=sqrt((I-MeanX).^2*SumX'); StdY=sqrt((I-MeanY).^2*SumY'); CiriASM=sum(sum(MatKook.^2)); CiriCON=0;CiriCOR=0;CiriVAR=0;CiriIDM=0;CiriENT=0; for i=1:256 for j=1:256 TempCON = (i-j)*(i-j)*MatKook(i,j); TempCOR = (i)*(j)*MatKook(i,j); TempVAR = (i-MeanX)*(j-MeanY)*MatKook(i,j); TempIDM = (MatKook(i,j))/(1+(i-j)*(i-j)); TempENT = -(MatKook(i,j))*(log2(MatKook(i,j)+eps)); CiriCON = CiriCON + TempCON; CiriCOR = CiriCOR + TempCOR; CiriVAR = CiriVAR + TempVAR; CiriIDM = CiriIDM + TempIDM; CiriENT = CiriENT + TempENT; end end CiriCOR=(CiriCOR-MeanX*MeanY)/(StdX*StdY); fprintf('\n\tANGULAR SECOND MOMENTS :%13.4f\n',CiriASM); fprintf('\n\tCONTRAST :%13.4f\n',CiriCON); fprintf('\n\tCORRELATION :%13.4f\n',CiriCOR); fprintf('\n\tVARIANCE :%13.4f\n',CiriVAR); fprintf('\n\tINVERS DIFFERENCE MATRIX :%13.4f\n',CiriIDM); fprintf('\n\tENTROPY :%13.4f\n',CiriENT); %ko000.m - MATRIKS KOOKURENSI ARAH 0 DERAJAT function MatriksHasil=ko000(GambarAsli) GambarAsli=double(GambarAsli); Temp=zeros(256); [tinggi,lebar]=size(GambarAsli); for i=1:tinggi for j=1:lebar-1 p=GambarAsli(i,j)+1; q=GambarAsli(i,j+1)+1; Temp(p,q) = Temp(p,q)+1 ; Temp(q,p) = Temp(q,p)+1 ; end end Jumlahpixel=sum(sum(Temp)); MatriksHasil=Temp/Jumlahpixel; %ko045.m - MATRIKS KOOKURENSI ARAH 45 DERAJAT function MatriksHasil=ko045(GambarAsli) GambarAsli=double(GambarAsli); Temp=zeros(256); [tinggi,lebar]=size(GambarAsli); for i=2:tinggi for j=1:lebar-1 p=GambarAsli(i,j)+1; q=GambarAsli(i-1,j+1)+1; Temp(p,q) = Temp(p,q)+1; Temp(q,p) = Temp(q,p)+1; end end Jumlahpixel=sum(sum(Temp)); MatriksHasil=Temp/Jumlahpixel; %ko090.m - MATRIKS KOOKURENSI ARAH 90 DERAJAT function MatriksHasil=ko090(GambarAsli) GambarAsli=double(GambarAsli); Temp=zeros(256); [tinggi,lebar]=size(GambarAsli); for i=2:tinggi for j=1:lebar p=GambarAsli(i,j)+1; q=GambarAsli(i-1,j)+1; Temp(p,q) = Temp(p,q)+1 ; Temp(q,p) = Temp(q,p)+1 ; end end Jumlahpixel=sum(sum(Temp)); MatriksHasil=Temp/Jumlahpixel; %ko135.m - MATRIKS KOOKURENSI ARAH 135 DERAJAT function MatriksHasil=ko135(GambarAsli) GambarAsli=double(GambarAsli); Temp=zeros(256); [tinggi,lebar]=size(GambarAsli); for i=2:tinggi for j=2:lebar p=GambarAsli(i,j)+1; q=GambarAsli(i-1,j-1)+1; Temp(p,q) = Temp(p,q)+1 ; Temp(q,p) = Temp(q,p)+1 ; end end Jumlahpixel=sum(sum(Temp)); MatriksHasil=Temp/Jumlahpixel; toc; |
POPULAR POSTS
Training
Contact Form
Categories
- alkes 1
- Android 3
- Arduino 35
- Basic & Doc 12
- centrifuge 1
- ESP32 8
- Internet of Things (IoT) 23
- LCD TFT SPI 2
- MATLAB 6
- Metode kendali 1
- Modul Charger 1
- Nextion 4
- NodeMcu 8
- oled 1
- Pattern Recognition 2
- Perbaikan 1
- PID 2
- PLC HMI VTSCADA ARDUINO 3
- PRIVACY POLICY 1
- Proteus 11
- Python 1
- raspberry 5
- Teknik Elektromedik 2
- Thingsboard 1
- Video 5
- Wemos 4