loading...
TRANSFORMASI
CITRA
IMAGE
TRANSFORM
Ada banyak
metode yang digunakan untuk melakukan tranformasi image. Dua diantaranya adalah
DFT (Discrete Fourier Transform) dan DCT (Discrete Cosinus Transform. Dengan
menggunakan MatLab hal ini dapat kita lakukan dengan mudah.
DFT (Discrete Fourier Transform)
Transformasi
Fourier merupakan representasi dari sebuah citra sebagai penjumlahan
eksponensial kompleks dari beragam magnitude, frekuensi dan fasa. Contoh
perintah untuk melakukan transformasi Fourier pada suatu citra:
f=checkerboard(8,8);
f(5:24,13:17)=1;
imshow(f,'notruesize')
f=fft2(f);
f2=log(abs(f));
figure,imshow(f2,[-1,5],'notruesize');
colormap(jet);
colorbar
Output program diberikan sebagai berikut:
Gambar 1. Sebelum dikenai
FFT Gambar 2. Setelah dikenai
FFT
DCT (Discrete Cosine Transform)
Discrete
Cosine Transform merepresentasikan sebuah citra dari penjumlahan sinusoida dari
magnitude dan frekuensi yang berubah-ubah. Sifat dari DCT adalah mengubah
informasi citra yang signifkan dikonsentrasikan hanya pada beberapa koefisien
DCT. Oleh karena itu DCT sering digunakan untuk kompresi citra seperti pada
JPEG.
Contoh
perintah untuk melakukan DCT pada suatu citra:
i=checkerboard(8,8);
j=dct2(i);
imshow(i);
figure,imshow(log(abs(j)),[]),colormap(jet(64)),
colorbar
j(abs(j)<10)=0;
k=idct2(j)/255;
figure,imshow(k);
Output program diatas adalah sebagai
berikut:
Transformasi
Wavelet
Wavelet merupakan klas dari suatu
fungsi yang digunakan untuk melokalisasi suatu fungsi dalam ruang dan skala.
Wavelet dapat dibentuk dari satu fungsi Ψ(x) ,
dikenal sebagai “mother wavelet” dalam suatu interval berhingga. “Daughter
wavelet” Ψa,b (x) dibentuk oleh
translasi (b) dan kontraksi (a).
Wavelet sangat berguna untuk
kompresi data image, karena transformasi wavelet mempunyai property yang ada
dalam beberapa cara terhadap transformasi Fourier konvensional. Wavelet tunggal
dapat didefinisikan dengan:
Selanjutnya
dan formula Calderon memberikan :
Wavelet yang sering digunakan
didefinisikan dengan fungsi Haar sebagai berikut :
dan
dengan j integer dan nonnegative,
0≤k≤2j-1
Transformasi dengan Image
Processing Toolbox pada MatLab.
Berikut ini diberikan contoh
transformasi dengan Toolbox pada MatLab. Output memberikan diberikan gambar
asli dan enam gambar hasil transformasi dengan enam metode yang berbeda yakni
transformasi linear conformal, transformasi affine, transformasi proyeksi,
transformasi polinomial, transformasi piecewise linear, transformasi barel,
transformasi sinusoid dan transformasi pin cushion.
clc;clear;
gbr = checkerboard(6,6);
figure
subplot(331)
imshow(gbr)
title('gb asli')
% Transformasi linear dg
4 parameter
skala = 1.2; % faktor
skala
sudut = 40*pi/180; %
sudut rotasi
tx = 0; % translasi x
ty = 0; % translasi y
sc = skala*cos(sudut);
ss = skala*sin(sudut);
T = [ sc -ss;
ss sc;
tx ty];
t_lc =
maketform('affine',T);
gbr_lc =
imtransform(gbr,t_lc,'FillValues',.3);
subplot(332)
imshow(gbr_lc);
title('transf. linear conformal')
% Matrik T dg 6
elemen
T = [1 0.1;
1 1;
0 0];
t_aff = maketform('affine',T);
I_affine = imtransform(gbr,t_aff,'FillValues',.3);
subplot(333)
imshow(I_affine)
title('affine')
T = [1 0 0.008;
1 1 0.01;
0 0 1];
t_proj = maketform('projective',T);
I_projective =
imtransform(gbr,t_proj,'FillValues',.3);
subplot(334)
imshow(I_projective)
title('transf. proyeksi')
xybase = reshape(randn(12,1),6,2);
t_poly =
cp2tform(xybase,xybase,'polynomial',2);
% matrik T dg 12
elemen
T = [0 0;
1 0;
0 1;
0.001 0;
0.02 0;
0.01 0];
t_poly.tdata = T;
I_polynomial =
imtransform(gbr,t_poly,'FillValues',.3);
subplot(335)
imshow(I_polynomial)
title('transf.
polinomial')
imid =
round(size(gbr,2)/2); % mencari indeks tengah
I_left = gbr(:,1:imid);
stretch = 1.5; % faktor tarik
size_right = [size(gbr,1)
round(stretch*imid)];
I_right = gbr(:,imid+1:end);
I_right_stretched = imresize(I_right,size_right);
I_piecewiselinear = [I_left
I_right_stretched];
subplot(336)
imshow(I_piecewiselinear)
title('transf. piecewise linear')
% variasi dg sinusoid
[nrows,ncols] = size(gbr);
[xi,yi] = meshgrid(1:ncols,1:nrows);
a1 = 5; % amplitudo
sinusoid
a2 = 3;
u = xi +
a1*sin(pi*xi/imid);
v = yi -
a2*sin(pi*yi/imid);
tmap_B = cat(3,u,v);
resamp =
makeresampler('linear','fill');
I_sinusoid =
tformarray(gbr,[],resamp,[2 1],[1 2],[],tmap_B,.3);
subplot(337)
imshow(I_sinusoid)
title('transf. sinusoid')
% distorsi barel
xt = xi(:) - imid;
yt = yi(:) - imid;
[theta,r] = cart2pol(xt,yt);
a = .001; % amplitudo
s = r + a*r.^3;
[ut,vt] =
pol2cart(theta,s);
u =
reshape(ut,size(xi)) + imid;
v = reshape(vt,size(yi)) + imid;
tmap_B = cat(3,u,v);
I_barrel = tformarray(gbr,[],resamp,[2 1],[1
2],[],tmap_B,.3);
subplot(338)
imshow(I_barrel)
title('transf. barrel')
% distorsi radial pin cushion
xt = xi(:) - imid;
yt = yi(:) - imid;
[theta,r] =
cart2pol(xt,yt);
a = -.0005; %
amplitudo
s = r + a*r.^3;
[ut,vt] =
pol2cart(theta,s);
u =
reshape(ut,size(xi)) + imid;
v = reshape(vt,size(yi)) + imid;
tmap_B = cat(3,u,v);
I_pin = tformarray(gbr,[],resamp,[2 1],[1
2],[],tmap_B,.3);
subplot(339)
imshow(I_pin)
title('transf. pin cushion')
Gambar 5. Output dengan enam model transformasi yang berbeda.
loading...
Comments
Post a Comment