上篇介紹了用 opencv中的函數blur()實作鄰域平均,除了用此函數外,還有其他可實作均值濾波的方法,如下。 (1)根據數學公式,實作像素點的運算以實作領域平均。 數學公式在上篇有介紹。 (2)用opencv帶的2D濾波器filter2D()可以實作濾波。此函數在濾波中會經常用到。 我把幾種的代碼放在一起,截圖如下, 代碼中的紅色注釋說明了使用的是哪種方法。

其運作結果截圖如下:
上圖中,第 1張是原圖,後三張都是均值濾波後的圖。從 圖可以看出,不管用哪一種代碼,實作的結果都是一模一樣的。 對于均值濾波,主要是用于去噪,但是在去噪的過程中可能會産生模糊,如上圖所示,當選用的模闆越大時,圖像可能越模糊。 以下圖像分别是模闆選擇為(5,5)和(10,10)時的圖像,可以看到圖像噪聲消除明顯,但圖像也越模糊。
模闆的大小也不一定非要是 3*3這類的,也可以是2*10,5*2這樣不規則的,如果這樣做的話主要就是模糊圖像了,一種是水準模糊,一種是垂直模糊,如下圖所示:
上圖分别是( 1,10)和(10,1)時的運作結果。