xx=imfinfo('d:\tupian\tiger.bmp');
BmpImage=imread('d:\tupian\tiger.bmp');
w=xx.Width;
h=xx.Height;
cosphi=cos(3.14);
sinphi=sin(3.14);
Sx=1;
Sy=1;
if (cosphi>=0)
if (sinphi>=0)
miny=0;
maxy=Sx*w*sinphi+Sy*h*cosphi;
minx=-Sy*h*sinphi;
maxx=Sx*w*cosphi;
else
miny=Sx*w*sinphi;
minx=0;
maxy=Sy*h*cosphi;
end
else
if (sinphi>=0)
minx=Sx*w*cosphi-Sy*h*sinphi;
maxy=Sx*w*sinphi;
miny=Sy*h*cosphi;
maxx=0;
else
minx=Sx*w*cosphi;
maxx=-Sy*h*sinphi;
miny=Sy*h*cosphi+Sx*w*sinphi;
maxy=0;
end
end
w1=uint16(maxx-minx);
h1=uint16(maxy-miny);
% original vector--OriVec
% destination vector--DesVec
for y=1:h1 %y1=(y+miny);
y1=(double(y)+miny);
for x=1:w1 % x1=(x+minx);
x1=(double(x)+minx);
DesVec(1,1)=x1; DesVec(2,1)=y1;
S(1,1)=Sx;S(1,2)=0;S(2,1)=0;S(2,2)=Sy;
R(1,1)=cosphi; R(1,2)=-sinphi;
R(2,1)=sinphi; R(2,2)=cosphi;
OriVec=S^(-1)*R^(-1)*DesVec;
PosSourceX=uint16(OriVec(1,1));
PosSourceY=uint16(OriVec(2,1));
% PosSourceX=uint16((x1*cosphi+y1*sinphi)/Sx +0.5);
% PosSourceY=uint16((-x1*sinphi+y1*cosphi)/Sy +0.5);
if((PosSourceX<1)||(PosSourceX>w)||(PosSourceY<1)||(PosSourceY>h))
if(xx.BitDepth==24)
Transfor(x,y,1:3)=uint8(1);
else
Transfor(x,y)=uint8(1);
end
else
if(xx.BitDepth==24)
Transfor(y,x,1:3)=BmpImage(PosSourceY,PosSourceX,1:3);
else
Transfor(y,x)=BmpImage(PosSourceY,PosSourceX);
end
end
end
end
imwrite(Transfor,'d:\tupian\TranTiger.bmp');
readTransfor=imread('d:\tupian\TranTiger.bmp');
figure(4)
subplot(2,2,2)
imshow(BmpImage)
J=imrotate(BmpImage,90);
subplot(2,2,4)
imshow(Transfor);
zuobiaobianhuan.rar_坐标变换
版权申诉
5 浏览量
2022-09-23
23:32:50
上传
评论
收藏 363KB RAR 举报
alvarocfc
- 粉丝: 112
- 资源: 1万+