2016-07-26 60 views
1

我遇到了時間戳問題,如果有人能幫助我,我將不勝感激。我正嘗試將SensorEvent同步到從ImageReader接收的圖像。什麼是CameraDevice的時間戳記的時基

我知道SensorEvent的時間戳是自操作系統啓動(正常運行時)以來的納秒。 另一方面,圖像的getTimestamp(來自ImageReader)以納秒爲單位進行測量,但時基取決於提供圖像的來源(Camera,CameraDevice等)。在我的情況下,我使用的CameraDevice(camera2),但我還沒有找到什麼是CameraDevice的時基。

我將不勝感激任何幫助。 乾杯

回答

3

這是記錄在SENSOR_INFO_TIMESTAMP_SOURCE字段,雖然有兩個選項,第一個可能不會幫助你。

  • UNKNOWN:「時間戳從android.sensor.timestamp在納秒和單調的,但不能與來自其他子系統的時間戳(例如加速計,陀螺儀等),或者相同或不同的其他實例攝像機設備在同一個系統中,數據流之間的時間戳和單個攝像機實例的結果具有可比性,所有緩衝區的時間戳和單次捕獲產生的結果元數據是相同的。「

  • REALTIME:「來自android.sensor.timestamp的時間戳與elapsedRealtimeNanos()的時間基準相同,並且它們可以與使用該基準的其他時間戳進行比較。」

不幸的是,如今大多數設備都報告未知的,因爲他們沒有精確的同步由elapsedRealtimeNanos()(這在Linux內核級別,一般是CLOCK_BOOTTIME時間源)所使用的時基。

但是,實際上,大多數設備的攝像機時間戳只來自CLOCK_MONOTONIC源,通常與nanoTime()的時基相同。

但時間戳通常不是非常準確(意思是關閉幾毫秒),這就是爲什麼這些設備報告未知,因爲時間戳準確度不夠高,不足以可靠地與其他傳感器的時間戳相關聯。

+0

現貨!非常感謝Eddy。 –

+0

所以,如果我理解正確,這是一個只讀標誌,而不是可以設置爲獲得基地固定正確的時間戳!我注意到IMU和相機報告的時間戳差別很大!例如通過1秒鐘!有沒有改進?如果我仍然想要一個足夠合理的同步,可以做些什麼? –

+0

如果攝像機設備報告未知,並且傳感器正在使用REALTIME(我認爲是這種情況),則差異可能非常大,因爲在設備睡着時不會增加。在攝像頭運行時,差異不會增長(因爲設備不會進入睡眠狀態),所以原則上可以在啓動時測量兩次,並使用該差異將時間戳修正爲相同的時基。 –