這部分是我們所做的實驗室影象採集系統中的乙個功能模組。 我們的相機採集系統本來是可以直接進行採圖存圖操作的, 但是並不保證同步, 或者說他們之間的同步效能並不高。 由於, 老闆要求實現精確的同步採圖功能, 所以這個模組需要我們進行修改。
因為這是乙個新的專案需求, 我們就想從相機的角度出發, 看看相機自身有沒有給我們提供了這個乙個相關的處理方法, 如果有的話, 那麼問題就好辦了。通過查閱相機的文件說明, 我們發現我們使用的這個相機 有兩種工作模式:
freerun 自由工作模式
syncin1 (硬體控制)觸發工作模式
從這個圖中, 我們可以看到我們可以設定相機的syncin1 模式下的觸發事件, 當他為上公升沿觸發的時候, 就進行採圖。
ie, 我們之前一直使用的工作模式是 freerun 工作模式, 在這個模式下面可以實現相機的採圖存圖功能, 但是同步效能不佳。
這個syncin1 工作模式給我們提供了乙個思路, 可以通過硬體來解決這個同步觸發的問題。
很顯然的, 我們需要乙個可以發射脈衝的工具, 在這裡就是我們所用到的觸發器了。當然這裡還涉及到觸發器的控制, 這個其實就是串列埠通訊部分的內容了。常用的串列埠通訊的解決方案有這麼兩種:
直接利用 ms 的mscomm 控制項來實現, 不過這個控制項在 vs2013 中並不是自帶的,需要額外註冊, 配置
使用網上的開源工具類 cserialport, 這個工具類提供了串列埠通訊的基本功能, 我們看了下裡面最核心的函式其實還是 createfileex
到這裡, 同步拍攝的原理已經縷清楚了, 實現起來也相對比較容易。不過當我們使用相機來拍攝乙個計時中的秒錶的時候
最後兩位資訊有時候還是不同步。ie, 存在100ms左右的時間差。
但是這是為什麼呢? 原理上使用觸發器進行觸發, 所有相機收到的都是同乙個觸發脈衝, 所有相機都是統一型號, 理論上不該有這麼大的時間差。
後來經過除錯發現, 問題出在相機的幀快取中。
由於我們的相機底層是通過維護乙個 5 幀大小的幀佇列來負責影象的正常更新顯示的, 當我們抓取的時候, 我們可能是抓取到了這個佇列中的任意乙個, 由此導致出現時間差。
在明白了這點之後, 我們只需要在抓取之前清空掉棧的快取, 這樣就可以保證抓取到的就是我們的觸發脈衝發射過來的這個時間點上所抓取到的了。
相機矯正 小公尺9相機使用技巧
小公尺9作為小公尺首款後置三攝的手機,搭載4800萬超廣角ai三攝,採用索尼imx586 4800萬感測器,硬體規格十分強悍。這麼好的硬體配置,要是不掌握一些拍攝技巧就浪費了,下面給大家介紹小公尺9相機使用技巧 小公尺9相機使用技巧 1 智慧型超廣角 可能有些使用者對於超廣角相機缺乏了解,不知道什麼...
2017 02 16 相機標定文獻閱讀
overview of camera calibration for computer vision 引言傳統的攝像機定標方法 利用最最優化演算法的攝像機定標方法 利用透視變換矩陣的攝像機定標方法 兩步法雙平面定標方法 攝像機自標定方法 利用本質矩陣和基本矩陣的攝像機定標方法 利用絕對二次曲線和外極...
tx2 相機呼叫
gstreamer使用管道 pipelines 進行配置,使用高效的gstreamer管道可以使csi獲得高質量效能,以下為常用的一條管道 可以使用gst launch 1.0 執行gstreamer管道。gst launch 1.0 nvcamerasrc video x raw memory n...