余靓辉 ,吴 刚 ,石金进
(1.三峡大学机械与动力学院,湖北 宜昌 443002;2.福建工程学院交通学院,福建 福州 350118)
图像采集技术是利用摄像头实时获取图像信息的手段[1],图像信息能够更加真实地反映事物的外观特点,且精确程度较高。因此,该技术在工业和科学领域应用越来越广泛并受到相关研究人员的关注,尤其是在智能机械领域,但也随之呈现出不足之处。传统的图像采集系统依靠摄像头进行拍摄,而后期的显示处理则需依靠个人计算机(Personal Computer,PC),一台智能机器配备一台PC,对于空间有限的工业安装非常不友好,并且成本和功耗都较高。综上所述,本文对传统的图像采集系统进行改进,设计了一种基于Linux的模块化图像采集系统[2],该系统所需体积小、成本低,可以满足大部分智能机械需求。
该图像采集系统设计主要分为硬件和软件两个部分。硬件部分主要包括主控芯片、图像采集模块、图像显示模块和数据传输模块;软件部分主要包括嵌入式Linux系统、外围设备的驱动程序以及图像采集与显示流程。系统总体架构如图1所示。
图1 系统总体架构
图像采集系统的硬件平台设计方案采用主控开发板加外围设备的方式,硬件结构框图如图2所示。
图2 硬件结构框图
主控芯片使用的是国产厂商瑞芯微生产的RK3399[3],该芯片一共有6个核心处理器,主频最高可达2.0 GHz。另外,此芯片支持千兆以太网网络通信,接口资源丰富,支持USB3.0、HDMI、MIPI双摄像头等设备接口,整体性能优异。在功能上也有很大的优势,能够播放各种超高清4K视频,能处理复杂的互动操作等。系统通过摄像头采集图像信息,采集完的图像信息经过ISP编码压缩[4],而后通过通用串行总线(Universal Serial Bus, USB)Type-C接口传输至操作系统进行解码处理,系统处理后的图像再通过高清多媒体接口(High Definition Multimedia Interface, HDMI)传输至显示屏进行显示。而最终的图像信息需提供给用户分析储存,因此在上述基础上添加了以太网传输模块,用户可通过以太网网线直连,将图像信息高速传输至PC。
图像采集模块采用第三代嵌入式图像采集技术[5],该技术可以提高图像实时性,增大传输距离,提高图像质量,同时还能够对采集到的图像进行高速压缩处理,来降低视频图像对传输速率和存储空间的要求。在接口设计上采用Type-C接口,它是USB的一种硬件接口标准,集充电、显示、数据传输等功能于一身[6]。Type-C接口最大的特点是支持正反两个方向插入,传输速度可达10 GB/s,向下兼容USB1.0和USB2.0,并且支持热插拔。在Linux系统下,Type-C有Ⅴ4L2标准协议支持,并且可以将驱动加载于系统当中,因此非常适合应用在获取和传输图像数据的过程中,其电路原理图如图3所示。
图3 Type-C电路原理图
摄像头在Type-C接口正常工作只需要4根线,两根差分信号线DN和DP用于数据传输,ⅤBUS用于给外围设备提供电源和GND,保证接口的通信正常。
图像显示模块采用HDMI接口,它是一种较新的视频和音频传输接口[7],目前在功能上已基本替代ⅤGA(Ⅴideo Graphics Array)接口。相较于ⅤGA,HDMI可以传输音频且插拔方便,简化了设备的接口和连线,也提供了更高的数据传输带宽,能够传输高清无压的视频和音频信息,其电路原理图如图4所示。
图4 HDMI接口电路原理图
开发板先给HDMI模块提供5 Ⅴ电源,供电正常后,该模块会检测IIC总线通信是否成功,此处可检测HDMI的热插拔功能是否正常。通信成功后,HDMI接口只发送、不接收,以此完成数字图像信息的传输。
以太网是现实世界中最普遍的一种计算机网络,它实现了网络上无线电系统多个节点发送信息的想法。相较于目前使用广泛的无线局域网,以太网网线直连的稳定性、抗干扰性则要强很多,也正因此特性,常常选择使用以太网进行系统的图像数据传输,其电路原理图如图5所示。
图5 以太网模块电路原理图
该模块含4对差分信号线(MDI0+/MDI0-,MDI1+/MDI1-, MDI2+/MDI2-, MDI3+/MDI3-),差分信号线两对发送两对接收,等长设计,旨在解决千兆以太网通信缓慢和丢包的问题。利用修改线长TXDLY/RXDLY使4对差分信号线延时统一,实现千兆以太网的最佳通信[8]。
除了以上的图像采集、图像显示和以太网传输模块,还需要其他模块的支撑,例如用于测试的串口模块,通过串口通信的方式实现核心板与PC的连接[9],便于程序开发和功能调试;还有开发板必需的存储模块EMMC,该模块可以提供开发板固件的烧录地址,使开发板得以正常运行。
该图像采集系统主要包括底层驱动开发和上层应用开发两大部分。
底层驱动是与硬件直接联系在一起的,包含了引导加载程序、Linux操作系统内核、根文件系统和外围设备的驱动程序,它们组合在一起形成了一个完整的嵌入式Linux系统,并运行在核心板上。
上层应用是根据底层驱动提供的设备节点去通信和调用的外围设备,在底层驱动的基础上,设计ISP图像编解码和图像显示的程序[10]。
系统搭建主要由以下几个步骤完成。
步骤1:移植引导加载程序,完成内存初始化等基本工作,启动内核并把CPU控制权交给内核。
步骤2:定制Linux操作系统内核,为上层应用提供必需的设备节点,裁剪不需要的功能,提升内核的启动运行速度。
步骤3:搭建根文件系统,为系统提供配置文件载体,为上层应用程序提供所需的稳定环境。
步骤4:修改内存地址分区表,使程序能够烧录并稳定运行在开发板中。
模块化图像采集系统流程如图6所示。
图6 图像采集流程图
由摄像头采集得到外部最原始的图像信息,而后,ISP模块对图像进行处理,将最原始的YUⅤ格式图像信息转换为能更好地被该系统处理的RGB格式,对转换后的图像信息进行编码压缩,便于传输;压缩后的文件经Type-C高速传输至主控RK3399,主控对文件进行解码后可通过千兆以太网将信息传输至PC查看分析,也可直接通过HDMI接口将信息传输至显示屏上显示。
本系统的最终目的是实现核心板替代PC,因此,最重要的是保证外围设备驱动在核心板的程序下正常运行,通过内核配置驱动,可在文件系统中查看外围设备相应的设备节点,同时,摄像头采集的图像信息会在显示屏上实时显示,如图7所示。
图7 摄像头采图
摄像头采集的图像信息在HDMI显示屏上显示正常,并且可以设置摄像头的亮度、曝光、白平衡等信息。为保证以太网高速传输的功能正常,对网口网速也进行了测试,如图8所示。
图8 以太网测试
由图8可知,该模块网速平均可达938 MB/s,稳定且不丢包,满足该系统高速传输功能需求。
本文提出了一种基于Linux的模块化图像采集系统,该系统可以采集外部图像信息,将采集的信息实时有效地传输至显示屏显示,并且可以通过以太网传输模块将图像数据高速传输至PC端供用户查看分析。该系统相较于传统的图像采集系统,具有体积小、成本低、传输速度快等特点,适合工厂批量化生产,在未来的农业生产、医疗器械、产品检测等智能机械领域有着非常广阔的应用前景。