Loading... ## 一、联合双边滤波背景 联合双边滤波(Joint Bilateral Filter, JBF)是一种图像处理技术,它在传统的双边滤波(Bilateral Filter, BF)基础上进行了改进,通过引入一个引导图(guidance image)来优化滤波过程。 双边滤波因其在平滑图像的同时能够保持边缘信息而受到广泛关注。然而,双边滤波在某些情况下会出现不稳定性,尤其是在边缘附近。为了解决这一问题,联合双边滤波被提出,它通过引入一个引导图来改进滤波过程。 ## 二、 原理 联合双边滤波的基本原理与双边滤波相似,都是基于高斯函数来计算像素的权重。不同之处在于,联合双边滤波在计算权重时,不仅考虑了空间距离和像素值差异,还引入了引导图的信息。具体来说,联合双边滤波的公式如下: $$ Y(i) = \frac{1}{W_{i}}\sum_{j\in{S}}G_{\sigma d}(i,j)G_{\sigma r}(\hat i,\hat j)X_{j} $$ 其中,$X$ 是待处理的图像,$\hat X$是引导图,i,j 分别是图像中的像素位置,$W_i$ 是归一化系数。 其中,$\sigma d$和$\sigma r$是高斯参数,$G_{\sigma d}$和$G_{\sigma r}$分别表示空间函数和灰度相似度函数,表示为 $$ G_{\sigma d}=e^{-\frac{1}{2}(\frac{d(i,j)}{\sigma d})^2} $$ $$ G_{\sigma r}=e^{-\frac{1}{2}(\frac{X_i-X_j}{\sigma r})^2} $$ 其中,$d(i,j)$是i,j像素之间的欧氏距离 与双边的区别在于,联合滤波算法的引导图是低频图像,论文中是用高斯滤波,也可以用引导滤波等算法结果,看你的选择。 ## 3. 实现 在OpenCV的contrib模块中,提供了联合双边滤波的API:`jointBilateralFilter`。该函数的参数包括引导图、待滤波的图像、滤波后的图像、像素邻域直径、灰度域sigma和空间域sigma。以下是Python语言的实现示例: ```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的高斯滤波图、双边滤波处理图、联合滤波处理图    ## 5. 结论 联合双边滤波作为一种有效的图像去噪技术,通过引入引导图信息,提高了滤波的稳定性和效果。它在图像处理领域具有广泛的应用前景,尤其是在需要保持图像边缘信息的场景中。 ## 参考文献 《基于区间梯度的联合双边滤波图像纹理去除方法》 《基于快速联合双边滤波器和改进PCNN的红外与可见光图像融合》 --- ### [我的个人博客主页,欢迎访问](https://www.aomanhao.top/) ### [我的CSDN主页,欢迎访问](https://blog.csdn.net/Aoman_Hao) ### [我的GitHub主页,欢迎访问](https://github.com/AomanHao) ### [我的知乎主页,欢迎访问](https://www.zhihu.com/people/aomanhao-hao) 最后修改:2025 年 01 月 04 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏