相機取得一幀影像分為曝光與讀取兩個階段。相機使用的感光元件不同,相機的曝光時間和讀出時間的重疊關係也有所不同,分為交疊曝光和非交疊曝光兩種。
疊曝光和非交疊曝光相比,交疊曝光可以減少曝光時間對出圖時間的影響。
重寫後的句子: 在完成目前影格的曝光和讀出之後,才進行下一幀的曝光和讀出,這就是非交疊曝光。非交疊曝光影格週期大於曝光時間與影格讀出時間的和。
# 內觸發模式非交疊曝光
重疊曝光指的是目前影格的曝光和前一幀的讀出過程部分重疊,也就是說,下一幀的曝光已經開始,而前一幀的讀出仍在進行。交疊曝光影格週期小於等於曝光時間與影格讀出時間的和。
內觸發模式交疊曝光
對!上一段就是為了告訴你:後文敘述中無論目前影格曝光時間和上一格的讀出時間是否重疊都不要驚訝。
相機的觸發模式分為內觸發模式和外部觸發模式 2 種。
內觸發模式:相機透過裝置內部給予的訊號擷取影像。
外部觸發模式:相機透過外部給予的訊號擷取影像。軟體觸發和硬體觸發是外部訊號的兩種主要形式,外部訊號既可以是軟體訊號也可以是硬體訊號。外觸發模式如圖:
軟觸發:觸發訊號由軟體發出(也可以利用相機SDK提供的API介面進行軟觸發)。
當使用硬體觸發時,相機會透過其 I/O 介面與外部裝置連接,並接收來自外部裝置的觸發脈衝訊號來擷取影像。其實是直接對相機內部暫存器進行讀寫。下圖是海康相機的電源IO的6-pin線纜:
#其中,海康相機有1個光耦隔離輸入Line0 ,1個可設定輸入輸出Line2 ,可選擇一個配置為輸入訊號。
03 觸發輸出
相機的觸發輸出訊號是開關訊號,可用於控制外部設備,如警報燈、光源和PLC。觸發輸出訊號可透過Strobe 訊號實現。 當相機曝光時,會立即產生一個高有效電平的Strobe訊號。後文我們主要使用此訊號對Lidar等其他感測器進行硬觸發。這裡有一個Strobe的預輸出的概念。 Strobe訊號早於曝光生效。其工作原理為延遲曝光先進行Strobe輸出。此功能可應用於響應比較慢的外部設備。 Strobe預輸出時序如圖所示。 (後面會講為啥要延遲曝光)。##########Strobe訊號預輸出時序##################Strobe訊號預輸出時序#############現在我們回到正題吧,現在講起來就很快了。 ###
有三種主要的方式可以實現相機和光達的時間戳同步:硬觸發、軟觸發以及軟觸發並加以硬觸發。以下我以手繪示意圖的形式一一介紹。
先說硬觸發吧。一個MCU產生脈衝訊號對三個感測器設備進行硬觸發。
對於軟觸發硬觸發來說,可以先用相機SDK的API對一個相機進行軟觸發,然後利用相機的外部觸發訊號Strobe對雷達和相機等其他感測器進行硬觸發。
這裡需要注意一個問題,如果進行軟觸發的第一個相機在曝光的同時發出Strobe訊號,其他被硬觸發的感應器總歸是晚了一步,不能完全同步。因此,引入了先前提出的預輸出Strobe的概念,即在延遲曝光之前先進行Strobe輸出。
配置該模式時注意四點:
最後講講不被推薦的軟觸發。
首先呼叫API操作相比於硬觸發(對感測器內部暫存器直接進行讀寫操作)明顯是慢了,執行第二句指令API(2)前API(1)就已經花了些時間。
<code>//读取lidar和image数据的线程1while(1){API(1); //软触发第一个sensorAPI(2); //软触发第二个sensor//假设脉冲周期为0.5s}//处理数据线程2for(i=0;i<nimage gettickcount t1 gettickfrequency></nimage></code>
當處理單幀數據所需的時間超過0.5秒時,線程1將讀取下一幀數據,從而導致線程2的數據混亂。線程2必須在0.5秒內完成單一幀的處理,並且在每一幀後需要等待(1/fps-當前幀處理時間)。
以上是一文聊聊光達與相機標定的時間戳同步問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!