自学内容网 自学内容网

【Emgu CV教程】6.8、图像平滑之EdgePreservingFilter()保边滤波


一、介绍

1.原理

EdgePreservingFilter()保边滤波也是非线性滤波,同时考虑了距离信息和色彩信息。注意它的特点:

1、可以模糊图像,保留边缘。
2、功能和双边滤波差不多,但是计算速度比双边滤波要快。

2.函数介绍

官方定义如下:

public static void EdgePreservingFilter(
IInputArray src,  // 输入图像
IOutputArray dst, // 输出图像
EdgePreservingFilterFlag flags = EdgePreservingFilterFlag.RecursFilter, // 保变滤波器类型。
float sigmaS = 60f, // 控制邻域的大小,越大图像模糊效果越明显
float sigmaR = 0.4f // 控制邻域内的不同颜色的平均值,越大图像滤波效果越明显
)

二、举例

1.原始素材

原始素材定义为srcMat,如下:
在这里插入图片描述
这是一只可爱的大熊猫。

2.代码

Emgu CV保边滤波代码如下:

Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat();
float sigmaS = 50.0f;
float sigmaR = 0.04f;
CvInvoke.EdgePreservingFilter(tempMat, dstMat, EdgePreservingFilterFlag.RecursFilter, sigmaS, sigmaR);
CvInvoke.Imshow("EdgePreservingFilterimage, " + dstMat.Size.ToString(), dstMat);

3.运行结果

在这里插入图片描述
大熊猫的边缘和竹子的边缘都是很清晰的,但是大熊猫的毛发已经被模糊了,这段程序在我的电脑用时0.12秒。而运行双边滤波大概用了0.03秒。结果就是BilateralFilter()双边滤波的计算速度比EdgePreservingFilter()保边滤波计算速度快很多

不是网上说EdgePreservingFilter()保边滤波速度快吗,我的程序怎么没发现?????


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


原文地址:https://blog.csdn.net/sswss12345/article/details/135977029

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!