一、联合双边滤波背景

联合双边滤波(Joint Bilateral Filter, JBF)是一种图像处理技术,它在传统的双边滤波(Bilateral Filter, BF)基础上进行了改进,通过引入一个引导图(guidance image)来优化滤波过程。

双边滤波因其在平滑图像的同时能够保持边缘信息而受到广泛关注。然而,双边滤波在某些情况下会出现不稳定性,尤其是在边缘附近。为了解决这一问题,联合双边滤波被提出,它通过引入一个引导图来改进滤波过程。

二、 原理

联合双边滤波的基本原理与双边滤波相似,都是基于高斯函数来计算像素的权重。不同之处在于,联合双边滤波在计算权重时,不仅考虑了空间距离和像素值差异,还引入了引导图的信息。具体来说,联合双边滤波的公式如下:

【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_计算机视觉

其中,【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_图像去噪_02 是待处理的图像,【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_联合双边_03是引导图,i,j 分别是图像中的像素位置,【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_计算机视觉_04

其中,【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_opencv_05【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_笔记_06是高斯参数,【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_联合双边_07【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_计算机视觉_08分别表示空间函数和灰度相似度函数,表示为

【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_计算机视觉_09

【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_opencv_10

其中,【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_opencv_11是i,j像素之间的欧氏距离

与双边的区别在于,联合滤波算法的引导图是低频图像,论文中是用高斯滤波,也可以用引导滤波等算法结果,看你的选择。

3. 实现

在OpenCV的contrib模块中,提供了联合双边滤波的API:jointBilateralFilter。该函数的参数包括引导图、待滤波的图像、滤波后的图像、像素邻域直径、灰度域sigma和空间域sigma。以下是Python语言的实现示例:

import cv2 as cv
src = cv.imread("image.jpg", cv.IMREAD_GRAYSCALE)  # 待滤波的图像
joint = cv.imread("joint_image.jpg", cv.IMREAD_GRAYSCALE)  # 引导图
dst = cv.ximgproc.jointBilateralFilter(joint, src, 9, 75, 75)  # 联合双边滤波
cv.imshow("Filtered Image", dst)
cv.waitKey(0)
cv.destroyAllWindows()

4. 应用效果

联合双边滤波在图像去噪的同时,能够更好地保留图像的边缘和纹理信息。相比于传统的双边滤波,联合双边滤波在处理含有复杂纹理的图像时,能够获得更清晰的边缘和更平滑的背景。下图依次是添加标准差为0.001的高斯滤波图、双边滤波处理图、联合滤波处理图

【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_笔记_12


【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_计算机视觉_13


【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》_联合双边_14

5. 结论

联合双边滤波作为一种有效的图像去噪技术,通过引入引导图信息,提高了滤波的稳定性和效果。它在图像处理领域具有广泛的应用前景,尤其是在需要保持图像边缘信息的场景中。

测试程序链接如下:

https://github.com/AomanHao/Matlab-Image-Denoise/tree/master/Bilateral%20Filtering%20advanced

参考文献

《基于区间梯度的联合双边滤波图像纹理去除方法》
《基于快速联合双边滤波器和改进PCNN的红外与可见光图像融合》

我的个人博客主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问