常見圖像傳統處理算法-邊緣檢測-分割-增強-降噪

一、邊緣檢測

邊緣檢測的幾種微分算子:

  1. 一階微分算子:Roberts、Sobel、Prewitt
  2. 二階微分算子:Laplacian、Log/Marr
  3. 非微分算子:Canny

一階微分算子

1.Roberts: 沒有經過圖像平滑處理,圖像噪聲無法得到較好的抑制,但圖像邊緣定位精度較高。

2. Sobel:引入了類似局部平均的運算,對噪聲有平滑作用,能很好的消除噪聲的影響。與Prewitt比,Sobel對像素位置做了加權,可以降低邊緣模糊程度。

3. Prewitt:去掉部分僞邊緣,對噪聲有平滑作用。

如何計算邊緣幅值與方向呢?以Sobel爲例,3*3 Sobel兩個方向的算子在圖像上滑動,模板與其覆蓋的圖像3*3區域的9個像素進行卷積,求和後得到此方向的邊緣檢測幅值。
 

Gx = \begin{pmatrix} -1 & 0 & +1\\ -2 & 0 & +2\\ -1 &0 & +1 \end{pmatrix}*f(x, y)

Gy = \begin{pmatrix} -1 & -2 &-1\\0 & 0 & 0\\ +1 &+2 & +1 \end{pmatrix}*f(x, y)

G=\sqrt{(G{x})^2+(G{y})^2}    邊緣檢測幅值

\Theta =\arctan \left (Gx/Gy \right )      邊緣檢測方向

二階微分算子

1. Laplacian

拉普拉斯算子數學公式:

\bigtriangledown ^2f(x,y )=\frac{\partial^2 }{\partial x^2}f(x,y)+\frac{\partial^2 }{\partial y^2}f(x,y)

2. Log/Marr邊緣檢測是先進行高斯濾波,再進行拉普拉斯算子進行檢測,最後通過找過零點來確定邊緣位置。

非微分算子:Canny

  • 使用Canny算子的邊緣檢測過程如下:
  • RGB圖像轉化爲灰度圖像;
  • 對圖像進行高斯濾波;
  • 利用canny算子(圖像四個方向:水平、垂直、對角)計算圖像梯度,根據梯度計算圖像邊緣幅度;
  • 非極大值抑制,得到真正的邊緣->細化;
  • 雙閾值邊緣提取;
  • 結果二值化顯示;

二、圖像分割

傳統圖像分割算法

1. 基於閾值的分割方法

閾值法的基本思想是基於圖像的灰度特徵計算一個或多個灰度閾值,並將圖像中每個像素的灰度值與閾值作比較,最後將像素根據比較結果分到合適的類別中。因此,該方法最爲關鍵的一步就是按照某個準則函數來求解最佳灰度閾值。

閥值分割方法的優缺點:

  • 計算簡單,效率較高;
  • 只考慮像素點灰度值本身的特徵,一般不考慮空間特徵,因此對噪聲比較敏感,魯棒性不高。

2. 基於區域的分割方法

基於區域的分割方法是以直接尋找區域爲基礎的分割技術,基於區域提取方法有兩種基本形式:一種是區域生長,從單個像素出發,逐步合併以形成所需要的分割區域;另一種是從全局出發,逐步切割至所需的分割區域。

區域生長:區域生長是從一組代表不同生長區域的種子像素開始,接下來將種子像素鄰域裏符合條件的像素合併到種子像素所代表的生長區域中,並將新添加的像素作爲新的種子像素繼續合併過程,知道找不到符合條件的新像素爲止。該方法的關鍵是選擇合適的初始種子像素以及合理的生長準則。

區域生長算法需要解決的三個問題:

(1)選擇或確定一組能正確代表所需區域的種子像素;

(2)確定在生長過程中能將相鄰像素包括進來的準則;

(3)指定讓生長過程停止的條件或規則。

區域分裂合併:區域生長是從某個或者某些像素點出發,最終得到整個區域,進而實現目標的提取。而分裂合併可以說是區域生長的逆過程,從整幅圖像出發,不斷的分裂得到各個子區域,然後再把前景區域合併,得到需要分割的前景目標,進而實現目標的提取。

區域分裂合併算法優缺點:

(1)對複雜圖像分割效果好;

(2)算法複雜,計算量大;

(3)分裂有可能破怪區域的邊界。

分水嶺算法:是一種基於拓撲理論的數學形態學的分割方法,其基本思想是把圖像看作是測地學上的拓撲地貌,圖像中每一點像素的灰度值表示該點的海拔高度,每一個局部極小值及其影響區域稱爲集水盆,而集水盆的邊界則形成分水嶺。

分水嶺對微弱邊緣具有良好的響應,圖像中的噪聲、物體表面細微的灰度變化都有可能產生過度分割的現象,但是這也同時能夠保證得到封閉連續邊緣

3. 基於邊緣檢測的分割方法

基於邊緣檢測的圖像分割算法試圖通過檢測包含不同區域的邊緣來解決分割問題。通常不同區域的邊界上像素的灰度值變化比較劇烈,如果將圖片從空間域通過傅里葉變換到頻率域,邊緣就對應着高頻部分,這是一種非常簡單的邊緣檢測算法。

邊緣檢測的優缺點:

(1)邊緣定位準確;

(2)速度快;

(3)不能保證邊緣的連續性和封閉性;

(4)在高細節區域存在大量的碎邊緣,難以形成一個大區域,但是又不宜將高細節區域分成小碎片;

由於上述的(3)(4)兩個難點,邊緣檢測只能產生邊緣點,而非完整意義上的圖像分割過程。這也就是說,在邊緣點信息獲取到之後還需要後續的處理或者其他相關算法相結合才能完成分割任務。

在以後的研究當中,用於提取初始邊緣點的自適應閾值選取、用於圖像的層次分割的更大區域的選取以及如何確認重要邊緣以去除假邊緣將變得非常重要。

4. 基於主動輪廓模型的分割方法

在實現主動輪廓模型時,可以靈活的選擇約束力、初始輪廓和作用域等,以得到更佳的分割效果。利用曲線演化來檢測目標的一類方法,基於此可以得到精確的邊緣信息。其基本思想是,先定義初始曲線C,然後根據圖像數據得到能量函數,通過最小化能量函數來引發曲線變化,使其向目標邊緣逐漸逼近,最終找到目標邊緣。這種動態逼近方法所求得的邊緣曲線具有封閉、光滑等優點。

5. 基於深度學習的分割方法(簡單介紹)

A、基於特徵編碼

在特徵提取領域中VGGResNet是兩個非常有統治力的方法。

VGG

通過反覆地堆疊3*3的小型卷積核和2*2的最大池化層,構建了16~19層的深度神經網絡。

幾點說明:

  • 感受野很小的濾波器:3×3(這是捕獲左/右,上/下,中心概念的最小尺寸)。
  • 1×1卷積濾波器,可以看作輸入通道的線性變換(後面加relu的是非線性)。
  • 卷積步長固定爲1個像素;卷積層輸入的空間填充要滿足卷積之後保留空間分辨率,即3×3卷積層的填充爲1個像素。
  • 空間池化由五個最大池化層進行,這些層在一些卷積層之後(不是所有的卷積層之後都是最大池化)。在2×2像素窗口上進行最大池化,步長爲2。
  • 之後是三個全連接(FC)層。
  • 最後一層是soft-max層。所有網絡中全連接層的配置是相同的。
  • 在多個遷移學習任務中的表現要優於googLeNet。而且,從圖像中提取CNN特徵,VGG模型是首選算法。
  •  雖然網絡層數加深,但VGG在訓練的過程中比AlexNet收斂的要快一些,主要因爲:

      (1)使用小卷積核和更深的網絡進行的正則化;

      (2)在特定的層使用了預訓練得到的數據進行參數的初始化。

理解1*1卷積核的作用

(1)採用非線性激活函數可以提高模型的非線性能力

(2)專注於跨通道的特徵組合;

(3)對feature map在channel層級進行降維或升維。?

ResNet

Resnet出現的背景:深度學習網絡在堆疊到一定深度的時候會出現梯度消失的現象,導致誤差升高效果變差,後向傳播時無法將梯度反饋到前面的網絡層,使得前方的網絡層的參數難以更新,訓練效果變差。

梯度消失或者梯度爆炸解決方案:對輸入數據和中間層的數據進行歸一化(BN)操作,這種方法可以保證網絡在反向傳播中採用隨機梯度下降(SGD),從而讓網絡達到收斂。

不退化不是我們的目的,我們希望有更好性能的網絡。  resnet學習的是殘差函數F(x) = H(x) - x, 這裏如果F(x) = 0, 那麼就是上面提到的恆等映射。事實上,resnet是“shortcut connections”的在connections是在恆等映射下的特殊情況,它沒有引入額外的參數和計算複雜度。通過使用ResNet Unit成功訓練出了152層的神經網絡。

Resnet核心:

對殘差塊做了計算優化,即將兩個3x3的卷積層替換爲1x1 + 3x3 + 1x1, 如下圖。新結構中的中間3x3的卷積層首先在一個降維1x1卷積層下減少了計算,然後在另一個1x1的卷積層下做了還原,既保持了精度又減少了計算量。

ResNet的優缺點:
1)引入了全新的網絡結構(殘差學習模塊),形成了新的網絡結構,可以使網絡儘可能地加深;
2)使得前饋/反饋傳播算法能夠順利進行,結構更加簡單;
3)恆等映射地增加基本上不會降低網絡的性能;
4)建設性地解決了網絡訓練的越深,誤差升高,梯度消失越明顯的問題;
5)由於ResNet搭建的層數衆多,所以需要的訓練時間也比平常網絡要長。

B、基於區域選擇(regional proposal based)

Regional proposal 在計算機視覺領域是一個非常常用的算法,尤其是在目標檢測領域。其核心思想就是檢測顏色空間相似矩陣,根據這些來檢測待檢測的區域。然後根據檢測結果可以進行分類預測。

Stage Ⅰ: R-CNN

Stage Ⅱ:Fast R-CNN:目標檢測

Stage Ⅲ:Faster R-CNN:目標檢測

Stage Ⅳ:Mask R-CNN:主要完成了三件事情:目標檢測,目標分類,像素級分割。

Stage Ⅴ:Mask Scoring R-CNN

 

C.基於RNN的圖像分割

在語義分割領域,基於區域選擇的幾個算法主要是由前人的有關於目標檢測的工作漸漸延伸到語義分割的領域的.

ReSeg模型

MDRNNs(Multi-Dimensional Recurrent Neural Networks)模型

 

D.基於上採樣/反捲積的分割方法

FCN:在FCN當中的反捲積-升採樣結構中,圖片會先進性上採樣(擴大像素);再進行卷積——通過學習獲得權值。

優缺點:

  • FCN對圖像進行了像素級的分類,從而解決了語義級別的圖像分割問題;
  • FCN可以接受任意尺寸的輸入圖像,可以保留下原始輸入圖像中的空間信息;
  • 得到的結果由於上採樣的原因比較模糊和平滑,對圖像中的細節不敏感;
  • 對各個像素分別進行分類,沒有充分考慮像素與像素的關係,缺乏空間一致性。

SetNet:旨在解決自動駕駛或者智能機器人的圖像語義分割深度網絡,SegNet基於FCN,與FCN的思路十分相似,只是其編碼-解碼器和FCN的稍有不同,其解碼器中使用去池化對特徵圖進行上採樣,並在分各種保持高頻細節的完整性;而編碼器不使用全連接層,因此是擁有較少參數的輕量級網絡:

SetNet的優缺點:

  • 保存了高頻部分的完整性;
  • 網絡不笨重,參數少,較爲輕便;
  • 對於分類的邊界位置置信度較低;
  • 對於難以分辨的類別,例如人與自行車,兩者如果有相互重疊,不確定性會增加。

三、圖像增強

圖像增強算法常見於對圖像的亮度、對比度、飽和度、色調等進行調節,增加其清晰度,減少噪點等。

增強往往經過多個算法的組合,完成上述功能,比如圖像去燥等同於低通濾波器,增加清晰度則爲高通濾波器,當然增強一副圖像是爲最後獲取圖像有用信息服務爲主。

一般的算法流程可爲:

  • 圖像去燥(低通濾波器)
  • 增加清晰度(對比度)(高通濾波器)
  • 灰度化或者獲取圖像邊緣特徵
  • 或者對圖像進行卷積、二值化等

1. 直方圖均衡化

 圖像對比度增強的方法可以分爲兩種:直接對比度增強方法,間接對比度增強方法。直方圖拉伸和直方圖均衡化是常見的間接對比度增強方法。

直方圖拉伸是利用對比度拉伸對直方圖進行調整,擴大前景和背景灰度的差別。

直方圖均衡化則是利用累積函數對灰度值進行調整,實現對比度的增強。

  • 直方圖均衡化處理原理:將原始圖像的灰度圖從比較集中的某個灰度區間均勻分佈在整個灰度空間中,實現對圖像的非線性拉伸,重新分配圖像像素值。
  • 算法的本質是重新分佈圖像的像素值。增加了許多局部的對比度,整體的對比度沒有進行太大改變,所以應用圖像爲圖像有用數據的對比度相近時,例如:X光圖像,可以將曝光過度或曝光不足照片進行更好的顯示,或者是背景及前景太亮或太暗的圖像非常有用。
  • 算法當然也有缺點,具體表現爲:變換後的圖像灰度級減少,某些細節減少;某些圖像有高峯值,則處理後對比度不自然的過分增強。

算法僞代碼:

        1、計算原始灰度圖像的像素概率分佈

         2、根據像素概率分佈獲取圖像累積分佈函數

        3、根據映射函數(均衡化)獲取變換後的圖像

2. 基於拉普拉斯算子的圖像增強

 利用拉普拉斯算子進行圖像增強本質是利用圖像的二次微分對圖像進行銳化,在圖像領域中微分是銳化積分是模糊,利用二次微分對圖像進行銳化即利用鄰域像素提高對比度。

3. 基於Log變換的圖像增強

   對數變換可以將圖像的低灰度值部分擴展,顯示出低灰度部分更多的細節,將其高灰度值部分壓縮,減少高灰度值部分的細節,從而達到強調圖像低灰度部分的目的。變換方法:

對於不同的底數,底數越大,對低灰度部分的擴展就越強,對高灰度部分的壓縮也就越強。

4. 基於伽馬變換的圖像增強

伽馬變換主要用於圖像的校正,將灰度過高或者灰度過低的圖片進行修正,增強對比度。變換公式就是對原圖像上每一個像素值做乘積運算:

伽馬變換對圖像的修正作用其實就是通過增強低灰度或高灰度的細節實現的。

  γ值以1爲分界,值越小,對圖像低灰度部分的擴展作用就越強,值越大,對圖像高灰度部分的擴展作用就越強,通過不同的γ值,就可以達到增強低灰度或高灰度部分細節的作用。

伽馬變換對於圖像對比度偏低,並且整體亮度值偏高(對於於相機過曝)情況下的圖像增強效果明顯。

四、圖像降噪

圖像預處理算法的好壞直接關係到後續圖像處理的效果,如圖像分割、目標識別、邊緣提取等,爲了獲取高質量的數字圖像,很多時候都需要對圖像進行降噪處理,儘可能的保持原始信息完整性(即主要特徵)的同時,又能夠去除信號中無用的信息

一般的圖像處理,微小的細節對圖像降噪的後續處理程序影響不太明顯,但是當處理對象爲醫學圖像時,這樣的小失誤是不被允許的,因爲在醫療診斷或治療中,每一個微小的失誤都會影響醫師的治療方法甚至威脅到患者的生命。這就要求更多的研究者來投入時間和精力研究新的降噪技術,以達到降噪並同時仍能保留足夠細節信息的目的。

目前常用的圖像去噪算法大體上可非爲兩類,即空域像素特徵去噪算法和變換域去噪算法。前者是直接地在圖像空間中進行的處理,後者是間接地在圖像變換域中進行處理。

什麼是隨機噪聲呢?相比於圖像的真實信號來說隨機噪聲就是一種或高或低呈現出不確定變化的一種信號,如下圖所示虛線代表真實信號,紅藍線表示的就是隨機噪聲信號,所有的隨機噪聲信號求和後結果爲0。

由於這個零和特點,目前幾乎所有的空域降噪算法都是基於這個理論爲出發點來進行降噪處理的。

空域像素特徵去噪算法

基於空域像素特徵的方法,是通過分析在一定大小的窗口內,中心像素與其他相鄰像素之間在灰度空間的直接聯繫,來獲取新的中心像素值的方法,因此往往都會存在一個典型的輸入參數,即濾波半徑r。此濾波半徑可能被用於在該局部窗口內計算像素的相似性,也可能是一些高斯或拉普拉斯算子的計算窗口。在鄰域濾波方法裏面,最具有代表性的濾波方法有以下幾種:

(1) 算術均值濾波與高斯濾波

算術均值濾波用像素鄰域的平均灰度來代替像素值,適用於脈衝噪聲,因爲脈衝噪聲的灰度級一般與周圍像素的灰度級不相關,而且亮度高出其他像素許多。

均值濾波結果A'(i,j)隨着L(濾波半徑)取值的增大而變得越來越模糊,圖像對比度越來越小。經過均值處理之後,噪聲部分被弱化到周圍像素點上,所得到的結果是噪聲幅度減小,但是噪聲點的顆粒面積同時變大,所以污染面積反而增大。爲了解決這個問題,可以通過設定閾值,比較噪聲和鄰域像素灰度,只有當差值超過一定閾值時,才被認爲是噪聲。不過閾值的設置需要考慮圖像的總體特性和噪聲特性,進行統計分析

高斯濾波矩陣的權值,隨着與中心像素點的距離增加,而呈現高斯衰減的變換特性。這樣的好處在於,離算子中心很遠的像素點的作用很小,從而能在一定程度上保持圖像的邊緣特徵。通過調節高斯平滑參數,可以在圖像特徵過分模糊和欠平滑之間取得折中。與均值濾波一樣,高斯平滑濾波的尺度因子越大,結果越平滑,但由於其權重考慮了與中心像素的距離,因此是更優的對鄰域像素進行加權的濾波算法。

(2) 統計中值濾波

中值濾波首先確定一個濾波窗口及位置(通常含有奇數個像素),然後將窗口內的像素值按灰度大小進行排序,最後取其中位數代替原窗口中心的像素值。

無論是中值濾波還是加權濾波,兩者受窗口的尺寸大小影響非常大。一種對中值濾波的改進是自適應中值濾波,它首先判斷窗口內部的中心像素是否是一個脈衝,如果不是,則輸出標準中值濾波的結果;如果是,則通過繼續增大窗口濾波尺寸來尋找非脈衝的中值,因此該方法相比較原始的統計中值濾波器,在保持清晰度和細節方面更優。

(3) 雙邊濾波

這是一種非線性的保邊濾波方法,是結合圖像的空間鄰近度和像素值相似度的一種折中處理,同時考慮空域信息灰度相似性,達到保邊去噪的目的。具有簡單、非迭代、局部的特點。雙邊濾波器之所以可以達到保邊去噪的效果,是因爲濾波器是由兩個函數構成。一個函數是由幾何空間距離決定濾波器係數。另一個由像素差值決定濾波器係數

(4) 引導濾波(guided filter)

(5) NLM(Non-Local means)算法

前面基於鄰域像素的濾波方法,基本上只考慮了有限窗口範圍內的像素灰度值信息,沒有考慮該窗口範圍內像素的統計信息如方差,也沒有考慮整個圖像的像素分佈特性,和噪聲的先驗知識

針對其侷限性,NLM算法被提出,該算法使用自然圖像中普遍存在的冗餘信息來去噪聲。與常用的雙線性濾波、中值濾波等利用圖像局部信息來濾波不同的是,它利用了整幅圖像來進行去噪,以圖像塊爲單位在圖像中尋找相似區域,再對這些區域求平均,能夠比較好地去掉圖像中存在的高斯噪聲。

變換域去噪算法

圖像變換域去噪算法的基本思想其實就是首先進行某種變換,將圖像從空間域轉換到變換域,然後從頻率上把噪聲分爲高中低頻噪聲,用這種變換域的方法就可以把不同頻率的噪聲分離,之後進行反變換將圖像從變換域轉換到原始空間域,最終達到去除圖像噪聲的目的。

圖像從空間域轉換到變換域的方法很多,其中最具代表性的有傅里葉變換離散餘弦變換小波變換以及多尺度幾何分析方法等。

BM3D

更詳細請參考:http://wenhuix.github.io/research/denoise.html 

空域中NLM算法和變換域中小波萎縮法效果都很好。BM3D就是融合了spatial denoise和tranform denoise,從而可以得到最高的峯值信噪比。它先吸取了NLM中的計算相似塊的方法,然後又融合了小波變換域去噪的方法。

BM3D算法總共有兩大步驟,分爲基礎估計(Step1)和最終估計(Step2)。在這兩大步中,分別又有三小步:相似塊分組,協同濾波和聚合。

Stpe1:基礎估計

(1) 相似塊分組:首先在噪聲圖像中選擇一些大小的參照塊(考慮到算法複雜度,不用每個像素點都選參照塊,通常隔3個像素爲一個步長進行選取,複雜度降到1/9),在參照塊的周圍適當大小區域內進行搜索,尋找若干個差異度最小的塊,並把這些塊整合成一個3維的矩陣。

(2) 協同濾波:形成若干個三維的矩陣之後,首先將每個三維矩陣中的二維的塊(即噪聲圖中的某個塊)進行二維變換,可採用小波變換或DCT變換等。二維變換結束後,在矩陣的第三個維度進行一維變換,變換完成後對三維矩陣進行硬閾值處理,將小於閾值的係數置0,然後通過在第三維的一維反變換和二維反變換得到處理後的圖像塊。

(3) 聚合:此時,每個二維塊都是對去噪圖像的估計。這一步分別將這些塊融合到原來的位置,每個像素的灰度值通過每個對應位置的塊的值加權平均,權重取決於置0的個數和噪聲強度。

Step2:最終估計

具體的步驟從流程圖可看出和Step1基本一樣,不同的有兩處:

一處是聚合過程將會得到兩個三維數組:噪聲圖形成的三維矩陣和基礎估計結果的三維矩陣。

另一處是協同濾波中用維納濾波(Wiener Filtering)代替了硬閾值處理。

降噪算法總結

BM3D算法是目前傳統算法中效果最好的去噪算法,相比於NLM噪聲更少,圖像細節恢復更多,但算法複雜度實在太高,除非解決計算性能問題,不然至少工業界是無法容忍幾分鐘的處理時間進行降噪處理。

圖像去噪難點在於區別高頻信號(如紋理、邊緣)和噪聲,去噪常用思想是利用圖像的相似性。空域去噪是認爲相近的點相似,通過平滑可以降低隨機性的噪聲,效果較好的去噪方法大多是多種方法結合,既能很好地保持邊緣信息,又能去除圖像中的噪聲,比如將中值濾波和小波濾波結合起來進行濾波。

基本上傳統的去噪算法都是從噪音圖像中找出規律後再進行相對應的去噪處理。那麼如果從有噪音的圖片本身無法找到規律,我們是否也可以藉助其他類似但又沒有噪音的圖片,來總結圖片具有的固有屬性呢?(深度學習方法)

 

 

 

 

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章