如果需要了解其他圖像處理的文章,請移步小編的GitHub地址
傳送門:請點擊我
如果點擊有誤:https://github.com/LeBron-Jian/ComputerVisionPractice
VisionPro有很多的示例和算子,這裏再展示一個最新出的算子Bead Inspect Tool。估計理解這個算子需要有一定的基礎,但是使用的話其實到大可不必。我自己的筆記不會按照順序一一展示出來的,也許那個文章先OK,我會先release出來的。 其中大部分的圖片和步驟都是VisionPro的官方文檔,我這裏只是自己的學習筆記,不做任何商用。
首先,我會展示一下這個工具是幹什麼的,什麼場景使用。其次我會根據這個算子的使用步驟學習一下這個算子的原理。最後會展示一下VisionPro10.2版本這個算子的頁面。
1,示例:使用Bead Inspect Tool尋找缺陷
Bead inspect tool 允許你檢查任何長度和方向的統一路徑。經過訓練的bead inspect工具可以發現圖像中的缺陷。其中珠子存在間隙,過度填充或其他缺陷。你可以使用bead路徑的預期位置和外觀來訓練bead inspect tool,然後使用經過訓練的工具來定位運行時圖像中的缺陷。
比如:如下圖展示了一個檢查膠珠路徑的bead inspect tool。
上圖其實是在這個黑色的路徑裏面尋找缺陷,簡單的理解就是判斷這條路線的寬度,如果寬度超出設定的閾值,那麼就出來Ng了。這樣highlight出來就可以。而如果一些圖片不存在缺陷,則程序可以使用綠色突出顯示找到的珠子路徑,如下圖:
這樣說可能不是很好理解,我們將這個例子展開學習就方便理解了。下面學習一下Bead Inspect Tool的使用步驟。
2,bead inspect tool 使用步驟
爲了在視覺應用中使用 Bead Inspect 工具,VisionPro 在 QuickBuild 實用程序中提供了 BeadInspectTool 編程接口和 Bead Inspect Edit Control 圖形用戶界面。將 Bead Inspect 工具添加到您的視覺應用程序中需要執行以下步驟:
- 1,獲取訓練圖像,顯示您要在運行時圖像中分析的珠子的良好示例(給一個沒有缺陷的圖像,即Good圖像)。
- 2,讓工具找到路徑的大致位置、形狀和寬度。
- 3,手動細化珠路徑的報告位置,使其與訓練圖像中的實際路徑準確匹配。
- 4,使用您想要檢查的珠子路徑的準確位置來訓練工具。
- 5,選擇一組運行時參數,限制珠子路徑在連續圖像中可以顯示的變化量,但仍允許工具返回通過的結果。
使用一個Bead inspect Tool檢查珠子的路徑,並在圖像中查找珠子存在間隙,過度填充或者其他缺陷。VisionPro的QuickBuild提供了Bead Inspect工具編輯控件,用於訓練和測試Bead Inspect Tool。下面我會按照使用bead inspect tool的步驟講一下其使用流程。
2.1 找bead 路徑
在使用要在運行時圖像中檢查的特定珠子路徑的特徵來訓練bead inspect tool之前,該工具必須能夠準確找到示例圖像中的路徑。使用“訓練”選項卡在示例圖像中找到珠子路徑,然後訓練該工具在允許時圖像中找到它:
就是說,尋找的路徑就是我們要檢測的地方。
執行以下步驟來查找bead路徑。
step1:爲bead inspect tool 提供一個珠子路徑良好的圖片,並且將該圖像傳遞給工具的訓練圖像屬性。
step2:使用訓練圖像上的起始圓屬性來定義感興趣的珠子和查找珠子路徑的起始位置。
使用方法:找到並定義起始圓,使其僅包含被區別於背景像素的特徵包圍的珠子路徑。
調整開始的圓可以拉取圖像的大小,也可以手動優化,下圖是手動優化的界面(你可以調整圓心座標,也可以調整圓的半徑):
step3, 你可以讓該工具自動確定以下參數的最佳設置,或手動設置這些參數
如果使用這個工具,建議先使用自動調節,自己覺得不合適了,再手動優化。
下面是自動確定的參數值及其解釋:
- Bead width:要搜索珠子的預期寬度
- Contrast threshold:用於檢測珠邊緣的對比度閾值
- Dark Bead:表示珠子路徑由比背景像素更暗的像素組成
下面是手動確定的參數及其解釋:
step4,使用bead inspect tool 查找方法讓該工具檢測圖像中與珠子路徑相對應的特徵。
Bead inspect Tool 使用不同的搜索參數分析樣本圖像,並嘗試生成一個或多個粗略路徑,以準確跟蹤樣本圖像中的bead 路徑,根據圖像中的特徵,一些粗略路徑可以更準確地反映珠子路徑,而另一些則不能:
所以我們通過爲樣本選擇最佳粗略路徑,繼續訓練bead inspect tool的使用。這裏的粗略路徑就是我們後面要檢測缺陷的路徑。可以簡單的理解爲路徑上有過於窄,或者過於寬的地方就是存在缺陷的地方。但是對於Good的數據中肯定不存在。
2.2 編輯一條粗路徑
默認情況下使用find方法在示例圖像中查找珠子路徑後,珠子檢查工具會生成五個粗略珠子路徑的集合。如下圖所示:
通過查看集合我們可以確定哪個粗略路徑與示例圖像中的珠子最匹配。請注意,即使粗略路徑的最佳匹配也可能與某些區域中珠子路徑的實際位置有所不同。
下面我簡單對比兩條路線(我隨機選擇了第一條和第三條路徑):
當然上面區別也許不夠明顯,但是有些地方可能會找的不對,如下圖所示:
出現這種情況,Bead inspect tool允許修改粗珠子路徑,使其與示例圖像的實際路徑緊密匹配。因爲我們的目的就是檢測我們想要檢測的路徑,所以我們必須對其路徑修改,一般情況下,我們使用下面工具頁面來更改粗珠子路徑:
這是edit頁面,我們可以隨意拉動每個bead,也可以選擇合適的地方進行調整。
該界面使用點和線段來表示粗路徑:
該路徑具有靈活性,即可以打開也可以關閉,具體取決於示例圖像要檢測的東西,這也會影響路徑的編輯方式:
單擊點和線段以修改粗略路徑以遵循實際的珠子路徑:
- 1,單擊各個點並將其拖動到更好的位置。
- 2,如果要在光標位置插入新點,請右鍵單擊線段。
- 3,右鍵單擊現有點可根據需要將其刪除。 您無法刪除開放輪廓路徑上的第一個點和最後一個點。
- 4,選擇“打開閉合輪廓”可刪除閉合輪廓路徑上兩點之間的線段。
- 5,選擇“刪除之前的點”或“刪除之後的點”可刪除開放輪廓路徑上選定點之前或之後的所有點。
- 6,編輯後,確保粗略路徑儘可能遵循實際的珠子路徑:
點擊訓練按鈕,(一旦您獲得與示例圖像中的實際珠子路徑相匹配的粗略路徑,請單擊“訓練”。成功訓練後,Current.TrainImage 緩衝區會突出顯示該工具將在運行時圖像中使用的找到的珠子路徑:)
訓練選項卡支持以下參數,這些參數可以對工具用來定位珠子路徑的卡尺進行額外控制:
2.3 選擇運行參數
Bead Inspect 工具支持一組運行參數,這些參數允許運行時圖像中的 Bead 路徑的外觀發生變化,但仍允許工具返回通過結果。
例如,設置對比度閾值以設置檢測珠子邊緣所需的最小對比度。 珠子路徑像素低於此閾值的任何運行時圖像都會導致工具返回一個或多個缺陷。
這些參數的解釋如下:
2.4 遮蓋和填充邊緣
Bead inspect tool 允許忽略或修改bead路徑的不精確區域,否則可能導致錯誤缺陷。例如下圖突出顯示了應用程序在允許時映射中可以安全忽略的珠子路徑的一部分:
下圖顯示了訓練圖像,其中相應的點範圍已除於考慮被屏蔽:
使用Bead inspect編輯控件或 MaskList 屬性生成珠路徑上的點列表,這些點在搜索缺陷時會在運行時圖像中被忽略。
2.5 尋找缺陷
Bead 缺陷路徑通常屬於以下類別:
- 1,找不到路徑或者路徑包含間隙
- 2,與訓練圖像相比,路徑太窄或太寬
- 3,Bead inspect tool 無法準確確定給定位置的左邊緣或右邊緣
下圖說明了Bead inspect tool 可以檢測到的缺陷類型:
3,Bead inspect tool 界面介紹
3.1 Train頁面
這個頁面包含的參數我們上面都有介紹,主要通過這個頁面選擇自己要檢測的路徑,並且調整到合適的路線,最後通過設置bead的寬度和卡尺的距離然後訓練圖像。因爲我們要通過路徑上佈置的卡尺來比較測試圖像的路徑是否存在缺陷。
3.2 Run Params頁面
這個頁面是運行參數頁面,主要是通過訓練的圖像來驗證測試圖像是否OK,正如我之前所說的,通過訓練圖像佈置的卡尺來通過參數卡測試圖像的缺陷。
這裏除了設置常見的參數,還有兩個選項,之前未提到的。一個是Copy Suggested Run Parameters。另一個是Setting Mask and Fill Edge Ranges。
Copy Suggested Run Parameters
當您訓練 Bead Inspect 工具時,它會生成一組候選運行參數,以查找訓練圖像中的 Bead 路徑。 單擊複製建議的運行參數以選擇要在編輯控件中使用的建議運行參數:
Setting Mask and Fill Edge Ranges
單擊“編輯遮罩”或“填充邊緣”打開一個界面,允許您忽略或修改焊道路徑的不精確區域,否則可能會導致錯誤缺陷:
可以通過執行以下步驟來使用這個界面
1,選擇 Mask, Left Fill Edges, or Right Fill Edges 來選擇你想自己創建的那種區域
2,放大圖像並雙擊你想要在mask或者邊緣填充範圍內的卡尺結果。卡尺會導致珠子路徑外觀發生變化,具體取決於你創建的範圍類型:
該界面還提供了一個控件,可讓您指定該範圍的第一個和最後一個卡尺結果:
3,這個界面也提供了選項去創建或擦拭掉一些鏈接從想要得到的範圍內。
4,創建完所需範圍後,單擊確認選擇
5,在允許圖像上測試你的mask或者填充範圍,看看他們是否生成了預期的結果
3.3 Graphics
使用“圖形”選項卡可啓用或禁用 Current.TrainingImage 和 LastRun.InputImage 上的各種圖形:
這個頁面的參數主要是顯示的,可以開啓一些顯示,也可以關閉。
Find Features:在訓練圖像上啓用或禁用以下圖形:
Train Features: 啓用或禁用該工具將用於在運行時圖像中定位路徑的訓練路徑。
Results:在當前輸入圖像上啓用或禁用以下圖形:
3.4 Results
使用結果選項卡查看上一個運行時圖像中發現的任何缺陷:
總之,這個工具主要是應用於工業的特殊場景使用,必須保證測試圖像和訓練圖像在同一個光源下。而且是一些精確化的檢測,所以並不是那麼大衆的工具。