機器視覺系統(tǒng)基于數(shù)字圖像中的信息進行決策。若系統(tǒng)算法不分主次,讓所有圖像數(shù)據(jù)都參與到目標識別或分類的計算過程中,機器視覺系統(tǒng)的實時性就很難得到保證。為了確保系統(tǒng)的實時性,最大限度地利用系統(tǒng)的能力,有必要關注"關鍵信息”。在機器視覺工程實踐中,通常會先確定一個或多個能有效代表被測目標的量化特征,再基于這些特征完成機器決策任務,從而提高系統(tǒng)自動識別的能力。
圖像分割是簡化機器視覺算法的有效手段之一。它將圖像分成一些有意義的區(qū)域,以便特征提取過程可基于這些區(qū)域提取目標的特征。此處提到的區(qū)域是指其中所有像素都相鄰或相接觸的集合,是像素的連通集。連通集中任意兩個像素之間都存在一條完全由該集合的元素構成的連通路徑。連通路徑是一條可在相鄰像素間移動的路徑。
圖像分割的基礎是像素的相似性和跳變性,如灰度、紋理相似或突變等。經(jīng)圖像分割過程得到的區(qū)域一般互不交疊,每個區(qū)域內(nèi)部的某種特性相同或接近,而不同區(qū)域間的特性則有明顯差別。
圖像分割的方法較多,依據(jù)處理的對象不同可分為點、線和區(qū)域分割法。若根據(jù)分割算法來分,則有閾值分割法、邊緣分割法、區(qū)域分割法和形態(tài)學分割法等,如下圖所示:
1 圖像閾值分割
圖像閾值分割(thresholding)是一種最常用的圖像分割方法,可將圖像按照不同灰度分成兩個或多個等間隔或不等間隔灰度區(qū)間,對目標與背景有較強對比度的圖像分割特別有用。主要利用檢測目標與背景在灰度上的差異,選取一個或多個灰度閾值,并根據(jù)像素灰度與閾值的比較結果對像素進行分類,用不同的數(shù)值分別標記不同類別的像素,從而生成二值圖像。由于物體與背景以及不同物體之間的灰度通常存在明顯差異,在圖像灰度直方圖中會呈現(xiàn)明顯的峰值,因此,若選擇圖像灰度直方圖中灰度分布的谷底作為閾值,即可對圖像進行分割。
閾值分割法可分為全局閾值分割法(Global Thresholding)和局部閾值分割法(localthresholding)。
全局閾值分割法會基于整幅圖像的像素統(tǒng)計信息,選取固定的灰度閾值。它適用于每一幅待處理圖像中光照都均勻分布,或多幅圖像有一致照明的場合;
局部閾值分割法則基于鄰域內(nèi)像素的統(tǒng)計信息,為每個像素計算閾值。它對光線呈傾斜梯度分布或待測目標有陰影的情況特別有效,而在這類情況下全局閾值分割法通常會失效。
1.1?全局閾值分割
全局閾值分割法包括手動閾值分割(manual thresholding)和自動閾值分割
(automatic thresholding)兩大類。手動閾值分割方法需要人為確定閾值;自動閾值分割方法基于圖像的灰度直方圖來確定灰度閾值。
1.1.1手動閾值分割
手動閾值分割法的閾值選取是關鍵。若閾值過高,會有過多的目標像素點被誤分為背景,閾值選得過低,則會出現(xiàn)相反的情況。
常見的方法有P分法(P-tile)和直方圖谷底法。P分法是由Doyle于1962年提出的,該方法根據(jù)先驗概率來設定閾值,使目標或背景的像素比例等于先驗概率。直方圖谷底法選取圖像直方圖各峰之間的谷底作為圖像分割閾值。下圖顯示了基于圖像灰度直方圖選擇單個閾值或多個閾值的例子:
NlVision使用IMAQ Threshold實現(xiàn)手動單灰度區(qū)間的圖像分割。它和其他圖像分割函數(shù)都位于LabVIEW的視覺與運動→lmageProcessing→Processing圖像處理函數(shù)選板中,如下圖所示:
函數(shù)說明及使用可參見幫助手冊:
通過使用單個灰度區(qū)間對硬幣圖像進行分割的示例,了解手動閾值分割實現(xiàn)方法,程序設計思路如下所示:
程序一開始先將原圖coins.jpg讀入內(nèi)存,并使用圖像顯示控件顯示;
此后,程序使用IMAQ GetlmageSize獲取圖像的尺寸,并為圖像處理分配緩沖,以方便圖像分割算法使用;
以上準備工作完成后,程序便進入實現(xiàn)圖像閾值分割功能的While循環(huán);
While循環(huán)中代表閾值分割方法的變量Type、代表局部分割方法配置參數(shù)的變量Local、代表自動閾值分割方法配置參數(shù)的變量Automatic、代表手動閾值分割方法配置參數(shù)的變量Manual以及代表聚類分割方法配置參數(shù)的變量Number of Class被捆綁為簇,經(jīng)由寄存器與其前一次的值進行比較;
若簇中任一參數(shù)發(fā)生變化,或者當循環(huán)執(zhí)行第一步時,條件結構True分支中的圖像分割代碼就會被執(zhí)行;
具體執(zhí)行何種圖像分割代碼,由Type參數(shù)控制。Type參數(shù)對應于前面板上的Tab控件,當用戶選擇Manual選項卡時,程序就執(zhí)行Manual分支中的IMAQ Threshold,完成對圖像的人工分割;
默認情況下IMAQ Threshold使用1替換所有指定灰度范圍內(nèi)的像素值,用0替換所有灰度范圍外的像素值,以生成二值圖像。也可通過設置參數(shù),使灰度區(qū)間內(nèi)的像素保持原值不變,而只把灰度范圍之外的背景像素值更改為0;
當用戶在前面板上更改了任何與手動分割相關的參數(shù)時,While循環(huán)將更新圖像分割的結果。
程序設計如下所示:
程序效果如下所示:
手動閾值分割方法需要人為確定閾值。由于所選定的閾值不僅作用于整幅圖像,還作用于所有使用該方法處理的圖像,因此它適用于可采集單幅光照分布比較均勻的圖像,且能獲取多幅圖像之間光照相對一致的機器視覺系統(tǒng)。為了能消除人工設定閾值的主觀性,使機器視覺系統(tǒng)能適應不同圖像間照明不一致的情況,需要研究各種自動閾值分割方法。
項目資源下載請參見:LabVIEW圖像全局閾值分割_labview閾值分割-其它文檔類資源-CSDN下載
1.1.2自動閾值分割
自動閾值分割方法基于圖像的灰度直方圖來確定灰度閾值。由于這類算法會基于每幅圖像的直方圖來計算適合該圖像的分割閾值,因此即使機器視覺系統(tǒng)采集的各個圖像之間有不同的光照,它們也能正常工作。
NlVision支持5種自動閾值分割方法,包括:聚類法(Clustering)、最大類間方差法(Inter-Class Variance)、最大嫡法(Entropy) 、均勻性度量法(Metric)和矩保持法(Moments Preserving)。
其中聚類法是唯一支持將圖像分割為兩類以上像素點的分割方法,其余4種方法都是針對較為嚴格的二值分割情況而設計的。
聚類法是一種按照圖像像素灰度特征的接近程度分割成多個類的迭代分割方法。常見的聚類算法有K均值(K-Mean)和模糊C均值(FuzzyCMean)算法。
K均值算法是MacQueen于1967年提出的一種解決聚類問題的經(jīng)典算法。它先任選K個初始值,將它們作為類中心,并根據(jù)這些值將其余像素分別歸入離它最近的類中。此后再計算新類的均值重新作為新類的中心,并迭代執(zhí)行前面的分類步驟,直到新舊類均值之差小于某閾值或完全相同為止。其基本算法如下:
1、從樣本集中任意選擇K個對象作為初始聚類中心;
2、對于剩余樣本,根據(jù)它們與這些聚類中心的距離(絕對偏差或歐氏距離),將它們分配到與其最近的類(由聚類中心代表);
3、計算每個新類中像素的均值作為新的聚類中心;
4、重復第2和3步,直至相應的新舊類聚類中心之差小于某一閾值或完全相同為止。
K均值算法假定每個樣本只能屬于某一類,而且若用于圖像分割,在圖像中的某一類或幾類像素較少時,它很難保留像素較多的類別中的圖像細節(jié)。
模糊C均值算法是在模糊數(shù)學基礎上對K均值算法的推廣,它通過最優(yōu)化一個模糊目標函數(shù)實現(xiàn)聚類。模糊C均值算法不像K均值算法那樣認為每個點只能屬于某一類,而是計算每個點對各類的隸屬度,用隸屬度更好地描述邊緣像素亦此亦彼的特點。因此,模糊C均值算法較適合圖像中存在不確定性和模糊性的情況。
若僅僅要將圖像分為目標和背景兩類,可以使用迭代法對像素進行聚類,其算法如下:
1、選擇一個初始閾值T(通常取圖像的平均灰度);
2、用T將像素分割為灰度小于T的G1和大于T的G2兩類,并計算G1和G2類中像素的平均灰度值m1和m2;
3、重新設定閾值T=(m1+m2)/2。
4、重復步驟2和3,直到連續(xù)迭代中的T值之差小于某一閾值或完全相同為止。
NlVision使用IMAQ AutoBThreshold和IMAQ AutoMThreshold實現(xiàn)迭代法和多個目標的聚類分割法。這兩個VI位于LabVIEW的視覺與運動→lmage Processing→Processing圖像處理函數(shù)選板中,見博文1.1.1手動閾值分割內(nèi)容部分所示。
通過一個案例,了解使用IMAQ AutoBThreshold實現(xiàn)自動迭代聚類法的方法。
在程序中使用時,只需根據(jù)情況通過參數(shù)Method選擇需要的方法即可,程序設計可見1.1.1 手動閾值分割內(nèi)容部分所示。
使用迭代聚類法自動將圖像coins.jpg分割為目標和背景圖像的實例。程序繼續(xù)沿用了1.1.1、手動閾值分割中實例的結構,運行時選擇自動閾值分類選項卡Automatic中的迭代聚類法Cluster并設置目標類型Object Type為亮背景中的暗目標。觀察程序運行結果可發(fā)現(xiàn),目標與背景被清晰地分割開來,如下所示:
項目資源下載請參見:LabVIEW圖像全局閾值分割_labview閾值分割-其它文檔類資源-CSDN下載
1.2?局部閾值分割
局部閾值分割法(Local Thresholding)又稱為局部自適應閾值分割法 (LocallyAdaptiveThresholding)或可變閾值處理。它在像素的某一鄰域內(nèi)以一個或多個指定像素的特性(如灰度范圍、方差、均值或標準差)為圖像中的每一點計算閾值。由于要遍歷所有圖像中的像素,因此鄰域的大小對該算法的執(zhí)行速度會有較大影響。一般來說,鄰域的尺寸略大于要分割的最小目標即可。
全局閾值分割法的一個缺點是其在圖像和背景灰度差異較明顯時容易忽略細節(jié)。Niblack二值化算法用于解決此類問題,這種算法的基本思想是對每一個像素點f(i,j),計算其鄰域內(nèi)像素點的均值m (i,j)和方差2(i, j),然后根據(jù)以下邏輯對圖像進行分割:
1、每個像素計算T(i, j) =m (i, j) +k 2 (i, j),其中k為偏差系數(shù)(deviationfactor),通常取0.2;
2、若f (i, j) > T (i, j) ,則將該像素歸為目標,否則歸為背景。
NlVision使用IMAQ LocalThreshold實現(xiàn)局部閾值分割法,它位于LabVIEW的視覺與運動→lmage Processing→Processing圖像處理函數(shù)選板中,見博文1.1.1、手動閾值分割內(nèi)容部分所示。
IMAQLocalThreshold為了增強算法的實時性和魯棒性,提供了兩種優(yōu)化算法:一是使用最大類間方差法的背景糾正法,另一種是Niblack二值化算法(Niblack Algorithm)。
通過一個案例,了解使用Niblack二值化算法對圖像進行分割的方法。
程序設計可見1.1.1 手動閾值分割內(nèi)容部分所示,運行時選擇局部閾值分割選項卡local中的Niblack算法,并設置目標類型Object Type為亮背景中的暗目標。Niblack算法的偏離參數(shù)被設置為1,窗口大小被設置為64×64(略大于字符)。
觀察程序運行結果可以發(fā)現(xiàn),雖然圖像的亮度分布不均(中間部分的亮度高于周圍亮度),但是局部閾值分割算法也能較好地對圖像進行分割,效果如下所示:
項目資源下載請參見:LabVIEW圖像全局閾值分割_labview閾值分割-其它文檔類資源-CSDN下載
1.3?閾值分割算法比較
在使用這些圖像分割方法時,常遇到背景和目標之間分界不清的問題。這種情況下,可以先對圖像進行預處理,再進行分割。常用的預處理方法包括灰度變換(LUT)、直方圖均衡、空域或頻域濾波等。使用線灰度工具觀察一條跨邊緣的線段上的灰度分布,也有助于選擇合適的閾值。此外,形態(tài)學處理可以對分割后的二值圖像進行糾正,以濾除閾值分割過程的錯誤選擇。
下表對上述各種灰度閾值方法進行了匯總和比較。
幾種閾值分割方法比較
全局自動閾值分割的幾種方法的比較
若要對彩色圖像進行閾值化,必須對各個顏色分量設置閾值。只有各顏色分量都滿足閾值條件的像素點才能被置為1,否則被置為0。
例如,若要對RGB彩色圖像進行閾值化,可以確定要分析目標的紅綠藍各顏色分量的范圍,然后再為各顏色分量指定閾值范圍。HSL彩色圖像的分割很有特點,由于亮度分量(Luminance)代表圖像的灰度,色度(Hue)包含圖像的主要顏色信息,而Saturation分量代表顏色的飽和度,因此可以選擇包含所有亮度值的閾值范圍,使圖像分割獨立于圖像的灰度信息,而僅僅根據(jù)需要選擇不同的色度和飽和度閾值區(qū)間即可。
NIVision使用IMAQ ColorThreshold實現(xiàn)彩色圖像的閾值分割,它位于LabVIEW的視覺與運動→lmage Processing→Color Processing彩色圖像處理函數(shù)選板中,如下所示:
函數(shù)說明及使用可參見幫助手冊:
2 圖像邊緣分割
圖像中目標的邊緣是一組相連的像素,它是圖像中目標的基本特征之一。這些像素位于灰度不連續(xù)(間斷或跳變)的兩個區(qū)域的邊界上。由于各種噪聲的影響,機器視覺系統(tǒng)采集到的圖像中,目標邊緣處像素的灰度變化并不都是理想的階躍式跳變,而通常遵循漸進的變化方式。因此,可以用下圖所示的模型來表示圖像中目標的邊緣。
?邊緣的模型
邊緣模型中常用的參數(shù)包括邊緣強度(edge strength)、邊緣長度(edge length)、邊緣位置(edge location)和邊緣極性(edge polarity),具體所示如下所示:
邊緣強度又稱為邊緣對比度,指可識別邊緣相對于背景的最小灰度差異。邊緣強度的大小因光照條件和目標的灰度特性不同而異。若整個場景中光照較弱,則邊緣強度較低。若圖像中某一目標相對于其他目標亮度很高,則較低亮度目標的邊緣強度會被壓低。
邊緣長度是指能確保所設定邊緣強度出現(xiàn)的距離,它由邊緣像素灰度的變化率決定。灰度變化較緩慢的邊緣,其邊緣長度應較大。
邊緣位置是指代表邊緣的像素在圖像中的位置坐標。
邊緣極性代表邊緣為上升沿還是下降沿,它通常用于指明搜索算法的方向。當邊緣處的灰度為遞增變化時,其極性為正,反之為負。
邊緣分割法基于目標的邊緣特征,先使用邊緣檢測算法檢測圖像中目標的邊緣(如點、線、目標輪廓等),然后再利用像素點的空間關系,根據(jù)設定的條件將邊緣連接為檢測目標的封閉輪廓(contour)。得到的目標輪廓可作為各區(qū)域的邊界,用于圖像分割。
從算法實現(xiàn)的角度來看,可以基于提取到的目標輪廓點構建ROI數(shù)據(jù)結構,再將ROI轉化為遮罩圖像。此后,對遮罩圖像進行填充,再與圖像進行遮罩運算,即可輕而易舉地將圖像劃分為不同區(qū)域。下圖顯示了使用點、線及目標邊緣將圖像分割為不同區(qū)域的示意圖。
邊緣檢測算法主要是對圖像灰度變化進行度量,提取圖像中不連續(xù)的灰度特征,以此定位邊緣點。現(xiàn)有的圖像處理書籍和資料中多數(shù)用相當多的篇幅介紹邊緣檢測和圖像分割。然而若考慮實時性和魯棒性,這些算法并不見得都適用于機器視覺系統(tǒng)。
2.1?點檢測
傳統(tǒng)的點檢測技術常基于以下模板(以3×3模板為例,但不失一般性)運算進行判別∶
如果設定一個非負的灰度閾值T,并從圖像(或ROI)的左上角開始逐點從左到右、從上到下進行掃描,且對于每個像素,都以其為模板中心進行模板運算,則結果超出門限時,即可認為檢測到一個孤立點,亦即有下式成立∶
傳統(tǒng)點檢測方法認為圖像中孤立點與其鄰域內(nèi)像素的灰度(即背景)有較大差異,因此通常使用系數(shù)之和為0的模板運算獲得中心像素的灰度變化,并根據(jù)該變化和閾值T來決定是否為孤立點。
雖然傳統(tǒng)點檢測方法對孤立點的檢測較為有效,但它不能判斷檢測到的孤立點是否邊緣點。此外,由于傳統(tǒng)點檢測方法計算量大,實時性較差,因此有必要尋找更適合機器視覺系統(tǒng)的方法。
本文講解一種常用的點檢測方法,通過限定搜索區(qū)域和搜索數(shù)量來提高檢測的實時性。這種方法最簡單直接的應用就是基于一維像素序列上的灰度變化,沿指定方向尋找上升邊緣和下降邊緣,來進行各種判斷。而一維像素序列可基于圖像中的任意路徑獲得,如線段、矩形、旋轉矩形、同心圓弧、橢圓、多邊形或任意形狀。
下圖顯示了這種從像素序列一端開始搜索上升和下降邊緣的簡易方法。對于每個像素點,它都會通過比較該點的像素灰度與邊緣閾值來判斷其是否為邊緣點。為了盡可能消除噪聲干擾,在判定上升和下降邊緣時,可在理想閾值的基礎上設定一個裕量(hysteresis),當搜索到第一個大于或等于“理想閾值加上裕量”的像素時,就將該點指定為沿該線搜索到的上升邊緣。緊接著,該方法將繼續(xù)向前尋找第一個小于或等于“理想閾值減去裕量"的像素,找到時就將該點指定為下降邊緣。如此循環(huán)往復,直到找到所有上升和下降邊緣為止。
上升和下降邊緣的檢測
在實際工作中,由于圖像中的目標可能為暗目標,因此找到的第一個邊緣點也可能為下降邊緣。此種情況下,找到第一個邊緣以后的搜索方法與上述過程類似。
多數(shù)情況下,基于圖像自身的像素分辨率找到的邊緣點位置就能滿足各種機器視覺檢測的需求。但是在某些特殊情況下,由于傳感器尺寸或成本方面的限制,即使機器視覺系統(tǒng)的鏡頭與相機傳感器匹配且光照條件較好,采集到的圖像也很難滿足對最小分辨率的需求。這種情況下,可以使用亞像素(subpixel)邊緣定位法來尋找滿足系統(tǒng)分辨率要求的邊緣點位置。
亞像素是當物理上已經(jīng)無法在相鄰像素間增加更多像素時,使用各種線性、拋物線或多次插值算法,在相鄰像素之間插入多個“虛擬像素"以提高測量精度的手段。通常情況下,亞像素邊緣點存在于圖像中逐漸發(fā)生過渡變化的區(qū)域,可以利用多項式插值等多種方法獲得邊緣點的亞像素位置,以提高邊緣點檢測的精度。例如,可按照以下流程使用拋物線插值法(parabolic interpolation)進行亞像素邊緣定位,如下所示:
1、基于圖像像素沿某一線段尋找邊緣點;
2、選擇檢測到的邊緣像素點(xo,yo)及與其左右相鄰的兩個點(x-1,y-1)和(x1,y1)作為拋物線插值的3個點;
3、根據(jù)已知的3個點計算拋物線方程y=ax2+bx+c的系數(shù)a和b;
4、由于拋物線方程在x=-b*2a處有極值,因此可選擇該處為相對于最近像素點的亞像素邊緣。
雖然基于亞像素定位法可以提高測量精度,但是由于計算量增加,程序的實時性也會相對降低。因此在實際中總是需要在速度與精度之間進行取舍。
NIVision使用位于LabVIEW的視覺與運動→Machine Vision→Caliper函數(shù)選板中的IMAQ SimpleEdge實現(xiàn)上述沿一維像素序列檢測邊緣點的方法,如下所示:
函數(shù)說明及使用可參見幫助手冊:
通過使用IMAQ Simple Edge檢測零部件邊緣點的實例,了解其使用方法,程序設計思路如下所示:
程序開始先為圖像處理分配內(nèi)存并指定了一條線段作為圖像的初始ROI;
程序在執(zhí)行第一個循環(huán)時,先由IMAQ Clear Overlap清除圖像中的疊加圖層,然后由IMAQROIProfile返回初始ROI所覆蓋的一維像素序列,并繪制該ROI上的像素灰度變化曲線;
IMAQSimple Edge可以基于事先設置的邊緣灰度閾值和抗噪裕量,返回像素序列中的邊緣點數(shù)量和位置。必要時也可以通過設置亞像素精度參數(shù)Sub-Pixel Accuracy為True來提高算法的檢測精度;
OverlayPoints with User Specified Size.vi可以按照檢測到的邊緣位置,以指定的顏色和尺寸在圖像中標記出它們的位置;
當循環(huán)繼續(xù)執(zhí)行時,程序將檢查控制算法執(zhí)行的參數(shù)Process或Threshold Parameters簇是否被改變,或者圖像控件中是否有ROl繪制事件發(fā)生;
當任何一個變化發(fā)生時,分支結構中的代碼將被再次執(zhí)行;
程序直到用戶單擊Stop按鈕退出并釋放內(nèi)存為止。
程序設計如下所示:
程序還顯示了用戶繪制矩形ROI時,程序檢測所有該矩形ROI上的邊緣點的情況,注意,在此過程中用戶設置了相對閾值方式來檢測邊緣,效果如下所示:
?(觀看視頻,請點擊文末原文鏈接)
項目資源下載請參見:LabVIEW機器視覺檢測零部件邊緣點_labview圖像分割-其它文檔類資源-CSDN下載
2.2?線檢測
傳統(tǒng)的線邊緣檢測技術?;谝韵赂鞣N方向模板運算進行判別:
本文提出一種適合機器視覺系統(tǒng)的直線檢測方法,思路如下所示:
1、將搜索路徑從一維擴展至二維。不是沿某一條搜索路徑搜索邊緣,而是沿圖像中多條搜索路徑進行邊緣檢測;
2、基于檢測到的邊緣點,使用曲線擬合的方法確定目標邊緣。
理論上來講,該方法適合任意形式的搜索路徑和可能擬合的曲線。然而,無論對于搜索路徑還是最終需要擬合的邊緣線來說,直線、圓(圓弧)和橢圓最為實用,因此以下將主要介紹基于這幾種路徑的方法。
沿矩形ROI區(qū)域內(nèi)多條直線搜索邊緣點的矩形耙(Rectangle Rake)是最常用的工具之一。矩形耙工具因其形狀像耙子而得名,如下圖所示。矩形耙基于矩形ROI內(nèi)部平行于矩形ROI的多條線搜索邊緣點。對于水平放置的或旋轉過的水平矩形ROI,可以沿這些線從左到右或從右到左進行搜索。如果需要從上到下或從下到上搜索邊緣,則可使用垂直放置或旋轉過的垂直矩形ROI。與一維邊緣點檢測方法類似,矩形耙可以搜索各條搜索線上的上升邊緣、下降邊緣、首尾或所有邊緣點,以及邊緣強度最大的最佳邊緣點。
矩形耙
同心耙(Concentric Rake)與矩形耙工作原理類似,它基于圓形或同心圓弧ROI區(qū)域內(nèi)的多條線進行搜索,這些線與圓或圓弧同心。使用同心耙搜索時,既可沿順時針方向搜索,也可沿逆時針方向搜索。如下所示:
同心耙
輪輻(Spoke)工具因其形狀酷似自行車的輪輻而得名,它也基于圓形或同心圓弧ROI區(qū)域進行搜索,但與同心耙工具不同,其搜索線是一組從圓心到外邊緣的輻射狀線條。使用輪輻工具時,既可從圓心向外搜索,也可從外部向圓心方向搜索。如下所示:
輪輻搜索
NlVision使用位于LabVIEW的視覺與運動→Machine Vision→Caliper函數(shù)選板中的IMAQ Rake 3、IMAQ Concentric Rake 3和IMAQ Spoke 4實現(xiàn)矩形耙、同心耙和輪輻邊緣點檢測算法,如下圖所示:
函數(shù)說明及使用可參見幫助手冊:
NlVision使用位于LabVIEW的視覺與運動→Machine Vision→AnalyticGeometry解析幾何函數(shù)選板中的IMAQ Fit Line、IMAQ Fit Circle 2和IMAQ FitEllipse 2實現(xiàn)基于離散特征數(shù)據(jù)點的直線、圓或橢圓的擬合,如下圖所示。這些VI所使用的曲線擬合算法是在傳統(tǒng)曲線擬合方法的基礎上進行優(yōu)化后得到的。
函數(shù)說明及使用可參見幫助手冊:
工業(yè)中常需要對“噴霧"的角度進行測量,例如在生產(chǎn)汽車噴油嘴時,就可以通過檢測其噴霧的角度來判斷產(chǎn)品的質量。當噴油嘴無噴霧或噴霧的邊緣夾角達不到某個指定的角度時,即可認為產(chǎn)品不合格。為了計算噴霧角度,需要先找到噴霧的兩條邊緣線。為此,可以先使用矩形耙或同心耙,獲得噴霧兩個邊緣上的兩組邊緣點,再使用直線擬合得到兩條邊緣線。
通過使用同心耙和直線擬合檢測工業(yè)噴霧裝置邊緣的實例,了解其使用方法,程序設計思路如下所示:
程序將輪詢的輸入量全部捆綁成簇,一開始先進行一系列準備工作,包括讀入圖像,為圖像處理分配內(nèi)存以及創(chuàng)建一個起始角度為180°,終止角為360°同心圓弧形的ROI;
隨后,程序清除圖像中的疊加圖層,并使用同心耙函數(shù)IMAQ Concentric Rake 3沿逆時針方向(SearchDirection的值為0)檢測各條線上的首尾邊緣點。步長StepSize被設置為3個像素,這意味著同心耙中每隔3個像素就有一個用于搜索邊緣的同心圓??;
檢測到的邊緣點由Sub-OverlayPointswithSpecified Zize.vi以紅色在圖像上標記了出來;
最后程序在使用IMAQ Fit Line分別將檢測到的兩組邊緣點擬合成兩條直線后,用IMAQ
OverlayLine以黃色顯示在圖像上。
程序設計如下所示:
程序還允許人工在圖像中繪制矩形耙或同心耙或調整各類參數(shù),以觀察直線檢測的效果,效果如下所示:
(觀看視頻,請點擊文末原文鏈接)
一旦獲得兩條噴霧的邊緣線,就能很容易通過以下方法計算噴霧的夾角。值得一提的是,NI Vision為圖像夾角測量提供了專門的函數(shù),開發(fā)人員無須關注這些計算細節(jié)就能直接獲得穩(wěn)定的測量結果。
計算平面上兩條直線的夾角
項目資源下載請參見:LabVIEW工業(yè)噴霧裝置邊緣檢測_labview圖像分割-其它文檔類資源-CSDN下載
2.3?輪廓提取
輪廓(contour)是指可以在圖像中勾勒出目標外形(shape)的一組相互連接的曲線(curve)。這些曲線由一系列目標物的邊緣點組成。由曲線構成的輪廓,通常會勾勒出被測目標的外形。因此,基于目標的輪廓可以輕而易舉地實現(xiàn)圖像分割。
在Nl Vision中,為了基于目標物的輪廓對圖像進行分割,可以先將提取到的輪廓信息轉換為ROI,再由ROI獲得遮罩圖像,此后經(jīng)圖像的遮罩運算即可將圖像劃分為不同區(qū)域。下圖顯示了基于目標輪廓的圖像分割過程。
基于目標輪廓的圖像分割過程
目標的輪廓提取可分為搜索曲線種子(Search Curve Seed)、追蹤曲線(Tracingcurve)、曲線連接(Curve Connection)和輪廓選擇(Contour Selection)幾個步驟。
其中搜索曲線種子和追蹤曲線的過程又統(tǒng)稱為曲線提?。╟urve Extraction)過程。曲線的種子點(Seed Point)是曲線追蹤過程的起始點,合格的曲線種子點應滿足兩個條件,一是其邊緣強度應大于設定的閾值,二是它不能屬于已知曲線上的像素點。若用Pi,代表(i,j)處像素的灰度,則(i,j)處的邊緣強度Ci,可由以下公式計算:
NlVision使用IMAQ Extract Contour封裝了包括搜索曲線種子、追蹤曲線、曲線連接和輪廓選擇幾個步驟在內(nèi)的所有目標輪廓提取過程,它位于LabVIEW的視覺與運動→Machine Vision→ContourAnalysis函數(shù)選板中。
函數(shù)說明及使用可參見幫助手冊:
IMAQExtract Contour可工作在常規(guī)模式(Normal)或均勻模式(Uniform Regions)兩種模式下。當其工作在均勻模式下時,VI會假設圖像中目標區(qū)域和背景區(qū)域的像素值分別為一致的灰度值,這有助于提高VI的執(zhí)行效率。
通過使用IMAQ Extract Contour提取零部件工件輪廓的實例,了解其使用方法,程序設計思路如下所示:
程序一開始先將工件圖像Clamp.png讀入內(nèi)存,并指定圖像中的ROI區(qū)域;
進入主循環(huán)后,程序監(jiān)測曲線提取過程的參數(shù)及圖像顯示控件中繪圖事件(Draw),一旦有變化,程序就調用IMAQ Extract Contour從ROI中提取目標的輪廓,并由IMAQ Overlay Contour在圖像中標記出最終選擇的目標輪廓。
程序設計如下所示:
程序還顯示了從左到右搜索ROI時所提取到的最接近ROI左側的目標輪廓圖像,效果如下所示:
項目資源下載請參見:LabVIEW提取零部件工件輪廓_labview提取輪廓范例,labview輪廓提取怎么提取全部輪廓-其它文檔類資源-CSDN下載
機器視覺系統(tǒng)基于分割后的圖像信息來提取檢測目標的特征,因而圖像分割的質量直接決定機器能否快速準確地基于目標特征進行決策。閾值分割和邊緣分割可以滿足大多數(shù)機器視覺應用的要求,但是當所采集的圖像質量較差,目標和背景的灰度差別不大或視場中被測目標有交疊時,其分割效果并不理想。在這種情況下就需要使用圖像的區(qū)域分割法和形態(tài)學(Morphology)分割法。
3 圖像形態(tài)學分割
形態(tài)學是用來研究生物形態(tài)結構和功能結構的學科,包括生物體的外觀、結構、圖案以及生物體的骨骼、器官內(nèi)部功能結構等。它最早由歌德在其生物學研究中倡導,強調把生命形式當作有機的系統(tǒng)看待,反對只注重對生物體器官的分析。
圖像的數(shù)學形態(tài)學處理既可作用于經(jīng)閾值化處理得到的二值圖像,也可用于處理灰度圖像?;叶葓D像的形態(tài)學處理主要通過將像素灰度值變更為其鄰域內(nèi)像素的灰度最大或最小值來實現(xiàn)灰度圖像的增強,包括降噪、背景矯正和平滑漸變的灰度特征等。它也可以通過擴展或收縮目標的亮度區(qū)域來改變目標的形狀,增強目標邊界的對比度。二值圖像的形態(tài)學處理則主要用來去除經(jīng)閾值化處理得到的二值圖像中不需要的信息,如噪聲相互重疊的目標邊界等。當然,它也可以擴展或收縮目標邊界來改變其形狀。
圖像的數(shù)學形態(tài)學處理包含多種計算形式,其中腐蝕(Erosion)、膨脹(Dilation)和擊中—擊不中(Hit-Miss)是3種最基本的形態(tài)學運算形式。通過對它們進行組合,可以進一步獲得更多其他組合形式的運算,如開運算(Opening)和閉運算(Closing)、內(nèi)形態(tài)梯度(Inner Gradient)和外形態(tài)梯度(Outer Gradient)運算、細化(Thinning)和加粗(Thickening)運算,適當開(Proper-Opening)和適當閉(Proper-Closing)運算以及自動中值(Auto-median)運算等。圖像形態(tài)學處理運算匯總如下圖所示:
3.1?像素的形態(tài)學處理
圖像的形態(tài)學處理常表現(xiàn)為一種像素的鄰域運算形式,它使用具有一定形態(tài)的結構元素與圖像進行形態(tài)學運算,并進而研究圖像各部分的關系,以尋求各種問題的解決方案。運算過程中,以下因素直接決定形態(tài)學處理的結果:
1、結構元素的尺寸(Structure Element Size);
2、結構元素的數(shù)值(Structure Element Value);
3、待處理圖像的像素邊框形狀(Pixel Frame Shape);
4、形態(tài)學處理算法的類型。
其中,前3項直接決定哪些像素將參與形態(tài)學處理運算,而形態(tài)學算法的類型則決定了如何基于選定的像素進行鄰域計算。
結構元素的尺寸和數(shù)值對形態(tài)學處理的影響如下圖所示。結構元素通常為行、列數(shù)相同的奇數(shù)矩陣形式,它將中心元素與圖像中待處理的像素對齊,依據(jù)其尺寸的大小在待處理像素鄰域內(nèi)劃定了形態(tài)學運算的范圍。也就是說,運算時僅考慮被結構元素覆蓋的圖像像素。程序開發(fā)過程中,結構元素可以用二維數(shù)組描述,常見的尺寸有3×3、5×5和7×7等幾種。若指定的數(shù)組行、列數(shù)不同,則程序應能自動截取最接近的奇數(shù)矩陣。結構元素的尺寸越大,形態(tài)學處理的計算量就越大,相應的處理速度就越低。
形態(tài)學處理的算法決定了使用何種方法基于所選出的像素獲得結構元素中心所覆蓋像素的新值。
腐蝕、膨脹和擊中—擊不中是3種最基本的形態(tài)學算法。若用Po代表中心像素,用Pi代表基于像素邊框和結構元素選出的像素,則3種算法的計算方法、用途及適用的圖像類型如下表所示:
腐蝕和膨脹運算既可作用于灰度圖像,也可作用于二值圖像,但因圖像類型不同,其作用也有差異。二值腐蝕運算常用來消除圖像中相對背景亮度較高的孤立像素點,或根據(jù)所選結構元素特征,細化目標的輪廓。
計算時,僅當所有Pi值均為1時,二值腐蝕運算才將Po的值置為1。也就是說,若有任一個Pi值為0,二值腐蝕運算就將Po的值置為0。二值膨脹運算則常用于消除圖像中孤立于顆粒內(nèi)部的孔洞(即被灰度較高的像素所包圍的區(qū)域),或根據(jù)所選結構元素特征擴展目標的輪廓。
計算時,若有任一個Pi值為1,二值膨脹運算就將Po的值置為1。從邏輯運算的角度來看,二值腐蝕相當于對Pi求與運算,二值膨脹相當于對Pi求或運算。若將它們作用于同一圖像,二值膨脹運算則等效于對圖像的背景進行二值腐蝕運算,因此它與二值腐蝕運算的效果剛好相反。
NlVision將上述的基本形態(tài)學處理算法封裝在IMAQ Morphology和IMAQ GrayMorphology中,前者用于二值圖像,后者用于灰度圖像。它們位于LabVIEW的視覺與運動→Image Processing→Morphology函數(shù)選板中,如下圖所示:
函數(shù)說明及使用可參見幫助手冊:
通過使用IMAQ Morphology對電路板圖像進行連續(xù)兩次腐蝕操作,濾除圖像中間部位斑點噪聲的實例,了解其使用方法,程序設計思路如下:
程序在為圖像處理分配內(nèi)存后,先對讀入的灰度圖像進行了自動閾值化處理,然后進入主循環(huán);
主循環(huán)監(jiān)測任何與形態(tài)學處理相關的參數(shù)變化,若用戶更改任一參數(shù),則分支結構中的IMAQ Morphology就會被執(zhí)行,并將形態(tài)學處理的結果顯示在圖像顯示控件中。
程序設計如下所示:
由于處理結果為二值圖像,因此應通過圖像顯示控件的右鍵菜單將其顯示調色板設置為Binary以獲取最佳顯示效果,如下所示:
項目資源下載請參見:LabVIEW電路板圖像腐蝕操作_labview圖像分割-其它文檔類資源-CSDN下載
3.2?顆粒的形態(tài)學處理
顆粒是指圖像中相互連通的一組非0或灰度較高的像素所構成的區(qū)域。判斷一個像素是否屬于某一顆粒,要看它是否與該顆粒之間具有連通性(Connectivity)。例如,填充區(qū)域中的孔洞、移除與圖像邊界粘連的區(qū)域、濾除不需要的區(qū)域、分離重疊區(qū)域、搜索區(qū)域中的凸殼(Convex Hull)等。經(jīng)過這些算法處理后的圖像更適于進行基于顆粒的定量分析、提取目標的簡易模型或進行目標識別。
數(shù)字圖像中與像素鄰接(Adjoining)的像素有8個,但是判斷鄰接的像素是否屬于同一顆粒,就要依據(jù)某種連通性判斷準則。
常見的連通性判斷準則有4連通(Connectivity-4)和8連通(Connectivity-8)兩種。
4連通準則認為,若像素在水平或垂直方向上與另一像素鄰接,則這兩像素屬于同一顆粒;
8連通準則的判斷條件則相對寬松,只要像素在水平、垂直或對角線方向上與另像素鄰接,則就認為它們屬于同一顆粒。
若像素與其水平或垂直方向上鄰接像素的距離為D,則4連通認為像素與距其為D的鄰接像素屬于同一顆粒,而8連通則認為距離像素為D或D的像素與其屬于同一顆粒。下圖顯示了4連通和8連通的結構,以及分別使用它們對同一圖像中的像素進行判斷時所得到的不同結果。
確定了連通性判斷準則,就可以將二值圖像中每個連通區(qū)域標記(Label)為能被獨立識別的顆粒,以方便圖像的分割和處理。
圖像標記過程搜索二值圖像中相互連通的各組像素(即顆粒),并將屬于同一顆粒的像素值全部更改為某一固定的標記值,將二值圖像的背景標記為0。考慮標記值等效于像素的灰度,可以使用8位或16位對標記值編碼,這樣就能直接將標記后的圖像作為8位或16位灰度圖像進行保存。
由此可知,圖像標記過程的輸入圖像為二值圖像,但其輸出卻是含有為每個顆粒都設置灰度標記值的灰度圖像。其中灰度標記值的數(shù)量等于圖像中顆粒的數(shù)量再加上用于背景的灰度標記值0。
圖像標記過程要解決的另一問題是根據(jù)連通性判斷準則尋找能快速確定各個獨立顆粒的搜索算法。NI Vision將圖像標記過程封裝在位于LabVIEW的視覺與運動→lmage Processing→Processing函數(shù)選板的IMAQ Label中,如下圖所示:
函數(shù)說明及使用可參見幫助手冊:
但是NI的相關文檔中并未說明該函數(shù)具體使用了何種搜索算法。圖像標記最為常見的搜索算法如下:
1、逐行掃描像素,找到第一個非0像素作為種子點,為其設置專門的標記值;
2、從種子點開始按照連通性判斷準則沿各個方向搜索與其連通的像素,并將其置為與種子點相同的標記值;
3、以各個連通的像素點為新的起點,沿各個方向搜索與其連通的未標記像素,并將其置為與起點相同的標記值。不斷重復該過程,直到所有分支上的像素都被標記為止;
4、重新掃描圖像中未被標記的點,將其作為種子點,重復步驟1到步驟3,直到所有像素均被標記為止。
雖然上述搜索算法比較直觀,但其效率并不高,因此近幾年涌現(xiàn)了大量的快速標記算法。例如,下述基于行程的標記方法就更快一些。
1、從第一行開始掃描圖像,把其中連續(xù)的由非0像素組成的序列組成一個塊,為其按遞增的順序設置標記值;
2、從第二行開始逐行掃描所有行里的塊。如果它與前一行中的所有塊都沒有連通,則給它一個新的標記值;如果它僅與上一行中一個塊連通,則將上一行的那個塊的標記值賦給它;如果它與上一行兩個以上的塊有連通,則將當前和塊及其相連的塊標號均設置為上一行中塊的最小標號;
3、重復步驟2,直到所有像素均被標記為止。
通過一個基于標記值從圖像中分割出面積最大的標記區(qū)域的實際例子,了解其使用,程序設計思路如下:
程序一開始先為源圖像和標記圖像分配緩沖,然后執(zhí)行對圖像進行標記的LabelGraylmg.vi,它會先使用IMAQ Threshold函數(shù)對輸入的灰度圖像進行閾值化處理;
用IMAQ Morphology對閾值化得到的二值圖像進行增強處理,然后再對二值圖像中的顆粒進行標記;
IMAQQuantify基于輸入的遮罩圖像對灰度區(qū)域進行統(tǒng)計,由于所分析的圖像和遮罩圖像均為LabelGraylmg.vi輸出的標記圖像,因此IMAQ Quantify輸出的針對各顆粒的區(qū)域報告數(shù)組(Region Reports)簇元素中,灰度均值Mean Value就應恰好為各顆粒的標記值;
MaxAreaIndex.vi基于Region Reports數(shù)組元素簇中的顆粒面積Area (Pixel)字段,尋找所有標記的顆粒中面積最大的一個,并返回其在數(shù)組中的索引;
使用該索引,就能從數(shù)組中得到面積最大的顆粒所用的標記值,而函數(shù)IMAQ LabelToROl就具備將一個或多個標記值(封裝在數(shù)組中)對應的顆粒轉換為ROl的能力。
程序設計如下所示:
效果如下所示:
項目資源下載請參見:LabVIEW從圖像中分割出面積最大的標記區(qū)域_labview圖像分割-其它文檔類資源-CSDN下載
4 圖像區(qū)域分割
區(qū)域分割是將圖像按照相似性準則分成不同區(qū)域的過程,主要包括:基于形態(tài)學的分水嶺分割法和區(qū)域生長、區(qū)域分裂合方法等。
分水嶺法是基于拓撲理論的數(shù)學形態(tài)學的分割方法。其基本思想是:把圖像中的顆粒看作測地學上的盆地,其中每一像素的灰度值表示該點的深度,每一個局部極小值及其影響區(qū)域稱為集水盆地(Catchment Basin),而集水盆地的邊界則形成分水嶺。下圖用一個簡單的圖像來說明分水嶺分割法的原理。它首先計算圖像的距離場,用像素到顆粒邊界的最近距離作為它們的標記值。其次,它將距離場看作地形圖,顆粒被看作盆地,而像素的標記值則被看作盆地各處的深度。若在距離場圖像中畫如圖(b)所示的直線,則可得到圖(e)所示的地形剖面圖。
分水嶺算法的實現(xiàn)可通過水淹過程來說明。假定水均勻地對盆地進行填充,則盆地中的最低點(離邊界較遠的點)首先被淹沒,然后水會逐漸填滿整個盆地。當水位到達一定高度的時候將會溢出,這時就可以在水溢出的地方劃出分水嶺。如果用顆粒的標記來模擬對盆地的填充過程,則重復上述過程直到整個圖像上的點全部被淹沒,這時所劃出的一系列分水嶺就可以將各個盆地分開,如圖 (d)所示。分水嶺算法對微弱的邊緣有著良好的響應,但圖像中的噪聲會使分水嶺算法產(chǎn)生過度分割的現(xiàn)象。
下圖對上述3種基于標記的分割過程進行了匯總。假定待分割的圖像為已經(jīng)過圖像增強過程處理后的灰度圖像,則先要對該圖像進行全局或局部閾值化處理,以獲得二值圖像。由于經(jīng)閾值化操作得到的二值圖像中常含有噪聲顆粒,而且感興趣的顆??赡芤呀?jīng)被損壞或者被圖像邊界切斷,因此在正式進行分割前,一般先要用形態(tài)學處理過程剔除噪聲顆粒,對感興趣的顆粒進行填充并剔除邊界顆粒。經(jīng)過這些修正操作后的二值圖像中的顆粒不僅能更真實地代表目標,而且更便于分割。
區(qū)域生長是一種古老的圖像分割方法,最早的區(qū)域生長圖像分割方法是由Levine等提出的,其基本思想是將具有相似性質的像素集合起來構成區(qū)域。該方法先從圖像中選定要分割目標內(nèi)的一個像素或小塊作為種子,再根據(jù)某種事先確定的準則,將鄰域中與種子區(qū)域具有相同或相似性質的像素或區(qū)域與種子區(qū)域合并,此后繼續(xù)將最新合并的像素或區(qū)域又作為新的種子繼續(xù)進行合并的過程,直到再沒有滿足條件的像素能被包括進來為止。這種方式的關鍵是基于灰度、紋理、顏色等信息,選擇合適的初始種子像素或區(qū)域和合理的生長準則。T.C.Pong等提出的基于小面(facet)模型的區(qū)域生長法是區(qū)域生長法的典型代表。
形態(tài)學重構(Morphological Reconstruction)可理解為一種有效的區(qū)域的生長方法。它基于源圖像和一個與源圖像大小相同且包含種子區(qū)域的標記圖像(Marker lmage),對灰度圖像或二值圖像中的目標進行重構,以實現(xiàn)圖像分割。在重構過程中,源圖像在功能上相當于遮罩,標記圖像用來對重構過程進行記錄。重構的起始位置由標記圖像中的種子區(qū)域或一組源圖像中的種子像素來確定。
通過實現(xiàn)分水嶺算法,來了解其使用方法,程序設計思路如下所示:
實例一開始先照例讀取圖像文件,為后續(xù)操作分配內(nèi)存,隨后進入主循環(huán);
若主循環(huán)中監(jiān)測的用戶界面參數(shù)控件有變化,則程序就按照這些參數(shù)執(zhí)行分支結構中的代碼;
其中IMAQ Threshold用于對圖像進行閾值化獲取細胞的二值圖像,IMAQRemoveParticle通過3次腐蝕運算來剔除噪聲,IMAQConvex Hill對顆粒進行填充,而IMAQ RejectBorder則用于剔除邊界顆粒;
經(jīng)過這些優(yōu)化處理后,二值圖像中的顆粒更接近真實的血紅細胞,且更便于后續(xù)對分支結構中代碼所實現(xiàn)的4種算法進行圖像分割。
程序設計如下所示:
效果如下所示:
項目資源下載請參見:LabVIEW圖像區(qū)域分割算法_labview圖像分割-其它文檔類資源-CSDN下載
圖像分割的質量直接決定機器能否快速準確地進行決策。當所采集的圖像質量較差、目標和背景的灰度差別不大或視場中被測目標有交疊時,需要使用圖像的形態(tài)學分割法和區(qū)域分割法來代替閾值分割法和邊緣分割法。圖像的數(shù)學形態(tài)學處理通常使用具有一定形態(tài)的結構元素與圖像進行形態(tài)學運算,并進而研究圖像各部分的關系,以解決噪聲抑制、特征提取、邊緣檢測、圖像分割、形狀識別、紋理分析、圖像恢復與重建、圖像壓縮等圖像處理問題。它既可作用于經(jīng)閾值化處理得到的二值圖像,也可用于處理灰度圖像?! ?/p>
評論
查看更多