pcd-modul 2
DESCRIPTION
pengolahan citraTRANSCRIPT
MODUL 2
TRANSFORMASI DAN RESTORASI CITRA
I. TRANSFORMASI CITRA
A. Transformasi Fourier Transformasi citra merupakan proses perubahan fungsi dan ranah. Cara ini digunakan untuk
mengurangi waktu komputasi yaitu mentransformasi citra dan kernel ke dalam ranah frekuensi,
kemudian konvolusi dilakukan dalam ranah waktu. Keuntungan utama dari penggunaan ranah
frekuensi adalah proses konvolusi dapat diterapkan dalam bentuk perkalian langsung.
Transformasi citra yang melakukan perubahan dari ranah spasial ke ranah frekuensi disebut
Transformasi Fourier. Sedangkan perubahan fungsi dan ranah frekuensi ke ranah spasial
dilakukan melalui Transformasi Fourier Balikan (invers). Berikut ini diberikan rumusan dari
transformasi fourier, yaitu:
a. Satu dimensi bentuk diskrit, dirumuskan dengan persamaan:
b. Invers satu dimensi bentuk diskrit, dirumuskan dengan persamaan:
c. Dua dimensi bentuk diskrit, dirumuskan dengan persamaan:
d. Invers dua dimensi bentuk diskrit, dirumuskan dengan persamaan:
e. Fast Fourier Transform (FFT) dirumuskan dengan persamaan:
1
0
1
0
)(2
),(1
),(M
x
N
y
N
vy
M
uxi
eyxfMN
vuF
1
0
1
0
1
0
1
0
))(2sin(1
))(2)(cos,(1
),(M
x
N
y
M
x
N
y N
vy
M
ux
MNi
N
vy
M
uxyxf
MNvuF
1
0
2
)(1
)(M
x
M
uxi
exfM
uF
1
1
1
0
)2sin()(1
)2cos()(1
)(M
x
M
x
uxxfM
iuxxfM
uF
1
0
2
)()(M
u
M
uxi
euFxf
1
1
1
0
)2
sin()()2
cos()()(M
u
M
u M
uxuFi
M
uxuFxf
1
0
1
0
)(2
),(),(M
u
N
v
N
vy
M
uxi
evuFyxf
)))(2sin())(2)(cos(,(),(1
0
1
0
1
0
1
0
M
x
N
y
M
x
N
y N
vy
M
uxi
N
vy
M
uxvuFyxf
12
0
)(2
1)(
M
x
ux
MkxfM
uF
Source code FFT satu dimensi dalam matlab dapat dilihat sebagai berikut:
Image=imread('cameraman.tif'); [ImageHeight ImageWidth]=size(Image); X=fft(Image); Y=ifft(X); imshow([Image X uint8(Y)]);
sedangkan source code FFT dua dimensi dalam matlab dapat dilihat sebagai berikut:
Image=imread('cameraman.tif'); [ImageHeight ImageWidth]=size(Image); X=fft2(Image); Y=ifft2(X); imshow([Image X uint8(Y)]); Cek=isequal(Image, uint8(Y)) if Cek==1 Hasilnya='sama' else Hasilnya='tidak sama' end
B. Transformasi Cosinus Diskrit (Discrete Cosinus Transform = DCT) DCT merupakan salah satu transformasi yang penting pada pengolahan sinyal, khususnya
pengolahan citra digital. DCT mengubah fungsi dari domain spasial ke domain frekuensi. Berikut
ini diberikan rumusan sebagai berikut:
a. DCT-1D, dirumuskan dengan persamaan:
Source code dalam matlab dapat dilihat sebagai berikut:
clear; clc; Image=imread('cameraman.tif'); [ImageHeight ImageWidth]=size(Image); X=dct(double(Image));
1
0
2
2
2
1
0
)2(
2
1
0
)12(
2
1
0
)2(
2
12
0
2
))12(1
)2(1
(2
1
))12(1
)2(1
(2
1
)(2
1)(
N
x
u
N
ux
N
N
x
xu
N
N
x
xu
N
N
x
xu
N
N
x
ux
N
kkxfN
kxfN
kxfN
kxfN
kxfN
uF
1
0 2
)12(cos)()()(
N
y N
uxxfuuC
0u N
2
0u N
1
)(
Untuk
Untuk
u
Y=idct(X); imshow([Image uint8(X) uint8(Y)]); Cek=isequal(Image, uint8(Y)) if Cek==1 Hasilnya='sama' else Hasilnya='tidak sama' end
b. Sedangkan invers DCT-1D, dirumuskan dengan persamaan:
c. DCT-2D, dirumuskan dengan persamaan:
Source code dalam matlab dapat dilihat sebagai berikut:
clear; clc; Image=imread('cameraman.tif'); [ImageHeight ImageWidth]=size(Image); X=dct2(double(Image)); Y=idct2(X); imshow([Image uint8(X) uint8(Y)]); Cek=isequal(Image, uint8(Y)) if Cek==1 Hasilnya='sama' else Hasilnya='tidak sama' end
d. Sedangkan invers DCT-2D, dirumuskan dengan persamaan:
C. Transformasi Sinus Diskrit (Discrete Sinus Transform = DST) DST berasal dari imajiner complex kernel. Berikut ini diberikan rumusan sebagai berikut:
a. DST-1D, dirumuskan dengan persamaan:
b. DST-2D, dirumuskan dengan persamaan:
N
uxuCuxf
N
x 2
)12(cos)().()(
1
0
M
vy
N
uxyxfvu
NMvuyxg
N
x
M
y 2
)12(cos
2
)12(cos),()()(
.
2),,,(
1
0
1
0
M
vy
N
uxvuyxgvu
NMyxf
N
x
M
y 2
)12(cos
2
)12(cos),,,()()(
.
2),(
1
0
1
0
]1
)1)(1(sin[]
1
)1)(1(sin[),(),(
M
vy
N
uxvuCyxg
1
0
1
0
),(1
2),(
N
u
M
v
yxgN
yxf
]1
)1)(1(sin[)()(
1
N
x N
uxxfuF
II. RESTORASI CITRA Restorasi citra merupakan operasi yang digunakan untuk mengurangi noise pada saat akuisisi data.
Seringkali pada saat akusisi data, citra yang dihasilkan tidak sesuai dengan apa yang diinginkan
sebelumnya. Ketidaksesuaian citra yang telah didapatkan disebabkan oleh beberapa persoalan, yaitu:
a. Karena lensa kamera yang kurang bersih, sehingga muncul bintik-bintik (noise)
b. Karena adanya gangguan pada saat melakukan pengiriman data.
Hasil pengambilan citra yang tidak sesuai tersebut dapat diperbaiki melalui restorasi citra.
A. Pemodelan noise Misalkan diketahui citra f(x,y), filter spasial disimbolkan menggunakan h(x,y) dan error secara acak
(noise) yang disimbolkan dengan n(x,y), maka hasil konvolusi yang terkena noise dapat dituliskan dalam
persamaan:
Berikut ini akan dibahas dua model noise, yaitu:
1. Salt & pepper Noise tipe ini dengan cara menempelkan dot/titik/piksel warna hitam dan putih pada
citra. Efek tersebut sangat mengganggu kualitas citra aslinya. Misalkan diketahui sebuah
citra f(x,y) dan q(x,y)i adalah citra setelah diberi salt dan pepper noise maka dapat
dimodelkan dalam persamaan:
dimana max dan min masing-masing adalah tingkat keabuan dari maksimal dan minimal
dari citra yang terkena noise. Untuk 8 bit, minimal = 0 dan maksimal = 255.
Source code dalam matlab dapat dilihat sebagai berikut:
a=imread('cameraman.tif'); aNoise=imnoise(a,'salt & pepper', 0.01); bNoise=imnoise(a,'salt & pepper', 0.05); cNoise=imnoise(a,'salt & pepper', 0.15); dNoise=imnoise(a,'salt & pepper', 0.20); eNoise=imnoise(a,'salt & pepper', 0.25); imshow([a aNoise bNoise cNoise dNoise eNoise ])
2. Gaussian Noise yang paling banyak terjadi adalah Additive Gaussian Noise. Fungsi kepadatan dari
Univariate Gaussian Noise, adalah q, dengan rata-rata , dan simpangan 2, dirumuskan
sebagai berikut:
Source code dalam matlab dapat dilihat sebagai berikut:
a=imread('cameraman.tif'); aNoise=imnoise(a,'gaussian', 0.001); bNoise=imnoise(a,'gaussian', 0.005); cNoise=imnoise(a,'gaussian', 0.007);
),(),(*),(),( yxnyxhyxfyxg
2/min)Pr(
2/max)Pr(
1)Pr(
q
q
fq
2
2
2
)(
2
1
2 )2()(
x
q exP
dNoise=imnoise(a,'gaussian', 0.009); eNoise=imnoise(a,'gaussian', 0.01); imshow([a aNoise bNoise cNoise dNoise eNoise ])
B. Penanganan noise Noise merupakan gangguan yang harus ditangani sebelum citra dianalisis. Namun demikian setiap noise,
terdapat cara untuk penanganan noise. Semua noise tidak dapat diperlakukan sama. Noise tipe salt dan
paper mempunyai karakteristik yang berbeda dengan noise tipe gaussian. Penanganan noise seringkali
berhubungan dengan filter. Untuk melakukan filter suatu citra dibutuhkan proses konvolusi. Berikut ini
akan dibahas dua model penanganan noise, yaitu:
1. Penanganan noise salt & pepper Pengurangan atau penghapusan noise dalam bentuk salt & pepper dapat dilakukan dengan
berbagai cara, salah satu cara yang biasa dipakai untuk menghilangkan noise tersebut
yaitu dengan melakukan konvolusi terhadap mask matrik rata-rata.
Source code dalam matlab dapat dilihat sebagai berikut:
a=imread('cameraman.tif'); aNoise=imnoise(a,'salt & pepper', 0.01); bNoise=imnoise(a,'salt & pepper', 0.05); cNoise=imnoise(a,'salt & pepper', 0.15); mask1=ones(3,3)/9; mask2=ones(5,5)/25; mask3=ones(7,7)/49; aRest = imfilter(aNoise,mask1); bRest = imfilter(bNoise,mask2); cRest = imfilter(cNoise,mask3); imshow([a aNoise aRest; a bNoise aRest; a cNoise cRest ])
Namun penggunaan konvolusi dengan matrik rata-rata tidak dapat menyelesaikan
penghapusan atau pengurangan noise secara optimal, semakin banyak noise yang
menempel, maka semakin jelek hasil yang diperoleh, meskipun dengan menggunakan
mask yang lebih besar. Oleh karena itu, digunakan median filter.
Source code dalam matlab dapat dilihat sebagai berikut:
a=imread('cameraman.tif'); aNoise=imnoise(a,'salt & pepper', 0.20); bNoise=imnoise(a,'salt & pepper', 0.25); cNoise=imnoise(a,'salt & pepper', 0.35); aRest = medfilt2(aNoise); bRest = medfilt2(bNoise); cRest = medfilt2(cNoise); imshow([a aNoise aRest; a bNoise aRest; a cNoise cRest ])
Citra yang dihasilkan masih tampak ada noise-noise yang menempel. Noise tersebut
dapat dibersihkan dengan menggunakan median filter secara berulang (dalam hal ini
dilakukan 2 kali, hasil median filter diproses lagi menggunakan median filter).
Source code dalam matlab dapat dilihat sebagai berikut:
a=imread('cameraman.tif');
aNoise=imnoise(a,'salt & pepper', 0.01); bNoise=imnoise(a,'salt & pepper', 0.05); cNoise=imnoise(a,'salt & pepper', 0.15); aRest = medfilt2(aNoise); bRest = medfilt2(bNoise); cRest = medfilt2(cNoise);
aaRest = medfilt2(aRest); bbRest = medfilt2(bRest); ccRest = medfilt2(cRest); imshow([a aNoise aRest aaRest; a bNoise bRest bbRest; a cNoise cRest
ccRest])
2. Penanganan noise Gaussian menggunakan Wiener Filter
Wiener Filter merupakan Discrete Time Linier finite impulse response (FIR) filter. Prinsip ini
telah dikembangkan luas untuk rekonstruksi dari sinyal satu dimensi dan citra dua dimensi.
Wiener Filter sensitif terhadap noise, tapi filter tersebut dapat mengkonstruksi citra secara bagus.
Winner filter mencari sebuah estimasi yang meminimisasi fungsi kesalahan statistik, dapat
dituliskan dalam persamaan:
Source code dalam matlab dapat dilihat sebagai berikut:
a=imread('cameraman.tif'); aNoise=imnoise(a,'gaussian'); aRest = wiener2(aNoise,[3 3]); bRest = wiener2(aNoise,[5 5]); cRest = wiener2(aNoise,[7 7]); imshow([a aNoise aRest; a bNoise aRest; a cNoise cRest ])
Tugas Pendahuluan
1. Apa yang dimaksud dengan transformasi citra? Tujuannya untuk apa? Sebut dan jelaskan
jenis-jenis transformasi yang anda ketahui!
2. Apa yang dimaksud dengan restorasi citra? Tujuannya untuk apa? Sebut dan jelaskan
metode yang anda ketahui untuk restorasi citra!
Tugas
1. Cobalah semua program diatas lakukan percobaan sesuai dengan perintah diatas.
Kemudian gantilah dengan citra yang lain, masing-masing bandingkan dengan citra
‘cameraman.tif’. Berikan analisa anda !!!
),(),(),(ˆ vuGvuWvuF