图形图像处理实验报告八
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形图像处理实验报告
实验八:几何变换(第五章)指导教师:张宝雷
姓名:刘爽专业:09信本二班学号:09040342021
一、图像的平移变换
MATLAB代码:
clear all;
A=imread('iep.jpg');
figure;
subplot(121);imshow(A);
A=double(A);
A_move=zeros(size(A));
H=size(A);
A_x=50;
A_y=50;
I_movesult(A_x+1:H(1),A_y+1:H(2),1:H(3))=I(1:H(1)-A_x,1:H(2)-A_y,1:H(3));
subplot(122);imshow(uint8(A_move));
二、图像的裁剪
1、用imcrop函数对图像进行裁剪
MATLAB代码:
I=imread('iep.jpg');
I1=imcrop(I,[80 60 50 50]);
figure;
subplot(121);imshow(I);
subplot(122);imshow(I1);
2、使用剪切图像函数制作动画MATLAB代码:
I=imread('iep.jpg')
n=50;
m=50;
figure;imshow(I);
for i=1:50
n=n-1;
m=m+1;
I1=imcrop(I,[n,n,m,m]);
figure;imshow(I1);
end
三、图像的比例缩放变换
1、用最近邻域法进行图像放大4倍和缩小1/2倍的操作。
MATLAB代码:
I=imread('fish.jpg'); %I为原始图像
figure;
subplot(131);imshow(I); %显示原始图像
I=double(I);
I_en=imresize(I,4,'nearest'); %最近邻法标志函数nearest扩大4倍
subplot(132);imshow(uint8(I_en)); %显示扩大4倍后的图像
I_re=imresize(I,0.5,'nearest'); %缩小两倍
subplot(133);imshow(uint8(I_re));%显示缩小2倍后的图像
2、图像旋转
MATLAB代码:
clear all;
I=imread('mei.jpg'); %本书用的图片都在当前目录下,故不用写路径figure;
subplot(121);imshow(I);
I1=imrotate(I,30,'crop');
subplot(122);imshow(I1);
3、使用imrotate函数旋转图像,制作动画效果
MATLAB代码:
I=imread('mei.jpg');
for i=1:25
I1=imrotate(I,15*i,'crop');
imshow(I1);
end
三、图像错切变换
1、图像错切示例
MATLAB代码:
I=imread('mao.jpg');
figure;
subplot(121);imshow(I);
I=double(I);
h=size(I);
I1=zeros(h(1)+round(h(2)*tan(pi/6)),h(2),h(3));
for m=1:h(1)
for n=1:h(2)
I1(m+round(n*tan(pi/6)),n,1:h(3))=I(m,n,1:h(3));
end
end
I2=uint8(I1);
subplot(122);imshow(I2);
2、图像镜面变换示例
MATLAB代码:
I=imread('ta.jpg');
figure;
subplot(221);imshow(I);
I=double(I);
h=size(I);
I_fliplr(1:h(1),1:h(2),1:h(3))=I(1:h(1),h(2):-1:1,1:h(3)); %水平镜像变换
I1=uint8(I_fliplr);
subplot(222);imshow(I1);
I_flipud(1:h(1),1:h(2),1:h(3))=I(h(1):-1:1,1:h(2),1:h(3)); %垂直镜像变换
I2=uint8(I_flipud);
subplot(223);imshow(I2);
I_fliplr_flipud(1:h(1),1:h(2),1:h(3))=I(h(1):-1:1,h(2):-1:1,1:h(3)); %对角镜像变换
I3=uint8(I_fliplr_flipud);
subplot(224);imshow(I3);
四、图像复合变换
1、将图像向下、向右平移,并用白色填充空白部分,再对其作垂直镜像,然后旋转45度,再扩大3倍。
MATLAB代码:
I=imread('ben.jpg'); %读取原始图像
figure;
subplot(121);imshow(I);
I=double(I);
I1=zeros(size(I))+255;
h=size(I1);