以下为《MATLAB几何变换实验报告》的无排版文字预览,完整内容请下载
作业二 几何变换
一、编写一个函数,实现将一幅图像旋转一定角度,以该图像中心点为旋转点。分别使用三种插值方法。
原理:
平移变换:
x = u + δx
y = v + δy
旋转变换:
x = ucosθ - vsinθ
y = usinθ + vcosθ
2、源码:
function wchy1(I,jiaodu,wchy)
%用三种插值方法实现将一幅图像旋转一定角度
%I:待处理图片名称
%jiaodu:要旋转的角度,旋转方向为顺时针
%wchy:插值方法,1代表最近邻插值,2代表双线性插值,3代表三次内插法
img=imread(I);
figure,subplot(1,2,1);
imshow(img),title('原图');
[h,w]=size(img);
theta=jiaodu/180*pi;
py=[1 0 w/2;0 1 h/2;0 0 1];
rot=[cos(theta) -sin(theta) 0;sin(theta) cos(theta) 0;0 0 1];
pix1=[1 1 1]*py*rot;%变换后图像左上点的坐标
pix2=[1 w 1]*py*rot;%变换后图像右上点的坐标
pix3=[h 1 1]*py*rot;%变换后图像左下点的坐标
pix4=[h w 1]*py*rot;%变换后图像右下点的坐标
height=round(max([abs(pix1(1)-pix4(1))+0.5 abs(pix2(1)-pix3(1))+0.5]));%变换后图像的高度
width=round(max([abs(pix1(2)-pix4(2))+0.5 abs(pix2(2)-pix3(2))+0.5]));%变换后图像的宽度
imgn=zeros(height,width);
delta_y=abs(min([pix1(1) pix2(1) pix3(1) pix4(1)]));%取得y方向的负轴超出的偏移量
delta_x=abs(min([pix1(2) pix2(2) pix3(2) pix4(2)]));%取得x方向的负轴超出的偏移量
switch wchy
case 1
for i=1-delta_y:height-delta_y
for j=1-delta_x:width-delta_x
pix=[i j 1]/rot/py;
%用变换后图像的点的坐标去寻找原图像点的坐标,否则有些变换后的图像的像素点无法完全填充
if pix(1)>=1 && pix(2)>=1 && pix(1)请点击下方选择您需要的文档下载。
以上为《MATLAB几何变换实验报告》的无排版文字预览,完整内容请下载
MATLAB几何变换实验报告由用户“wudreams”分享发布,转载请注明出处