精华内容
下载资源
问答
  • 双边滤波器

    2012-03-29 22:05:51
  • 交叉双边滤波器是可以在保持边缘强度的情况下对图像进行滤波的一种滤波器,它使用源图像的强度图作为约束,效果良好
  • 双边滤波器和引导滤波器理论介绍
  • 双边滤波器C++ 代码

    2020-07-01 18:31:21
    主要使用C++ 代码编写 ,仅仅使用了opencv的读入图片和保存图片功能,代码非常优化,易读懂,双边滤波是计算机视觉领域必不可少的技术,最经典的技术,此代码能共助你100%理解双边滤波器的工作原理。
  • bilateral filter双边滤波器的通俗理解

    万次阅读 多人点赞 2018-09-23 17:50:35
    bilateral filter双边滤波器的通俗理解 图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等。但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显。相比较而言,bilateral filter双边...

    bilateral filter双边滤波器的通俗理解


        图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等。但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显。相比较而言,bilateral filter双边滤波器可以很好的边缘保护,即可以在去噪的同时,保护图像的边缘特性。双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度像素值相似度的一种折衷处理,同时考虑空域信息灰度相似性,达到保边去噪的目的(不理解这几个概念没关系,后面会慢慢解释)。


    1. 双边滤波(Bilateral filter)的原理

         双边滤波器之所以能够做到在平滑去噪的同时还能够很好的保存边缘(Edge Preserve),是由于其滤波器的核由两个函数生成:空间域核和值域核

    • (1)空间域核:由像素位置欧式距离决定的模板权值w_d

                                                     w_d(i,j,k,l) = exp(-\frac{(i-k)^2 + (j -l)^2}{2\sigma_d^2})

        q(i,j)为模板窗口的其他系数的坐标;其中p(k,l)为模板窗口的中心坐标点;\sigma_dσ_d为高斯函数的标准差。 使用该公式生成的滤波器模板和高斯滤波器使用的模板是没有区别的。

        在一些博客和教程里,这个权值w_d称为定义域核,也称为空间系数,或空间域(spatial domain S)。显示由w_d的计算公式可知,它是计算临近点q到中心点p临近程度,因此定义域核w_d是用于衡量空间临近的程度。

    • (2)值域核:由像素值的差值决定的模板权值w_r

                                                    w_r(i,j,k,l) = exp(-\frac{\left \| f(i,j)- f(k,l)\right \|^2}{2\sigma_r^2})

        其中,q(i,j)为模板窗口的其他系数的坐标,f(i,j)表示图像在点q(i,j)处的像素值;p(k,l)为模板窗口的中心坐标点,对应的像素值为f(k,l)\sigma_rσ_d为高斯函数的标准差。

        一般将权值w_r称为值域核,像素值域(range domain R),不管是值域核w_r还是空间域核w_d,其大小都在[0 1]之间

    • (3)将上述两个模板相乘就得到了双边滤波器的模板权值:

                                                    w(i,j,k,l) = w_d(i,j,k,l) * w_r(i,j,k,l) = exp(-\frac{(i-k)^2 + (j -l)^2}{2\sigma_d^2}-\frac{||f(i,j)-f(k,l)||^2}{2\sigma_r^2})

        因此,双边滤波器的数据公式可以表示如下:

                                                   g(i,j)=\frac{\sum_k_l f(k,l)w(i,j,k,l)))}{\sum_k_l w(i,j,k,l)}


    2. 双边滤波(Bilateral filter)理解

         双边滤波(Bilateral filter)其综合了高斯滤波器(Gaussian Filter)和α-截尾均值滤波器(Alpha-Trimmed mean Filter)的特点,同时考虑了空间域与值域的差别,而Gaussian Filter和α均值滤波分别只考虑了空间域和值域差别。高斯滤波器只考虑像素间的欧式距离,其使用的模板系数随着和窗口中心的距离增大而减小;α-截尾均值滤波器则只考虑了像素灰度值之间的差值,去掉α%的最小值和最大值后再计算均值。

    2.1 空域权重w_d和值域权重w_r的意义:

    • 空域权重w_d衡量的是 p,q 两点之间的距离,距离越远权重越低;
    • 值域权重w_r衡量的是 p,q两点之间的像素值相似程度,越相似权重越大

    这里从图像的平坦区域边缘区域定性分析双边滤波的降噪效果

    • 在平坦区域,临近像素的像素值的差值较小,对应值域权重w_r接近于1,此时空域权重w_d起主要作用,相当于直接对此区域进行高斯模糊。因此,平坦区域相当于进行高斯模糊。
    • 在边缘区域,临近像素的像素值的差值较大,对应值域权重w_r接近于0,导致此处核函数下降(因w=w_r*w_d),当前像素受到的影响就越小,从而保持了原始图像的边缘的细节信息。

    3. Opencv双边滤波函数:

        opencv中提供了bilateralFilter()函数来实现双边滤波操作,其原型如下:

    void cv::bilateralFilter(InputArray src,
    OutputArray 	dst,
    int 	d,
    double 	sigmaColor,
    double 	sigmaSpace,
    int 	borderType = BORDER_DEFAULT 
    )		
    • InputArray src: 输入图像,可以是Mat类型,图像必须是8位或浮点型单通道、三通道的图像。 
    • OutputArray dst: 输出图像,和原图像有相同的尺寸和类型。 
    • int d: 表示在过滤过程中每个像素邻域的直径范围。如果这个值是非正数,则函数会从第五个参数sigmaSpace计算该值。 
    • double sigmaColor: 颜色空间过滤器的sigma值,这个参数的值月大,表明该像素邻域内有越宽广的颜色会被混合到一起,产生较大的半相等颜色区域。 (这个参数可以理解为值域核w_r\sigma_r
    • double sigmaSpace: 坐标空间中滤波器的sigma值,如果该值较大,则意味着越远的像素将相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。当d>0时,d指定了邻域大小且与sigmaSpace无关,否则d正比于sigmaSpace. (这个参数可以理解为空间域核w_d\sigma_d
    • int borderType=BORDER_DEFAULT: 用于推断图像外部像素的某种边界模式,有默认值BORDER_DEFAULT.

         双边滤波器可以很好的保存图像边缘细节而滤除掉低频分量的噪音,但是双边滤波器的效率不是太高,花费的时间相较于其他滤波器而言也比较长。 
         对于简单的滤波而言,可以将两个sigma值设置成相同的值,如果值<10,则对滤波器影响很小,如果值>150则会对滤波器产生较大的影响,会使图片看起来像卡通。 

     示例代码:

    #include <iostream>
    #include <opencv2/core.hpp>
    #include <opencv2/highgui.hpp>
    #include <opencv2/imgproc.hpp>
    
    using namespace std;
    using namespace cv;
    
    //定义全局变量
    const int g_ndMaxValue = 100;
    const int g_nsigmaColorMaxValue = 200;
    const int g_nsigmaSpaceMaxValue = 200;
    int g_ndValue;
    int g_nsigmaColorValue;
    int g_nsigmaSpaceValue;
    
    Mat g_srcImage;
    Mat g_dstImage;
    
    //定义回调函数
    void on_bilateralFilterTrackbar(int, void*);
    
    int main()
    {
        g_srcImage = imread("lena.jpg");
    
        //判断图像是否加载成功
        if(g_srcImage.empty())
        {
            cout << "图像加载失败!" << endl;
            return -1;
        }
        else
            cout << "图像加载成功!" << endl << endl;
    
        namedWindow("原图像", WINDOW_AUTOSIZE);
        imshow("原图像", g_srcImage);
    
        //定义输出图像窗口属性和轨迹条属性
        namedWindow("双边滤波图像", WINDOW_AUTOSIZE);
        g_ndValue = 10;
        g_nsigmaColorValue = 10;
        g_nsigmaSpaceValue = 10;
    
        char dName[20];
        sprintf(dName, "邻域直径 %d", g_ndMaxValue);
    
        char sigmaColorName[20];
        sprintf(sigmaColorName, "sigmaColor %d", g_nsigmaColorMaxValue);
    
        char sigmaSpaceName[20];
        sprintf(sigmaSpaceName, "sigmaSpace %d", g_nsigmaSpaceMaxValue);
    
        //创建轨迹条
        createTrackbar(dName, "双边滤波图像", &g_ndValue, g_ndMaxValue, on_bilateralFilterTrackbar);
        on_bilateralFilterTrackbar(g_ndValue, 0);
    
        createTrackbar(sigmaColorName, "双边滤波图像", &g_nsigmaColorValue,
                         g_nsigmaColorMaxValue, on_bilateralFilterTrackbar);
        on_bilateralFilterTrackbar(g_nsigmaColorValue, 0);
    
        createTrackbar(sigmaSpaceName, "双边滤波图像", &g_nsigmaSpaceValue,
                        g_nsigmaSpaceMaxValue, on_bilateralFilterTrackbar);
        on_bilateralFilterTrackbar(g_nsigmaSpaceValue, 0);
    
        waitKey(0);
    
        return 0;
    }
    
    void on_bilateralFilterTrackbar(int, void*)
    {
        bilateralFilter(g_srcImage, g_dstImage, g_ndValue, g_nsigmaColorValue, g_nsigmaSpaceValue);
        imshow("双边滤波图像", g_dstImage);
    }

    尊重原创,转载请注明出处】:https://blog.csdn.net/guyuealian/article/details/82660826


    参考资料:

    【1】https://www.cnblogs.com/wangguchangqing/p/6416401.html

    【2】https://blog.csdn.net/MoFMan/article/details/77482794

     

     

     

    展开全文
  • 基于自适应双边滤波器的蚊子噪声降低
  • 瑞利最大似然双边滤波器用于超声图像增强
  • 双边滤波器是一种边缘保护的非线性滤波器。 1.像高斯滤波器一样,它的权值取决于到中心像素的空间距离 原理:附近的像素(在空间中)应该比远处的像素有更大的影响 高斯滤波器:距离中心像素i (x, y)的空间偏移量(i...

    双边滤波器是一种边缘保护的非线性滤波器。

    1.像高斯滤波器一样,它的权值取决于到中心像素的空间距离

    原理:附近的像素(在空间中)应该比远处的像素有更大的影响

    高斯滤波器:距离中心像素i (x, y)的空间偏移量(i, j)处的邻居的权值为:

    2.与高斯滤波器不同的是,它的权重同样取决于离中心像素的灰度值距离近。

    原理:亮度值相似的像素比亮度值不同的像素影响更大。

    3.双边滤波器:距离中心像素i (X,Y)的空间偏移量(i, j)处的邻居的权值由乘积给出

    4. 实验结果

    5. Python简单实现

    def gaussian(x, sigma):
        return (1.0/(2*numpy.pi*(sigma**2)))*numpy.exp(-(x**2)/(2*(sigma**2)))
    
    
    def distance(x1, y1, x2, y2):
        return numpy.sqrt(numpy.abs((x1-x2)**2-(y1-y2)**2))
    
    
    def bilateral_filter(image, diameter, sigma_i, sigma_s):
        new_image = numpy.zeros(image.shape)
    
        for row in range(len(image)):
            for col in range(len(image[0])):
                wp_total = 0
                filtered_image = 0
                for k in range(diameter):
                    for l in range(diameter):
                        n_x = row - (diameter/2 - k)
                        n_y = col - (diameter/2 - l)
                        if n_x >= len(image):
                            n_x -= len(image)
                        if n_y >= len(image[0]):
                            n_y -= len(image[0])
                        gi = gaussian(image[int(n_x)][int(n_y)] - image[row][col], sigma_i)
                        gs = gaussian(distance(n_x, n_y, row, col), sigma_s)
                        wp = gi * gs
                        filtered_image = filtered_image + (image[int(n_x)][int(n_y)] * wp)
                        wp_total = wp_total + wp
                filtered_image = filtered_image // wp_total
                new_image[row][col] = int(numpy.round(filtered_image))
        return new_image
    

     

    展开全文
  • 双边滤波器的原理的理解

    千次阅读 2016-06-21 20:27:27
    双边滤波器

    双边滤波器的原理其实就是:


    一个点的滤波后的像素值由他邻域内的像素点决定,领域内像素点的对该值影响的权重取决于两个像素点的距离相似度(我的理解)


    在tomasiIccv98这篇论文中就能直接找到双边滤波器的原理,这篇论文不是很难,能熟练阅读英文的童鞋或者说是想要更多的去了解双边滤波器的童鞋可以直接去读这篇文章。

    那这句话是什么意思呢?
    一个点的滤波后的像素值由他邻域内的像素点决定:这句话理解起来很简单,你可以想象一个3x3的均值滤波器,它的中心点的值就是由邻域内的像素点取平均得到的

    领域内像素点的对该值影响的权重取决于两个像素点的距离相似度:同样是拿3x3的均值滤波器做对比,均值滤波器里面的点无非是权重都是1罢了,而双边滤波器的权重是由距离相似度这两个东西决定。

    双边滤波器

    h(x)就是x这一个点的通过滤波器后的灰度值,注意,x是一个点!是有横纵坐标的,同理这里写图片描述也是一个点!

    这里写图片描述求积分其实就是对x的邻域里的点乘上权重后求和!

    这个权重就是通过c,s计算,c代表close,距离,s代表similar,相似度!

    所以c需要传入x和这里写图片描述这两个点的信息,而s只需要传入f(x)和f(这里写图片描述)这两个灰度信息!

    权重的计算公式多种多样,如论文中给出的:

    这里写图片描述

    里面有两个需要给的参数,是自己取的,但是论文里也给出了相应的取值和对应的效果:

    这里写图片描述

    参考资料:
    http://www.cs.duke.edu/~tomasi/papers/tomasi/tomasiIccv98.pdf

    展开全文
  • 介绍了双边滤波器和高斯滤波器的联系和应用.
  • 程序在VS2015 Release+x64的环境下编译通过,利用openCV3.1的库函数,图片先加上噪声再经过双边滤波器 高斯滤波器 滤波
  • 双边滤波器实现图像的去噪处理,可以对二维图像和三维彩色图像进行平滑操作。应用领域为图像去噪,可以作为模式识别的预处理步骤。
  • 因为最后的dde算法中,最核心的就是滤波器模块,由于做之前是没有好好攻读相关硬件文献,加上相关背景写的不好导师一顿痛批,搞得现在要本末倒置,拿结果去找自己值得这么做的理由。但其实从研究角度来说应该是一件...
  • 双边滤波器论文“Bilateral filtering for gray and color images”代码复现及其改进代码 matlab代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 716
精华内容 286
关键字:

双边滤波器