实验二、图像的几何变换 (2) 袁子鹏 网络11-2班 3110757219
- 格式:doc
- 大小:1.39 MB
- 文档页数:4
数字图像处理实验二实验二图像的几何变换一.实验目的及要求掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。
二、实验设备1.计算机;2.MATLAB6.5;三、实验内容及结果(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1. 图像缩放分析:imresize 函数功能:用于对图像做缩放处理J1 = imresize(I, Scale, 'nearest') 即将图像I,采用最近邻插值算法,放大(缩小)Scale倍。
J2 = imresize(I, Scale, 'bilinear') 即将图像I,采用双线性插值算法,放大(缩小)Scale倍。
通过改变Scale的大小,可以观察到生成的图像大小随之改变,且放大倍数越大,图像变得越模糊。
在放大相同倍数的情况下,可以观察到采用双线性插值算法的图像更为清晰。
2. 图像旋转分析:imrotate 函数功能:用于对图像做旋转处理J1 = imrotate(I, Theta, 'nearest') 即将图像I,采用最近邻插值算法,绕图像的中心点旋转Theta度,正数表示逆时针旋转,负数表示顺时针旋转,旋转后的图像超出的部分填充0(黑色)。
J2 = imrotate(I, Theta, 'bilinear','crop') 功能同上,不同的是采用了双线性插值算法,'crop'表示通过对旋转后的图像进行裁剪,保持旋转后输出图像的尺寸和输入图像的尺寸一样。
通过改变Theta的大小,可以观察到生成的图像旋转角度随之改变,同时,采用双线性插值算法的图像更为清晰。
3.图像水平镜象分析:flipdim(X,dim),其中X表示一个矩阵,dim指定翻转方式,dim为1,表示按行翻转,2表示按列翻转。
图像变换实验报告实验三图像变换⼀、实验⽬的1、结合实例学习⼏种常见的图像变换,并通过实验体会图像变换的效果;2、理解和掌握图像旋转、缩放、离散傅⾥叶变换和离散余弦变换的原理和应⽤,掌握利⽤MATLAB编程实现图像变换的⽅法。
⼆、实验内容1、图像的⼏何变换,主要实现图像的缩放与旋转,要求变换中⽤最近邻插值算法实现,或⽤双线性变换法实现并⽐较;2、图像的正交变换,主要实现离散傅⾥叶变换(DFT)与离散余弦变换(DCT)。
三、实验要求1、独⽴完成;2、编写MATLAB程序,并对程序中所调⽤函数的功能进⾏必要的说明(可⽤“help 函数名”进⾏查询);3、调试运⾏后保存实验结果(注意保存的⽂件格式);4、完成实验报告。
四、实验原理(⼀)图像的⼏何运算(变换)1、⽐例缩放⽐例缩放是指将给定的图像在x轴⽅向按⽐例缩放fx倍,在y轴⽅向按⽐例缩放fy倍,从⽽获得⼀副新的图像。
在MATLAB中,进⾏图像⽐例缩放的函数是imresize,它的常见调⽤⽅法如下:B=imresize(A,scale)B=imresize(A,[mrows ncols])B=imresize(A,scale,method)其中,A是要进⾏缩放的图像矩阵,scale是进⾏缩放的倍数,如果scale⼩于1,则进⾏缩⼩操作,如果scale⼤于1,则进⾏放⼤操作。
[mrows ncols]⽤于指定缩放后图像的⾏数和列数,method ⽤于指定的图像插值⽅法,有nearest、bilinear、bicubic 等算法。
2、图像旋转⼀般的旋转是以图像的中⼼为原点,将图像上的所有像素都旋转⼀个相同的⾓度。
在MATLAB中,进⾏图像旋转的函数是imrotate,它的常见调⽤⽅法如下:B=imrotate(A,angle)B=imrotate(A,angle,method)B=imrotate(A,angle,method,bbox)其中,A是要旋转的图像,angle是旋转的⾓度;method是插值⽅法,可以为nearest、bilinear、bicublic等;bbox是指旋转后的显⽰⽅式,有两种选择,⼀种是crop,旋转后的图像效果跟原图像⼀样⼤⼩,⼀种是loose,旋转后的图像包含原图。
实验一、图像几何变换一、实验目的1结合实例学习如何在视频显示程序中增加图像处理算法;2理解和掌握图像的平移、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用;二、实验原理1 初始坐标为(x , y )的点经过平移(0x ,0y ),坐标变为('x ,'y ),两点之间的关系为:⎩⎨⎧+=+=00''y y y x x x ,以矩阵形式表示为: ⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 0y 1 0 0 11''00y x x y x 2 图像的镜像变换是以图象垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换,两者的矩阵形式分别为:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1 0 0 0 11''y x y x ⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1- 0 0 0 11''y x y x 3 图像缩小和放大变换矩阵相同:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 0 0 0 1''y x y x S S y x 当1 ,1≤≤y x S S 时,图像缩小;1 ,1≥≥y x S S 时,图像放大。
MA TLAB 图像处理工具箱支持四种基本图像类型: 索引图像、灰度图像、二进制图像和RGB 图像。
MA TLAB 直接从图像文件中读取的图像为RGB 图像。
它存储在三维数组中。
这个三维数组有三个面,依次对应于红(Red)、绿(Green)、蓝(Blue)三种颜色,而面中的数据则分别是这三种颜色 的强度值,面中的元素对应于图像中的像素点。
设所得矩阵为X 三维矩阵(256,256,3) ,X(:,:,1)代表红颜色的2维矩阵 X(:,:,2)代表绿颜色的2维矩阵,X(:,:,3)代表兰颜色的2维矩阵。
实验二、图像几何变换一、实验目的1结合实例学习如何在视频显示程序中增加图像处理算法;2理解和掌握图像的平移、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用;二、实验原理1 初始坐标为(x , y )的点经过平移(0x ,0y ),坐标变为('x ,'y ),两点之间的关系为:⎩⎨⎧+=+=00''y y y x x x ,以矩阵形式表示为:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡110 0y 1 0 0 11''00y x x y x 2 图像的镜像变换是以图象垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换,两者的矩阵形式分别为:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1 0 0 0 11''y x y x ⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1- 0 0 0 11''y x y x 3 图像缩小和放大变换矩阵相同:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 0 0 0 1''y x y x S S y x 当1 ,1≤≤y x S S 时,图像缩小;1 ,1≥≥y x S S 时,图像放大。
4 图像旋转定义为以图像中某一点为原点以逆时针或顺时针方向旋转一定角度。
其变换矩阵为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 cos sin 0 sin cos 1''y x y x θθθθ 该变换矩阵是绕坐标轴原点进行的,如果是绕一个指定点(b a ,)旋转,则现要将坐标系平移到该点,进行旋转,然后再平移回到新的坐标原点。
三、实验步骤1 启动MA TLAB 程序,对图像文件分别进行平移、垂直镜像变换、水平镜像变换、缩放和旋转操作,与实验箱运行结果进行比对;2 记录和整理实验报告四、实验仪器1计算机;2 MA TLAB程序;3 SEED-DTK_CPM642实验箱4记录用的笔、纸。
图像的几何变换一、实验目的1、掌握图像几何变换的基本原理2、掌握如何利用Matlab相应函数对图像进行几何变换(图像缩小、放大、旋转等)3、学会自己编写简单几何变换的程序二、实验内容1、对所选图像进行缩小操作2、对所选图像进行放大操作3、对所选图像进行旋转操作三、实验过程源程序及图像:p1=imread('moon.tif ');info=imfinfo('moon.tif');W=info.Width;H=info.Height;%显示原始图像figure(1);imshow(p1);%使用imresize()函数将原始图像缩小为原图形的0.5倍p2=imresize(p1,0.5);figure(2);imshow(p2);%不使用imresize()函数将原始图像缩小为原图形的0.5倍c=2;i=1:W./c;j=1:H./c;I=floor(c*i); J=floor(c*j);p3(j,i)=p1(J,I);figure(3);imshow(p3);%使用imresize()函数将原始图像放大为原图形的2倍p4=imresize(p1,2);figure(4);imshow(p4);%将原始图形旋转30度显示p6=imrotate(p1,30);figure(6);imshow(p6);%对旋转的图形进行插值计算p8=imrotate(p1,30,'bilinear');figure(8);imshow(p8);注:与图六中未标明插值结果相同,即Matlab中使用的函数会自动对变换后的图像进行插值计算。
10、图像的⼏何变换——平移、镜像、缩放、旋转、仿射变换1.⼏何变换的基本概念 图像⼏何变换⼜称为图像空间变换,它将⼀副图像中的坐标位置映射到另⼀幅图像中的新坐标位置。
我们学习⼏何变换就是确定这种空间映射关系,以及映射过程中的变化参数。
图像的⼏何变换改变了像素的空间位置,建⽴⼀种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下⾯两种计算:原图像任意像素计算该像素在变换后图像的坐标位置变换后图像的任意像素在原图像的坐标位置对于第⼀种计算,只要给出原图像上的任意像素坐标,都能通过对应的映射关系获得到该像素在变换后图像的坐标位置。
将这种输⼊图像坐标映射到输出的过程称为“向前映射”。
反过来,知道任意变换后图像上的像素坐标,计算其在原图像的像素坐标,将输出图像映射到输⼊的过程称为“向后映射”。
但是,在使⽤向前映射处理⼏何变换时却有⼀些不⾜,通常会产⽣两个问题:映射不完全,映射重叠映射不完全输⼊图像的像素总数⼩于输出图像,这样输出图像中的⼀些像素找不到在原图像中的映射。
上图只有(0,0),(0,2),(2,0),(2,2)四个坐标根据映射关系在原图像中找到了相对应的像素,其余的12个坐标没有有效值。
映射重叠根据映射关系,输⼊图像的多个像素映射到输出图像的同⼀个像素上。
上图左上⾓的四个像素(0,0),(0,1),(1,0),(1,1)都会映射到输出图像的(0,0)上,那么(0,0)究竟取那个像素值呢?要解决上述两个问题可以使⽤“向后映射”,使⽤输出图像的坐标反过来推算改坐标对应于原图像中的坐标位置。
这样,输出图像的每个像素都可以通过映射关系在原图像找到唯⼀对应的像素,⽽不会出现映射不完全和映射重叠。
所以,⼀般使⽤向后映射来处理图像的⼏何变换。
从上⾯也可以看出,向前映射之所以会出现问题,主要是由于图像像素的总数发⽣了变化,也就是图像的⼤⼩改变了。
在⼀些图像⼤⼩不会发⽣变化的变换中,向前映射还是很有效的。
图像几何变换实验报告图像几何变换实验报告引言:图像几何变换是计算机视觉领域的重要研究方向之一。
通过对图像进行旋转、缩放、平移等变换操作,可以改变图像的形状、大小和位置,从而实现图像处理和分析的目的。
本实验旨在通过编程实现常见的图像几何变换算法,并对其效果进行评估和分析。
一、图像旋转变换图像旋转变换是指将图像按照一定的角度进行旋转操作。
在实验中,我们使用了旋转矩阵来实现图像的旋转。
通过调整旋转角度,我们可以观察到图像在不同旋转角度下的变化。
实验结果显示,当旋转角度较小时,图像的形状基本保持不变,但会出现一定程度的畸变。
随着旋转角度的增加,图像的形状逐渐发生变化,出现明显的扭曲和形变现象。
二、图像缩放变换图像缩放变换是指改变图像的尺寸大小。
在实验中,我们通过调整缩放系数来实现图像的缩放操作。
实验结果表明,当缩放系数小于1时,图像会变小,细节信息会丢失;而当缩放系数大于1时,图像会变大,但可能会出现像素过度拉伸的情况。
因此,在进行图像缩放时,需要根据实际需求选择合适的缩放系数,以保证图像的质量和清晰度。
三、图像平移变换图像平移变换是指将图像沿着水平或垂直方向进行移动操作。
在实验中,我们通过调整平移距离来实现图像的平移。
实验结果显示,当平移距离较小时,图像的位置变化不明显;而当平移距离较大时,图像的位置会发生明显的偏移。
因此,在进行图像平移时,需要根据实际需求选择合适的平移距离,以确保图像的位置调整符合预期。
四、图像仿射变换图像仿射变换是指通过线性变换和平移变换来改变图像的形状、大小和位置。
在实验中,我们通过调整仿射变换矩阵的参数来实现图像的仿射变换。
实验结果表明,仿射变换可以实现图像的旋转、缩放和平移等多种操作,且变换后的图像形状基本保持不变。
然而,当仿射变换矩阵的参数设置不当时,可能会导致图像的形变和失真现象。
五、图像透视变换图像透视变换是指通过透视投影将图像从一个平面映射到另一个平面。
在实验中,我们通过调整透视变换矩阵的参数来实现图像的透视变换。
计算机科学与工程学院实验(二)实验名称图像几何变换软件环境Windows Visual Studio 2017硬件环境PC实验目的掌握图像的几何变换方法,编程实现图像几何变换。
实验内容(应包括实验题目、实验要求、实验任务等)一、设计新的几何变换方法,分析其几何变换原理。
二、编程实现图像的几何变换。
要求:编程实现图像的几何变换功能。
任务:(1)在左视图中打开一幅bmp位图,包括256色或真彩色位图(2)制作五个【图像的XXX变换】菜单,将消息映射到右视图中,在右视图中进行图像的几何变换功能。
实验过程与实验结果一、设计新的几何变换方法,分析其几何变换原理。
图像配准什么是图像配准?所谓图像配准就是将同一场景的两幅或多幅图像进行对准。
如航空照片的配准,以及在很多人脸自动分析系统中的人脸归一化,即要使各张照片中的人脸具有近似的大小,尽量处于相同的位置。
一般来说,我们以基准图像为参照,并通过一些基准点(fiducial points)找到适当的空间变换关系s和r,对输入图像进行相应的几何变换,从而实现它与基准图像在这些基准点位置上的对齐。
图1:常见的几种配准变换类型//错误提示MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, Message BoxIcon.Stop);}}}效果图:图2-1 平移变换前图2-2 平移变换后{int width = objBitmap.Width;int height = objBitmap.Height;Bitmap bitmap = new Bitmap(width, height);for (int x = 0; x < width; x++){for (int y = 0; y < height; y++){bitmap.SetPixel(x, y, objBitmap.GetPixel(x, height-1-y));}}curBitmap = new Bitmap(bitmap);bitmap.Dispose();this.pictureBox_new.Image = curBitmap;}catch (Exception ex){//错误提示MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBox Icon.Stop);}}效果图:图3-1 水平镜像后图3-2 垂直镜像后3.缩放变换实现步骤:1.获取原图像的Bitmap对象objBitmap,以及其大小参量;2.获取缩放比例系数(X,Y);3.构造一个新Bitmap对象bitmap,宽高为宽*X+1,高*Y+1;4.迭代实现对objBitmap每一个像素点(Pixel)到bitmap的赋值操作:将每个像素点的坐标设置为原坐标/比例系数,如横坐标/X,纵坐标/Y;5.使用bitmap构造全局变量curBitmap,销毁bitmap对象,使用curBitmap初始化右侧显示框。
《数字图像处理》实验指导书 信息科学与工程学院 袁子鹏 网络11-2班 3110757219
实验二、图像的几何变换
一、 实验目的
1掌握图像几何变换的原理;
2 利用MATLAB 实现图像的平移、比例缩放和旋转变换。
二、 实验原理
图像的几何变换包括:图像的空间平移、比例缩放、旋转、仿射变换和图像插值。
图像几何变换的实质:改变像素的空间位置,估算新空间位置上的像素值。
图像几何变换的一般表达式:[,][(,),(,)]u v X x y Y x y = ,其中,[,]u v 为变换后图像像素的笛卡尔坐标, [,]x y 为原始图像中像素的笛卡尔坐标。
这样就得到了原始图像与变换后图像的像素的对应关系。
平移变换:若图像像素点 (,)x y 平移到 00(,)x x y y ++,则变换函数为 0(,)u X x y x x ==+, 0(,)v Y x y y y ==+,写成矩阵表达式为:
00x u x y v y ⎡⎤⎡⎤⎡⎤=+⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
其中,x 0和y 0分别为x 和y 的坐标平移量。
比例缩放:若图像坐标 (,)x y 缩放到( ,x y s s )倍,则变换函数为:
00x y s u x s v y ⎡⎤⎡⎤⎡⎤=⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
⎣⎦ 其中, ,x y s s 分别为x 和y 坐标的缩放因子,其大于1表示放大,小于1表示缩小。
旋转变换:将输入图像绕笛卡尔坐标系的原点逆时针旋转θ角度,则变换后图像坐标为: cos sin sin cos u x v y θ-θ⎡⎤⎡⎤⎡⎤=⎢⎥⎢⎥⎢⎥θθ⎣⎦⎣⎦⎣⎦
三、 实验步骤
1打开Matlab ,程序组中“work ”文件夹中应有待处理的图像文件;
2编写函数,对图像进行平移变换,使图像平移横坐标偏移量x 和纵坐标偏移量y ; 3编写函数,对图像进行比例缩放,使图像缩放横坐标偏移量x 和纵坐标偏移量y ; 4 编写函数,对图像进行旋转变换,使图像旋转某个角度angle ;
5 利用上面的函数,对一幅图像完成以下几何变换:先对x 方向缩小0.5倍,y 方向缩小0.25倍,然后平移[20,20],最后旋转90度。
6记录和整理实验报告。
函数定义:
function J=translate(I, x, y) %平移量x 和y
图象变换 imtransform
g = imtransform(f,tform,interp)
f - 原始图象
tform - 变换矩阵,使用maketform构造
interp –插值方法(nearest,bilinear,bicubic)
平移坐标范围扩大:
J = imtransform(h,tform,'XData',[1 size(I,2)+x],'YData',[1 size(I,1)+y],'FillValues',255);
四、实验仪器
1计算机;
2 MA TLAB程序;
3移动式存储器(软盘、U盘等);
4记录用的笔、纸。
五、思考题
1 Matlab中如何对图像进行几何变换?
2编写函数,对图像进行平移变换,使图像平移横坐标偏移量x和纵坐标偏移量y;
实验结果:
3编写函数,对图像进行比例缩放,使图像缩放横坐标偏移量x和纵坐标偏移量y;
实验结果:
4 编写函数,对图像进行旋转变换,使图像旋转某个角度angle;
实验结果:
5 利用上面的函数,对一幅图像完成以下几何变换:先对x方向缩小0.5倍,y方向缩小0.25倍,然后平
移[20,20],最后旋转90度。
实验结果:
实验总结:这次实验感觉比上次难啊,一堆公式不知所云,让我了解到要学习好这门课程不仅仅要熟练的编程能力,也要一定的数学数学知识。
不过通过这次实验也知道了怎么利用MATLAB实现图像的平移、比例缩放和旋转变换,感觉还是很有成就感的。