機器視覺小教室 Aurora Vision Studio 入門篇【08】用定位工具做量測前的相對座標錨定

弘翔精密科技股份有限公司
1粉絲
2024年10月15日
機器視覺小教室 Aurora Vision Studio 入門篇線上教學網頁
https://www.urvision-tw.com/article_detail/25.htm
本篇先引入資料流程式開發中一個重要的觀念,也就是帶問號(?)的資料型別用於表示計算過程中可能是NIL無計算結果的資料。
接下來,由於量測工具只能在一個限定的搜尋範圍中才能做Fitting,那麼,需要利用定位工具才能在全景中抓到想要量測的工件,並且透過相對座標錨定的技巧,將定位工具與量測工具整合起來使用。
我們在上一篇裡面有提到說
我們用量測的Feeding工具
然後抓這兩個圓
然後再用幾何工具去量圓心到圓心的距離
我現在故意這樣子玩弄它
跑掉了
我現在故意移動它的位置跑掉了
在量測工具的基礎介紹不是有提過說
因為我們量測工具它都是有一個搜尋範圍
然後複習一下怎麼看這個搜尋範圍
我們現在把程式停掉
停掉了以後
這邊有一個診斷的輸出
我們用一個板手按下去
把診斷輸出叫出來看
可以看到說這兩個放射狀的箭頭
是在這個位置
所以如果你的圓不在搜尋範圍裡面
它就不會有結果
你兩個同時都要到裡面才會有結果
如果你不在裡面它會出現什麼
我們可以看一下這個量測工具
它的這個輸出
CIRCLE
OUT CIRCLE
它後面是有帶一個問號的
這個問號是什麼意思
我們看一下這個型別
這個型別
所有的型別如果後面是帶一個問號
它是一個
可以是一個NO
你可以看它的英文上面寫
FIT CIRCLE OR NOTHING
IF THE FITTING FAIL
也就是說如果你的FITTING是失敗的話
它會回傳一個NOTHING
所以當它是NEO的時候會回傳什麼
所以不管你的
這個CIRCLE只要是沒有找到
它不管裡面任何子屬性
它其實都是一個NEO狀的
我們來看一下CIRCLE NEO
所以像這個也是
這個NEO
這個也是NEO
所以兩個都沒有找到
就算你有找到一個
我們現在故意這樣子
一個有找到一個沒有找到
所以左邊這個圓沒有找到
左邊這個圓心是NEO
然後右邊這個有找到
右邊是有圓心做掉
但是我的DISTANCE是NEO
所以我們這個DISTANCE
我現在把程式停掉
DISTANCE是來自於
第一個圓心跟第二個圓心
我這個計算是來自於兩個圓心的計算
所以我為什麼這個DISTANCE
它會是個NEO
因為我們兩個需要兩個輸入
第一個輸入跟第二個輸入
這兩個輸入只要有一個是NEO
它就沒辦法計算出結果
那它會怎麼表示
我再重複示範一下
它的表示方式就是
它原本是一個功能
這個FUNCTION
這個FUNCTION一旦有從上游流入了一個
可能會是NEO的資料
可能是NEO就是可能是問號的資料
你只要接起來
這整個FUNCTION就會變成是一個
可能是問號的結果
因為你上游有不確定性
你只要有不確定性
那它的結果就有可能會是不確定
那這樣
這是一個我們介紹這個資料
順帶一提
我們介紹這個資料流的概念
那現在問題在
我們現在並不是說
我們怎麼解決這個
我們是要解決說
因為我的FITTING工具
它都是固定的搜尋範圍
我的來料如果偏差過大的時候
就有可能會找不到
那我們怎麼解決這個問題
我們並沒有想要解決
它會變成NEO這個問題
我們要從源頭去根本解決
怎麼去抓住這個來料
這個就是我們這一個
目前這一個
這一次的教學所要教的東西
好 那我們這一次要講的就是
這個定位工具
它是在Computer Vision 2D
其實在兩側的旁邊
這個有兩個小星星的圖案
好 那我們在用的時候
我們就先把這個兩側
我們先把它按右鍵選起來
然後Disable
先把它mark掉
暫時先不要用輸出結果
好 那我們專心的
在玩這個兩側工具
好 那我們把這個兩側工具
拉一個緊
放在它的前面
因為我們要量
我們要拉這個定位工具
放在兩側的前面
好 那定位工具
它總共有兩個模式
好 這個模式
第一個模式叫做
用邊緣的特徵去定位
第二個模式叫做NCC
NCC是用灰階的特徵去做定位
那這兩個模式的差別在哪裡
可以我們去看這個Read Mode
分別去看一下它的差別
好 那我們都分別把這個手冊打開
就是像這個的話就是Edge模式
Edge模式
它的適合在辨識的一些圖形
就是我這個圖形
它要有一個對比度很高的一個邊框
它要有這個邊框
好 那如果你的影像裡面
它的特徵是屬於這種類型的話
那就非常的適合
用這種邊緣去做定位的
這個Edge模式的定位工具
那如果你的圖形呢
你的圖形
它是一些由灰階所組成的
好 那你想要去在
比如說像他舉這個例子
這個其實這個的話用Edge可以
你可能抓的要是抓這個
那或者說抓
想要抓這個東西
抓一些特定的圖案
那這個特定的圖案
你就可以採取NCC的這個模式
好 那這NCC的意思是什麼
是這個Normalize Correction
這個它是用這個灰階的相關性
去判斷它這個物體的位置
好 那Edge的話
它就是用邊緣的特徵
這個是用邊緣的特徵
所以兩個的原理是不太一樣的
好 那因為我們這個是一個
打背光的一個外觀
幾何的外觀 外輪廓
所以我們就嘗試著
是用這個Edge的模式
好 我們就用Insert
Insert完
那它的一樣
就是它會有一個必須要填的東西
我們把這個影像
第一個是影像
拉進來
第二個是模型
好 那我們要幫它建立一個模型
所以我們按下這個地方
把模型把它建立起來
好 那一樣就是
它要有一張影像 把模型
好 那建立起來的時候
其實操作很簡單
操作很簡單
我們就把它框起來
把這個框起來
那你如果覺得東西歪歪的
你可以先把它擺正
先Disable
然後把東西擺正
好 擺正了以後
我們再去點這個按鈕
好 框起來
好 那框起來的時候
我們去放大看
放大看
你要去看說
它裝到這個邊
是不是你要的
裝到這個邊是不是要的
以及有沒有多餘的邊數
那如果有多餘的邊
我們可以去調這個
右邊有這個
精緻塔的這個
表示它細節太多
那你如果這個相機解析度很高
細節太多的話
你可以把這個
把它調一下
讓它只要抓大約的資訊
好 那如果還是濾不掉的話
你可以去調這個8值
然後調好了以後
按這個OK
好 按完OK了以後
我們再回去看
這邊要先記得說
你這邊這個精緻塔是調到2
也就是說這個模型
其實是縮小
二分之一再二分之一
總共是四分之一的尺寸
所以這個的時候
我們要在做辨識的時候
這個地方的這個最小精緻塔
我們就要用這個
那最高的話
我們可以把它取消
讓它自己去解析
這邊的話用
好 那我要把它Enable起來
看看它的辨識解析
好 那怎麼看辨識解析
我們就把這個
Match把它拿過來
去看一下
好 那它確定
確實是可以抓到
其實我甚至
我有折到一點點
它都是可以抓到
那可以抓到
我們可以看一下這個分數值
目前分數值是1.0
1.0就是100分
然後被遮住一點點的話
它就是0.8
就是80分
滿分是100
好 那可以玩到這樣子的話
我們就可以拿這個
定位結果去影響
後面的這個測量工具
因為我們不是為了定位而定位
我定位的話
我要用到定位通告
後面一定要有其他的處理
就算我定位
我可以找到的東西
那我一定有定位完
後續要做的
那舉這個例子
我定位完我要做測量
所以先定位再測量
那有可能你先定位去做檢測
那有可能你先定位完
要做抓取
所以定位通常都是一個前置動作
所以不會為了定位而定位
所以我們定位完
怎麼把這個量測跟定位
整合在一起
一個最簡單的方式就是
這邊有一個
Alignment的這個輸出
我們來看一下這個是什麼
這個Alignment你滑鼠停在上面
它顯示的是一個
Coordinate System
2D的座標系
我們把這個2D座標系
把它丟上去看一下
在這個地方
這個東西為什麼長在這裡
它這個地方其實就是
它這個其實就是我們當初
在建這個模型的時候
一開始在建這個模型的時候
我們剛開始不是擺陣的時候建
影像的這個零零的地方
所以我把它拿走的時候
它會記得
它原本的這個錨定點
影像的原始的零零的這個錨定點
所以我們原本影像是長這樣
所以我把它移動了以後
它會記得原本的這個座標系統
在什麼地方
好那我們就利用這個原理
好所以利用這個原理
如果我的這個搜尋這兩個原理
相對於這個原本這個錨定點
那這樣子是不是這兩個搜尋
大概就不會跑掉
好那這個
把這個座標系統
轉換到原本的座標系統
上面這個工作
其實原本我們在原理
如果我自己要寫這個演算法的時候
我們要需要去做一個
那個數學的矩陣相乘的這個運算
其實相當的麻煩
所以你利用它這個工具
它會幫你處理掉這些事情
好那怎麼弄呢
我們就利用這個Alignment
好現在把這兩個把它解開
好那把這個Alignment
接到這個
這邊有一個叫Feeding Field Alignment
這個的座標系統丟給它
這個座標系統就丟給它
你把它丟進來就好
就這麼簡單
但是丟進來之後
我們要再Double Check一下
好怎麼Double Check
你把它丟進來
我們要回到這個
搜尋範圍這個設定工具
你要重新把它打開
好
打開了以後
我們先取一張圖像
打開了以後
點進來
你右上角這個畫面
你要用絕對原始的座標系
還是用Feeding Field Alignment
你要先確認一下
我們現在要用的是Feeding Field Alignment
就是外面丟進來的座標系統
這樣子的話
它就會把這個
把它飄到這邊
那這樣子相對位置就會是正確
所以這個是適合用在我說
我們已經設定好是在這個位置
但是我要基於
這邊還是基於這邊
我們現在把它接起來
我們就確定它是
像這樣子的話
這個搜尋範圍就沒有了
我們現在微調一下
這個也是
Feeding Field Alignment
然後重新修正一下
因為這個我們原本是在
原始的座標系去做設定
好
那它就可以找到
那這樣子的話
這個影像就不會更丟
差異就算差異再大
只要有抓到這個空間
就不會更丟
好
那再來就是說
如果我是重新拉的時候
我是先做定位
再拉這個東西
怎麼弄
我現在把它閃掉
重做一次
Feeding Circle
拉進來
點上
Alignment
好
現在是空的
現在裡面是沒有東西的
好
點
這時候
因為你是新拉的
而且你有接Feeding Field Alignment
所以它已經先幫你把這個圈起來
這時候
我們就直接對這個
影像
直接框選我們要的這個圓
然後把圓拉上去看看
OK
它有偵測到
然後圓形座標把它
加上去
那我們不需要兩個圓
所以就把它拉過來
接起來
然後修改
丟上去
好
最後呢
我們要算一個Distance
DIST
DIST是用搜尋的
Enter
然後選到
Point to Point Distance
拉進來
Center連上去
Segment拉上去
然後Distance拉下來
那如果
腦海裡面已經有這樣子的流程
我們就是先用定位再做量測
最後算出結果
那可以直接這樣子把它寫下來
所以這個是我們
這個用定位工具
去做量測前
然後定的一種用法
