Ada banyak jenis
noise yang dapat mempengaruhi kualitas citra, diantaranya adalah salt and
pepper, gaussian, speckle, localvar dan poisson. Efek masing-masing noise
tentunya berbeda-beda. Ada yang efeknya sangat mempengaruhi tampilan citra,
tapi ada juga yang tidak begitu berpengaruh terhadap citra.

Salt & Peper
Seperti namanya noise jenis ini terlihat seperti salt and pepper. Pada citra
akan nampak seperti titik-titik. Untuk citra RGB titik-titik muncul dalam tiga
warna yakni merah (red), hijau (green) dan biru (blue), sedangkan pada citra
GRAY noise akan muncul dalam dua warna yakni hitam (black) dan putih
(white). Noise ini memberikan efek ”on dan off” pada pixel. Pada MatLab kita
dapat mengatur ”konstanta” noise. Konstanta berupa angka numerik non negatif
dengan range 0 sampai dengan 1. Makin besar konstantanya citra akan semakin
kabur, sebaliknya makin kecil konstantanya efek pada citra makin tidak
terlihat. Nilai default untuk konstanta noise adalah 0.05.
Gaussian
Disebut juga Gaussian White Noise. Untuk menambahkan noise ini pada MatLab
memerlukan input tambahan berupa rata-rata dan variasi. Rata-rata dan variasi
merupakan suatu konstanta real. Nilainya bisa positif maupun negative. Makin
besar rata-rata dan variasinya maka citra akan semakin kabur, sebaliknya
makin kecil konstantanya efek pada citra makin tidak terlihat. Nilai default
adalah 0 untuk mean dan 0.01 untuk variance. Disebut white noise karena pada
saat nilai rata-rata dan variasinya besar maka citra seolah-olah hanya terlihat
seperti citra putih saja.
Poisson
Poisson noise bukan merupakan noise buatan. Poisson merupakan noise yang
ditambahkan langsung pada citra tanpa kita menambahkan parameter apapun,
sehingga efeknya pada citra pun tetap, berbeda dengan tipe noise yang
sudah dijelaskan sebelumnya. Pada MatLab, jika matrik citra adalah double
precision, maka nilai piksel inputnya dianggap sebagai mean dari distribusi
Poisson dengan skala 10^12. Sebagai contoh jika piksel inputnya mempunyai nilai
5.5 10^-12, maka piksel output akan dibangkitkan dari distribusi Poisson dengan
mean 5.5 di kembalikan lagi ke skala 10^12. Jika matrik citra adalah
single precision, maka factor skalanya menggunakan 10^6. Jika matrik citra
adalah uint8 atau uint16, maka nilai input piksel digunakan langsung tanpa
factor skala. Sebagai contoh jika input piksel uint8 mempunyai nilai 10, maka
piksel output akan dibangkitkan dari distribusi Poisson dengan mean 10.
Speckle
Speckle merupakan noise ganda. Noise ini ditambahkan pada citra
menggunakan persamaan J=I+n*I, dimana n terdistribusi random seragam
dengan mean 0 dan variance V. V adalah konstanta non negative yang besarnya
dapat berubah-ubah. Default nilai untuk V adalah 0.04. Makin besar nilai V maka
citra akan semakiin kabur.
Localvar
Pada MatLab kita harus mengunakan dua parameter untuk menambahkan noise ini
pada citra. Dua parameter tersebut berupa vector yang ukurannya sama, dan
grafik kedua parameter tersebut menggambarkan relasi fungsional antara varians
noise dan intensitas citra. Vektor intensitas citra harus bernilai antara 0 dan
1 (normal). Localvar merupakan Gaussian noise dengan mean 0, dengan variance
noise adalah fungsi dari intensitas citra yang nilainya berada dalam matrik
citra. Vektor intensitas citra tidak boleh bernilai sama karena citra akan
nampak sebagai layar putih (Gaussian White Noise).
Macam-macam
Filter Image/Citra pada Matlab
Filter pada dasarnya adalah sebuah metode
untuk meredamkan atau menghilangkan noise pada citra digital atau image. Jenis
filter bermacam-macam dan fungsi serta efeknya juga berbeda-beda pula. Filter
citra dibagi menjadi dua, yaitu filter linear dan filter non-linear.
Filter spasial linear adalah filter yang bekerja dengan cara korelasi atau
konvolusi. Filter spasial non-linier atau biasanya disebut juga dengan
filter statistik berdasar urutan adalah filter yang respon nya
didasarkan pada urutan atau rangking piksel yang ada dalam citra yang dicakup
oleh area filter dengan menggantikan nilai dari piksel yang berada di tengah
digantikan dengan nila hasil pengurutan atau perangkingan tersebut. Filter
non-linear memiliki lebih banyak keunggulan dibandingkan dengan filter linear
pada ukuran jendela filter yang sama.
Macam-macam filter spasial linear antara lain
:
1. Filter Rata-rata
Penghalusan dengan filter rata-rata adalah
proses filtering citra f(x,y) dengan filter
rata-rata g(x,y) untuk berbagai ukuran filter, dari ukuran 3×3, 5×5,
7×7, 9×9, dan seterusnya.
2. Filter Gaussian
Penghalusan dengan filter gaussian tekniknya
sama dengan filter rata-rata,
yaitu filtering citra f(x,y) dengan filter
gaussian g(x,y) untuk berbagai ukuran filter, dari ukuran 3×3, 5×5,
7×7, 9×9, dan seterusnya.
Macam-macam filter spasial non-linear antara
lain :
1. Filter Median
Penghalusan dengan filter median
adalah dengan menggantikan nilai tengah dari piksel yang di cakup oleh
area filter dengan sebuah nilai tengah (median) setelah diurutkan terlebih
dahulu dari yang terkecil ke yang terbesar.
2. Filter Maksimum
Penghalusan dengan filter median adalah
menggantikan piksel dengan nilai tertinggi dari suatu deret yang terbentuk dari
matriks yang sesuai dengan ukuran dari jendela filter.
3. Filter Minimum
Penghalusan dengan filter median adalah
menggantikan piksel dengan nilai terendah dari suatu deret yang terbentuk dari
matriks yang sesuai dengan ukuran dari jendela filter.
Contoh JST + Normalisasi code nya
function [gab] = Normalisasi( G)
u=66;
v=100;
max=u*v;
I=imresize(G,[u v]);
M=NR(I);
filter_khusus=fspecial('unsharp');
Q=imfilter(M,filter_khusus,'replicate');
red=Q(:,:,1);
A1= edge(red,'canny');
A=reshape(A1,1,max);
green=Q(:,:,2);
B1= edge(green,'canny');
B=reshape(B1,1,max);
blue=Q(:,:,3);
C1= edge(blue,'canny');
C=reshape(C1,1,max);
gab=[A,B,C];
end
function [ K ] = NR(I) %Noise Remover
%M = wiener2(V);
%N = medfilt2(J);
%O = imnoise(J,'gaussian');%pilih1
w=size(I,1);
h=size(I,2);
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
JR=medfilt2(R);
JG=medfilt2(G);
JB=medfilt2(B);
J=[];
for i=1:w
for j=1:h
J(i,j,1)=JR(i,j);
J(i,j,2)=JG(i,j);
J(i,j,3)=JB(i,j);
end
end
K=uint8(J);
end
Perintah dan Pengujian JST
I=imread('matang\1.jpg');
U=Normalisasi(I);
Data(1,:)=U;
I=imread('matang\2.jpg');
U=Normalisasi(I);
Data(2,:)=U;
I=imread('matang\3.jpg');
U=Normalisasi(I);
Data(3,:)=U;
I=imread('matang\4.jpg');
U=Normalisasi(I);
Data(4,:)=U;
I=imread('matang\5.jpg');
U=Normalisasi(I);
Data(5,:)=U;
I=imread('matang\6.jpg');
U=Normalisasi(I);
Data(6,:)=U;
I=imread('matang\7.jpg');
U=Normalisasi(I);
Data(7,:)=U;
I=imread('matang\8.jpg');
U=Normalisasi(I);
Data(8,:)=U;
I=imread('matang\9.jpg');
U=Normalisasi(I);
Data(9,:)=U;
I=imread('matang\10.jpg');
U=Normalisasi(I);
Data(10,:)=U;
I=imread('mentah\1.JPG');
U=Normalisasi(I);
Data(11,:)=U;
I=imread('mentah\2.JPG');
U=Normalisasi(I);
Data(12,:)=U;
I=imread('mentah\3.JPG');
U=Normalisasi(I);
Data(13,:)=U;
I=imread('mentah\4.JPG');
U=Normalisasi(I);
Data(14,:)=U;
I=imread('mentah\5.JPG');
U=Normalisasi(I);
Data(15,:)=U;
I=imread('mentah\6.JPG');
U=Normalisasi(I);
Data(16,:)=U;
I=imread('mentah\7.JPG');
U=Normalisasi(I);
Data(17,:)=U;
I=imread('mentah\8.JPG');
U=Normalisasi(I);
Data(18,:)=U;
I=imread('mentah\9.JPG');
U=Normalisasi(I);
Data(19,:)=U;
I=imread('mentah\10.JPG');
U=Normalisasi(I);
Data(20,:)=U;
I=imread('ranum\1.jpg');
U=Normalisasi(I);
Data(21,:)=U;
I=imread('ranum\2.jpg');
U=Normalisasi(I);
Data(22,:)=U;
I=imread('ranum\3.jpg');
U=Normalisasi(I);
Data(23,:)=U;
I=imread('ranum\4.jpg');
U=Normalisasi(I);
Data(24,:)=U;
I=imread('ranum\5.jpg');
U=Normalisasi(I);
Data(25,:)=U;
I=imread('ranum\6.jpg');
U=Normalisasi(I);
Data(26,:)=U;
I=imread('ranum\7.jpg');
U=Normalisasi(I);
Data(27,:)=U;
I=imread('ranum\8.jpg');
U=Normalisasi(I);
Data(28,:)=U;
I=imread('ranum\9.jpg');
U=Normalisasi(I);
Data(29,:)=U;
I=imread('ranum\10.jpg');
U=Normalisasi(I);
Data(30,:)=U;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Training=Data;
jummatang=10;
jummentah=10;
jumranum=10;
jumdata=jummatang+jummentah+jumranum;
t=linspace(0,1,jumdata)
Target=t;
save myTraining.mat Training;
save myTarget.mat Target;
%=====================================================================
Pengujian
load myTraining.mat;
load myTarget.mat;
data_latih=Training';
kelas_latih=Target;
net = newff(minmax (double(data_latih)), [15,7,1], {'logsig','logsig','logsig'},'traincgf');
net.performFcn='mse';%sse
net.trainParam.mc=0.95;
net.trainParam.epochs = 1000;
net.trainParam.goal = 0.1;
net.trainParam.lr = 0.001;
net.trainParam.show = 100;
[net_keluaran,tr,Y,E]=train(net,double(data_latih),double(kelas_latih));
jumlah_iterasi=tr.num_epochs;
nilai_keluaran=Y;
nilai_error=E;
error=0.5*sum(nilai_error.^2)
%%PENGUJIAN
I=imread('ranum\3.jpg');
dataUji=Normalisasi(I);
Q=dataUji';
kelas_uji=sim(net_keluaran,double(Q))
c1=Target(1,10);
c2=Target(1,20);
c3=Target(1,30);
hasil='Ranum';
if kelas_uji <=c1
hasil='Matang';
elseif kelas_uji <=c2
hasil='Mentah';
end
disp(hasil);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%