数字图像处理实验四图像几何变换
数字图像处理实验报告
![数字图像处理实验报告](https://img.taocdn.com/s3/m/649fb1fe7e192279168884868762caaedd33bafd.png)
数字图像处理实验报告数字图像处理实验报告1一. 实验内容:主要是图像的几何变换的编程实现,具体包括图像的读取、改写,图像平移,图像的镜像,图像的转置,比例缩放,旋转变换等.具体要求如下:1.编程实现图像平移,要求平移后的图像大小不变;2.编程实现图像的镜像;3.编程实现图像的转置;4.编程实现图像的比例缩放,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的缩放效果;5.编程实现以任意角度对图像进行旋转变换,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的旋转效果.二.实验目的和意义:本实验的目的是使学生熟悉并掌握图像处理编程环境,掌握图像平移、镜像、转置和旋转等几何变换的方法,并能通过程序设计实现图像文件的读、写操作,及图像平移、镜像、转置和旋转等几何变换的程序实现.三.实验原理与主要框架:3.1 实验所用编程环境:Visual C++(简称VC)是微软公司提供的基于C/C++的应用程序集成开发工具.VC拥有丰富的功能和大量的扩展库,使用它能有效的创建高性能的Windows应用程序和Web应用程序.VC除了提供高效的C/C++编译器外,还提供了大量的可重用类和组件,包括著名的微软基础类库(MFC)和活动模板类库(ATL),因此它是软件开发人员不可多得的开发工具.VC丰富的功能和大量的扩展库,类的重用特性以及它对函数库、DLL库的支持能使程序更好的模块化,并且通过向导程序大大简化了库资源的使用和应用程序的开发,正由于VC具有明显的优势,因而我选择了它来作为数字图像几何变换的开发工具.在本程序的开发过程中,VC的核心知识、消息映射机制、对话框控件编程等都得到了生动的体现和灵活的应用.3.2 实验处理的对象:256色的BMP(BIT MAP )格式图像BMP(BIT MAP )位图的文件结构:具体组成图: BITMAPFILEHEADER位图文件头(只用于BMP文件) bfType=”BM” bfSize bfReserved1bfReserved2bfOffBitsbiSizebiWidthbiHeightbiPlanesbiBitCountbiCompressionbiSizeImagebiXPelsPerMeterbiYPelsPerMeterbiClrUsedbiClrImportant单色DIB有2个表项16色DIB有16个表项或更少256色DIB有256个表项或更少真彩色DIB没有调色板每个表项长度为4字节(32位)像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍BITMAPINFOHEADER 位图信息头 Palette 调色板 DIB Pixels DIB图像数据1. BMP文件组成BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成.2. BMP文件头BMP文件头数据结构含有BMP文件的类型(必须为BMP)、文件大小(以字节为单位)、位图文件保留字(必须为0)和位图起始位置(以相对于位图文件头的偏移量表示)等信息.3. 位图信息头BMP位图信息头数据用于说明位图的尺寸(宽度,高度等都是以像素为单位,大小以字节为单位, 水平和垂直分辨率以每米像素数为单位) ,目标设备的级别,每个像素所需的位数, 位图压缩类型(必须是 0)等信息.4. 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色.具体包含蓝色、红色、绿色的亮度(值范围为0-255)位图信息头和颜色表组成位图信息5. 位图数据位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上.Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充.3.3 BMP(BIT MAP )位图的显示:①一般显示方法:1. 申请内存空间用于存放位图文件2. 位图文件读入所申请内存空间中3. 在函数中用创建显示用位图, 用函数创建兼容DC,用函数选择显示删除位图但以上方法的缺点是: 1)显示速度慢; 2) 内存占用大; 3) 位图在缩小显示时图形失真大,(可通过安装字体平滑软件来解决); 4) 在低颜色位数的设备上(如256显示模式)显示高颜色位数的图形(如真彩色)图形失真严重.②BMP位图缩放显示 :用视频函数来显示位图,内存占用少,速度快,而且还可以对图形进行淡化(Dithering )处理.淡化处理是一种图形算法,可以用来在一个支持比图像所用颜色要少的设备上显示彩色图像.BMP位图显示方法如下:1. 打开视频函数,一般放在在构造函数中2. 申请内存空间用于存放位图文件3. 位图文件读入所申请内存空间中4. 在函数中显示位图5. 关闭视频函数 ,一般放在在析构函数中以上方法的优点是: 1)显示速度快; 2) 内存占用少; 3) 缩放显示时图形失真小,4) 在低颜色位数的设备上显示高颜色位数的图形图形时失真小; 5) 通过直接处理位图数据,可以制作简单动画.3.4 程序中用到的访问函数Windows支持一些重要的DIB访问函数,但是这些函数都还没有被封装到MFC中,这些函数主要有:1. SetDIBitsToDevice函数:该函数可以直接在显示器或打印机上显示DIB. 在显示时不进行缩放处理.2. StretchDIBits函数:该函数可以缩放显示DIB于显示器和打印机上.3. GetDIBits函数:还函数利用申请到的内存,由GDI位图来构造DIB.通过该函数,可以对DIB的格式进行控制,可以指定每个像素颜色的位数,而且可以指定是否进行压缩.4. CreateDIBitmap函数:利用该函数可以从DIB出发来创建GDI 位图.5. CreateDIBSection函数:该函数能创建一种特殊的DIB,称为DIB项,然后返回一个GDI位图句柄.6. LoadImage函数:该函数可以直接从磁盘文件中读入一个位图,并返回一个DIB句柄.7. DrawDibDraw函数:Windows提供了窗口视频(VFW)组件,Visual C++支持该组件.VFW中的DrawDibDraw函数是一个可以替代StretchDIBits 的函数.它的最主要的优点是可以使用抖动颜色,并且提高显示DIB的速度,缺点是必须将VFW代码连接到进程中.3.5 图像的几何变换图像的几何变换,通常包括图像的平移、图像的镜像变换、图像的转置、图像的缩放和图像的旋转等.数字图像处理实验报告2一、实验的目的和意义实验目的:本实验内容旨在让学生通过用VC等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。
《数字图像处理》图像的几何变换
![《数字图像处理》图像的几何变换](https://img.taocdn.com/s3/m/56e3da77168884868662d60c.png)
数字图像处理----图像的几何变换杨淑莹教授天津理工大学计算机与通信工程学院图像的几何变换图像的转置 图像的缩放1.图像的转置1)理论基础图像的转置(Transpose)操作是将图像像素的x坐标和y坐标互换。
该操作将改变图像的高度和宽度,转置后图像的高度和宽度将互换。
x1=y0y1=x02)理论验证图3-6 图像转置3)流程设计(1) 取得原图的数据区指针。
(2) 通过对话框输入偏移量tx,ty。
(3) 开辟一个同样大小的缓冲区。
(4) 对原图依次循环每个像素,每读入一个像素点(x0,y0),根据它的坐标,找到目标图像的位置(x1=y0,y1=x0),将像素(x0,y0)处的颜色值赋给新图中的(x1,y1)。
4)编程实现for(j= 0; j < height; j++)// 针对每行图像每列进行操作for(i = 0; i < wide;i++){// 指向源DIB第j行,第i个象素的指针lpSrc= (LPBYTE)p_data+ lLineBytes* j + i;// 指向转置DIB第i行,第j个象素的指针// 注意此处wide和height是源DIB的宽度和高度,应该互换lpDst= (LPBYTE)temp + lNewLineBytes* i+ j;// 复制象素*lpDst= *lpSrc;}2.图像的缩放理论基础假设图像X轴方向缩放比率是kx,Y轴方向缩放比率是ky,那么原图中点(x0,y0)对应与新图中的点(x1,y1)为:x1=x0*kxy1=y0*ky当kx>1且ky>1时,原图像被放大。
放大图像时,产生了新的像素,可通过插值算法来近似处理。
例如:当kx=ky=2时,图像放大2倍,原图中的某一个像素,对应新图的4个像素。
●●●●●(a)原图中的某一个像素(b)对应新图的4个像素图3-3 图像放大示意图当kx<1且ky<1时,原图像被缩小。
数字图像处理实验报告-线性灰度变换-图像几何变换-频域图像增强技术-图像分割
![数字图像处理实验报告-线性灰度变换-图像几何变换-频域图像增强技术-图像分割](https://img.taocdn.com/s3/m/4aa6294169eae009581becb4.png)
线性灰度变换一、实验目的1结合实例学习如何在视频显示程序中增加图像处理算法;2理解和掌握图像的线性变换和直方图均衡化的原理和应用;3了解平滑处理的算法和用途,学习使用均值滤波、中值滤波和拉普拉斯锐化进行图像增强处理的程序设计方法;4 了解噪声模型及对图像添加噪声的基本方法。
二、实验原理1 灰度线性变换就是将图像中所有点的灰度按照线性灰度变换函数进行变换。
)],([),(y x f T y x g =⎪⎩⎪⎨⎧<≤+-<≤+-≤≤=255),(]),([),( ]),([),(0 ),(),(y x f b g b y x f b y x f a g a y x f a y x f y x f y x g b a γβαn y m x ,2,1 ,,,2,1==2 直方图均衡化通过点运算将输入图像转换为在每一级上都有相等像素点数的输出图像。
按照图像概率密度函数PDF 的定义:1,...,2,1,0 )(-==L k nn r p k k r 通过转换公式获得:1,...,2,1,0 )()(00-====∑∑==L k n n r p r T s k j k j j j r k k3 均值(中值)滤波是指在图像上,对待处理的像素给定一个模板,该模板包括了其周围的临近像素。
将模板中的全体像素的均值(中值)来代替原来像素值的方法。
4 拉普拉斯算子如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--------111181111 拉普拉斯算子首先将自身与周围的8个像素相减,表示自身与周围像素的差异,再将这个差异加上自身作为新像素的灰度。
三、实验步骤1 启动MATLAB 程序,对图像文件分别进行灰度线性变换(参考教材57页,例4.1)、直方图均衡化(参考教材64页,例4.6)、均值滤波(参考教材69页,例4.9)、中值滤波(参考教材73页,例4.11)和梯度锐化操作(参考教材76页,例4.12)。
添加噪声,重复上述过程观察处理结果。
数字图像处理---图像的几何变换
![数字图像处理---图像的几何变换](https://img.taocdn.com/s3/m/f365df33dc36a32d7375a417866fb84ae45cc3bd.png)
数字图像处理---图像的⼏何变换图像的⼏何变换图像的⼏何变换包括了图像的形状变换和图像的位置变换图像的形状变换图像的形状变换是指图像的放⼤、缩⼩与错切图像缩⼩图像的缩⼩是对原有的数据进⾏挑选或处理,获得期望缩⼩尺⼨的数据,并尽量保持原有的特征不消失分为按⽐例缩⼩和不按⽐例缩⼩两种最简单的⽅法是等间隔地选取数据图像缩⼩实现设原图像⼤⼩为M ∗N ,缩⼩为K 1M ∗K 2N (K 1<1,K 2<1)1. 设原图为F (i ,j ),i =1,2,...,M ,j =1,2,...,N ;压缩后地图像为G (x ,y ),x =1,2,...,k 1M ,y =1,2,...,k 2N2. G (x ,y )=F (c 1∗i ,c 2∗j );其中,c 1=1/k 1,c 2=1/k 2图像放⼤图像放⼤时对多出的空位填⼊适当的值,是信息的估计最简单的思想是将原图像中的每个像素放⼤为k ∗k 的⼦块图像放⼤实现设原图像⼤⼩为M ∗N ,缩⼩为K 1M ∗K 2N (K 1>1,K 2>1)1. 设原图为F (i ,j ),i =1,2,...,M ,j =1,2,...,N ;压缩后地图像为G (x ,y ),x =1,2,...,k 1M ,y =1,2,...,k 2N2. G (x ,y )=F (c 1∗i ,c 2∗j );其中,c 1=1/k 1,c 2=1/k 2图像错切图像错切变换实际上是平⾯景物在投影平⾯上的⾮垂直投影效果图像错切的数学模型x ′=x +d x y y ′=y(x ⽅向的错切,dx =tan θ)x ′=x y ′=y +d y x(y ⽅向的错切,dy =tan θ)图像的位置变换图像的位置变换是指图像的平移、镜像与旋转,即图像的⼤⼩和形状不发⽣变化主要⽤于⽬标识别中的⽬标配准图像平移公式:{{x ′=x +Δx y ′=y +Δy图像镜像图像镜像分为⽔平镜像和垂直镜像,即左右颠倒和上下颠倒公式:图像⼤⼩为M*Nx ′=x y ′=−y (⽔平镜像)x ′=−x y ′=y(垂直镜像)由于不能为负,因此需要再进⾏⼀次平移x ′=x y ′=N +1−y (⽔平镜像)x ′=M +1−xy ′=y(垂直镜像)图像旋转公式:x ′=xcos θ−ysin θy ′=xsin θ+ycos θ由于计算结果值所在范围与原有值不同,因此需要在进⾏扩⼤画布、取整、平移等处理画布扩⼤原则:以最⼩的⾯积承载全部的画⾯信息⽅法:根据公式x ′=xcos θ−ysin θy ′=xsin θ+ycos θ计算x ′min ,x ′max ,y ′min ,y ′max旋转后可能导致像素之间相邻连接不再连续,因此需要通过增加分辨率的⽅式填充空洞插值最简单的⽅式就是⾏插值(列插值)⽅法1. 找出当前⾏的最⼩和最⼤的⾮背景点坐标,记作:(i,k1)、(i,k2)2. 在(k1,k2)范围内进⾏插值,插值⽅法为空点的像素值等于前⼀点的像素值3. 重复上述操作直⾄没有空洞图像的仿射变换图像的仿射变换即通过通⽤的仿射变换公式,表⽰⼏何变换{{{{{{{齐次坐标原坐标为(x,y),定义齐次坐标为(wx,wy,w)实质上是通过增加坐标量来解决问题仿射变换通式通过齐次坐标定义仿射变换通式为x ′=ax +by +Δx y ′=cx +dy +Δy⇒x ′y ′=a b Δx c dΔyx y⼏何变换表⽰1. 平移x ′y ′1=10Δx 01Δy 001x y12. 旋转x ′y ′1=cos θ−sin θ0sin θcos θ0001x y 13. ⽔平镜像x ′y ′1=−10001001x y14. 垂直镜像x ′y ′1=1000−10001x y15. 垂直错切x ′y ′1=1d x 00−10001x y16. ⽔平错切x ′y ′1=100d y −10001x y1图像的⼏何校正由于图像成像系统的问题,导致拍摄的图⽚存在⼀定的⼏何失真⼏何失真分为{[][][][][][][][][][][][][][][][][][][][][]1. 系统失真:有规律的、可预测的2. ⾮系统失真:随机的⼏何校正的基本⽅法是先建⽴⼏何校正的数学模型,其次利⽤已知条件确定模型参数,最后根据模型对图像进⾏⼏何校正步骤:1. 图像空间坐标的变换2. 确定校正空间各像素的灰度值(灰度内插)途径:1. 根据畸变原因,建⽴数学模型2. 参考点校正法,根据⾜够多的参考点推算全图变形函数空间坐标变换实际⼯作中利⽤⼀幅基准图像f(x,y),来校正失真图像g(x′,y′)根据⼀些控制点对,建⽴两幅图像之间的函数关系,通过坐标变换,以实现失真图像的⼏何校正两幅图像上的f(x,y)=g(x′,y′)时,称其为对应像素(同名像素)通过表达式x′=h1(x,y)y′=h2(x,y)表⽰两幅图像之间的函数关系通常⽤多项式x′=n∑i=0n−i∑j=0a ij x i y jy′=n∑i=0n−i∑j=0b ij x i y j来近似h1(x,y)、h2(x,y)当多项式系数n=1时,畸变关系为线性变换x′=a00+a10x+a01yy′=b00+b10x+b01y六个未知数需要⾄少三个已知点来建⽴⽅程式当多项式系数n=2时,畸变关系式为x′=a00+a10x+a01y+a20x2+a11xy+a02y2y′=b00+b10x+b01y+b20x2+b11xy+b02y2 12个未知数需要⾄少6个已知点来建⽴⽅程式当超过已知点数⽬超过要求时,通过最⼩⼆乘法求解n=2时多项式通式为B2∗n=H2∗6A6∗n(n为待求点数)B2∗n=x′1x′2⋯x′n y′1y′2⋯y′n{ []H 2∗6=a 00a 10a 01a 20a 11a 02b 00b 10b 01b 20b 11b 02A 6∗n =11⋯1x 1x 2⋯x n y 1y 2⋯y n x 21x 22⋯x 2n x 1y 1x 2y 2⋯x n y ny 21y 22⋯y 2n同名点对要求1. 数量多且分散2. 优先选择特征点直接法利⽤已知点坐标,根据x ′=h 1(x ,y )y ′=h 2(x ,y )⇒x =h ′1(x ′,y ′)y =h ′2(x ′,y ′)x =n ∑i =0n −i∑j =0a ′ij x ′i y′jy =n ∑i =0n −i∑j =0b ′ijx ′i y ′j解求未知参数;然后从畸变图像出发,根据上述关系依次计算每个像素的校正坐标,同时把像素灰度值赋予对应像素,⽣成校正图像由于像素分布的不规则,导致出现像素挤压、疏密不均等现象,因此最后还需要进⾏灰度内插,⽣成规则图像间接法间接法通过假定⽣成图像的⽹格交叉点,从⽹格交叉点(x,y)出发,借助已知点求取未知参数,根据x ′=n ∑i =0n −i∑j =0a ij x i y jy ′=n ∑i =0n −i∑j =0b ij x i y j推算⽹格交叉点(x,y)对应畸变图像坐标(x',y'),由于对应坐标⼀般不为整数,因此需要通过畸变图像坐标周围点的灰度值内插求解,作为⽹格交叉点(x,y)的灰度值间接法相对直接法内插较为简单,因此常采⽤间接法作为⼏何校正⽅法像素灰度内插最近邻元法最近邻元法即根据四邻域中最近的相邻像素灰度决定待定点灰度值该⽅法效果较佳,算法简单,但是校正后图像存在明显锯齿,即存在灰度不连续性双线性内插法[][]{{双线性内插法是利⽤待求点四个邻像素的灰度在两个⽅向上作线性内插该⽅法相较最近邻元法更复杂,计算量更⼤,但是没有灰度不连续的缺点,且具有低通滤波性质,图像轮廓较为模糊三次内插法三次内插法利⽤三次多项式S(x)来逼近理论最佳插值函数sin(x)/xS(x)=1−2|x|2+|x|30≤|x|<1 4−8|x|+5|x|2−|x|31≤|x|<20|x|≥2该算法计算量最⼤,但是内插效果最好,精度最⾼{Processing math: 100%。
实验4 图像几何变换—哈哈镜制作
![实验4 图像几何变换—哈哈镜制作](https://img.taocdn.com/s3/m/30e8dfa80029bd64783e2c41.png)
switch(method)
{
//最邻近插值图像缩小
caseDOWNRESIZE:
size = cvSize(q*pImg->width,q*pImg->height);
pImg1 = cvCreateImage(size,pImg->depth,pImg->nChannels);
for(j=0;j<pImg1->width;j++)
{
floatsrcX=(float)(j*((float)pImg->width/(float)pImg1->width));
floatsrcY=(float)(i*((float)pImg->height/(float)pImg1->height));
#defineRANGE 100//水平外凹或外凸的幅度
#definePI 3.1415926
//哈哈镜制作
intmain(intargc,char** argv )
{
IplImage* pImg;//声明IplImage指针
IplImage* pImg1;//声明IplImage指针
inti,j;
caseHORAO:
pImg1 = cvCreateImage(cvGetSize(pImg),pImg->depth,pImg->nChannels);
for(i=0;i<pImg1->height;i++)
{
tmp = RANGE*sin(i*PI/pImg1->height);
实验四数字图像几何变换
![实验四数字图像几何变换](https://img.taocdn.com/s3/m/91946efae009581b6bd9ebe6.png)
实验四数字图像几何变换一、实验目的1.熟悉并掌握图像几何变换的方法以及编程实现方法。
2.对前几次实验总结和回顾。
二、实验内容图像的缩放、旋转、镜像、转置。
三、实验原理图像缩放:图像缩放是指对数字图像的大小进行调整的过程,需要在处理效率以及结果的平滑度和清晰度上做一个权衡。
当一个图像的大小增加之后,组成图像的像素的可见度将会变得更高。
相反地,缩小一个图像将会增强它的平滑度和清晰度。
图像旋转:把原图像像素从原点(x,y)放到目标位置点上(x',y'),这个(x,y)到(x',y')的转换是经过旋转计算而来的,这个图像处理就是旋转。
图像镜像:假设(x0,y0)为原图像上一点,图像水平平移量为tx,垂直平移量为ty,平移后的点为(x1,y1) x1=x0+tx,y1=y0+ty,转换后x0=x1-tx;y0=y1-ty 。
图像转置:是指将图像像素的x坐标y坐标互换。
四、实验步骤图像缩放编程实现图像的缩放时的缩放系数可调,分别用两个变量或一个向量保存水平和垂直方向上的缩放系数,显示图像处理结果。
图像旋转图像的旋转都是基于矩阵像素来显示,在这里我选择的是四十五度,如上图。
图像镜像图像上的每个点在设定一个水平平移量和垂直平移量后平移,变成与原图相反的图像,但是在图像的质量和其他变量不变,如上图。
图像转置转置是互换x y坐标,跟旋转有区别,五、实验总结这一次的实验比较简单,也许是有了前几次的经验了吧。
图像的缩放、旋转、镜像、转置,在日常生活中经常遇见,但是在这次实验中,我们了解到其正真原理,彻底认识了它们,改变了以前对图像缩放、旋转、镜像、转置的认识,更透彻,更正确,更准确。
数字图象处理 第4章 图像的几何变换
![数字图象处理 第4章 图像的几何变换](https://img.taocdn.com/s3/m/8bc592fbfab069dc502201a9.png)
数字图像处理基础山东大学威海分校信息工程学院张亚涛讲师第四章图像几何变换几何变换基础1图像的位置变换2图像的形状变换34图像错切5三维图像的投影变换1 几何变换基础—一些概念一些概念1 图像的几何变换:是指用数学建模的方法来描述图像的位置,大小,形状等变换的方法,是通过数学建模实现对数字图像进行几何变换处理。
2 几何变换内容:图像的空间平移、比例缩放、旋转、仿射变换和图像插值。
3 几何变换实质:改变像素的空间位置或估算新空间位置上的像素值。
说明:[u,v]为变换后图像像素的笛卡尔坐标,[x,y]为原始图像中像素的笛卡尔坐标。
这样就得到了原始图像与变换后图像的像素的对应关系。
如果,则有,即变换后图像仅是原图像简单拷贝。
注意,几何变换不改变像素值,而是改变像素所在的位置。
这说明像素的亮度和色彩并不变化,仅仅是像素位置发生改变。
1 几何变换基础—一些概念4图像几何变换的一般表达式:1 几何变换基础—齐次坐标为什么引入齐次坐标?在对图像进行操作时候,经常要对图像连续做几次变换。
例如做了平移后再做旋转,做放缩等等。
因为旋转,放缩等都是线性变换,都可用矩阵表示,这样旋转和放缩就可合并成:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡z y x T z y x '''但是平移变换不能写成矩阵形式,也就不能合并到上式中,因为在直角坐标系中,它不是线性变换。
因此引入齐次坐标。
齐次坐标表示图像的几何变换十分方便。
1 几何变换基础—齐次坐标齐次坐标表示所谓齐次坐标表示法就是用N+1维向量表示N维向量。
线性代数如把平面上的点P=[x,y]放到空间去表示为[X Y H],使得x=X/H,y=Y/H 则称[X Y H」是点P的齐次坐标。
如规定齐次坐标的第三个分量H必须是1,则称为规范齐次坐标。
P=[X,Y」的规范齐次坐标是[x y 1]。
显然,二维空间中描述的点与齐次坐标空间描述的点是一对多的关系。
1 几何变换基础—齐次坐标●二维齐次坐标的一般表示形式为[hX,hY,h]。
数字图像处理图像变换实验报告
![数字图像处理图像变换实验报告](https://img.taocdn.com/s3/m/3107551fc850ad02de8041fe.png)
实验报告实验名称:图像处理姓名:刘强班级:电信1102学号:1404110128实验一图像变换实验——图像点运算、几何变换及正交变换一、实验条件PC机数字图像处理实验教学软件大量样图二、实验目的1、学习使用“数字图像处理实验教学软件系统”,能够进行图像处理方面的简单操作;2、熟悉图像点运算、几何变换及正交变换的基本原理,了解编程实现的具体步骤;3、观察图像的灰度直方图,明确直方图的作用与意义;4、观察图像点运算与几何变换的结果,比较不同参数条件下的变换效果;5、观察图像正交变换的结果,明确图像的空间频率分布情况。
三、实验原理1、图像灰度直方图、点运算与几何变换的基本原理及编程实现步骤图像灰度直方图就是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度分布情况,为图像的相关处理操作提供了基本信息。
图像点运算就是一种简单而重要的处理技术,它能让用户改变图像数据占据的灰度范围。
点运算可以瞧作就是“从象素到象素”的复制操作,而这种复制操作就是通过灰度变换函数实现的。
如果输入图像为A(x,y),输出图像为B(x,y),则点运算可以表示为:B(x,y)=f[A(x,y)]其中f(x)被称为灰度变换(Gray Scale Transformation,GST)函数,它描述了输入灰度值与输出灰度值之间的转换关系。
一旦灰度变换函数确定,该点运算就完全确定下来了。
另外,点运算处理将改变图像的灰度直方图分布。
点运算又被称为对比度增强、对比度拉伸或灰度变换。
点运算一般包括灰度的线性变换、阈值变换、窗口变换、灰度拉伸与均衡等。
图像几何变换就是图像的一种基本变换,通常包括图像镜像变换、图像转置、图像平移、图像缩放与图像旋转等,其理论基础主要就是一些矩阵运算,详细原理可以参考有关书籍。
实验系统提供了图像灰度直方图、点运算与几何变换相关内容的文字说明,用户在操作过程中可以参考。
下面以图像点运算中的阈值变换为例给出编程实现的程序流程图,如下:2、图像正交变换的基本原理及编程实现步骤数字图像的处理方法主要有空域法与频域法,点运算与几何变换属于空域法。
数字图像处理实验四图像几何变换
![数字图像处理实验四图像几何变换](https://img.taocdn.com/s3/m/f0404e5b2a160b4e767f5acfa1c7aa00b52a9d67.png)
数字图像处理实验四图像⼏何变换课程名称数字图像处理与分析实验序号实验4实验项⽬图像⼏何变换实验地点实验学时实验类型指导教师实验员专业班级学号姓名2017年9⽉25⽇成绩:教师评语三、实验软硬件环境装有MATLAB软件的电脑四、实验过程(实验步骤、记录、数据、分析)1、图⽚⽐例缩放代码:I=imread('11.jpg');J=imresize(I,1.25);J2=imresize(I,1.25,'bicubic');imshow(I);figure,imshow(J);figure,imshow(J2);Y=imresize(I,[100150],'bilinear');%Y=imresize(I,[mrows ncols],method)---返回⼀个指定⾏列的图像。
若⾏列⽐与原图不⼀致,输出图像将发⽣变形。
figure,imshow(Y)%nearest,bilinear,bicubic为最近邻插值、双线性插值、双三次插值⽅法。
默认为nearest。
运⾏结果:分析:由实验结果可知,实现了图⽚放⼤和缩⼩的效果。
2、图像旋转J=imrotate(I,32,'bilinear');%J=imrotate(I,angle,method,’crop’)------crop⽤于剪切旋转后增⼤的图像部分,返回和原图⼤⼩⼀样的图象。
imshow(I);figure,imshow(J)运⾏结果:分析:由实验结果可知,实现了图⽚旋转的效果3、图像剪切代码:J=imcrop(I);figure(1),imshow(I);title('yuantu');figure(2),imshow(J);title('croptu')J1=imcrop(I,[604010090]);%对指定区域进⾏剪切操作figure(3),imshow(J1);title('croptu2');运⾏结果:运⾏代码后,出现如下界⾯,选中要裁剪的区域,双击被选中的区域出现以下界⾯:分析:由实验结果可知,选中要裁剪的区域,然后出现两个被裁剪的区域,实验实现了图像剪切的功能。
数字图像处理及MATLAB实现实验四——图像变换
![数字图像处理及MATLAB实现实验四——图像变换](https://img.taocdn.com/s3/m/74ed3194ed3a87c24028915f804d2b160b4e86a3.png)
数字图像处理及MATLAB实现实验四——图像变换1.图像的傅⾥叶变换⼀(平移性质)傅⾥叶变换的平移性质表明了函数与⼀个指数项相乘等于将变换后的空域中⼼移到新的位置,并且平移不改变频谱的幅值。
I=imread('1.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));I=imread('2.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));I=imread('3.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));实验结果符合傅⾥叶变换平移性质2.图像的傅⾥叶变换⼆(旋转性质)%构造原始图像I=zeros(256,256);I(88:168,124:132)=1; %图像范围是256*256,前⼀值是纵向⽐,后⼀值是横向⽐imshow(I)%求原始图像的傅⾥叶频谱J=fft2(I);F=abs(J);J1=fftshift(F);figureimshow(J1,[550])%对原始图像进⾏旋转J=imrotate(I,90,'bilinear','crop');figureimshow(J)%求旋转后图像的傅⾥叶频谱J=fft2(I);F=abs(J);J2=fftshift(F);figureimshow(J2,[550])3.图像的离散余弦变换⼀%对cameraman.tif⽂件计算⼆维DCT变换RGB=imread('cameraman.tif');figure(1)imshow(RGB)I=rgb2gray(RGB);%真彩⾊图像转换成灰度图像J=dct2(I);%计算⼆维DCT变换figure(2)imshow(log(abs(J)),[])%图像⼤部分能量集中在左上⾓处figure(3);J(abs(J)<10)=0;%把变换矩阵中⼩于10的值置换为0,然后⽤idct2重构图像K=idct2(J)/255;imshow(K)4.图像的离散余弦变换⼆% I=imread('1.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% I=imread('2.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% I=imread('3.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% %构造原始图像% I=zeros(256,256);% I(88:168,124:132)=1; %图像范围是256*256,前⼀值是纵向⽐,后⼀值是横向⽐% imshow(I)% %求原始图像的傅⾥叶频谱% J=fft2(I);% F=abs(J);% J1=fftshift(F);figure% imshow(J1,[550])% %对原始图像进⾏旋转% J=imrotate(I,90,'bilinear','crop');% figure% imshow(J)% %求旋转后图像的傅⾥叶频谱% J=fft2(I);% F=abs(J);% J2=fftshift(F);figure% imshow(J2,[550])% %对cameraman.tif⽂件计算⼆维DCT变换% RGB=imread('cameraman.tif');% figure(1)% imshow(RGB)% I=rgb2gray(RGB);% %真彩⾊图像转换成灰度图像% J=dct2(I);% %计算⼆维DCT变换% figure(2)% imshow(log(abs(J)),[])% %图像⼤部分能量集中在左上⾓处% figure(3);% J(abs(J)<10)=0;% %把变换矩阵中⼩于10的值置换为0,然后⽤idct2重构图像% K=idct2(J)/255;% imshow(K)RGB=imread('cameraman.tif');I=rgb2gray(RGB);I=im2double(I); %转换图像矩阵为双精度型T=dctmtx(8); %产⽣⼆维DCT变换矩阵%矩阵T及其转置T'是DCT函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000110000001000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*P2',T',T); %重构图像figure,imshow(T);figure,imshow(B2);figure,imshow(I2);RGB=imread('cameraman.tif');I=rgb2gray(RGB);I=im2double(I); %转换图像矩阵为双精度型T=dctmtx(8); %产⽣⼆维DCT变换矩阵%矩阵T及其转置T'是DCT函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000100000000000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*P2',T',T); %重构图像figure,imshow(T);figure,imshow(B2);figure,imshow(I2);5.图像的哈达玛变换cr=0.5;I=imread('cameraman.tif');I=im2double(I)/255; %将读⼊的unit8类型的RGB图像I转换为double类型的数据figure(1),imshow(I);%显⽰%求图像⼤⼩[m_I,n_I]=size(I); %提取矩阵I的⾏列数,m_I为I的⾏数,n_I为I的列数sizi=8;snum=64;%分块处理t=hadamard(sizi) %⽣成8*8的哈达码矩阵hdcoe=blkproc(I,[sizi sizi],'P1*x*P2',t,t');%将图⽚分成8*8像素块进⾏哈达码变换%重新排列系数CE=im2col(hdcoe,[sizi,sizi],'distinct');%将矩阵hdcode分为8*8互不重叠的⼦矩阵,再将每个⼦矩阵作为CE的⼀列[Y Ind]=sort(CE); %对CE进⾏升序排序%舍去⽅差较⼩的系数,保留原系数的⼆分之⼀,即32个系数[m,n]=size(CE);%提取矩阵CE的⾏列数,m为CE的⾏数,n为CE的列数snum=snum-snum*cr;for i=1:nCE(Ind(1:snum),i)=0;end%重建图像re_hdcoe=col2im(CE,[sizi,sizi],[m_I,n_I],'distinct');%将矩阵的列重新组织到块中re_I=blkproc(re_hdcoe,[sizi sizi],'P1*x*P2',t',t);%进⾏反哈达码变换,得到压缩后的图像re_I=double(re_I)/64; %转换为double类型的数据figure(2);imshow(re_I);%计算原始图像和压缩后图像的误差error=I.^2-re_I.^2;MSE=sum(error(:))/prod(size(re_I));。
《数字图像处理》图像的几何变换实验报告
![《数字图像处理》图像的几何变换实验报告](https://img.taocdn.com/s3/m/dd04ad09dc36a32d7375a417866fb84ae45cc3b2.png)
《数字图像处理》图像的几何变换实验报告1.实验目的掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其 MATLAB 编程实现方法。
2.实验环境MATLAB 6.5 以上版本、WIN XP 或 WIN2000 计算机3.实验内容与要求(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1、图像缩放clear all, close allI = imread('C:\Users\skr\Desktop\lra.png');Scale = 1.35;J1= imresize(I,Scale,'nearest');J2= imresize(I,Scale,'bilinear');imshow(I),title('Original Image');text(60,20,'李荣桉 1909290239','horiz','center','color','r') figure, imshow(J1), title('Resized Image-- using thenearest neighbor interpolation');text(60,20,'李荣桉 1909290239','horiz','center','color','r')figure, imshow(J2), title('Resized Image-- using thebilinear interpolation');text(60,20,'李荣桉 1909290239','horiz','center','color','r')2、图像旋转clear all, close allI = imread('C:\Users\skr\Desktop\lra.png');Theta = 45;J1= imrotate(I,Theta,'nearest');Theta = -45;J2= imrotate(I,Theta,'bilinear','crop');imshow(I),title('Original Image');text(60,20,'李荣桉 1909290239','horiz','center','color','r')figure, imshow(J1), title('Rotated Image-- using thenearest neighbor interpolation');text(60,20,'李荣桉 1909290239 ','horiz','center','color','r')figure, imshow(J2), title(' Rotated Image-- using thebilinear interpolation'); text(60,20,'李荣桉1909290239','horiz','center','color','r')3、图像水平镜像clear all, close allI = imread('C:\Users\skr\Desktop\lra.png');I1 = flipdim(I,2);I2 = flipdim(I,1);figure(1), subplot(1,2,1), imshow(I);text(60,20,'李荣桉 1909290239','horiz','center','color','r')subplot(1,2,2), imshow(I1);text(60,20,'李荣桉 1909290239','horiz','center','color','r')figure(2), subplot(2,1,1), imshow(I);text(60,20,'李荣桉 1909290239','horiz','center','color','r')subplot(2,1,2), imshow(I2);text(60,20,'李荣桉 1909290239','horiz','center','color','r')4、总结通过实验是我掌握图像几何变换的基本原理,能过了解数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB 编程实现方法。
数字图像处理实验 几何变换
![数字图像处理实验 几何变换](https://img.taocdn.com/s3/m/242fc176f46527d3240ce0c2.png)
某学校学生实验报告实验课名称:数字图像处理实验项目名称:几何变换专业名称:班级:学号:学生姓名:教师姓名:年月日实验日期:年月日实验室名称:一.实验名称:图像的几何变换二.实验目的与要求:1.充分了解数字图像的编程环境;2.充分掌握图像的镜像、旋转、缩放等几何变换三.实验内容:1.自编图像显示、存储界面程序;2.对所读入的图像进行镜像、旋转、缩放等几何变换四.实验设备与软件环境:一台电脑和Matlab、VC++环境五.源程序:%镜像代码:T=[-1 0 0; 0 1 0; 0 0 1];A=imread('che.jpg');A1=A;figure; imshow(A1); title('原始图像');t=maketform('affine',T);B=imtransform(A1,t);figure; imshow(B); title('反转图像'); image=[B A];figure; imshow(image); title('镜像图像'); %缩放代码:I1=imread('che.jpg');J=imresize(I,2);figure; imshow(J); title('放大2倍图像'); J2=imresize(I,0.5);figure; imshow(J2); title('缩小0.5图像'); %旋转代码:I=imread('che.jpg');scale=1.1angle=50*pi/180;tx=10;ty=0;sc=scale*cos(angle);ss=scale*sin(angle);T=[sc -ss;ss sc;tx ty];t=maketform('affine',T);I2=imtransform(I,t);figure; imshow(I2); title('旋转图像');六.运行结果与分析七.实验中遇到的问题、解决方法及体会:通过这次实验,我对数字图像处理这门课程有了进一步的认识,掌握了一些简单的图像处理,如镜像、旋转、缩放等几何变换。
图像几何变换实验报告
![图像几何变换实验报告](https://img.taocdn.com/s3/m/0066e2c070fe910ef12d2af90242a8956becaa00.png)
图像几何变换实验报告图像几何变换实验报告引言:图像几何变换是计算机视觉领域的重要研究方向之一。
通过对图像进行旋转、缩放、平移等变换操作,可以改变图像的形状、大小和位置,从而实现图像处理和分析的目的。
本实验旨在通过编程实现常见的图像几何变换算法,并对其效果进行评估和分析。
一、图像旋转变换图像旋转变换是指将图像按照一定的角度进行旋转操作。
在实验中,我们使用了旋转矩阵来实现图像的旋转。
通过调整旋转角度,我们可以观察到图像在不同旋转角度下的变化。
实验结果显示,当旋转角度较小时,图像的形状基本保持不变,但会出现一定程度的畸变。
随着旋转角度的增加,图像的形状逐渐发生变化,出现明显的扭曲和形变现象。
二、图像缩放变换图像缩放变换是指改变图像的尺寸大小。
在实验中,我们通过调整缩放系数来实现图像的缩放操作。
实验结果表明,当缩放系数小于1时,图像会变小,细节信息会丢失;而当缩放系数大于1时,图像会变大,但可能会出现像素过度拉伸的情况。
因此,在进行图像缩放时,需要根据实际需求选择合适的缩放系数,以保证图像的质量和清晰度。
三、图像平移变换图像平移变换是指将图像沿着水平或垂直方向进行移动操作。
在实验中,我们通过调整平移距离来实现图像的平移。
实验结果显示,当平移距离较小时,图像的位置变化不明显;而当平移距离较大时,图像的位置会发生明显的偏移。
因此,在进行图像平移时,需要根据实际需求选择合适的平移距离,以确保图像的位置调整符合预期。
四、图像仿射变换图像仿射变换是指通过线性变换和平移变换来改变图像的形状、大小和位置。
在实验中,我们通过调整仿射变换矩阵的参数来实现图像的仿射变换。
实验结果表明,仿射变换可以实现图像的旋转、缩放和平移等多种操作,且变换后的图像形状基本保持不变。
然而,当仿射变换矩阵的参数设置不当时,可能会导致图像的形变和失真现象。
五、图像透视变换图像透视变换是指通过透视投影将图像从一个平面映射到另一个平面。
在实验中,我们通过调整透视变换矩阵的参数来实现图像的透视变换。
数字图像处理2011 04几何变换
![数字图像处理2011 04几何变换](https://img.taocdn.com/s3/m/e65e7c134431b90d6c85c742.png)
第四章几何变换一、缩小1. 问题缩小:幅面减小,像素减少,图像等比例缩小全部处于幅面中裁剪:幅面减小,像素减少,图像不变,局部处于幅面中,多出部分丢弃。
宽度与高度方向的缩小比例可以不同。
图像缩小的参数:dWidth——缩小后的图像宽度,有dWidth<=WidthdHight——缩小后的图像高度,有dHeight<=Height2. 方法抽点法——采样法平均法3. 采样法程序void Reduce(int dWidth, int dHeight,(BYTE*) &dImageData){int dWidthBytes = (int)((dWidth*3+3)/4)*4;int dImageSize = dWidthBytes*dHeight;dImageData = malloc(dImageSize);float ws = (float)Width/dWidth;float hs = (float)Height/dHeight;int i,j,k,di,dj,dk;for(di=0;di<dHeight;di++) //di新图中的行{dk=dWidthBytes*di; //新图中像素地址i = di*hs+0.5; //原图中的行for(dj=0;dj<dWidth;dj++) //新图中的列{j = dj*ws+0.5; //原图中的列k = WidthBytes*i + 3*j; //原图中像素地址memcpy(dImageData+dk, ImageData+k, 3);dk+=3; //新图中像素地址}}}二、放大图像放大:幅面增大,像素增多,图像等比例放大,占满整个幅面画布放大:幅面增大,图像不变,图像周围为空白画面。
图像放大的参数:dWidth ——放大后的图像宽度,有dWidth>=WidthdHight ——放大后的图像高度,有dHeight>=Height放大处理方法:像素放大法——采样法插值法——线性插值,二次插值,三次插值放大采样法的处理程序与缩小的采样法程序完全相同。
数字图像处理实验报告图像增强处理与几何变换
![数字图像处理实验报告图像增强处理与几何变换](https://img.taocdn.com/s3/m/6b79c4f759f5f61fb7360b4c2e3f5727a5e92492.png)
实验图像增强处理与几何变换一、实验目的利用Matlab图像处理工具箱中的函数实现图像点处理、空间域平滑和锐化处理、彩色图像处理、几何处理,巩固其原理与计算方法学习,深化课程理论认知。
二、实验内容1、图像点处理:灰度变换、直方图均衡化和直方图规定处理;2、图像均值滤波和中值滤波、图像锐化处理;3、图像几何变换处理;4、图像彩色合成和彩色变换处理;三、实验步骤1、图像点处理:灰度变换、直方图均衡化和直方图规定处理;1.1图像的灰度变换启用MATLAB,输入以下代码运行I= imread('cameraman-8.bmp','bmp');figure; subplot(2,2,1), imshow(I);%获取图像直方图subplot(2,2,2),imhist(I);[counts1,x1] = imhist(I);%观察Counts,x的值subplot(2,2,3),stem(x1,counts1);%图像灰度变换J=imadjust(I,[0.1 0.7],[0.0 0.9]);subplot(2,2,4), imshow (J);%对比灰度变换前后的图像及其直方图figure;subplot(2,3,1),imshow(I);subplot(2,3,2),imshow(J);subplot(2,3,4),imhist(I);subplot(2,3,5),imhist(J);[counts2,x2] = imhist(J);subplot(2,3,6), stem(x2,counts2);图 1.1.1图 1.1.21.2图像直方图均衡化启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp','bmp') ;%直方图均衡化处理J=histeq(I) ;%对比均衡化处理前后的图像及其直方图figure(1),subplot(2,2,1),imshow(I),subplot(2,2,2),imshow(J); figure(1),subplot(2,2,3),imhist(I),subplot(2,2,4),imhist(J);图 1.2 1.3直方图规定化启用MATLAB,输入以下代码运行I1=imread('TM5.bmp','bmp');I2=imread('TM3.bmp','bmp');%直方图规定化处理K1=histeq(I1,imhist(I2));%对比规定化处理前后的图像及其直方图figure;subplot(3,2,1),imshow(I1);subplot(3,2,2), imhist(I1);subplot(3,2,3),imshow(I2);subplot(3,2,4), imhist(I2);subplot(3,2,5),imshow(K1);subplot(3,2,6), imhist(K1);图 1.32、图像空间域平滑2.1 用均值滤波器实现图像空间域的平滑启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp','bmp');J=imnoise(I,'gaussian'); %添加高斯噪声K=imnoise(I,'salt & pepper'); %添加椒盐噪声M=imnoise(I,'speckle'); %添加乘性噪声H=ones(3,3)/9; %3*3的均值去噪模板%滤波去噪处理I1=imfilter(I,H);J1=imfilter(J,H);K1=imfilter(K,H);M1=imfilter(M,H) ;%对比线性滤波去噪处理前后的图像figure;subplot(2,4,1),imshow(I);title('原图');subplot(2,4,2),imshow(J); title('高斯噪声图像'); subplot(2,4,3),imshow(K); title('椒盐噪声图像'); subplot(2,4,4),imshow(M); title('乘性噪声图像'); subplot(2,4,6),imshow(J1); title('高斯噪声滤波图像'); subplot(2,4,7),imshow(K1); title('椒盐噪声滤波图像'); subplot(2,4,8),imshow(M1) ; title('乘性噪声滤波图像') ; 输出图像如下图 2.12.2 用中值滤波器实现图像空间域的平滑启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp');I1=imnoise(I,'gaussian');I2=imnoise(I,'salt & pepper',0.02);I3=imnoise(I,'speckle');%3×3中值滤波模板J=medfilt2(I,[3,3]);J1=medfilt2(I1,[3,3]);J2=medfilt2(I2,[3,3]);J3=medfilt2(I3,[3,3]);figure,subplot(2,4,1),imshow(I) ; title('原图') ;subplot(2,4,2),imshow(I1) ; title('添加高斯噪声') ;subplot(2,4,3),imshow(I2) ; title('添加椒盐噪声') ;subplot(2,4,4),imshow(I3) ; title('添加乘性噪声') ;subplot(2,4,6),imshow(J1) ;title('高斯噪声3*3中值滤波') ; subplot(2,4,7),imshow(J2) ;title('椒盐噪声3*3中值滤波') ; subplot(2,4,8),imshow(J3) ;title('乘性噪声3*3中值滤波') ;K=medfilt2(I, [5,5]); %5×5中值滤波模板K1=medfilt2(I1,[5,5]);K2=medfilt2(I2,[5,5]);K3=medfilt2(I3,[5,5]);figure;subplot(2,2,1),imshow(K); title('原图5*5中值滤波'); subplot(2,2,2),imshow(K1) ; title('高斯噪声5*5中值滤波') ; subplot(2,2,3),imshow(K2); title('椒盐噪声5*5中值滤波'); subplot(2,2,4),imshow(K3) ; title('乘性噪声5*5中值滤波'); 输出结果如下图 2.2.1图 2.2.22.3 图像空间域锐化启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp','bmp')H=fspecial('sobel')%用sobel算子做模板%锐化处理J=imfilter(I,H)%锐化处理前后图像对比figure,subplot(1,2,1),imshow(I),subplot(1,2,2),imshow(J); 输出图像如下图 2.33、图像几何变换3.1 缩放启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp', 'bmp') ;%放大图像J=imresize(I,2) ;%缩小图像K=imresize(I,0.5) ;%图像对比figure(1),subplot(),imshow(I),title('原图'),figure(2),subplot(),imshow(J),title('放大两倍的图'),figure(3),subplot(),imshow(K),title('缩小0.5倍的图') ;输出图像如下图 3.1.1 图3.1.2图 3.1.33.2旋转启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp', 'bmp') ;%旋转图像M=imrotate(I,45) ;%图像对比figure;subplot(1,2,1),imshow(I),subplot(1,2,2),imshow(M) ;输出图像如下图 3.24、彩色图像处理4.1彩色合成启用MATLAB,输入以下代码运行I=imread('peppers.bmp','bmp');J1=I; J2=I;J3=I; J4=I;J5=I;%改变J1、J2、J3、J4、J5中的波段次序,组合成新的波段合成J1(:,:,1)=I(:,:,2); J1(:,:,2)=I(:,:,3); J1(:,:,3)=I(:,:,1) ;J2(:,:,1)=I(:,:,1); J2(:,:,2)=I(:,:,3); J2(:,:,3)=I(:,:,2) ;J3(:,:,1)=I(:,:,2); J3(:,:,2)=I(:,:,1); J3(:,:,3)=I(:,:,3) ;J4(:,:,1)=I(:,:,3); J4(:,:,2)=I(:,:,2); J4(:,:,3)=I(:,:,1) ;J5(:,:,1)=I(:,:,3); J5(:,:,2)=I(:,:,1); J5(:,:,3)=I(:,:,2) ;%对比原图像I与新图像J1、J2、J3、J4、J5的彩色差异,理解假彩色合成figure,subplot(2,3,1),imshow(I),title('原图');subplot(2,3,2),imshow(J1),title('变换一') ;subplot(2,3,3),imshow(J2),title('变换二') ;subplot(2,3,4),imshow(J3),title('变换三') ;subplot(2,3,5),imshow(J4),title('变换四') ;subplot(2,3,6),imshow(J5),title('变换五');输出图像如下图4.1 4.2彩色变换启用MATLAB,输入以下代码运行I=imread('peppers.bmp','bmp');HSV=rgb2hsv(I) ;RGB=hsv2rgb(HSV) ;%对比彩色变换前后的图像figure;subplot(1,3,1),imshow(I),title('原图'),subplot(1,3,2),imshow(HSV),title('HSV图像'); subplot(1,3,3),imshow(RGB),title('RGB图像') ;输出结果如下图 4.2四、实验算法要点总结1、图像点处理直方图修正法通常分为直方图均衡化和直方图规定化两类2、图像均值滤波和中值滤波、图像锐化处理3、图像几何变换处理4、图像彩色合成和彩色变换处理通过映射函数将彩色图像或多光谱图像变换成新的三基色分量线性假彩色映射表示为:。
最新【数字图像处理技术与应用】第四章 图像的几何变换幻灯片课件
![最新【数字图像处理技术与应用】第四章 图像的几何变换幻灯片课件](https://img.taocdn.com/s3/m/9eacc6d8581b6bd97e19ea1d.png)
彰,形成合力,促进教书育人功能的巨
大提高。
(横向拓展)
如今,我国的教育因各种原因 而困难重重,若能多几个像焦老师 那样不甘平庸、敢于创新的老师, 拿出更多的新招,我国教育必然能 冲破重重阴霾,走向教育强国的康 庄大道。(联系实际,快速收尾)
讨论: 建立作文框架应注意些什么?
建立基本框架
1.一个响亮的标题 2.引述+表态+观点(150字以内)
引述有针对性。表态坚决、果断而明确。观点呈现不拖泥带水, 要简洁明白。
3.分点分层阐述理由(400字左右) (1)阐述理由时,要具有条理性,就是分点; (2)还要注意内容的层次性:如由浅及深,由表及里,由具体到
抽象等
(3)论证的逻辑性:多用关联词以展示思维的深广度。 4.进一步深入阐述(150字左右)
针对问题提出可行的有时代意义的解决方法,即解决问题。 另外,还可以“横向拓展”“纵向挖掘”和进行简易的批驳。 5.联系实际,快速收尾。 (100字以内)
不能太婆婆妈妈,应如一部乐曲演奏完毕,戛然而止、曲终 人散、回味无穷。
一个小窍门:
阅读下面材料,根据要求写一篇不少于800字的议 论文。
本就生长在“物欲横流”的环境中,一
味用钱去引导学习,极有可能变得功利,
使教育变味。但是,教育不能因存在某
种风险而畏首畏尾或举步不前。只要是
“在课后”,“用小钱”,方式恰当,
不变本加厉,在红包激励的同时仍以精
神感化、正面教育为主线,发红包这样
的新举动一定能在教育中起到重要的激
பைடு நூலகம்
活辅助作用。
(预设反方,简
其三,如果能把“发红包”这种新
事物与传统的教书育人方法有机整合起
来,还可以给人们提供一种新的思维和
数字图像处理——几何变换实验
![数字图像处理——几何变换实验](https://img.taocdn.com/s3/m/2125d707580102020740be1e650e52ea5418ce5d.png)
数字图像处理——几何变换实验实验一:图像几何变换(编程报告)一、实验目的(1) 学习几种常见的图像几何变换,并通过实验体会几何变换的效果;(2) 掌握图像平移、剪切、缩放、旋转、镜像、错切等几何变换的算法原理及编程实现(3) 掌握MATLAB编程环境中基本的图像处理函数(4) 掌握图像的复合变换二、涉及知识点(1) 图像几何变换不改变图像像素的值,只改变像素所在的几何位置(2) 图像裁剪imcrop函数,语法格式为:B=imcrop(A);交互式用鼠标选取区域进行剪切B=imcrop(A,[XMIN YMIN WIDTH HEIGHT]);针对指定的区域[XMIN YMIN WIDTH HEIGHT]进行剪切(3) 图像缩放imresize函数,语法格式为: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.bmp裁剪成200*200大小(2) 制作动画,将一幅图像逐渐向左上角平移移出图像区域,空白的地方用白色填充(3) 利用剪切图像函数制作动画(4) 将图像分别放大1.5倍和缩小0.8倍,插值方法使用双线性插值法,分别显示图像。
(5) 将图像水平镜像,再顺时针旋转45度,显示旋转后的图。
(6) 将图像分别进行水平方向30度错切,垂直方向45度错切,分别显示结果四、实验环境Windows下MATLAB编程环境五、实验源代码及结果1. f=imread('hehua.bmp');figure; imshow(f); title('原图');f2=imcrop(f,[100,50,300,250]); figure;imshow(uint8(f2)); title('裁剪后');imwrite(f2,'d:/5/hehua1.bmp');2. f=imread('hehua1.bmp');[m,n,x]=size(f); f=double(f); for i=1:10 mx=10*i; my=10*i;g=zeros(m,n,x)+255;%g(mx+1:m,my+1:n,1:x)=f(1:m-mx,1:n-my ,1:x); g(1:m-mx,1:n-my ,1:x )=f(mx+1:m,my+1:n,1:x); figure;imshow(uint8(g)); end3. f=imread('hehua1.bmp');[m,n]=size(f); for i=50:10:200 m=i; n=i;f2=imcrop(f,[n,n,m,m]); figure;imshow(uint8(f2)); end4. f=imread('hehua1.bmp');figure; imshow(f); title('原图'); f=double(f);f1=imresize(f,1.5,'bilinear'); figure;imshow(uint8(f1)); title('放大1.5倍');f2=imresize(f,0.8,'bilinear'); figure;imshow(uint8(f2)); title('缩小0.8倍');5. f=imread('hehua1.bmp');subplot(131);imshow(f);title('原图');[m,n,x]=size(f);g=zeros(m,n,x);for i=1:mfor j=1:nfor k=1:xg(i,j,k)=f(i,n-j+1,k);endendendsubplot(132);imshow(uint8(g));title('水平镜像');f2=imrotate(g,45,'crop'); subplot(133);imshow(uint8(f2));title('顺时针旋转45度');6. f=imread('hehua1.bmp');subplot(131); imshow(f); title('原图'); h=size(f);f1=zeros(h(1)+round(h(2)*tan(pi/6)),h(2),h(3)); for m=1:h(1) for n= 1:h(2)f1(m+round(n*tan(pi/6)),n,1:h(3))=f(m,n,1:h(3)); end endsubplot(132);imshow(uint8(f1)); title('水平30度');f2=zeros(h(1),h(2)+round(h(2)*tan(pi/4)),h(3)); for m=1:h(1) for n= 1:h(2)f2(m,n+round(m*tan(pi/4)),1:h(3))=f(m,n,1:h(3));end endsubplot(133);imshow(uint8(f2)); title('垂直45度');。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
imshow(uint8(g));%双精转为 uint8,再显示图形 运行结果:
分析:图像实现了 X 轴和 Y 轴的平移。
五、测试/调试及实验结果分析
实验结果如上所示。
六、实验结论与体会
通过实验,我基本掌握了图像几何变换方法,了解了图像变换的各个函数的格式和用法,同时 也掌握图像的插值运算方法。
m 小于 1, 缩小图像。 method 参数用于指定在改变图像尺寸时所使用的算法, 可以为以下几种:
'nearest': 这个参数也是默认的,即改变图像尺寸时采用最近邻插值算法;
'bilinear':采用双线性插值算法;
'bicubic': 采用双三次插值算法;
2、图像旋转
Imrotate()函数是对图像进行旋转的操作命令,调用格式为 B = imrotate(A,angle) 将图像 A(图像的数据矩阵)绕图像的中心点旋转 angle 度, 正数表示逆时针旋转,
年月日
8
课程名称 实验序号 实验项目 实验地点 实验学时 指导教师
数字图像处理与分析 实验 4
图像几何变换
实验类型 实验员
专业 学号
班级 姓名
2017 年
9月
25 日
1
成绩:
教 师 评 语
一、实验目的及要求
1)掌握图像几何变换方法特点。 2)掌握图像的插值运算方法。
二、实验原理与内容
1、图像比例缩放
imresize()函数用于对图像做缩放处理,调用格式为 B = imresize(A, m) 返回的图像 B 的长宽是图像 A 的长宽的 m 倍,即缩放图像。 m 大于 1, 则放大图像;
分析:由实验结果可知,实现了图片放大和缩小的效果。 2、图像旋转 代码:
3
I=imread('11.jpg'); J=imrotate(I,32, 'bilinear');% J=imrotate(I,angle, method,’crop’)------ crop 用于剪切旋转后增大的图 像部分,返回和原图大小一样的图象。 imshow(I); figure,imshow(J) 运行结果:
1、图片比例缩放 代码:
I=imread('11.jpg'); J=imresize(I,1.25); J2= imresize(I,1.25, 'bicubic'); imshow(I); figure,imshow(J); figure,imshow(J2); Y=imresize(I,[100 150], 'bilinear');% Y=imresize(I,[mrows ncols], method)---返回一个指定行列的图 像。若行列比与原图不一致,输出图像将发生变形。 figure,imshow(Y) %nearest,bilinear,bicubic 为最近邻插值、双线性插值、双三次插值方法。默认为 nearest。 运行结果:
[m n] : 图像以 m*n 为分块单位,对图像进行处理(如 8 像素*8 像素) Fun: 应用此函数对分别对每个 m*n 分块的像素进行处理 parameter1, parameter2: 要传给 fun 函数的参数
2
三、实验软硬件环境
装有 MATLAB 软件的电脑
四、实验过程(实验步骤、记录、数据、分析)
运行结果: 运行代码后,出现如下界面,选中要裁剪的区域,双击被选中的区域
出现以下界面:
5
分析:由实验结果可知,选中要裁剪的区域,然后出现两个被裁剪的区域,实验实现了图像剪切的 功能。 4、图像块操作 代码: A=imread( '11.JPG'); B=rgb2gray(A); C=blkproc(B,[8 8], 'std2(x)*ones(size(x))');% B=blkproc(A,[m n],fun)--- 对图像 A 的每一个 m*n 块应用 函数 fun,图像 A 的边缘用 0 扩展。 figure,imshow(C,[]); 运行结果:
负数表示顺时针旋转。返回旋转后的图像矩阵。
3、图像剪切
Imcrop()函数用于返回图像的一个裁剪区域。可把图像显示在一个图像窗口中, 并 允许用户以交互方式使用鼠标选定要剪切的区域。
4、图像块操作
Blkproc()函数对图像进行分块处理,调用格式为 B = blkproc(A,[m n],fun, parameter1, parameter2, ...)
6
注意:要把二维图像转换为一维图像。 5、设计一程序,对输入图像进行平移。X 方向平移 m1 个单位,Y 方向平移 n1 个单位。 代码: f=imread('ee.jpg'); %读图片 [m,n,x]=size(f);%求图的维数 f=double(f);%转化为双精度数据
mx=50;%x 轴平移量,像素数 my=10;%y 轴平移量,像素数 g=zeros(m,n,x)+255;%背境设为白色 g(mx+1:m,my+1:n,1:x)=f(1:m-mx,1:n-my ,1:x);%平移,取原图左上角赋给新图,原图坐标减少, 像素减少,看起来新图向右下平移 % g(1:m-mx,1:n-my ,1:x)=f(mx+1:m,my+1:n,1:x);%平移,取原图右下角赋给新图,原图坐标增加, 像素增加,看起来新图向左上平移 figure;%生成一个图窗 % imshow(g);%显示双精数据图形
分析:由实验结果可知,实现了图片旋转的效果 3、图像剪切 代码:
4
ቤተ መጻሕፍቲ ባይዱ
I=imread('11.jpg'); J=imcrop(I); figure(1),imshow(I);title('yuantu'); figure(2),imshow(J);title('croptu') J1= imcrop(I,[60 40 100 90 ]); %对指定区域进行剪切操作 figure(3),imshow(J1);title('croptu2');