機器視覺小教室 Aurora Vision Studio 入門篇【09】靈活的利用各種幾何工具建立相對座標系

弘翔精密科技股份有限公司
1粉絲
2024年10月16日
機器視覺小教室 Aurora Vision Studio 入門篇線上教學網頁
https://www.urvision-tw.com/article_detail/25.htm
本篇繼續上一集相對座標錨定學到的觀念,衍生出更多靈活的玩法,所謂萬物皆可定位,各種幾何特徵,例如點、線段、矩形等等,都可以建立出相對座標,使開發流程充滿自由及彈性。
好,那我們在上個教學裡面
已經知道怎麼用這個定位工具
然後去幫助後面的這個
座標這個尺寸測量的這個錨定
相對座標的這個建立
好,那我們這個的話
這一集的話就是這一集的教學
我們要繼續衍生這個相對座標的概念
而且我要告訴你們的是
相對座標並不是隻有定位工具能提供
定位工具只是其中一種方法
相對座標是幾乎什麼樣的工具
你能想得到的都能玩出來
我們甚至可以所謂萬物皆可定位
那當你學到這一集的這個技巧了以後
你的這個做這個量測檢測的這個開發
你就可以感受到這個開發上的彈性
好,那在我們展開這個示範之前
我們現在直接用上次的這個範例
我們直接讓他修改
我們上次不是講說我們把這個alignment
這alignment是什麼
這個alignment其實就是這個東西
就是這個原始的影像的
他的這個我們當初在建模型的時候
把這個圖示把它收起來
他原本是在這邊建上次有解釋過
反正你定位工具抓到他以後
他只是把這個00跟著他的這個位置
跟角度飄到別的位置
他只是這樣子
好,那我們就因為他已經送你的一個座標
送你一個coordinate system
那你就直接拿來用
可是如果他沒送你
或者我就是不想用他的
我可不可以用別的東西來建立一個座標
那當然是可以
這個就是我們這次的教學要玩的東西
好,那我們這次不是
我們現在發現這邊不就有一個框框
這個框框是什麼
這個框框是藍色的
所以我們按到這個藍色
我們時間久了會忘記這是哪裡來的
就按右鍵
Show Preview Source
點下去
他把這邊反白起來
這個是什麼
這個東西叫Rectangle
它是一個矩形的框框
好,那我們可不可以用這個矩形的框框
我們用這個矩形的框框
我們想要在這個矩形上面建一個座標
我們座標是一定要在這裡
其實並沒有
我可不可以長在這裡
這是我們這次的思路
那怎麼把它長在我剛才畫的那個地方
我們就要到左邊這個選單
選到這個Geometry2D
左上角有一個座標系統
我們把這個拉近
插在他們兩個中間
放開
他有幾個模式
Create
座標系
下面這個叫做Transform
Transform是說你已經有座標系
那你要把一些幾何的東西
把它轉到相對座標的位置
那我們現在目前
因為我手上要建座標系
所以我用的是上面這個
那他有
用點
給點
Input Point
以及Input Angle Scale
你有點以及角度
我就可以建座標系
你有兩個點
兩個點
起點、終點
就可以建座標系
你有Rectangle
就可以建座標系
而且Rectangle還可以選
你這個Rectangle
你是要左上角、右上角
左下角、右下角
可以任意的選
這個Point Anchor是這個意思
等一下我們就來玩這個東西
或是說你有一個Segment
Segment也可以
Rectangle
其實最基本的需求
就是要有一個
兩個點或是Segment
為什麼
來畫一下圖
解釋一下
我現在有
比如說我現在有這個
以及這個點
我從這個點出發到這個點
這個原始的出發點叫O原點
抵達這個點叫X
這樣子的話
根據2D的原則
Y一定都在垂直的這個地方
所以X往右、Y往下
所以它這個相對位置
其實是固定的
比如說我現在
它這個座標
我O在這邊
那X在這邊
那Y應該會在哪裡
Y一定會朝這個地方
所以在這個2D系統裡面
你不管怎麼轉來轉去
它都遵循一定的法則
當你X朝右
你這個是要顛倒過來
假設你現在顛倒過來
X朝右
它現在是朝左
X如果朝右
那Y就要朝下
X朝右
Y就要朝下
所以你把它這樣轉過來
看其實都會長這樣
所以它不管在哪裡
就一定要遵循這個法則
所以我們現在有這個Rectangle
插入進來
把它連上去
我們就把這個Rectangle
把它拉到這個Rectangle過來
那我們把這個座標系統
拉到上面去看看
把它打上去
打開
所以藍色的這個就是
我建立出來這個新的座標系統
那左邊這個地方
剛剛有提到說
這個有一個anchor
anchor的預設值是top left
就是矩形的左上角
那你可以選擇到
左上角
然後中間的上面
中間的右邊
總共有這麼多種可以選
總共有九種
所以你可以選
這邊
總共有九個位置
九個特徵的位置是可以選的
我如果選到middle center
這個座標就會跑到中間
那什麼叫做anchor
anchor就是
你看Rectangle
它其實都有一個起點
這個起點
很像那個葉千的那個圖案
所謂的左上直的
就是這個葉千的位置
那我現在把它選到middle center
middle center就會跑到這邊
假設我就故意要摺
我把座標系統放在這邊
那這個座標系統
我們當然就可以
假設我就故意想要摺
我就把它改掉
改掉
它每次改掉的時候
你就要回去確認
先跑一張
然後回去
那因為
你的這個相對位置跑掉了
所以你要把它調回來
這個也是把它調回來
這樣就可以利用這個矩形
來當作這個
座標的這個毛病
我並沒有直接用這個
對位工具
好 那我們要不要繼續延伸
延伸
假設我現在不要有定位工具
我可不可以用別的方法來做定位
當然可以
好 當然可以
好 假設我現在把它停掉
好 這個
把它cut掉
好 我現在
我想辦法弄一個矩形出來
然後後面把它disable
好 我弓箭現在換一個
假設是一個
本來就是一個矩形
那像這種
這種很簡單的弓箭
我們甚至有時候要定位到它
我根本不需要用定位工具
怎麼說呢
因為它這個形狀實在太簡單了
假設它就是一個長方形
那我可不可以找這個影像中
任意的長方形
怎麼找任意的長方形
我們可以複習一下這個二值化
二值化在哪裡
在影像處理
好 拉這個threshold image
因為這個是用過的功能
所以我就快速地把它實作一下
二值化
to region intensity
拉進來
好 執行
那剩下其他東西先把它關掉
好 拉進這個region
好 拉進region以後
這個是反向
是錯的
所以我們把左下角這個8值
改成maximum
128
好 那
它現在可以抓到中間的矩形
以及旁邊這個框框
因為這個光源夠大
好 那這時候我們就設一個範圍
點一下ROI
我只要抓中間這個東西
裡面的範圍就好
旁邊我不需要
所以我們現在可以抓到中間這個矩形
好 那抓到中間這個矩形了以後
我們就用
這個region analysis的region feature
拉進來
我們要輸出
想辦法弄出一個矩形出來
所以我們就可以看到這個region analysis
裡面的region feature
有一個叫做region bounding rectangle
所以我們用一個rectangle
把這個region包起來
連上去
rectangle
好 那這個沒有包成功
那主要是因為
這邊有一些小雜點
那我們就要先把這個雜點濾掉
雜點濾掉的方法
我們知道
splitted region可以設面積
所以我們把它插在中間
好 那我們有沒有要
把這個
全部把它
切開
沒有
所以我們不用這個
我們來搜尋
blob
那如果你只是要濾雜點的話
我們可以搜尋blob
那剛才我們本來要用這個splitted
我們要切開
因為我們
以前都用一個一個一個要切開
但是不用
我們只要找唯一的一個
我們選這個remove region blobs
這個的話
可以把它的
一些特徵
blob這個特徵
就把它去掉
去掉
你可以設這個上下線
好 比如說我現在region
面積設1000
再連起來
那這樣子這些小雜點
就會被我切掉
就不見了
這時候
不管怎麼動
我都可以找到這個矩形
好 找到矩形了以後
我們就可以去利用這個工具
停下來
把後面的解開
把這個矩形
連到這個
create coordinate system上面
執行一下
修改
這個相對座標
再把這個distance
把這個兩點連線
左端點 右端點
把它丟到上面去
這個的話就是
我們沒有用
傳統的這個
用一個模板
我們沒有用模板去做定位
我們單純用二字化
然後把雜訊濾掉
然後弄出一個矩形的框框
所以這種用法就是
非常的火
反正你只要能想得出來
你只要有點 有線 有框框
你都可以想辦法
弄出這個座標系出來
甚至你用量測工具
也可以弄出座標系
怎麼弄
再補充示範一下
我這次不要用二字化
一樣後面這個把它隱藏起來
我們再換一個空間
叫做又回到這裡
好 那我們弄什麼
量測工具
我們來用
computer vision圖體的fit shape
拉進來
我們選這個fit edge
點下去
連起來
弄一張影像
故意把它拉得很大
拉得很大
因為我想要找這個點
把它拉上去看
那point
有找到point
但是它線沒有出來
為什麼
第一個我們可以修改
scan count
我們用30個
然後搜尋30個
這樣點會比較多
第二個
最下面這邊
max incompleteness
它的意思是說
如果我的點
這個是0.1
就是我有90%
它滿分是1
我有90%找到
然後10%沒有找到的話
好 那
它就不形成
它就不fitting
所以我可以
降低它的標準
我可能有一半
都沒有找到
接下來就是
outline suppression
把它勾起來選
我們調整一下參數
就是說
我們讓這個
搜尋範圍
不要這麼大
因為旁邊有點暗
只要這樣就可以了
好 那接下來就是
max incompleteness
我們把它拉得很高
盡可能讓它
強迫它去fitting一個線段
再來是outline suppression
我們把它勾起來
選到一個覺得fit比較好的模式
那這樣子的話
它就可以去
找到上面這個點
當然這個
還是一樣不能超過這個搜尋範
就是沒有這個
定位工具這麼的靈活
不過它的可搜尋範圍
已經相當的大
也就是說你的東西
只要沒有偏差
飄到非常非常的遠
它只要在這個裡面
大幅的晃動
我都可以找到這個點
好 那如法炮指
我要找這個點
再找這個支線
然後我們可以算這個交叉點
的確有些應用
是想要這樣做
所以我就複製
貼上
連起來
我修改
我去找這個
貼上去
所以我們現在有兩條線
有兩條線
但是線
它這個只是線段
所以我們要把它算到這個交點
還要用一個工具
就是
我們就搜尋line
因為
有時候不知道它
躲在哪裡
就只用搜尋line
它有什麼關鍵字叫
線段
segment
我們要線
要segment
所以enter
看一下這個是不是
的確就是這個
你只要提供一個segment
它就可以變成line
所以我們把它拉近
所以這個segment
會形成一個line
然後這個segment
也是形成一個line
所以把它拉上去看看
它就會直接把它拉得很髒
很髒
這個交叉點就出來了
所以我們就可以
停掉
然後回到這個幾何工具
intersection
我們找到這個
line line intersection
直線跟直線
直線是它無窮的長度
所以只要你沒有平行
就一定可以找到這個交叉點
插入
第一條line
第二條line
它就有一個交叉點
這裡就是交叉
那我們有點
也有線段
那不就可以
修改這個座標繫了
所以我們有這個
點
有線段
我們就可以
新增這個座標系
那我們就選擇線段
選擇線段
可是問題是我們有點
這個線段是誰
線段是誰
這個線段是誰
我們線段要從起點
要從這裡出發
把它隱藏起來
起點是這個
但是這個線段
這個線段它的起點
其實沒有連在一起
所以我們要去
想辦法讓起點
變成這個線段
所以我們就還要再改
我們還要再改
我們去搜尋segment
然後看有什麼工具
可以讓我去
製造出一個
這邊有一個點
所以
make segment
把它拉過來
所以你要有一個起點
一個終點
所以起點有
起點有就是這個交叉點
那終點
終點就是第二條線的
這個終點
所以
終點是這個點
我們怎麼叫出這個點
我們對這個segment
按右鍵
property output
然後point2
point2就是這個點
所以我們要這個第二點
第二點拉過來
拉過來以後
把它丟上去
重新整理一下
丟上去
那我們就可以弄出
它是兩條線的交叉點
就是這兩條線的
這個交叉點
然後起點在這個交叉點
然後但是終點
在這個DT9上面
這樣子的話
我們就可以去做
這個座標系統
我們就把這個
座標系統給做出來
座標系統就長這個樣子
那後面的話
就是無法炮製
我們就把這個fitting server
把它調一調
那這個就是
我們用各種的
幾何工具
可以串出一些
奇奇怪怪的座標系統
那這個就
非常的靈活跟彈性
就看你這個
應用裡面
就是
要裡面剛好
有出現什麼樣的特徵
這個都是可以去
想像出來的
我們直接用兩個
fitting的工具
也可以去做出這個交叉點
然後形成座標系統
然後前面用這個
二字化
去框出一個矩形
也可以長出座標系
謝謝大家
我們下次節目再見
拜拜
