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