說一說高速視覺

  我博士期間的研究方向是高速視覺,趁最近有空,給大家科普一下,關於高速視覺的內容。

高速相機的用途

  要說到高速視覺呢,那肯定要從高速相機說起,大家平時接觸到高速相機最多的就是網上的各種慢放動作,比如有人拍下了子彈穿過蘋果瞬間的畫面之類的,這些視頻都是通過高速相機拍到的,當然可能有部分是通過軟件合成的。在比如汽車碰撞實驗中,我們用高速相機去拍攝汽車撞擊牆面一瞬間所發生的事情,之後通過視頻慢速回放,去分析碰撞瞬間汽車形變、安全氣囊等的一些情況,可以獲知一些人眼難以觀察到的現象。在另外一些地方,比如說鷹眼系統,判斷球有沒有出界這樣的,也是有用到高速相機的。

高速相機的容量

  這個是離線高速相機,相機拍攝完的圖像存在相機內部的DDR裏面,但是DDR的容量是有限的,我們假設其中有32GB的容量,一張灰度圖像尺寸爲1024*1024像素,每個像素爲8-bit,那麼一張圖片的大小就是1MB,那麼一個32GB容量的高速相機,就可以存放32*1024張圖像,我們假設高速相機的幀率爲1024幀/秒,那麼總共可以記錄32秒的視頻內容。很顯然,這個時間太短了。那麼有人會說,壓縮啊,壓縮是個好辦法,可是在高速相機裏面很難辦到,因爲壓縮的速度達不到這麼快,所以高速相機裏面存放的都是原始圖像。

高速相機拍到的圖像會不會太暗

  我們看網上的一些比如蘋果被子彈擊穿的視頻,都感覺亮度是足夠的,但是高速相機1000幀甚至更多,拍到的圖像或者視頻會不會變暗呢。答案是可能的,不過具體得看所設的幀率,以及高速相機所用傳感器的感光性能。如果高速相機幀率爲1000幀/秒,那麼最大曝光時間也肯定是小於1/1000秒的,一般來說,好的高速相機,在1/1000秒曝光時間條件下,基本上是不會變得太暗,相對於手機的攝像頭,高速相機所用傳感器的感光性能明顯更優。當然,傳感器還有個增益,什麼是增益呢,簡單理解就是在數字圖像層面,把所有像素值乘以一個係數。我們都知道假如說一張灰度圖像,最大的像素值爲127,那麼這幅圖像很暗,那假如我進行增益,把所有像素值都乘以2呢,那整副圖像看起來就亮了很多,當然,噪聲會更明顯。

宣傳的手機高速攝影

  現在越來越多的手機開始宣稱自己擁有上百幀近千幀的高速攝影功能,這些功能呢,都是用智能算法合成的,對於自然界中具有連續運動的目標拍攝,沒有太大問題,因爲動作是連續的,是可以進行一定的預測的。但是對於連續性沒那麼強的動作,可能人工智能合成的結果就會出錯,這些高速攝影,玩玩還是可以的,但是要記錄類似碰撞實驗這樣的視頻資料,那肯定是不行的。

講一講視覺系統

  什麼是視覺系統呢,一般來說,主要是根據視覺信息進行伺服控制,簡單點說,就是看到了物體的狀態,並且根據狀態控制機械進行特定的操作。舉個例子,比如分揀紅蘋果和綠蘋果,傳送帶把蘋果送過來,攝像頭拍一下照片,檢測發現是紅蘋果,就控制機械臂進行抓取,然後放到左邊的籮筐裏,又過來一個蘋果,攝像頭採集數據,檢測發現是綠蘋果,這時候就控制機械臂將綠蘋果抓取之後放到右邊籮筐裏。這個系統就是一個以攝像頭爲傳感器,以機械臂爲執行機構的視覺系統。

說說實時高速相機

  前面講過離線高速相機,通過將採集回來的視頻存放在相機內的DDR上,慢慢傳輸導出到電腦端,然後慢速回放,查看所拍到的視頻,這就像我們平常拍照拍視頻那樣,拍完了回頭再看。然後我們上面又提到了視覺系統,如果是拍完了回頭再看,那獲得到的實時圖像信息就浪費了,所以就有實時高速視覺系統,把實時採集的圖像數據傳輸回電腦端,電腦端進行處理分析後,根據處理結果進行機械臂等執行機構的控制。

傳輸帶寬

  我們前面已經計算過了,如果一張灰度圖像尺寸爲1024*1024像素,每個像素爲8-bit,那麼一張圖片的大小就是1MB,按照1000幀/秒的幀率,整個系統的傳輸帶寬就是1GB/s,這個帶寬看起來並不大,但是事實上,很多高速相機的位寬是12-bit,也就是每個像素點以12-bit進行表徵,幀率高達10,000幀/秒,哪有的話,帶寬就是15GB/s,也就是120Gbps,這個帶寬是很嚇人的,USB 3.1 Gen2的最大傳輸帶寬爲10.0Gbps,PCI Express16X 128GB/S,這還是理論最大傳輸帶寬,實際上就算用PCIE 16X也會有大量的數據丟失。也就是說,圖像數據無法實時傳輸回電腦端。

電腦端圖像處理速度

  上面我們計算了高速視覺系統的傳輸帶寬最高可達120Gbps,圖像尺寸爲1024*1024像素,每個像素爲12-bit,幀率達10,000幀/秒。其實這麼大數據量的圖像,在電腦端讀取都是不可能的,更別說處理了,你可以對一張大小爲1024*1024的圖像進行二值化試試,看看計算耗時是多少。這段話總的意思是這麼大的圖像數據肯定沒辦法在電腦端進行處理。

FPGA處理器

  一般我們最常用的處理器就是CPU,當然GPU、ARM這些處理器也常用,在高速視覺系統裏面呢,一般都用FPGA處理器,原因有那麼幾個,1. 可以直接與圖像傳感器相連,2.計算並行度高。其實在一般的相機中,也常會選用FPGA來進行數據解析,當然一般的相機系統幀率不高,用的FPGA芯片也比較低端。圖像傳感器將數據傳到FPGA後,就在FPGA內進行處理,獲取圖像的相關特徵信息,而不是說傳到電腦端再進行處理。所以在高速視覺系統裏面呢,FPGA的功能包括數據恢復、像素校正、特徵計算,甚至包括機械控制等。圖像傳感器出來的數據是LVDS格式的,也就是差分信號,接到FPGA的差分引腳上,通過這個差分信號可以恢復出圖像像素信息。
  FPGA處理器常採用Verilog或者VHDL這種硬件編程語言進行開發,開發難度相比於CPU和GPU那肯定是高了不少,現在也有用HLS開發的,但是HLS開發在科研界用的挺多的,但是正在工程上用的不是很多,主要原因還是不夠好用。

國內外有哪些高速相機廠商

  http://www.lustervision.com/gsxj/這個鏈接是凌雲光代理的國外高速相機目錄,高速相機國外廠商一般是德國或者日本的居多,我們實驗室用的相機是日本Photron公司的,公司網址爲:https://photron.com/。
  國內的話,貌似做高速相機的不多,我瞭解的是富煌君達旗下的千眼狼,公司網址:http://www.gaosuxiangji.com/,看看這個公司域名還挺有意思的。然後高速相機裏面最核心的就是圖像傳感器,這個圖像傳感器的話,http://www.haitusense.com/index.html海圖微電子公司有在做,剩下的就不是特別清楚了。https://www.luxima.com/imageSensor.html這個是我們當時採購的一個圖像傳感器的網站。
  國內這些高速相機,他們做的都是離線高速相機,就是把拍攝的內容存在機載內存裏。

高速相機售價如何

  總的評價呢,肯定就是貴咯,畢竟都是國外的,國外的產品,能不貴嘛,一臺滿畫幅爲512*512像素,幀率爲2000幀/秒的高速相機,售價大約在10W以上,如果幀率更高,速度更快的高速相機可以賣到100W以上。之前詢價過千眼狼的高速相機,同樣配置大約是外國貨一半的價格吧,畢竟不便宜的話,大家肯定買進口的。
  當然,貴倒是其次,最大的問題是,某些高端的高速相機,以及高速圖像傳感器他不給進口,對中國封禁,意思就是再有錢也買不了。

實時高速視覺具體是做什麼的呢

  我博士課題就是實時高速視覺,具體做什麼呢,簡單來說,就是在FPGA片內進行圖像特徵進行提取,然後將特徵與圖像數據同時傳輸回電腦端,那麼在電腦端就可以直接進行圖像特徵的讀取而不需要再進行計算了。舉個例子,假如我要根據我要根據圖像的亮度信息控制機械臂運動,所以我在FPGA片上就對所有圖像像素值進行累加,並把像素值累加的結果放在圖像的最後若干個像素當中,也就是我原始圖像的最後若干個像素值被覆蓋了,取而代之的是圖像的像素值累加和。我在上位機端讀取這麼幾個像素值,就可以知道圖像的像素值累加和,與在上位機端進行圖像處理的時間相比,這個數據讀取時間微乎其微,也就是說通過在FPGA上進行圖像特徵的計算,使PC端圖像處理的時間大大減少。當然事實上,博士階段做的工作遠遠比這複雜,這裏就是介紹個簡單的例子。

  關於高速視覺相關的內容大概就是這麼多,以後有新的內容會及時更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章