Vc++数字图像处理Matlab语音信号及信号处理 联系客服

发布时间 : 星期一 文章Vc++数字图像处理Matlab语音信号及信号处理更新完毕开始阅读26ad93fa4693daef5ef73d15

数字图像处理设计

一、设计题目

基于Visual C++的图像平滑、锐化处理 二、设计要求

基于Visual C++的MFC程序设计,实现对灰度图像简单的平滑处理与拉普拉斯锐化处理。并能得到处理后所需的图像。 三、设计原理 (一)、图像平滑

1 图像平滑的基本概述

图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量的图像处理方法。

2 图像平滑的基本方法 (1)线性滤波(领域平均法)

对一些图像进行线性滤波可以去除图像中某些类型的噪声。领域平均法就是一种非常适合去除通过扫描得到的图像中的噪声颗粒的线性滤波。

领域平均法是空间域平滑噪声技术。对于给定的图像f?i,j?中的每个像素点

?m,n?,取其领域S。设S含有M个像素,取其平均值作为处理后所得图像像素点?m,n?处的灰度。用一像素领域内各像素灰度平均值来代替该像素原来的灰度,

即领域平均技术。

领域S的形状和大小根据图像特点确定。一般取的形状是正方形、矩形及十字形等,S的形状和大小可以在全图处理过程中保持不变,也可以根据图像的局部统计特性而变化,点(m,n)一般位于S的中心。如S为3×3领域,点(m,n)位于S中心,则

111 f?m,n????f?m?i,n?j?

9i??1j??1假设噪声n是加性噪声,在空间各点互不相关,且期望为0,方差为?2,图像g是未受污染的图像,含有噪声图像f经过加权平均后为

111????fi,j?gi,j? f?m,n?????n?i,j?

MMM212由上式可知,经过平均后,噪声的均值不变,方差???,即方差变小,

M说明噪声强度减弱了,抑制了噪声。 (2)中值滤波

中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。中值滤波的基本原理是把数字图像或数字序列中一点的

值用该点的一个邻域中各点值的中值代替。

设有一个一维序列f1,,…,fn,取窗口长度为m(m为奇数),对此序列进行中值滤波,就是从输入序列中f2相继抽出m个数,fi?v,…,fi?1,…,f1,…,

m?1fi?1,…,fi?v,其中i为窗口的中心位置,v?,再将这m个点按其数值大

2小排列,取其序号为正中间的那作为输出。用数学公式表示为:

Yi?Med?fi?v,?,fi,?,fi?v?

m?1 i?Z,v?

2例如,有一个序列为{1,3,4,0,7},则中值滤波为重新排序后的序列{0,1,3,4,7}中间的值为3。此例若用平均滤波,窗口也是取5,那么平均滤波输

?1?3?4?0?7??3.0。因此平均滤波的一般输出为: 出为

5?f?fi?v?1???fi???fi?v? Zi?i?vm i?Z

对于二维序列?Xij?进行中值滤波时,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的中值滤波可以表示为:

Yi,j?Med{Xij}

A其中,A为滤波窗口。 (二)、图像锐化

1 图像锐化的基本概述

图像在传输过程中,通常质量都要降低,除了噪声因素外,图像一般都要变得模糊。这主要是因为图像的传输或转换系统的传递函数对高频成分的衰减作用,造成图像的细节轮廓不清晰。图像锐化就是补偿图像的轮廓,使图像比较清晰。

2 图像锐化的基本方法 (1)微分算子法

设有一副图像f?x,y?,它的梯度用数学概念描述为一个向量,定义为 T??f?f? G?f?x,y???? ???x?y?1该向量的模为 222???f???f??? G?f?x,y??????????? ?x?y?????????x,y?的梯度,它是上式所表示的G?f?x,y??称为图像fx,y的函数,实际上也是图像f?x,y?的梯度图像。

对于数字图像f?x,y?来讲,微分算近似后的梯度表达式为

?f?f和只能用查分来近似。上式按差分运?y?x2122 G?f?x,y????f?x,y??f?x?1,y????f?x,y??f?x,y?1??

1

但是,实际计算时,用这种方式计算量较大,为了节省计算机计算的时间,在计算精度允许的情况下,可蔡勇绝对差法。对应的绝对差算法为 G?f?x,y???f?x,y??f?x?1,y??f?x,y??f?x,y?1?

必须注意的是,用梯度计算时,对于一个M×N的数字图像f(x,y)(x=0,M-1,y=0,N-1),

点(M-1,y)和(X,N-1)的梯度是无法进行计算的。因此,图像f(x,y)的最后一行(第M-1行)和最后一列(第N-1列)的像素的梯度值应该进行特殊处理。常用的方法是(M-1,y)的梯度值用(M-2,y)的梯度值来代替,(x,N-1)的梯度值用(x,N-2)的梯度值来代替。 (2)拉氏算子

拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性,比较适用于改善因为光线的漫反射造成的图像模糊。其原理是,在摄像记录图像的过程中,光点将光漫反射到其周围区域,这个过程满足扩散方程:

?f?kV2f ?t经过推导,可以发现当图像的模糊是由光的漫反射造成时,不模糊图像等于模糊图像减去它的拉普拉斯变换的常数倍。另外,人们还发现,即使模糊不是由于光的漫反射造成的,对图像进行拉普拉斯变换也可以使图像更清晰。

拉普拉斯锐化的一维处理表达式是:

d2f?x? g?x??f?x??

dx2在二维情况下,拉普拉斯算子使走向不同的轮廓能够在垂直的方向上具有类

似于一维那样的锐化效应,其表达式为:

?2f?2f2 ?f?2?2

?x?y对于离散函数f?i,j?,拉氏算子定义为

?2f?i,j???xf?i,j???yf?i,j?

22

其中

?xf?i,j? =?x??xf?i,j?? =?x?f?i?1,j??f?i,j?? =?xf?i?1,j???xf?i,j?

=f?i?1,j??f?i,j??f?i,j??f?i?1,j? =f?i?1,j??f?i?1,j??2f?i,j?

同理

?yf?i,j??f?i,j??f?i,j?1?

2

类似的有

?yf?i,j??f?i,j?1??f?i,j?1??2f?i,j?

2所以有

?2f?i,j??f?i?1,j??f?i??1,?j?1??f?i,j?1??4f?i,j? 0,j??1f?i0? 则拉式算子的模板表示为:?1?41???10?四、源程序清单 ?0? #include \ #include \ #include \ #include \ #include \ #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

IMPLEMENT_DYNCREATE(CDIPDemoView, CScrollView) BEGIN_MESSAGE_MAP(CDIPDemoView, CScrollView)

//{{AFX_MSG_MAP(CDIPDemoView)

ON_COMMAND(ID_ENHA_SMOOTH, OnEnhaSmooth) ON_COMMAND(ID_ENHA_SHARP, OnEnhaSharp) //}}AFX_MSG_MAP

END_MESSAGE_MAP()

CDIPDemoView::CDIPDemoView() : m_bLBtnDblClkSrv(0) {

// TODO: add construction code here }

CDIPDemoView::~CDIPDemoView() { }

void CDIPDemoView::OnDraw(CDC* pDC) {

3