工业相机软件开发 影像数据获取流程

整理一份原始影像数据从传感器获取模拟信号到影像后处理的过程


工业相机软件开发 影像数据获取流程_第1张图片


考虑到成本因素,相机多采用单通道CCD/CMOS获取原始影像,后续通过色彩差值恢复为彩色图像,梳理记录一下编程中整体数据从产生到后处理流程以及诸多需注意的步骤

1. 相机部分

通过硬件指令设置好相机的相关参数之后, 开启相机,相机从CCD/CMOS获取到模拟信号,经模数转换之后,可以得到原始的数字信号,这时考虑到原始数据的大小以及传输带宽需要决定是否需要进行相机内部的预处理,这部分由使用的相机功能决定,在选择合适的相机时需要考虑。若可进行预处理进行数据的有损压缩,可大幅度降低传输数据量。

原始数据的大小以8bitRAW格式图像数据为例,一张1920*1080的影像需要 1920*1080/1024/1024=1.97M, 60FPS的视频数据每秒获取的数据量为 1.97*60=118.65 M/s。

GigE接口带宽 100Mbps =12.5 M/s

1394a接口带宽 400Mbps = 50 M/s

1394b接口带宽 800Mbps = 100 M/s

USB3.0接口带宽 5Gbps= 640 M/s 

以上接口带宽皆为理论数据。

解决完数据量的问题之后相机部分获取的原始影像数据可以成功传输至PC端。

2. 计算机部分

控制相机参数及相机预处理部分一般可以通过与厂商提供的API在PC端进行调整。在PC端获取原始数据之后,如果是通过滤光片方式获取到的bayer format的原始数据,在debayer之后就可以通过单通道的原始影像数据获取彩色影像数据,这一步在OpenCV中可以通过cvtColor(bayer, bayer2rgb, CV_BayerRG2RGB) 进行转换,得到RGB三通道影像数据之后便可进行post-processing

Bayer颜色转换及处理算法,不同厂商采用的滤光片方式可能会有所差异,以具体相机为准,原理可参考

http://www.siliconimaging.com/Specifications/AN3%20-%20Bayer%20Color%20Processing.PDF


本文关注点在于原始影像数据的获取流程及部分SDK开发思路梳理,具体工业相机工作原理例如接口介绍,单通道恢复彩色图像算法等可参考博文

http://blog.csdn.net/x454045816/article/details/54601920



你可能感兴趣的:(相机软件开发)