zl程序教程

您现在的位置是:首页 >  后端

当前栏目

在OpenCV里实现双边滤波

Opencv 实现 滤波 双边
2023-09-14 09:10:33 时间

前面学习了高斯平滑、均值平滑,在一些图像处理里非常有效果,但是它在去除噪声同时,也把图像的边缘进行模糊。现在就得考虑有没有这样方法,既可以平滑图像,又可以保留图像边缘的信息。我们来回顾一下前面使用的高斯平滑,其实是构造一个正态分布的矩阵,以中心点像素为主,周边距离远的像素为次,这样是按距离进行加权平滑,因此距离中心点近的像素权值越大,距离远的像素权值越小。现在要增加一个领域里像素值的考虑,与中心点的像素值差别,因此在每一个像素点计算卷积时,都需要重新计算相乘的卷积核。与高斯平滑相比,高斯平滑是一个固定的卷积核,而双边滤波是一个动态的卷积核,这个卷积核根据每个像素点的像素值进行计算。由此可见双边滤波比高斯平滑要多计算一步,速度上要比高斯平滑要慢得多。其原理大体如下图所示:

左边是输入图像,中间是高斯卷积核与像素值权重核进行对应位置相乘(点乘),从而构造了一个新的卷积核,经过这个卷积核处理后输出右边的图片。

其数学的公式如下: