Operasi Geometrik dan Pengolahan citra di kawasan Frekuensi


Efek Ripple

Efek ripple (riak) adalah aplikasi transformasi citra yang membuat gambar terlihat bergelombang.
Efek riak dapaat dibuat baik pada arah x maupun y. Transformasinya seperti berikut:


 

Interpolasi piksel

Hasil pemutaran citra  menimbulkan efek bergerigi pada objek citra. Hal itu diakibatkan oleh penggunaan  nilai intensitas didasarkan pada piksel tetangga terdekat, yang dilakukan melalui:

    x2 = round(x * cosa + y * sina);       
    y2 = round(y * cosa - x * sina);       

Penggunaan fungsi round (pembulatan ke atas) merupakan upaya untuk menggunakan intensitas piksel terdekat.
Alternatif  lain dilakukan dengan menggunakan floor (pembulatan ke bawah).

Misalnya, hasil perhitungan menghasilkan

    xlama = 47,09
    ylama = 59,85

 


contoh efek ripple







Penerapan dalam bentuk Program


 function G = ripple(F, ax, ay, tx, ty)
% RIPPLE Berfungsi untuk melakukan transformasi 'ripple'.
dimensi = size(F);
tinggi = dimensi(1);
lebar = dimensi(2);
for y=1 : tinggi
for x=1 : lebar
x2 = x + ax * sin(2 * pi * y / tx);
y2 = y + ay * sin(2 * pi * x / ty);
if (x2>=1) && (x2<=lebar) && ...
(y2>=1) && (y2<=tinggi)
% Lakukan interpolasi bilinear
p = floor(y2);
q = floor(x2);
a = y2-p;
b = x2-q;
if (floor(x2)==lebar) || ...
(floor(y2) == tinggi)
G(y, x) = F(floor(y2), floor(x2));
else
intensitas = (1-a)*((1-b)*F(p,q) + ...
b * F(p, q+1)) + ...
a *((1-b)* F(p+1, q) + ...
b * F(p+1, q+1));
G(y, x) = intensitas;
end
else
G(y, x) = 0;
end
end
end
G = uint8(G);

Contoh penggunaan fungsi twirl

>> F = imread(' C: \Image \kotatua.png ');
>> G = swirl(F); imshow(G) 


Efek Twirl

Transformasi twirl (olak atau puntiran) dilakukan dengan memutar citra berdasarkan titik pusat citra,
tetapi tidak bersifat linear. Salah satu varian bentuk transformasinya, yang diadaptasi dari Burger & Burge (2008),

 

Program efek twirl 

function G = twirl(F)
% TWIRL Berfungsi untuk melakukan transformasi 'twirl'
dimensi = size(F);
tinggi = dimensi(1);
lebar = dimensi(2);
xc = round(lebar / 2);
yc = round(tinggi / 2);
alpha = 43 * pi / 180;
rmaks = 0.5 * sqrt(xc^2 + yc ^ 2); % 1/2 diagonal citra
for y=1 : tinggi
for x=1 : lebar
r = sqrt((x-xc)^2+(y-yc)^2);
beta = atan2(y-yc, x-xc) + …
alpha * (rmaks - r) / rmaks;
x2 = xc + r * cos(beta);
y2 = yc + r * sin(beta);
if (x2>=1) && (x2<=lebar) && ...
(y2>=1) && (y2<=tinggi)
% Lakukan interpolasi bilinear
p = floor(y2);
q = floor(x2);
a = y2-p;
b = x2-q;
if (floor(x2)==lebar) || …
(floor(y2) == tinggi)
G(y, x) = F(floor(y2), floor(x2));
else
intensitas = (1-a)*((1-b)*F(p,q) + ...
b * F(p, q+1)) + ...
a *((1-b)* F(p+1, q) + ...
b * F(p+1, q+1));
G(y, x) = intensitas;

end
else
G(y, x) = 0;
end
end
end
G = uint8(G);


Contoh penggunaan fungsi twirl:

>> F=imread('C:\Image\kotatua.png
>> G=swirl(F); imshow(G)


Pengolahan citra dikawasan spasial dan kawasan fekuensi

citra dapat ditransformasikan dikawasan spasial atau keruangan  maupun frekuensi.
Dua cara untuk melakuan transformasi ditunjukkan dengan gambar berikut

 
kk



Comments

Popular posts from this blog

Membalik Citra

Pengertian operasi Geometrik