只有 MP4 影片也是可以進行 SLAM 的!
不過你需要先做一點點前處理,因為大多數 SLAM 系統(像 ORB-SLAM3、RTAB-Map)需要的輸入是影格序列(image sequence)或是ROS 影像話題(image topic)。
✅ 可行流程:用 MP4 執行 SLAM
🪜 Step-by-step 操作流程如下:
1️⃣ 影片轉影格(MP4 → 圖片序列)
使用 ffmpeg
或 Python 把 MP4 影片拆成影格:
➤ 使用 ffmpeg
這會把影片拆成連續圖片,例如:
➤ 使用 Python(可控制時間範圍)
2️⃣ 建立 SLAM 配置與檔案清單
以 ORB-SLAM3 為例,它需要一個 rgb.txt
:
你可以假設影片是 30 fps,frame 間隔為 0.033333
秒。
3️⃣ 準備相機參數(相機內參)
如果你知道影片是用哪個相機拍的,提供對應的 .yaml
設定檔會比較準確。
如果不知道,也可以用簡單的預設值開始實驗(例如 focal length 約為影像寬度的 1 倍)。
範例 TUM.yaml
(供 ORB-SLAM3 使用)你可以從官方範例中修改即可。
4️⃣ 執行 SLAM 工具
使用 ORB-SLAM3:
或是用 RTAB-Map 也支援 rtabmap-dataset
模式匯入圖片序列進行 SLAM。
🚀 可搭配強化的工具
工具 | 作用 | 說明 |
---|---|---|
Cosmos tokenizer | 將影片壓縮成 token 加速處理 | 搭配視覺模型訓練 |
Isaac Sim 錄影 | 產生模擬影片資料集(可導出 MP4) | 模擬真實世界訓練場景 |
ffmpeg | 拆影格、調整解析度與格式 | 非常好用的 CLI 工具 |
🎯 結論
🟢 是的,你可以只用 MP4 執行 SLAM。
不過你需要先:
- 把影片轉成影格(PNG/JPG)
- 給 SLAM 工具正確格式與相機參數
📌 SLAM 本身其實不關心資料從哪來,只要有一連串時間有序的影像,它就能建圖與定位。
如果你提供 MP4 路徑,我也可以幫你自動產生影格資料夾、rgb.txt,以及 ORB-SLAM3 的啟動腳本。
需要我幫你寫成 Python 腳本或 bash pipeline 嗎?還是你想先嘗試哪一個 SLAM 工具?
================================
mp4@SLAM 這裡是完整的 Python 腳本,幫你從一個 MP4 檔案:
- 擷取每一影格並儲存為圖片
- 根據影片的 FPS 自動產生對應的
rgb.txt
(供 ORB-SLAM3 使用)
🐍 mp4_to_slam_dataset.py
🧪 使用說明:
- 把你的 MP4 影片放在同個資料夾下或給絕對路徑
- 修改
main()
裡的video_path
參數 - 執行:
完成後會產生:
slam_frames/
:影片拆出來的圖片rgb.txt
:ORB-SLAM3 可以讀取的影格清單
如果你接下來想結合 ORB-SLAM3、RTAB-Map,或是我幫你接成 Docker / ROS 環境,也可以再告訴我 🔧
要不要我下一步幫你做 ORB-SLAM3 的執行範例整合?
沒有留言:
張貼留言