第三次实验报告数字图像处理实验 —图像的几何变换
数字图像处理实习报告

数字图像处理实习报告在当今数字化的时代,数字图像处理技术在众多领域中发挥着至关重要的作用,从医疗诊断到卫星遥感,从娱乐产业到工业检测,其应用无处不在。
通过这次数字图像处理实习,我对这一领域有了更深入的了解和实践经验。
实习的初始阶段,我主要进行了相关理论知识的学习。
数字图像处理涵盖了众多概念,如图像的数字化表示、像素、灰度值、分辨率等。
了解这些基础知识是后续处理图像的基石。
同时,我还学习了常见的图像格式,如 JPEG、PNG、BMP 等,以及它们的特点和适用场景。
在掌握了一定的理论基础后,我开始接触图像处理的基本操作。
图像增强是我最先实践的部分,通过调整图像的对比度和亮度,能够使原本模糊不清或暗淡的图像变得更加清晰和易于观察。
例如,对于一张曝光不足的照片,增加亮度可以让隐藏在黑暗中的细节显现出来;而提高对比度则可以使图像中的不同区域更加分明,突出重点。
图像滤波是另一个重要的环节。
均值滤波可以有效地去除图像中的噪声,但在一定程度上会使图像变得模糊;中值滤波则能够在去除噪声的同时较好地保留图像的边缘细节。
我通过对不同类型和程度的噪声图像进行滤波处理,直观地感受到了它们的效果差异。
图像的几何变换也是实习中的关键内容。
图像的平移、旋转和缩放操作看似简单,但其背后涉及到复杂的数学计算。
在实际操作中,需要准确地计算变换矩阵,以确保图像在变换后的准确性和完整性。
实习过程中,我还深入研究了图像分割技术。
这是将图像分成不同区域或对象的过程,以便进行后续的分析和处理。
阈值分割是一种常见且简单的方法,通过设定一个阈值,将图像中的像素分为两类。
然而,对于复杂的图像,这种方法往往效果不佳,这时就需要更高级的分割算法,如基于边缘检测的分割或基于区域生长的分割。
在进行数字图像处理的过程中,我也遇到了一些挑战和问题。
例如,在处理大规模图像数据时,计算资源的限制可能导致处理速度缓慢;在选择图像处理算法时,需要根据具体的图像特点和需求进行权衡,否则可能无法达到理想的效果。
图像变换实验报告

图像变换实验报告实验三图像变换⼀、实验⽬的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,旋转后的图像包含原图。
《数字图像处理》实验报告

《数字图像处理》实验报告数字图像处理是一门将图像进行数字化处理的学科,它通过计算机算法和技术手段对图像进行分析、增强、压缩和重建等操作。
在本次实验中,我们学习了数字图像处理的基本概念和常用算法,并通过实验来探索其应用和效果。
首先,我们进行了图像的读取和显示实验。
通过使用Python中的OpenCV库,我们能够轻松地读取图像文件,并将其显示在屏幕上。
这为我们后续的实验奠定了基础。
同时,我们还学习了图像的像素表示方法,了解了图像由像素点组成的原理。
这使我们能够更好地理解后续实验中的算法和操作。
接下来,我们进行了图像的灰度化实验。
灰度化是将彩色图像转换为灰度图像的过程。
在实验中,我们使用了不同的算法来实现灰度化操作,包括平均值法、最大值法和加权平均法等。
通过比较不同算法得到的灰度图像,我们发现不同算法对图像的处理效果有所差异,这使我们深入理解了灰度化的原理和应用。
随后,我们进行了图像的直方图均衡化实验。
直方图均衡化是一种用于增强图像对比度的方法。
在实验中,我们使用了直方图均衡化算法来对图像进行处理,并观察了处理前后的效果变化。
通过实验,我们发现直方图均衡化能够显著提高图像的对比度,使图像更加清晰和鲜明。
在进一步探索图像处理技术的过程中,我们进行了图像的滤波实验。
滤波是一种常用的图像处理操作,它通过对图像进行卷积操作来实现。
在实验中,我们学习了不同类型的滤波器,包括均值滤波器、高斯滤波器和中值滤波器等。
通过比较不同滤波器对图像的处理效果,我们发现每种滤波器都有其适用的场景和效果。
此外,我们还进行了图像的边缘检测实验。
边缘检测是一种用于提取图像边缘信息的方法。
在实验中,我们学习了不同的边缘检测算法,包括Sobel算子、Canny算子和Laplacian算子等。
通过比较不同算法对图像的处理效果,我们发现每种算法都有其独特的特点和应用。
最后,我们进行了图像的压缩实验。
图像压缩是一种将图像数据进行压缩以减小文件大小的方法。
数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告数字图像处理实验报告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等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。
数字图像处理图像变换实验报告

实验报告实验名称:图像处理姓名:刘强班级:电信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、图像正交变换的基本原理及编程实现步骤数字图像的处理方法主要有空域法与频域法,点运算与几何变换属于空域法。
数字图像处理实验报告-线性灰度变换-图像几何变换-频域图像增强技术-图像分割

线性灰度变换一、实验目的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)。
添加噪声,重复上述过程观察处理结果。
数字图像处理---图像的几何变换

数字图像处理---图像的⼏何变换图像的⼏何变换图像的⼏何变换包括了图像的形状变换和图像的位置变换图像的形状变换图像的形状变换是指图像的放⼤、缩⼩与错切图像缩⼩图像的缩⼩是对原有的数据进⾏挑选或处理,获得期望缩⼩尺⼨的数据,并尽量保持原有的特征不消失分为按⽐例缩⼩和不按⽐例缩⼩两种最简单的⽅法是等间隔地选取数据图像缩⼩实现设原图像⼤⼩为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%。
数字图像处理实验 图像的几何变换

数字图像处理实验报告实验七图像的几何变换1、实验目的理解和掌握图像的平移、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用。
2、实验步骤(1).对原图使用最近邻插值法进行放大2倍。
(2).对原图使用双线性插值法进行旋转。
(3).对原图同时进行垂直镜像变换和水平镜像变换。
3、实验源码对原图使用最近邻插值法进行放大2倍i=imread('5.jpg')j=imresize(i,2,'nearest')figure(1),imshow(i)figure(2),imshow(j)对原图使用双线性插值法进行旋转i=imread('5.jpg')j=imrotate(i,45,'bilinear')subplot(1,2,1),imshow(i);title('原图')subplot(1,2,2),imshow(j);title('旋转45度')对原图同时进行垂直镜像变换和水平镜像变换i=imread('5.jpg')i=rgb2gray(i)[x,y]=size(i)p=1:x;q=1:ym(x-p+1,y-q+1)=i(p,q)subplot(1,2,1),imshow(i);title('原图')subplot(1,2,2),imshow(m);title('先水平镜像后垂直镜像')4、实验截图原图对原图使用最近邻插值法进行放大2倍对原图使用双线性插值法进行旋转的处理如下:对原图同时进行垂直镜像变换和水平镜像变换的处理结果:5、实验小结对图像进行垂直镜像和水平镜像变换的时候,图像应先转换为灰度图像,方可进行变化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理实验
—图像得几何变换
姓名:张慧
班级:信息10-1
学号:36号
实验三、图像得几何变换
一、实验目得
1.学习几种常见得图像几何变换,并通过实验体会几何变换得效果;
2.掌握图像平移、剪切、缩放、旋转、镜像、错切等几何变换得算法原理及编程实现
3.掌握matlab编程环境中基本得图像处理函数
4.掌握图像得复合变换
二、实验原理
1初始坐标为(, )得点经过平移(,),坐标变为(,),两点之间得关系为:,以矩阵形式表示为:
2 图像得镜像变换就是以图象垂直中轴线或水平中轴线交换图像得变换,分为垂直镜像变换与水平镜像变换,两者得矩阵形式分别为:
3图像缩小与放大变换矩阵相同:
当时,图像缩小;时,图像放大。
4 图像旋转定义为以图像中某一点为原点以逆时针或顺时针方向旋转一定角度。
其变换矩阵为:
该变换矩阵就是绕坐标轴原点进行得,如果就是绕一个指定点()旋转,则现要将坐标系平移到该点,进行旋转,然后再平移回到新得坐标原点。
三、实验步骤
1启动MATLAB程序,对图像文件分别进行平移、垂直镜像变换、水平镜像变换、缩放与旋转操作,与实验箱运行结果进行比对;
2记录与整理实验报告
四、实验程序
X=imread(’E:\test、jpg’);
figure,imshow(X);title('原图')
%缩放
A=[0、5 00;0 2 0;0 0 1];
T=maketform(’affine’,A);
Z=imtransform(X,T);
figure,imshow(Z),title('图像缩放');
%图像旋转
A=[cos(pi/4)sin(pi/4)0;-sin(pi/4)cos(pi/4)0;0 01]; T=maketform(’affine’,A);
Z=imtransform(X,T);
figure,imshow(Z);title('图像旋转');
%水平剪切
A=[10 0;0、5 1 0;0 0 1];
T=maketform('affine’,A);
Z=imtransform(X,T);
figure,imshow(Z);title('水平剪切');
%垂直剪切
A=[10、50;0 1 0;0 0 1];
T=maketform('affine’,A);
Z=imtransform(X,T);
figure,imshow(Z);title(’垂直剪切’);
%水平镜像
A=[-10 0;0 1 0;10 1];
T=maketform('affine’,A);
Z=imtransform(X,T);
figure,imshow(Z);title('水平镜像');
%垂直镜像
A=[1 00;0 —1 0;0 11];
T=maketform('affine',A);
Z=imtransform(X,T);
figure,imshow(Z);title('垂直镜像');
五、实验结果图
原图图像缩放
图像旋转
水平剪切
垂直剪切
水平镜像
垂直镜像
六、结果分析
1.图像得平移。
经典得图像平移有两种算法,一种不会改变图像大小,另一种可以相应扩大图像。
本程序采用了第一种算法。
为了使图像能按照用户指定得水平平移量与垂直平移量移动,作者首先定义了一个参数设定窗,并在图像平移菜单得事件处理函数中对此对话框进行定义,获取平移量。
然后调用图像平移函数,从而实现将图像中所有得点(像素)都按照指定得平移量水平、垂直移动,平移后得图像上得每一点都可以在原图像中找到对应得点。
2。
图像得镜像。
图像得水平镜像操作就是将图像得左半部分与右半部分以图像垂直中轴线为中心镜像进行对换;图像得垂直镜像操作就是将图像上半部分与下半部分以图像水平中轴线镜像进行对换。
可以一个个像素进行镜像,也可以利用位图存储得连续性进行整行复制。
对于水平镜像作者采用前者,而垂直镜像采用后者,对两种方法都进行了尝试。
3.图像得转置。
即将图像像素得x坐标与y坐标互换。
它与图像得镜像变换类似,不同之处在于图像转置后DIB得头文件也要进行相应得改变,即更新宽度与高度信息。
因此传递给图像转置函数得参数就是直接指向DIB得指针,而不就是直接指向DIB像素得指针.程序首先一个个像素进行转置复制,然后互换DIB中图像得高宽,实现图像转置得功能。
4。
图像得缩放。
程序将图像按用户设定得X轴方向得缩放比率与Y轴方向得缩放比率进行缩放。
此操作产生得图像中得像素可能在原图中找不到相应得像素点,因此必须进行近似处理。
此处理有多种方法,可以采用最邻近插值算法,也可以采用别得插值算法。
后者处理效果要好一些,但就是运算量也相应增加很多,因此本程序采用前者,即最邻近插值算法.最后,由于缩放改变了图像得高度与宽度,因此还需要对DIB头文件得高度与宽度信息进行更新。
5.图像得旋转.程序将图像以图像中心为原点,按照用户设定得旋转角度进行旋转.与图像得平移一样,可以采用不同得算法,既可以把转出显示区域得部分图像截去,也可以扩大图像范围以显示所有图像,在本程序中采用后者.同时为了减小运算量,将图像以图像中心为坐标系原点进行旋转,而不就是用户指定得任意一点。