機器視覺小教室 Aurora Vision Studio 大家一起玩 3D【10】用 3D對位 (ICP) 做相機姿態校正,應用於點雲拚接

嗨 大家好 歡迎收看機器視覺小教室
大家一起玩3D
我們在上集介紹了3D對位的第一個應用
那就是進行點雲比對
然後把缺陷檢測出來
那大家也練習到怎麼使用3D對位
以及前處理的動作
那今天呢 打算介紹3D對位的第二個應用
那就是點雲拼接
在開始之前 我們先看一下現在的畫面
好 大家有看到這個機器手臂嗎
那這個機器手臂開始動作
那這個機器手臂在不同的位置去拍攝這個點雲的影像
然後可以看到這個地方
當它連續拍攝幾個畫面了以後
這個點雲越來越滿 越來越補滿
那這個就是我們所謂的點雲拼接
那可以達到各個方向都有資料的一個影像
那大家會不會很好奇這個是怎麼做的呢
那這個是我們今天想要介紹的一個主題
那我們利用點雲對位這個工具
來去校正這個拍攝的姿態
那開始之前呢
我們先來介紹一下我們大概會用什麼樣的套路
去做這樣子的應用
我們看一下白板
好 那假設這邊有個東西
這邊有個東西
那你的相機在這個地方拍到它
跟你的相機在這個地方拍到它
這個有什麼差別呢
如果是這臺相機呢
這臺相機去拍攝這個東西的時候
那它呈現出來的影像是長這樣
這樣子
相機在這邊嘛
這個是它相機的座標
那如果是這臺相機呢
這臺相機
那這個相機拍出來
因爲相機是朝這個地方看
所以它拍出來影像會長這樣
你說這兩個方向
一個長這樣一個長這樣
根本就不一樣的嘛
所以呢
如果你現在把這個東西
跟這個東西跟這個東西
把它疊在一起
一個在這邊一個在這邊
它其實是沒辦法做拼接的
那怎麼做
很簡單
那我們之前不是有教過
3D對位嘛
好 我們再看一次
好 你現在有個點雲
是長這樣
那你現在又有個點雲是長這樣
那能不能用3D對位
就把它貼上去
那貼上去以後
它跑到這邊來嘛
好 這個是新的
跑到這邊來
然後上一個在這邊
那這樣子的話
這個貼過去的動作
你就會獲得一個4X4的矩陣
那這個4X4的矩陣
就是我們所謂的校正矩陣
那這個校正是在校什麼
其實就是在校
這個相機跟這個相機
它兩個不同的拍攝姿態
它的這個Mapping的一個關係
那這個關係呢
我們可以把它存到一個檔案裏面
好 你把這個矩陣存成檔案
那下一次你的相機
拍這個方向的時候
那你就載入這個方向的檔案
你相機在拍這個方向的時候
再載入這個方向的4X4的矩陣
那其實你在拍攝的時候
只要你的機臺
每一次拍這個位置
它其實都不會有誤差
每一次都可以移到這個位置去拍
每一次都可以在這個位置去拍
那這樣子的話
你每一次拍的時候
都順便載入相對應位置的4X4矩陣
然後根據這個4X4矩陣
把你的點雲貼到正確的位置上
那這樣子就可以去做到
及時的拼接
不需要每一次拍攝的時候
都去計算這個3D對位
那因爲計算3D對位
畢竟是需要耗費一些時間的
那耗費這時間
而且你有可能
你的物體是
不適合立即去
做對位成功的動作
這個什麼物體適合做3D對位
什麼物體不適合做3D對位
我們後續再來解釋
大家先知道有這樣子的概念
好所以呢
我們就需要準備
一個拿來校正的物體
這個叫做校正的物體
好那
你準備一個相機拍這個位置
再準備另外一個相機
拍另外一個位置
看你要幾個相機
假設這個位置叫做0
這個位置叫做1
分別把這個0的點雲存下來
1的點雲存下來
2的點雲存下來
那這個東西
有012
看還是有345都可以
好那你要拍了
幾個就幾個點雲
那拿這幾個點雲
通通都拿去對
第一個位置
因爲它在正中間嘛
所以
去做點雲對位的動作
然後獲得
有四個位置就獲得四個
四乘四的矩陣
把它存下來
存下來了以後
下一次
這個東西拿走
好拿走哦
然後換成
另外一個東西放進來
那這個的時候呢
就直接把校正矩陣
一個一個讀進來
就可以直接去對
這個東西去進行拼接
那我們大致上的流程跟套路
會是這樣子的
那我們在開始之前呢
我們先來介紹一下
準備這個相對應的資料
好怎麼準備呢
考量到有些同學
你們其實
是沒有相機
然後也可能也沒有一個
可以移動相機的一臺機構
那例如這個機器手臂
這個機器手臂
它是一個
精度算蠻
重複精度不錯的一個機構
所以是可以當做這個拼接的
移動的一個機器
好那怎麼準備呢
好我們來先來看一下
好假設現在老師已經寫好
這個機器手臂的程式
好這個程式呢
他會去接受這個
TCPIP
好傳送一個命令
傳送命令0
就去跑0的位置
1234
好分別去跑不同的位置
好接下來呢
我們看到這個
視覺的程式這邊
好點線相機
然後呢
接受這個機器手臂
傳過來的指令
取下
好接下來
依據傳過來的指令
去命名這個
我們要存下來的
檔案的編號
好那執行之前呢
這個檔案編號大概是在
會呈現在這個地方
好接下來就是把
我們需要的檔案
把它存下來
好我們執行
好把機器手臂動起來
然後就開始拍
那我們先用這個愛心的形狀
去做這個校正的字句
那爲什麼要用這種
愛心的形狀去做
校正字句呢
我們後續會解釋
校正字句
適合用什麼形狀來製作
好拍第二張
好第三張
好大家可以看到
這個檔案已經被存下來了
第四張
好拍完
那把機器手臂停下來
好接下來呢
這個存下來的檔案
那老師已經把它
放在網路上
那大家要練習的話
就直接去下載這個
我們所拍好的檔案
那這個檔案裏面
解壓說
你會看到一個叫
因爲我們今天是第十集嘛
data10的資料夾
那這個資料夾裏面
有分calibration
以及scan
兩個資料夾
好calibration裏面呢
裏面就分別是
01234
總共有五個動作
那每個動作
拍攝的就是這個
三顆愛心的這個圖案
那這個愛心圖案裏面
有分scan0
jpg
到後面還有1234嘛
那這個jpg是給你看
就是說這個
它大概長什麼樣子就好
那我們等一下不會用到
好那
有這個影像呢
也有它對應的點雲
點雲用POI
那我們之前的課程
有講過
就是你如果在練習
這個點雲的處理的時候
當然你用POI的話
就可以share給大家看
但是我們比較建議
就是因爲
要儲存完整格式的話
我們會用我們的save object
那它儲存的這個avdata
那個裏面也是點雲
但是這個avdata
就是一定要我們這套軟體
才能打開
那但是等一下呢
我們就直接去讀
這個avdata就好
那jpg跟POI的話
就是給你自己
去share給大家的時候
是可以拿來看清楚
這裏面有什麼東西
僅供參考
好那scan這邊
格式是一樣的
也是有01234
好那這個裏面呢
就是要拍攝這個
一個
查據
這其實是一個
淘罐
這套圓形的淘罐
好那我們準備呢
就是用這個愛心去做校正
校正完以後
獲得1對0
2對0
3對0
4對0的
4組校正矩陣
1234嘛
然後0在中間
那1234都是斜着拍的
好所以總共有4個校正矩陣
好那這4個校正矩陣呢
我們要用這4個校正矩陣
去把
這個
淘罐
然後去做拼接
大概是這樣子
接下來我們就開始練習
好那我們
在
開始練習之前呢
我們先
順便一邊做
一邊複習一下之前的
點語對位
那我們就用
在開始之前
那我們先把這個專案
把它存下來
那大家已經先
解壓縮這個data10
那把專案存在這個地方
那你可以叫Program
我們先做這個
點語對位的校正
所以我們叫Program1
存檔
好那
我們就用
load
object
放這邊
那load什麼object
就是
Point3Dgrid
OK
好那load什麼樣的
Point3Dgrid呢
我們在
data10的那個
calibration裏
所以就是去loading
calibration
來看一下我們的檔案
這檔案叫
scan
底線0
avdata
所以我們就相對路徑
點
斜線
calibration
斜線
然後
scan
0
點
avdata
好把它拉出來看看
執行
這個就是我們
在
正中間
正上方所拍攝的
三顆愛心的影像
好
那接下來呢
我們再load
下一個
好複製貼上
把這個scan0改成scan1
好把它拉上來看看
那這個呢
執行
我們選一下
之前有教過
按右上角這個彩色的Z
選到solid
大家就會看到
疊圖
好
因爲呢
這個相機是在不同的方向拍的
我們剛纔有提到
就是
當你疊在一起的時候
這個點雲
事實上是對不起來的
它是一個正的
一個是斜的
歪歪的
好所以
我們就要開始用
點雲對位
去把這兩個疊起來
好那點雲對位
之前有教過
前面要先做一些
前處理
那哪些前處理
我們叫
Crop
Point 3D Grid
好先拉進來
那
因爲它這個是斜的嘛
那除非
你用些特殊技巧
先把它轉平
那我們就沒有辦法
去針對它什麼
Z X Y Z
去做
上下線
那我們這次改用這個
To Region
好先放着
等一下再弄
好接下來還有
要去雜訊嘛
那
怎麼去雜訊
再複習一下
雜訊叫什麼
Outlier
Out
Lier
所以Remove
Outlier
From Point 3D Grid
好這個把它連起來
這個等一下再接
好去雜訊
那這個
Neighborhood
是可以調的
你可以稍微調一下
看你自己揣揣看
大概就好
那我
這個是
之前經驗就喜歡調這樣
好
那還有什麼
我們要
這個
點雲很
資料很多嘛
所以我們要把它
降採樣
降採樣叫什麼
Voxelize
Voxel
你就搜尋Voxel
好Voxelize
拉進來
好接起來
那它預設值是0.5
這0.5嘛
好因爲我們
有兩個點雲嘛
那它要做
重複它要做這個動作
所以我們之前教過
我們把它包成副程式
好按
全選
按右鍵
Extract Step
好這個叫前
前處理
好輸入你的名字
然後Extract
好
弄成前處理以後
進去
那我們就開始把這個
要丟進來的點雲
把它長出來
那這個
我們要
第一個要被丟進來的點雲
要接到這邊嘛
那一個很方便的方法
你就直接把它往上拉
它就會跑出來
OK
它就接過來
好還有
這個Rigid
你這個Rigid是要設定的嘛
好怎麼設定
直接在這裏
不要
因爲這副程式嘛
有可能你
副程式你可以
Ctrl-C,Ctrl-V
然後你可以
跑一大堆
好幾組嘛
那每一組都跑一樣的設定
那就沒意思啦
所以
這個Rigid
我們不要直接在這裏設定
你看它就empty
那你直接按點點點就可以
當下就開始設定
好不要
我們拉到外面去
那這個叫什麼
這個叫ROI
好
ROI在外面
用input去給
也就是說
我先輸入一個點雲
然後輸入一個ROI
然後它就會去裁切這個點雲
好那接下來呢
Voxelize
這個Voxel
你如果要固定0.5
那就藏在裏面就好
那如果要讓別人設定
那你就拉出來
好拉出來
那可以給個預設值
預設值
比如說
那你就0.5
你先給
那如果不想改
就不要改
好接下來
前處理的結果
就它
就經過三個步驟的前處理
好丟到外面去
那就看你要不要改名字
這個叫Grid
好回去上頁
所以就有兩個前處理
好
第一個前處理
這個叫做Scan0
好拉過來
第二個前處理
這個叫Scan1
好我們把它命名一下
這個叫Scan0
然後這個叫Scan1
不過
你還有1234嘛
所以我們就叫Scan就好
那這個就不要叫Scan
叫Scan0也可以
Scan0我們就不會換了
好Label
對這個箭頭按
有點Label Connection
好Scan0讀進來
馬上被前處理
Scan0的前處理叫什麼
Label
Scan0
Pre-process
那這個叫什麼
Scan的Pre-process
OK
好分割四雙
看一下
點上去
執行
哎呦
怎麼有錯誤
R1還沒設
好我們來設一下
那這個
ROI這樣黑黑一片
你不知道設什麼嗎
所以呢
我們來多做一個動作
叫LoadImage
這樣子的話
上次有提過說
我們在2.5D的時候有介紹過
那你要設這個Region
那必須有它對應的影像
會比較好設一點
那因爲我們有現成的
這個Image
直接把它丟進來
好複製
貼上
Image打名叫什麼
jpg
這個也是
複製
貼上
打名叫
jpg
就是Scan0AVData
然後它就有對應的Scan0JPG
所以Scan1的AVData
打名就有Scan1的JPG
那這樣你就知道
這個裏面是什麼東西
好執行一下
先讓它跑一次
好有錯誤沒關係
等下再改
好這個影像冒出來了
冒出來
我們就按下去
好選
影像跑出來
這個影像
你滑鼠停在這個上面
0
LoadImage
Image
OutImage
這是什麼東西
就是它
那這個呢
這個上面寫
呱呼1
LoadImage
點OutImage
是誰
它就1嘛
1在這裏
所以有兩個影像
好
那我們現在設的是
Scan0的前處理
所以我們就要選1的這個影像
那
這個點要被裁切到什麼
因爲這個地板太多了
所以我們就
用這樣
畫一個框框
把它包起來
那這個呢
點一下
因爲這個是Scan的影像
所以就選這一個
這個是第二張圖的
好一樣畫一個框框
包起來
OK
好重新執行
這個就是原始的點運
Scan0跟Scan
那這個就是Scan0的PreProcess
還有Scan的PreProcess
好一樣我們可以
換一下顏色
好這個是
這個比較大張
然後這個小張一點
然後這個點比較稀疏
然後雜訊稍微少一點
我們有綠雜訊嘛
好
接下來呢
就可以開始準備3D對位
3D對位叫什麼名字
Adjust
Point的3D Grid
那你也可以在這個地方找
Computer Vision 3D
然後Locate 3D
那你如果熟的話
就自己用搜尋
Adjust Grid Enter
那它會有兩個嘛
那我們都是用這個第一個
那這個Global
這個是給進階的使用者
我們暫時先不講
把這個拉進來
好那這個
Adjust Point 3D Grid
這是我們前一集
還有上上上集
跟上上集有教過
這個是ICP的原理
所以這邊就有ICP的參數
好那Point要放什麼
就是會動的那個
Reference是不會動的那個
好誰要動
那就把這個誰
放在這個地方
好假設我們現在要讓
這個Scan去動
然後Scan0不要動
好那我們就把Scan0的
Preprocess放在這邊
接起來
好Scan的Preprocess放這邊
接起來
那這個參數
你可以稍微調一下
那我大概
其實我之前有Try過
大概可能調成這樣
效果會不錯
500 0.7 0.2
大概這樣
那這個有興趣
自己調調看
好那接下來
我就把這個Alignment
拉到右邊
因爲這個是
Scan的Preprocess
被貼到Scan0的
Preprocess身上
好那在計算之前呢
呃我們這個前處理
這個
0.5
感覺
還是點太多了
我們改用1就好
所以這個點雲
再少一點
因爲這個圖很大張
好執行看看執行
好對完啦
那橘色的就是
Scan的Preprocess
它要往
藍色的Scan0 Preprocess
身上貼上去
好貼完了以後變成綠色
所以我們就把橘色先
藏起來按Hide
藏起來
那你就可以把它
打開
看一下有沒有貼到
有嘛
好接下來呢
你還如果還想要反覆
確認
原圖
因爲原圖解析度比較高
有沒有貼到
好OK
可以這樣子啊
這邊不是有一個
上次有提過
有一個Matrix
你用這個Matrix
去把這個原圖
貼上去
怎麼弄
Transform你的3D Grid
Enter
Transform
那Transform
它的這個Matrix
一開始是隱藏的
所以你就按一個Show
按下去
把這個Transform叫出來
好接下來
你就可以把它拉過來了
貼上去
好貼上去呢
誰要被Transform貼上去
剛纔被貼上去
是這個前處理過的嘛
我們要把原圖貼上去
好回想一下
之前哆啦A夢
的那個教學
把誰這樣
把這個Scan貼上去
好Scan被貼上去
這個就是
Scan
Align
Scan Align
好把它貼過來這裏
執行
好橘色是原本的Scan
我們就把它隱藏
好我們來看一下
放大看
嗯這個是對的很完美
這個就是我們所謂的
點雲對位
那
就是說
誒老師
那個
我們爲什麼要先用這個愛心
去做對位
因爲這個愛心容易對齊嘛
好接下來呢
我們把這個
我們要把這個Matrix存下來
所以我們就用一個
好Stop
Save
Object
那拉進來的時候
它會問你
你要存什麼格式
格式就叫Matrix
OK
這個Matrix在這裏
所以把它拉過來
好
那你要跟它講黨名啊
好黨名叫什麼
黨名叫
點
Candle
Position
斜線
Scan
什麼
我們來看一下Scan什麼
你剛纔讀的是Scan1嘛
所以這個就叫Scan1的Calibration
好那我們就叫
Calibration
底線1
點AVData
好大家看到
Calibration
大家就知道這個其實是一個校正的
裏面存校正矩陣的一個物件
把這個自己取好記的名字
好我們再執行一次
你就會看到這個Calibration1
Calibration1跑出來了
好接下來呢
我們還有234嘛
那老師就不在這邊示範了
就是同學在練習的時候
自己把這個
一個一個手動去改
改這個黨名
有分別把
那個
1234
通通這個Matrix
通通存下來
存下來以後呢
我們等一下就來玩
把這個Scan
也把它校正回去
好老師這邊
已經把那個
Calibration的1234
已經先叫完
所以我把它貼回去
貼過來
好1234
那那個同學自己練習一下
那等一下我們就可以直接去讀這個
四個不同方向的校正黨
那這個校正黨我們記得
是存在Calibration這邊
好接下來呢
這個就是我們校正程式
但是我們線上要跑的
不是這個校正程式
我們就另外再開一個新的專案
開啓專案
馬上存檔
我們存成Program2
這個Program2呢
就是我們要來對
這個Scan資料夾
這個陶罐
那
我們就把這個Scan資料夾的
四個點語
把它叫進來
Load
Object
叫什麼
型別叫做Point3DGrid
OK
然後點
斜線
Scan
斜線
斜線什麼
我們來看一下
Scan
0不要載了
我們就直接把1234拼起來就好
爲什麼呢
因爲我們的Calibration只有1234嘛
我們沒有0
那01如果要接的話
也是可以
那你自己就要有一個
4x4的矩陣
那這4x4
你沒有校正的4x4矩陣是什麼
這個我稍微提一下
這個4x4矩陣
你如果都不校正的話
其實就是旋轉
這邊是旋轉矩陣
這塊
111
然後其他都0
0 0 0
1
0 0 0
這邊是平移
所以我不平移
不旋轉
所以你如果
那個Scan0
因爲Scan0是基準
它是不動的那一個
所以Scan0的校正矩陣
其實就是長這樣
我們就不需要再存檔
那你如果想把Scan0也拼上去的話
你就矩陣就用這個就好
OK
那我們先不示範這個
那我們就把1234拼起來
1234
Scan底線1AVData
Scan的Scan底線1.AVData
複製貼上貼上貼上
改檔名2
這個叫Scan2
Scan3
Scan4
那還有一
我們要載入那個Matrix
這四個是點雲
那這個一大堆樓頂
那個看的有點眼花
我們來下個註解
那怎麼下註解
你可以在這個函式的上面
按右鍵
這邊有個叫Add comment
那你這邊可以打註解
然後亂打亂打
然後導註解
那可是因爲有四個
如果我們在在這個函跟函的中間
它會出現一個橘色的線
你在這中間按右鍵
Add comment here
那這個叫做載入
點雲
好它就出現一個小小的區塊
裏面是有字的
你在這邊再加註解
這個是載入校正檔
Add comment here
載入
校正檔
OK
那校正檔在哪裏
校正檔在Calibration
然後名字叫Calibration
1234
所以Calibration
斜線
Calibration
底線1.avdata
複製
貼上貼上貼上
改一下號碼
2
好3
好4
那這四個點雲
我們先把它叫出來看看
1234
那這邊先選Solid
執行
哎喲
是不是路徑有錯
打錯字
這個叫Calibration
那剛纔用複製應該每個都打錯
改一下
前面的資料夾也打錯
都改一下
好執行
那我們就可以看到這個
四個
拼得亂七八糟的點雲
分別用不同的顏色
那就是藍色是第一個
橘色是第二個
綠色是第三個
紫色是第四個
好我們就要開始用這四個校正檔
去把它拼起來
那我們
大家看一下
我們等一下拼我們就不直接用
我們就不在這邊3D對位
好這個
就直接用校正檔去拼
好怎麼拼
Transform
然後Point 3D Grid
這個
好把它丟到Process這邊
按Show
Transform
好誰要被拼
第一個拼嘛
然後再拼
一個對一個一個對一個
好複製
貼上貼上貼上
好第二個
第二個
好第三個
這個線開始越來越多
這個
邏輯要清楚
不然的話看得眼花繚亂
好拼的結果呢
我們開一個視窗
你可以用Split
左右並排
好把這個拼的結果
丟到上面
好四個
然後一樣按這邊
選擇Solid
它就用顏色來區分
下一步
原本沒有校正的時候
就長這樣亂七八糟
校正完了以後
你可以就看到這個陶罐
然後
不同的顏色
就是不同的方向拍的
那有的地方有Overlap
有的地方沒有
好那最後呢
這個只是把它疊上去而已
有沒有辦法把它
融合在一起
可以
我們把它
全部都
把它用同一個
因爲你現在有四個點
那怎麼把它接成同一個
工具
叫做Join
Point3D Grid
這個叫做
銜接
那它這個銜接呢
其實
它其實只是把資料結構
把它接起來而已
因爲我們知道這個點雲
它實際上是
一個陣列的排列
二維陣列的排列
就是有XXYYYY
那其實應該叫UV
二維陣列
那它其實
它的儲存
因爲這個Point3D Grid
本來就是也是一樣
PixelPixel的排列
那我不管它
我們就把它
一格一格一格
統統接起來
我們只是要這個資料
Data
我們要的是Data
好那這個
它這裏這些預設值
就不要理它
就是你到底是
沿着U的方向接
還是往V的方向接
那我們現在只是
只是要把點雲疊圖
那我們就硬接
不理它
好接
怎麼接
第一個
這是第一個嘛
第一個過來
好1接2
1接2
好Ctrl-C
Ctrl-V
好1接2完
放在這裏
然後再接3
然後再貼
再貼一個
依序這樣接過來
好這樣
好我們開一個
在這個視窗
我們開一個叫
Create New Tab
這個就是用頁籤
可以切換
我們把這個
接完的結果
丟到這邊來
執行
好現在就
全部都
放在同一筆資料上面
那
當然
你就可以直接
對這個資料
去做一些處理
那比如說
你可以
Voxelize
好貼上去
然後取一樣
0.5mm
對它重新取一樣
那這個
就是我們的
所謂的
點雲拼接
那點雲拼接
我們就來討論
就說老師
那
這個
我們有沒有辦法做到
及時掃及時拼
我直接掃這個陶罐啊
本來亂七八糟
然後直接
根據它的特徵
直接就拼起來
其實這個風險
非常的高
不建議這樣玩
爲什麼
我們來看一下這個陶罐
這個陶罐是圓的嘛
來看一下老師的手勢
你現在有個圓的東西
跟另外一個圓的東西
那我們剛纔
我們在上一集有提過ICP
ICP是用什麼
當做對位的基準
或是對位的參考
或是對位的依據
是用點雲跟點雲的距離嘛
好
你現在把它兩個疊起來
距離到最靠近
沒有距離的時候
或者說
你這兩個點雲
有一點點有不一樣的地方
沒關係
反正我
整個疊在一起
我已經找不太到
我距離如果可以更小的時候
我要移去哪裏的時候
那他就認爲收斂
就對位結束了
那這個圓的東西
這種特徵呢
來大家看一下
會發生什麼事情
我這樣對
這樣對
結果都一樣嘛
距離都差不多啊
那你覺得
你直接用這個對
對得起來嗎
絕對對不起
風險非常高嘛
所以風險高的對位
那我們及時對位的成功率高不高
就不高
那你在設計機臺的時候
你爲什麼要這樣子設計
對
爲什麼要這樣設計
那這個機臺就不能用了
爲什麼要這樣設計
好
所以呢
我們一定是用對位成功率很高的
我們去設計一個字句
這個字句
我放上去
左拍右拍上拍下拍前拍後拍
好
我只要稍微調一下參數
很輕鬆
他就可以對位成功
因爲爲什麼
對
不同方向的那個拼接
他需要這樣呢
他爲什麼前面的多萊蒙或是小叮噹
這麼容易對成功呢
因爲小叮噹是同一只嘛
你在同樣的視野去做拍攝
好
那小叮噹只是稍微的左右晃動
前後晃動
那事實上那個東西
他在都在你同一個空間裏面
你的視野不太有變化
所以他都可以找到那個東西
但是你現在
左拍右拍上拍下拍
好
我們隨便來看一個
我們就把
第一張跟第二張
來看一下
一張是拍攝這個點的
這一半一張是拍攝這個點的
另外一半
好
這兩這兩半呢
我們看這個疊好的
他們兩個只有哪裏重疊
從的地方就只有這麼一點點而已
這個一點點
然後大部分地方都沒有重疊
你叫ICP怎麼去有辦法參考到
ICP他發現這裏距離很遠
這個橘色距離藍色很遠
那他的想法會是什麼
他想法會是什麼
他就會想把這個橘色
一直往藍色身上擠嘛
他就一直擠過來擠過來
那最後你對到會什麼
可能就長這樣
他會擠過來嘛
因爲這裏距離還很遠嘛
這邊對到又怎麼樣
所以他就會擠過來
那這樣子你的對位就不會成功
那還有一個
我們剛纔有提到
就算
你說那我就
把這邊切掉不要看
我們對這裏就好
對這裏
剛纔纔剛提到這個問題
我現在有一個圓
然後就要轉來轉去轉來轉去
都可以對準
那這個對位就沒有效
既然提到這邊呢
我們就來提一下
3D對位的字距
就是相機不同姿態去拍攝字距
它有什麼樣的限制條件
我們看一下投影片
那這個3D對位的字距呢
它其實適合長這種形狀
那這種形狀就很像一個
頭被砍掉的金字塔
或者說
如果你有買過一些巧克力
它其實就長這個形狀
那爲什麼要長這個形狀
我們來先分析一下
這個原因就是因爲我的ICP
ICP它其實有一些特性
我們來看第一個圖
假設我們有四種不同形狀的點雲
哪一種形狀點雲容易對位成功
第一種
這個點雲
兩個點雲
一個藍色一個橘色
這個藍色點雲呢
跟橘色點雲形狀很相似
它有這個邊
這個邊這個邊
我們從側面看就好
因爲這個3D很難畫
我就畫2D就好
好
它可以貼過來
兩個就合在一起
這個是最容易成功
好
那2跟3
我打三角形
它是有可能成功
也不一定
有些人
我現在校正字句
我拿一個長方形
一個盒子
然後我直接拿去對位
盒子就是像直角的
好
那直角的
如果你這個直角沒有很大
或者說你相機
其實根本沒拍到這個直角
它其實就是兩個平面
就跟這個一樣
三個平面
差不多的意思
好
那現在這個大平面
我們講過
ICP是用距離去做判斷
好
你現在兩個平面貼在一起
滑來滑去
那滑來滑去
滑到哪裏
結果都一樣的
所以
這個小小的
這個小段差
垂直段差
根本就不影響它對位結果
所以
你的對位結果
就可能會不準
好
最差的情況就是
你就只有一個平面
一個平面
兩個平面
好
疊在一起
滑來滑去
好
這樣怎麼對得到東西
而且不僅有立體感
你最好
你的相機
不管在左邊
右邊
上面
前面後面
都可以拍到它至少有三個面
三個不同的面
好
我們來看一下這個範例
那什麼意思
我們來看
好
我現在
假設我現在有這個點雲
好
就兩個點雲
那第一個點雲呢
是一個
從俯視角去拍的
那第二個點雲呢
只拍到側面的局部
好
我們去做Voxelize
好
用3D對位
而且3D對位
只用預設值
我們先下箇中斷點
好
執行
好
第一個點雲藍色的
好
從正上方拍
好
第二個點雲
橘色的
從斜上方45度角
好
假設這兩個位置不一樣
好
我們要把橘色貼到藍色身上
好
執行
好
就貼上去了
爲什麼
爲什麼那麼輕鬆
因爲這ICP
貼上去有三個不同的平面
好
所以
你在貼的時候
你只要有一點點
差異
好
所以你有三個平面
這三個平面
都有不同的發像量
這三個發像量
差異非常的大
所以
這就代表說
我們這個東西貼上去的時候
其實是有很高的可參考的基準
就可以使用
所以我們校正之具
要設計成這種形狀
那就對你這個
相機的這個姿態對位
其實是最高的精度的表現
而且對位也是最容易成功的
好
所以
其實要玩這個呢
其實並沒有那麼簡單
那我們這一集
先
大致上先
做個導覽
就是如果你要玩
不同的姿態的點語拼接
多方向的拍照
那你要用ICP
去達成這樣子的功能
我們先提到說
你只用ICP
因爲我們這個工具裏面就ICP
然後去達成這樣子的功能的時候
你去
你會需要知道這個ICP的特性
去設計這個校正之具
以及校正的流程
那
利用一個重複精度高的機臺
你每一次拍
都會在相同的位置去拍
那你就去讀取上次的校正檔
每一次拍
每一次讀
讀進來就直接拼上去
那這樣子
每一次拍
都可以有很好的對位結果
很好的拼接結果
那這樣好不好
當然好
那這個機臺就會非常的好用
好那我們這一集
大致上就先介紹到這邊
拜拜
優優獨播劇場——YoYo Television Series Exclusive