图像几何变换_第1页
图像几何变换_第2页
图像几何变换_第3页
图像几何变换_第4页
图像几何变换_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 图像几何变换一、 实验目的(1) 学习几种常见的图像几何变换,并通过实验体会几何变换的效果;(2) 掌握图像平移、剪切、缩放、旋转、镜像、错切等几何变换的算法原理及编程实现(3) 掌握matlab编程环境中基本的图像处理函数(4) 掌握图像的复合变换二、 涉及知识点(1) 图像几何变换不改变图像像素的值,只改变像素所在的几何位置(2) 图像裁剪imcrop函数,语法格式为:B=imcrop(A);交互式用鼠标选取区域进行剪切B=imcrop(A,left top right bottom);针对指定的区域left top right bottom进行剪切(3) 图像缩放imresize函数,

2、语法格式为:B = imresize(A,m,method)这里参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。B = imresize(A,m,method)返回原图A的m倍放大的图像(m小于1时效果是缩小)。(4) 图像旋转imrotate函数,语法格式为: B = imrotate(A,angle,crop),参数crop用于指定裁剪旋转后超出图像的部分。三、 实验内容(1) 将图像hehua.bm

3、p裁剪成200X200大小,并保存(2) 制作动画,将一幅图像逐渐向左上角平移移出图像区域,空白的地方用白色填充(3) 利用剪切图像函数制作动画(4) 将图像分别放大1.5倍和缩小0.8倍,插值方法使用最近邻域法和双线性插值法,对比显示图像。(5) 将图像水平镜像,再顺时针旋转45度,显示旋转后的图像。(6) 将图像分别进行水平方向30度错切,垂直方向45度错切,分别显示结果具体实现:1.将图像hehua.bmp裁剪成200X200大小,并保存I=imread('hehua.bmp');n=size(I);figure;subplot(1,2,1);imshow(I);titl

4、e('原图');I=double(I);I1=zeros(200,200,n(3);I1=I(1:200,1:200,1:n(3);subplot(1,2,2);imshow(uint8(I1);title('裁剪');imwrite(uint8(I1),'hehua1.bmp','bmp');2. 制作动画,将一幅图像逐渐向左上角平移移出图像区域,空白的地方用白色填充I=imread('hehua1.bmp');m,n,l=size(I);figure;imshow(I);title('原图');

5、I=double(I);for i=1:10 x=10*i; y=10*i; subplot(3,4,i); G=zeros(m,n,l)+255; for i=1:m-x-1 for j=1:n-y-1 for k=1:l G(i,j,k)=I(i+x+1,j+y+1,k); end end end imshow(uint8(G); title('平移图');end3. 利用剪切图像函数制作动画I=imread('hehua.bmp');m,n,l=size(I);figure;subplot(3,4,1);imshow(I);title('原图

6、9;);I=double(I);for i=1:10 x=200-i*20; y=200+i*20; subplot(3,4,i+1); G=imcrop(I,x,x,y,y) imshow(uint8(G); end4. 将图像分别放大1.5倍和缩小0.8倍,插值方法使用最近邻域法和双线性插值法,对比显示图像。im=imread('hehua1.bmp');subplot(2,3,1);imshow(im);title('原图');xscale=1.5;yscale=1.5;row,col,r=size(im);row=row*yscale; col=col*

7、xscale;im1=uint8(zeros(uint16(row),uint16(col),uint16(r);for i=1:row for j=1:col x=j/xscale; y=i/yscale; im1(i,j,1)=im(uint16(y),uint16(x),1); im1(i,j,2)=im(uint16(y),uint16(x),2); im1(i,j,3)=im(uint16(y),uint16(x),3); endendsubplot(2,3,2);imshow(im1);title('最近邻域法1.5');im2=uint8(zeros(uint16

8、(row),uint16(col),uint16(r);for i=2:row-1 for j=2:col-1 x=j/xscale; y=i/yscale; left=floor(x); top=floor(y); right=left+1; bottom=top+1; u=x-left; v=y-top; im2(i,j,1)=uint8(1-u)*(1-v)*im(top,left,1)+(1-u)*v*im(top,right,1)+. u*(1-v)*im(bottom,left,1)+u*v*im(bottom,right,1); im2(i,j,2)=uint8(1-u)*(1-

9、v)*im(top,left,2)+(1-u)*v*im(top,right,2)+. u*(1-v)*im(bottom,left,2)+u*v*im(bottom,right,2); im2(i,j,3)=uint8(1-u)*(1-v)*im(top,left,3)+(1-u)*v*im(top,right,3)+. u*(1-v)*im(bottom,left,3)+u*v*im(bottom,right,3); endendsubplot(2,3,3);imshow(im2);title('双线性插值1.5');im=imread('hehua1.bmp

10、9;);subplot(2,3,4);imshow(im);title('原图');xscale=0.8;yscale=0.8;row,col,r=size(im);row=row*yscale; col=col*xscale;im1=uint8(zeros(uint16(row),uint16(col),uint16(r);for i=1:row for j=1:col x=j/xscale; y=i/yscale; im1(i,j,1)=im(uint16(y),uint16(x),1); im1(i,j,2)=im(uint16(y),uint16(x),2); im1(

11、i,j,3)=im(uint16(y),uint16(x),3); endendsubplot(2,3,5);imshow(im1);title('最近邻域法0.8');im2=uint8(zeros(uint16(row),uint16(col),uint16(r);for i=2:row-1 for j=2:col-1 x=j/xscale; y=i/yscale; left=floor(x); top=floor(y); right=left+1; bottom=top+1; u=x-left; v=y-top; im2(i,j,1)=uint8(1-u)*(1-v)*i

12、m(top,left,1)+(1-u)*v*im(top,right,1)+. u*(1-v)*im(bottom,left,1)+u*v*im(bottom,right,1); im2(i,j,2)=uint8(1-u)*(1-v)*im(top,left,2)+(1-u)*v*im(top,right,2)+. u*(1-v)*im(bottom,left,2)+u*v*im(bottom,right,2); im2(i,j,3)=uint8(1-u)*(1-v)*im(top,left,3)+(1-u)*v*im(top,right,3)+. u*(1-v)*im(bottom,left

13、,3)+u*v*im(bottom,right,3); endendsubplot(2,3,6);imshow(im2);title('双线性插值0.8');5. 将图像水平镜像,再顺时针旋转45度,显示旋转后的图像。I=imread('hehua1.bmp');figure;subplot(1,2,1);imshow(I);title('原图');I=double(I);m,n,l=size(I);I1(1:m,1:n,1:l)=I(1:m,n:-1:1,1:l);I2=imrotate(I1,315,'nearest');I3=uint8(I2);subplot(1,2,2);imshow(I3);title('水平镜像顺时针旋转45度');6. 将图像分别进行水平方向30度错切,垂直方向45度错切,分别显示结果I=imread('hehua.bmp');m,n,l=size(I);figure;subplot(1,3,1);imshow(I);title('原图');I=double(I); G=zeros(m,n,l) for i=1:m for j=1:n for k=1:l G(i+round(sqrt(3)/3*j),j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论