這篇文章是關于構建多攝像頭追蹤視覺AI應用的系列文章中的第三篇。我們將在第一部分和第二部分中介紹整體端到端工作流程和微調流程,以提高系統準確性。
NVIDIA Metropolis 是一個應用框架和一套開發者工具,可利用 AI 進行各行各業的視覺數據分析。其多攝像頭追蹤參考 AI 工作流由云原生 NVIDIA Metropolis 微服務提供支持,可跨多個攝像頭實現高級物體追蹤和定位。本文討論了攝像頭校準、如何使用 NVIDIA Metropolis 攝像頭校準工具包校準真實攝像頭,以及如何使用 NVIDIA Omniverse 擴展程序校準合成攝像頭。
攝像頭校準
攝像頭校正是確定特定攝像頭參數或估計攝像頭特征的過程。攝像頭校正可以將攝像頭在 2D 中看到的內容轉換為真實的坐標系統,它是許多基于視覺的應用程序的基礎。例如,在創建多攝像頭跟蹤應用程序時,需要攝像頭校正來完成主要涉及坐標轉換的特定操作。
攝像頭參數由兩部分組成:外部參數和內部參數。外部參數定義攝像頭相對于指定世界坐標系統的平移和旋轉,從而實現攝像頭坐標和世界坐標之間的映射。內部參數支持攝像頭坐標和像素坐標之間的映射。
多攝像頭追蹤中的攝像頭校正
適用于多攝像頭 AI 的 NVIDIA Metropolis 參考工作流主要將攝像頭用作傳感器,并廣泛用于檢測到的移動物體的時空方面。物體最初是在攝像頭視圖中的像素域中檢測的,而實現許多時空分析下游的一個重要步驟是將像素域與所需的坐標系統相關。
攝像頭定位對 Metropolis AI 工作流程中下游任務的整體準確性有重大影響。有關詳細信息,請參閱攝像頭定位指南。通過正確的攝像頭校正,它有助于在所需坐標系統中定位檢測到的物體,這在許多核心能力中發揮著至關重要的作用,包括但不限于:
- 使用攝像頭作為傳感器的定位服務:檢測攝像頭內的物體,并通過校準的攝像頭參數將其計算到具有真實含義的坐標系統上。例如,可以在平面圖上找到零售商店中從攝像頭看到的客戶。
- 多個攝像頭之間的活動相關性:當多個攝像頭針對同一坐標系統進行校準時,您可以跨攝像頭進行關聯和推理,以提供集成見解。例如,在共享坐標系統中的移動歷史記錄有助于確定camera_1檢測到的person_A和camera_2檢測到的person_B是否為同一人。第二個示例是無縫跟蹤一個人在倉庫中行走,該倉庫中的不同攝像頭覆蓋不同部分。
- 基于距離的指標計算:由于攝像頭的特性,直接在像素域中計算距離并不可靠。例如,X 個像素數所覆蓋的實際距離(以米為單位)可能會根據幀中的位置而有很大差異。根據笛卡兒坐標系校準攝像頭可以方便地計算距離。
圖 1 展示了一個實時定位系統示例,該系統在 100 個攝像頭覆蓋的 100,000 平方英尺倉庫空間的平面圖上追蹤每個人的位置。這樣的系統基于通過適當的攝像頭校準實現的上述核心能力而構建。

當前的 Metropolis 參考 AI 工作流程假設攝像頭沒有或幾乎沒有失真。這確保像素坐標系統和指定的世界坐標系統之間的映射是線性的。這是使用從兩個坐標系統中選擇的參考點進行計算的。
尤其需要一系列特征點,其中像素值 (x, y) 和世界坐標 (X, Y, Z) 是已知的。在我們的許多用例中,指定的世界坐標系統是一個 2D Cartesian 平面,或者更具體地說,是平面圖的圖像。使用平面圖的一個角作為原點,這個 Cartesian 可以轉換為平面圖圖像的像素值。
在這個意義上,世界坐標 (X, Y, Z) 變為 (X, Y),2D 到 3D 映射問題實際上成為 2D 到 2D 透視轉換問題,并且從特征點計算出的 3 x 3 單同矩陣作為此校正過程的輸出可用于稍后執行位置轉換。
圖 2 提供了兩個演示過程的示例,考慮到任務是在左側的攝像頭像素和右側的平面圖之間查找映射,因此只需一系列可同時位于左側和右側的特征{1, 2, 3, 4, …}即可。選擇這些特征序列后,攝像頭位置 (x, y) 和世界位置 (X, Y) 將作為相應的像素坐標給出,并且可以使用現有庫 (例如 OpenCV) 輕松計算單性矩陣。

現在,解決像素到世界的映射問題可以分解為選擇參考點,并在攝像頭幀和平面圖中獲取其像素值。這似乎不是一項容易的任務。設計適當的工具可以大幅減少工作負載并簡化任務。
使用 Metropolis Camera Calibration Toolkit 簡化現實世界的校準
借助 Metropolis Camera Calibration Toolkit,您可以執行攝像頭校準任務,并以適當的格式輸出文件,以便與其他 Metropolis 服務無縫連接。
Metropolis 攝像頭校準工具包提供:
- 項目組織、導入和導出
- 借助 Metropolis 媒體服務輕松導入攝像頭
- 用于選擇參考點的 GUI
- 用于自檢的動態二次投影誤差
- 支持 Metropolis 更多功能的附加組件,包括感興趣的區域(ROIs)和警戒線
- 使用 API 插入文件
提供三種校準模式:
- Cartesian 校準:一種在沒有參考建筑物圖的情況下創建外部校準的方法。作為用戶,你可以創建全局坐標系統。?
- 多攝像頭跟蹤:此模式是使用校準工具包的最常用方式,也是本文的重點。在此形式中,用戶提供每個攝像頭都要校準的建筑物地圖。?
- 圖像:在圖像上繪制 tripwires 和 ROIs 并獲取像素坐標。對于某些下游任務,需要在攝像頭視圖中添加某些偽影以計算特定指標,例如基于 tripwire 交叉的物體計數。?
最簡單的方法是使用示例應用中提供的資產導入項目。給定calibration.json、imageMetadata.json和Images.zip,用戶可以導入已設置的項目。
要從頭開始創建多攝像頭追蹤項目,您需要平面圖和媒體服務,或來自攝像頭的圖像。來自攝像頭的信息將被需要來幫助為 Metropolis UI 設置攝像頭。
在導入項目或創建新項目后,“Project”(項目)頁面將引導您完成創建必要構件的步驟。首先,上傳平面圖。平面圖可以是代表攝像頭所看到空間的建筑圖。
接下來,如果您使用的是媒體服務,則可以使用與部署案例最相關的URL導入傳感器。這是將傳感器導入工具包的最簡單方法,但不是必需的。如果您未使用媒體服務,則需要設置傳感器。
對于每個傳感器,首先創建一個新傳感器,并添加攝像頭詳細信息。這些詳細信息是將攝像頭導入 Metropolis 工作流程所必需的。關閉模式后,您將在網格中看到一個傳感器,您可以在其中單擊攝像頭圖標以上傳圖像。如果您在上一步中發現了傳感器,則應已從媒體服務中提取圖像。對每個傳感器重復此操作。
在校準時,為攝像頭圖像上的每個傳感器創建一個多邊形,并在平面圖上為其創建相應的多邊形。在平面圖空間中選擇攝像頭圖像中可見的點或特征點。這些對應的對使您能夠創建轉換矩陣,將攝像頭空間中的軌跡映射到平面圖上。
理想情況下,根據空間的大小選擇 8 到 15 個點。至少需要 8 個點才能開始。圖 2 顯示了平面圖中攝像頭圖像中可見的已識別特征點。如果某個區域的校正似乎出現偏差,添加更多點有助于改善軌跡。
創建兩個多邊形后,添加 ROI 多邊形、tripwires 和 direction wires。有關校正階段的示例,請參閱圖 3。

設置校正后,單擊“Calibrate”以查看二次投影誤差,并單擊“accept”(如果可接受)。然后單擊“Validate”以測試校正。繪制軌跡或多邊形以查看攝像頭域中的點如何落在平面圖上。如果平面圖上的投影點是可接受的,您可以驗證校正。如果不是,請在校正階段調整多邊形,直到校正被接受。
接下來,設置平面圖,并將攝像頭放在平面圖上。這是攝像頭顯示在 Metropolis 工作流程 UI 中所必需的。有關如何放置傳感器的示例,請參閱圖 4。

最后,導出可在 Metropolis 工作流程中使用的構件 calibration.json
、imageMetadata.json
和 images.zip
。
借助 Metropolis Camera Calibration Toolkit,您可以輕松簡化真實攝像頭上的手動攝像頭校準工作流程,它為下游 Metropolis 服務提供了可無縫使用的格式化文件。
NVIDIA Omniverse 中的合成攝像頭自動校準
Metropolis 參考應用也可以處理合成數據。參考應用提供在 NVIDIA Omniverse 平臺內創建的合成視頻數據。與真實的攝像頭一樣,必須對合成攝像頭進行校準,以便在像素坐標和平面圖之間進行映射。
通過完全控制 Omniverse 中的合成攝像頭,您無需手動選擇參考點。相反,Omniverse 中的自動校準 omni.replicator.agent.camera_calibration
擴展程序只需單擊按鈕即可輸出虛擬攝像頭所需的映射。這自動校準工具包含在 omni.replicator.agent
擴展程序中。如需了解詳情,請參閱 Omniverse 攝像頭校準文檔。
要使用 omni.replicator.agent.camera_calibration
,請首先創建一個頂視圖攝像頭,以及待校準的攝像頭。頂視圖攝像頭的確切攝像頭視圖將用作平面圖。對于每個待校準的攝像頭,擴展程序將自動從攝像頭視圖中選擇地板上的點,并計算它們在頂視圖攝像頭中的對應關系。
使用?omni.replicator.agent.camera_calibration
?擴展程序的詳細信息如下:
- 通過從攝像頭的視圖中隨機投射光線來自動選擇參考點,從而記錄光線與地面相交的位置。
- 攝像頭的外置矩陣來自攝像頭基元的轉換矩陣,并使用攝像頭基元的屬性計算內部矩陣。
- 將參考點的 3D 位置轉換為攝像頭圖像平面上的 2D 位置,并使用這些數據計算攝像頭的投影矩陣。
- 計算參考點的 3D 位置與俯視攝像頭的圖像平面之間的平移參數和縮放系數,這將提供攝像頭視圖和平面圖之間的對應關系。
- 通過均勻地將光線投射到地面,收集命中數據,然后根據這些命中的坐標生成 FOV 多邊形,確定攝像頭的視野(FOV)。
- 最后,將攝像頭的內部矩陣和外部矩陣以及投影矩陣,以及攝像頭視圖和平面圖之間的對應關系導出到 JSON 文件,并在場景的俯視圖圖像上渲染 FOV 多邊形。
在 Omniverse 中創建合成攝像頭相對容易,并且是為模型訓練和模擬等各種下游任務生成合成視頻數據的好方法。omni.replicator.agent.camera_calibration
為用戶提供了一個方便的工具,用于創建格式化的攝像頭校正文件,以便 Omniverse 中的合成攝像頭可以輕松用于各種 Metropolis 參考工作流程或應用程序。
結束語
攝像頭校正使 NVIDIA Metropolis 參考應用能夠在所提供的平面圖上定位檢測到的物體,并在多個攝像頭之間實現物體位置的空間關聯。這是朝著在智能視頻分析領域構建大規模、實時定位服務和其他有意義的服務邁出的重要一步。
如需了解詳情,請參閱以下資源:
- 多攝像頭 AI 工作流程開發者指南
- 借助 NVIDIA Metropolis 微服務和 NVIDIA Isaac Sim 實現從數字孿生到云原生部署的實時視覺 AI。
- 開始使用 NVIDIA Metropolis 微服務
關于技術問題,請訪問 NVIDIA 開發者論壇。請注意,您必須先注冊 Developer Preview 計劃。
?