image_pipeline
標準的 ROS 攝影機堆疊:校準、校正、立體視覺與深度
授權條款
BSD-3-Clause
概述
image_pipeline 是 ROS 標準的攝影機處理堆疊,由 ros-perception 維護。它的套件把機器人攝影機從驅動程式的原始輸出,一路處理成經校準、校正的影像與 3D 資料:camera_calibration(互動式棋盤格校準)、image_proc(去馬賽克與校正)、stereo_image_proc(視差與點雲)、depth_image_proc(深度轉點雲與配準)以及 image_view。幾乎每一台配備攝影機的 ROS 機器人,都會執行這個流程的某一部分。
這個堆疊由可組合的 ROS 2 節點構成,節點之間以 image_transport 主題與 camera_info 校準訊息連接。camera_calibration 提供經典的互動式 GUI,從棋盤格畫面計算單目或雙目內參,並寫入攝影機驅動程式。image_proc 接收原始影像與 camera_info,輸出單色/彩色及其校正後的版本,負責 Bayer 去馬賽克與畸變去除;裁切/縮放/抽取節點則以低成本調整資料流。stereo_image_proc 在校正後的影像對之間執行區塊匹配視差,產生立體點雲;depth_image_proc 則將 RGB-D 感測器的深度影像轉換成點雲、將深度配準到彩色影格,並轉換公制/量化編碼。所有功能都支援執行期組合,可在 ROS 2 上建立零拷貝的程序內流程;而它所建立的慣例(camera_info 的語意、image_raw/image_rect 的主題命名)是整個 ROS 生態系中攝影機驅動程式與感知程式碼之間事實上的約定。
為何重要
image_pipeline 定義了攝影機在 ROS 中如何運作:大多數機器人工程師都是用它的校準 GUI 校準自己的第一台攝影機,而它的主題與 camera_info 慣例,正是讓任何 ROS 攝影機驅動程式都能與任何 ROS 感知堆疊溝通的約定。
解決的問題
攝影機的原始輸出未經校準、有畸變、是 Bayer 格式且只有 2D。image_pipeline 以標準、可組合的節點將它轉換成經校準與校正的影像、視差圖與點雲,讓感知程式碼永遠不必重新實作攝影機的底層處理。
重點
- 適用於單目與雙目攝影機的互動式棋盤格校準 GUI
- image_proc:由 camera_info 驅動的去馬賽克、畸變去除與影像校正
- stereo_image_proc:區塊匹配視差與立體點雲
- depth_image_proc:深度轉點雲,以及深度到彩色影像的配準
- 可組合的 ROS 2 節點,支援零拷貝的程序內流程
適用對象
- 整合攝影機的 ROS 開發者
- 打造立體視覺/RGB-D 流程的感知工程師
- 校準自己第一台攝影機的機器人學生
- 遵循 ROS 慣例的攝影機驅動程式作者
限制
- 與以學習或 SGM 為基礎的匹配器相比,經典的區塊匹配立體視覺已顯過時
- 校準 GUI 的工作流程是手動的,沒有自動化的免標靶校準
- 效能調校(QoS、組合)留給整合者處理