Opencv学习----图像处理-图像过滤-cv::bilateralFilter(双边滤波器)

6.1 图像过滤

6.1.1 cv::bilateralFilter

6.1.1.1 双边滤波器简介

       在图像处理上,双边滤波器为使影像平滑化的非线性滤波器。和传统的影像平滑化算法不同,双边滤波器除了使用像素之间几何上的靠近程度之外,还多考虑了像素之间的光度/色彩差异, 使得双边滤波器能够有效的将影像上的噪声去除,同时保存影像上的边缘资讯。
       双边滤波器可以应用在影像降噪、色调映射、图像重照明和材质编辑。
       色调映射是在有限动态范围媒介上近似显示高动态范围图像的一项7图形学技术。打印结果、CRT 或者 LCD 显示器以及投影仪等都只有有限的动态范围。 本质上来讲,色调映射是要解决的问题是进行大幅度的对比度衰减将场景亮度变换到可以显示的范围,同时要保持图像细节与颜色等对于表现原始场景非常重要的信息。 因此,双边滤波器可以借由对亮度相似区域进行模糊化之后,将高动态范围图像的梯度图像分割成亮度相似区和亮度差异较大的部分,借由改变两者的权重,而将高动态范围图像映射成可显示的有限动态范围。

6.1.1.2 Opencv接口

void cv::bilateralFilter(InputArray src,
		OutputArray dst,
		int 	d,
		double 	sigmaColor,
		double 	sigmaSpace,
		int 	borderType = BORDER_DEFAULT 
	)		
参数
src	源8位或浮点,1通道或3通道图像。
dst	与src具有相同大小和类型的目标图像。
d	过滤期间使用的每个像素邻域的直径。如果它是非正数,则从sigmaSpace计算。
sigmaColor	过滤颜色空间中的西格玛。参数的值越大意味着像素邻域内的更远的颜色(参见sigmaSpace)将混合在一起,从而产生更大的半等颜色区域。
sigmaSpace	在坐标空间中过滤西格玛。较大的参数值意味着只要它们的颜色足够接近,更远的像素就会相互影响(参见sigmaColor)。当d> 0时,无论sigmaSpace如何,它都指定邻域大小。否则,d与sigmaSpace成比例。
borderType 	用于外推图像外部像素的边框模式,请参阅BorderTypes

           该功能将双边滤波应用于输入图像,减少不需要的噪声,同时保持边缘相当清晰。但是,与大多数过滤器相比,它非常慢。
          Sigma值:为简单起见,您可以将2 sigma值设置为相同。如果它们很小(<10),过滤器将没有太大的影响,而如果它们很大(> 150),它们将具有非常强烈的效果,使图像看起来“卡通”。
         滤波器大小:大滤波器(d> 5)非常慢,因此建议对实时应用使用d = 5,对于需要大量噪声滤波的离线应用,可能需要d = 9。

void ES::ImageProcessing::bilateralOper(cv::Mat* dst)
{
	Mat src = imread("lena.jpg", IMREAD_COLOR);
	cv::resize(src, src, Size(src.rows / 4 * 3, src.cols / 4 * 3));
	ImageProcessingParams* img_params = stat-ic_cast<ImageProcessingParams*>(m_params);
	int d = img_params->m_d;//4
	int sigmaColor = img_params->m_sigmaColor;//183
	int sigmaSpace = img_params->m_sigmaSpace;//188
	Mat mat;
	cv::bilateralFilter(src, mat, d, sigmaColor, sigmaSpace);
	Mat mergeMat(src.rows, src.cols + mat.cols, src.type());
	Mat submat = mergeMat.colRange(0, src.cols);
	src.copyTo(submat);
	submat = mergeMat.colRange(src.cols, src.cols + mat.cols);
	mat.copyTo(submat);
	mergeMat.copyTo(*dst);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dylan55_you

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值