AI筆記: 計算機視覺之圖像濾波去噪: 原理、方法和效果比較

圖像預處理濾波概述

大米質量檢測:數出圖像裏的所有米粒,並計算米粒的平均長度及面積,以評價等級

描述:圖片背景不是完全清晰,需要進行背景噪點的濾波處理來減少或消除,進一步通過圖像分割得到各個米粒對象,並進行相關數字特徵(長度、面積、均值等)的計算

瞭解圖像濾波基本原理

  • 與一維信號濾波類似,圖像濾波也由卷積定義, 由原來的一維做了二維的擴展
    • 原始的圖像f通過濾波器進行濾波,相當於f和這個濾波器一起做卷積
    • 圖像都是數字化的圖像,我們的卷積也是離散化的
    • 在圖像中我們使用的濾波器是一個對稱的濾波器(正負半軸曲線一樣), 因爲是對稱的, 我們不進行區分正負

f(x,y)g(x,y)=1NMn=0N1m=0M1f(n,m)g(xn,ym) f(x,y)g(x,y) = \frac{1}{NM}\sum_{n=0}^{N-1}\sum_{m=0}^{M-1}f(n,m)g(x-n,y-m)

  • 在圖像中,也常以模版的形式定義
    • 在圖像中的卷積等同於在原始圖像上用一個移動的模板來加權平均

f(x,y)g(x,y)=1NMn=0N1m=0M1f(x+n,y+m)g(n,m) f(x,y)g(x,y) = \frac{1}{NM}\sum_{n=0}^{N-1}\sum_{m=0}^{M-1}f(x+n,y+m)g(n,m)

  • 如果濾波器對稱,則二者等價

    • 上面的2個公式就是將負的變爲正的,兩者等價
  • 濾波器計算某一像素的濾波結果

    • 一個原始圖像f經過一個濾波器(卷積和)g來濾波, g是3*3大小的
    • 做卷積的方式是將原始圖像上的對應像素和濾波器上的對應像素先進行兩兩相乘
    • 將9個像素對應相乘後的和作爲濾波後的結果, 濾完波的位置是濾波器的中心位置,
    • 也就是原始圖像與濾波器中心位置對應的值是剛纔濾波後的結果
    • 剛剛我們只是得到了一個結果, 如果我們想要最終完成濾波,需要濾波器在這個圖像中不斷滑動
    • 也就是從左到右,從上到下的Z字形滑動,每次滑動計算得到一個值
    • 濾波後的結果一定比原始圖像要小一圈,小多少由濾波器的大小決定的
    • 濾波器大小的一半稱爲濾波器的半徑, 3*3的濾波器半徑是1(1.5向下取整)
    • 原始圖像經過半徑爲1的濾波器進行計算後,周圍都少1個像素

掌握基本圖像預處理濾波方法

1 ) 圖像平滑 – 平均濾波

  • 在一維信號處理裏可以讓原始信號更加平滑, 把這一概念擴展到2維裏就是圖像平滑
  • 噪聲是圖片中像素值突變的像素點, 圖像平滑可消除或減弱圖像中的噪聲
  • 在一個小區域內(通常3*3), 把所有像素都做下平均, 我們就得到了我們最簡單的一個濾波器叫平均濾波
  • 爲了保證濾波後圖像的能量大小和濾波後相同, 需要除上一個係數M, 這叫歸一化處理
  • 換言之,濾波前它的亮度是1,我們要保證它在濾波後對應恆定亮度的區域值仍爲1

g(x,y)=1M(m,n)Sf(m,n) g(x,y) = \frac{1}{M}\sum_{(m,n)\in{S}}f(m,n)

舉例

  • 5個像素的平均濾波器(十字濾波器):對於中心點有4個像素叫四臨域
  • 8像素平均濾波器
  • 9像素平均濾波器:對於中心點上下左右斜角共8個都是相鄰像素叫八臨域

15[010111010] \frac{1}{5} \begin{bmatrix} 0 & 1 & 0 \\ 1 & 1 & 1 \\ 0 & 1 & 0 \end{bmatrix}
18[111101111] \frac{1}{8} \begin{bmatrix} 1 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 1 \end{bmatrix}
19[111111111] \frac{1}{9} \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix}

2 ) 圖像平滑 – 加權平均濾波

  • 在一個小區域內(通常3*3), 像素值加權平均
    • 在每個像素前面乘上一個係數
    • 同樣除上M進行歸一化處理
    • 加權平均最主要的作用是圖像中心點起到的作用是最大的
    • 在圖像濾波的時候離中心越近, 它的作用越重要
    • 權值的選取多種多樣,下面有兩種選取方式
    • 1/16的這個濾波器比較特殊, 中心點權值最高爲4, 上下左右爲2, 斜角各爲1, 權值關於中心對稱
      • 形象上像個草帽(抽象), 也像是高斯函數的形狀
      • 我們稱之爲高斯模板, 這種濾波叫高斯平均濾波

g(x,y)=1M(m,n)Swmnf(m,n) g(x,y) = \frac{1}{M}\sum_{(m,n)\in{S}}w_{mn}f(m,n)

舉例

110[111121111] \frac{1}{10} \begin{bmatrix} 1 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 1 \end{bmatrix}
116[121242121] \frac{1}{16} \begin{bmatrix} 1 & 2 & 1 \\ 2 & 4 & 2 \\ 1 & 2 & 1 \end{bmatrix}

3 ) 圖像平滑 – 中值濾波

  • 和前面的濾波方式稍有不同, 前面的濾波也可稱爲線性濾波,而中值濾波不是這樣,更爲直觀
  • 簡單來說,我們選定一個窗口後,針對這個窗口內的圖像的像素進行濾波
  • 首先把這個窗口內的像素按照從小到大,或從大到小的順序進行排列, 找到中間的值4, 進一步我們把4作爲濾波後的結果,如下矩陣圖所示

舉例

濾波前

[5343105345] \begin{bmatrix} 5 & 3 & 4 \\ 3 & 10 & 5 \\ 3 & 4 & 5 \end{bmatrix}

排序(中值爲4)

3334[4]55510 3334[4]55510

濾波後的結果

[534345345] \begin{bmatrix} 5 & 3 & 4 \\ 3 & 4 & 5 \\ 3 & 4 & 5 \end{bmatrix}

總結

  • 確定窗口及位置(含有奇數個像素)
  • 窗口內像素按灰度大小排序
  • 取中間值代替原窗口中心像素值
  • 中值濾波對椒鹽噪聲有效

常用的窗口選取方式

3 * 3的窗口

.
...
.
 .
...
 .

(四臨域)

...
...
...

(八臨域)

5 * 5的窗口

  .
  .
.....
  .
  .
  .
 ...
.....
 ...
  .

比較各個濾波器的效果

1 ) 原圖

2 ) 平均濾波後

圖像變虛, 有去噪效果但同時會使圖像模糊, 實際中很少採用

3 ) 高斯濾波(加權平均濾波)後

幾乎和原始圖像一樣清晰, 噪聲減少了很多, 是一種有效的去噪方式

4 ) 中值濾波後

  • 和高斯濾波的效果很像, 人眼無法分辨, 不再展示
  • 主要是椒鹽去噪效果顯著
  • 對於一般圖像,我們不知道噪聲的形式, 可以採用高斯濾波或中值濾波對圖像進行處理
  • 在圖片中噪聲是廣泛存在的, 眼睛看不到的並不代表沒有
  • 我們拿到圖像的第一步都要進行去噪處理

備註

  • 本文所用的數學公式在github等一般的markdown上是無法支持的, 如果需要支持可以, 參考如下網上連接
  • https://blog.csdn.net/cuihuijun1hao/article/details/77969449
  • https://private.codecogs.com/latex/eqneditor.php
  • https://tding.top/archives/22f997b6.html
  • http://latex.codecogs.com/
  • chrome插件的方式:GitHub with MathJax, 下載點這裏, 克隆倉庫後, 在谷歌插件上加載已解壓的擴展程序即可使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章