1. 程式人生 > >初識 OpenCV 之均值濾波,中值濾波

初識 OpenCV 之均值濾波,中值濾波

影象的噪聲

就是隻影象在攝取的過程中或者是在傳輸的過程中受到隨機干擾訊號

我們常見的噪聲有椒鹽噪聲和高斯噪聲

椒鹽噪聲:出現的位置隨機,但是噪聲的幅值基本相同的

高斯噪聲:出現位置固定,但是噪聲的幅值基本是固定的

怎麼才能把不需要的噪聲濾掉呢,其中最基本的就是均值濾波和中值濾波

均值濾波:線性平均濾波器,它通過求視窗內所有畫素的平均值來得到中心畫素點的畫素值。這樣的好處是可以有效的平滑影象,降低影象的尖銳程度,降低噪聲。但缺點是不能消除噪聲,而且將周圍的景物的畫素點平均了,變得模糊了。

為了改善這麼一個情況可以加上加權平均,也就是這樣,在前面用到的改善對比度的時候用的掩膜也是這麼個道理

中值濾波:對模板裡的畫素來個簡單的氣泡排序,然後求箇中值代替中心點畫素就ok了

因為椒鹽噪聲的幅值近似的,而且分佈在不同的地方,附近有沒有被汙染的和被汙染的畫素點,所以用中值來代替

椒鹽畫素點效果很好。

blur(src1, src, Size(11, 11), Point(-1, -1));

@param src input image; it can have any number of channels, which are processed independently, but
the depth should be CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.//源圖
@param dst output image of the same size and type as src.輸出
@param ksize blurring kernel size.就是上圖那個框框
@param anchor anchor point; default value Point(-1,-1) means that the anchor is at the kernel
center.預設(-1,-1)就好,自動是kernel的中心
@param borderType border mode used to extrapolate pixels outside of the image, see cv::BorderTypes
@sa  boxFilter, bilateralFilter, GaussianBlur, medianBlur
 */
CV_EXPORTS_W void blur( InputArray src, OutputArray dst,
                        Size ksize, Point anchor = Point(-1,-1),
                        int borderType = BORDER_DEFAULT );

哈哈,科比變模糊了