日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV学习笔记(六):非线性滤波-中值、双边:medianBlur(),bilateralFilter()

發布時間:2024/7/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV学习笔记(六):非线性滤波-中值、双边:medianBlur(),bilateralFilter() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCV學習筆記(六):非線性濾波-中值、雙邊:medianBlur(),bilateralFilter()

1、中值濾波(Median filter)
是一種典型的非線性濾波技術,基本思想是用像素點鄰域灰度值的中值來代替該像素點的灰度值,該方法在去除脈沖噪聲、斑點噪聲(speckle noise)和椒鹽噪聲(salt-and-pepper noise)的同時又能保留圖像邊緣細節。
優點:
中值濾波在一定的條件下可以克服常見線性濾波器帶來的圖像細節模糊,而且對
濾除脈沖干擾及圖像掃描噪聲
非常有效,也常用于保護邊緣信息, 保存邊緣的特性使它在不希望出現邊緣模糊的場合也很有用,是非常經典的平滑噪聲處理方法。
缺點:
1)中值濾波花費的時間是均值濾波的5倍以上
2)對一些細節多,特別是線、尖頂等細節多的圖像不宜采用

2、雙邊濾波(Bilateral filter)
是結合圖像的空間鄰近度和像素值相似度的一種折衷處理,同時考慮空域信息和灰度相似性,達到保邊去噪的目的。具有簡單、非迭代、局部的特點。
優點:
雙邊濾波器的好處是可以做邊緣保存(edge preserving),雙邊濾波器顧名思義比高斯濾波多了一個高斯方差sigma-d,它是基于空間分布的高斯濾波函數,所以在邊緣附近,離的較遠的像素不會太多影響到邊緣上的像素值,這樣就保證了邊緣附近像素值的保存。
缺點:
但是由于保存了過多的高頻信息,對于彩色圖像里的高頻噪聲,雙邊濾波器不能夠干凈的濾掉,只能夠對于低頻信息進行較好的濾波。
在雙邊濾波器中,輸出像素的值依賴于鄰域像素值的加權值組合,而加權系數w(i,j,k,l)取決于定義域核和值域核的乘積。

代碼示例:

#include <opencv2/opencv.hpp>Mat g_srcImage,g_dstImage1,g_dstImage2,g_dstImage3; //存儲圖片的Mat類型int g_nMedianBlurValue=10; //中值濾波參數值 int g_nBilateralFilterValue=30; //雙邊濾波參數值using namespace cv; using namespace std;int main(int argc, char *argv[]) {// 載入原圖g_srcImage = imread( "F:/C++/2. OPENCV 3.1.0/TEST/7.jpg", 1 );if( !g_srcImage.data ){ printf("Oh,no,讀取srcImage錯誤~! \n"); return false; }//克隆原圖到三個Mat類型中g_dstImage1 = g_srcImage.clone( );g_dstImage2 = g_srcImage.clone( );//顯示原圖imshow("【<0>原圖窗口】",g_srcImage);// 1、中值濾波namedWindow("【<4>中值濾波】", 1);createTrackbar("參數值:", "【<4>中值濾波】",&g_nMedianBlurValue, 50,on_MedianBlur );on_MedianBlur(g_nMedianBlurValue,0);// 2、雙邊濾波namedWindow("【<5>雙邊濾波】", 1);createTrackbar("參數值:", "【<5>雙邊濾波】",&g_nBilateralFilterValue, 50,on_BilateralFilter);on_BilateralFilter(g_nBilateralFilterValue,0);//輸出一些幫助信息cout<<endl<<"\t運行成功,請調整滾動條觀察圖像效果~\n\n"<<"\t按下“q”鍵時,程序退出。\n";//按下“q”鍵時,程序退出while(char(waitKey(1)) != 'q') {}return 0 } // 1、中值濾波操作的回調函數 static void on_MedianBlur(int, void *) {medianBlur ( g_srcImage, g_dstImage1, g_nMedianBlurValue*2+1 );imshow("【<4>中值濾波】", g_dstImage1); }// 2、雙邊濾波操作的回調函數 static void on_BilateralFilter(int, void *) {bilateralFilter ( g_srcImage, g_dstImage2, g_nBilateralFilterValue, g_nBilateralFilterValue*2, g_nBilateralFilterValue/2 );imshow("【<5>雙邊濾波】", g_dstImage2); }

結果:



參考:【OpenCV入門教程之九】 非線性濾波專場:中值濾波、雙邊濾波

總結

以上是生活随笔為你收集整理的OpenCV学习笔记(六):非线性滤波-中值、双边:medianBlur(),bilateralFilter()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。