数字图像处理实验报告完整版 数字图像处理实验报告(通用8篇)

时间:2023-10-15 作者:翰墨数字图像处理实验报告完整版 数字图像处理实验报告(通用8篇)

开题报告是科研项目申请和立项的重要依据,它能够展示研究的质量和可行性。下面是一些实践报告的范本,这些范本涵盖了不同领域和主题,可以为大家提供多样化的写作参考。

数字图像处理实验报告完整版篇一

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

二、实验原理和方法

(1)raw格式到bmp格式的转换:

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

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

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

(2)灰度图象的线性拉伸:

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

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

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

灰度值。

设原图象的灰度范围为[a,b],变化之后的范围为[a’,b’],则:

fa=(b’-a’)/(b-a)

fb=-(b’-a’)/(b-a)*a+a’

如果算出来的值大于255,则让它等于255,小于0则让其等于0。

(3)局部处理(3*3高通滤波,3*3低通滤波):

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

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

3*3低通滤波的算子见表1。

3*3高通滤波的算子见表2。

表格1

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

表格2

-1

-1

-1

-1

9

-1

-1

-1

-1

(4)图象几何处理(图象平移,图象缩放):

对于图像平移来说,若平移量是(tx,ty),像素在原图像中的坐标为(x0,y0),则变化后的坐标为(x1,y1),x1=x0+tx,y1=y0+ty。平移只需改变像素的灰度值,不必改变位图信息头和调色板内容。

对于图像缩放,假设放大因子为ratio,缩放的变换矩阵为:

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

(5)灰度图象中值滤波:

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

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

(6)灰度图象边缘检测:

边缘检测有三种算子:roberts,prewit,sobel。三种算子都是做一阶差分的,通过算子算出各个像素的梯度值,将水平梯度的绝对值和垂直梯度的绝对值相加,若此梯度值大于某个阈值,则将其灰度值赋为255,否则赋为0。

(7)图象旋转:

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

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

旋转矩阵如下:

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

(8)图象二值化:

判断分析法:假定图像的灰度区间为[0,l-1],则选择一阈值t将图像的像素分为两组。

为最大值所对应的t,就是所求判断分析法的分割阈值。

搜寻到阈值之后,灰度值小于阈值的像素赋0,其他的赋1,修改文件信息头,调色板,申请新内存。

(9)图象直方图:

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

三、实验过程和步骤

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

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

格式到bmp格式的转换:

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

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

2.灰度图象的线性拉伸:

数字图像处理实验报告完整版篇二

提高计算机对数字图像处理的速度,提高采集分辨率和显示分辨率,提高多媒体技术关键中图像数据的压缩,进行计算机识别和理解研究中按照人类的认知和思维方式工作并考虑到主观概率和非逻辑思维技术,规划统一的标准以实现图像的处理、传输和存储研究健康发展,以上几点都是数字图像处理技术合理发展的基本融汇技术基础。

同时,信息数据量更大的三维数字图像必将得到广泛应用研究,图像与图形相互融合后形成三维成像或多维成像的发展方向也正在众多应用中广泛推进。

5总结

数字图像处理技术在社会的每个行业、每个领域都得到广泛的应用,数字图像处理的技术应用随时、随处都可以见到,得到充分的研究发展和应用推广,还不能充分满足日益增长的技术需求。数字图像处理技术不断地在自身发展和完善的同时,还与多个计算机分支学科的发展密不可分,有多个新的技术方向需要研究和创新,对数字图像处理技术的发展方向进行研究、探讨的重要性就显得尤为突出。

参考文献:

[1]朱睿。数字图像处理技术现状与展望[j].中国科技博览,2011(14):7-28.

[4]谭海艳。数字图像压缩综述[j].科技经济市场,2011(8)。

数字图像处理实验报告完整版篇三

实验课程名称开课学院指导教师姓名学生姓名学生专业班级

200

--200学年第学期

实验教学管理基本规范

实验是培养学生动手能力、分析解决问题能力的重要环节;实验报告是反映实验教学水平与质量的重要依据。为加强实验过程管理,改革实验成绩考核方法,改善实验教学效果,提高学生质量,特制定实验教学管理基本规范。

照执行或暂不执行。

报告外,其他实验项目均应按本格式完成实验报告。

定比例。各部分成绩的观测点、考核目标、所占比例可参考附表执行。各专业也可以根据具体情况,调整考核内容和评分标准。

在学生离开实验室前,检查学生实验操作和记录情况,并在实验报告第二部分教师签字栏签名,以确保实验记录的真实性。

实验项目后,教师应按学生姓名将批改好的各实验项目实验报告装订成册,构成该实验课程总报告,按班级交课程承担单位(实验中心或实验室)保管存档。6、实验课程成绩按其类型采取百分制或优、良、中、及格和不及格五级评定。

实验课程名称:__通信原理_____________

更多相关热门文章推荐阅读:

数字图像处理实验报告完整版篇四

数字图像处处理(digitalimageprocessing)是将图像信号转换成数字信号并利用计算机对其进行处理。早期的数字图像处理的目的是提高图像的视觉效果。目前已广泛应用于科学研究、工农业生产、医学工程、航空航天、军事、文化产业等众多领域。

1数字图像处理技术概要

1.1数字图像处理技术的概念

在图像处理技术中,低级处理涉及初级技术,如噪声降低、对比度处理和锐化处理。中级处理涉及分割、缩减对目标像素群的定义,以便于对不同像素或像素群的识别及计算机计算处理。高级处理是算法对图像分析中被识别像素群的总体分析结果,以及运算与视觉效果相关的分析函数等处理技术。

在应用数学理论时,将图像定义为二维函数f(x,y),x和y为空间坐标,在任意一组空间坐标f(x,y)的幅值f称为图像在该坐标位置的强度或灰度.

当x,y和幅值f是离散的、有限的数值时,称该坐标位置是由有限的元素组成的,每一个像素都有一个特定的位置和幅值。

1.2数字图像处理技术的发展

数字图像处理技术最早出现于20世纪中期,图像处理的目的是提高图像的呈现质量。图像处理的是视效较低的图像,要求输出尽可能提高效果后的图像。主要采用噪声减弱、灰度变换、几何校正等方法进行处理,并考虑了明暗效果和对比度等诸多因素,由计算机进行更为复杂的图像处理。

20世纪初期,图像处理技术首次应用于提升通讯传输后的图像质量提升。到20世纪中期,计算机发展到了一定的技术水平后,数字图像处理才广泛应用于各种高质图像需求的领域。计算机对飞行器发回的天体照片进行图像处理,收到明显的效果。

进而不断地推广和发展,数字图像处理形成了较为完备的学科体系。目前,各个应用领域对数字图像处理技术提出更高的需求,促进了这一学科体系向更高的技术方向发展。特别是在像素群的理解与识别处理方面,已经由二维图像处理发展到三维模型化的定义方法。

数字图像处理实验报告完整版篇五

提高计算机对数字图像处理的速度,提高采集分辨率和显示分辨率,提高多媒体技术关键中图像数据的压缩,进行计算机识别和理解研究中按照人类的认知和思维方式工作并考虑到主观概率和非逻辑思维技术,规划统一的标准以实现图像的处理、传输和存储研究健康发展,以上几点都是数字图像处理技术合理发展的基本融汇技术基础。

同时,信息数据量更大的三维数字图像必将得到广泛应用研究,图像与图形相互融合后形成三维成像或多维成像的发展方向也正在众多应用中广泛推进。

5总结

数字图像处理技术在社会的每个行业、每个领域都得到广泛的应用,数字图像处理的技术应用随时、随处都可以见到,得到充分的研究发展和应用推广,还不能充分满足日益增长的技术需求。数字图像处理技术不断地在自身发展和完善的同时,还与多个计算机分支学科的发展密不可分,有多个新的技术方向需要研究和创新,对数字图像处理技术的发展方向进行研究、探讨的重要性就显得尤为突出。

参考文献:

[1]朱睿。数字图像处理技术现状与展望[j].中国科技博览,(14):7-28.

[4]谭海艳。数字图像压缩综述[j].科技经济市场,2011(8)。

数字图像处理实验报告完整版篇六

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

二、实验原理和方法

(1)raw格式到bmp格式的转换:

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

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

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

(2)灰度图象的线性拉伸:

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

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

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

灰度值。

设原图象的灰度范围为[a,b],变化之后的范围为[a’,b’],则:

fa=(b’-a’)/(b-a)

fb=-(b’-a’)/(b-a)*a+a’

如果算出来的值大于255,则让它等于255,小于0则让其等于0。

(3)局部处理(3*3高通滤波,3*3低通滤波):

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

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

3*3低通滤波的算子见表1。

3*3高通滤波的算子见表2。

表格1

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

表格2

-1

-1

-1

-1

9

-1

-1

-1

-1

(4)图象几何处理(图象平移,图象缩放):

对于图像平移来说,若平移量是(tx,ty),像素在原图像中的坐标为(x0,y0),则变化后的坐标为(x1,y1),x1=x0+tx,y1=y0+ty。平移只需改变像素的灰度值,不必改变位图信息头和调色板内容。

对于图像缩放,假设放大因子为ratio,缩放的变换矩阵为:

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

(5)灰度图象中值滤波:

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

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

(6)灰度图象边缘检测:

边缘检测有三种算子:roberts,prewit,sobel。三种算子都是做一阶差分的,通过算子算出各个像素的梯度值,将水平梯度的绝对值和垂直梯度的绝对值相加,若此梯度值大于某个阈值,则将其灰度值赋为255,否则赋为0。

(7)图象旋转:

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

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

旋转矩阵如下:

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

(8)图象二值化:

判断分析法:假定图像的灰度区间为[0,l-1],则选择一阈值t将图像的像素分为两组。

为最大值所对应的t,就是所求判断分析法的分割阈值。

搜寻到阈值之后,灰度值小于阈值的像素赋0,其他的赋1,修改文件信息头,调色板,申请新内存。

(9)图象直方图:

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

三、实验过程和步骤

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

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

格式到bmp格式的转换:

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

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

2.灰度图象的线性拉伸:

向图像数据部分的指针m_dib.m_pbits,在数组中查出每个像素变化后的灰度值,并将此值赋给指针m_pbits指向的内存。刷新视图。

然后在菜单中加上线性拉伸的菜单,为该菜单的id添加消息响应函数,在该函数中创建对话框,并调用文档类线性拉伸的函数,将对话框的两个成员变量传给此函数。

3.局部处理:

在文档类里添加低通滤波和高通滤波的成员函数,在函数中使用m_dib对象中指向图像数据部分的指针m_pbits,首先申请一个新内存,将原来图像的灰度值存储起来,然后定义9个byte类型的指针,利用双重嵌套循环,在循环中每次用这9个指针指向复制图像对应模板中的9个数,然后按照模板中的数值计算出中心像素的灰度值,判断是否超过范围,如果超过范围则做相应的处理,否则将此值直接赋给m_pbits中对应的中心像素。循环之后刷新视图。

添加局部处理的菜单,为菜单设置消息响应函数,在菜单消息响应函数中调用文档类的函数,完成对m_dib的处理。

4.图像几何变换:

建立平移对话框,定义两个成员变量,分别存储输入的水平位移和垂直位移。

在文档类里添加平移函数,申请一块新内存复制原图像的信息,在函数中将

外层循环变量i视为纵坐标,内层循环变量j视为横坐标,通过双重循环,对每个像素,求出其在原图像中的坐标(i0,j0),将复制图像中的对应(i0,j0)的像素灰度值赋给m_dib.m_pbits指针中的图像。如果在原图像中找不到该像素,置为背景色。刷新视图。

在菜单中添加图像平移菜单,并为该菜单添加消息响应函数,在此函数中创建平移对话框,调用文档类的平移函数,将对话框的成员变量传入该函数。

建立缩放对话框类,为此类定义两个成员变量,存储输入的水平缩放因子和垂直缩放因子。

再在文档类中添加缩放函数,利用m_dib.m_pbmi(指向位图信息头的指针),修改位图信息头中的宽度,高度,图像大小。计算出新图像的大小,申请一块新内存存储新图像,同平移函数一样,计算出每个像素在原图像中的坐标,i0=i/pratio,j0=j/vratio,pratio与vratio分别为水平缩放因子和垂直缩放因子。将原图像中对应坐标的灰度值赋给新内存,然后将m_dib.m_pbit指向新内存,刷新视图。

5.中值滤波:

在文档类中添加两个成员函数。一个用来把传入的指针里的内容排序,一个用来做中值滤波。也要申请一块新内存来复制原图像的信息,双重嵌套循环,边界像素不处理,对每个像素,使用一个大小为9个字节的数组来存放复制图像窗口中各像素值,然后将数组首地址传入排序的函数中,将中间的值赋给当前图像窗口中心的像素。排序函数我用的是快速排序法。

在菜单中添加中值滤波菜单项,为其添加消息响应函数,调用文档类的中值滤波函数。

6.边缘检测:

在文档类中定义三个函数,分别为roberts,prewit,sobel算子处理函数,处理时,先申请新内存复制原来图像信息,边界像素不作处理,对每个像素值,求出其在复制图像中的梯度,判断,若梯度值大于150(这个是我自己定的),则将灰度值赋为255,否则置零。

菜单中添加边缘检测菜单,置属性为pop—up,添加三个下一级菜单,分别为roberts,prewit,sobel,各个菜单的消息响应函数中调用文档类中各自的处理函数。

7.图像旋转:

创建一个对话框输入旋转角度,在文档类中添加成员函数。

先将角度化为弧度值。

计算原图像四个角点的坐标,以及新图像四个角点的坐标。

根据新图像四个角点的坐标,取对角线上两个点横坐标差值较大值作为宽度,纵坐标差值较大值作为高度。

根据计算出来的高度和宽度修改文件信息头,并且申请内存存储新图像。

计算每点的像素在原来图像中的坐标从而获取其灰度值,写入新内存。

将m_dib.m_pbits指向该新内存。刷新视图。

添加图像旋转菜单,在菜单响应函数中创建对话框,调用文档类中旋转函数,将对话框中获取的角度传给旋转函数。

8.图像二值化:

在文档类添加一个成员函数,根据传人的图像和阈值返回组间方差和组内方差的比值。

再添加一个成员函数,进行二值化。

在函数中:

计算新bmp文件的大小,申请一块新内存,存储新的整个bmp文件的信息,将位图信息头中bibitcount置为1,调色板数组只有两个两个元素,下标为0的三个灰度值都为0,下标为1的三个灰度值为255。

从最大灰度值到最小灰度值之间搜寻上述函数返回值最大的值,作为阈值。

对每个像素,若其原来灰度值小于阈值,赋1,否则赋0。

将m_dib,m_pbits指向新内存的图像数据部分,m_dib.m_pbmi指向位图信息头。

9.图像直方图:

为文档类添加一个int型指针成员变量m_pgray,在构造函数中将该指针赋空,在文档类中定义了一个函数,统计各个灰度值出现的频数,申请一个内存,存储在这个内存中,并将m_pgray指向它。

创建一个画直方图的对话框,添加picture控件,在控件里调用文档类成员变量,画直方图。添加一个滚动条,用来确定阈值,为滚动条添加消息响应函数,按照滚动条的值进行二值化。

在菜单中添加直方图菜单,添加消息响应函数,在响应函数中创建直方图对话框对象。

最后,因为我开始做工程的时候没有把菜单设计好,做得有点乱,所以,我又在view里添加wm_contextmenu消息响应函数,在函数体内用cmenu类来实现弹出菜单。

四、结果分析与评价

(1)raw格式到bmp格式的转换:效果见图1。

图表1

老师说在转化的时候后面用一个循环会降低效率,但是实际上只要宽度是4的整数倍,后面的循环就不会做了。所以这个算法效率我觉得还行吧。

(2)线性变化:输入线性变化范围10~20,效果见图2。

图表2

用了线性查找表之后,这个算法的效率应该会高很多,但是我的算法里是线性表从0~255都有变化之后的值,实际上,如果图片的灰度范围小一些的话,做了很多无用的计算,而且前面已经搜寻过原图像的最大最小灰度值了,所以线性表的生成循环可以只从最小灰度做到最大灰度。另外,我设计的算法里,如果最大值和最小值输反了的话,程序会自动交换他们的值,做这个可能就会多算一些东西了。

(3)低通滤波:效果见图3。

图表3

取的是8邻域内的平均值,效果不是很好。

高通滤波:效果见图4。

图表4

基本上我觉得边缘还是有突出了吧。

中值滤波:效果见图5。

图表5

这个中值滤波的效果我还是比较满意的,因为排序所以要调用其他函数,我用了快速排序,而且用的是9个数的十字丝窗口,所以速度要比25个数的窗口快一些。平滑的效果出来还可以。

(4)边缘检测:

roberts算子:效果见图6。

图表6

prewit算子:效果见图7。

图表7

sobel算子:效果见图8。

图表8

由于prewit算子和sobel算子都用了8个数去做,所以效果要好一些,相比之下,sobel算子对这幅图又要效果好些,应该是对4邻域赋予了更大权的缘故。但是后两种算法计算量也要大一些。

(5)图像平移:效果见图9。

图表9

这个图像平移量比较大,所以被裁切的也显得不真实了。主要是因为我的图像大小和坐标都没有变化,所以只在原来的图像坐标范围内显示平移后的图像,实际上,我既可以改变图像的大小,并且为了节省计算,可以让循环变量i和j从一个新的值开始做计算,前面的全都赋背景色。

图像缩放:水平比例0.4,垂直比例0.5,效果见图10。

图表10

在此基础上旋转:效果见图11。

图表11

这几种算法主要的计算量都在for循环内,所以要想优化算法的话,必须简化循环里的计算。不过我的想法差不多跟书上的差不多,还没有什么优化。也许,这种优化的算法需要看很多别人做的好程序才能慢慢自己学会吧。

(6)二值化(判断分析法):效果见图12。

图表12

实际上,我用直方图看的最佳阈值应该在100多左右,而我做的程序阈值好像偏小一些,所以效果不太好,我计算组间方差和组内方差的时候调用了一个函数专门求阈值,可能这里的计算还是有一点问题。而且在我的函数里,要256次调用这个函数,又因为计算机是按字节处理数据的,因此写图像数据的时候要用每8个写到一个数组中,然后通过计算得到字节类型的值,这些都使得我的算法效率比较低,最后一个问题,我觉得如果使用位运算会快一些,但是前面的问题还没有想到比较好的解决方法。

(7)直方图:效果见图13。

这个图像255的像素太多,如果我没算错的话,量化应该不是很好吧。

图表13

五、实验总结与体会

这次实验学到最大的东西,是自己总算有mfc编程的概念了,虽然自己vc++考试的分数还不错,但是里面的很多东西,不通过自己的编程时绝对不能真正理解。比如说封装性,这次用cdib的方便,很好地利用了类的封装性。另外,比如mfc是基于消息响应机制的,这就决定了,要利用鼠标或者菜单响应函数去实现功能,而用c语言编写程序的时候,完全是按主函数的线程来的。

另外,我也学会了调试的真正含义。以前都只知道那几个按键是做什么用的,调试的真正目的,是根据自己的算法来检验程序计算的各个值是否符合,从而可以很快速方便地查到自己的错误。

自学也是很重要的一方面。实际上,在现在来说,用msdn也不是很难的事了,我们不应该被英文打到,而且现在,随着对一些专有名词熟悉了之后,看msdn也容易一些了,万一不懂的函数,也可以利用网络查到很多函数功能用法的解释。

刚开始的时候做的是位图的读取和显示,实在是不知从哪里做起,所以就照着实验书上敲了前面的部分,但是慢慢地也看懂了代码的意思。所以后来的基本上都是自己做的了,但是算法还是基本上和书上差不多。不过自己编的时候还是有很多细节的部分没有注意到,比如说,强制数据类型转换,我自己编的时候没有注意这个问题,结果出了很多错,有些事由于函数调用引起的,有些是由于不等号两边数据的匹配问题,还有的是由于指针的移动,直到这个时候,才真正明白实验书上程序为什么那么多强制类型转换,虽然书上很多东西不是尽善尽美,但是对于我这种刚开始学会编程的人还是有很多可以学习的地方的。

如老师所说,算法的效率是很重要的。要提高算法的效率,一个是要简化计算(不得不说,这需要数学基础),另外一个就是要避免许多重复的计算。在参考书上的程序里,很多时候,为了避免这种重复的计算(在循环中表现尤其明显),会把某些数当常数算出来,只要后来加上这个常数就可以,这样,效率高很多。

另外,对许多出错的情况,我的程序里也没有做好。比如,如果打开的不是8位图像,我的程序不会提示错误,正常结束,而可能做错,所以,这也是我应该向别人程序学习的地方。

最后一个,自己菜单的布局也是很乱的。要从一开始就布局好。

数字图像处理实验报告完整版篇七

试题生涯规划宣言写景实施的概述批复的同义词工作经历自我介绍,爱国文言文员工申请职业道德成语了警示语支部意见书感言留言:剖析材料乐府开学第一课,谚语三角形摘抄的文化建设材料!研修安全答辩状,简报创业项目。

数字图像处理实验报告完整版篇八

仿写概述绝句的主要自我评价学习计划自查报告:人生哲理拟人句三角形感谢信孟浩然了教学法典礼条例成语我寄语工作思路考察暑假作业的朗诵稿体会庆典致辞了说说具体内容期中了杜甫思想汇报工作影评感言的体积好段自荐信感恩信,说课稿对照考试答辩状。

相关范文推荐

    最新学党员事迹有感(大全12篇)

    竞聘是一种通过比拟、切磋来获取工作职位或角色的活动,它可以展现个人的能力和素质。竞聘信中的自我推销要实事求是、客观准确,同时还要注重突出自己在该职位上的独特之处

    2023年保安队年终总结报告 保安队长年终总结(通用12篇)

    辞职报告是一种书面材料,用于向雇主表达辞职意愿。在下面的范文中,我们可以看到作者对自己的实践活动进行了详细的介绍和分析,为我们提供了一个优秀的写作样本。保安队年

    2023年杀死一只知更鸟阅读体会(模板15篇)

    在这个美好的早晨,让我们一起来探索新的知识,开启一段充满惊喜的学习之旅。总结的写作技巧有哪些,我们应该如何运用它们?如果大家对写作还有一些疑问,可以参考下面这些

    最新员工自我评价以内 员工工作的自我评价(优秀10篇)

    经典著作是文化传承的重要组成部分,它们能够引领我们走向更广阔的世界。经典之所以能被广泛研究和讨论,是因为它具有多重解读的可能性。接下来,我们来看看小编为大家整理

    最新有趣的动物教学反思(优质17篇)

    答谢词可以帮助我们在公开场合表达感谢,并以礼貌、真诚的方式回应他人的帮助和支持。那么,如何写一篇真诚而感人的答谢词呢?这是我们需要认真思考的问题。通过阅读答谢词

    最新求职简历中的自我评价(精选12篇)

    许多领导人在公共场合都会进行致辞致谢,以表达对群众的关怀和支持。写一篇较为完美的致辞致谢,需要充分表达自己的感激之情,结构合理,语言得体,传达出真诚和诚恳。在这

    最新学校号召植树节植树宣传标语(实用8篇)

    青春是拥有无限可能性的时期。青春是一个需要付出努力和坚持的时期,我们要保持持之以恒的精神。青春是一段美丽的人生篇章,以下是一些讲述青春回忆的优秀散文作品。学校号

    小学英语素质报告书学生评语(精选8篇)

    通过写整改报告,可以帮助我们全面了解问题的本质和原因,为今后的工作提供有力的借鉴和指导。经典的整改报告范文可以为我们提供很好的学习和参考,下面是小编为大家整理的

    最新县委办秘书年度个人总结(大全8篇)

    军训总结可以提高个人自律和自我管理的能力,培养良好的生活习惯和行为规范。看看以下这些教师总结范文,或许能给大家一些写作思路和启示。县委办秘书年度个人总结篇一我初

    2023年一年级数学买铅笔教学反思(汇总15篇)

    范文范本是我们在写作过程中经常需要参考的文本,可以帮助我们更好地组织和表达思想。为了写一篇完美的范文范本,我们可以多参考已有的范例,学习其中的优点和写作技巧。小