VisionPro學習筆記(4)——PatInspect

1:使用PatInspect查找缺陷的原理

   例如,下圖顯示訓練圖案、輸入圖像的區域以及由 PatInspect 工具生成的輸出圖像:

1.1 訓練圖案

  PatInspect 工具將運行時圖像的一個區域與訓練圖案進行比較,以定位潛在的缺陷。

  在使用 PatInspect 工具分析運行時圖像之前,必須首先創建訓練圖案,該圖案與其他配置參數一起存儲。

  使用統計訓練方法,您可以使用要通過視覺應用程序檢查的對象的實際圖像來創建訓練圖案。從多個圖像創建訓練圖案允許您構建這樣的訓練圖案:即可以補償被檢查對象的背景內和反射的運行時圖像中允許的照明變化。圖像可以存儲在圖像數據庫文件中,也可以從生產環境中採集實時圖像。在任何一種情況下,用於創建訓練圖案的訓練圖像必須與您期望在視覺應用程序運行時採集的圖像非常相似,包括背景、照明和對象放置。此外,圖像必須沒有缺陷,以便它們生成訓練有圖案,代表您的視覺應用程序將檢查的對象的理想示例。

  爲了創建訓練圖案,PatInspect 工具接受訓練圖像並將其平均處理爲當前訓練圖案(如果存在),使用下圖所示的公式:

  儘管可以從單個訓練圖像創建訓練圖案,但使用多個圖像構建的訓練圖案可以補償運行時圖像中允許的光照變化和對象放置的微小變化。只有當您的生產環境可以保證光源一致並且被檢查對象的外觀永遠不會發生允許的變化時,才應該從單個圖像生成訓練圖案。

  可用於創建訓練圖案的圖像數量沒有上限,儘管隨着您添加的每個圖像,圖案的變化會越來越小。

 

1.2 標準偏差圖像

  使用訓練圖案 PatInspect 工具生成標準偏差圖像,其中每個像素是統計訓練圖像中像素值標準偏差的度量。標準偏差圖像是訓練圖案中每個像素的預期可變性程度的指示。

  PatInspect 工具使用下圖所示的公式生成標準偏差圖像:

  如果您使用單個輸入圖像創建訓練圖案,則 PatInspect 工具使用 Sobel 邊緣工具(後面會單獨講Soble工具)生成僞標準偏差圖像,其中較亮的像素表示特徵之間的預期邊界。例如,下圖是一個訓練圖案及其生成的僞標準差圖像:

  使用該工具支持的縮放和偏移係數值,您可以更改僞標準偏差圖像中的信息。增加縮放係數會增加圖像邊緣的大小,而增加偏移係數會增加圖像的整體亮度。如果 PatInspect 工具一直報告運行時圖像的輪廓或邊框存在錯誤缺陷,請嘗試調整 Sobel 係數值。

  如果使用統計訓練方法創建訓練圖案,則更改 Sobel 係數值不會產生任何效果。

 

1.3 閾值圖像

  對於用於創建訓練圖案的每個輸入圖像,PatInspect 工具會重新計算標準偏差圖像,然後使用當前標準偏差圖像生成閾值圖像。下圖是一個訓練圖案及其生成的閾值圖像:

  PatInspect 工具使用下圖所示的公式生成閾值圖像:

  其中 AB 分別代表縮放係數和偏移係數。增加閾值縮放會增加邊緣信息的對比度,而增加閾值偏移會增加整體亮度。如果 PatInspect 工具在運行時圖像的大面積上始終報告錯誤缺陷,請嘗試調整閾值係數值。

  PatInspect 工具使用閾值圖像來確定是否應將運行時圖像中的任何像素視爲缺陷像素。

1.4 圖像歸一化

  PatInspect 工具對光照變化非常敏感。即使環境光水平的微小變化也會導致工具將運行時圖像中的較亮或較暗像素視爲缺陷。爲了補償不同的光照水平,該工具可以在分析差異之前對運行時圖像執行圖像歸一化操作。圖像歸一化可以將非缺陷像素的值降低或提高到與存儲在訓練圖案中的相同水平。

  在配置 PatInspect 工具時,您必須選擇以下圖像歸一化類型之一:

1.5 PatInspect 分析

  爲了分析運行時圖像,該工具首先計算匹配圖像,這是該工具將與訓練圖案進行比較的運行時部分。匹配圖像由您選擇的訓練區域的形狀確定。

  接下來,該工具對匹配圖像進行圖像歸一化操作,然後生成原始差異圖像(如下圖所示),作爲訓練圖案與匹配圖像之間的絕對差異:

  您可以將此閾值差異圖像傳遞給其他視覺工具,如斑點工具或直方圖工具,以生成有關運行時圖像中存在的缺陷數量和類型的更多信息。

1.6 用於對齊的PMAlign 工具

  在許多視覺應用中,被檢查對象的位置可能會在一次檢測之間發生位置、旋轉或縮放變化。如果姿勢(當訓練圖案與運行時圖像進行比較時對象如何映射的描述)隨着每次檢查而變化,該工具可以輕鬆檢查圖像的錯誤區域並返回許多錯誤結果。

  在執行分析和生成結果之前,PatInspect 工具無法執行任何類型的區域對齊。爲了確保 PatInspect 工具將區域放置在每次檢查的運行時圖像的正確區域中,另一個視覺工具必須首先定位對象並將其姿勢報告給 PatInspect 工具。PMAlign 工具非常適合此任務,Cognex 建議您在使用 PatInspect 工具之前使用帶有 PatMax 算法的 PMAlign 工具來定位對象。PMAlign 工具的姿勢可以直接傳遞到 PatInspect 工具,確保 PatInspect 工具爲每次檢查分析正確的圖像區域。

  此外,也可以使用固定工具,將姿勢信息從 PMAlign 工具傳遞到固定工具的固定參數,然後使用固定工具生成的輸出圖像作爲 PatInspect 工具的輸入圖像。

  無論是單獨使用 PMAlign 工具還是將 PMAlign 工具與固定工具組合使用,都必須確保 PMAlign 原點與 PatInspect 原點保持同步。否則,在執行統計培訓或檢查時,PatInspect 工具將無法正確放置其區域。

1.7 插值模式

  PatInspect 工具支持兩種插值模式:雙線性和兼容性。默認情況下,該工具使用雙線性模式,適用於大多數應用程序。此外,您必須使用選擇雙線性模式來利用多核 PC。非默認模式兼容性可用於使用 PatInspect 工具的舊應用程序。

 

2:PatInspect的官方示例程序

  PatInspect 工具將輸入圖像區域內包含的特徵與訓練模式中存儲的特徵進行比較,並生成突出顯示它們之間差異的輸出圖像。 輸出圖像突出顯示輸入圖像中的潛在缺陷 - 缺失或未對齊的特徵、物體上的錯誤或不需要的標記或顏色錯誤的表面。

  例如,下圖顯示了經過訓練的模式、輸入圖像的區域以及 PatInspect 工具生成的輸出圖像:

  由於許多視覺應用程序都具有受檢查對象的特徵,其中感興趣的特徵可能會從一幅圖像更改爲另一幅圖像的位置,因此此示例應用程序從 PMAlign 工具開始,以定位可靠的特徵,並使用結果生成固定的座標空間來定位 PatInspect 工具 。 有關將視覺工具放置在固定座標空間上的好處,請參閱創建固定座標空間主題。

   所以下面在VisionPro的官方QuickBuild裏面建立一個完整的示例來學習一下Pat Inspect Tool。以下過程創建一個應用程序,該應用程序使用 PMAlign 工具在 PatInspect 工具分析之前報告對象的姿勢。

step1:啓動 QuickBuild 並配置新應用程序以從連接的相機或圖像數據庫獲取圖像

   此示例應用程序使用工具包的圖像數據庫以及從生產環境捕獲的示例圖像。

  關於獲取圖像,我這裏再囉嗦一下,常見的獲取圖像有兩種方法:1,直接使用攝像頭在生產環境中獲取圖像;2,使用採集好的數據圖庫。 當然,無論哪種方式都取決於你的需求。

  下圖是QuickBuild獲取到的圖像展示:

step2:創建一個ToolBlock,添加PMAlign工具並將ToolBlock的輸入圖像連接到PMAlign工具的InputImage

  我們需要運行 ToolBlock,將圖像數據庫中的第一個圖像傳遞給 PMAlign 工具(PMAlign工具是用來做定位的工具,這個我們後面會介紹,也是VisionPro中不可缺少的一個常用工具)。

  如下圖所示,我們添加了PMAlign工具和Inputs的輸入圖像連接,一般情況下,當運行報錯(即顯示紅色),要麼是加載的圖像有問題,要麼就是工具需要的是灰度圖,而我們導入了RGB圖像,要麼就是工具需要的是RGB圖像,我們導入了灰度圖(解決方法也很簡單,圖像有問題,更換圖像即可;後面兩種情況,我們只需要接入ImageConvertTool,這個工具前面博客已經介紹了)。

step3:循環瀏覽圖像數據庫,直到找到代表工具包的圖像,並且所有組件都位於所需位置

  其實這一步驟主要是觀察圖像的特徵,從我們個人的理解,查看圖像中某一個位置是不容易改變的。我們需要通過這個位置進行定位。意思是來確定整個產品的方位。

  如下圖所示,我們決定圈圈的地方是我們定位的地方,當然這個位置也是仁者見仁智者見智,自己選自己認爲合適的即可。

 

step4:配置 PMAlign 工具以在所有圖像中定位特徵常量。 應用程序使用原點在後續步驟中創建固定座標空間

 

step5:在圖像數據庫的所有圖像上運行 ToolBlock,並驗證 PMAlign 工具在每個圖像中找到所需的特徵

  注意,如果找不到該功能,則應用程序將失敗。 根據需要調整搜索區域或其他運行參數以在所有圖像中查找該特徵,或選擇另一個特徵供 PMAlign 工具定位。 所以我之前說定位的位置自己隨便選,選擇自己認爲合適的即可。

 

step6:將 Fixture 工具添加到 ToolBlock 中,並將圖像數據庫中的 InputImage 與 PMAlign 工具找到的特徵的姿勢連接起來

  如下圖所示,這是鏈接的示例,當然你也可以按照這個步驟進行操作。

 

step7:添加 PatInspect 工具併爲其提供 Fixture 工具的 OutputImage

  這裏主要是添加本文的主角,PatInspect工具。

step8:打開 PatInspect 編輯控件,進行編輯

  單擊“抓取訓練圖像和原點”將 Current.InputImage 複製到 Current.TrainImage 緩衝區。

  如下圖所示,我們選擇三角形作爲PatInspect工具的模板圖像。單擊 PatInspect 編輯控件上的“訓練新模式”以創建經過訓練的模式。 編輯控件在“訓練參數”選項卡上顯示訓練後的模式:

   所以最終對於您添加的每個新圖像,經過訓練的模式變化越來越小,但最終您必鬚生成經過訓練的模式,該模式可生成包含真正缺陷的閾值差異圖像。

   下圖顯示了經過統計訓練的模式,該模式說明了套件中對象位置的細微變化:

 

step9:運行run,進行比對   

  針對圖像數據庫中存在明確缺陷的圖像測試 PatInspect 工具。我們可以將測試圖片一一喂入PatInspectTool中,這樣就可以查看差異圖像,如果全爲黑色,則表示差異很小屬於正常圖像,如果差異很大,則表示這張圖像存在問題。

   下圖顯示了從缺少組件的工具包的採集圖像生成的閾值差異圖像:

  當然,最終的PatInspect 工具使閾值差異圖像可供應用中的其他視覺工具進行進一步分析或圖像處理。

 

3:界面介紹

3.1  訓練界面

  界面如下:

   我們可以通過訓練界面設置要訓練的ROI區域,如下圖所示:

  下圖是設置訓練區域,意思是輸入圖像要檢測的區域,當然可以選擇設置全圖,也可以選擇驗證指定區域,比如我們下面我們調整的是訓練的ROI區域。當然測試圖像也通過定位,然後到PatInspectTool後,來使用檢測區域。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章