在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 );
……
