版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WSDS_MZM/article/details/78938696
平滑处理 — 双边平滑
相关函数:
C++: void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, intborderType=BORDER_DEFAULT )
参数解析:
- src – 源必须是8位或者浮点数,1或者3通道图片。
- dst – 输出图片,和输入图片相同大小和深度。
- d – 在滤波过程中使用的各像素邻域直径,如果这是一个非整数,则这个值由sigmaSpace决定。
- sigmaColor – 颜色空间的标准方差。数值越大,意味着越远的的颜色会被混进邻域内,从而使更大的颜色段获得相同的颜色。
- sigmaSpace – 坐标空间的标注方差。 数值越大,以为着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。当d>0,d指定了邻域大小且与sigmaSpace无关。否则,d正比于sigmaSpace。
相关实例:
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include"opencv2/imgproc/imgproc.hpp"
#include <stdio.h>
using namespace cv;
/*
双边平滑:void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, intborderType=BORDER_DEFAULT )
参数解析:
src – 源必须是8位或者浮点数,1或者3通道图片。
dst – 输出图片,和输入图片相同大小和深度。
d – 在滤波过程中使用的各像素邻域直径,如果这是一个非整数,则这个值由sigmaSpace决定。
sigmaColor – 颜色空间的标准方差。数值越大,意味着越远的的颜色会被混进邻域内,从而使更大的颜色段获得相同的颜色。
sigmaSpace – 坐标空间的标注方差。 数值越大,以为着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。当d>0,d指定了邻域大小且与sigmaSpace无关。否则,d正比于sigmaSpace。
**/
int main() {
cvNamedWindow("双边平滑原图", 0);
cvNamedWindow("双边平滑效果图",0);
Mat imageSrc = imread("寒冰射手.jpg");
imshow("双边平滑原图", imageSrc);
Mat imageChange;
//双边平滑处理
bilateralFilter(imageSrc, imageChange, 3, 3 * 2, 3 / 2);
//显示效果图
imshow("双边平滑效果图", imageChange);
waitKey(6000 * 100);
}
效果图(好像没多大区别。。。)