Sabtu, 30 Agustus 2014

Pengolahan Citra - Rotasi


Yang dalam hal ini, Xp dan Yp merupakan titik pivot rotasi. Pivot yang dimaksud adalah koordinat titik tengah dari citra.

Jika sudut rotasinya 90°, maka implementasinya lebih mudah dilakukan dengan  cara menyalin pixel-pixel baris ke pixel-pixel kolom pada arah rotasi (Gambar  4.10). Rotasi 180° diimplementasikan dengan melakukan rotasi 90° dua kali.  Algoritma rotasi citra sejauh 90 derajat berlawanan arah jarum jam ditunjukkan  pada Algoritma 4.9, sedangkan rotasi citra sejauh 90 derajat searah jarum jam ditunjukkan pada Algoritma 4.10 [HEN95].


function J = rotasi(I,T)  
m = size(I,1);n  = size(I,2);
if rem(m,2) == 0,  Xp = floor((m+1)/2)+1;else                    Xp = floor((m+1)/2);end
 

if rem(n,2) == 0,    Yp = floor((n+1)/2)+1;
else
Yp = floor((n+1)/2);

end
X = zeros(m,n);
Y = zeros(m,n);
for x = 1 : m,    X(x,1:n) = x;     endfor y = 1 : n,    Y(1:m,y) = y;     end
Xa = round(Xp + (X - Xp)*cosd(T) - (Y - Yp)*sind(T));Ya = round(Yp + (X - Xp)*sind(T)  + (Y - Yp)*cosd(T));
r = size(min(Xa(:)) : max(Xa(:)),2);c = size(min(Ya(:)) : max(Ya(:)),2);
xs = round(abs(r-m)/2);ys = round(abs(c-n)/2);
J = zeros(r,c);
for x = 1 : m
    for y = 1 : n
        J(Xa(x,y)+xs,Ya(x,y)+ys) = I(x,y);       
    end
end 

New Scrip
clear all; clc;T = 45;I = imread('cameraman.tif');J = rotasi(I,T);imshow(uint8(J));

Contah:
I = imread('cameraman.tif');
J = imrotate(I,35,'bilinear','crop');
Imshow(I)
figure, imshow(J)

Download : operasi dasar pengolahan citra digital.pdf 

Tidak ada komentar:

Posting Komentar