圖像平滑處理(濾波處理)

原圖片讀入後以下所示,會有不少噪音點spa

 

 這時就要用到濾波處理來處理這些噪音點,有如下幾種方式:code

一、均值濾波orm

 

 對於一個像素點,能夠在它周圍畫一個卷積盒子,用盒子中的均值來代替這個像素點,計算公式爲(121+75+...+235)/9blog

也就至關於一個3×3的卷積矩陣,每一個位置的值都爲1,該卷積矩陣與像素點矩陣作乘法,而後除以矩陣的大小圖片

通過均值濾波處理後,結果以下:class

1 #均值濾波
2 blur=cv2.blur(img,(3,3))

 

能夠看到噪音點比原始圖像少了不少,但仍是有一些噪音點基礎

 

二、方框濾波im

方框濾波有兩種狀況,若是作了歸一化處理,就和均值濾波同樣d3

1 #方框濾波(歸一化即和均值濾波同樣)
2 box1=cv2.boxFilter(img,-1,(3,3),normalize=True)

 

 若是不作歸一化處理,就是將卷積盒子中的全部數值加起來,不取平均值,即121+75+...+235db

由於像素點的取值範圍是0~255,若是加起來超過這個範圍,顯示出來就是一個白點

1 #方框濾波(不作歸一化處理)
2 box2=cv2.boxFilter(img,-1,(3,3),normalize=False)

 

 

 

三、高斯濾波

在卷積盒子中,有些像素點離中心像素點的距離近一些,那麼它和中心像素點的關係更近一些,求平均值的時候權重應該更大一些

例如3×3的盒子中,上下左右就離中心點的距離短一些,四個角距離就稍長些

高斯濾波就是在求均值的基礎上給各個點都加上了權重

1 #高斯濾波
2 gaussian=cv2.GaussianBlur(img,(5,5),1)

 

 

四、中值濾波

就是將卷積盒子中的像素點按順序排成一列,取它的中間數,即中位數

24,75,78,104,113,121,154,204,235,中位數是113,就用113來代替中心像素點的值

1 #中值濾波
2 median=cv2.medianBlur(img,5)

 

 

能夠看到,利用中值濾波處理後,噪音點基本沒有了

相關文章
相關標籤/搜索