【Emgu CV教程】6.11、图像平滑之快速非局部平均去噪


一、函数介绍

快速非局部平均去噪” 是消除图像噪声的,在这里也放到了图像平滑这一单原来介绍。这个函数名气不大,不像前面那些函数应用广泛。根据网上专家的介绍,它是利用整幅图像进行去噪,以图像块为单位在图像中寻找相似区域,再对这些区域求平均,能够比较好地去掉图像中存在的高斯噪声。因此函数执行要消耗更多的时间,但是结果很好。

1.FastNlMeansDenoising()函数

灰度图进行快速非局部平均去噪时,使用FastNlMeansDenoising()函数,官方定义如下:

public static void FastNlMeansDenoising(
	IInputArray src,  // 输入图像
	IOutputArray dst, // 输出图像
	float h = 3f, // 灰度图过滤器强度。h值高可以很好的去除噪声,但也会把图像的细节抹去。
	int templateWindowSize = 7, // 相似性权重计算窗口大小(奇数,推荐值为 7)
	int searchWindowSize = 21 // 搜索窗口大小,建议是相似性权重计算窗口大小的3-5倍
)

2.FastNlMeansDenoisingColored()

彩色图像进行快速非局部平均去噪时,使用FastNlMeansDenoisingColored()函数,官方定义如下:

public static void FastNlMeansDenoisingColored(
	IInputArray src,  // 输入图像
	IOutputArray dst, // 输出图像
	float h = 3f, // 灰度图过滤器强度。h值高可以很好的去除噪声,但也会把图像的细节抹去。
	float hColor = 3f, // 彩色图像过滤器强度。h值高可以很好的去除噪声,但也会把图像的细节抹去。
	int templateWindowSize = 7, // 相似性权重计算窗口大小(奇数,推荐值为 7)
	int searchWindowSize = 21 // 搜索窗口大小,建议是相似性权重计算窗口大小的3-5倍
)

二、举例

1.原始素材

原始素材定义为srcMat,如下:
在这里插入图片描述
还是这张熟悉的向日葵图像,里面有白色和黑色的斑点作为椒盐噪声。

2.灰度图FastNlMeansDenoising()快速非局部平均去噪

代码如下:

Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat();
int h = 20; // 灰度图滤器强度
int templateWindowSize = 7; // 相似性权重计算窗口大小(奇数,推荐值为 7)
int searchWindowSize = 21; // 搜索窗口大小,相似性权重计算窗口大小的3-5倍
CvInvoke.CvtColor(tempMat, tempMat, ColorConversion.Bgr2Gray);
CvInvoke.FastNlMeansDenoising(tempMat, dstMat, h, templateWindowSize, searchWindowSize);

代码执行结果如下:
在这里插入图片描述
输出结果是一个灰度图,里面绝大多数的的椒盐噪声已经去除掉了,但是在我的笔记本电脑上,代码执行时间用了0.2秒左右,比较慢。

3.彩色图像FastNlMeansDenoisingColored()快速非局部平均去噪

代码如下:

Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat();
int h = 20; // 灰度图滤器强度
int hColor = 20; // 彩色图滤器强度
int templateWindowSize = 7; // 相似性权重计算窗口大小(奇数,推荐值为 7)
int searchWindowSize = 21; // 搜索窗口大小,相似性权重计算窗口大小的3-5倍
CvInvoke.FastNlMeansDenoisingColored(tempMat, dstMat, h, hColor, templateWindowSize, searchWindowSize);

执行结果是:
在这里插入图片描述
基本上椒盐噪声也全部去掉了,代码执行时间在0.45秒左右。

注意,在彩色图像去噪时,传入FastNlMeansDenoisingColored()函数的h参数和hColor参数都要设置。


原创不易,请勿抄袭。共同进步,相互学习。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值