- 機器視覺與機器學習:算法原理、框架應用與代碼實現
- 宋麗梅 朱新軍編著
- 7018字
- 2020-09-18 18:33:16
2.1 圖像預處理
2.1.1 圖像濾波
圖像濾波的目的是消除或者抑制圖像中的噪聲,從而實現圖像增強。噪聲的產生方式有很多,可能由圖像傳輸過程中的信號干擾、相機自身的原因和拍攝過程中的抖動等造成。噪聲主要分為高斯噪聲、脈沖噪聲(也稱為椒鹽噪聲)、散斑噪聲等。一個好的圖像濾波算法會在盡可能去除噪聲的同時最大限度保留圖像細節信息。最常見和最基本的圖像濾波方法有均值濾波、中值濾波、高斯濾波、BM3D濾波(Block Matching and 3D filtering,三維塊匹配濾波)和雙邊濾波等。
1. 均值濾波
均值濾波是線性濾波中最簡單的一種,處理之后的圖像像素值是根據要處理的像素鄰域的像素值來決定的,即每一個像素值用該像素鄰域中所有像素的灰度平均值來代替。均值濾波的操作可以表示為

式中,b(x,y)是均值濾波之后圖像上的像素灰度值;a(r,c)是輸入圖像的像素灰度值,即要進行均值濾波的圖像;m、n為所用模板的大小;Txy為所使用的均值濾波模板;(r,c)為均值濾波模板中的像素坐標。
常用的均值濾波模板有兩種,第一種是計算模板內像素灰度值的平均值

第二種是對模板所覆蓋的像素灰度值加上了權重,即每個像素值對結果的影響不一樣,權重大的像素對結果的影響比較大,具體如

均值濾波在對圖像進行平滑的同時會把階躍變化的灰度值平滑為漸進變化,這就造成了圖像細節信息的嚴重丟失,將導致邊緣提取定位精確度的下降。濾波之前將圖像作為二元函數繪制出來的函數圖像如圖2-1所示,均值濾波后的圖像如圖2-2a所示,均值濾波后圖像的偽彩色效果如圖2-2b所示。從圖2-1和圖2-2b可以看出圖像濾波使圖像變得光滑,減少了噪聲。

圖2-1 未濾波前的圖像

圖2-2 均值濾波后的圖像及其偽彩色效果
a)均值濾波后的圖像 b)均值濾波后圖像的偽彩色效果
2. 中值濾波
圖像的中值濾波是另一種用來消除圖像噪聲以減少其對后續處理影響的操作。它使用的也是一個模板,在圖像上平移模板并對模板內的像素灰度值按照大小進行排序,然后選取排在中間位置的數值,將它賦值給圖像的待處理像素。如果模板由奇數個元素組成,那么中值就取排序之后中間位置元素的灰度值。如果模板有偶數個元素,中值就取排序之后中間兩個灰度值的平均值。中值濾波的模板通常采用奇數個元素,這樣便于計算和編程實現。對于邊界的處理,可以將原圖像的像素直接復制到處理之后圖像的對應位置,或者將處理之后的圖像邊界像素灰度值直接改為0。中值濾波可以表示為

中值濾波在去除椒鹽噪聲(即脈沖噪聲)方面很有效,同時又能保留圖像的細節特征,如邊緣信息。中值濾波后的圖像如圖2-3a所示,中值濾波后的偽彩色效果如圖2-3b所示。

圖2-3 中值濾波后的圖像及其偽彩色效果
a)中值濾波后的圖像 b)中值濾波后的偽彩色效果
3. 高斯濾波
高斯濾波屬于頻域濾波,它是由高斯函數的形狀來選擇權值的。高斯濾波對一維的高斯分布通常表示為

二維的分布函數為

式中,σ是標準差。
對于圖像處理,通常使用二維的高斯函數。圖像進行高斯濾波之后的平滑程度和標準差有很大的關系:標準差越大,高斯濾波器的頻帶就越寬,圖像就被平滑得越好。通過調節標準差可以很好地處理圖像中噪聲所引起的欠平滑。由于二維高斯函數的旋轉對稱性,高斯濾波在每個方向上的平滑程度是相同的。對于一幅圖像,計算機無法事先知道圖像的邊緣方向信息,因此高斯濾波是無法確定在哪個方向上需要做更多平滑的。高斯函數具有可分離性,使得高斯函數卷積可以分為兩步來實現,首先用一維高斯函數和圖像進行卷積,然后將卷積的結果與另一個方向的一維高斯函數卷積,這樣可以將算法的時間復雜度從O(n2)降低到O(n),從而大大提高計算效率。
理論上,高斯分布在任何位置都是非零值,但是如果這樣的話,高斯模板將是一個無限大的模板,因此在實際應用中,高斯模板的構建只要滿足取值在均值的3倍標準差之內就可以。通常高斯模板的大小為3×3或5×5,它們的權值分布為

高斯濾波后的圖像如圖2-4a所示,高斯濾波后的偽彩色效果如圖2-4b所示。

圖2-4 高斯濾波后的圖像及其偽彩色效果
a)高斯濾波后的圖像 b)高斯濾波后的偽彩色效果
4. BM3D濾波
BM3D濾波是一種性能優越的圖像濾波算法,它包含了非局部和變換域兩種思想。該方法通過與相鄰圖像塊進行匹配,將若干相似的塊整合為一個三維矩陣后在三維空間進行濾波,再將結果反變換融合到二維,得到濾波后的圖像。作為一種非常有效的圖像濾波算法,BM3D濾波成為其他新的濾波算法競相比較的對象。此外,BM3D濾波還擴展到了圖像處理的其他領域,如圖像去模糊、壓縮傳感和超分辨率重構等。
BM3D濾波算法的實現分為兩個步驟。
(1)第一步:基礎估計
首先將圖像窗口化,設定若干參考塊,計算圖像參考塊和與其他圖像塊之間的距離,再根據這些距離尋找若干差異最小的塊作為相似塊,將相似塊歸入對應組,形成一個三維矩陣。得到若干個參考塊的三維矩陣后,首先將每個矩陣中的二維塊進行二維變換編碼(可采用Wavelet變換、DCT變換等)。二維變換結束后,在矩陣的第三個維度進行一維變換。通過分組和濾波得到的每一個塊的估計可能是重疊的,所以需要對這些重疊的塊進行加權平均,這一過程稱為聚集。
(2)第二步:最終估計
第二步與第一步類似,但在塊匹配時是用第一步的結果圖即基礎估計進行匹配。通過塊匹配,每個參考塊形成兩個三維矩陣:一個是通過基礎估計形成的,另一個是通過本次匹配的坐標在噪聲圖上整合出來的。然后兩個三維矩陣都進行二維、一維變換。為了獲得更好的結果,通常最終估計的二維變換采用離散余弦變換。用維納濾波對噪聲圖形成的三維矩陣進行縮放,縮放系數通過基礎估計的三維矩陣值以及噪聲強度得出。濾波后再通過反變換將噪聲圖的三維矩陣變換回圖像估計,之后通過與第一步類似的聚集操作復原出二維圖像而形成最終估計,這樣就得到了BM3D濾波后的圖像。
5. 雙邊濾波
二維圖像的雙邊濾波算法是指利用當前待處理像素鄰域內各個像素灰度值的加權平均值來代替當前像素的灰度值,加權平均過程中采用的權重因子不僅與兩像素間的歐式距離有關,也與兩像素的灰度值差異有關。雙邊濾波算法的優點是既可以對圖像噪聲進行抑制,又可以有效保留圖像的邊緣細節特征。假設p是數字圖像I中的當前待處理像素,則二維圖像雙邊濾波算法為

式中,Ib(p)是p經過雙邊濾波后的像素灰度值;q表示p的鄰域像素點;I(q)是點q的像素灰度值;S為鄰域像素的集合;GS(p,q)為空間鄰近度因子;Gr(p,q)為灰度相似度因子。GS(p,q)和Gr(p,q)的表達式分別為

式中,(x,y)為圖像像素坐標;(u,v)為中心點像素坐標;σS是基于高斯函數的空間距離標準差;σr是基于高斯函數的灰度標準差。
由式(2-8)和式(2-9)可見,雙邊濾波算法同時考慮了當前像素與周圍像素的歐式距離和灰度相似性,因此鄰域中與中心點距離更近、灰度更相似的像素被賦予較大的權重,反之則賦予較小的權重,這使得雙邊濾波算法具有距離各向異性和灰度各向異性,可以較好地保留細節特征。
2.1.2 二值化
1. 二值化基本原理
在數字圖像處理中,二值圖像占有非常重要的地位,在實際應用中以二值圖像處理實現構成的系統是很多的。圖像的二值化處理是將圖像上像素的灰度值置為0或255(或者1),讓整個圖像呈現出明顯的黑白效果,即將256個亮度等級的灰度圖像通過適當的閾值選取而獲得仍然可以反映圖像整體和局部特征的二值圖像。
為了進行二值圖像的處理與分析,首先要把灰度圖像二值化。二值圖像的集合性質只與灰度值為0或255的像素位置有關,而不再涉及像素的多級值,使處理變得簡單。為了得到理想的二值圖像,一般采用封閉、連通的邊界定義不交疊的區域。所有灰度值大于或等于閾值的像素被判定為屬于特定物體,其灰度值設為255,否則這些像素被排除在物體區域以外,灰度值設為0,表示背景或者另外的物體區域。如果某個物體內部有均勻一致的灰度值,并且其處在一個具有其他等級灰度值的均勻背景下,使用閾值法就可以得到較好的分割效果。如果物體同背景的差別不表現在灰度值上(比如紋理不同),則可以將這個差別特征轉換為灰度的差別,然后利用閾值法來分割該圖像。
2. 二值化處理方法
圖像二值化是圖像分析與處理中最常見、最重要的處理手段之一。最常見的二值化處理方法是計算像素灰度值的平均值T,掃描圖像的每個像素灰度值并與T比較,大于T時設為1(白色),否則設為0(黑色),即

公式(2-10)使用平均值作為二值化閾值可能導致部分物體像素或者背景像素丟失。為了解決此問題,可使用直方圖法來尋找二值化閾值。直方圖是圖像的重要統計特征,用直方圖法選擇二值化閾值主要是先找出圖像的兩個最高峰,然后將閾值取為這兩處之間的波谷值。
Otsu方法由日本學者大津(Otsu)提出,也叫最大類間方差法。它主要依據圖像的灰度特性將圖像分成背景和目標兩部分。背景區域和目標區域之間的類間方差越大,其差別也越大。當部分目標被誤判為背景或部分背景被誤判為目標時都會導致這兩部分的差別變小,因此使得類間方差最大的閾值分割意味著誤判的概率最小。
設圖像的灰度級為L,灰度值為i的像素數為ni,圖像總像素數為N。當取灰度值T作為閾值將圖像分為目標A與背景B兩個區域時,這兩個區域的像素數在圖像中的占比分別為

如果A、B區域的平均灰度分別為uA和uB,圖像的平均灰度為u,則A、B區域的類間方差為

當閾值T從0~L-1中取不同值時,類間方差σ2最大時的閾值T即為最佳閾值。
圖2-5為采用Otsu方法進行圖像二值化處理的結果。

圖2-5 采用Otsu方法進行圖像二值化處理
該方法的主程序如下。


子程序如下。




2.1.3 邊緣提取
為了對目標進行識別,要對濾波后的圖像進行邊緣提取,為之后的特征提取做準備。邊緣提取是數字圖像處理和機器視覺中的基本問題。對圖像進行邊緣提取后可以使用邊緣特征來代表整個圖像,這樣做可以大大減少內存中的數據量,并且去除圖像中和本次應用無關的一些特征。
邊緣屬于圖像的高頻信息,是灰度值發生跳變的位置。圖像可以看作關于像素坐標(x,y)的二元函數,數字圖像是二元離散函數。如圖2-6所示,圖像的邊緣反映在二元函數上,就是函數的上升沿和下降沿,因此邊緣的檢測提取可以通過求函數導數的方式實現。

圖2-6 圖像的邊緣信息
a)圓環外部邊緣 b)圓環內部邊緣
1. 常見的邊緣檢測模板
數字圖像的二元函數是離散函數,該函數的變量最小增量都是以一個像素為單位。因此圖像的二元函數一階導數表示為

圖像的二階導數可以表示為

在機器視覺的實際應用中,通常采集到的圖像邊緣部分是平滑的,即灰度值是緩慢改變而不是階躍變化的。在這種情況下,邊緣通常不是只有一個像素的寬度,而是由漸變過程中的一組像素組成的。
空間模板被用來求解圖像中每個像素位置的一階導數或者二階導數。對于3×3的模板,處理過程通常是將模板的權值與模板所覆蓋的圖像像素值對應相乘再求和,即加權求和,具體公式為

式中,zi是模板所覆蓋的圖像像素i的灰度值。
常用的模板有Prewitt模板、Sobel模板和Laplacian模板等。Prewitt模板、Sobel模板和Laplacian模板分別為

其中,Prewitt模板和Sobel模板比較相似,都是分別對x方向和y方向求導數。對于Prewitt模板,導數可以通過將Prewitt兩個方向上的模板對圖像進行卷積得到

和

即第三行和第一行的差分近似等于x方向上的導數,而第三列和第一列的差分近似等于y方向上的導數。
Sobel模板是Prewitt模板的一個衍變,通過將中心位置的1變換為2,Sobel模板可以對圖像進行平滑處理。Sobel的處理過程為

和

盡管Prewitt模板和Sobel模板只是在權值上有很小的差異,但就是因為權值上的這個小差異使得Sobel模板具有更好的噪聲抑制作用,這也使得Sobel模板比Prewitt模板應用更廣泛。還要注意到這兩個模板中的所有權值之和等于0,這樣對于圖像中灰度值都是同一個常量的區域,進行卷積后得到的值也是0,這和微分算子是一樣的。
Laplacian模板是基于二階導數的邊緣檢測方法,Laplacian是最簡單的一種各向同性的微分算子,對于二元函數f(x,y),即圖像f(x,y),Laplacian算子可以定義為

由于任意階的導數都是線性操作,所以Laplacian是一種線性算子。將式(2-22)轉換成離散形式,在x方向可得

同樣,在y方向上可得

由式(2-22)~式(2-24)可得離散Laplacian算子為

從式(2-25)便可得到Laplacian模板。
圖2-7a所示為原始圖像,應用Sobel模板和Laplacian模板對圖像進行邊緣檢測的結果如圖2-7b和圖2-7c所示。

圖2-7 邊緣檢測效果
a)原始圖像 b)Sobel模板邊緣檢測的結果 c)Laplacian模板邊緣檢測的結果
2. Canny邊緣檢測
Canny邊緣檢測對于邊緣的提取有很好的效果。Canny邊緣檢測方法有以下3個最基本的目標。
1)低錯誤率。所有的邊緣都可以被檢測到,沒有檢測到的錯誤邊緣,即盡可能避免將不是邊緣的像素點誤認為是邊緣。信噪比(Single-to-Noise Ratio,SNR)的數學表達式為

可見,信噪比越小,邊緣的誤檢率就越小。式中,G(x)為邊緣函數;f(x)是邊界為[-ω,+ω]的濾波器的脈沖響應;σ是高斯(Gaussian)噪聲的均方根。
2)邊緣位置應盡可能接近真實場景中的邊緣,即定位邊緣的精度要高。也就是說,要求通過Canny邊緣檢測法檢測到的邊緣點和實際邊緣中心的距離最小。數學表達式為

3)最終得到的邊緣寬度是單個像素的寬度。Canny邊緣檢測得到的邊緣只有一個像素的寬度,如果邊緣處有一個像素的邊緣存在和多個像素的邊緣存在,那么Canny邊緣檢測將會選擇最小的邊緣,即一個像素寬度的邊緣。也就是說Canny邊緣檢測的脈沖響應導數的零交叉點平均距離要滿足

Canny邊緣檢測通過高斯函數的一階導數去逼近求解,從而達到以上的目標。
高斯函數為

Canny檢測邊緣的處理過程如下。
(1)用高斯濾波器對輸入圖像進行平滑處理
由于圖像是二維的,在對圖像進行平滑濾波的時候,選用二維高斯函數,見式(2-29)。對G(x,y)和f(x,y)執行卷積操作就可以得到平滑濾波后的圖像。
(2)計算梯度的模和梯度方向

式中,gx和gy分別是x方向和y方向上的一階導數,可以通過式(2-18)和式(2-19)或者式(2-20)和式(2-21)求得;M(x,y)為梯度的模。
求得gx和gy之后可以求取梯度的方向

需要注意的是M(x,y)和α(x,y)是和所處理的圖像大小一樣的矩陣。
(3)對梯度的模M(x,y)應用非極大值抑制
M(x,y)是梯度的模,因此在M(x,y)圖像中有很多屋脊帶,為了確保得到的邊緣定位準確,需要對所得到的M(x,y)進行細化,這一處理過程可以利用非極大值抑制來實現。非極大值抑制法的本質是將邊緣的梯度方向劃分為幾個單獨分離的方向區域,對于3×3的區域可以劃分邊緣的梯度方向為8個區域,每個區域為45°的范圍,如圖2-8所示。

圖2-8 Canny邊緣檢測梯度方向的劃分
在進行非極大值抑制的時候,首先要找到邊緣的梯度方向在以上8個區域中的哪一個區域內,以確定M(x,y)要沿哪個方向和近鄰值比較。確定梯度方向后,比較M(x,y)的值和它沿梯度方向的兩個鄰域值,如果鄰域值中有一個比M(x,y)大,就說明該點不是局部最大值,gN(x,y)= 0;如果M(x,y)大于這兩個鄰域值,則gN(x,y)=M(x,y)。其中,gN(x,y)是對M(x,y)圖像進行非極大值抑制后的圖像。
(4)雙閾值處理和連通性分析
這一操作是為了減少錯誤的邊緣點。采用普通的單閾值處理時,如果閾值選得太小,那么一些錯誤的邊緣仍然會被保留下來;如果閾值選得太大,那么一些真實的邊緣點將會被消除。Canny邊緣檢測通過雙閾值處理克服了這些問題。首先選取合適的高低閾值TH和TL,如果gN(x,y)≥TH,那么該點一定是邊緣上的點;如果gN(x,y)≤TL,那么該點一定不是邊緣上的點;如果TL≤gN(x,y)≤TH,那么就判斷該點的8鄰域中有沒有大于高閾值TH的像素,如果有,那么該點就是邊緣點,如果沒有,那該點就不是邊緣點。
Canny邊緣檢測效果如圖2-9所示。

圖2-9 Canny邊緣檢測效果
3. 霍夫變換直線檢測
(1)霍夫變換基本原理
霍夫(Hough)變換是圖像處理技術中從圖像中識別幾何形狀的基本方法之一。霍夫變換的基本原理是利用點與線的對偶性,通過曲線表達形式把原圖像空間的曲線變換為參數空間的一個點,這樣就把原空間中的圖像檢測問題轉化為尋找參數空間中點的峰值問題,即把檢測整體特性轉化為檢測局部特性。
霍夫變換在兩個不同空間中的點-線對偶性如圖2-10所示。

圖2-10 x-y空間與k-b空間的點-線對偶關系
從圖2-10中可看出,x-y平面和k-b平面有點-線的對偶性。x-y坐標系中的點P1、P2對應k-b坐標系中的線L1、L2,而k-b坐標系中的點P0對應x-y坐標系中的線L0。
在實際應用中,y=kx+b形式的直線方程無法表示為x=c形式的直線(此時直線斜率為無窮大),為了使變換域有意義,采用直線的極坐標方程來解決這一問題,直角坐標系x-y中點(x,y)的極坐標方程為

式中,ρ是直線到坐標原點的距離;θ是直線垂線與x軸的夾角。
這樣,原圖像平面上的點就對應到了ρ-θ平面的一條曲線上,如圖2-11所示,而極坐標系ρ-θ上的點(ρ,θ)對應直角坐標系x-y中的一條直線,而且它們是一一對應的。為了檢測出直角坐標系x-y中由點構成的直線,可以將極坐標系ρ-θ量化成若干大小相等的小格,這個網格對應一個計數陣列。根據直角坐標系中每個點的坐標(x,y),按上面的原理在ρ-θ平面上畫出它對應的曲線,凡是這條曲線所經過的小格,對應的計數陣列元素加1。當直角坐標系中全部的點都變換后,對小格進行檢驗,計數值最大的小格(ρ,θ)值所對應的直角坐標系中的直線即為所求直線。

圖2-11 直線y=x+5上的4個點在極坐標系ρ-θ中對應的4條曲線
直線是圖像的基本特征之一,對圖像直線檢測算法進行研究具有重要的意義。一般物體平面圖像的輪廓可近似為直線及弧的組合,因此對物體輪廓的檢測與識別可以轉化為對這些基元的檢測與提取。另外在運動圖像分析和估計領域也可以采用直線對應法實現剛體旋轉量和位移量的測量。
(2)利用霍夫變換進行直線檢測的MATLAB程序實現



運行結果如圖2-12所示。

圖2-12 Hough直線檢測結果
a)原始圖像 b)Hough矩陣和峰值點 c)檢測出的直線段
- 中文版3ds Max 2013-VRay效果圖制作從新手到高手
- Instant Vert.x
- UG NX 12.0中文版完全自學一本通
- 做合成:Photoshop構圖+透視+紋理+造型+調色技術修煉
- 中文版Illustrator 2021完全自學教程
- 輕松玩轉3D One AI
- PowerPoint 2013從新手到高手(超值版)
- Photoshop CS6從入門到精通
- Midjourney商業設計完全教程
- 精進PPT:PPT設計思維、技術與實踐(第3版)
- 新編中文版3ds Max 2016入門與提高
- 抖音+剪映+Premiere短視頻制作從新手到高手(第2版)
- PHP and MongoDB Web Development Beginner's Guide
- 中文版3ds Max 2022基礎教程
- 社會調查數據管理:基于Stata 14管理CGSS數據