opencv2函數學習之blur,GaussianBlur,medianBlur和bilateralFilter:實現圖像平滑處理


在opencv2中,可能使用blur對圖像進行平滑處理,這種方法就是最簡單的求平均數。

  • 平滑 也稱 模糊, 是一項簡單且使用頻率很高的圖像處理方法。

  • 平滑處理的用途有很多, 但是在很多地方我們僅僅關注它減少噪聲的功用。

  • 平滑處理時需要用到一個 濾波器 。 最常用的濾波器是 線性 濾波器。

void blur( const Mat& src, Mat& dst,Size ksize, Point anchor=Point(-1,-1),int borderType=BORDER_DEFAULT );

參數:

src:原圖像。

dst:目標圖像。

ksize:定義濾波器的大小。如Size(3,3)。

anchor:指定錨點位置(被平滑點), 如果是負值,取核的中心為錨點。可省略

borderType:推斷邊緣像素,一般取默認值BORDER_DEFAULT。可省略

例:

blur(src,dst,Size(3,3));

 

OpenCV2函數 GaussianBlur 執行高斯平滑,高斯濾波是將輸入數組的每一個像素點與 高斯內核 卷積,將卷積和當作輸出像素值。

void GaussianBlur( const Mat& src, Mat& dst, Size ksize,double sigmaX, double sigmaY=0,int borderType=BORDER_DEFAULT );

參數:

sigmaX:x方向的標准方差。可設置為0讓系統自動計算。

sigmaY:y方向的標准方差。可設置為0讓系統自動計算。

例:

GaussianBlur(src,dst,Size(9,9),0,0);

 

OpenCV2函數 medianBlur 執行中值濾波操作,中值濾波將圖像的每個像素用鄰域 (以當前像素為中心的正方形區域)像素的 中值 代替 。

void medianBlur( const Mat& src, Mat& dst, int ksize );

OpenCV2函數 bilateralFilter 執行雙邊濾波操作,類似於高斯濾波器,雙邊濾波器也給每一個鄰域像素分配一個加權系數。 這些加權系數包含兩個部分, 第一部分加權方式與高斯濾波一樣,第二部分的權重則取決於該鄰域像素與當前像素的灰度差值。

void bilateralFilter( const Mat& src, Mat& dst, int d,double sigmaColor, double sigmaSpace,int borderType=BORDER_DEFAULT );

參數:

d:像素的鄰域直徑。

sigmaColor:顏色空間的標准方差.

sigmaSpace:坐標空間的標准方差(像素單位).

例:

bilateralFilter ( src, dst, i, i*2, i/2 );

 

……


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM