说一说高速视觉

  我博士期间的研究方向是高速视觉,趁最近有空,给大家科普一下,关于高速视觉的内容。

高速相机的用途

  要说到高速视觉呢,那肯定要从高速相机说起,大家平时接触到高速相机最多的就是网上的各种慢放动作,比如有人拍下了子弹穿过苹果瞬间的画面之类的,这些视频都是通过高速相机拍到的,当然可能有部分是通过软件合成的。在比如汽车碰撞实验中,我们用高速相机去拍摄汽车撞击墙面一瞬间所发生的事情,之后通过视频慢速回放,去分析碰撞瞬间汽车形变、安全气囊等的一些情况,可以获知一些人眼难以观察到的现象。在另外一些地方,比如说鹰眼系统,判断球有没有出界这样的,也是有用到高速相机的。

高速相机的容量

  这个是离线高速相机,相机拍摄完的图像存在相机内部的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端图像处理的时间大大减少。当然事实上,博士阶段做的工作远远比这复杂,这里就是介绍个简单的例子。

  关于高速视觉相关的内容大概就是这么多,以后有新的内容会及时更新。

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