图像旋转
MATLAB
实现
function
[I,I1,I2] = irotating( i, x0)
[m, n] = size(i);
%get the size of the image
mi = 0;
%x·½Ïò×îСµÄ×ø±êÖµ
mm = 0;
%x·½Ïò×î´óµÄ×ø±êÖµ
ni = 0;
%y·½Ïò
nm = 0;
for
x = 1:m
for
y = 1:n
x1 = ceil(x*cos(x0) - y*sin(x0));
if
x1>mm
mm = x1;
end
if
x1
mi = x1;
end
y1 = ceil(x*sin(x0) + y*cos(x0));
if
y>nm
nm = y1;
end
if
y
ni = y;
end
end
end
m0 = mm-mi;
%»-²¼x·½ÏòµÄ³¤¶È
n0 = nm-ni;
%»-²¼y·½ÏòµÄ³¤¶È
I = zeros(m0,n0);
%³õʼ»¯ÐýתͼÏñµÄ»-²¼
%¼ÆËãÐÂ×ø±ê£¬²¢¸³Öµ
for
x = 1:m
for
y = 1:n
if
mi<0
%×ø±êÖµ²»ÄܳöÏÖСÓÚµÈÓÚ0µÄÖµ
x1 = ceil(x*cos(x0) - y*sin(x0)) - mi + 1;
else
x1 = ceil(x*cos(x0) - y*sin(x0));
end
if
ni<0
y1 = ceil(x*sin(x0) + y*cos(x0)) -ni + 1;
else