1、閾值分割
1.1 簡介
圖像閾值化分割是一種傳統(tǒng)的最常用的圖像分割方法,因其實(shí)現(xiàn)簡單、計(jì)算量小、性能較穩(wěn)定而成為圖像分割中最基本和應(yīng)用最廣泛的分割技術(shù)。它特別適用于目標(biāo)和背景占據(jù)不同灰度級范圍的圖像。它不僅可以極大的壓縮數(shù)據(jù)量,而且也大大簡化了分析和處理步驟,因此在很多情況下,是進(jìn)行圖像分析、特征提取與模式識(shí)別之前的必要的圖像預(yù)處理過程。
圖像閾值化的目的是要按照灰度級,對像素集合進(jìn)行一個(gè)劃分,得到的每個(gè)子集形成一個(gè)與現(xiàn)實(shí)景物相對應(yīng)的區(qū)域,各個(gè)區(qū)域內(nèi)部具有一致的屬性,而相鄰區(qū)域不具有這種一致屬性。這樣的劃分可以通過從灰度級出發(fā)選取一個(gè)或多個(gè)閾值來實(shí)現(xiàn)。
1.2 基本原理
基本原理是:通過設(shè)定不同的特征閾值,把圖像象素點(diǎn)分為若干類。
常用的特征包括:直接來自原始圖像的灰度或彩色特征;由原始灰度或彩色值變換得到的特征。
設(shè)原始圖像為f(x,y),按照一定的準(zhǔn)則f(x,y)中找到特征值T,將圖像分割為兩個(gè)部分,分割后的圖像為:
若取:b0=0(黑),b1=1(白),即為我們通常所說的圖像二值化。
1.3 方法
閾值分割方法實(shí)際上是輸入圖像f到輸出圖像g的如下變換:
其中,T為閾值,對于物體的圖像元素g(i,j)=1,對于背景的圖像元素g(i,j)=0。
由此可見,閾值分割算法的關(guān)鍵是確定閾值,如果能確定一個(gè)合適的閾值就可準(zhǔn)確地將圖像分割開來。閾值確定后,將閾值與像素點(diǎn)的灰度值逐個(gè)進(jìn)行比較,而且像素分割可對各像素并行地進(jìn)行,分割的結(jié)果直接給出圖像區(qū)域。
閾值分割的優(yōu)點(diǎn)是計(jì)算簡單、運(yùn)算效率較高、速度快。有著各種各樣的閾值處理技術(shù),包括全局閾值、自適應(yīng)閾值、最佳閾值等等。
閾值處理技術(shù)參看:
2、區(qū)域分割
區(qū)域分割是講圖像按照相似性準(zhǔn)則分成不同的區(qū)域,主要包括區(qū)域增長,區(qū)域分裂合并和分水嶺等幾種類型。
2.1 區(qū)域增長
區(qū)域生長是一種串行區(qū)域分割的圖像分割方法。區(qū)域生長是指從某個(gè)像素出發(fā),按照一定的準(zhǔn)則,逐步加入鄰近像素,當(dāng)滿足一定的條件時(shí),區(qū)域生長終止。區(qū)域生長的好壞決定于1.初始點(diǎn)(種子點(diǎn))的選取。
2.生長準(zhǔn)則。
3.終止條件
。區(qū)域生長是從某個(gè)或者某些像素點(diǎn)出發(fā),最后得到整個(gè)區(qū)域,進(jìn)而實(shí)現(xiàn)目標(biāo)的提取。
2.1.1 原理
區(qū)域生長的基本思想是將具有相似性質(zhì)的像素集合起來構(gòu)成區(qū)域。具體先對每個(gè)需要分割的區(qū)域找一個(gè)種子像素作為生長的起點(diǎn),然后將種子像素周圍鄰域中與種子像素有相同或相似性質(zhì)的像素(根據(jù)某種事先確定的生長或相似準(zhǔn)則來判定)合并到種子像素所在的區(qū)域中。將這些新像素當(dāng)作新的種子像素繼續(xù)進(jìn)行上面的過程,直到再?zèng)]有滿足條件的像素可被包括進(jìn)來。這樣一個(gè)區(qū)域就長成了。
區(qū)域生長需要選擇一組能正確代表所需區(qū)域的種子像素,確定在生長過程中的相似性準(zhǔn)則,制定讓生長停止的條件或準(zhǔn)則。相似性準(zhǔn)則可以是灰度級、彩色、紋理、梯度等特性。選取的種子像素可以是單個(gè)像素,也可以是包含若干個(gè)像素的小區(qū)域。大部分區(qū)域生長準(zhǔn)則使用圖像的局部性質(zhì)。生長準(zhǔn)則可根據(jù)不同原則制定,而使用不同的生長準(zhǔn)則會(huì)影響區(qū)域生長的過程。
2.1.2 示例
圖1是區(qū)域增長的示例。
圖1(a)給出需要分割的圖像,設(shè)已知兩個(gè)種子像素(標(biāo)為深淺不同的灰色方塊),現(xiàn)要進(jìn)行區(qū)域生長。設(shè)這里采用的判定準(zhǔn)則是:如果考慮的像素與種子像素灰度值差的絕對值小于某個(gè)門限T,則將該像素包括進(jìn)種子像素所在的區(qū)域。
圖1(b)給出了T=3時(shí)的區(qū)域生長結(jié)果,整幅圖被較好地分成2個(gè)區(qū)域;
-
圖1(c)給出了T=1時(shí)的區(qū)域生長結(jié)果,有些像素?zé)o法判定;圖1(c)給出了T=6時(shí)的區(qū)域生長的結(jié)果,整幅圖都被分在一個(gè)區(qū)域中了。
image
2.1.3 實(shí)現(xiàn)
區(qū)域生長是一種古老的圖像分割方法,最早的區(qū)域生長圖像分割方法是由Levine等人提出的。該方法一般有兩種方式,一種是先給定圖像中要分割的目標(biāo)物體內(nèi)的一個(gè)小塊或者說種子區(qū)域(seed point),再在種子區(qū)域基礎(chǔ)上不斷將其周圍的像素點(diǎn)以一定的規(guī)則加入其中,達(dá)到最終將代表該物體的所有像素點(diǎn)結(jié)合成一個(gè)區(qū)域的目的;另一種是先將圖像分割成很多的一致性較強(qiáng),如區(qū)域內(nèi)像素灰度值相同的小區(qū)域,再按一定的規(guī)則將小區(qū)域融合成大區(qū)域,達(dá)到分割圖像的目的,典型的區(qū)域生長法如T. C. Pong等人提出的基于小面(facet)模型的區(qū)域生長法,區(qū)域生長法固有的缺點(diǎn)是往往會(huì)造成過度分割,即將圖像分割成過多的區(qū)域
區(qū)域生長實(shí)現(xiàn)的步驟如下:
- 對圖像順序掃描!找到第1個(gè)還沒有歸屬的像素, 設(shè)該像素為(x0, y0);
- 以(x0, y0)為中心, 考慮(x0, y0)的4鄰域像素(x, y)如果(x0, y0)滿足生長準(zhǔn)則, 將(x, y)與(x0, y0)合并(在同一區(qū)域內(nèi)), 同時(shí)將(x, y)壓入堆棧;
- 從堆棧中取出一個(gè)像素, 把它當(dāng)作(x0, y0)返回到步驟2;
- 當(dāng)堆棧為空時(shí)!返回到步驟1;
- 重復(fù)步驟1 - 4直到圖像中的每個(gè)點(diǎn)都有歸屬時(shí)。生長結(jié)束。
2、區(qū)域分裂合并
2.1 原理
區(qū)域分裂合并算法的基本思想是先確定一個(gè)分裂合并的準(zhǔn)則,即區(qū)域特征一致性的測度,當(dāng)圖像中某個(gè)區(qū)域的特征不一致時(shí)就將該區(qū)域分裂成4個(gè)相等的子區(qū)域,當(dāng)相鄰的子區(qū)域滿足一致性特征時(shí)則將它們合成一個(gè)大區(qū)域,直至所有區(qū)域不再滿足分裂合并的條件為止。當(dāng)分裂到不能再分的情況時(shí),分裂結(jié)束,然后它將查找相鄰區(qū)域有沒有相似的特征,如果有就將相似區(qū)域進(jìn)行合并,最后達(dá)到分割的作用。在一定程度上區(qū)域生長和區(qū)域分裂合并算法有異曲同工之妙,互相促進(jìn)相輔相成的,區(qū)域分裂到極致就是分割成單一像素點(diǎn),然后按照一定的測量準(zhǔn)則進(jìn)行合并,在一定程度上可以認(rèn)為是單一像素點(diǎn)的區(qū)域生長方法。區(qū)域生長比區(qū)域分裂合并的方法節(jié)省了分裂的過程,而區(qū)域分裂合并的方法可以在較大的一個(gè)相似區(qū)域基礎(chǔ)上再進(jìn)行相似合并,而區(qū)域生長只能從單一像素點(diǎn)出發(fā)進(jìn)行生長(合并)。
2.2 算法
反復(fù)進(jìn)行拆分和聚合以滿足限制條件的算法。
令R表示整幅圖像區(qū)域并選擇一個(gè)謂詞P。對R進(jìn)行分割的一種方法是反復(fù)將分割得到的結(jié)果圖像再次分為四個(gè)區(qū)域,直到對任何區(qū)域Ri,有P(Ri)=TRUE。這里是從整幅圖像開始。如果P(R)=FALSE,就將圖像分割為4個(gè)區(qū)域。對任何區(qū)域如果P的值是FALSE.就將這4個(gè)區(qū)域的每個(gè)區(qū)域再次分別分為4個(gè)區(qū)域,如此不斷繼續(xù)下去。這種特殊的分割技術(shù)用所謂的四叉樹形式表示最為方便(就是說,每個(gè)非葉子節(jié)點(diǎn)正好有4個(gè)子樹),這正如圖10.42中說明的樹那樣。注意,樹的根對應(yīng)于整幅圖像,每個(gè)節(jié)點(diǎn)對應(yīng)于劃分的子部分。此時(shí),只有R4進(jìn)行了進(jìn)一步的再細(xì)分。
如果只使用拆分,最后的分區(qū)可能會(huì)包含具有相同性質(zhì)的相鄰區(qū)域。這種缺陷可以通過進(jìn)行拆分的同時(shí)也允許進(jìn)行區(qū)域聚合來得到矯正。就是說,只有在P(Rj∪Rk)=TRUE時(shí),兩個(gè)相鄰的區(qū)域Rj和Rk才能聚合。
前面的討論可以總結(jié)為如下過程。在反復(fù)操作的每一步,我們需要做:
- 對于任何區(qū)域Ri,如果P(Ri)=FALSE,就將每個(gè)區(qū)域都拆分為4個(gè)相連的象限區(qū)域。
- 將P(Rj∪Rk)=TRUE的任意兩個(gè)相鄰區(qū)域Rj和Rk進(jìn)行聚合。
- 當(dāng)再無法進(jìn)行聚合或拆分時(shí)操作停止。
可以對前面講述的基本思想進(jìn)行幾種變化。例如,一種可能的變化是開始時(shí)將圖像拆分為一組圖象塊。然后對每個(gè)塊進(jìn)一步進(jìn)行上述拆分,但聚合操作開始時(shí)受只能將4個(gè)塊并為一組的限制。這4個(gè)塊是四叉樹表示法中節(jié)點(diǎn)的后代且都滿足謂詞P。當(dāng)不能再進(jìn)行此類聚合時(shí),這個(gè)過程終止于滿足步驟2的最后的區(qū)域聚合。在這種情況下,聚合的區(qū)域可能會(huì)大小不同。這種方法的主要優(yōu)點(diǎn)是對于拆分和聚合都使用同樣的四叉樹,直到聚合的最后一步。
3、分水嶺法
3.1 原理
分水嶺分割方法,是一種基于拓?fù)淅碚摰臄?shù)學(xué)形態(tài)學(xué)的分割方法,其基本思想是把圖像看作是測地學(xué)上的拓?fù)涞孛玻瑘D像中每一點(diǎn)像素的灰度值表示該點(diǎn)的海拔高度,每一個(gè)局部極小值及其影響區(qū)域稱為集水盆,而集水盆的邊界則形成分水嶺。分水嶺的概念和形成可以通過模擬浸入過程來說明。在每一個(gè)局部極小值表面,刺穿一個(gè)小孔,然后把整個(gè)模型慢慢浸入水中,隨著浸入的加深,每一個(gè)局部極小值的影響域慢慢向外擴(kuò)展,在兩個(gè)集水盆匯合處構(gòu)筑大壩,即形成分水嶺。
3.2 算法
分水嶺的計(jì)算過程是一個(gè)迭代標(biāo)注過程。分水嶺比較經(jīng)典的計(jì)算方法是L. Vincent提出的。在該算法中,分水嶺計(jì)算分兩個(gè)步驟,一個(gè)是排序過程,一個(gè)是淹沒過程。首先對每個(gè)像素的灰度級進(jìn)行從低到高排序,然后在從低到高實(shí)現(xiàn)淹沒過程中,對每一個(gè)局部極小值在h階高度的影響域采用先進(jìn)先出(FIFO)結(jié)構(gòu)進(jìn)行判斷及標(biāo)注。
分水嶺變換得到的是輸入圖像的集水盆圖像,集水盆之間的邊界點(diǎn),即為分水嶺。顯然,分水嶺表示的是輸入圖像極大值點(diǎn)。因此,為得到圖像的邊緣信息,通常把梯度圖像作為輸入圖像,即
g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y-1)]2}0.5
式中,f(x,y)表示原始圖像,grad{.}表示梯度運(yùn)算。
分水嶺算法對微弱邊緣具有良好的響應(yīng),圖像中的噪聲、物體表面細(xì)微的灰度變化,都會(huì)產(chǎn)生過度分割的現(xiàn)象。但同時(shí)應(yīng)當(dāng)看出,分水嶺算法對微弱邊緣具有良好的響應(yīng),是得到封閉連續(xù)邊緣的保證的。另外,分水嶺算法所得到的封閉的集水盆,為分析圖像的區(qū)域特征提供了可能。
為消除分水嶺算法產(chǎn)生的過度分割,通常可以采用兩種處理方法,一是利用先驗(yàn)知識(shí)去除無關(guān)邊緣信息。二是修改梯度函數(shù)使得集水盆只響應(yīng)想要探測的目標(biāo)。
為降低分水嶺算法產(chǎn)生的過度分割,通常要對梯度函數(shù)進(jìn)行修改,一個(gè)簡單的方法是對梯度圖像進(jìn)行閾值處理,以消除灰度的微小變化產(chǎn)生的過度分割。即
g(x,y)=max(grad(f(x,y)),gθ)
式中,gθ表示閾值。
程序可采用方法:用閾值限制梯度圖像以達(dá)到消除灰度值的微小變化產(chǎn)生的過度分割,獲得適量的區(qū)域,再對這些區(qū)域的邊緣點(diǎn)的灰度級進(jìn)行從低到高排序,然后在從低到高實(shí)現(xiàn)淹沒的過程,梯度圖像用Sobel算子計(jì)算獲得。對梯度圖像進(jìn)行閾值處理時(shí),選取合適的閾值對最終分割的圖像有很大影響,因此閾值的選取是圖像分割效果好壞的一個(gè)關(guān)鍵。缺點(diǎn):實(shí)際圖像中可能含有微弱的邊緣,灰度變化的數(shù)值差別不是特別明顯,選取閾值過大可能會(huì)消去這些微弱邊緣。
參考文章:
3、邊緣分割
3.1 原理
圖像分割的一種重要途徑是通過邊緣檢測,即檢測灰度級或者結(jié)構(gòu)具有突變的地方,表明一個(gè)區(qū)域的終結(jié),也是另一個(gè)區(qū)域開始的地方。這種不連續(xù)性稱為邊緣。不同的圖像灰度不同,邊界處一般有明顯的邊緣,利用此特征可以分割圖像。
圖像中邊緣處像素的灰度值不連續(xù),這種不連續(xù)性可通過求導(dǎo)數(shù)來檢測到。對于階躍狀邊緣,其位置對應(yīng)一階導(dǎo)數(shù)的極值點(diǎn),對應(yīng)二階導(dǎo)數(shù)的過零點(diǎn)(零交叉點(diǎn))。因此常用微分算子進(jìn)行邊緣檢測。常用的一階微分算子有Roberts算子、Prewitt算子和Sobel算子,二階微分算子有Laplace算子和Kirsh算子等。在實(shí)際中各種微分算子常用小區(qū)域模板來表示,微分運(yùn)算是利用模板和圖像卷積來實(shí)現(xiàn)。這些算子對噪聲敏感,只適合于噪聲較小不太復(fù)雜的圖像。
由于邊緣和噪聲都是灰度不連續(xù)點(diǎn),在頻域均為高頻分量,直接采用微分運(yùn)算難以克服噪聲的影響。因此用微分算子檢測邊緣前要對圖像進(jìn)行平滑濾波。LoG算子和Canny算子是具有平滑功能的二階和一階微分算子,邊緣檢測效果較好,
3.2 步驟
- 濾波:邊緣檢測算法主要是基于圖像強(qiáng)度的一階和二階導(dǎo)數(shù),但導(dǎo)數(shù)的計(jì)算對噪聲很敏感,因此必須使用濾波器來改善與噪聲有關(guān)的邊緣檢測器的性能.需要指出,大多數(shù)濾波器在降低噪聲的同時(shí)也導(dǎo)致了邊緣強(qiáng)度的損失,因此,增強(qiáng)邊緣和降低噪聲之間需要折衷.
- 增強(qiáng):增強(qiáng)邊緣的基礎(chǔ)是確定圖像各點(diǎn)鄰域強(qiáng)度的變化值.增強(qiáng)算法可以將鄰域(或局部)強(qiáng)度值有顯著變化的點(diǎn)突顯出來.邊緣增強(qiáng)一般是通過計(jì)算梯度幅值來完成的.
- 檢測:在圖像中有許多點(diǎn)的梯度幅值比較大,而這些點(diǎn)在特定的應(yīng)用領(lǐng)域中并不都是邊緣,所以應(yīng)該用某種方法來確定哪些點(diǎn)是邊緣點(diǎn).最簡單的邊緣檢測判據(jù)是梯度幅值閾值判據(jù).
- 定位:如果某一應(yīng)用場合要求確定邊緣位置,則邊緣的位置可在子像素分辨率上來估計(jì),邊緣的方位也可以被估計(jì)出來.
在邊緣檢測算法中,前三個(gè)步驟用得十分普遍。這是因?yàn)榇蠖鄶?shù)場合下,僅僅需要邊緣檢測器指出邊緣出現(xiàn)在圖像某一像素點(diǎn)的附近,而沒有必要指出邊緣的精確位置或方向.邊緣檢測誤差通常是指邊緣誤分類誤差,即把假邊緣判別成邊緣而保留,而把真邊緣判別成假邊緣而去掉.邊緣估計(jì)誤差是用概率統(tǒng)計(jì)模型來描述邊緣的位置和方向誤差的.我們將邊緣檢測誤差和邊緣估計(jì)誤差區(qū)分開,是因?yàn)樗鼈兊挠?jì)算方法完全不同,其誤差模型也完全不同.
Roberts算子:邊緣定位準(zhǔn),但是對噪聲敏感。適用于邊緣明顯且噪聲較少的圖像分割。Roberts邊緣檢測算子是一種利用局部差分算子尋找邊緣的算子,Robert算子圖像處理后結(jié)果邊緣不是很平滑。經(jīng)分析,由于Robert算子通常會(huì)在圖像邊緣附近的區(qū)域內(nèi)產(chǎn)生較寬的響應(yīng),故采用上述算子檢測的邊緣圖像常需做細(xì)化處理,邊緣定位的精度不是很高。
Prewitt算子:對噪聲有抑制作用,抑制噪聲的原理是通過像素平均,但是像素平均相當(dāng)于對圖像的低通濾波,所以Prewitt算子對邊緣的定位不如Roberts算子。
Sobel算子:Sobel算子和Prewitt算子都是加權(quán)平均,但是Sobel算子認(rèn)為,鄰域的像素對當(dāng)前像素產(chǎn)生的影響不是等價(jià)的,所以距離不同的像素具有不同的權(quán)值,對算子結(jié)果產(chǎn)生的影響也不同。一般來說,距離越遠(yuǎn),產(chǎn)生的影響越小。
Isotropic Sobel算子:加權(quán)平均算子,權(quán)值反比于鄰點(diǎn)與中心點(diǎn)的距離,當(dāng)沿不同方向檢測邊緣時(shí)梯度幅度一致,就是通常所說的各向同性。
在邊沿檢測中,常用的一種模板是Sobel 算子。Sobel 算子有兩個(gè),一個(gè)是檢測水平邊沿的;另一個(gè)是檢測垂直平邊沿的 。Sobel算子另一種形式是各向同性Sobel(Isotropic Sobel)算子,也有兩個(gè),一個(gè)是檢測水平邊沿的,另一個(gè)是檢測垂直平邊沿的 。各向同性Sobel算子和普通Sobel算子相比,它的位置加權(quán)系數(shù)更為準(zhǔn)確,在檢測不同方向的邊沿時(shí)梯度的幅度一致。由于建筑物圖像的特殊性,我們可以發(fā)現(xiàn),處理該類型圖像輪廓時(shí),并不需要對梯度方向進(jìn)行運(yùn)算,所以程序并沒有給出各向同性Sobel算子的處理方法。
1971年,R.Kirsch[34]提出了一種能檢測邊緣方向的Kirsch算子新方法:它使用了8個(gè)模板來確定梯度幅度值和梯度的方向。
圖像中的每個(gè)點(diǎn)都用8個(gè)掩模進(jìn)行卷積,每個(gè)掩模對某個(gè)特定邊緣方向作出最大響應(yīng)。所有8個(gè)方向中的最大值作為邊緣幅度圖像的輸出。最大響應(yīng)掩模的序號構(gòu)成了對邊緣方向的編碼。
Kirsch算子的梯度幅度值用如下公式:
不同檢測算子的對比:
算子 | 最佳情況 |
---|---|
Roberts | 對具有陡峭的低噪聲的圖像處理效果較好。但是利用Roberts算子提取邊緣結(jié)果的邊緣比較粗,因此邊緣定位不是很準(zhǔn)確 |
Sobel | 對灰度漸變和噪聲較多的圖像處理效果較好。Sobel算子對于邊緣定位比較準(zhǔn)確 |
Prewitt | 對灰度漸變和噪聲較多的圖像處理效果較好 |
Log | 拉普拉斯高斯算子經(jīng)常出現(xiàn)雙像素邊界,并且該檢測方法對噪聲比較敏感;所以,很少用拉普拉斯高斯算子邊緣檢測,而是用來判斷邊緣像素是位于圖像的明區(qū)還是暗區(qū) |
Canny | 此方法不容易受噪聲的干擾,能夠真正的弱邊緣。在edge函數(shù)中,最有效的邊緣檢測方法是Canny方法。該方法的優(yōu)點(diǎn)在于,使用兩種不同的閾值分別檢測強(qiáng)邊緣和弱邊緣,并且僅當(dāng)弱邊緣和強(qiáng)邊緣相連時(shí),才將邊緣包含在輸出圖像中。因此,這種方法不容易被噪聲“填充”,更容易檢測出真正的弱邊緣 |
參考文章: