Visual+C++实现数字图像增强处理

Visual+C++实现数字图像增强处理

ID:47106096

大小:135.00 KB

页数:13页

时间:2019-08-04

Visual+C++实现数字图像增强处理_第1页
Visual+C++实现数字图像增强处理_第2页
Visual+C++实现数字图像增强处理_第3页
Visual+C++实现数字图像增强处理_第4页
Visual+C++实现数字图像增强处理_第5页
资源描述:

《Visual+C++实现数字图像增强处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、前言  对于一个图像处理系统来说,可以将流程分为三个阶段,在获取原始图像后,首先是图像预处理阶段、第二是特征抽取阶段、第三是识别分析阶段。图像预处理阶段尤为重要,如果这阶段处理不好,后面的工作根本无法展开。    在实际应用中,我们的系统获取的原始图像不是完美的,例如对于系统获取的原始图像,由于噪声、光照等原因,图像的质量不高,所以需要进行预处理,以有利于提取我们感兴趣的信息。图像的预处理包括图像增强、平滑滤波、锐化等内容。图像的预处理既可以在空间域实现,也可以在频域内实现,我们主要介绍在空间域内对图像进行点运算,它是一种既简单又重要的图像处理技术,它能

2、让用户改变图像上像素点的灰度值,这样通过点运算处理将产生一幅新图像。下面我们开始介绍与图像点运算的相关知识。  一、图像的直方图  图像直方图是图像处理中一种十分重要的图像分析工具,它描述了一幅图像的灰度级内容,任何一幅图像的直方图都包含了丰富的信息,它主要用在图象分割,图像灰度变换等处理过程中。从数学上来说图像直方图是图像各灰度值统计特性与图像灰度值的函数,它统计一幅图像中各个灰度级出现的次数或概率;从图形上来说,它是一个二维图,横坐标表示图像中各个像素点的灰度级,纵坐标为各个灰度级上图像各个像素点出现的次数或概率。如果不特别说明,本讲座中的直方图的纵

3、坐标都对应着该灰度级在图像中出现的概率。我们的例子是在一个对话框中显示一个图像的直方图,为实现该目的,我们定义了一个名为"ZFT"的对话框类用来显示图像的直方图,具体实现代码和效果图如下(关于代码实现部分可以参考笔者2001年在天极网上发表的一篇VC实现数字图像处理的文章)://////////////////////////////////直方图对话框构造函数;ZFT::ZFT(CWnd*pParent/*=NULL*/):CDialog(ZFT::IDD,pParent)//ZFT为定义的用来显示直方图的对话框类;{ Width=Height=0;/

4、/对话框初始化阶段设置图像的宽和高为"0";}////////////////////////对话框重画函数;voidZFT::OnPaint(){ CRectrect;//矩形区域对象; CWnd*pWnd;//得到图片框的窗口指针; pWnd=GetDlgItem(IDC_Graphic);//得到ZFT对话框内的"Frame"控件的指针; file://(IDC_Graphic为放置在对话框上的一个"Picture"控件,并讲类型设置为"Frame")。 pWnd->GetClientRect(&rect);//得到"Frame"控件窗口的"视"区

5、域; inti; CPaintDCdc(pWnd);//得到"Frame"控件的设备上下文; file://画直方图的x、y轴; dc.MoveTo(0,rect.Height()); dc.LineTo(rect.Width(),rect.Height()); dc.MoveTo(0,rect.Height()); dc.LineTo(0,0); file://画直方图,num[]是"ZFT"的内部数组变量,存放的是图像各个灰度级出现的概率;该数组的各个分量在  显示具体图像的直方图时设置; for(i=0;i<256;i++)//根据图像上的各个灰度

6、级出现的概率,在坐标上对应的画出一根直线,从而各个表示各灰度级出现概率的直线构成了图像的直方图; {  dc.MoveTo(i+1,rect.Height());  dc.LineTo(i+1,(rect.Height()-rect.Height()*num[i]*30));  file://此处num分量乘以"30"是为了放大个灰度级上对应的出现概率直线,增强显示效果; }}////////////////////////////////////////////////////////voidZFT::OnMouseMove(UINTnFlags,CP

7、ointpoint){//OnMouseMove函数处理鼠标消息,显示当前鼠标所在直方图上的灰度值等信息; CWnd*pWnd,*pWndText;//定义两个窗口对象; CPointpoint1;//定义个一个点对象; point1=point;//存放当前鼠标的位置信息; CRectrect;//矩形对象; CStringstring;//字符串对象; pWnd=GetDlgItem(IDC_Graphic);//得到显示直方图的框架窗口对象指针; pWndText=GetDlgItem(IDC_NUM);//得到指向文本框对象(IDC_NUM)窗口

8、的指针; pWnd->GetWindowRect(&rect);//获取pWnd

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。