天天看點

LabVIEW紋理分析(基礎篇—9)

紋理(Texture)是物體表面固有的特征之一。目前對于紋理尚無正式的定義,但一般認為它是由許多互相連接配接且常周期性重複的單元構成。與灰階特征不同,紋理不是基于單個像素點的特征,它通常與圖像的尺度關系密切,且具有區域性和統計特征。

通常來說,在放大後的圖像上可以觀察到目标表面的紋理。而且一般來說,紋理特征需要在包含多個像素點的圖像區域中進行灰階統計才能獲得。紋理特征的這種區域性可使特征比對過程不會因局部的偏差而失敗。是以通過紋理分析,可對物體表面尺寸和形狀的變化進行檢測,如劃痕(Scratch)、裂紋(Crack)和污漬(Stain)等。

紋理分析常用于對具有不規則紋理圖案的目标表面進行檢測,如瓷磚、紡織品、木材、紙張、塑膠或玻璃的表面等。

多數基于紋理分析的機器視覺應用使用紋理分類器(Texture Classifier)進行檢測。紋理分類器可通過對無缺陷的标準樣本目标進行學習獲得,其中包含樣本的紋理特征資訊。檢測時,算法會将被測目标中的紋理特征與紋理分類器中的特征資訊進行比對,并将不能接受的區域辨別為缺陷。

通常來說,紋理分析過程會以目标的表面圖像為輸入,并以二進制大顆粒(Binary Large OBjects,BLOB)的形式輸出檢測結果。獲得缺陷部分的BLOB後,可以進一步使用顆粒分析工具對其屬性、尺寸等進行分析。

适用性強的紋理分析檢測過程不僅應對于噪聲有較強的抵抗能力,還應具有平移不變(Shift-Invariant)、旋轉不變(Rotate-Invariant)和尺度不變(Scale-Invariant)的性質。也就是說,相較于紋理分類器中的紋理特征而言,即使被測目标中的紋理特征垂直或水準移動,在平面内旋轉或有一定比例的縮放,紋理分析檢測過程仍能繼續正确地識别它們。一般的紋理檢測過程都具有平移不變的性質,且能支援±5°的旋轉和±10°的縮放。

若要支援更大範圍的旋轉不變和尺度不變性,則要通過學習和訓練過程,建立包含各個方向和比例紋理特征資訊的紋理分類器。此外,還應注意在紋理比對過程的執行速度與旋轉不變和尺度不變性範圍之間進行平衡。

LabVIEW紋理分析(基礎篇—9)

由于紋理特征與圖像的尺度、區域及灰階統計資料具有密切聯系,是以NI Vision使用離散小波變換和統計的方法來提取紋理特征并對其進行分類檢測。一般的紋理檢測過程如下圖所示,主要包括以下步驟:

LabVIEW紋理分析(基礎篇—9)

Nl Vision使用位于LabVIEW的視覺與運動→lmage Processing→Texture函數選闆中的VI對上述過程進行封裝,如下圖所示:

LabVIEW紋理分析(基礎篇—9)

函數說明及使用可參見幫助手冊:

LabVIEW紋理分析(基礎篇—9)

其中:

IMAQ Extract Wavelet Bands可執行小波變換從紋理圖像中提取各種子帶圖像;

IMAQ Cooccurrence Matrix能計算圖像的共生矩陣和Haralick特征;

IMAQ Extract Texture Feature對子帶提取、共生矩陣計算和Haralick特征提取與連接配接進行了內建,可直接傳回計算得到的紋理特征;

IMAQDetect Texture Defect不僅內建了整個紋理特征的提取過程,還內建了按照紋理分類器對紋理進行分類的過程,它能以二值圖像輸出檢測到的紋理缺陷。

通過一個牆壁紋理或缺陷檢測的執行個體,了解紋理分析的實作方法,程式設計思路如下所示:

程式一開始先由IMAQ Read ClassifierFile從分類器檔案Texture.clf中讀取事先訓練好的紋理特征資訊,并為後續處理配置設定記憶體;

循環結構中的代碼,逐一從檔案夾中取出被測圖像,在用清除無損圖層後,由IMAQ Detect Texture Defect根據分類器對紋理進行分類;

Nl Vision分類過程使用範圍為0~1000的識别得分(ldentification Score)來判别被測特征與某一類别的相似程度,當紋理與合格的特征資訊差别越大時,說明其越接近缺陷;

由此,程式中設定了最小缺陷分類識别得分為200,分類時任何得分等于或大于該門檻值的像素均被識别為紋理缺陷。

程式設計如下所示:

LabVIEW紋理分析(基礎篇—9)

通過運作程式,效果如下所示:

LabVIEW紋理分析(基礎篇—9)

繼續閱讀