導航:首頁 > 源碼編譯 > c區域增長演算法

c區域增長演算法

發布時間:2022-12-14 20:52:51

A. C++ 區域生長 程序,要記錄生長過程,區域生長代碼齊全也可運行,就是添加sleep函數之後程序就老卡死,

如果存在循環調用OnRegionGrow,那這裡面最好不要sleep,要的話肯定會卡死的,要加就加在調用結束後。

B. 區域增長演算法(C#實現)

這個不是跟區域填充差不多麼?
如果每次都要逐個單元掃描 不是卡死?
你可以去參考下區域填充算發 雖然那個演算法也不怎麼樣 不過至少每次尋找新點時候 不用逐個重新掃描;

你是想做識別么?

是逐個掃描一次..問題當標識好之後,,當你選擇下一個種子點的時候,又要重新掃描.這樣是很麻煩;
你可以採用區域填充..他首先確定一個種子點 然後他由這個種子點出發.當走到一路盡頭的時候就會返回 延下一個方向走..這樣就避免了逐點掃描
例如有這么一個方塊
A B C D E F
G H I J K L
M O P Q R S
T U V W X Y
假如沖 Q開始先左走 PQ關系小 則 P跟Q一樣 依次走到M 每一個都標記了 當然其中也有些不符合要求 然後M開始往上走....當走到一個點發現他四周所有的位置都被標記 而退回上一個點 繼續下一個方向..依次走完 這就是一個遞歸的方法,,而遞歸本質也是棧的使用(跟4皇後求法 也有點類似)

C. 各種遙感數據分類方法比較

常用的遙感數據的專題分類方法有多種,從分類判別決策方法的角度可以分為統計分類器、神經網路分類器、專家系統分類器等;從是否需要訓練數據方面,又可以分為監督分類器和非監督分類器。

一、統計分類方法

統計分類方法分為非監督分類方法和監督分類方法。非監督分類方法不需要通過選取已知類別的像元進行分類器訓練,而監督分類方法則需要選取一定數量的已知類別的像元對分類器進行訓練,以估計分類器中的參數。非監督分類方法不需要任何先驗知識,也不會因訓練樣本選取而引入認為誤差,但非監督分類得到的自然類別常常和研究感興趣的類別不匹配。相應地,監督分類一般需要預先定義分類類別,訓練數據的選取可能會缺少代表性,但也可能在訓練過程中發現嚴重的分類錯誤。

1.非監督分類器

非監督分類方法一般為聚類演算法。最常用的聚類非監督分類方法是 K-均值(K-Means Algorithm)聚類方法(Duda and Hart,1973)和迭代自組織數據分析演算法(ISODATA)。其演算法描述可見於一般的統計模式識別文獻中。

一般通過簡單的聚類方法得到的分類結果精度較低,因此很少單獨使用聚類方法進行遙感數據專題分類。但是,通過對遙感數據進行聚類分析,可以初步了解各類別的分布,獲取最大似然監督分類中各類別的先驗概率。聚類分析最終的類別的均值矢量和協方差矩陣可以用於最大似然分類過程(Schowengerdt,1997)。

2.監督分類器

監督分類器是遙感數據專題分類中最常用的一種分類器。和非監督分類器相比,監督分類器需要選取一定數量的訓練數據對分類器進行訓練,估計分類器中的關鍵參數,然後用訓練後的分類器將像元劃分到各類別。監督分類過程一般包括定義分類類別、選擇訓練數據、訓練分類器和最終像元分類四個步驟(Richards,1997)。每一步都對最終分類的不確定性有顯著影響。

監督分類器又分為參數分類器和非參數分類器兩種。參數分類器要求待分類數據滿足一定的概率分布,而非參數分類器對數據的概率分布沒有要求。

遙感數據分類中常用的分類器有最大似然分類器、最小距離分類器、馬氏距離分類器、K-最近鄰分類器(K-Nearest neighborhood classifier,K-NN)以及平行六面體分類器(parallelepiped classifier)。最大似然、最小距離和馬氏距離分類器在第三章已經詳細介紹。這里簡要介紹 K-NN 分類器和平行六面體分類器。

K-NN分類器是一種非參數分類器。該分類器的決策規則是:將像元劃分到在特徵空間中與其特徵矢量最近的訓練數據特徵矢量所代表的類別(Schowengerdt,1997)。當分類器中 K=1時,稱為1-NN分類器,這時以離待分類像元最近的訓練數據的類別作為該像元的類別;當 K >1 時,以待分類像元的 K 個最近的訓練數據中像元數量最多的類別作為該像元的類別,也可以計算待分類像元與其 K 個近鄰像元特徵矢量的歐氏距離的倒數作為權重,以權重值最大的訓練數據的類別作為待分類像元的類別。Hardin,(1994)對 K-NN分類器進行了深入的討論。

平行六面體分類方法是一個簡單的非參數分類演算法。該方法通過計算訓練數據各波段直方圖的上限和下限確定各類別像元亮度值的范圍。對每一類別來說,其每個波段的上下限一起就形成了一個多維的盒子(box)或平行六面體(parallelepiped)。因此 M 個類別就有M 個平行六面體。當待分類像元的亮度值落在某一類別的平行六面體內時,該像元就被劃分為該平行六面體代表的類別。平行六面體分類器可以用圖5-1中兩波段的遙感數據分類問題來表示。圖中的橢圓表示從訓練數據估計的各類別亮度值分布,矩形表示各類別的亮度值范圍。像元的亮度落在哪個類別的亮度范圍內,就被劃分為哪個類別。

圖5-1 平行六面體分類方法示意圖

3.統計分類器的評價

各種統計分類器在遙感數據分類中的表現各不相同,這既與分類演算法有關,又與數據的統計分布特徵、訓練樣本的選取等因素有關。

非監督聚類演算法對分類數據的統計特徵沒有要求,但由於非監督分類方法沒有考慮任何先驗知識,一般分類精度比較低。更多情況下,聚類分析被作為非監督分類前的一個探索性分析,用於了解分類數據中各類別的分布和統計特徵,為監督分類中類別定義、訓練數據的選取以及最終的分類過程提供先驗知識。在實際應用中,一般用監督分類方法進行遙感數據分類。

最大似然分類方法是遙感數據分類中最常用的分類方法。最大似然分類屬於參數分類方法。在有足夠多的訓練樣本、一定的類別先驗概率分布的知識,且數據接近正態分布的條件下,最大似然分類被認為是分類精度最高的分類方法。但是當訓練數據較少時,均值和協方差參數估計的偏差會嚴重影響分類精度。Swain and Davis(1978)認為,在N維光譜空間的最大似然分類中,每一類別的訓練數據樣本至少應該達到10×N個,在可能的條件下,最好能達到100×N以上。而且,在許多情況下,遙感數據的統計分布不滿足正態分布的假設,也難以確定各類別的先驗概率。

最小距離分類器可以認為是在不考慮協方差矩陣時的最大似然分類方法。當訓練樣本較少時,對均值的估計精度一般要高於對協方差矩陣的估計。因此,在有限的訓練樣本條件下,可以只估計訓練樣本的均值而不計算協方差矩陣。這樣最大似然演算法就退化為最小距離演算法。由於沒有考慮數據的協方差,類別的概率分布是對稱的,而且各類別的光譜特徵分布的方差被認為是相等的。很顯然,當有足夠訓練樣本保證協方差矩陣的精確估計時,最大似然分類結果精度要高於最小距離精度。然而,在訓練數據較少時,最小距離分類精度可能比最大似然分類精度高(Richards,1993)。而且最小距離演算法對數據概率分布特徵沒有要求。

馬氏距離分類器可以認為是在各類別的協方差矩陣相等時的最大似然分類。由於假定各類別的協方差矩陣相等,和最大似然方法相比,它丟失了各類別之間協方差矩陣的差異的信息,但和最小距離法相比較,它通過協方差矩陣保持了一定的方向靈敏性(Richards,1993)。因此,馬氏距離分類器可以認為是介於最大似然和最小距離分類器之間的一種分類器。與最大似然分類一樣,馬氏距離分類器要求數據服從正態分布。

K-NN分類器的一個主要問題是需要很大的訓練數據集以保證分類演算法收斂(Devijver and Kittler,1982)。K-NN分類器的另一個問題是,訓練樣本選取的誤差對分類結果有很大的影響(Cortijo and Blanca,1997)。同時,K-NN分類器的計算復雜性隨著最近鄰范圍的擴大而增加。但由於 K-NN分類器考慮了像元鄰域上的空間關系,和其他光譜分類器相比,分類結果中「椒鹽現象」較少。

平行六面體分類方法的優點在於簡單,運算速度快,且不依賴於任何概率分布要求。它的缺陷在於:首先,落在所有類別亮度值范圍之外的像元只能被分類為未知類別;其次,落在各類別亮度范圍重疊區域內的像元難以區分其類別(如圖5-1所示)。

各種統計分類方法的特點可以總結為表5-1。

二、神經網路分類器

神經網路用於遙感數據分類的最大優勢在於它平等地對待多源輸入數據的能力,即使這些輸入數據具有完全不同的統計分布,但是由於神經網路內部各層大量的神經元之間連接的權重是不透明的,因此用戶難以控制(Austin,Harding and Kanellopoulos et al.,1997)。

神經網路遙感數據分類被認為是遙感數據分類的熱點研究領域之一(Wilkinson,1996;Kimes,1998)。神經網路分類器也可分為監督分類器和非監督分類器兩種。由於神經網路分類器對分類數據的統計分布沒有任何要求,因此神經網路分類器屬於非參數分類器。

遙感數據分類中最常用的神經網路是多層感知器模型(multi-layer percep-tron,MLP)。該模型的網路結構如圖5-2所示。該網路包括三層:輸入層、隱層和輸出層。輸入層主要作為輸入數據和神經網路輸入界面,其本身沒有處理功能;隱層和輸出層的處理能力包含在各個結點中。輸入的結構一般為待分類數據的特徵矢量,一般情況下,為訓練像元的多光譜矢量,每個結點代表一個光譜波段。當然,輸入結點也可以為像元的空間上下文信息(如紋理)等,或多時段的光譜矢量(Paola and Schowengerdt,1995)。

表5-1 各種統計分類器比較

圖5-2 多層感知器神經網路結構

對於隱層和輸出層的結點來說,其處理過程是一個激勵函數(activation function)。假設激勵函數為f(S),對隱層結點來說,有:

遙感信息的不確定性研究

其中,pi為隱層結點的輸入;hj為隱層結點的輸出;w為聯接各層神經之間的權重。

對輸出層來說,有如下關系:

遙感信息的不確定性研究

其中,hj為輸出層的輸入;ok為輸出層的輸出。

激勵函數一般表達為:

遙感信息的不確定性研究

確定了網路結構後,就要對網路進行訓練,使網路具有根據新的輸入數據預測輸出結果的能力。最常用的是後向傳播訓練演算法(Back-Propagation)。這一演算法將訓練數據從輸入層進入網路,隨機產生各結點連接權重,按式(5-1)(5-2)和(5-3)中的公式進行計算,將網路輸出與預期的結果(訓練數據的類別)相比較並計算誤差。這個誤差被後向傳播的網路並用於調整結點間的連接權重。調整連接權重的方法一般為delta規則(Rumelhart,et al.,1986):

遙感信息的不確定性研究

其中,η為學習率(learning rate);δk為誤差變化率;α為動量參數。

將這樣的數據的前向和誤差後向傳播過程不斷迭代,直到網路誤差減小到預設的水平,網路訓練結束。這時就可以將待分類數據輸入神經網路進行分類。

除了多層感知器神經網路模型,其他結構的網路模型也被用於遙感數據分類。例如,Kohonen自組織網路被廣泛用於遙感數據的非監督聚類分析(Yoshida et al.,1994;Schaale et al.,1995);自適應共振理論(Adaptive Resonance Theory)網路(Silva,S and Caetano,M.1997)、模糊ART圖(Fuzzy ART Maps)(Fischer,M.M and Gopal,S,1997)、徑向基函數(駱劍承,1999)等也被用於遙感數據分類。

許多因素影響神經網路的遙感數據分類精度。Foody and Arora(1997)認為神經網路結構、遙感數據的維數以及訓練數據的大小是影響神經網路分類的重要因素。

神經網路結構,特別是網路的層數和各層神經元的數量是神經網路設計最關鍵的問題。網路結構不但影響分類精度,而且對網路訓練時間有直接影響(Kavzoglu and Mather,1999)。對用於遙感數據分類的神經網路來說,由於輸入層和輸出層的神經元數目分別由遙感數據的特徵維數和總的類別數決定的,因此網路結構的設計主要解決隱層的數目和隱層的神經元數目。一般過於復雜的網路結構在刻畫訓練數據方面較好,但分類精度較低,即「過度擬合」現象(over-fit)。而過於簡單的網路結構由於不能很好的學習訓練數據中的模式,因此分類精度低。

網路結構一般是通過實驗的方法來確定。Hirose等(1991)提出了一種方法。該方法從一個小的網路結構開始訓練,每次網路訓練陷入局部最優時,增加一個隱層神經元,然後再訓練,如此反復,直到網路訓練收斂。這種方法可能導致網路結構過於復雜。一種解決辦法是每當認為網路收斂時,減去最近一次加入的神經元,直到網路不再收斂,那麼最後一次收斂的網路被認為是最優結構。這種方法的缺點是非常耗時。「剪枝法」(pruning)是另一種確定神經網路結構的方法。和Hirose等(1991)的方法不同,「剪枝法」從一個很大的網路結構開始,然後逐步去掉認為多餘的神經元(Sietsma and Dow,1988)。從一個大的網路開始的優點是,網路學習速度快,對初始條件和學習參數不敏感。「剪枝」過程不斷重復,直到網路不再收斂時,最後一次收斂的網路被認為最優(Castellano,Fanelli and Pelillo,1997)。

神經網路訓練需要訓練數據樣本的多少隨不同的網路結構、類別的多少等因素變化。但是,基本要求是訓練數據能夠充分描述代表性的類別。Foody等(1995)認為訓練數據的大小對遙感分類精度有顯著影響,但和統計分類器相比,神經網路的訓練數據可以比較少。

分類變數的數據維對分類精度的影響是遙感數據分類中的普遍問題。許多研究表明,一般類別之間的可分性和最終的分類精度會隨著數據維數的增大而增高,達到某一點後,分類精度會隨數據維的繼續增大而降低(Shahshahani and Landgrebe,1994)。這就是有名的Hughes 現象。一般需要通過特徵選擇去掉信息相關性高的波段或通過主成分分析方法去掉冗餘信息。分類數據的維數對神經網路分類的精度同樣有明顯影響(Battiti,1994),但Hughes 現象沒有傳統統計分類器中嚴重(Foody and Arora,1997)。

Kanellopoulos(1997)通過長期的實踐認為一個有效的ANN模型應考慮以下幾點:合適的神經網路結構、優化學習演算法、輸入數據的預處理、避免振盪、採用混合分類方法。其中混合模型包括多種ANN模型的混合、ANN與傳統分類器的混合、ANN與知識處理器的混合等。

三、其他分類器

除了上述統計分類器和神經網路分類器,還有多種分類器被用於遙感圖像分類。例如模糊分類器,它是針對地面類別變化連續而沒有明顯邊界情況下的一種分類器。它通過模糊推理機制確定像元屬於每一個類別的模糊隸屬度。一般的模糊分類器有模糊C均值聚類法、監督模糊分類方法(Wang,1990)、混合像元模型(Foody and Cox,1994;Settle and Drake,1993)以及各種人工神經網路方法等(Kanellopoulos et al.,1992;Paola and Schowengerdt,1995)。由於模糊分類的結果是像元屬於每個類別的模糊隸屬度,因此也稱其為「軟分類器」,而將傳統的分類方法稱為「硬分類器」。

另一類是上下文分類器(contextual classifier),它是一種綜合考慮圖像光譜和空間特徵的分類器。一般的光譜分類器只是考慮像元的光譜特徵。但是,在遙感圖像中,相鄰的像元之間一般具有空間自相關性。空間自相關程度強的像元一般更可能屬於同一個類別。同時考慮像元的光譜特徵和空間特徵可以提高圖像分類精度,並可以減少分類結果中的「椒鹽現象」。當類別之間的光譜空間具有重疊時,這種現象會更明顯(Cortijo et al.,1995)。這種「椒鹽現象」可以通過分類的後處理濾波消除,也可以通過在分類過程中加入代表像元鄰域關系的信息解決。

在分類過程中可以通過不同方式加入上下文信息。一是在分類特徵中加入圖像紋理信息;另一種是圖像分割技術,包括區域增長/合並常用演算法(Ketting and Landgrebe,1976)、邊緣檢測方法、馬爾可夫隨機場方法。Rignot and Chellappa(1992)用馬爾可夫隨機場方法進行SAR圖像分類,取得了很好的效果,Paul Smits(1997)提出了保持邊緣細節的馬爾可夫隨機場方法,並用於SAR圖像的分類;Crawford(1998)將層次分類方法和馬爾可夫隨機場方法結合進行SAR圖像分類,得到了更高的精度;Cortijo(1997)用非參數光譜分類對遙感圖像分類,然後用ICM演算法對初始分類進行上下文校正。

D. 圖像分割

圖像閾值化分割是一種傳統的最常用的圖像分割方法,因其實現簡單、計算量小、性能較穩定而成為圖像分割中最基本和應用最廣泛的分割技術。它特別適用於目標和背景占據不同灰度級范圍的圖像。它不僅可以極大的壓縮數據量,而且也大大簡化了分析和處理步驟,因此在很多情況下,是進行圖像分析、特徵提取與模式識別之前的必要的圖像預處理過程。

圖像閾值化的目的是要按照灰度級,對像素集合進行一個劃分,得到的每個子集形成一個與現實景物相對應的區域,各個區域內部具有一致的屬性,而相鄰區域不具有這種一致屬性。這樣的劃分可以通過從灰度級出發選取一個或多個閾值來實現。

基本原理是:通過設定不同的特徵閾值,把圖像象素點分為若干類。
常用的特徵包括:直接來自原始圖像的灰度或彩色特徵;由原始灰度或彩色值變換得到的特徵。
設原始圖像為f(x,y),按照一定的准則f(x,y)中找到特徵值T,將圖像分割為兩個部分,分割後的圖像為:
若取:b0=0(黑),b1=1(白),即為我們通常所說的圖像二值化。

閾值分割方法實際上是輸入圖像f到輸出圖像g的如下變換:

其中,T為閾值,對於物體的圖像元素g(i,j)=1,對於背景的圖像元素g(i,j)=0。

由此可見,閾值分割演算法的關鍵是確定閾值,如果能確定一個合適的閾值就可准確地將圖像分割開來。閾值確定後,將閾值與像素點的灰度值逐個進行比較,而且像素分割可對各像素並行地進行,分割的結果直接給出圖像區域。
閾值分割的優點是計算簡單、運算效率較高、速度快。有著各種各樣的閾值處理技術,包括全局閾值、自適應閾值、最佳閾值等等。

閾值處理技術參看:

區域分割是講圖像按照相似性准則分成不同的區域,主要包括區域增長,區域分裂合並和分水嶺等幾種類型。

區域生長是一種串列區域分割的圖像分割方法。區域生長是指從某個像素出發,按照一定的准則,逐步加入鄰近像素,當滿足一定的條件時,區域生長終止。區域生長的好壞決定於1. 初始點(種子點)的選取。 2. 生長准則。 3. 終止條件 。區域生長是從某個或者某些像素點出發,最後得到整個區域,進而實現目標的提取。

區域生長的基本思想是將具有相似性質的像素集合起來構成區域。具體先對每個需要分割的區域找一個種子像素作為生長的起點,然後將種子像素周圍鄰域中與種子像素有相同或相似性質的像素(根據某種事先確定的生長或相似准則來判定)合並到種子像素所在的區域中。將這些新像素當作新的種子像素繼續進行上面的過程,直到再沒有滿足條件的像素可被包括進來。這樣一個區域就長成了。

區域生長需要選擇一組能正確代表所需區域的種子像素,確定在生長過程中的相似性准則,制定讓生長停止的條件或准則。相似性准則可以是灰度級、彩色、紋理、梯度等特性。選取的種子像素可以是單個像素,也可以是包含若干個像素的小區域。大部分區域生長准則使用圖像的局部性質。生長准則可根據不同原則制定,而使用不同的生長准則會影響區域生長的過程。

圖1是區域增長的示例。

區域生長是一種古老的圖像分割方法,最早的區域生長圖像分割方法是由Levine等人提出的。該方法一般有兩種方式,一種是先給定圖像中要分割的目標物體內的一個小塊或者說種子區域(seed point),再在種子區域基礎上不斷將其周圍的像素點以一定的規則加入其中,達到最終將代表該物體的所有像素點結合成一個區域的目的;另一種是先將圖像分割成很多的一致性較強,如區域內像素灰度值相同的小區域,再按一定的規則將小區域融合成大區域,達到分割圖像的目的,典型的區域生長法如T. C. Pong等人提出的基於小面(facet)模型的區域生長法,區域生長法固有的缺點是往往會造成過度分割,即將圖像分割成過多的區域

區域生長實現的步驟如下:

區域分裂合並演算法的基本思想是先確定一個分裂合並的准則,即區域特徵一致性的測度,當圖像中某個區域的特徵不一致時就將該區域分裂成4個相等的子區域,當相鄰的子區域滿足一致性特徵時則將它們合成一個大區域,直至所有區域不再滿足分裂合並的條件為止。當分裂到不能再分的情況時,分裂結束,然後它將查找相鄰區域有沒有相似的特徵,如果有就將相似區域進行合並,最後達到分割的作用。在一定程度上區域生長和區域分裂合並演算法有異曲同工之妙,互相促進相輔相成的,區域分裂到極致就是分割成單一像素點,然後按照一定的測量准則進行合並,在一定程度上可以認為是單一像素點的區域生長方法。區域生長比區域分裂合並的方法節省了分裂的過程,而區域分裂合並的方法可以在較大的一個相似區域基礎上再進行相似合並,而區域生長只能從單一像素點出發進行生長(合並)。

反復進行拆分和聚合以滿足限制條件的演算法。

令R表示整幅圖像區域並選擇一個謂詞P。對R進行分割的一種方法是反復將分割得到的結果圖像再次分為四個區域,直到對任何區域Ri,有P(Ri)=TRUE。這里是從整幅圖像開始。如果P(R)=FALSE,就將圖像分割為4個區域。對任何區域如果P的值是FALSE.就將這4個區域的每個區域再次分別分為4個區域,如此不斷繼續下去。這種特殊的分割技術用所謂的四叉樹形式表示最為方便(就是說,每個非葉子節點正好有4個子樹),這正如圖10.42中說明的樹那樣。注意,樹的根對應於整幅圖像,每個節點對應於劃分的子部分。此時,只有R4進行了進一步的再細分。

如果只使用拆分,最後的分區可能會包含具有相同性質的相鄰區域。這種缺陷可以通過進行拆分的同時也允許進行區域聚合來得到矯正。就是說,只有在P(Rj∪Rk)=TRUE時,兩個相鄰的區域Rj和Rk才能聚合。
前面的討論可以總結為如下過程。在反復操作的每一步,我們需要做:

可以對前面講述的基本思想進行幾種變化。例如,一種可能的變化是開始時將圖像拆分為一組圖象塊。然後對每個塊進一步進行上述拆分,但聚合操作開始時受只能將4個塊並為一組的限制。這4個塊是四叉樹表示法中節點的後代且都滿足謂詞P。當不能再進行此類聚合時,這個過程終止於滿足步驟2的最後的區域聚合。在這種情況下,聚合的區域可能會大小不同。這種方法的主要優點是對於拆分和聚合都使用同樣的四叉樹,直到聚合的最後一步。

分水嶺分割方法,是一種基於拓撲理論的數學形態學的分割方法,其基本思想是把圖像看作是測地學上的拓撲地貌,圖像中每一點像素的灰度值表示該點的海拔高度,每一個局部極小值及其影響區域稱為集水盆,而集水盆的邊界則形成分水嶺。分水嶺的概念和形成可以通過模擬浸入過程來說明。在每一個局部極小值表面,刺穿一個小孔,然後把整個模型慢慢浸入水中,隨著浸入的加深,每一個局部極小值的影響域慢慢向外擴展,在兩個集水盆匯合處構築大壩,即形成分水嶺。

分水嶺的計算過程是一個迭代標注過程。分水嶺比較經典的計算方法是L. Vincent提出的。在該演算法中,分水嶺計算分兩個步驟,一個是排序過程,一個是淹沒過程。首先對每個像素的灰度級進行從低到高排序,然後在從低到高實現淹沒過程中,對每一個局部極小值在h階高度的影響域採用先進先出(FIFO)結構進行判斷及標注。

分水嶺變換得到的是輸入圖像的集水盆圖像,集水盆之間的邊界點,即為分水嶺。顯然,分水嶺表示的是輸入圖像極大值點。因此,為得到圖像的邊緣信息,通常把梯度圖像作為輸入圖像,即

分水嶺演算法對微弱邊緣具有良好的響應,圖像中的雜訊、物體表面細微的灰度變化,都會產生過度分割的現象。但同時應當看出,分水嶺演算法對微弱邊緣具有良好的響應,是得到封閉連續邊緣的保證的。另外,分水嶺演算法所得到的封閉的集水盆,為分析圖像的區域特徵提供了可能。
為消除分水嶺演算法產生的過度分割,通常可以採用兩種處理方法,一是利用先驗知識去除無關邊緣信息。二是修改梯度函數使得集水盆只響應想要探測的目標。

為降低分水嶺演算法產生的過度分割,通常要對梯度函數進行修改,一個簡單的方法是對梯度圖像進行閾值處理,以消除灰度的微小變化產生的過度分割。即

程序可採用方法:用閾值限制梯度圖像以達到消除灰度值的微小變化產生的過度分割,獲得適量的區域,再對這些區域的邊緣點的灰度級進行從低到高排序,然後在從低到高實現淹沒的過程,梯度圖像用Sobel運算元計算獲得。對梯度圖像進行閾值處理時,選取合適的閾值對最終分割的圖像有很大影響,因此閾值的選取是圖像分割效果好壞的一個關鍵。缺點:實際圖像中可能含有微弱的邊緣,灰度變化的數值差別不是特別明顯,選取閾值過大可能會消去這些微弱邊緣。

參考文章:

圖像分割的一種重要途徑是通過邊緣檢測,即檢測灰度級或者結構具有突變的地方,表明一個區域的終結,也是另一個區域開始的地方。這種不連續性稱為邊緣。不同的圖像灰度不同,邊界處一般有明顯的邊緣,利用此特徵可以分割圖像。

圖像中邊緣處像素的灰度值不連續,這種不連續性可通過求導數來檢測到。對於階躍狀邊緣,其位置對應一階導數的極值點,對應二階導數的過零點(零交叉點)。因此常用微分運算元進行邊緣檢測。常用的一階微分運算元有Roberts運算元、Prewitt運算元和Sobel運算元,二階微分運算元有Laplace運算元和Kirsh運算元等。在實際中各種微分運算元常用小區域模板來表示,微分運算是利用模板和圖像卷積來實現。這些運算元對雜訊敏感,只適合於雜訊較小不太復雜的圖像。

由於邊緣和雜訊都是灰度不連續點,在頻域均為高頻分量,直接採用微分運算難以克服雜訊的影響。因此用微分運算元檢測邊緣前要對圖像進行平滑濾波。LoG運算元和Canny運算元是具有平滑功能的二階和一階微分運算元,邊緣檢測效果較好,

在邊緣檢測演算法中,前三個步驟用得十分普遍。這是因為大多數場合下,僅僅需要邊緣檢測器指出邊緣出現在圖像某一像素點的附近,而沒有必要指出邊緣的精確位置或方向.邊緣檢測誤差通常是指邊緣誤分類誤差,即把假邊緣判別成邊緣而保留,而把真邊緣判別成假邊緣而去掉.邊緣估計誤差是用概率統計模型來描述邊緣的位置和方向誤差的.我們將邊緣檢測誤差和邊緣估計誤差區分開,是因為它們的計算方法完全不同,其誤差模型也完全不同.

Roberts運算元 :邊緣定位準,但是對雜訊敏感。適用於邊緣明顯且雜訊較少的圖像分割。Roberts邊緣檢測運算元是一種利用局部差分運算元尋找邊緣的運算元,Robert運算元圖像處理後結果邊緣不是很平滑。經分析,由於Robert運算元通常會在圖像邊緣附近的區域內產生較寬的響應,故採用上述運算元檢測的邊緣圖像常需做細化處理,邊緣定位的精度不是很高。

Prewitt運算元 :對雜訊有抑製作用,抑制雜訊的原理是通過像素平均,但是像素平均相當於對圖像的低通濾波,所以Prewitt運算元對邊緣的定位不如Roberts運算元。

Sobel運算元 :Sobel運算元和Prewitt運算元都是加權平均,但是Sobel運算元認為,鄰域的像素對當前像素產生的影響不是等價的,所以距離不同的像素具有不同的權值,對運算元結果產生的影響也不同。一般來說,距離越遠,產生的影響越小。

Isotropic Sobel運算元 :加權平均運算元,權值反比於鄰點與中心點的距離,當沿不同方向檢測邊緣時梯度幅度一致,就是通常所說的各向同性。
在邊沿檢測中,常用的一種模板是Sobel 運算元。Sobel 運算元有兩個,一個是檢測水平邊沿的;另一個是檢測垂直平邊沿的 。Sobel運算元另一種形式是各向同性Sobel(Isotropic Sobel)運算元,也有兩個,一個是檢測水平邊沿的,另一個是檢測垂直平邊沿的 。各向同性Sobel運算元和普通Sobel運算元相比,它的位置加權系數更為准確,在檢測不同方向的邊沿時梯度的幅度一致。由於建築物圖像的特殊性,我們可以發現,處理該類型圖像輪廓時,並不需要對梯度方向進行運算,所以程序並沒有給出各向同性Sobel運算元的處理方法。

1971年,R.Kirsch[34]提出了一種能檢測邊緣方向的Kirsch運算元新方法:它使用了8個模板來確定梯度幅度值和梯度的方向。

圖像中的每個點都用8個掩模進行卷積,每個掩模對某個特定邊緣方向作出最大響應。所有8個方向中的最大值作為邊緣幅度圖像的輸出。最大響應掩模的序號構成了對邊緣方向的編碼。
Kirsch運算元的梯度幅度值用如下公式:

不同檢測運算元的對比:

參考文章:

文章引用於 木夜溯
編輯 Lornatang
校準 Lornatang

E. 怎麼用excel算增長比例

方法是:


1、如圖,首先在D2單元格中輸入公式=(C2-B2)/C2,然受雙擊單元格右下角的填充柄,或者按住滑鼠左鍵不放,拖拉填充框到指定的單元格區域,如下圖所示。


F. c語言中數組動態增長有哪些方法

可以,但不能是靜態數組如int a[50];左邊分配在堆棧上,(分配在堆棧上的變數)不能在編譯時不知道分多少空間,並且分了多少空間就是多少。

如果想讓數組大小動態分配,可以使用下面做法,記得用完要free:

int*a=(int*)malloc(n*sizeof(int));//n是數組的大小。

或者這樣calloc函數的一個好處就是分配完內存區域後會自動把該區域清零,所以特別適合數組:

int*a=(int*)calloc(n,sizeof(int));//n是數組的大小。

延長數組大小的話這樣做:

a=(int*)realloc(a,m*sizeof(int));//m新數組的大小。並且,原來malloc或者calloc的內存區域會自動被free掉,不用你操心。

G. 區域經濟增長的區域經濟增長理論

(1)均衡增長和非均衡增長理論
1.均衡增長的基本命題是:由於不發達地區存在著生產與消費的低水平的均衡狀態,這些地區的經濟要增長,就必須打破這種均衡狀態,使整個區域的經濟同時得到增長。哈維·萊賓斯坦於1957年在《經濟落後和經濟增長》中提出臨界最小努力命題,該命題認為不發達經濟既存在人均收入增長的趨勢,又存在人均收入降低的因素和力量,要使區域經濟獲得增長,從落後向發達狀態轉變,該地區必須在一定時期受到大於某一最小臨界規模的增長刺激。發展經濟學家內爾森認為,不發達經濟的痼疾表現為人均實際收入處於糊口或接近維持生命的低水平均衡狀態,即使在一個短期內經濟有所增長,但經濟增長又會導致人口的增長,從而使人均收入又回到原來的低水平狀態,即所謂的「低水平均衡陷阱理論」。
2.不平衡增長的核心觀點是:不發達地區不具備全面增長的資本和其他資源,向所有部門進行大規模投資和平衡增長是不可能的。投資只能有選擇地在若幹部門或區域進行,其他部門或地區通過利用這種部門或區域的投資帶來的外部經濟而逐步得到發展。非均衡增長理論主要包括:赫爾希曼(A.O.Hirschan)和辛格(H.Singer)的非均衡增長理論,繆爾達爾(Karl Gunnar Myrdal)的循環積累因果理論(Cumulative Causation Theory),詹姆斯·杜森貝里(J.S.Duesenberry)和諾斯(D.C.North)的輸出基礎理論(Export Base Theory)。
(2)新增長與區域創新理論
新經濟增長理論(也叫「內生增長理論」)是針對新古典增長理論中技術外生這一不足而提出的。它通過規模收益遞增和不完全競爭這兩個角度對經濟增長的源泉進行研究,其基本思想是經濟增長率由區域經濟系統內的諸因素的相互作用,而不是由外生的技術進步和人口增長所決定的。新增長理論主要包括三種理論模式:
(1)羅默模式——知識積累的增長模式,該模式刻畫了知識積累是決定經濟增長的主要因素,強調增加研究與開發(R&D)部門的投入以提高知識積累率,進而促進經濟增長;
(2)盧卡斯模式——專業化人力資本的增長模式,該模式認為專業化的人力資本的積累是經濟增長的真正源泉;
(3)科斯特模式——資本投資的增長模式,該模式認為技術進步的源泉是資本投資。
創新(Innovation)的形成和擴散是經濟增長的發動機,同時也是區域間經濟增長和發展不平衡的一個重要原因。熊彼特(J.Schumpeter)最早提出了創新的概念,他認為創新是「間斷出現的現實生產手段的新組合」,包括新產品的引入(生產創新)、製造現有產品的技術變革(生產方法創新)、開辟新的市場或新的原材料來源以及引入新的生產組織形式。在有關創新研究的文獻中,傳信過程可以分為線性創新模式和非線性創新模式。線性創新模式表現為一項科學研究走向市場的發展過程。
非線性創新模式認為,傳信不是官方的或個人的科學和研究機構發起的,而是由客戶、技術應用者、供貨商或合作方發起的,它表現為一個數次的反饋過程:重要的信息流從創新的後期階段又反饋到早期階段,這個過程存在緊密的內在聯系。對於區域之間存在的創新差別,創新擴散理論認為,信息傳播在創新擴散和吸收過程中起著核心作用。擴散過程或者遵循相鄰效應(波浪式擴散),或者是遵循城市等級自上而下進行。奧地利學者梅耶(G.Maier)和托特林(F.Todtling)提出了關於區域創新差別的一個構想框架。在該框架內,企業是一個開放的系統,它的內部結構和行為方式與它所處的經濟環境要求和條件相聯系。影響企業創新體系的因素包括外部因素和內部因素兩大類。外部因素包括:
(1)與企業創新行為相關的區域環境條件,涉及到研究與教育結構的狀況,勞動力的技能以及同其他企業保持聯系和協作的可能性,與大學和科研機構的聯系等;
(2)企業所處行業的市場結構特徵;
(3)政府的區域公共政策,包括技術引進政策,鼓勵創新政策等。內部因素主要是企業的組織和戰略目標的特徵,他們對企業創新行為有重要的影響。企業規模影響與創新相關的資源裝備,也影響創新的持續性和創新項目的規摸。
區域內企業在相關功能方面的配備(研究與開發,企業計劃和市場營銷)和他們在生產上的共同作用,對生產創新和方法創新都是至關重要的。對中小企業來說,同大企業的緊密聯系一方面可以較容易獲得與創新相關的資源;另一方面也可以證明,他們在大企業中具有一定的作用。有關區域創新的研究表明,企業的戰略目標以及管理者和雇員的觀念和行為方式,對區域創新差異起著極其重要的作用。如果企業只是基於技術競爭優勢以外的東西來保持市場地位,那麼它的創新意識必然下降。企業管理者懼怕風險,或者雇員在變化面前持拒絕態度,都會阻礙區域內的創新。

H. C語言中「位域」與「域寬」有什麼區別。

有些信息在存儲時,並不需要佔用一個完整的位元組,而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1
兩種狀態,用一位二進位即可。為了節省存儲空間,並使處理簡便,c語言又提供了一種數據結構,稱為「位域」或「位段」。所謂「位域」是把一個位元組中的二進位劃分為幾個不同的區域,並說明每個區域的位數。每個域有一個域名,允許在程序中按域名進行操作。這樣就可以把幾個不同的對象用一個位元組的二進制位域來表示。一、位域的定義和位域變數的說明位域定義與結構定義相仿,其形式為:
struct
位域結構名
{
位域列表
};
其中位域列表的形式為:
類型說明符
位域名:位域長度
例如:
struct
bs
{
int
a:8;
int
b:2;
int
c:6;
};

I. c語言中malloc是什麼怎麼用

malloc() 函數用來動態地分配內存空間,其原型為:void* malloc (size_t size);

說明:

【參數說明】

size 為需要分配的內存空間的大小,以位元組(Byte)計。

【函數說明】

malloc() 在堆區分配一塊指定大小的內存空間,用來存放數據。這塊內存空間在函數執行完成後不會被初始化,它們的值是未知的。如果希望在分配內存的同時進行初始化,請使用 calloc() 函數。

【返回值】

分配成功返回指向該內存的地址,失敗則返回 NULL。

操作:

由於申請內存空間時可能有也可能沒有,所以需要自行判斷是否申請成功,再進行後續操作。

如果 size 的值為 0,那麼返回值會因標准庫實現的不同而不同,可能是 NULL,也可能不是,但返回的指針不應該再次被引用。

注意:函數的返回值類型是 void *,void 並不是說沒有返回值或者返回空指針,而是返回的指針類型未知。所以在使用 malloc() 時通常需要進行強制類型轉換,將 void 指針轉換成我們希望的類型,例如:

#include<stdlib.h>

typedef int ListData;

ListData *data; //存儲空間基址

data = ( ListData * ) malloc( 100 * sizeof ( ListData ) );

(9)c區域增長演算法擴展閱讀

實現malloc的方法:

(1)數據結構

首先我們要確定所採用的數據結構。一個簡單可行方案是將堆內存空間以塊的形式組織起來,每個塊由meta區和數據區組成,meta區記錄數據塊的元信息(數據區大小、空閑標志位、指針等等)。

數據區是真實分配的內存區域,並且數據區的第一個位元組地址即為malloc返回的地址 。

(2)尋找合適的block

現在考慮如何在block鏈中查找合適的block。一般來說有兩種查找演算法:

First fit:從頭開始,使用第一個數據區大小大於要求size的塊所謂此次分配的塊

Best fit:從頭開始,遍歷所有塊,使用數據區大小大於size且差值最小的塊作為此次分配的塊

兩種方式各有千秋,best fit有較高的內存使用率(payload較高),而first fit具有較高的運行效率。這里我們採用first fit演算法。

(3)開辟新的block
如果現有block都不能滿足size的要求,則需要在鏈表最後開辟一個新的block。

(4)分裂block
First fit有一個比較致命的缺點,就是可能會讓更小的size占據很大的一塊block,此時,為了提高payload,應該在剩餘數據區足夠大的情況下,將其分裂為一個新的block。

(5)malloc的實現

有了上面的代碼,我們就可以實現一個簡單的malloc.注意首先我們要定義個block鏈表的頭first_block,初始化為NULL;另外,我們需要剩餘空間至少有BLOCK_SIZE+8才執行分裂操作

由於我們需要malloc分配的數據區是按8位元組對齊,所以size不為8的倍數時,我們需要將size調整為大於size的最小的8的倍數。



閱讀全文

與c區域增長演算法相關的資料

熱點內容
溫州直播系統源碼 瀏覽:110
程序員在上海買房 瀏覽:382
生活解壓游戲機 瀏覽:907
季羨林pdf 瀏覽:716
php支付寶介面下載 瀏覽:814
ipad怎麼把app資源庫關了 瀏覽:301
量柱比前一天多源碼 瀏覽:416
電子書app怎麼上傳 瀏覽:66
國家反詐中心app注冊怎麼開啟 瀏覽:804
全波差分傅里葉演算法窗長 瀏覽:41
程序員如何講自己做過的項目 瀏覽:7
程序員要看的書頸椎 瀏覽:946
php文章cms 瀏覽:553
CSS權威指南第三版PDF 瀏覽:496
android怎麼搭建框架 瀏覽:184
正宗溯源碼大燕條一克一般多少錢 瀏覽:917
電腦感染exe文件夾 瀏覽:916
wpsppt怎麼轉pdf格式 瀏覽:88
騰訊文檔在線編輯怎麼添加密碼 瀏覽:880
本地不能訪問伺服器地址 瀏覽:865