欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
bilateral filter雙邊濾波器的通俗理解

    圖像去噪的方法很多,如中值濾波,高斯濾波,維納濾波等等。但這些降噪方法容易模糊圖片的邊緣細節,對于高頻細節的保護效果并不明顯。相比較而言,bilateral filter雙邊濾波器可以很好的邊緣保護,即可以在去噪的同時(shí),保護圖像的邊緣特性。雙邊濾波(Bilateral filter)是一種非線(xiàn)性的濾波方法,是結合圖像的空間鄰近度像素值相似度的一種折衷處理,同時(shí)考慮空域信息灰度相似性,達到保邊去噪的目的(不理解這幾個(gè)概念沒(méi)關(guān)系,后面會(huì )慢慢解釋?zhuān)?/p>


1. 雙邊濾波(Bilateral filter)的原理

     雙邊濾波器之所以能夠做到在平滑去噪的同時(shí)還能夠很好的保存邊緣(Edge Preserve),是由于其濾波器的核由兩個(gè)函數生成:空間域核和值域核

  • (1)空間域核:由像素位置歐式距離決定的模板權值

                                                 

   

為模板窗口的其他系數的坐標;其中
為模板窗口的中心坐標點(diǎn);
為高斯函數的標準差。 使用該公式生成的濾波器模板和高斯濾波器使用的模板是沒(méi)有區別的。

    在一些博客和教程里,這個(gè)權值

稱(chēng)為定義域核,也稱(chēng)為空間系數,或空間域(spatial domain S)。顯示由
的計算公式可知,它是計算臨近點(diǎn)
到中心點(diǎn)
臨近程度,因此定義域核
是用于衡量空間臨近的程度。

  • (2)值域核:由像素值的差值決定的模板權值

                                               

    其中,

為模板窗口的其他系數的坐標,
表示圖像在點(diǎn)
處的像素值;
為模板窗口的中心坐標點(diǎn),對應的像素值為
;
為高斯函數的標準差。

    一般將權值

稱(chēng)為值域核,像素值域(range domain R),不管是值域核
還是空間域核
,其大小都在[0 1]之間

  • (3)將上述兩個(gè)模板相乘就得到了雙邊濾波器的模板權值:

                                               

    因此,雙邊濾波器的數據公式可以表示如下:

                                               


2. 雙邊濾波(Bilateral filter)理解

     雙邊濾波(Bilateral filter)其綜合了高斯濾波器(Gaussian Filter)和α-截尾均值濾波器(Alpha-Trimmed mean Filter)的特點(diǎn),同時(shí)考慮了空間域與值域的差別,而Gaussian Filter和α均值濾波分別只考慮了空間域和值域差別。高斯濾波器只考慮像素間的歐式距離,其使用的模板系數隨著(zhù)和窗口中心的距離增大而減??;α-截尾均值濾波器則只考慮了像素灰度值之間的差值,去掉α%的最小值和最大值后再計算均值。

2.1 空域權重
和值域權重
的意義:

  • 空域權重

    衡量的是 
     兩點(diǎn)之間的距離,距離越遠權重越低;

  • 值域權重

    衡量的是 
    兩點(diǎn)之間的像素值相似程度,越相似權重越大

這里從圖像的平坦區域邊緣區域定性分析雙邊濾波的降噪效果

  • 在平坦區域,臨近像素的像素值的差值較小,對應值域權重

    接近于1,此時(shí)空域權重
    起主要作用,相當于直接對此區域進(jìn)行高斯模糊。因此,平坦區域相當于進(jìn)行高斯模糊。

  • 在邊緣區域,臨近像素的像素值的差值較大,對應值域權重

    接近于0,導致此處核函數下降(因
    ),當前像素受到的影響就越小,從而保持了原始圖像的邊緣的細節信息。


3. Opencv雙邊濾波函數:

    opencv中提供了bilateralFilter()函數來(lái)實(shí)現雙邊濾波操作,其原型如下:

void cv::bilateralFilter(InputArray src,
    OutputArray     dst,
    int     d,
    double     sigmaColor,
    double     sigmaSpace,
    int     borderType = BORDER_DEFAULT
)
  • InputArray src: 輸入圖像,可以是Mat類(lèi)型,圖像必須是8位或浮點(diǎn)型單通道、三通道的圖像。 

  • OutputArray dst: 輸出圖像,和原圖像有相同的尺寸和類(lèi)型。 

  • int d: 表示在過(guò)濾過(guò)程中每個(gè)像素鄰域的直徑范圍。如果這個(gè)值是非正數,則函數會(huì )從第五個(gè)參數sigmaSpace計算該值。 

  • double sigmaColor: 顏色空間過(guò)濾器的sigma值,這個(gè)參數的值月大,表明該像素鄰域內有越寬廣的顏色會(huì )被混合到一起,產(chǎn)生較大的半相等顏色區域。 (這個(gè)參數可以理解為值域核

  • double sigmaSpace: 坐標空間中濾波器的sigma值,如果該值較大,則意味著(zhù)越遠的像素將相互影響,從而使更大的區域中足夠相似的顏色獲取相同的顏色。當d>0時(shí),d指定了鄰域大小且與sigmaSpace無(wú)關(guān),否則d正比于sigmaSpace. (這個(gè)參數可以理解為空間域核

  • int borderType=BORDER_DEFAULT: 用于推斷圖像外部像素的某種邊界模式,有默認值BORDER_DEFAULT.

     雙邊濾波器可以很好的保存圖像邊緣細節而濾除掉低頻分量的噪音,但是雙邊濾波器的效率不是太高,花費的時(shí)間相較于其他濾波器而言也比較長(cháng)。 
     對于簡(jiǎn)單的濾波而言,可以將兩個(gè)sigma值設置成相同的值,如果值<10,則對濾波器影響很小,如果值>150則會(huì )對濾波器產(chǎn)生較大的影響,會(huì )使圖片看起來(lái)像卡通。 

 示例代碼:

  1. #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);

        //創(chuàng )建軌跡條
        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);
    }


參考資料:

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

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

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
雙邊濾波器的原理及實(shí)現
python+opencv圖像處理(三十)
用 Taichi 實(shí)現 GPU 圖像處理:從入門(mén)到入魔
雙邊濾波
【從零學(xué)習OpenCV 4】雙邊濾波
雙邊濾波(Bilateral Filter)詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久