http://m.casecurityhq.com 2022-05-17 10:23 來源:
在某些應(yīng)用場合中,如果需要處理來自多臺相機的圖像時,則圖像記錄的精確時間或準(zhǔn)確的先后順序?qū)罄m(xù)處理至關(guān)重要。若相機能夠提供時間戳,則可為不同的圖像數(shù)據(jù)建立時間基準(zhǔn)。然而,相機的時間基準(zhǔn)要能夠精確匹配,這一點至關(guān)重要。通過使用“精確時間協(xié)議”(PTP),HK IDS GigE Vision相機(固件版本2.2或以上)能夠輕松實現(xiàn)同步。
借助精確時間協(xié)議(PTP)同步HK IDS GigE Vision相機
精確時間協(xié)議(PTP)是一種時間同步標(biāo)準(zhǔn)(IEEE1588),它使通過網(wǎng)絡(luò)連接的設(shè)備實現(xiàn)時間同步。支持此標(biāo)準(zhǔn)的相機可在特定的周期內(nèi)與主時鐘交換同步信息。利用各自發(fā)送和接收時間中的時間戳信息,相機內(nèi)部的計數(shù)器可實現(xiàn)精確地校準(zhǔn)和同步。
所有固件版本為2.2及以上的HK IDS GigE Vision相機都可與PTP兼容!
IEEE1588時間戳是以1970年1月1日0時0分為計時起點,支持1納秒(1 GHz)的時間分辨率。然而,由于延遲和信號運行時的不準(zhǔn)確性,聯(lián)網(wǎng)設(shè)備的時間同步精度達微秒級。
PTP應(yīng)用案例
PTP作為一種基礎(chǔ)協(xié)議,通過為圖像數(shù)據(jù)提供時間基準(zhǔn),為各種應(yīng)用奠定基礎(chǔ)。視應(yīng)用要求及網(wǎng)絡(luò)基礎(chǔ)設(shè)施的復(fù)雜性的不同,PTP可以通過不同的方式來實現(xiàn)。
01 相對時間戳同步
在本案例中,所有相機都在同一個網(wǎng)絡(luò)。其中一臺相機為主服務(wù)器,其余相機為從服務(wù)器。所有從相機的時間戳與主相機同步。相機既不提供絕對時間戳(實時),同時在無其他操作的情況下,也無法實現(xiàn)同步觸發(fā)。
優(yōu)勢:
■ 在該應(yīng)用場合中,相對時間戳確定所有相機圖像記錄的時間分配。此外,相對時間戳還能確定哪一張圖像為第一張,以及不同相機的圖像時差大小。
■ 無需額外的操作和成本,即可為特定的網(wǎng)絡(luò)基礎(chǔ)架構(gòu)生成相對時間戳。
02 利用絕對時間同步時間戳
本案例中,聯(lián)網(wǎng)相機與外部主時鐘同步。該PTP主時鐘可以是支持“硬件時間戳”的網(wǎng)卡——若無硬件支持,同步精度將顯著降低。除必要的硬件外,還需要支持PTP的軟件。
優(yōu)勢:
■ 具備全局(實時)時間戳的圖像內(nèi)容可跨越當(dāng)前的應(yīng)用限制,與任何其他使用實時時間基準(zhǔn)的信息相關(guān)聯(lián)。
■ 對于其它使用全局時間基準(zhǔn)的應(yīng)用場合或評估,圖像內(nèi)容可以重用。
使用PTP:“相對同步”
硬件設(shè)置
兩臺不同的固件版本為2.2(支持PTP)的HK IDS GigE Vision相機(GV-526xFA-C和GV-504xCP-M)連至同一網(wǎng)絡(luò)交換機。一臺額外的主機PC,僅用于控制和配置相機,不涉及相機的PTP同步。
軟件設(shè)置
可通過“PtpControl”下的相機功能節(jié)點圖查找所有PTP配置功能。只有固件需為2.2或以上版本的相機才能使用這些功能。我們在主機PC上安裝配套軟件,來設(shè)置PTP同步。
將一臺相機配置為PTP主時鐘
GV-526xFA-C相機應(yīng)設(shè)置為PTP主時鐘。在軟件中打開相機,并將“PtpEnable”設(shè)為“True”,啟用PTP。另外,將“PtpSlaveOnly”設(shè)為“False”為相機賦予“主時鐘”角色。
# Configure master camera
PtpEnable = True
PtpSlaveOnly = False
將另一臺相機配置為PTP從時鐘
GV-504xCP-M相機應(yīng)設(shè)為PTP從時鐘。同理,將“PtpEnable”設(shè)為“True”以啟用PTP。此時,這臺相機僅作為從時鐘使用。將“PtpSlaveOnly”仍設(shè)為“True”。
# Configure slave camera
PtpEnable = True
PtpSlaveOnly = True
創(chuàng)建主從等級
在完成主從時鐘配置后,主-從等級將自動創(chuàng)建。對于主時鐘相機,可通過“PtpStatus”由“Listening ”變成“Master”來確定。對于從時鐘相機,可通過“PtpStatus”先由“Listening”變?yōu)?ldquo;Uncalibrated”,并在與主時鐘相機同步后變?yōu)?ldquo;Slave”來確定。
在通過相機的新PTP功能完成主從等級創(chuàng)建后,“相對同步”也隨之完成。
啟用時間戳
如果您希望對圖像數(shù)據(jù)使用已同步相機生成的時間戳,則必須將時間戳作為元數(shù)據(jù),啟用元數(shù)據(jù)(及塊數(shù)據(jù))傳輸。
首先,將“ChunkModeActive”設(shè)為“True”,以通過圖像緩沖區(qū)啟用塊數(shù)據(jù)傳輸。然后,通過“ChunkSelector”選擇“Timestamp”,并通過“ChunkEnable”開關(guān)啟用時間戳。
# activate chunk data creation
ChunkModeActive = True
# enable "ChunkTimestamp"
ChunkSelector = Timestamp
ChunkEnable = True
這時,相機所采集的每一張圖像將具備相應(yīng)的時間戳,并借助圖像緩沖區(qū)(通過塊數(shù)據(jù))傳輸至主機PC。這樣,塊數(shù)據(jù)及時間戳可通過任何視覺標(biāo)準(zhǔn)軟件進行讀取。
圖像采集
如果應(yīng)用中需要對帶時間戳的圖像數(shù)據(jù)進行處理,則圖像的記錄時間和相機的觸發(fā)至關(guān)重要。這種情況取決于來自多臺相機的圖像是否需要完全相同的采集時間(同步圖像采集)以及時間關(guān)聯(lián)偏差(時間戳抖動)有多大。根據(jù)應(yīng)用要求,須選擇適合相機的觸發(fā)模式。在做出這一選擇時,要考慮的決定性的因素不僅包括不同軟件和硬件信號模式的精度,也包括部署和使用所需操作和成本。為檢查先前配置的“相對同步”,我們使用每秒脈沖數(shù)(PPS)信號來觸發(fā)相機,以實現(xiàn)同步自由運行。
同步自由運行
顧名思義,在PTP功能啟用的情況下,每臺相機(主時鐘相機和從時鐘相機)的PPS信號會每秒生成一個。因此我們可借助PPS信號檢查相機的同步狀態(tài)。這一信號被設(shè)置為觸發(fā)源,因此每秒鐘將觸發(fā)一次圖像采集。除了由“相對同步”導(dǎo)致的幾微妙的偏差,相機生成的圖像時間戳應(yīng)為一致。通過PPS信號實現(xiàn)所有相機同步自由運行的操作如下:
# image acquisition configuration for both cameras
LineSelector = Line2
LineMode = Output
LineSource = PPS
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Line2
# Limit bandwidth on both cameras
DeviceLinkThroughputLimit = 60000000
# Start acquisition on both cameras
Execute AcquisitionStart
同步PPS觸發(fā)信號將觸發(fā)相機在同一時間點進行圖像采集
讀取時間戳
為在應(yīng)用場合中處理時間戳和圖像內(nèi)容,您須讀取當(dāng)前圖像緩沖區(qū)的塊數(shù)據(jù)。塊數(shù)據(jù)為制造商相關(guān)的有效負(fù)載緩沖區(qū),其存儲布局通常未知,因此我們將通過節(jié)點圖來讀取各個元數(shù)據(jù)。為此,所有現(xiàn)有的元數(shù)據(jù)及其標(biāo)準(zhǔn)的節(jié)點名稱將從GenTL傳輸至節(jié)點圖,以便通過標(biāo)準(zhǔn)的API進行訪問。
以下的源代碼片段為您演示如何從圖像緩沖區(qū)中提取時間戳。安裝包也為您提供了有關(guān)塊數(shù)據(jù)處理的完整源代碼示例。
// Get buffer from device's datastream
const auto buffer = m_dataStream->WaitForFinishedBuffer(5000);
// check buffer for chunks
if (buffer->HasChunks())
{
// update nodemap with current chunk data
m_nodemapRemoteDevice->UpdateChunkNodes(buffer);
// Get the value of the timestamp chunk
const auto chunktimestamp = m_nodemapRemoteDevice->FindNode<peak::core::nodes::FloatNode>("ChunkTimestamp")->Value();
}
總結(jié)
當(dāng)涉及圖像內(nèi)容的時間分配時,PTP是多相機應(yīng)用場合中一個重要的基礎(chǔ)功能,能夠輕松實現(xiàn)相機間的相對同步,無需額外的硬件和軟件支持。在許多應(yīng)用場合中,相對相機同步也足以確保圖像在“相同”的時間或以正確的順序使用。相機還配備外部定時器,適用于全局同步。