天天看點

Halcon圖像分割的算法思想和邊緣檢測函數彙總

一、圖像分割思想

圖像分割的主要算法:

1.基于門檻值的分割方法

2.基于邊緣的分割方法

3.基于區域的分割方法

4.基于聚類分析的圖像分割方法

5.基于小波變換的分割方法

6.基于數學形态學的分割方法

7.基于人工神經網絡的分割方法

基于門檻值的分割方法

門檻值分割方法作為一種常見的區域并行技術,就是用一個或幾個門檻值将圖像的灰階直方圖分成幾個類,認為圖像中灰階值在同一類中的像素屬于同一物體。由于是直接利用圖像的灰階特性,是以計算友善簡明、實用性強。顯然,門檻值分割方法的關鍵和難點是如何取得一個合适的門檻值。而實際應用中,門檻值設定易受噪聲和光亮度影響。近年來的方法有:用最大相關性原則選擇門檻值的方法、基于圖像拓撲穩定狀态的方法、Yager測度極小化方法、灰階共生矩陣方法、方差法、熵法、峰值和谷值分析法等,其中,自适應門檻值法、最大熵法、模糊門檻值法、類間門檻值法是對傳統門檻值法改進較成功的幾種算法。更多的情況下,門檻值的選擇會綜合運用2種或2種以上的方法,這也是圖像分割發展的一個趨勢。

特點

門檻值分割的優點是計算簡單、運算效率較高、速度快。全局門檻值對于灰階相差很大的不同目标和背景能進行有效的分割。當圖像的灰階差異不明顯或不同目标的灰階值範圍有重疊時,應采用局部門檻值或動态門檻值分割法。另一方面,這種方法隻考慮像素本身的灰階值,一般不考慮空間特征,因而對噪聲很敏感。在實際應用中,門檻值法通常與其他方法結合使用。

基于邊緣的分割方法

基于邊緣檢測的分割方法試圖通過檢測包含不同區域的邊緣來解決分割問題,是最常用的方法之一。通常不同的區域之間的邊緣上像素灰階值的變化往往比較劇烈,這是邊緣檢測得以實作的主要假設之一。常用灰階的一階或者二階微分算子進行邊緣檢測。常用的微分算子有一次微分(sobel算子,Robert算子等),二次微分(拉普拉斯算子等)和模闆操作(Prewit算子,Kirsch算子等)。

基于邊緣的分割方法其難點在于邊緣檢測時抗噪性和檢測精度之間的沖突。若提高檢測精度,則噪聲産生的僞邊緣會導緻不合理的輪廓;若提高抗噪性,則會産生輪廓漏檢和位置偏差。為此,人們提出各種多尺度邊緣檢測方法,根據實際問題設計多尺度邊緣資訊的結合方案,以較好的兼顧抗噪性和檢測精度。

基于區域的分割方法

區域分割的實質就是把具有某種相似性質的像索連通,進而構成最終的分割區域。它利用了圖像的局部空間資訊,可有效地克服其他方法存在的圖像分割空間小連續的缺點。在此類方法中,如果從全圖出發,按區域屬性特征一緻的準則決定每個像元的區域歸屬,形成區域圖,常稱之為區域生長的分割方法。如果從像元出發,按區域屬性特征一緻的準則,将屬性接近的連通像元聚集為區域,則是區域增長的分割方法。若綜合利用上述兩種方法,就是分裂合并的方法。它是先将圖像分割成很多的一緻性較強的小區域,再按一定的規則将小區域融合成大區域,達到分割圖像的目的。

基于區域的分割方法往往會造成圖像的過度分割,而單純的基于邊緣檢測方法有時不能提供較好的區域結構,為此可将基于區域的方法和邊緣檢測的方法結合起來,發揮各自的優勢以獲得更好的分割效果。

基于聚類分析的圖像分割方法

特征空間聚類法進行圖像分割是将圖像空間中的像素用對應的特征空間點表示,根據它們在特征空間的聚集對特征空間進行分割,然後将它們映射回原圖像空間,得到分割結果。其中,K均值、模糊C均值聚類(FCM)算法是最常用的聚類算法。K均值算法先選K個初始類均值,然後将每個像素歸入均值離它最近的類并計算新的類均值。疊代執行前面的步驟直到新舊類均值之差小于某一門檻值。模糊C均值算法是在模糊數學基礎上對K均值算法的推廣,是通過最優化一個模糊目标函數實作聚類,它不像K均值聚類那樣認為每個點隻能屬于某一類,而是賦予每個點一個對各類的隸屬度,用隸屬度更好地描述邊緣像素亦此亦彼的特點,适合處理事物内在的不确定性。利用模糊C均值(FCM)非監督模糊聚類标定的特點進行圖像分割,可以減少人為的幹預,且較适合圖像中存在不确定性和模糊性的特點。

聚類方法應注意幾個問題:

(1)聚類的類數如何确定。

(2)怎樣确定聚類的有效性準則。

(3)聚類中心的位置和特性事先不清楚時,如何設定初始值。

(4)運算的開銷。

并且FCM算法對初始參數極為敏感,有時需要人工幹預參數的初始化以接近全局最優解,提高分割速度。另外,傳統FCM算法沒有考慮空間資訊,對噪聲和灰階不均勻敏感。

基于小波變換的分割方法

基于小波變換的門檻值圖像分割方法的基本思想是,首先由二進小波變換将圖像的直方圖分解為不同層次的小波系數,然後依據給定的分割準則和小波系數選擇門檻值門限,最後利用門檻值标出圖像分割的區域。整個分割過程是從粗到細,有尺度變化來控制,即起始分割由粗略的L2(R)子空間上投影的直方圖來實作,如果分割不理想,則利用直方圖在精細的子空間上的小波系數逐漸細化圖像分割。分割算法的計算饋與圖像尺寸大小呈線性變化。小波變換為信号在不同尺度上的分析和表征提供了一個精确和統一的架構。從圖像分割的角度來看,小波分解提供了一個數學上完備的描述;小波變換通過選取合适的濾波器,可以極大地減少或去除所提取的不同特征之間的相關性,不僅具有“變焦”特性,而且在實作上有快速算法。

小波變換是一種多尺度、多通道的分析工具它是空域和頻域的局域變換,因而能有效地從信号中提取資訊,通過伸縮和平移等運算功能對函數或信号進行多尺度分析,解決了傅立葉變換不能解決的許多問題。近年來多進制小波開始用于邊緣檢測。另外,利用正交小波基的小波變換也可提取多尺度邊緣,并可通過對圖像奇異度的計算和估計來區分一些邊緣的類型。

基于數學形态學的分割方法

數學形态學是一種非線性濾波方法,可以用于抑制噪聲、特性提取、邊緣檢測、圖像分割等圖像處理問題。數學形态學首先被用來處理二值圖像,後來也被用來處理灰階圖像,現在又有學者開始用軟數學形态學和模糊形态學來解決計算機視覺方面的問題。數學形态學的特點是能将複雜的形狀進行分解,并将有意義的形狀分量從無用的資訊中提取出來。它的基本思想是利用一個稱為結構元素的探針來收集圖像的資訊,當探針在圖像中不斷的移動時,不僅可根據圖像各個部分間的互相關系來了解圖像的結構特征,而且利用數學形态學基本運算還可以構造出許多非常有效的圖像處理與分析方法。其基本的形态運算是腐蝕與膨脹。腐蝕具有使目标縮小、目标内孔增大以及外部孤立噪聲消除的效果;而膨脹是将圖像中與目标物體接觸的所有背景點合并到物體中的過程,結果是使目标增大、孔徑縮小,可以增補目标中的空間,使其形成連通域。數學形态學中另一對基本運算方法是開運算和閉運算。開運算具有消除圖像是細小物體,并在物體影響纖細處分離物體和平滑較大物體邊界的作用;閉運算具有填充物體影像内細小空間, 接鄰近物體和平滑邊界的作用。

數學形态學應用于圖像分割,具有定位效果好、分割精度高、抗噪聲性能好的特點。同時這種方法也有着自身的局限性:由于在圖像處理的前期工作中,采用數學形态學的開(閉)運算,進行圖像處理後,依然存在大量與目标不符的短線和孤立點;由于預處理工作的不徹底,還需要進行一系列的基于點的開(閉)運算,是以運算速度明顯下降。如何将數學形态學與其它方法綜合運用以克服這些缺陷,将是數學形态學以後的工作方向。連接配接鄰近物體和平滑邊界的作用。

基于人工神經網絡的分割方法

近年來,人工神經網絡識别技術已經引起了廣泛的關注,并應用于圖像分割。基于神經網絡的分割方法的基本思想是通過訓練多層感覺機來得到線性決策函數,然後用決策函數對像素進行分類來達到分割的目的

用人工神經網絡的方法分割圖像,需要大量的訓練資料。神經網絡存在巨量的連接配接,容易引入空間資訊,能較好地解決圖像中的噪聲和不均勻問題。選擇何種網絡結構是這種方法要解決的主要問題。

基于遺傳學算法的分割方法

遺傳算法(GA),是一種模拟自然選擇和遺傳機制的搜尋和優化過程,它具有很強的全局優化搜尋能力,是一種具有廣泛适用性的自适應搜尋方法。它在搜尋空間中是在種群中而不是在單點上進行尋優,它在求解過程中使用遺傳操作規則而不是确定性規則來工作。這些特點使得遺傳算法很适于應用在圖像分割中,尤其是門檻值分割法以及區域生長法中。利用GA的全局尋優能力及對初始位置的不敏感特性,可以改進圖像分割的性能。

遺傳算法應用于圖像分割,其難點在于适應度函數的選擇以及交叉機率和變異機率的确定。GA還有可能收斂于局部最優。可考慮使用能夠自适應設定交叉機率和變異機率自适應遺傳算法以及和模拟退火法相結合的混合遺傳算法。

二、邊緣檢測函數

sobel_amp ( Image : EdgeAmplitude : FilterType, Size : ) 根據圖像的一次導數計算圖像的邊緣

close_edges ( Edges, EdgeImage : RegionResult : MinAmplitude : )

close_edges_length ( Edges, Gradient : ClosedEdges : MinAmplitude, MaxGapLength : ) 使用邊緣高度圖像關閉邊緣間隙。輸出的區域包含杯關閉的區域。(感覺是對邊緣的擴充)

derivate_gauss ( Image : DerivGauss : Sigma, Component : )

watersheds ( Image : Basins, Watersheds : : ) 從圖像中提取風水嶺。

zero_crossing ( Image : RegionCrossing : : ) 零交點(二次導數)

diff_of_gauss ( Image : DiffOfGauss : Sigma, SigFactor : ) 近似日志算子( 拉普拉斯高斯) 。

laplace_of_gauss  ( Image : ImageLaplace : Sigma : ) 拉普拉斯高斯

edges_color_sub_pix  ( Image : Edges : Filter, Alpha, Low, High : ) 精确的亞像素邊緣提取(彩色圖像)

edges_sub_pix  ( Image : Edges : Filter, Alpha, Low, High : ) 精确邊緣提取的亞像素(灰階圖像)

edges_color  ( Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : ) 根據顔色進行邊緣提取

edges_image  ( Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : ) 邊緣提取

skeleton  ( Region : Skeleton : : ) 計算區域的架構 Skeleton == Region

frei_amp  ( Image : ImageEdgeAmp : : ) Frei-chen 模闆進行邊緣檢測(振幅)

frei_dir  ( Image : ImageEdgeAmp, ImageEdgeDir : : ) Frei-chen 模闆進行邊緣檢測(振幅和方向)

nonmax_suppression_dir  ( ImgAmp, ImgDir : ImageResult : Mode : ) 使用方向圖像抑制所有的超過給定最大值的圖像灰階值的點

gen_contours_skeleton_xld ( Skeleton : Contours : Length, Mode : ) 将系統架構轉換成 XLD 輪廓

laplace ( Image : ImageLaplace : ResultType, MaskSize, FilterMask : )使用有限差分計算拉普拉斯變換

info_edges ( : : Filter, Mode, Alpha : Size, Coeffs ) 估計濾波器的寬度

kirsch_dir ( Image : ImageEdgeAmp, ImageEdgeDir : : ) 使用 Kirsch 算子計算出邊緣(振幅和方向)

prewitt_amp ( Image : ImageEdgeAmp : : ) 使用 Prewitt 算子計算出邊緣(振幅)

kirsch_amp ( Image : ImageEdgeAmp : : ) 使用 Kirsch 算子計算出邊緣(振幅)

highpass_image ( Image : Highpass : Width, Height : ) 從高頻成分提取的圖像。

sobel_amp ( Image : EdgeAmplitude : FilterType, Size : ) 使用 Sobel 算子計算出邊緣(振幅)

robinson_amp ( Image : ImageEdgeAmp : : ) 使用 Robinson 算子計算出邊緣(振幅)

roberts ( Image : ImageRoberts : FilterType : ) 使用 Robert 算子計算邊緣

--

繼續閱讀