這一節開始介紹如何進行灰度和彩色圖像的測量。可以基於圖像統計進行監測判斷,例如一個區域中的平均密度水平。 根據圖像統計特徵,可以在灰度或彩色圖像上完成許多機器視覺監測任務,例如監測成份的存在或缺失,監測部件的瑕疵,以及與參照物比較彩色成份。下面的圖說明了進行灰度或彩色圖像監測的基本步驟。
|
關注區(ROI)就是圖像中的一塊想要集中分析的區域。下圖表述了ROI工具及其使用方法。關注區可以 通過交互式方式、編程序的方式,或者是圖像遮罩來定義。
在畫ROI時,如果希望ROI儘可能保持水平、垂直或對角,則同時按下 <Shift>鍵 。選擇工具通過控制點或頂點定位ROI,意思是說光標的動作依據所交互的ROI不同而不同。 例如,如果鼠標在矩形的邊上移動,光標變爲提示可以點擊或拖拽這條邊以調整矩形的大小。如果要在一個圖像顯示環境中畫多個ROI,那麼按下<Ctrl>鍵 ,就可以畫出其他的ROI。
交互式定義區域
有三種方式利用ROI工具交互式定義ROI:通過圖像顯示控件,在一個分立的浮動窗口中,或者作爲ROI構建窗口的一部分。
要在圖像顯示控件中定義ROI,從工具模板中選擇一個ROI工具 。
可以通過配置決定在控件中顯示哪些工具。以下步驟用於在設計時配置ROI工具模板:
1. 右擊ROI工具模板,並選擇 Visible Items?ROI Tool Button Visibility。
2. 選除不希望在ROI工具模板中出現的工具。如果不想出現任何工具,點擊All Hidden。
3. 點擊OK 完成修改。
要在程序中讀取或設置ROI,應適用圖像顯示控件中的屬性節點。
在外部窗口中定義ROI
下面的列表介紹如何在外部窗口顯示和處理工具模板。在Vision Utilities?Region of Interest 模板中可以找到所有下面的模塊。
- IMAQ WindToolsShow 模塊用於在外部浮動窗口中顯示工具窗口。
- IMAQ WindToolsSetup 用於配置工具窗口的外觀。
- IMAQ WindToolsMove 用於移動工具模板
- IMAQ WindToolsClose用於關閉工具模板
說明 如果想在外部窗口畫一個ROI又不想顯示工具模板, 適用IMAQ WindToolsSelect 模塊。該模塊可以從工具模板中選擇一個外形而不打開模板。
使用ROI構造器定義ROI
IMAQ ConstructROI 能將LabVIEW的建模窗口合併到應用程序中,以便選擇ROI。這個建模窗口叫做ROI構造器,它會停止運行應用程序直到用戶選擇了一個ROI,或則在點擊了Cancel退出外部窗口。由於可以節省編寫相似代碼的工作,所以ROI構造器很方便。如果需要 定製ROI構造器以提供比IMAQ ConstructROI更多的功能, 可以適用圖像顯示控件或外部顯示窗口實現自己的ROI構造器。
在ROI構造器窗口中啓動ROI構造器並定義一個ROI的完整步驟如下:
1. 適用MAQ ConstructROI 模塊在ROI構造器窗口中顯示圖像和工具模板。如下圖所示:
1) 從工具模板中選擇一個ROI工具。
2) 在圖像上畫一個ROI。調整大小和位置直到其指明的區域滿足期望。
3) 點擊OK 輸出一個選擇區域的描述符。可以將ROI的描述符輸入給許多分析和處理函數。也可以將ROI描述符轉換成用於在圖像中處理選擇區域的圖像遮罩。使用IMAQ ROIToMask 模塊將ROI描述符轉換爲圖像遮罩。
還可以利用IMAQ Select Rectangle, IMAQ Select Point, IMAQ Select Line, 以及 IMAQ Select Annulus 定義關注區。完整的使用步驟如下:
1. 調用上述模塊在ROI構造器窗口顯示圖像。 只能使用函數制定工具。
2. 從工具模板中選擇一個ROI工具。
3. 在圖像上畫一個ROI。調整ROI的大小和位置直到覆蓋了需要處理的區域。
4. 點擊OK 輸出一個ROI的簡單描述。可以使用這個描述作爲測量灰度密度模塊的輸入:
- IMAQ Light Meter (Point)—利用IMAQ的輸出選擇點。
- IMAQ Light Meter (Line)—利用IMAQ的輸出選擇線
- IMAQ Light Meter (Rectangle)—利用IMAQ的輸出選擇矩形
下圖所顯示的工具模板是外部顯示窗口和ROI構造器的一部分。當在顯示窗口或ROI構造器中處理一個區域工具時,工具模板自動從左面的模板轉換到右面的模板。右面的模板顯示所畫的ROI的特徵。
1 像素密度 |
4 ROI的錨點座標 |
2 圖像類型指示 (8-bit, Signed 16-bit, Unsigned 16-bit, Float, Complex, 32-bit RGB, HSL, 64-bit RGB) |
5 活動ROI的大小 |
3 當前活動圖像窗口上鼠標的座標 |
6 線區域的長度和水平夾角 |
在自動化應用程序中,可能需要通過編程定義ROI。可以採用兩種方式編程定義區域:
- 指定ROI描述符的元素,其元素描述如下:
- - Global rectangle(通用矩形)—四個描述矩形邊緣的整數包含ROI描述符中的所有形狀。
- - Contours(輪廓線)—每個形狀都是定義一個ROI,如下所示:
- ID(標識)—如果輪廓是ROI的外沿或內沿,則給出。如果輪廓是外沿,則包含在其中的所有區域都被認作ROI的一部份。由於外輪廓首先計算,內輪廓覆蓋外輪廓,提供了在外輪廓內部派出區域的能力。
- Type(類型)—輪廓的形狀類型。
- Coordinates(座標)—一個包含定義輪廓的座標數組。
- 通過提供 表述所要定義的區域的基本參數指定區域。例如,通過提供x座標和y座標定義一個點。提供起點和終點定義一條線。提供左上角和右下角座標以及旋轉角度定義一個矩形。
關注區轉換程序可以將簡單的數據類型,如點,線,矩形,以及環形,轉換成ROI描述符。使用下列模塊可以將使用簡單描述編碼表示的ROI轉換成對應的ROI描述符:
- IMAQ Convert Point to ROI—轉換由x-和y-座標所表示的點。
- IMAQ Convert Line to ROI—轉換由起點和終點所表示的線。
- IMAQ Convert Rectangle to ROI—轉換由左上角,右下角以及轉角所表示的矩形。
- IMAQ Convert Annulus to ROI—轉換由中心點,內外弧,和起止角表示的環。
- IMAQ Convert Rectangle to ROI (Polygon)—將左上角,右下角以及轉角所表示的矩形轉換爲一個代表矩形的多邊形ROI描述符。
使用下列模塊可以將ROI描述符所表示的ROI輪廓轉換成輪廓的簡單描述:
- IMAQ Convert ROI to Point—輸出又x-和y-座標代表的點。
- IMAQ Convert ROI to Line—輸出由起點和終點代表的線。
- IMAQ Convert ROI to Rectangle—輸出由左上角,右下角和轉角所代表的矩形。
- IMAQ Convert ROI to Annulus—輸出由中心點,內外弧,和起止角所表示的環。
可以使用圖像遮罩定義處理區域。圖像遮罩是一個與要處理圖像相同或小於大小的8-Bit圖像。圖像遮罩中的像素決定所處理的圖像中所對應的像素是否被處理。如果圖像遮罩中像素是一個不爲0的值,那麼所處理圖像中對應的像素進行處理。如果圖像遮罩中的像素值爲0,所處理的圖像中地對應像素保持不變。
圖像遮罩用於對圖像進行顆粒上的密度測量。首先,將圖像分割成一個新的二值圖像。可以將二值圖像或符號版的二值圖像輸入給密度測量函數。如果需要進行彩色比較,使用IMAQ MaskToROI將二值圖像轉換成ROI描述符。
測量灰度統計數據
利用測光表或定量分析函數可以測量灰度統計數據。使用重心函數可以獲得圖像的能量中心。
IMAQ Light Meter (Point)模塊用於測量圖像中一個點的量度。IMAQ Light Meter (Line) 用於得到圖像中沿着一條線的像素值統計數據:平均密度,標準差,最小密度,以及最大密度。IMAQ Light Meter (Rectangle)模塊用於獲得圖像中一個矩形內的像素值統計數據。
IMAQ Quantify 模塊用於獲得整個圖像或圖像中獨立區域內部區域的附屬統計信息:平均密度,標準差,最小密度,最大密度,面積,以及所分析圖像的百分比。可以用一符號圖像遮罩指定圖像中的區域。符號圖像遮罩是一個已處理過的二值圖像,其遮罩中的每個區域都有唯一的密度值。利用IMAQ Label 模塊爲圖像遮罩標號。
IMAQ Centroid 模塊用於計算圖像或圖像中一個區域的能量重心。
測量彩色統計數據
許多圖像處理和分析函數適用於8-bit 和16-bit 圖像。然而也可以分析和處理彩色圖像的單獨成份。
使用IMAQ ExtractColorPlanes模塊,可以見彩色圖像拆分成原始成份的各種集合,例如RGB (紅,綠,和藍), HSI (色調, 飽和度,和明暗度), HSL (色調, 飽和度,和流明度), 或 HSV (色調, 飽和度,和值)。每個成份都成爲一個 8-bit 或 16-bit 的圖像,可以向任何灰度圖像一樣處理。適用IMAQ ReplaceColorPlane 模塊,可以將三個8-bit 或 16-bit 的圖像集合重新裝配成一個彩色圖像,這時每一個圖像就成爲三個原始成份之一。 下圖演示瞭如何將32-bit 和 64-bit 彩色圖像拆分成它們的三個原始成份。
IMAQ ExtractSingleColorPlane 或 IMAQ ExtractColorPlanes 模塊用於將彩色圖像的紅,綠,藍,色調,飽和度,強度,流明,或彩色圖像的值平面提取爲一個8-bit圖像。
使用IMAQ IntegerToColorValue 模塊可以將一個採用32-bit整數編碼的彩色像素分解成單獨的成份。使用IMAQ RGBToColor 2可以RGB成份表示的像素值轉換成其他色彩模型。使用IMAQ ColorToRGB 可以將其他彩色模式的成份轉換成RGB。
比較色彩
利用NI Vision的色彩匹配能力可以比較或估計圖像或圖像區域中色彩的內容。使用色彩匹配進行比較色彩的完整步驟如下:
1. 選擇一個包含彩色信息的參考圖像。彩色信息可以由多種色彩構成。
2. 使用整個圖像或圖像中的一個區域通過IMAQ ColorLearn模塊學習色彩信息,輸出的色譜包含學習到的色彩信息的簡潔描述。更多內容詳見NI 視覺概念手冊,第15章,色彩檢查。這個色譜代表學習到的色彩信息用於所有匹配運算的子過程。
3. 定義一個圖像或圖像中的多個區域作爲檢測或比較的區域。
4. 使用IMAQ ColorMatch 模塊將學到的色彩信息與檢測區域的色彩信息進行比較。該模塊返回一個分值表示匹配的緊密度。可以指定一個最小匹配值, 表示輸入色彩信息和圖像中每個指定區域是否存在匹配。
5. 使用色彩匹配分值作爲參考色彩信息與被比較的圖像區域色彩信息相似度的度量值。
學習色彩信息
在學習色彩信息的時候,需要仔細選擇一個圖像或圖像中的一個區域,其中包含了想要學習的色彩信息,選擇所要學習的色彩信息的詳細程度, 選擇那些色彩在處理期間要忽略。
指定要學習的色彩信息
由於色彩匹配僅僅使用色彩信息來測量相似度,圖像或圖像區域代表的物體應該僅包含代表物體的有意義的顏色,如下圖A B所示,B 是不合適的,其中包含了背景顏色。
下面的部分介紹什麼時候學習整個圖像、圖像中一個區域或多個區域中的色彩信息。
使用整個圖像
可以使用整個圖像來學習代表圖像整體色彩分佈的色譜。例如在紡織品鑑定的應用中,整個圖像可以代表與特定紡織品類型的色彩信息,如下圖所示。
使用圖像中的一個區域
可以使用圖像中的一個區域提供用於比較的色彩信息。區域有助於提取圖像中的有用色彩信息。下圖是一個使用包含應用中有重要色彩信息的區域的例子。
使用圖像中的多個區域
光的相互作用在物體表面形成物體的可見顏色。表面顏色取決於光照的方向以及觀察的方向。兩個完全相同的物體由於位置的不同或光照條件的不同可能有不同的外觀。
下圖說明了光線在保險絲的3維表面的不同反射,所導致的同樣的保險絲 稍微不同的色彩。對比一下上面一排和下面一排的3安保險絲可以發現,不同的光線反射導致相同的保險絲的不同色譜。
如果畫一個上排中3安保險絲的關注區來學習色譜,然後對上排的3安保險絲進行色彩匹配,會得到接近1000的非常高的匹配分值。 然而,對於下排的3安保險絲的匹配分值將低到500附近。這一問題會導致保險絲盒檢測程序的色彩不匹配。
NI Vision的色彩學習算法使用一種聚集處理從圖像中的一個或多個區域 中找到樣板顏色。在學習階段要爲所有3安保險絲建立樣板色譜,首先在上排的3安保險絲周圍畫一個ROI,按住<Ctrl>鍵,再下排3安保險絲周圍畫另外一個ROI。新的3安保險絲樣板色譜會更好,導致更高的匹配分值,兩個保險絲的匹配分值接近800。可以使用任意多個樣本來學習樣板色譜來制定模板。
選擇色彩樣板靈敏度
在學習色彩時,需要爲指定的色彩信息指定敏感度。圖像很少能利用較低的靈敏度就可以在彩色顆粒上很好的分割開,更多的是那種顏色彩色顆粒是緊挨着的圖像。使用IMAQ ColorLearn 模塊的Color Sensitivity 控件可以指定用於表示顏色的粒度。
忽略學習的顏色
將輸入色譜矩陣的對應成份用-1替換,可在色彩匹配中忽略某些色彩成份。例如,用-1替換色譜中最後的成份,白色就會在色彩匹配處理時被忽略。用色譜中最後的成份替換第二個,黑色就會在色彩匹配處理時被忽略。
要忽略色彩匹配中的其他色彩成分,找到色譜在應顏色盤的分桶中對應的索引,每個桶對應色譜矩陣中的一個成份。忽略某些色彩,如背景色,導致更精確的色彩匹配值。忽略背景色也提高了色彩匹配處理中定義關注區時的靈活性。忽略某些色彩,例如金屬表面閃光所形成的白色,還可以改善色彩匹配的精度。應試驗從圖像的不同部分學習彩色信息,以決定忽略那些顏色。關於顏色盤和色桶的更多信息,參見NI 視覺手冊,第15章,色彩檢測。
本文出自 51CTO.COM技術博客