ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:1.16MB ,
资源ID:6061872      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6061872.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于visual c++的图像处理的基本操作.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于visual c++的图像处理的基本操作.docx

1、基于visual c+的图像处理的基本操作 基于VS2005的图像处理学 号:* 学生所在学院:信息工程学院 学 生 姓 名 :黄 继 昆 任 课 教 师 :* *教师所在学院:信息工程学院 2012年5月摘要:VC是一种快速高效的可视化开发语言,在图形绘制和图像处理上功能较强。本文介绍了基于VS2005的VC图像处理,主要包括,实现对一副位图的灰度变换,二值化,缩放,任意角度的旋转,刚兴趣区域的提取与保存,为图像添加噪声和用多种方法去除噪声,最后讲到了常见的图像格式之间的转换,以及打开图像文件夹下的任意格式的图像进行浏览,幻灯片播放和定时自动播放。关键词: 灰度变换 二值变换 缩放 旋转 区

2、域提取 去噪 常见格式转换 自动播放 幻灯片播放引言数字图像处理(Digital Image Processing),就是利用数字计算机或则其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。目前数字图像处理的应用越来越广泛,已经渗透到工业、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。VisualStudio2005提供了高度安全性、可靠性、快速性的编译优化方法,完全

3、编译出原始机器码而非中间码,软件执行速度大大提高。在编译和连接过程中,VisualStudio2005自动忽略未被修改的原代码和没有使用的函数,从而大大提高了编译和连接速度。VisualStudio2005的CPU透视工具包括五个独立的小面板,可以对正在运行程序从内部进行深层次的了解。另外VisualStudio2005还提供了一个专业开发环境所必需的命令行工具,以帮助建立C+程序或者准备编译和连接的程序进行更精细的控制。以VS2005为开发平台,利用VC进行图像处理,既方便又快捷。VC当中为我们提供了一个封装好的类MFC。我们通过利用MFC当中封装好的类进行图像处理可以达到既方便又快捷。 1

4、.图像调节1.1灰度变换1.1.1 彩色图像转换为灰度图像图像的灰度变换处理时图像增强处理技术中一种非常基础,直接的空间域图像处理方法,也是图像数字化软件和图像显示软件的一个重要组成部分。灰度变换是指根据某种目标条件按一定变换关系逐点改变原图像中每个像素灰度值的方法。目的是为了改善画质,使图像的显示效果更加清晰。 颜色可以为黑白色,灰度色和彩色。工程应用中经常要用到把彩色图像变换为灰度图像,采集卡过来的图像为彩色图像,为加快处理速度,要把彩色图转化为黑白图像。 一般情况下彩色图像每个像素用三个分量,每个分量对应着R、G、B,转换后的黑白图像的每个像素用一个分量表示该点的灰度值,取值在0255,

5、255表示白色,0表示黑色,其余取值根据其在0255之间的分布,取得相应的颜色。RGB图像转化为灰度的图像方法很多,主要有:1,最大值法;2,平均值法;3,加权平均值法。本文所讲的灰度变换是利用加权平均值法,公式如下: (1.1)其中为转化后黑白图像在点处的灰度值。灰化处理的思想:使图像RGB三个通道的值都等于Gray(i,j)。一 实现步骤:(1) 首先打开vs2005软件创建一个单文档应用程序,取名为Image;(2) 打开一幅位图;(3) 定义一个全局变量unsigned char* m_pDib,并为其开辟足够大的空间,将打开的图像的数据区保存到该指针所指向的内存。本文后续对图像的所有

6、处理都是对该内从当中的数据进行处理。(3) 使图像RGB三个通道的值都等于Gray(i,j);(4) 得到变换后的图像并显示。在程序中的操作如下:运行程序出现如下图所示的单文档对话框后单击文件打开打开Bmp格式,就可以打开一张Bmp格式的彩色图像并进行处理。本文所说的处理图像的格式都是Bmp格式。所以在处理图像之前要选择打开一张Bmp格式的图片。 图1-1 打开一幅图像二 处理结果图 1.2 原始图片图 1.3 灰度化后的图片1.1.2 二值化处理一副图像包括目标物体,背景及噪声,怎样从多值的数字图像中只读取出目标物体,最常用的就是阈值处理。阈值化(thresholding)可以看作是削波的一

7、个特例,我们用图1.1说明阈值化的原理。图1.4 阈值化的原理不难看出,只要令削波中的g1old=g2old就实现了阈值化。阈值就象个门槛,比它大就是白,比它小就是黑。经过阈值化处理后的图象变成了黑白二值图,所以说阈值化是灰度图转二值图的一种常用方法。进行阈值化只需给出阈值点g1old即可。阈值化变换函数表达式如下: (2.1) 本程序中设定阈值为128,即取0与255的平均值,即为二值化处理。一 实现步骤(1) 读取图像文件(2) 利用图像的数据区指针,利用加权平均值求得像素的灰度值(3) 将每个像素的灰度值与127比较(4) 将比较得到的值返回给红、绿、蓝三个分量(5) 得到变换后的图像并

8、显示二 流程图三 软件处理结果 图1.5 灰度化并二值化后的图片1.2对比度调节对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小。所以我们调节对比度的时候只需要增大原来像素之间的层级即可,即我们得到每个像素的值,然后对每个像素点的RGB值根据我们需要增加的数值进行增加减少即可。一 实验步骤(1)打开一幅图像;(2)点击对比度调节,输入对比度调节的数值;(3)确定之后即显示出处理过之后的图像。二 核心算法为了保证我们的软件可以对一副图像进行连续的处理,我们这个地方处理数据的起始地址依然是我们之前灰度处理时,存放数据的内存的首地址,后续的处理都是一

9、样。for(i=0;iheight;i+) for(j=0;j=128) b+=ChangeVale; else b-=ChangeVale; if(g=128) g+=ChangeVale; else g-=ChangeVale; if(r=128) r+=ChangeVale; else r-=ChangeVale; if(b=255) *(pImgData+i*lineByte+j)=255; else if(b=255) *(pImgData+i*lineByte+j+1)=255; else if(g=255) *(pImgData+i*lineByte+j+2)=255; else

10、 if(r亮度调节,在弹出的对话框当中输入我们需要改变的数值;3 点击确定即可得到效果图二 核心算法for(i=0;iheight;i+) for(j=0;j=255) *(pImgData+i*lineByte+j)=255; else if(b=255) *(pImgData+i*lineByte+j+1)=255; else if(g=255) *(pImgData+i*lineByte+j+2)=255; else if(r1且1时,原图像被放大。当=2时,图像放大2倍,原图中的某一个像素,对应新图中的4个像素。如下图1-1所示。 (a)原图中的某个像素 (b)对应新图的4个像素 图3

11、.1 图像放大示意图(2) 当1且图像缩放,选择插值方式图2-1 输入缩放参数3 点击确定可以看到效果图图2-3 缩放后效果图2.2图像的旋转图像的旋转是以图像的中心为原点,旋转一定的角度。旋转后图像的大小一般会发生改变。图像的旋转既可以把转出显示区域的图像截去,也可以扩大图像范围以显示所有的图像。如图4.1所示,点(x0,y0)经过旋转度后坐标变成(x1,y1)。 图2-4 图像旋转示意图在旋转前: (4-1)旋转后: (4-2)上图旋转是绕坐标轴原点(0,0)进行的,向右为X轴正方向,向上为Y轴正方向,设其为坐标系II,而屏幕中的坐标一般以左上角为原点,以向右为X轴正方向、向下为Y轴正方向

12、,设其为坐标系I。如果是绕一个指定点(a,b)旋转,则要先将坐标系平移到该点,再进行旋转,然后平移回新的坐标原点。下面是坐标系平移转换公式的推导。如图4.2所示,将坐标系I平移到坐标系II处,其中坐标系II的原点在坐标系I中的坐标为(a,b)。 图2-5 旋转中心平移示意图设图像的宽度为w,高度为h,得到 (4-3)其逆变换矩阵表达式为: (4-4)按如下方法即可旋转图像:(1)根据公式4-3,将坐标系I变到坐标系II;(2)根据公式4-2,将该点顺时针旋转角;(3)根据公式4-4,将坐标系II变到坐标系I。假设图像在新的坐标系下,以旋转后新图像左上角为原点,未旋转时中心坐标为(a,b),旋转

13、后中心坐标为(c,d),则旋转变换矩阵表达式为:因此 (4-5)逆变换为: (4-6) 这样,对于新图中的每一点,可以根据式4-6求出对应原图中的点,得到它的灰度,如果超出原图范围,则置成白色。设图像原始宽度为wide原始高度为height,旋转后应首先计算出公式中需要的几个参数。如图1-4所示,原始图像4个角的坐标分别为: 旋转后图像4个角的坐标分别为: 按照旋转公式,在旋转后的新图中,这4个点的坐标为: 则新图像的宽度newwide和高度newheight为: 由图4-4可知,原图的中心坐标(a,b)在显示屏幕上的位置为: 旋转后图像的中心坐标(c,d) 在显示屏幕上的位置为: 根据式1-

14、6,设中间变量t1,t2,令: 所以 则一实验步骤1,打开一幅图像; (1)将角度化为弧度 (2)获得原始图像的宽度和高度以及原图的三个点的坐标,经过旋转后得到新图三个点的坐标。 (3)计算新图的宽度和高度,最后在原图范围内对像素点进行变换。 运行程序,在弹出的对话框中填入要旋转的角度,点击确定,就可得到旋转后的图像。2,点击菜单栏当中的几何变换-图像旋转-任意角度、左转90、右转90;4,点击确定查看实验结果。三 核心代码 for(x = 0; x = 0) & (x0 = 0) & (y0 图像旋转-任意角度、左转90、右转90;图2-6 输入参数3,效果图图2-7旋转30度之后的效果图图

15、2-8 左转90度效果图图2-9 右转90度效果图 3图像噪声的添加与去噪3.1 对图像进行加噪声3.1.1加入高斯噪声所谓高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。一个高斯随机变量z的PDF可表示为:P(z)=其中z代表灰度,u是z的均值,是z的标准差。高斯噪声的灰度值多集中在均值附近。(高斯函数)加入高斯噪声步骤:(1) 打开一幅图像;(2) 创建一个高斯函数,根据输入的均值和方差产生随机的高斯数;(3) 将步骤(2)产生的高斯数加到数据区。(4) 显示。3.1.2 加入椒盐噪声1.椒盐噪声实现步骤(1) 取得图像大小、数据区, 并把数据区复制到缓冲区中;(2) 循

16、环取得各点像素值;(3) 若产生的随机数小于特定值128, 把该点置0,大于128该点置255;(4) 把缓冲区中改动的数据复制到原数据区中,刷新显示。2.主要程序代码3.仿真实现 (1)原图像如图1-1所示; (2)菜单上点击添加噪声图3-1设置添加噪声参数选择相应的参数点击确定图3-2均值方差都为20的高斯噪声图3-3黑点白点数各为100的椒盐噪声3.2 对图像进行去噪平均滤波往往不只是把干扰去除, 还常把图像的边缘模糊, 因而造成视觉上的失真, 如果目的只要把干扰去除, 而不是刻意让图像模糊, 则中值滤波是比较好的选择。中值滤波是一种非线性的信号处理方法, 与其对应的中值滤波器也是一种非

17、线性的滤波器。它在一定的条件下, 可以克服线性滤波器如最小均方滤波、平均值滤波等所带来的图像细节模糊, 而且对滤波脉冲干扰及图像扫描噪声最为有效。特别适合用在有很强的胡椒粉式或脉冲式的干扰时, 因为这些干扰值与其邻近像素的灰度值有很大的差异, 因此经排序后取中值的结果是强迫将此干扰变成与其邻近的某些像素的灰度值一样, 达到去除干扰的效果。此次试验主要使用了均值滤波,中值滤波,线性平滑滤波(也属于均值滤波范畴),为了有更明显的效果,点击相应的菜单会弹出相应的对话框,我们可以设置相应的滤波窗的大小(大于等于三的奇数)。去噪结果图3-4 输入虑窗参数图3-5 均值滤波去除随机噪声图3-6均值滤波去除

18、椒盐噪声图3-7局部平均化去除随机噪声图3-9中值滤波去除高斯噪声图3-10中值滤波去除椒盐噪声结论:由此可见,使用中值滤波去除椒盐噪声比去除随机噪声更为有效,得到的效果更好。中值滤波比较适合去除椒盐噪声。4.对图像进行感兴趣部分的提取并保存 4.1显示感兴趣区域这部分主要功能是对图像当中自己感兴趣的区域进行显示,这部分的主要实现过程如下:(1)在菜单栏添加图像特征提取菜单,并将其popup属性设置为false,这样就可以直接为其添加命令相应了。在实现部分代码满足当点击该菜单的时候可以开始图像区域提取,然后再次点击取消该功能;(2)在view类中添加左键,右键和mousemove命令响应,实现

19、按住鼠标左键随着鼠标的移动画出一个矩形。同时找到感兴趣区域的位置。(3)松开鼠标左键的同时,弹出对话框,然后选择操作,是显示亦或者保存。图4-1 按下鼠标左键划出感兴趣的区域自动显示后续操作对话框(4)提取感兴趣区域的算法思想是,根据步骤(2)所选择的区域,在原图当中找到该感兴趣区域在原图当中对应的位置,然后将这部分拷贝到原数据区,然后覆盖到原来的数据区。然后刷新显示。 图4-2显示所选择的感兴趣区域 4.2 保存所选择的感兴趣区域该部分是在显示感兴趣区域的基础上做的,这部分的操作是在图4-1当中选择保存显示区域,然后点击确定,现在我们可以显示保存对话框。图4-3 保存选择的感兴趣区域这部分的

20、点击保存之后,将自己选择的感兴趣区域在原图像中那部分图像重新保存到一个新的内存区。然后调用保存函数,将这部分保存为bmp文件。5.图像浏览及格式转换我们知道,Visual C+的CBitmap类和静态图片控件的功能是比较弱的,它只能显示出在资源中的图标、位图、光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件(BMP、GIF、JPEG等)。因此,想要在对话框或其他窗口中显示外部图像文件则只能借助于第三方提供的控件或代码。 现在,MFC和ATL共享的新类CImage为图像处理提供了许多相应的方法,这使得Visual C+在图像方面的缺憾一去不复返了。CImage类概述:CImage

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1