数字图像处理实验 报告范文分享

数字图像处理实验汇报9ki中文字网

  数字图像处理实验汇报一

  一. 实验内容:9ki中文字网

9ki中文字网

  主要是图像的几何变换的编程实现,具体包括图像的读取、改写,图像平移,图像的镜像,图像的转置,比例缩放,旋转变换等.9ki中文字网

  具体要求如下:9ki中文字网

  一.编程实现图像平移,要求平移后的图像大小不变;9ki中文字网

  二.编程实现图像的镜像;9ki中文字网

  三.编程实现图像的转置;9ki中文字网

  四.编程实现图像的比例缩放,要求分别用双线性插值和最近邻插值两种方法来实9ki中文字网

  现,并比较两种方法的缩放效果;9ki中文字网

  五.编程实现以任意角度对图像进行旋转变换,要求分别用双线性插值和最近邻插9ki中文字网

  值两种方法来实现,并比较两种方法的旋转效果.9ki中文字网

  二.实验目的和意义:9ki中文字网

  本实验的目的是使学生熟悉并掌握图像处理编程环境,掌握图像平移、镜像、转置和旋转等几何变换的方法,并能通过程序设计实现图像文件的读、写操作,及图像平移、镜像、转置和旋转等几何变换的程序实现.9ki中文字网

  三.实验原理与主要框架:9ki中文字网

  三.一 实验所用编程环境:9ki中文字网

  Visual C++(简称VC)是微软公司提供的基于C/C++的应用程序集成开发工具.VC拥有丰富的功能和大量的扩展库,使用它能有效的创建高性能的Windows应用程序和Web应用程序.9ki中文字网

  VC除了提供高效的C/C++编译器外,还提供了大量的可重用类和组件,包括闻名的微软基础类库(MFC)和活动模板类库(ATL),因此它是软件开发人员不可多得的开发工具.9ki中文字网

  VC丰富的功能和大量的扩展库,类的重用特性以及它对函数库、DLL库的支持能使程序更好的模块化,并且通过向导程序大大简化了库资源的使用和应用程序的开发,正由于VC具有明显的优势,因而我选择了它来作为数字图像几何变换的开发工具.9ki中文字网

  在本程序的开发过程中,VC的核心知识、消息映射机制、对话框控件编程等都得到了生动的体现和灵活的应用.9ki中文字网

  三.二 实验处理的对象:二五六色的BMP(BIT MAP )格式图像9ki中文字网

  BMP(BIT MAP )位图的文件结构:9ki中文字网

  具体组成图: BITMAPFILEHEADER9ki中文字网

  位图文件头9ki中文字网

  (只用于BMP文件) bfType=”BM” bfSize bfReserved一9ki中文字网

  bfReserved二9ki中文字网

  bfOffBits9ki中文字网

  biSize9ki中文字网

  biWidth9ki中文字网

  biHeight9ki中文字网

  biPlanes9ki中文字网

  biBitCount9ki中文字网

  biCompression9ki中文字网

  biSizeImage9ki中文字网

  biXPelsPerMeter9ki中文字网

  biYPelsPerMeter9ki中文字网

  biClrUsed9ki中文字网

  biClrImportant9ki中文字网

  单色DIB有二个表项9ki中文字网

  一六色DIB有一六个表项或更少9ki中文字网

  二五六色DIB有二五六个表项或更少9ki中文字网

  真彩色DIB没有调色板9ki中文字网

  每个表项长度为四字节(三二位)9ki中文字网

  像素按照每行每列的顺序排列9ki中文字网

  每一行的字节数必须是四的整数9ki中文字网

  倍BITMAPINFOHEADER 位图信息头 Palette 调色板 DIB Pixels DIB图像数据9ki中文字网

  一. BMP文件组成9ki中文字网

  BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成.9ki中文字网

  二. BMP文件头9ki中文字网

  BMP文件头数据结构含有BMP文件的类型(必须为BMP)、文件大小(以字节为单位)、位图文件保留字(必须为零)和位图起始位置(以相对于位图9ki中文字网

  文件头的偏移量表示)等信息.9ki中文字网

  三. 位图信息头9ki中文字网

  BMP位图信息头数据用于说明位图的尺寸(宽度,高度等都是以像素为单位,大小9ki中文字网

  以字节为单位, 水平和垂直分辨率以每米像素数为单位) ,目标设备的级别,每个像素所需的位数, 位图压缩类型(必须是 零)等信息.9ki中文字网

  四. 颜色表9ki中文字网

  颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD9ki中文字网

  类型的结构,定义一种颜色.具体包含蓝色、红色、绿色的亮度(值范围为零-二五五)9ki中文字网

  位图信息头和颜色表组成位图信息9ki中文字网

  五. 位图数据9ki中文字网

  位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描9ki中文字网

  行之间是从下到上.9ki中文字网

  Windows规定一个扫描行所占的字节数必须是 四的倍数(即以long为单位),不足的以零填充.9ki中文字网

  三.三 BMP(BIT MAP )位图的显示:9ki中文字网

  ①一般显示方法:9ki中文字网

  一. 申请内存空间用于存放位图文件9ki中文字网

  二. 位图文件读入所申请内存空间中9ki中文字网

  三. 在函数中用创建显示用位图, 用函数创建兼容DC,用函数选择显示删除位图9ki中文字网

  但以上方法的缺点是: 一)显示速度慢; 二) 内存占用大; 三) 位图在缩小显示时图形失真大,(可通过安装字体平滑软件来解决); 四) 在低颜色位数的设备上(如二五六显示模式)显示高颜色位数的图形(如真彩色)图形失真严重.9ki中文字网

  ②BMP位图缩放显示 :9ki中文字网

  用视频函数来显示位图,内存占用少,速度快,而且还可以对图形进行淡化(Dithering )处理.淡化处理是一种图形算法,可以用来在一个支持比图像所用颜色要少的设备上显示彩色图像.BMP位图显示方法如下:9ki中文字网

  一. 打开视频函数,一般放在在构造函数中9ki中文字网

  二. 申请内存空间用于存放位图文件9ki中文字网

  三. 位图文件读入所申请内存空间中9ki中文字网

  四. 在 函数中 显示位图9ki中文字网

  五. 关闭视频函数 ,一般放在在析构函数中9ki中文字网

  以上方法的优点是: 一)显示速度快; 二) 内存占用少; 三) 缩放显示时图形失真小,四) 在低颜色位数的设备上显示高颜色位数的图形图形时失真小; 五) 通过直接处理位图数据,可以制作简单动画.9ki中文字网

  三.四 程序中用到的访问函数9ki中文字网

  Windows支持一些重要的DIB访问函数,但是这些函数都还没有被封装到MFC中,这些函数主要有:9ki中文字网

  一. SetDIBitsToDevice函数:该函数可以直接在显示器或打印机上显示DIB. 在显9ki中文字网

  示时不进行缩放处理.9ki中文字网

  二. StretchDIBits函数:该函数可以缩放显示DIB于显示器和打印机上.9ki中文字网

  三. GetDIBits函数:还函数利用申请到的内存,由GDI位图来构造DIB.通过该函数,9ki中文字网

  可以对DIB的格式进行控制,可以指定每个像素颜色的位数,而且可以指定是否进行压缩.9ki中文字网

  四. CreateDIBitmap函数:利用该函数可以从DIB出发来创建GDI位图.9ki中文字网

  五. CreateDIBSection函数:该函数能创建一种特别 的DIB,称为DIB项,然后返回9ki中文字网

  一个GDI位图句柄.9ki中文字网

  六. LoadImage函数:该函数可以直接从磁盘文件中读入一个位图,并返回一个DIB9ki中文字网

  句柄.9ki中文字网

  七. DrawDibDraw函数:Windows提供了窗口视频(VFW)组件,Visual C++支持该9ki中文字网

  组件.VFW中的DrawDibDraw函数是一个可以替代StretchDIBits的函数.它的最主要的优点是可以使用抖动颜色,并且提高显示DIB的速度,缺点是必须将VFW代码连接到进程中.9ki中文字网

  三.五 图像的几何变换9ki中文字网

  图像的几何变换,通常包括图像的平移、图像的镜像变换、图像的转置、图像的缩放和图像的旋转等.9ki中文字网

  数字图像处理实验汇报二

  一、实验的目的和意义9ki中文字网

  实验目的:本实验内容旨在让学生通过用VC等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。为学生进一步学习数字摄影测量、遥感和地理信息系统等专业课程以及应用图像处理解决实际问题奠定基础。9ki中文字网

  二、实验原理和方法9ki中文字网

  (一) Raw格式到BMP格式的转换:9ki中文字网

  Raw格式:Raw格式文件是按照数字图像组成的二维矩阵,将像素按行列号顺序存储在文件中。这种文件只含有图像像素数据,不含有信息头,因此,在读图像时,需要根据文件大小,计算图像所包含的行列号,或者需要事先知道图像大小(矩阵大小)。RAW文件按图像上行到下行、左列到右列顺序存储。9ki中文字网

  BMP格式:BMP文件数据区按图像上下行到上行、左列列到右列顺序存储到数据区。BMP文件由文件头、信息头、颜色表、数据区四个部分组成。9ki中文字网

  做Raw格式文件到BMP格式文件的转化,先要为BMP格式文件申请四部分的内存:文件头,位图信息头,颜色表,图象数据,然后根据输入值以及Raw文件信息,BMP格式文件信息计算出这几部分的值,赋给他们,写到BMP文件中去。9ki中文字网

  (二) 灰度图象的线性拉伸:9ki中文字网

  灰度变化是点运算,将原图象的每个像素的灰度值改成线性变化之后的灰度即可。9ki中文字网

  灰度的线性变换就是指图像的中所有点的灰度按照线性灰度变换函数进行变换。灰度变换方程如下:9ki中文字网

  该方程为线性方程。式中参数 为输入图像的像素的灰度值,参数 为输出图像的9ki中文字网

  灰度值。9ki中文字网

  设原图象的灰度范围为[a,b],变化之后的范围为[a’,b’],则:9ki中文字网

  fA=(b’-a’)/(b-a)9ki中文字网

  fB=-(b’-a’)/(b-a)*a+a’9ki中文字网

  如果算出来的值大于二五五,则让它等于二五五,小于零则让其等于零。9ki中文字网

  (三) 局部处理(三*三高通滤波,三*三低通滤波):9ki中文字网

  局部处理在处理某一像素时,利用与该像素相邻的一组像素,通过某种变换得到处理后图像中某一点的像素值。目标像素的邻域一般是由像素组成的二维矩阵,该矩阵的大小为奇数,目标像素位于该矩阵的中央,即目标像素就是区域的中心像素。通过处理后,目标像素的值为通过特定算法计算后所得的结果。9ki中文字网

  实际上都是利用卷积来实现的,卷积往往用一个矩阵表示,将矩阵的中心对齐某个像素,矩阵中的值乘到相应的像素中去,然后将所有乘积加起来就得到中心像素的灰度值。边界像素不做处理,仍为原来的灰度值。求出的像素灰度值若超过[零~二五五],则向离其最近的属于该范围的像素值靠拢。9ki中文字网

  三*三低通滤波的算子见表一。9ki中文字网

  三*三高通滤波的算子见表二。9ki中文字网

  表格 一9ki中文字网

  一/九9ki中文字网

  一/九9ki中文字网

  一/九9ki中文字网

  一/九9ki中文字网

  一/九9ki中文字网

  一/九9ki中文字网

  一/九9ki中文字网

  一/九9ki中文字网

  一/九9ki中文字网

  表格 二9ki中文字网

  -一9ki中文字网

  -一9ki中文字网

  -一9ki中文字网

  -一9ki中文字网

  九9ki中文字网

  -一9ki中文字网

  -一9ki中文字网

  -一9ki中文字网

  -一9ki中文字网

  (四) 图象几何处理(图象平移,图象缩放):9ki中文字网

  对于图像平移来说,若平移量是(tx,ty),像素在原图像中的坐标为(x零,y零),则变化后的坐标为(x一,y一),x一=x零+tx,y一=y零+ty。平移只需改变像素的灰度值,不必改变位图信息头和调色板内容。9ki中文字网

  对于图像缩放,假设放大因子为ratio,缩放的变换矩阵为:9ki中文字网

  图像信息头中新图像的宽度和高度都变为原来宽度和高度分别与水平垂直比例的乘积,图像大小变为新宽度(变为四的整数倍)与新高度的乘积。9ki中文字网

  (五) 灰度图象中值滤波:9ki中文字网

  中值滤波也属于局部处理的一种,将窗口中的各个像素排序之后排序,取中值赋给模板中心的像素,所以窗口中个数一般是基数。9ki中文字网

  我用的中值滤波窗口是十字丝的九个数的窗口。9ki中文字网

  (六) 灰度图象边缘检测:9ki中文字网

  边缘检测有三种算子:Roberts,Prewit,Sobel。三种算子都是做一阶差分的,通过算子算出各个像素的梯度值,将水平梯度的绝对值和垂直梯度的绝对值相加,若此梯度值大于某个阈值,则将其灰度值赋为二五五,否则赋为零。9ki中文字网

  (七) 图象旋转:9ki中文字网

  图像旋转一般是以图像中心为中心顺时针旋转,利用图像的四个角点求出图像旋转后的大小。9ki中文字网

  先计算以图像中心为原点坐标系下原图像四个角点的坐标值,按照旋转矩阵计算其旋转之后的坐标值,根据四个角点的新坐标值计算出最大宽度和高度作为新图像的宽度和高度值,按照计算值修改位图信息头,申请一块新内存,存储旋转后图像的灰度值。9ki中文字网

  旋转矩阵如下:9ki中文字网

  同样要求各个像素在原图像中的坐标,先将新图像的坐标系平移到图像中心,做逆时针旋转,然后再平移到屏幕左上角,然后将原图像对应坐标的值赋给新图像。9ki中文字网

  (八) 图象二值化:9ki中文字网

  判断分析法:假定图像的灰度区间为[零,L-一],则选择一阈值T 将图像的像素分为两组。9ki中文字网

  为最大值所对应的T,就是所求判断分析法的分割阈值。9ki中文字网

  搜寻到阈值之后,灰度值小于阈值的像素赋零,其他的赋一,修改文件信息头,调色板,申请新内存。9ki中文字网

  (九) 图象直方图:9ki中文字网

  统计各灰度值出现的频数,以及像素的总个数,用频数除以总个数作为频率,以灰度值作为横坐标,频率作为纵坐标绘图。9ki中文字网

  三、实验过程和步骤9ki中文字网

  首先要建立一个基于MFC的多文档工程,将视图基类改为滚动视图,以自己的学号命名。9ki中文字网

  我用的是书上给的CDib类,类里面有获取BMP宽度,高度的函数,有指向位图信息头的指针,指向图象数据的指针,因此我在文档类(Doc类)里定义了一个CDib类的对象,打开以及保存文件的时候利用这个对象去调用CDib里读取与存储文件的函数,并且可以利用这个对象的两个指针对打开的图象进行各种操作。9ki中文字网

  一.Raw格式到BMP格式的转换:9ki中文字网

  首先建立一个RawToBMP的对话框,在上面加上四个编辑框(一个输入打开文件的路径一个输入保存文件的路径,另两个),两个按钮,以及默认的确认,取消按钮。利用类向导插入此对话框类,并且为前两个编辑框定义CString的两个变量,用来存储打开与保存文件的路径。同时为两个浏览按钮添加消息响应函数,在消息函数里创建CFileDialog对象,利用此对象的函数将两个路径值赋给前两个编辑框的成员变量。再为OK键添加消息响应函数,分别定义BMP格式文件前三部分数据变量,计算出各变量的值,并且利用一个CFile对象获取Raw图象的数据,利用另一个CFile对象将数据存储到所输入的路径的文件中去,CFile对象的Read函数会自动创建一个文件。9ki中文字网

  然后在菜单上新建一个菜单,为菜单添加消息响应函数,在其消息响应函数里创建RowToBMP对话框。这样点击菜单后就会弹出一个对话框,按确定键之后就可以读取Raw文件并且存储BMP文件,完成整个消息循环。9ki中文字网

  二.灰度图象的线性拉伸:9ki中文字网

  创建一个对话框来输入变化后的灰度值,为对话框的两个编辑框定义成员变量,在文档类中添加处理函数,按照对话框输入值计算出fA与fB,做一个循环,将零到二五五的灰度值,计算出拉伸后的灰度值(超限情况特别 处理),存放在下标为此值的一个数组中,然后利用文档类的中定义的CDib类的成员变量m_DIB,获得当前打开的图像指9ki中文字网

推荐阅读: 图像处理 实验 汇报 9ki中文字网

9ki中文字网