GenICam:相機控制的通用標準

工業相機提供多種可設定的選項,包括曝光時間、增益、幀率、觸發模式與像素格式。在 GenICam 出現之前,相機製造商往往以不同方式實作並命名這些參數,並提供專屬的軟體程式庫來存取它們。

因此,整合來自不同供應商的相機經常需要針對特定應用的 SDK 與額外的軟體開發工作。將某個製造商的相機替換為另一製造商的型號,可能需要對擷取軟體或控制邏輯進行大量修改。

GenICam 由歐洲機器視覺協會(EMVA)開發並維護,它對機器視覺軟體如何探索、描述與存取相機功能進行了標準化。該標準與介面無關,可支援 GigE Vision、USB3 Vision、CoaXPress 與 Camera Link 等多種技術下的相容相機。

因此,基於 GenICam 相容介面所撰寫的軟體能夠透過統一的功能模型與不同製造商的相機進行通訊,從而降低整合複雜度並提升互通性。

GenICam 的運作原理

GenICam 並非單一協定,而是由多個相輔相成的標準所組成的框架,這些標準定義了機器視覺軟體如何探索、存取與控制相機功能。

GenApi

GenApi 是 GenICam 框架的核心元件。每台相容 GenICam 的相機都包含一個儲存在裝置本身上的 XML 描述檔。該檔案描述了相機可用的功能,包括參數型別、有效範圍、存取權限以及設定之間的相依關係。

GenApi 既定義了此描述檔的結構,也定義了用於存取相機參數的程式設計介面。視覺應用程式可以讀取該 XML 描述,判斷相機支援哪些功能,並透過標準化的軟體介面設定裝置。

SFNC(標準功能命名慣例)

SFNC 對常見相機功能的命名與行為進行了標準化。例如,曝光時間、增益與擷取幀率等參數在相容裝置之間使用一致的命名慣例。

這種一致性有助於減少廠商專屬的軟體差異,並提升不同製造商相機之間的互通性。

GenTL(通用傳輸層)

GenTL 將機器視覺軟體與底層硬體傳輸介面分離開來。它定義了一套標準化的傳輸 API,影像資料透過該 API 從相機傳輸到主機應用程式,無論連線使用的是 GigE Vision、USB3 Vision、CoaXPress 還是 Camera Link。

因此,影像擷取軟體通常能夠透過統一的傳輸架構支援多種介面技術。

這些模組共同構成了完整的 GenICam 技術堆疊:

模組

它標準化了什麼

為何重要

GenApi

透過基於 XML 的裝置描述實現相機功能描述與參數存取

軟體應用程式可以透過標準化介面探索並設定相容相機的功能

SFNC

通用的功能名稱與行為慣例(曝光、增益、觸發設定等)

減少廠商專屬的命名差異,並提升相容相機之間的軟體可攜性

GenTL

跨不同實體介面的影像傳輸 API

擷取軟體可透過統一的傳輸架構支援 GigE Vision、USB3 Vision、CoaXPress 與 Camera Link

GenICam 與傳輸介面標準

GenICam 常與 GigE Vision 和 USB3 Vision 一同被討論,但區分這些標準之間的關係十分重要。GigE Vision 與 USB3 Vision 定義影像資料如何透過乙太網路或 USB 傳輸層進行傳輸。GenICam 則對軟體如何探索、描述與控制相機功能進行標準化。

這些標準的設計旨在協同運作。GigE Vision 與 USB3 Vision 皆仰賴 GenApi、SFNC 與 GenTL 等 GenICam 元件來提供標準化的裝置控制與傳輸整合。

因此,許多機器視覺應用程式能夠支援跨不同傳輸介面的相機,同時為參數存取與影像擷取維持一致的軟體架構。無論相機是透過乙太網路還是 USB 進行通訊,都使用相同的 GenApi 功能模型與 SFNC 命名慣例。

GenICam 的實際應用

對於系統整合商與軟體開發者而言,GenICam 相容性有助於標準化工業相機在不同裝置與製造商之間被探索、設定與控制的方式。

當連接一台相容相機時,主機軟體可以讀取相機機載的 XML 描述檔。該檔案描述了相機可用的功能,包括支援的參數、存取權限與功能相依關係。隨後,軟體可以基於此裝置描述動態產生或設定其控制介面,從而減少對特定型號軟體實作的需求。

這對工業視覺系統的整合與維護具有重要的實際意義:

  • 使用某一製造商相機的生產系統,只要裝置遵循相同的 GenICam 標準,便有可能以較少的軟體修改工作量整合另一製造商的相機

  • IC Imaging Control、HALCON、MATLAB 與 OpenCV 等視覺軟體可以透過標準化的 API 或傳輸層存取相容 GenICam 的相機

  • 結合了不同相機型號或介面技術的多相機系統,通常可以在統一的軟體架構內進行管理

常見問題

不是。GigE Vision 是一種硬體與網路協定標準,定義影像資料如何透過 Gigabit 乙太網路傳輸。GenICam 則是一種軟體標準,定義相機參數如何被描述與控制。GigE Vision 相機必須實作 GenICam 以提供參數存取,但 GenICam 同樣適用於 USB3 Vision、CoaXPress、Camera Link 及其他傳輸標準。GenICam 與傳輸方式無關,而 GigE Vision 則不然。

來自成熟製造商的多數現代工業相機都支援 GenICam,尤其是通過 GigE Vision 或 USB3 Vision 認證的相機。其相容性透過 EMVA 認證流程進行驗證。專為嵌入式應用設計、採用 MIPI CSI-2 的相機在硬體層面並不原生實作 GenICam,但在受支援的平台上,軟體層可以將 MIPI 相機的控制對應為與 GenICam 相容的 API。

主要好處在於減少了整合工作量。開發者無需為每款相機型號學習專屬的 SDK,而是使用 GenApi 介面與 SFNC 參數名稱。當系統中接入新相機時,軟體會讀取其 XML 並自動調整適應。功能探索已內建於該標準之中,無需仰賴針對文件的特定實作。

它是一個儲存在相機韌體中的結構化描述檔,列出每個可控參數、其資料型別、允許的數值範圍、與其他參數的相依關係以及存取權限。該格式由 GenApi 模組所定義。當視覺軟體連接到相機時,會先讀取此檔案,並據此為該特定相機型號建構完整的控制介面。該 XML 是相機的自我描述:正是它讓隨插即用的相機整合成為可能。

詞彙表