Fuzzy Logic

Rabu, 08 Desember 2021

 APLIKASI LOGIKA FUZZY – METODE SUGENO   

Michio Sugeno mengusulkan penggunaan singleton sebagai fungsi keanggotaan dari konsekuen. Singleton adalah sebuah himpunan fuzzy dengan fungsi keanggotaan: pada titik tertentu mempunyai sebuah nilai dan 0 di luar titik tersebut. Pengusulan tersebut didasarkan Inferensi Mamdani tidak efisien karena melibatkan proses pencarian centroid dari area 2 dimensi. Penalaran ini hampir sama dengan penalaran Mamdani, hanya saja output (konsekuen) sistem tidak berupa himpunan fuzzy, melainkan berupa konstanta atau persamaan linear.

Orde-Nol

  • Bentuk Umum : IF (X is A ) (X is A ) (X is A ) (X is A ) THEN z = k dengan Ai adalah himpunan fuzzy ke-I sebagai anteseden, dan k adalah konstanta (tegas) sebagai konsekuen

Orde-Satu

  • Bentuk Umum : IF (X is A ) …. (X is A ) THEN z = p dengan Ai adalah himpunan fuzzy ke-I sebagai anteseden, dan pi adalah suatu konstanta ke-I dan q merupakan konstanta dalam konsekuen.

Perbedaan antara Mamdani dan Sugeno ada pada konsekuen. Sugeno menggunakan konstanta atau fungsi matematika dari variabel input:

IFx is AIFx is A
ANDy is BANDy is B
THENz is f(x, y)THENz is k

dimana x, y dan z adalah variabel linguistik; A dan B himpunan fuzzy untuk X dan Y, dan f(x, y) adalah fungsi matematik.

Contoh:

Mengevaluasi kesehatan orang berdasarkan tinggi dan berat badannya. Input: Tinggi dan berat badan

Output: Kategori sehat

  • sangat sehat (SS), index =0.8
  • sehat (A), index =0.6
  • agak sehat (AS), index =0.4
  • tidak sehat (TS), index =0.2

Dalam bentuk if-then, contoh:

If sangat pendek dan sangat kurus then sangat sehat.
L2: Rules Evaluation
Contoh: Bagaimana kondisi kesehatan untuk orang dengan tinggi 161.5 cm dan berat 41 kg?
Model Fuzzy Sugeno: μsedang[161.5] = (165-161.5)/(165-160) = 0.7
Μtinggi [161.5] = (161.5-160)/(165-160) = 0.3

L2: Rules Evaluation
Model Fuzzy Sugeno
μsangatkurus [41] = (45-41)/(45-40) = 0.8
μkurus[41] = (41-40)/(45-40) = 0.2
L2: Rules Evaluation (4)

Model Fuzzy Sugeno Pilih bobot minimum karena relasi AND
Model Fuzzy Sugeno
L3: Defuzzification Diperoleh:
Diperoleh:
f = {TS, AS, S, SS} = {0.3, 0.7, 0.2, 0.2}
Penentuan hasil akhir, ada 2 metoda:

  1. Max method: index tertinggi 0.7 hasil Agak Sehat
  2. Centroid method, dengan metoda Sugeno:

Decision Index = (0.3×0.2)+(0.7×0.4)+(0.2×0.6)+(0.3×0.8) /
(0.3+0.7+0.2+0.2 = 0.4429

Crisp decision index = 0.4429
Fuzzy decision index: 75% agak sehat, 25% sehat.





 APLIKASI LOGIKA FUZZY – METODE TSUKAMOTO


    Metode Tsukamoto merupakan perluasan dari penalaran monoton. Pada metode Tsukamoto, Setiap konsekuen pada aturan yang berbentuk IF-THEN harus dipresentasikan dengan suatu himpunan fuzzy dengan fungsi keanggotaan yang monoton. Sebagai hasilnya, output hasil inferensi dari tiap-tiap aturan diberikan secara tegas (crisp) berdasarkan α-predikat (fire strength). Hasil akhirnya diperoleh dengan menggunakan rata-rata terbobot.

Contoh:

    Suatu perusahaan makanan kaleng akan memproduksi makanan jenis ABC. Dari data 1 bulan terakhir, permintaan terbesar mencapai 5000 kemasan/hari, dan permintaan terkecil mencapai 1000 kemasan/hari. Persediaan barang digudang terbanyak mencapai 600 kemasan/hari, dan terkecil pernah mencapai 100 kemasan/hari. Dengan segala keterbatasannya perusahaan sampai saat ini baru mampu memproduksi brang maksimum 7000 kemasan/hari, untuk efisiensi mesin dan SDm tiap hari diharapkan perusahaan memproduksi paling tidak 2000 kemasan. Berapa kemasan makanan jenis ABC yang harus diprosuksi, jika jumlah permintaan sebanyak 4000 kemasan, dan persediaan di gudang masih 300 kemasan, apabilla proses produksi perusahaan tersebut menggunakan 4 aturan fuzzy sebagai berikut:

[R1]    IF    permintaan    TURUN    And   Persediaan    BANYAK,   THEN    Produksi    Barang BERKURANG;

[R2] IF permintaan TURUN And Persediaan SEDIKIT, THEN Produksi Barang BERKURANG;

[R3] IF permintaan NAIK And Persediaan BANYAK, THEN Produksi Barang BERTAMBAH;

[R4]IF permintaan TURUN And Persediaan SEDIKIT, THEN Produksi Barang BERTAMBAH;

Solusi:

Ada 3 variable fuzzy yang akan dimodelkan, yaitu:

1.Permintaan terdiri atas 2 himpunan fuzzy, yaitu NAIK dan TURUN\


Pemintaan (kemasan/hari)

µPmtTURUN [x] = {(1, x ≤ 1000), ((5000-x)/4000, 1000 ≤ x ≤ 5000), (0, x ≥ 5000)}

µPmtNAIK [x]  = {(0, x ≤ 1000), ((x -1000)/4000, 1000 ≤ x ≤ 5000), (1, x ≥ 5000)}

Nilai                            Keanggotaan :
µPmtTURUN (4000) =(5000-4000)/4000 = 0.25
µPmtTURUN (4000) = (4000-1000)/4000 = 0.75

2. Persediaan terdiri atas 2 himpunan fuzzy, yaitu sedikit dan banyak


Nilai keanggotaan:

µPmtSEDIKIT [x]     = {(1, y ≤ 1000), ((600-y)/500, 100≤ y ≤ 600), (0, y ≥ 600)}
µPmtBANYAK [y]     = {(0, y ≤ 1000), ((y-1000)/500, 100≤ y ≤ 600), (1, y ≥ 600)}

Nilai                               Keanggotaan :
µPmtSEDIKIT(300)  = (600-300)/500 = 0.26
µPmtBANYAK (300)  = (300-100)/500 = 0.4

3. Produksi barang, terdiri  atas 2 himpunan  fuzzy,  yaitu:  BERKURANG  dan BERTAMBAH

Produksi barang (kemasan/hari)
Nilai keanggotaan:

µPmtBERKURANG[z]      = {(1, z ≤ 2000), ((7000-z)/5000, 2000≤ z ≤ 7000), (0, z ≥ 7000)}
µPmtBERTAMBAH[z]      = {(0, z ≤ 2000), ((z-2000)/5000, 2000≤ z ≤ 7000), (1, z ≥ 7000)}

Sekarang kita cari nilai z untuk setiap aturan dengan menggunakan fungsi MIN pada aplikasi fungsi implikasinya:

[R1]         IF   permintaan    TURUN    And    Persediaan    BANYAK THEN   Produksi    Barang BERKURANG;

α-predikat1 = µPmtTURUN µPmtBAYAK
α-predikat1 = min ( µPmtTURUN µPmtBANYAK )
α-predikat1 =min (0.25; 0,4)
α-predikat1 = 0.25

lihat himpunan Produksi Barang Berkurang (7000-z)/5000=0.25 -> z1= 5750

[R2]  IF permintaan TURUN And Persediaan SEDIKIT THEN Produksi Barang BERKURANG;

α-predikat2 = µPmtTURUN µPmtSEDIKIT
α-predikat2 = min ( µPmtTURUN µPmtSEDIKIT)
α-predikat2 =  min (0.25; 0,6)
α-predikat2 = 0.25
lihat himpunan Produksi Barang Berkurang (7000-z)/5000=0.25 -> z2= 5750

[R3] IF permintaan NAIK And Persediaan BANYAK THEN Produksi Barang BERTAMBAH; α-predikat3 = µPmtNAIK µPmtBANYAK

α-predikat3 = min ( µPmtNAIK µPmtBANYAK)
α-predikat3  = min (0.75; 0,4)
α-predikat3 = 0.4

lihat                              himpunan                              Produksi                              Barang Bertambah (z-2000)/5000=0.4 -> z3= 4000

[R4]         IF    permintaan    TURUN    And    Persediaan    SEDIKIT THEN    Produksi    Barang BERTAMBAH;

α-predikat4 = µPmtTURUN µPmtSEDIKIT
α-predikat4 = min ( µPmtTURUN µPmtSEDIKIT )
α-predikat4 =  min (0.75; 0,6)
α-predikat4 = 0.6
lihat  himpunan Produksi Barang Bertambah (z-2000)/5000=0.6 -> z4= 5000

Nilai Z dapat dicari dengan cara berikut:
z= αpred1 * z1 + αpred2 * z2 + αpred3 * z3 + αpred4 * z4/ (αpred1+ αpred2+ αpred3+ αpred4)
z= 0.25*5750 + 0.25*5750 + 0.4 *4000 + 0.6 * 5000 / (0.25+0.25+0.4+0.6) = 4983 Maka jumlah makanan kaleng jenis ABC yang harus diproduksi sebanyak 4983 kemasan.

Konvolusi Citra

Minggu, 24 Oktober 2021

      Sebelum kita membahas mengenai konvolusi nya ada baiknya dulu membahas pengolahan citra itu apa? pengolahan citra adalah merupakan sebuah bentuk pemroresan dari sebuah citra atau bisa juga gambar yang memiliki prises numerik dari gambarnya tersebut. Dalam hal ini yang diproses maksudnya adalah masing masing dari pixel atau titik dari sebuah gambar tersebut.

1. Konsep Konvolusi Citra

    Konvolusi adalah sebuah operator matematika yang sangat penting untuk banyak operator dalam melakukan Image prosessing . Konvolusi ini akan menyediakan untuk cara menggabungkan 2 array dan biasanya array yang digunakan juga berbeda namun masih memilki dimensi array yang sama dan menghasilkan array ketiga yang akan mempunya dimensi yang sama juga. 

    Jadi konvolusi citra dapat diartikan adalah teknik yang digunakan untuk menghaluskan suatu cita atau memperjelas citra dengan menggantikan nilai piksel gambar dengan sejumlah nilai yang sesuai atau berdekatan dengan piksel aslinya dari gambar. Namun walaupun begitu dengan menggunakan konvolusi, ukuran dari citra akan tetap sama dan tidak berubah.

Sumber : 

http://research-dashboard.binus.ac.id/uploads/paper/document/publication/Journal/MatsTat/Vol.%2012%20No.%202%20Juli%202012/01_Wikaria%20Gazali.pdf

2. Metode Filtering Dengan Konvolusi Citra
a. Adaptive Local Filtering

 i. Konsep
Filter adaptif dilakukan pada citra terdegradasi yang mengandung citra asli dan noise. Mean dan varians adalah dua ukuran statistik yang bergantung pada filter adaptif lokal dengan region Window mxn yang ditentukan.
Rumus Adaptif Filtering

Langkah pengerjaan
1 Tentukan nilai dari ukuran Window mxn
2 Hitung nilai matrix B dengan Gaussian Noise 

3 Berikan nilai 0 pada seluruh sisi matrix B 

4 Hitung nilai local dan selisih lokal dengan menggeser Window 3×3 

nilai lokal = nilai(Window) = 0.4373

selisih lokal = nilai(Window²) – nilai(Window²) = 0.2394

5 Berikan nilai lokal ke matrix B


6 Berikan selisih lokal ke matrix B

7 Selisih dari semua noise adalah rata-rata dari selisih lokal, oleh karena itu selisih noise = 0.1709

8 jika (selisih noise > nilai lokal (x,y)) maka nilai lokal (x,y) = selisih noise.
Berikut representasi posisi pixel (x,y) dalam 2 dimensi

9 Final Image = B – (selisih noise/selisih nilai lokal)(B-nilai lokal) 


ii. Tujuan
Tujuan dari Adaptive Local Filtering adalah untuk memperbaiki gambar dengan menjadikan noise yang ada pada gambar memudar.

iii. Penjelasan Input-Proses-Output
Berikut isi input source code pada Matlab untuk adaptive local filtering.

A = imread(‘peppers.png’);
B = rgb2gray(A);
sz = size(B,1)*size(B,2);
%Add gaussian noise with mean 0 and variance 0.005
B = imnoise(B,’gaussian’,0,0.005);
figure,imshow(B); title(‘Image with gaussian noise’);
B = double(B);
%Define the window size mxn
M = 5;
N = 5;
%Pad the matrix with zeros on all sides
C = padarray(B,[floor(M/2),floor(N/2)]);
lvar = zeros([size(B,1) size(B,2)]);
lmean = zeros([size(B,1) size(B,2)]);
temp = zeros([size(B,1) size(B,2)]);
NewImg = zeros([size(B,1) size(B,2)]);
for i = 1:size(C,1)-(M-1)

for j = 1:size(C,2)-(N-1)  

    temp = C(i:i+(M-1),j:j+(N-1));

    tmp =  temp(:);

         %Find the local mean and local variance for the local region       

    lmean(i,j) = mean(tmp);

    lvar(i,j) = mean(tmp.^2)-mean(tmp).^2;      

end

end
%Noise variance and average of the local variance
nvar = sum(lvar(:))/sz;
%If noise_variance > local_variance then local_variance=noise_variance
lvar = max(lvar,nvar);
%Final_Image = B- (noise variance/local variance)*(B-local_mean);
NewImg = nvar./lvar;
NewImg = NewImg.*(B-lmean);
NewImg = B-NewImg;
%Convert the image to uint8 format.\
NewImg = uint8(NewImg);
figure,imshow(NewImg);title(‘Restored Image using Adaptive Local filter’);

Berikut output dari source code diatas.





iv. Algoritma dan Flowchart 

Algoritma sederhana dari Filter ini adalah setelah pengguna menjalankan source code filter maka selanjutnya pengguna diminta untuk memilih salah satu gambar untuk diolah. Setelah itu gambar tersebut akan diolah sesuai dengan source code filter ini. Hasilnya akan ditampilkan 2 gambar, citra sebelum diolah dan citra setelah diolah dengan filter ini. 


b. Gaussian Filtering / Gaussian Blur 

i. Konsep
Gaussian Blur atau gaussian filter merupakan teknik untuk memburamkan gambar. Biasanya digunakan untuk mengurangi noise dan detail dari gambar tersebut.

Rumus Gaussian Kernel 2 dimensi


Langkah pengerjaan Design Kernel

1 Mari kita gunakan standar simpangan, sigma = 0,6 dan ukuran kernel = 3×3.

2. Lanjutan dibawah :


3 Lebar kernel adalah X=3 dan tinggi kernel adalah Y = 3 


4 Kernel Gaussian bagian tengah (disini 0.4421) memiliki nilai tertinggi dan intensitas dari pixel lainnya menurun berasamaan dengan jarak dari bagian tengah yang meningkat.

5 Sekarang nilai kernel Gaussian adalah sebagai berikut. 


Langkah pengerjaan Konvolusi kernel dan bagian lokal dalam gambar Berdasarkan bagian lokal dalam gambar


Konvolusikan area yang di pilih dan kernel

Jumlahkan nilai tersebut : 1.8692 + 9.7009 + 4.3706 + 7.2757 + 38.4624 + 17.8585 + 1.84142 + 9.1497 + 4.4256 = 94.9269

Pada konvolusi area lokal dan kernel Gaussian memberikan nilai intensitas tertinggi ke bagian tengah bagian lokal (38.4624) dan piksel yang tersisa memiliki intensitas yang lebih sedikit saat jarak dari pusat meningkat. Jumlahkan hasilnya dan simpan di lokasi piksel saat ini (intensitas = 94.9269) dari gambar. 

Lakukan operasi di atas di semua bagian. Hasil akhir dari gaussian filter adalah

ii. Tujuan

Tujuan dari gaussian filtering adalah untuk menghilangkan noise dengan memudarkan gambar, namun dengan konsekuensi detail gambar juga ikut berkurang.

iii. Penjelasan Input-Proses-Output
Berikut isi input source code pada Matlab untuk Gaussian Filtering. 

%Read an Image
Gambar = imread(‘peppers.png’);
Img = rgb2gray(Gambar);
A = imnoise(Img,’Gaussian’,0.04,0.003);
%Image with noise
figure,imshow(A);
I = double(A);
%Design the Gaussian Kernel
%Standard Deviation
sigma = 1.76;
%Window size
sz = 4;
[x,y]=meshgrid(-sz:sz,-sz:sz);
M = size(x,1)-1;
N = size(y,1)-1;
Exp_comp = -(x.^2+y.^2)/(2sigmasigma);
Kernel= exp(Exp_comp)/(2pisigma*sigma);
%Initialize
Output=zeros(size(I));
%Pad the vector with zeros
I = padarray(I,[sz sz]);
%Convolution
for i = 1:size(I,1)-M

for j =1:size(I,2)-N

    Temp = I(i:i+M,j:j+M).*Kernel;

    Output(i,j)=sum(Temp(:));

end

end
%Image without Noise after Gaussian blur
Output = uint8(Output);
figure,imshow(Output);

Berikut output dari source code diatas.





iv. Algoritma dan Flowchart

    Algoritma sederhana dari Filter ini adalah setelah pengguna menjalankan source code filter maka selanjutnya pengguna diminta untuk memilih salah satu gambar untuk diolah. Setelah itu gambar tersebut akan diolah sesuai dengan source code filter ini. Hasilnya akan ditampilkan 2 gambar, citra sebelum di olah dan citra setelah diolah dengan filter ini. 

c. Oil Painting Filtering

i. Konsep
Untuk mendapatkan efek seperti lukisan, tentukan matriks jendela kecil berukuran m kali n. Salin nilai piksel gambar asli ke dalam matriks dan temukan histogram dari setiap nilai. Temukan nilai piksel maksimum yang terjadi dan ganti posisi saat ini dengan nilai kejadian maksimum.

ii. Tujuan
Tujuan dari Oil Painting Filtering adalah untuk menghasilkan gambar yang menyerupai hasil dari lukisan minyak.

iii. Penjelasan Input-Proses-Output
Berikut isi input source code pada Matlab untuk Oil Painting Filtering.

A=imread(‘fabric.png’);
figure,imshow(A)
%Define the matrix size of your convience.
m=5;
n=6;
Image=uint8(zeros([size(A,1)-m,size(A,2)-n,3]));
%Calculate the histogram for each RGB value.
for v=1:3
for i=1:size(A,1)-m

for j=1:size(A,2)-n

    mymask=A(i:i+m-1,j:j+n-1,v);

    h=zeros(1,256);

    for x=1:(m*n)

        h(mymask(x)+1)=h(mymask(x)+1)+1;

    end

%Maximum occurring value and the position is obtained

    [maxvalue,pos]=max(h);

    Image(i,j,v)=pos-1;

end

end
end
figure,imshow(Image);

Berikut output dari source code diatas. 




iv. Algoritma dan Flowchart

    Algoritma sederhana dari Filter ini adalah setelah pengguna menjalankan source code filter maka selanjutnya pengguna diminta untuk memilih salah satu gambar untuk diolah. Setelah itu gambar tersebut akan diolah sesuai dengan source code filter ini. Hasilnya akan ditampilkan 2 gambar, citra sebelum di olah dan citra setelah diolah dengan filter ini. 

C. Perbedaan Dari 3 Metode Tersebut 

Sumber :

imageeprocessing.com