天天看點

說一說高速視覺

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

高速相機的用途

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

高速相機的容量

  這個是離線高速相機,相機拍攝完的圖像存在相機内部的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端圖像處理的時間大大減少。當然事實上,博士階段做的工作遠遠比這複雜,這裡就是介紹個簡單的例子。

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