iT邦幫忙

2024 iThome 鐵人賽

DAY 1
1

假設有兩張拍攝同一張書桌,如果沒有GPS,我們要如何得知在現實中兩個拍攝的 3D 座標?答案是利用兩張照片中共同的資訊,譬如說我們可以透過同個物體在兩張照片中的位置,以此推斷照片拍攝時相機的相對位置。

筆者會在這系列中介紹電腦視覺中的這一類問題:多視圖幾何 (Multiview geometry),他是 3D 電腦視覺中的重要基礎,包含如何估計兩張圖片之間的相機姿態 (camera pose estimation)(如下圖)

https://ithelp.ithome.com.tw/upload/images/20240915/20169418fs3EwHJlZw.png

到相機的連續幀的估計(visual odometry),如下展示

https://ithelp.ithome.com.tw/upload/images/20240915/20169418huQyylZYmu.png

還會介紹相機姿態的整體優化 (Bundle Adjustment)和基本的 3D 重建。希望也可以涵蓋一些延伸例如:同時定位與地圖型建置 (SLAM)。

此類問題在於電腦視覺(computer vision)、電腦圖學(computer graphic)、機器人(robotics)領域都是重要的問題,也有大量的應用,例如筆者的研究方向是視角合成(novel view synthesis),目標是要重建場景且渲染出任意視角的圖片,類似運動比賽中的子彈時間(如下展示),就需要依賴這類算法預先計算出相機的座標位置。

Yes

為了介紹這個些演算法,內容的一開始會先介紹電腦視覺的基本知識,例如:圖片(Image)、像素(pixel)、針孔相機(pinhole camera)、3D 空間的座標轉換等,如果讀者有已經有相關背景不妨跳過。

實作

本系列會帶領讀者一步一步的用 Python 和 opencv 的程式庫,實作出連續的相機姿態估計,也就是最基本的 visual odometry 和 3D 重建,並且以 matplotlib (2D) 和 vispy (3D) 作出簡單的視覺化,讓讀者可以親身體驗電腦視覺的魅力。另外,也會嘗試使用 numpy 自己簡單的寫出一些 opencv 的 API ,增進讀者(和筆者)對於視覺算法底層的了解。

先備知識

預計本系列會是理論與實作並重,理論的部分,如果有一點線性代數與微分的基礎會幫助了解。實作的部分會需要有基本的 Python 能力,以及一點 numpy 運算的熟悉度。

參考

筆者主要參考來自 Richard Hartley 的電腦視覺聖經《 Multiple View Geometry in Computer Vision》,其他的參考有:《視覺SLAM 十四講:從理論到實踐》、《 Probabilistic Robotics 》,加上自己設計的實作內容。


下一篇
Day1: 相機與投影 (ㄧ)
系列文
3D 重建實戰:使用 2D 圖片做相機姿態估計與三維空間重建30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言