數(shù)字圖像處理知識點總結(jié)概述
點擊上方“小白學(xué)視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
1.直方圖:一幅圖像由不同灰度值的像素組成,圖像中灰度的分布情況是該圖像的一個重要特征。圖像的灰度直方圖就描述了圖像中灰度分布情況,能夠很直觀的展示出圖像中各個灰度級所占的多少。圖像的灰度直方圖是灰度級的函數(shù),描述的是圖像中具有該灰度級的像素的個數(shù):其中,橫坐標是灰度級,縱坐標是該灰度級出現(xiàn)的頻率。
數(shù)字圖像在范圍[0,G]內(nèi)總共有L個灰度級,直方圖為h(rK)=nk
rK是去見[0,G]內(nèi)的第K級亮度,nk是灰度級為rK的像素數(shù)。
歸一化直方圖:
1.1直方圖對比:
方法描述:有兩幅圖像patch(當然也可是整幅圖像),分別計算兩幅圖像的直方圖,并將直方圖進行歸一化,然后按照某種距離度量的標準進行相似度的測量。
方法的思想:基于簡單的向量相似度來對圖像相似度進行度量。
優(yōu)點:直方圖能夠很好的歸一化,比如256個bin條,那么即使是不同分辨率的圖像都可以直接通過其直方圖來計算相似度,計算量適中。比較適合描述難以自動分割的圖像。
缺點:直方圖反應(yīng)的是圖像灰度值得概率分布,并沒有圖像的空間位置信息在里面,因此,常常出現(xiàn)誤判;從信息論來講,通過直方圖轉(zhuǎn)換,信息丟失量較大,因此單一的通過直方圖進行匹配顯得有點力不從心。

矩陣分解的方法
方法描述:將圖像patch做矩陣分解,比如SVD奇異值分解和NMF非負矩陣分解等,然后再做相似度的計算。
方法思想:因為圖像本身來講就是一個矩陣,可以依靠矩陣分解獲取一些更加魯棒的特征來對圖像進行相似度的計算。
基于SVD分解的方法優(yōu)點:奇異值的穩(wěn)定性,比例不變性,旋轉(zhuǎn)不變性和壓縮性。即奇異值分解是基于整體的表示,不但具有正交變換、旋轉(zhuǎn)、位移、鏡像映射等代數(shù)和幾何上的不變性,而且具有良好的穩(wěn)定性和抗噪性,廣泛應(yīng)用于模式識別與圖像分析中。對圖像進行奇異值分解的目的是得到唯一、穩(wěn)定的特征描述,降低特征空間的維度,提高抗干擾能力。
基于SVD分解的方法缺點是:奇異值分解得到的奇異矢量中有負數(shù)存在,不能很好的解釋其物理意義。
基于NMF分解的方法:將非負矩陣分解為可以體現(xiàn)圖像主要信息的基矩陣與系數(shù)矩陣,并且可以對基矩陣賦予很好的解釋,比如對人臉的分割,得到的基向量就是人的“眼睛”、“鼻子”等主要概念特征,源圖像表示為基矩陣的加權(quán)組合,所以,NMF在人臉識別場合發(fā)揮著巨大的作用。
基于矩陣特征值計算的方法還有很多,比如Trace變換,不變矩計算等。
基于特征點方法
方法描述:統(tǒng)計兩個圖像patch中匹配的特征點數(shù),如果相似的特征點數(shù)比例最大,則認為最相似,最匹配
方法思想:圖像可以中特征點來描述,比如sift特征點,LK光流法中的角點等等。這樣相似度的測量就轉(zhuǎn)變?yōu)樘卣鼽c的匹配了。
以前做過一些實驗,關(guān)于特征點匹配的,對一幅圖像進行仿射變換,然后匹配兩者之間的特征點,選取的特征點有sift和快速的sift變形版本surf等。
方法優(yōu)點:能被選作特征點的大致要滿足不變性,尺度不變性,旋轉(zhuǎn)不變等。這樣圖像的相似度計算也就具備了這些不變性。
方法缺點:特征點的匹配計算速度比較慢,同時特征點也有可能出現(xiàn)錯誤匹配的現(xiàn)象。
基于峰值信噪比(PSNR)的方法
當我們想檢查壓縮視頻帶來的細微差異的時候,就需要構(gòu)建一個能夠逐幀比較差視頻差異的系統(tǒng)。最
常用的比較算法是PSNR( Peak signal-to-noise ratio)。這是個使用“局部均值誤差”來判斷差異的最簡單的方法,假設(shè)有這兩幅圖像:I1和I2,它們的行列數(shù)分別是i,j,有c個通道。每個像素的每個通道的值占用一個字節(jié),值域[0,255]。注意當兩幅圖像的相同的話,MSE的值會變成0。這樣會導(dǎo)致PSNR的公式會除以0而變得沒有意義。所以我們需要單獨的處理這樣的特殊情況。此外由于像素的動態(tài)范圍很廣,在處理時會使用對數(shù)變換來縮小范圍。

基于結(jié)構(gòu)相似性(SSIM,structural similarity (SSIM) index measurement)的方法
結(jié)構(gòu)相似性理論認為,自然圖像信號是高度結(jié)構(gòu)化的,即像素間有很強的相關(guān)性,特別是空域中最接近的像素,這種相關(guān)性蘊含著視覺場景中物體結(jié)構(gòu)的重要信息;HVS的主要功能是從視野中提取結(jié)構(gòu)信息,可以用對結(jié)構(gòu)信息的度量作為圖像感知質(zhì)量的近似。結(jié)構(gòu)相似性理論是一種不同于以往模擬HVS低階的組成結(jié)構(gòu)的全新思想,與基于HVS特性的方法相比,最大的區(qū)別是自頂向下與自底向上的區(qū)別。這一新思想的關(guān)鍵是從對感知誤差度量到對感知結(jié)構(gòu)失真度量的轉(zhuǎn)變。它沒有試圖通過累加與心理物理學(xué)簡單認知模式有關(guān)的誤差來估計圖像質(zhì)量,而是直接估計兩個復(fù)雜結(jié)構(gòu)信號的結(jié)構(gòu)改變,從而在某種程度上繞開了自然圖像內(nèi)容復(fù)雜性及多通道去相關(guān)的問題.作為結(jié)構(gòu)相似性理論的實現(xiàn),結(jié)構(gòu)相似度指數(shù)從圖像組成的角度將結(jié)構(gòu)信息定義為獨立于亮度、對比度的,反映場景中物體結(jié)構(gòu)的屬性,并將失真建模為亮度、對比度和結(jié)構(gòu)三個不同因素的組合。用均值作為亮度的估計,標準差作為對比度的估計,協(xié)方差作為結(jié)構(gòu)相似程度的度量。
圖像模板匹配:一般而言,源圖像與模板圖像patch尺寸一樣的話,可以直接使用上面介紹的圖像相似度測量的方法;如果源圖像與模板圖像尺寸不一樣,通常需要進行滑動匹配窗口,掃面?zhèn)€整幅圖像獲得最好的匹配patch。
模板匹配:是一種在源圖像中尋找與圖像patch最相似的技術(shù),常常用來進行目標的識別、跟蹤與檢測。其中最相似肯定是基于某種相似度準則來講的,也就是需要進行相似度的測量。另外,尋找就需要在圖像上進行逐行、逐列的patch窗口掃描,當然也不一定需要逐行逐列的掃描,當幾個像素的誤差比計算速度來的不重要時就可以設(shè)置掃描的行列步進值,以加快掃描和計算的時間消耗。下面就對相似度測量和模板匹配進行介紹(所有的圖像都假定是灰度圖)。


1.2反向投影:一種記錄給定圖像中像素點如何適應(yīng)直方圖模型像素分布方式的一種方法,也就是說首先計算某一種特征的直方圖模板,然后使用模板在去尋找圖像中存在的該特征的方法。 作用:反向投影用于在輸入圖像(通常較大)中查找特定圖像(通常較小或者僅1個像素,以下將其稱為模板圖像)最匹配的點或者區(qū)域,也就是定位模板圖像出現(xiàn)在輸入圖像的位置。
反向投影如何查找(工作)?
查找的方式就是不斷的在輸入圖像中切割跟模板圖像大小一致的圖像塊,并用直方圖對比的方式與模板圖像進行比較。
反向投影的結(jié)果是什么?
反向投影的結(jié)果包含了:以每個輸入圖像像素點為起點的直方圖對比結(jié)果??梢园阉闯墒且粋€二維的浮點型數(shù)組,二維矩陣,或者單通道的浮點型圖像。
假設(shè)我們有一張100x100的輸入圖像,有一張10x10的模板圖像,查找的過程是這樣的:
(1)從輸入圖像的左上角(0,0)開始,切割一塊(0,0)至(10,10)的臨時圖像;
(2)生成臨時圖像的直方圖;
(3)用臨時圖像的直方圖和模板圖像的直方圖對比,對比結(jié)果記為c;
(4)直方圖對比結(jié)果c,就是結(jié)果圖像(0,0)處的像素值;
(5)切割輸入圖像從(0,1)至(10,11)的臨時圖像,對比直方圖,并記錄到結(jié)果圖像;
(6)重復(fù)(1)~(5)步直到輸入圖像的右下角。
1.3.直方圖均衡化:如果一副圖像的像素占有很多的灰度級而且分布均勻,那么這樣的圖像往往有高對比度和多變的灰度色調(diào)。直方圖均衡化就是一種能僅靠輸入圖像直方圖信息自動達到這種效果的變換函數(shù)。它的基本思想是對圖像中像素個數(shù)多的灰度級進行展寬,而對圖像中像素個數(shù)少的灰度進行壓縮,從而擴展像元取值的動態(tài)范圍,提高了對比度和灰度色調(diào)的變化,使圖像更加清晰。直方圖均衡化是圖像處理領(lǐng)域中利用圖像直方圖對對比度進行調(diào)整的方法。這種方法通常用來增加許多圖像的局部對比度,尤其是當圖像的有用數(shù)據(jù)的對比度相當接近的時候。通過這種方法,亮度可以更好地在直方圖上分布。這樣就可以用于增強局部的對比度而不影響整體的對比度,直方圖均衡化通過有效地擴展常用的亮度來實現(xiàn)這種功能。
直方圖均衡化處理的“中心思想”是把原始圖像的灰度直方圖從比較集中的某個灰度區(qū)間變成在全部灰度范圍內(nèi)的均勻分布。直方圖均衡化就是對圖像進行非線性拉伸,重新分配圖像像素值,使一定灰度范圍內(nèi)的像素數(shù)量大致相同。直方圖均衡化就是把給定圖像的直方圖分布改變成“均勻”分布直方圖分布。
直方圖均衡化的基本思想是把原始圖的直方圖變換為均勻分布的形式,這樣就增加了象素灰度值的動態(tài)范圍從而可達到增強圖像整體對比度的效果。設(shè)原始圖像在(x,y)處的灰度為f,而改變后的圖像為g,則對圖像增強的方法可表述為將在(x,y)處的灰度f映射為g。在灰度直方圖均衡化處理中對圖像的映射函數(shù)可定義為:g = EQ (f),這個映射函數(shù)EQ(f)必須滿足兩個條件(其中L為圖像的灰度級數(shù)):
(1)EQ(f)在0≤f≤L-1范圍內(nèi)是一個單值單增函數(shù)。這是為了保證增強處理沒有打亂原始圖像的灰度排列次序,原圖各灰度級在變換后仍保持從黑到白(或從白到黑)的排列。
(2)對于0≤f≤L-1有0≤g≤L-1,這個條件保證了變換前后灰度值動態(tài)范圍的一致性。
這種方法對于背景和前景都太亮或者太暗的圖像非常有用,這種方法尤其是可以帶來X光圖像中更好的骨骼結(jié)構(gòu)顯示以及曝光過度或者曝光不足照片中更好的細節(jié)。這種方法的一個主要優(yōu)勢是它是一個相當直觀的技術(shù)并且是可逆操作,如果已知均衡化函數(shù),那么就可以恢復(fù)原始的直方圖,并且計算量也不大。這種方法的一個缺點是它對處理的數(shù)據(jù)不加選擇,它可能會增加背景雜訊的對比度并且降低有用信號的對比度;變換后圖像的灰度級減少,某些細節(jié)消失;某些圖像,如直方圖有高峰,經(jīng)處理后對比度不自然的過分增強。
2.濾波:圖像濾波,即在盡量保留圖像細節(jié)特征的條件下對目標圖像的噪聲進行抑制,是圖像預(yù)處理中不可缺少的操作,其處理效果的好壞將直接影響到后續(xù)圖像處理和分析的有效性和可靠性。目的:1、消除圖像中混入的噪聲;2、為圖像識別抽取出圖像特。要求:1、不能損壞圖像輪廓及邊緣 ;2、圖像視覺效果應(yīng)當更好。
濾波和模糊的區(qū)別:拿高斯濾波來舉例:濾波一般可以分為高通濾波和低通濾波,對于高斯低通濾波就會產(chǎn)生模糊效果,如果對于高斯高通濾波就會產(chǎn)生銳化的效果。所以通常是:高斯濾波就是指使用高斯函數(shù)進行濾波;高斯模糊就是指低通濾波。
高通:邊緣增強、邊緣提取 ;低通:鈍化圖像、去除噪音 ;帶通:刪除特定頻率、增強中很少用。
2.1.線性濾波器:在圖像處理中,對鄰域中的像素的計算為線性運算時,如利用窗口函數(shù)進行平滑加權(quán)求和的運算,或者某種卷積運算,都可以稱為線性濾波。常見的線性濾波有:均值濾波、高斯濾波、盒子濾波、拉普拉斯濾波等等,通常線性濾波器之間只是模版系數(shù)不同。
均值濾波(normalized box filter):用其像素點周圍像素的平均值代替元像素值,在濾除噪聲的同時也會濾掉圖像的邊緣信息。在OpenCV中,可以使用boxFilter和blur函數(shù)進行均值濾波。均值濾波的核為
高斯濾波(Gaussian filter):高斯濾波為最常用的濾波器,具有可分離性質(zhì),可以把二維高斯運算轉(zhuǎn)換為一維高斯運算,其本質(zhì)上為一個低通濾波器。在OpenCV中可通過函數(shù)GaussianBlur進行操作。
2.2. 非線性濾波:非線性濾波利用原始圖像跟模版之間的一種邏輯關(guān)系得到結(jié)果,如最值濾波器,中值濾波器。比較常用的有中值濾波器和雙邊濾波器。
中值濾波(median filter):中值濾波用測試像素周圍鄰域像素集中的中值代替原像素。中值濾波去除椒鹽噪聲和斑塊噪聲時,效果非常明顯。在OpenCV中,可以使用函數(shù)medianBlur進行操作。

雙邊濾波(bilateral filter):雙邊濾波在平滑圖像時能夠很好的保留邊緣特性,但是其運算速度比較慢。在OpenCV中,可以使用函數(shù)bilateralFilter進行操作。
w(x,y)為加權(quán)系數(shù),取決于定義域核和值域核的乘積。
3邊緣檢測:Edge Detection 我們要找水平的邊緣:需要注意的是,這里矩陣的元素和是0,所以濾波后的圖像會很暗,只有邊緣的地方是有亮度的。邊緣是圖像中灰度發(fā)生急劇變化的區(qū)域邊界。圖像灰度的變化情況可以用圖像灰度分布的梯度來表示,數(shù)字圖像中求導(dǎo)是利用差分近似微分來進行的,實際上常用空域微分算子通過卷積來完成。
一般圖像邊緣檢測方法主要有如下四個步驟:
(1)圖像濾波:傳統(tǒng)邊緣檢測算法主要是基于圖像強度的一階和二階導(dǎo)數(shù),但導(dǎo)數(shù)的計算對噪聲很敏感,因此必須使用濾波器來改善與噪聲有關(guān)的邊緣檢測器的性能。需要指出的是,大多數(shù)濾波器在降低噪聲的同時也造成了了邊緣強度的損失,因此,在增強邊緣和降低噪聲之間需要一個折衷的選擇。
(2)圖像增強:增強邊緣的基礎(chǔ)是確定圖像各點鄰域強度的變化值。增強算法可以將鄰域(或局部)強度值有顯著變化的點突顯出來。邊緣增強一般是通過計算梯度的幅值來完成的。
(3)圖像檢測:在圖像中有許多點的梯度幅值比較大,而這些點在特定的應(yīng)用領(lǐng)域中并不都是邊緣,所以應(yīng)該用某種方法來確定哪些點是邊緣點。最簡單的邊緣檢測判斷依據(jù)是梯度幅值。
(4)圖像定位:如果某一應(yīng)用場合要求確定邊緣位置,則邊緣的位置可在子像素分辨率上來估計,邊緣的方位也可以被估計出來。近20多年來提出了許多邊緣檢測算子。
一階導(dǎo)數(shù)算子
1)Roberts算子:是一種斜向偏差分的梯度計算方法,梯度的大小代表邊緣的強度,梯度的方向與邊緣的走向垂直。Roberts操作實際上是求旋轉(zhuǎn)45度兩個方向上微分值的和。定位精度高,在水平和垂直方向的效果好,但對噪聲敏感。兩個卷積核Gx、Gy分別為


采用1范數(shù)衡量梯度的幅度為
=
。如果梯度G大于某一閥值 則認為該點(x,y)為邊緣點。
2)Sobel算子:是一組方向算子,從不同的方向檢測邊緣。Sobel算子不是簡單的求平均再差分,而是加強了中心像素上下左右4個方向像素的權(quán)值,運算結(jié)果是一副邊緣圖。Sobel算子通常對灰度漸變和噪聲較多的圖像處理的比較好。兩個卷積核Gx、Gy分別為:


采用范數(shù)衡量梯度的幅度為
。如果梯度G大于某一閥值 則認為該點(x,y)為邊緣點。
3)Prewitt算子:是一種邊緣樣板算子,利用像素點上下左右鄰點灰度差,在邊緣處達到極值檢測邊緣,對噪聲具有平滑的作用。由于邊緣點像素的灰度值與其鄰域點的灰度值顯著不同,在實際應(yīng)用中通常采用微分算子和模板匹配的方法檢測圖像的邊緣。Prewitt算子不僅能檢測邊緣點,而且能抑制噪聲的影響,因此對灰度和噪聲較多的圖像處理得比較好。兩個卷積核Gx、Gy分別為:


采用范數(shù)衡量梯度的幅度為:
。如果梯度G大于某一閥值 則認為該點(x,y)為邊緣點。
二階導(dǎo)數(shù)算子也可以檢測邊緣,利用二階導(dǎo)數(shù)算子檢測階梯狀邊緣需將檢測算子與圖像卷積并確定過零點。
1) Laplacian算子:拉普拉斯算子是一種常用的二階導(dǎo)數(shù)算子。實際中可根據(jù)二階導(dǎo)數(shù)算子過零點的性質(zhì)來確定邊緣的位置。對于一個連續(xù)函數(shù)f(x,y),它在位置(x,y)的拉普拉斯值定義如下:
在圖像中,計算函數(shù)的拉普拉斯值也可借助各種模板實現(xiàn)。這里對模板的基本要求是對應(yīng)中心像素的系數(shù)應(yīng)是正的,而對應(yīng)中心像素鄰近像素的系數(shù)應(yīng)是負的,且它們的和應(yīng)該是零。拉普拉斯算子檢測方法常常產(chǎn)生雙像素邊界,而且這個檢測方法對圖像中的噪聲相當敏感,不能檢測邊緣的方向,所以很少直接使用拉普拉斯算子進行邊緣檢測。常用的兩種模板分別如圖所示:


2)LOG算法:
LOG算法步驟如下:1、 取樣得到的高斯低通濾波器對輸入圖像濾波。2、 計算第一步得到圖像的拉普拉斯。3、 找到步驟2所得圖像的零交叉。
3) Canny算子:Canny算子把邊緣檢測問題轉(zhuǎn)換為檢測單位函數(shù)極大值的問題來考慮。他利用高斯模型,借助圖像濾波的概念指出一個好的邊緣檢測算子應(yīng)該具有3個指標:1.低失誤率,既要少將真的邊緣丟棄,也要少將非邊緣判為邊緣;2.高位置精度,檢測出的邊緣應(yīng)在真正的邊界上;3.單像素邊緣,即對每個邊緣有唯一的響應(yīng),得到的邊界為單像素寬。
考慮到上述三個條件,Canny提出了判定邊緣檢測算子的3個準則:信噪比準則、定位精度準則和單邊緣響應(yīng)準則。
1. 信噪比準則:信噪比越大,提取的邊緣質(zhì)量越高。信噪比SNR定義為
2. 定位精度準則邊緣定位的精度L定義如下
其中,G’(x)和h’(x)分別是G(x)和h(x)的導(dǎo)數(shù)。L越大表明定位精度越高。
3. 單邊緣響應(yīng)準則:為了保證單邊緣只有一個響應(yīng)。檢測算子的脈沖響應(yīng)導(dǎo)數(shù)的零交叉點的平均距離D(f’)應(yīng)滿足
滿足上述三個條件的算子稱為Canny算子。Canny邊緣檢測算法的步驟如下:
(1) 用高斯濾波器平滑圖像;(2)用一階偏導(dǎo)的有限差分來計算梯度的幅值和方向;(3)對梯度幅值進行非極大值抑制;(排除非邊緣像素,僅僅保留細線條)(4)用雙閾值算法進行檢測和鏈接邊緣。
Robert:邊緣定位精度較高,對于陡峭邊緣且噪聲低的圖像效果較好,但沒有進行平滑處理,沒有抑制噪聲的能力。
sobel和prewitt:進行了平滑處理,對噪聲具有一定抑制能力,但容易出現(xiàn)多像素寬度。精度不高,邊緣較粗糙。
Laplacian:對噪聲較為敏感,使噪聲能力成分得到加強,容易丟失部分邊緣方向信息,造成一些不連續(xù)的檢測邊緣,抗噪聲能力較差。
log:抗噪聲能力較強,但會造成一些尖銳的邊緣無法檢測到。
canny:最優(yōu)化思想的邊緣檢測算子,同時采用高斯函數(shù)對圖像進行平滑處理,但會造成將高頻邊緣平滑掉,造成邊緣丟失,采用雙閾值算法檢測和連接邊緣。
4.形態(tài)學(xué):在特殊領(lǐng)域運算形式——結(jié)構(gòu)元素(Sturcture Element),在每個像素位置上與二值圖像對應(yīng)的區(qū)域進行特定的邏輯運算。運算結(jié)構(gòu)是輸出圖像的相應(yīng)像素。運算效果取決于結(jié)構(gòu)元素大小內(nèi)容以及邏輯運算性質(zhì)。形態(tài)學(xué),即數(shù)學(xué)形態(tài)學(xué)(mathematical Morphology),是圖像處理中應(yīng)用最為廣泛的技術(shù)之一,主要用于從圖像中提取對表達和描繪區(qū)域形狀有意義的圖像分量,使后續(xù)的識別工作能夠抓住目標對象最為本質(zhì)〈最具區(qū)分能力-most discriminative)的形狀特征,如邊界和連通區(qū)域等。同時像細化、像素化和修剪毛刺等技術(shù)也常應(yīng)用于圖像的預(yù)處理和后處理中,成為圖像增強技術(shù)的有力補充。
膨脹、腐蝕、開、閉運算是數(shù)學(xué)形態(tài)學(xué)最基本的變換。
結(jié)構(gòu)元素:簡單地定義為像素的結(jié)構(gòu)(形狀)以及一個原點(又稱為錨點),使用形態(tài)學(xué)濾波涉及對圖像的每個像素應(yīng)用這個結(jié)構(gòu)元素,當結(jié)構(gòu)元素的原點與給定的像素對齊時,它與圖像相交部分定義了一組進行形態(tài)學(xué)運算的像素。原則上,結(jié)構(gòu)元素可以是任何形狀,但通常使用簡單的形狀,比如方形、圓形和菱形,而原點位于中心位置(基于效率的考慮)。設(shè)有兩幅圖像A, S。若A是被處理的對象, 而S是用來處理A的, 則稱S為結(jié)構(gòu)元素。結(jié)構(gòu)元素通常都是一些比較小的圖像, A與S的關(guān)系類似于濾波中圖像和模板的關(guān)系.
腐蝕和膨脹兩個濾波操作也運算在每個像素周圍像素集合上(鄰域),這是由結(jié)構(gòu)元素定義的。當應(yīng)用到一個給定的像素時,結(jié)構(gòu)元素的錨點與該像素的位置對齊,而所有與他相交的像素都被包括在當前像素集合中。腐蝕替換當前像素為像素集合中找到的最小的像素值,而膨脹則替換為像素集合中找到的最大像素值。當然,對于二值圖像,每個像素只能被替換為白色像素或黑色像素
腐蝕和膨脹的主要功能:(1)消除噪聲(2)分割出獨立的圖像元素,在圖像中連接相鄰的元素(3)尋找圖像中的極大值或者極小值區(qū)域(4)求出圖像的梯度。
4.1、膨脹(dilate):膨脹就是求局部最大值的操作。從數(shù)學(xué)角度來說,就是將圖像與核進行卷積,計算核B覆蓋區(qū)域的像素點的最大值,并把這個最大值賦值給參考點指定的元素。這樣就會使圖像中的高亮區(qū)域逐漸增長。模板和輸入圖像對應(yīng)位置的元素只要有一個與的結(jié)果不為0,則結(jié)果不為0.給圖像中的對象邊界添加元素。用3x3的結(jié)構(gòu)元素,掃描二值圖像中的每一個像素,用結(jié)構(gòu)元素與其覆蓋的二值圖像做與運算,如果都為0,則結(jié)果圖像中值為0,否則為1。結(jié)果:輸入圖像中的前景對象擴大一圈。
膨脹的作用和腐蝕相反, 膨脹能使物體邊界擴大, 具體的膨脹結(jié)果與圖像本身和結(jié)構(gòu)元素的形狀有關(guān)。膨脹常用于將圖像中原本斷裂開來的同一物體橋接起來, 對圖像進行二值化之后, 很容易使一個連通的物體斷裂為兩個部分, 而這會給后續(xù)的圖像分析(如要基于連通區(qū)域的分析統(tǒng)計物體的個數(shù)〉造成困擾,此時就可借助膨脹橋接斷裂的縫隙
4.2、腐蝕(erode):腐蝕和膨脹是相反的操作,腐蝕是求局部最小值的操作。腐蝕操作會使圖像中的高亮區(qū)逐漸減小。模板和輸入圖像中對應(yīng)位置的元素相與的結(jié)果全不為0時,結(jié)果才為0。刪除對象邊界的某些像素。用3x3的結(jié)構(gòu)元素,掃描二值圖像的每一個像素,用結(jié)構(gòu)元素與其覆蓋的二值圖像做與運算,如果都為1,則結(jié)果圖像中值為1,否則為0.結(jié)果:前景對象減小一圈。
隨著腐蝕結(jié)構(gòu)元素的逐步增大,小于結(jié)構(gòu)元素的物體相繼消失。由于腐蝕運算具有上述的特點,可以用于濾波。選擇適當大小和形狀的結(jié)構(gòu)元素,可以濾除掉所有不能 完全包含結(jié)構(gòu)元素的噪聲點。然而,利用腐蝕濾除噪聲有一個缺點,即在去除噪聲點的同時,對圖像中前景物體的形狀也會有影響,但當我們只關(guān)心物體的位置或者個數(shù)時,則影響不大。
4.3、開運算:開運算是先腐蝕后膨脹。主要用于消除小物體,在纖細點處分離物體,并且在平滑較大物體的邊界的同時不明顯改變其面積,同時抑制比結(jié)構(gòu)元小的亮細節(jié)。
4.4、閉運算:是先膨脹后腐蝕。用來填充物體內(nèi)細小空洞、連接鄰近物體、平滑其邊界的同時并不明顯改變其面積,同時抑制比結(jié)構(gòu)元小的暗細節(jié)。
4.5、形態(tài)學(xué)梯度:就是將膨脹圖和腐蝕圖相減。對二值化圖像進行這一操作可以將邊緣突出來,可以使用形態(tài)學(xué)梯度來保留物體的邊緣輪廓。
4.6、頂帽變換:就是用源圖像減去開運算圖像。因為開運算帶來的結(jié)果是放大了裂縫或者局部低亮度的區(qū)域。因此,從原圖中減去開運算后的圖,得到的效果圖突出了比原圖輪廓周圍區(qū)域更明亮的區(qū)域。頂帽一般用于校正不均勻光照的影響(補充:均勻光照在從背景中提取目標的處理中扮演核心的角色)。
4.7、黑帽變換:就是用閉運算減去源圖像。黑帽運算后的效果圖突出了比原圖輪廓周圍的區(qū)域更暗的區(qū)域。黑帽運算一般用來分離比鄰近點暗一些的斑塊。
4.8、為什么開運算可以去除目標外的孤立點?
目標外的孤立點是和目標像素值一樣的點,而非背景像素點,即為1而非0(0表示選取的空洞或背景像素值)。
使用腐蝕,背景擴展,該孤立點被腐蝕掉,但是腐蝕會導(dǎo)致目標區(qū)域縮小一圈,因此需要再進行膨脹操作,將目標區(qū)域擴展回原來大小。所以,要使用開運算去除目標外的孤立點。
4.9、為什么閉運算可以去除目標內(nèi)的孔?
目標內(nèi)的孔,屬于周圍都是值為1,內(nèi)部空洞值為0.目的是去除周圍都是1的像素中間的0值。
閉運算首先進行膨脹操作,目標區(qū)域擴張一圈,將目標區(qū)域的0去除,但是目標區(qū)域同時也會向外擴張一圈,因此需要使用腐蝕操作,使得圖像中的目標區(qū)域恢復(fù)到之前的大小。
5、漫水填充:將與種子點相連的像素相近的連通域替換成指定顏色。如果存在mask,不會填充mask的非零像素。比如邊緣檢測輸出圖像可作為mask圖,操作的結(jié)果總是某個連續(xù)的區(qū)域。
作用:1、標記或分離目標區(qū)域;2、獲取掩碼區(qū)域,只處理掩碼指定的像素點,加速處理過程。
6、圖像金字塔:是圖像中多尺度表達的一種,最主要用于圖像分割,是一種以多分辨率來解釋圖像的有效但概念簡單的結(jié)構(gòu)。一幅圖像的金字塔式一系列以金字塔形狀排列的,分辨率逐步降低且來源于同一張原始圖的圖像集合。其通過梯次向下采樣獲得,直到到達某個終止條件才停止采樣。金字塔的底部是待處理圖像的高分辨率表示,而頂部是低分辨率的近似。層級越高圖像越小,分辨率越低。
通常有兩種類型的圖像金字塔,分別是:
(1)數(shù)字金字塔(Gaussuan pyramin)-用來向下采樣,主要的圖像金字塔,主要用來向下采樣圖像
(2)拉普拉斯金字塔(Laplaican pyramid)-用來從金字塔底層圖像重建上層未采樣的還原,在數(shù)字圖像處理中也即是預(yù)測殘差,可以對圖像進行最大程度的還原,配合高斯金字塔一起使用,是從金字塔底層圖像中向上采樣,重建一個圖像。
要從金字塔的第i層生成第i+1層(將第i層表示為Gi),先要用高斯核對Gi進行卷積,然后刪除所有偶數(shù)行和列,新得到的圖像面積會變?yōu)樵磮D像的1/4.按上述過程對輸入圖像G0執(zhí)行操作就可以得到整個金字塔。
當圖像金字塔的上層移動時,尺寸和分辨率會降低。在OpenCV中,從金字塔上一層圖像生成下一級圖像時可以使用PryDown,而通過PryUp將現(xiàn)有的圖像在每個維度上放大兩倍。
注意:PryDown和PryUp函數(shù)互逆的,PryUp不是降采樣的逆操作。圖像首先在每個維度上擴大為原來的兩倍,新增的行(偶數(shù)行)以0填充,然后給指定的濾波器進行卷積(實際上是在每個維度都擴大為原來兩倍的過濾器)去估計“丟失”像素的近似值。
6.1.高斯金字塔
高斯金字塔是通過高斯平滑和亞采樣獲得一些采樣圖像,即是第K層高斯金字塔通過平滑、亞采樣就可以獲得第K+1層高斯圖像。高斯金字塔包括一些列的低通濾波器,其截止頻率從上一層到下一層以因子2逐漸增加,所以高斯金字塔可以跨越很大的頻率范圍。
a.對圖像向下采樣
為了獲得第G(i+1)的金字塔圖像,采取如下方法:
(1)對圖像G(i)進行高斯內(nèi)核卷積
(2)將所有偶數(shù)列和偶數(shù)行去除
得到的圖像即為G(i+1)的圖像,很明顯G(i+1)只有源圖像的四分之一,通過對輸入圖像G(i)(原始圖像)不停的迭代上述步驟就會得到整個金字塔,即向下采樣會丟失圖像的信息,縮小了圖像
b.對圖像的向上采樣
如果想放大圖像,則需要通過向上取樣操作得到
(1)將圖像在每個方向上擴大為原來的兩倍,新增的行和列以0填充
(2)使用先前同樣的內(nèi)核(乘以4)與放大后的圖像卷積,獲得“新增像素”的近似值。
得到的圖像即為放大后的圖像,但是與源圖像想必會發(fā)現(xiàn)比較模糊,因為在縮放中已經(jīng)丟失了一些信息。如果想在縮放過程中減少信息的丟失,這些數(shù)據(jù)就形成了拉普拉斯金字塔。
6.2.拉普拉斯金字塔
第i層的拉普拉斯金字塔的數(shù)學(xué)定義為:
L(i) = G(i) -UP(G(i+1))&g
式中的G(i)表示第i層的圖像,UP()操作是將源圖像中位置為(x,y)的像素映射到目標圖像的(2X+1,2Y+1)位置,即在進行向上取樣,&表示卷積,g為5*5的高斯內(nèi)核.
使用OpenCV中函數(shù)直接進行拉普拉斯運算:L(i) = G(i) -PryUP(G(i+1))
圖像金字塔的一個重要應(yīng)用就是圖像分割
6.3.尺寸調(diào)整:resize()函數(shù)
resize()函數(shù)是OpenCV中專門用來調(diào)整圖像大小的函數(shù)
此函數(shù)將源圖像精確的轉(zhuǎn)換為指定尺寸的目標圖像。如果源圖像中設(shè)置了ROI(Region Of Internet,感興趣區(qū)域),那么resize()函數(shù)會對源圖像的ROI區(qū)域進行調(diào)整圖像尺寸的操作,來輸出到目標圖像中。若目標中已經(jīng)設(shè)置了ROI區(qū)域,不難理解resize()函數(shù)將會對源圖像進行尺寸調(diào)整并填充到目標圖像的ROI中。
7二值化
7.1全局二值化:一幅圖像包括目標物體、背景還有噪聲,要想從多值的數(shù)字圖像中直接提取出目標物體,最常用的方法就是設(shè)定一個全局的閾值T,用T將圖像的數(shù)據(jù)分成兩部分:大于T的像素群和小于T的像素群。將大于T的像素群的像素值設(shè)定為白色(或者黑色),小于T的像素群的像素值設(shè)定為黑色(或者白色)。
全局二值化,在表現(xiàn)圖像細節(jié)方面存在很大缺陷。為了彌補這個缺陷,出現(xiàn)了局部二值化方法。
局部二值化的方法就是按照一定的規(guī)則將整幅圖像劃分為N個窗口,對這N個窗口中的每一個窗口再按照一個統(tǒng)一的閾值T將該窗口內(nèi)的像素劃分為兩部分,進行二值化處理。
7.2局部自適應(yīng)二值化:局部二值化也有一個缺陷。存在于那個統(tǒng)一閾值的選定。這個閾值是沒有經(jīng)過合理的運算得來,一般是取該窗口的平局值。這就導(dǎo)致在每一個窗口內(nèi)仍然出現(xiàn)的是全局二值化的缺陷。為了解決這個問題,就出現(xiàn)了局部自適應(yīng)二值化方法。
局部自適應(yīng)二值化,該方法就是在局部二值化的基礎(chǔ)之上,將閾值的設(shè)定更加合理化。該方法的閾值是通過對該窗口像素的平均值E,像素之間的差平方P,像素之間的均方根值Q等各種局部特征,設(shè)定一個參數(shù)方程進行閾值的計算,例如:T=a*E+b*P+c*Q,其中a,b,c是自由參數(shù)。這樣得出來的二值化圖像就更能表現(xiàn)出二值化圖像中的細節(jié)。
根據(jù)閾值選取的不同,二值化的算法分為固定閾值和自適應(yīng)閾值。 比較常用的二值化方法則有:雙峰法、P參數(shù)法、迭代法和OTSU法等
8、霍夫變換:霍夫變換是圖像處理中用來從圖像中分離出具有某種相同特征的幾何形狀(通常,直線,圓等)的常用方法。經(jīng)典的霍夫變換常用來檢測直線,圓,橢圓等。它是利用圖像全局特性而將邊緣像素連接起來組成區(qū)域封閉邊界的一種方法。在預(yù)先知道區(qū)域形狀的條件下,利用霍夫變換可以方便地得到邊界曲線而將不連續(xù)的邊緣像素點連接起來?;舴蜃儞Q的主要優(yōu)點是受噪聲和曲線間斷的影響小。利用霍夫變換還可以直接檢測某些已知形狀的目標。
9.重映射:把一個圖像中一個位置的像素放置到另一個圖片指定位置的過程.簡單的說就是改變圖片的位置(左,右,上,下,顛倒)。
為了完成映射過程, 有必要獲得一些插值為非整數(shù)像素坐標,因為源圖像與目標圖像的像素坐標不是一一對應(yīng)的.
10、仿射變換: 仿射變換(Affine Transformation)是空間直角坐標系的變換,從一個二維坐標變換到另一個二維坐標,仿射變換是一個線性變換,他保持了圖像的“平行性”和“平直性”,即圖像中原來的直線和平行線,變換后仍然保持原來的直線和平行線,仿射變換比較常用的特殊變換有平移(Translation)、縮放(Scale)、翻轉(zhuǎn)(Flip)、旋轉(zhuǎn)(Rotation)和剪切(Shear)。
11、圖像匹配:目前圖像匹配中,局部特征匹配占據(jù)了絕大部分,常用的局部特征匹配方法有Harris、SIFT、SURF、ORB等等,不同的特征點檢測和匹配方法尤其獨特的優(yōu)勢和不足;
特征點匹配經(jīng)過Ransac算法優(yōu)化后仍存在錯誤匹配點對,需要優(yōu)化后的匹配結(jié)果進行量化評價;
特征點檢測和匹配評價一般包括兩個部分,分別為檢測和匹配的評價。
1. 特征檢測(feature detection)、特征提?。╡xtraction)和匹配(matching) 這三步,可以看做是目標檢測、圖像配準和拼接等工作的非常重要的一步。
2. 特征檢測、特征選擇、特征提取、特征描述和特征匹配
特征檢測: 根據(jù)用戶的需求在圖像中尋找滿足定義的特征,包括角點、Blob點和邊緣點。檢測的結(jié)果:有或沒有。
特征選擇: 為了選擇穩(wěn)定和可靠的特征,在檢測到的特征集合中,需要進一步約束,通過類似于非極大值抑制、對比度閾值約束等條件保留顯著特征。選擇的結(jié)果:特征子集。
特征提?。?/span> 特征選擇確定穩(wěn)定可靠的特征子集后,需要提取特征的位置(Location)、方向(Orientation)和尺度(Scale)信息。方向和尺度信息主要是為支持旋轉(zhuǎn)和尺度變化。
特征描述: 結(jié)合特征(點)鄰域信息,使用一定的描述規(guī)則來對特征區(qū)域進行量化并抽取能代表該特征的描述信息,為了后續(xù)的匹配,一般用特征向量(feature vector)表示。
特征匹配: 對提取到的特征,需要通過使用一定的方法來進一步判斷對應(yīng)的特征是否相同(或近似),對特征向量一般使用歐式距離或最鄰近距離比(NNDR)進行判定,滿足一定的條件約束,則認為兩個特征相近,否則剔除。一般還會通過RANSAC進一步約束剔除誤匹配點。
好消息!
小白學(xué)視覺知識星球
開始面向外開放啦??????
下載1:OpenCV-Contrib擴展模塊中文版教程 在「小白學(xué)視覺」公眾號后臺回復(fù):擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺實戰(zhàn)項目52講 在「小白學(xué)視覺」公眾號后臺回復(fù):Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機視覺。 下載3:OpenCV實戰(zhàn)項目20講 在「小白學(xué)視覺」公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進階。 交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

