VisionPro學習筆記(3)——BeadInspectTool

2023-09-11 18:00:54

如果需要了解其他影象處理的文章,請移步小編的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。

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, 你可以讓該工具自動確定以下引數的最佳設定,或手動設定這些引數

  如果使用這個工具,建議先使用自動調節,自己覺得不合適了,再手動優化。

  下面是自動確定的引數值及其解釋:

step4,使用bead inspect tool 查詢方法讓該工具檢測影象中與珠子路徑相對應的特徵。

  Bead inspect Tool 使用不同的搜尋引數分析樣本影象,並嘗試生成一個或多個粗略路徑,以準確跟蹤樣本影象中的bead 路徑,根據影象中的特徵,一些粗略路徑可以更準確地反映珠子路徑,而另一些則不能:

  所以我們通過為樣本選擇最佳粗略路徑,繼續訓練bead inspect tool的使用。這裡的粗略路徑就是我們後面要檢測缺陷的路徑。可以簡單的理解為路徑上有過於窄,或者過於寬的地方就是存在缺陷的地方。但是對於Good的資料中肯定不存在。

2.2 編輯一條粗路徑

  預設情況下使用find方法在範例影象中查詢珠子路徑後,珠子檢查工具會生成五個粗略珠子路徑的集合。如下圖所示:

  通過檢視集合我們可以確定哪個粗略路徑與範例影象中的珠子最匹配。請注意,即使粗略路徑的最佳匹配也可能與某些區域中珠子路徑的實際位置有所不同。

  下面我簡單對比兩條路線(我隨機選擇了第一條和第三條路徑):

  當然上面區別也許不夠明顯,但是有些地方可能會找的不對,如下圖所示:

  出現這種情況,Bead inspect tool允許修改粗珠子路徑,使其與範例影象的實際路徑緊密匹配。因為我們的目的就是檢測我們想要檢測的路徑,所以我們必須對其路徑修改,一般情況下,我們使用下面工具頁面來更改粗珠子路徑:

  該介面使用點和線段來表示粗路徑:

  該路徑具有靈活性,即可以開啟也可以關閉,具體取決於範例影象要檢測的東西,這也會影響路徑的編輯方式:

單擊點和線段以修改粗略路徑以遵循實際的珠子路徑:

  • 1,單擊各個點並將其拖動到更好的位置。
  • 2,如果要在遊標位置插入新點,請右鍵單擊線段。
  • 3,右鍵單擊現有點可根據需要將其刪除。 您無法刪除開放輪廓路徑上的第一個點和最後一個點。
  • 4,選擇「開啟閉合輪廓」可刪除閉合輪廓路徑上兩點之間的線段。
  • 5,選擇「刪除之前的點」或「刪除之後的點」可刪除開放輪廓路徑上選定點之前或之後的所有點。
  • 6,編輯後,確保粗略路徑儘可能遵循實際的珠子路徑:

  點選訓練按鈕,(一旦您獲得與範例影象中的實際珠子路徑相匹配的粗略路徑,請單擊「訓練」。成功訓練後,Current.TrainImage 緩衝區會突出顯示該工具將在執行時影象中使用的找到的珠子路徑:)

2.3 選擇執行引數

  Bead Inspect 工具支援一組執行引數,這些引數允許執行時影象中的 Bead 路徑的外觀發生變化,但仍允許工具返回通過結果。

 

  例如,設定對比度閾值以設定檢測珠子邊緣所需的最小對比度。 珠子路徑畫素低於此閾值的任何執行時影象都會導致工具返回一個或多個缺陷。

  這些引數的解釋如下:

2.4 遮蓋和填充邊緣

  Bead inspect tool 允許忽略或修改bead路徑的不精確區域,否則可能導致錯誤缺陷。例如下圖突出顯示了應用程式在允許時對映中可以安全忽略的珠子路徑的一部分:

  下圖顯示了訓練影象,其中相應的點範圍已除於考慮被遮蔽:

  除了可以選擇工具可以完全忽略的珠路徑段之外,還可以選擇Bead Inspect Tool在這些限制的影象中建立左邊緣或右邊緣的段落,以及需要應用程式避免生成有關缺失的缺陷的段落,邊緣。下圖表示訓練影象中補償缺陷左邊緣的點:

  使用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

  使用結果索引標籤檢視上一個執行時影象中發現的任何缺陷: