天天看點

LabVIEW色彩分類識别(基礎篇—15)

色彩分類(Color Classification)用于根據樣本的顔色資訊對其進行分類識别。與單色目标的分類識别類似,色彩分類過程也包括訓練和分類兩個階段。

訓練階段主要用來基于各種彩色樣本建立分類器。它從每個參與訓練的樣本中提取色彩特征,并将該特征與類标簽進行關聯以備後用。

分類階段則主要用于從待分類圖像中提取顔色特征,并參照分類器資訊對其分類。分類的方法可采用最鄰近法、K-鄰近法、最小平均距離法或支援向量機分類法。

色彩分類的特征提取過程并不直接使用色譜,而是基于HSL空間建構分辨率可選的(高、中、低3擋)的一維色彩特征向量。它先将彩色樣本圖像轉換到HSL色彩空間,然後計算彩色樣本的色調、飽和度和亮度分量的直方圖。對于每個由單位元組表示的顔色分量直方圖,保留色調和飽和度分量直方圖中的256個值對應的資訊,但是隻保留亮度分量直方圖中8個亮度值相關的資訊。通過這種對亮度分量直方圖的抑制,色彩特征向量中的顔色資訊會更突出,亮度資訊會被抑制在8種灰階之内。将包含256個色調資訊和256個飽和度資訊的兩個直方圖,與包含8個亮度資訊的直方圖進行組合,即可得到高分辨率的色彩特征向量。

中分辨率和低分辨率色彩特征向量是通過先提取高分辨率色彩特征向量,然後再對其應用動态遮罩(Dynamic Mask)獲得的。動态遮罩基于參與訓練的樣本建立,用于從高分辨率色彩特征向量中選出最能代表某個類的色調和飽和度直方圖資訊。在對于每個新添加的彩色樣本學習時,動态遮罩通過下述過程被建立或更新:

對于每個類,基于其中每個樣本的色調和飽和度的直方圖,計算該類的平均色調和飽和度直方圖。

基于所有類的平均色調和飽和度直方圖的均值直方圖,計算各類的平均色調和飽和度直方圖上元素值的标準差。

從類平均色調和飽和度直方圖元素值中依次選出128個标準偏差最高的值對應的位置作為遮罩,用于生成中分辨率色彩特征向量。或者依次選出64個标準偏差最高的值對應的位置作為遮罩,用于生成低分辨率色彩特征向量。

掃描各類的動态遮罩位置對應的值,確定其中至少包含一個最大色調和一個最大飽和度直方圖值。

Nl Vision提供了兩種色彩訓練方法,一是使用NI色彩分類訓練器離線完成色彩訓練(位于:National Instruments\Vision\Utility\Color Classification Training Interface\Color Classification Training.exe),二是使用程式代碼在運作時完成色彩訓練。

NI色彩分類訓練器可以在進行色彩分類之前,先從多個采集到的彩色樣本圖像中提取高分辨率的色彩特征,并将該特征與類标簽進行關聯。若選擇了中分辨率或低分辨率,則訓練過程還會對高分辨率的色彩特征施加動态遮罩過程,獲得相應分辨率的色彩特征向量。随後,訓練過程會将樣本的特征向量、樣本分類方法連同各個類的動态遮罩等資訊一并儲存在字尾名為clf的色彩分類器檔案中。這樣在後續色彩分類過程中,就可從該檔案中讀取這些資訊,對彩色目标進行識别和分類。

下圖顯示了使用NI色彩分類訓練器為洗手液分類系統訓練色彩樣本時的程式界面。使用該工具可以打開收集到的彩色洗手液樣本圖像,從中選擇藍色、綠色或白色的瓶蓋分别作為類樣本進行訓練。訓練過程中,可對樣本進行編輯或删除,訓練完成後得到的樣本色彩特征可儲存在clf檔案中以備後用。

LabVIEW色彩分類識别(基礎篇—15)

Nl Vision還提供了對彩色樣本圖像進行訓練和分類的函數。它們位于LabVIEW的視覺與運動→Machine Vision→Machine Learning→Classification函數選闆中,如下圖所示:

LabVIEW色彩分類識别(基礎篇—15)

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

LabVIEW色彩分類識别(基礎篇—15)

通過使用NI Vision色彩分類函數對洗手液進行分類的執行個體,了解色彩分類的使用,程式設計思路如下所示:

程式先用IMAQ Read Classifier File從NI色彩分類訓練器建立的色彩分類器檔案Soap.clf中讀取學習到的樣本特征等資訊;

随後While循環中的代碼逐一取出待測圖像檔案夾中的圖像,由IMAQ Classify或IMAQClassify Color Advanced對指定ROI區域的圖像色彩進行分類,傳回其類别歸屬及分類和識别分值等資訊。IMAQ Overlay Text可以在圖像上以無損圖層的方式添加待測圖像的類名;

當使用者單擊STOP按鈕退出While循環後,程式會丢棄會話,釋放記憶體,然後退出程式。

程式實作如下所示:

LabVIEW色彩分類識别(基礎篇—15)

運作程式,顯示了分類程式檢測到綠色洗手液瓶子時的情況:

LabVIEW色彩分類識别(基礎篇—15)

繼續閱讀