如何使用Blender模擬FPP(Fringe Projection Profilometry) 原理的結構光3D傳感器?
主要包含的工作有:
1)相機、投影儀定位與內外參數匹配;
2)投影儀投射指定Pattern圖像;
3)被測物體材質屬性配置等;
本篇主要關注外參數匹配。
外參數匹配的基本思路?是,添加Camera和SpotLight節點,并設置各自的變換(Transform)屬性,主要是位置和旋轉
六個參數。
1 Blender中變換參數的含義
Blender中,變換參數的含義可理解為世界坐標系到當前Object坐標系的變換,用位置和旋轉
可分別表示為
和
。
則Object坐標系下的點與該點在世界坐標系下的坐標
之間的變換關系為
? (1-1)
2 左相機變換參數配置
在三維測量中慣用的相機坐標系定義為,
?——? 相機畫幅平面內水平向右的方向為
正方向;
?—— 相機畫幅平面內豎直向下的方向為
正方向;
?—— 相機觀測正前方(Front)方向為
正方向;
????????但Blender中,相機坐標系的定義是不同的。具體表現為,在Blender中將相機變換參數的位置和旋轉
都設置為0,如圖1所示。
圖1 相機位置和旋轉參數置0
圖2 相機視野和方向
????????此時相機的視野和方向如圖2,圖中和紅色/綠色/藍色線為世界坐標系三軸的軸線, 三個軸的正方向可參見右上角的坐標軸縮略圖(彩色實心圓指向軸的正方向);圖中橙色線段,端點標有
的是相機坐標系;相機的視野前方為世界坐標系的
負方向,相機視野的上方向為世界坐標系的
正方向。
? ? ? ? 為了使相機的視野前方與上方向與三維測量中慣用的相機相匹配,需要設置Blender中相機旋轉變換參數,旋轉軸均設置180°,如圖3所示。設置后,相機視野前方指向
正方向,視野上方指向
負方向。
? ? ? ? 但注意此時Blender中相機坐標系(橙色)的各軸方向為:????????
?????????——? 與世界坐標系
正方向一致;
?????????—— 與世界坐標系
正方向相反;
?????????—— 與世界坐標系
正方向相反;
圖3 旋轉軸均設置180°后的Blender相機坐標系
? ? ? ? 根據式(1-1),此時Blender相機坐標系下點的坐標與該點在世界坐標系下的表示
的關系為
?(2-1)
式中,對應旋轉變換參數
軸均設置180°。
? ? ? ? 但是,此時Blender相機坐標系和三維測量慣用的相機坐標系(本節開頭)定義仍是不同的,若在此時Blender相機節點的位置,建立三維測量慣用的相機坐標系,設該坐標系下點的坐標為,則
與該點在Blender相機坐標系下的坐標
之間的變換關系為
? (2-2)
????????式中,對應旋轉變換參數
軸旋轉180°,即Blender相機坐標系繞
軸旋轉180°可構造出三維測量慣用的相機坐標系。
3 投影儀變換參數配置
? ? ? ? 投影儀和雙目系統中右相機的地位是相同的。在Blender中可通過設置聚光燈(Spot Light)+圖像紋理的方式來模擬投影儀的效果。參考式(1-1),配置投影儀變換參數即確定與
? (3-1)
????????聚光燈的坐標系(即投影儀坐標系)與第2節中Blender相機坐標系的定義是類似的,也存在Blender投影儀坐標系與三維測量慣用的投影儀坐標系差距旋轉的問題,即
?(3-2)
? ? ? ? 若三維測量系統標定外參數已知,即三維測量慣用的投影儀坐標系與三維測量慣用的左相機坐標系的變換關系已知,則有
?(3-3)
? ? ? ? 聯立式(2-1)、(2-2)、(3-1)、(3-2)、(3-3)可求得投影儀變換旋轉參數和平移參數
,即可對應得到Blender聚光燈的變換參數。
??(3-4)
??(3-5)
注意,式中可理解為分別繞
三個軸各轉了180°,相當于沒有轉!
所以有
??(3-6)
最終實驗得到的一組投影儀變換參數和相機-投影儀位置關系如圖4所示
圖4?實驗得到的一組投影儀變換參數和相機-投影儀位置關系