ujian pengolahan citra
DESCRIPTION
praktikumTRANSCRIPT
LAPORAN PENGOLAHAN CITRA
Diajukan dalam rangka menyelesaikan mata kuliah pengolahan citra
Oleh :
Nama : Ahmad Juheri
Nim : 4211410021
Jurusan : Fisika
Fakultas : FMIPA
JURUSAN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS NEGERI SEMARANG
2013/2014
1. Menambahkan salt and pepper noise (10%) pada foto pribadi, lalu menghilangkannya
dengan metode average filtering, median filtering, the outlier method dan pseudo median
filtering
CITRA AWAL
SOURCE CODE
%membaca citra
juheri=imread('juheri.jpg');
% Mengubah citra ke tipe gray image
j=rgb2gray(juheri);
%menambahkan salt & pepper noise sebesar 10%
j_sp=imnoise(j,'salt & pepper',0.1);
%membuat dan menambahkan filter rata-rata pada citra
fa=fspecial('average');
jfa=filter2(fa,j_sp);
%filter median
jme=medfilt2(j_sp);
%The outlier method
d=0.2;
f=[0.125 0.125 0.125; 0.125 0 0.125; 0.125 0.125 0.125];
imd=im2double(j_sp);
imf=filter2(f,imd);
r=abs(imd-imf)-d>0;
res=im2uint8(r.*imf+(1-r).*imd);
%Pseudo Median Filter
max=ordfilt2(j_sp,9,ones(3,3));
min=ordfilt2(j_sp,1,ones(3,3));
psmed=1/2*(ordfilt2(min,9,ones(3,3)))
+1/2*(ordfilt2(max,1,ones(3,3)));
%menampilkan Hasil
subplot(2,3,1)
imshow(juheri)
title('asli')
subplot(2,3,2)
imshow(j_sp)
title ('salt & pepper 10%')
subplot(2,3,3)
imshow(jfa/255)
title ('average filter')
subplot(2,3,4)
imshow(jme)
title('median filter')
subplot(2,3,5)
imshow(res)
title('The Outlier Method')
subplot(2,3,6)
imshow(psmed)
title('Pseudo Median')
CITRA AKHIR
PEMBAHASAN
Derau salt and pepper juga sering disebut derau impuls (impulse noise), shot noise, atau
derau biner (binary noise). Degradasi oleh derau ini disebabkan oleh gangguan yang tajam
dan tiba-tiba (sharp and sudden) pada sinyal citra. Derau salt and pepper pada citra akan
berupa titik-titik (piksel) hitam atau putih (atau kedua-duanya) yang tersebar pada citra.
Untuk menambahkan derau salt and pepper pada citra cukup dengan menggunakan perintah
IMNOISE(I,salt&pepper,D) dengan I adalah citra dan D adalah densitas atau kepekatan
derau pada citra.
Filter pererata dapat digunakan untuk menghilangkan derau salt & pepper. Untuk
membuat filter pererata dalam matlab dapat menggunakan sintak fspecial (‘average’). Dan
untuk melakukan linier filtering pada citra dapat menggunakan sintak filter2(filter,image).
Dari hasil yang diperoleh dapat dilihat untuk filter pererata hasil yang diperoleh tidak terlalu
baik masih terdapat derau pada citra. Semakin besar filter pererata yang digunakan maka
semakin besar pula derau yang dihilangkan namun dapat mengakibatkan citra menjadi
kabur.
Outlier metode pertama kali diperkenalkan oleh Pratt dengan menganggap bahwa piksel-
piksel derau sebagai piksel yang salah tempat (outlier), yaitu piksel yang nilai aras
keabuannya jauh berbeda dengan piksel-piksel disekitarnya. Dengan anggapan ini, maka
dapat dilakukan pendekatan untuk menghilangkan derau sebagai berikut.
1. Pilih sebuah nilai ambang D
2. Untuk sebuah piksel tertentu p, bandingkan nilai p tersebut dengan nilai rerata m dari
8 piksel tetangganya.
3. Jika |p – m| > D, maka klasifikasikan piksel tersebut sebagai piksel derau. Jika tidak
maka piksel tersebut bukan piksel derau.
4. Jika piksel tsb adalah derau maka ganti nilainya dengan m, jika bukan derau maka
nilainya tidak diubah.
Hasil yang diperoleh dengan menggunakan metode ini lebih baik dari hasil ketika
menggunakan filter pererata.
Dari beberapa metode filter yang digunakan untuk menghilangkan derau salt & pepper
diperoleh hasil bahwa median filter paling cocok untuk menghilangkan atau mengurangi
derau ini. Median adalah nilai tengah dari serangkaian nilai yang telah diurutkan, jika ada
sejumlah genap nilai maka median adalah rerata dari dua nilai yang berada pada urutan
tengah. Filter median merupakan salah satu contoh filter spasial non linear. Operasi untuk
memperoleh nilai median akan menempatkan nilai yang sangat besar atau sangat kecil
berada pada ujung atas atau ujung bawah urutan. Dengan demikian filter median secara
umum akan mengganti piksel-piksel yang berderau dengan suatu nilai yang dekat dengan
piksel-piksel disekitarnya.
2. Menambahkan Gaussian noise pada foto pribadi, lalu menghilangkannya dengan metode
average filtering dan adaptive filtering
CITRA AWAL
SOURCE CODE
%membaca citra
juheri=imread('juheri.jpg');
% Mengubah citra ke tipe gray image
j=rgb2gray(juheri);
%menambahkan gaussian noise
j_g=imnoise(j,'gaussian');
%membuat dan menambahkan filter rata-rata pada citra
fa=fspecial('average');
jfa=filter2(fa,j_g);
%adaptive filtering
jad=wiener2(j_g);
%menampilkan hasil
subplot(2,2,1)
imshow(juheri)
title('asli')
subplot(2,2,2)
imshow(j_g)
title('gaussian')
subplot(2,2,3)
imshow(jfa/255)
title('average')
subplot(2,2,4)
imshow(jad)
title('adaptive')
CITRA HASIL
PEMBAHASAN
Derau Gaussian adalah derau putih yang mempunyai distribusi normal. Jika citra dinyatakan
dengan I dan derau Gaussian dinyatakan dengan N, maka citra yang memiliki derau
Gaussian dinyatakan dengan cara menambahkan keduanya yaitu I + N. Matlab mempunyai
fungsi untuk membuat simulasi derau jenis Gaussian, yaitu fungsi
J = IMNOISE (I, 'gaussian')
Untuk menghilangkan derau Gaussian dapat menggunakan pendekatan sederhana, yaitu
dengan mengambil rerata dari seluruh citra yang ada. Oleh karena itu kita dapat
menggunakan filter pererata. Dari hasil yang diperoleh, dapat kita lihat filter pererata dapat
menghilangkan derau Gaussian meskipun tidak semuanya. Semakin besar ukuran filter
pererata maka akan diperoleh gambar yang lebih bersih namun juga mengakibatkan gambar
menjadi kabur. Selain filter pererata kita juga menggunakan filter adaptif meskipun hasil
yang diperoleh tidak sebaik filter pererata. Filter adaptif merupakan jenis filter yang
mengubah karakteristiknya sesuai dengan nilai-nilai aras keabuan yang berada dalam mask,
akan berlaku seperti filter median atau berlaku seperti filter average, bergantung pada
posisinya pada citra. Salah satu filter jenis ini adalah filter wiener. Biasanya filter wiener
diterapkan dalam domain frekuensi. Sintaks dalam Matlab adalah sbb.
[J, NOISE] = WIENER2 (I)
3. Menambahkan periodic noise pada foto pribadi, lalu menghilangkannya dengan metode
band reject filtering dan notch filtering
CITRA AWAL
SOURCE CODE
%membaca citra
j=imread('juheri.jpg');
% Mengubah citra ke tipe gray image
j=rgb2gray(j);
%membuat dan menambahkan noise periodic
s=size(j);
[x,y]=meshgrid(1:s(2),1:s(1));
p=sin(x/3+y/5)+1;
j_pn=(double(j)/128+p)/4;
%melakukan tranformasi fourier dan menggeser koefisien DC ke
pusat matrik
jf1=fft2(j_pn);
jf=fftshift(jf1);
%menampilkan DFT citra sebelum filtering
subplot(2,3,1)
fftshow(jf)
title('DFT citra dengan derau periodic')
%membuat band reject filter
s=size(j_pn);
z=sqrt((x-241).^2+(y-322).^2);
br=(z<28|z>35);
%melakukan filtering dengan band reject filter
jbr=jf.*br;
%IDFT hasil filter
jbr_inv=ifft2(jbr);
%membuat notch filtering
jf(341,:)=0; jf(300,:)=0;
jf(:,267)=0; jf(:,217)=0;
%IDFT hasil filtering dengan notch filter
jf_inv=ifft2(jf);
%menampilkan hasil
subplot(2,3,2)
fftshow(jbr,'log')
title('DFT Band Reject')
subplot(2,3,3)
fftshow(jf,'log')
title('DFT Notch Filtering')
subplot(2,3,4)
imshow(j_pn)
title('Derau Periodik')
subplot(2,3,5)
fftshow(jbr_inv,'abs')
title('Hasil Band Reject')
subplot(2,3,6)
fftshow(jf_inv,'abs')
title('Hasil Notch Filtering')
CITRA HASIL
PEMBAHASAN
Derau yang sifatnya periodik (bukan acak atau random) akan menghasilkan derau
periodik. Citra yang terkorupsi oleh derau periodik secara visual akan tampak terdapat garis-
garis (bars) pada citra. Setelah dilakukan penambahan pada citra, terdapat dua”spike” yang
muncul pada komponen dc citra. Semakin tinggi frekuensi derau yang mengganggu citra
maka letaknya akan semakin jauh dari titik pusat citra hasil DFT. Derau periodic
memerlukan filtering pada domain frekuensi untuk menghilangkannya. Oleh karena derau
periodik bersesuaian dengan dua “spike” tsb, maka artinya derau periodik pada citra dapat
dihilangkan atau dikurangi dengan cara menghilangkan kedua “spike” tsb. Salah satunya
adalah dengan cara band reject filtering dan notch filtering
Band reject filter dapat dibangun dengan membuat cincin bernilai nol, untuk citra di atas
maka cincin bernilai nol ini berada pada radius kira-kira 32 dari pusat citra.Citra hasil
filtering dengan band reject filter menunjukkan bahwa tidak semua derau dapat dihilangkan
namun telah cukup mengurangi pengaruh derau tersebut terutama di bagian tengah citra.
Notch filter membuat nilai piksel pada kolom dan baris pada “spike” menjadi nol. Hasil
dari notch filtering tidak sebaik dengan hasil dari band reject filtering.
4. melakukan operasi single thresholding, double thresholding dan adaptive thresholding pada
foto pribadi
CITRA AWAL
SOURCE CODE
%membaca citra
juheri=imread('juheri.jpg');
% Mengubah citra ke tipe gray image
j=rgb2gray(juheri);
%adaptive threshold
jat=adaptivethreshold(j,20,0.04,1);
subplot(2,2,1)
imshow(j)
title('asli')
subplot(2,2,2)
%hasil dengan single threshold
imshow(j>45)
title('single threshold')
%hasil dengan double threshold
subplot(2,2,3)
imshow(j>45 & j<100)
title('double threshold')
%hasil dari adaptive threshold
subplot(2,2,4)
imshow(jat)
title('adaptive threshold')
CITRA HASIL
PEMBAHASAN
Threshold digunakan untuk mengubah gray image menjadi citra biner (hitam putih)
dengan terlebih dahulu memilih suatu nilai aras keabuan T (dari citra asli) dan kemudian
mengubah setiap piksel menjadi hitam atau putih bergantung apakah nilai piksel asli tersebut
lebih besar atau lebih kecil dari nilai T. Piksel akan diubah menjadi putih jika nilai aras
keabuannya lebih besar daripada T, dan akan diubah menjadi hitam jika nilai aras
keabuannya lebih kecil atau sama dengan T.
Single thresholding dapat dilakukan dalam bahasa Matlab dengan sederhana. Jika
terdapat citra 8 bit yang tersimpan dalam variabel x, maka thresholding dapat dilakukan
dengan perintah x > T dengan T adalah nilai ambang yang dikehendaki. Pada soal ini di
pilih nilai ambang sebesar 45.
Operasi double thresholding diimplementasikan dengan cara
Y= putih jika nilai x berada diantara T1 dan T2
Dan Y= hitam untuk nilai – nilai x yang lain
Dengan x adalah nilai aras keabuan dari citra input (asli), T1 dan T2 adalah nilai ambang
yang dipilih, dan y adalah keluaran. Implementasi dalam bahasa Matlab dapat dilakukan
dengan sintaks
x > T1 & x < T2
Adaptive threshold adalah algoritma yang memisahkan latar belakang dan objek dengan
iluminasi yang tidak seragam.
5. melakukan operasi edge detection pada foto pribadi menggunakan teknik Prewit, Sobel,
Robert dan Laplacian
CITRA AWAL
SOURCE CODE
%membaca citra
juheri=imread('juheri.jpg');
% Mengubah citra ke tipe gray image
j=rgb2gray(juheri);
%operasi edge pada citra
jp=edge(j,'prewitt');
jr=edge(j,'roberts');
js=edge(j,'sobel');
l=fspecial('laplacian',0);
jl=filter2(l,j);
%menampilkan hasil
subplot(2,3,1)
imshow(j)
title('asli')
subplot(2,3,2)
imshow(jp)
title('prewitt')
subplot(2,3,3)
imshow(jr)
title('roberts')
subplot(2,3,4)
imshow(js)
title('sobel')
subplot(2,3,5)
imshow(mat2gray(jl))
title('laplacian')
CITRA HASIL
PEMBAHASAN
Tebing (edge) dapat didefinisikan sebagai suatu diskontinuitas lokal dalam nilai
pikselnya, yaitu bahwa nilai pikselnya dapat dengan jelas ‘terlihat’ berubah. Tebing (edge)
citra dapat digunakan untuk memperoleh informasi dari citra seperti halnya pada
threshloding. Tebing citra juga dapat digunakan untuk mengetahui ukuran objek,
mengisolasi objek tertentu pada citra, atau untuk mengenali dan mengklasifikasikan objek
(misalnya berdasarkan bentuknya).
Untuk menggunakan filter pendeteksi tebing pada matlab dapat menggunakan sintak
Edge(image,’filter’)
Dari hasil yang diperoleh, diketahui bahwa teknik sobel yang paling baik digunakan dalam
operasi edge detection pada citra ini.