图像滤波常见方法原理总结及VC下实现

      在进行图像目标识别与跟踪时,摄像机所采集的图像,在成像、数字化以及传输过程中,难免会受到各种各样噪声的干扰,图像的质量往往会出现不尽人意的退化,影响了图像的视觉效果。通常这些噪声干扰使得图像退化,表现为图像模糊,特征淹没,这会对图像分析产生不利,使所获得的图像质量较低。对这样的图像直接进行目标的识别与跟踪是比较困难的。抑制使图像退化的各种干扰信号、增强图像中的有用信号,以及将观测到的不同图像在同一约束条件下进行校正处理就显得非常重要。本文主要对图像预处理过程中的滤波方法进行总结,阐述滤波原理,在VC下基于OpenCV实现各种算法,并给出各种滤波的效果。

1、高斯滤波

      高斯滤波是一种线性平滑滤波,适用于滤除高斯白噪声,已广泛应用于图像处理的预处理阶段。按照本人的理解,对图像进行高斯滤波就是对图像中的每个点的像素值计算,计算的准则是,由该点本身灰度值以及其邻域内的其他像素灰度值加权平均所得,而加权平均的权系数由二维离散高斯函数采样并归一化后所得。具体的高斯函数及其离散化参考《高斯图像滤波原理及其编程离散化实现方法》一文。以下给出图像高斯滤波的实现代码。

void GuassFilter(CvMat *pGrayMat, CvMat* pFilterMat, int nWidth, int nHeight, double dSigma)
{
	参数说明///
	//pGrayMat:待处理图像数组
	//pFilterMat:保存高斯滤波结果
	//nWidth:图像宽度
	//nHeight:图像高度
	//dSigma:高斯滤波参数,方差
	int nWidowSize = (int)(1+2*ceil(3*dSigma));  //定义滤波窗口的大小
	int nCenter = (nWidowSize)/2;                //定义滤波窗口中心的索引
	//生成二维的高斯滤波系数
	double* pdKernal = new double[nWidowSize*nWidowSize]; //定义一维高斯核数组
	double  dSum = 0.0;	                                  //求和,进行归一化		
	/二维高斯函数公式//     
	//	                         x*x+y*y        ///
	//	                   -1*--------------	///
	//          1               2*Sigma*Sigma	///
	//   ---------------- e						///
	//   2*pi*Sigma*Sigma						///
	///
	for(int i=0; i<nWidowSize; i++)
	{
		for(int j=0; j<nWidowSize; j++)
		{
			int nDis_x = i-nCenter;
			int nDis_y = j-nCenter;
			pdKernal[i+j*nWidowSize]=exp(-(1/2)*(nDis_x*nDis_x+nDis_y*nDis_y)
				/(dSigma*dSigma))/(2*3.1415926*dSigma*dSigma);
			dSum += pdKernal[i+j*nWidowSize];
		}
	}
	//进行归一化
	for(i=0; i<nWidowSize; i++)
	{
		for(int j=0; j<nWidowSize; j++)
		{
			pdKernal[i+j*nWidowSize] /= dSum;
		}
	}
	for(i=0; i<nHeight; i++)
	{
		for(int j=0; j<nWidth; j++)
		{
			double dFilter=0.0;
			double dSum = 0.0;
			for(int x=(-nCenter); x<=nCenter; x++)			//行
			{
				for(int y=(-nCenter); y<=nCenter; y++)		//列
				{
					if( (j+x)>=0 && (j+x)<nWidth &
  • 4
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值