文献标识码:A
DOI:10.16157/j.issn.0258-7998.181937
中文引用格式:李先友,赵曙光,段永成,等. 基于FPGA的实时MIPI CSI-2图像采集与处理系统[J].电子技术应用,2019,45(1):97-100.
英文引用格式:Li Xianyou,Zhao Shuguang,Duan Yongcheng,et al. MIPI CSI-2 image acquisition and processing system design based on FPGA[J]. Application of Electronic Technique,2019,45(1):97-100.
0 引言
为了满足嵌入式设备中日益增长的实时高清图像传输的带宽要求,ARM和Motorola等公司于2003年提出了移动产业处理器接口(Mobile Industry Processor Interface,MIPI)协议,以替换传统的并行数据接口。MIPI协议提出之初,主要有两个应用,分别是摄像头串行接口[1](Camera Serial Interface,CSI)和显示设备串行接口(Display Serial Interface,DSI)。目前,MIPI协议被广泛地应用于各种嵌入式设备中,如智能手机、VR、智能可穿戴设备和ADAS系统等。
本文采用LatticeFPGA设计了一种实时MIPI CSI-2图像采集与处理系统,并可以将处理后的图像实时地显示在HDMI接口的显示器上,最高可支持1080p60的分辨率。与其他平台相比,基于FPGA设计的本系统在实时性、功耗和成本以及系统升级等方面具有一定的优势。
1 系统硬件体系结构
本系统基于Lattice官方的嵌入式视觉开发套件(Embedded Vision Development Kit,EVDK)设计,该套件一共有三层电路板,分别为MIPI CSI-2桥接板、ECP5图像处理开发板和HDMI桥接板。其中,MIPI CSI-2桥接板上集成了索尼的IMX214摄像头和LatticeCrossLink系列FPGA[2];ECP5图像处理开发板上集成了Lattice ECP5系列FPGA和DDR3内存颗粒;HDMI桥接板上采用的是Silicon Image公司的Sil1136专用标准产品(Application Specific Standard Parts,ASSP)[3],用于将并行RGB数据转换成标准的HDMI信号输出至显示器。
设计中,采用CrossLink对IMX214输出的MIPI CSI-2数据进行采集,并完成协议解析、字节到像素转换等功能。随后将得到的Bayer格式的数据,以及相应的帧有效信号(Frame Valid,FV)与行有效信号(Line Valid,LV)发送至ECP5图像处理开发板。ECP5接收来自CrossLink的Bayer格式数据后,依次进行线性对比度展宽、白平衡、去除坏点、Bayer格式转RGB格式、图像缩放、图像倒置、饱和度调整和Gamma矫正等操作。随后,将处理后的数据以并行RGB的形式发送至Sil1136 HDMI桥接板。CrossLink和ECP5的内部逻辑功能框图分别如图1和图2所示。
本系统的硬件体系结构图如图3所示,ECP5除了实现了图像处理功能之外,还分别通过摄像头控制接口(Camera Control Interface,CCI)和I2C接口对索尼IMX214摄像头和Sil1136 ASSP进行配置。
2 FPGA模块设计
2.1 CrossLink MIPI CSI-2接收模块设计
如图4所示,MIPI CSI-2接口有高速和低功耗两种模式,高速模式下的电平标准为可配置低压信号[4](Scalable Low Voltage Signaling,SLVS),其共模电压为200 mV,摆幅也是200 mV;而低功耗模式的电平标准为LVCMOS 1.2 V。如果采用普通FPGA来连接MIPI CSI-2接口,一般需要两对IO来分别处理高速模式和低功耗模式,而采用Lattice最新推出的CrossLink器件,则可以将其与CrossLink的MIPI专用IO直接相连接。
由于MIPI CSI-2是一种高速串行差分接口,发送端与接收端之间的不同信号线的长度要尽可能地相等。然而,即使PCB严格地按照等长差分线设计,也难以保证不同信号线上的信号在同一时刻到达接收端[5]。因此,接收端需要对接收到的串行数据进行对齐操作。如图5所示,CrossLink对MIPI CSI-2串行输入依次进行了字节对齐操作和通道对齐操作,图中的B8是MIPI CSI-2协议中的同步识别码,表示每次传输的数据包的开头。
如图1所示,MIPI D-PHY CSI-2接收模块将对齐后的数据经过跨时钟域FIFO输出至时序控制模块和字节到像素转换模块。字节到像素转换模块将索尼IMX214摄像头输出的10位Bayer格式(即RAW10)的字节数据转换为10位并行的像素数据后输出。
2.2 ECP5图像处理模块设计
由于直接接收到的图像数据均值很小(表现为图像很暗),且可能会存在极个别像素为坏点的情况,因此,ECP5对接收自CrossLink的像素数据首先进行了线性对比度展宽(又称分段线性映射)、白平衡调整和坏点去除处理。
如图6所示,Bayer格式的图像数据中每一个像素仅仅包括了光谱的一部分,因此必须通过插值来得到每个像素的RGB值。本设计中采用了常见的邻域插值算法来实现Bayer格式到RGB格式的转换。
为了适配显示器的分辨率,本设计还在ECP5中实现了图像缩放模块,可将1080p(1 920×1 080)转化为任意分辨率(如1 280×720、2 048×1 536等)。图像缩放算法的核心就是插值算法,常见的插值算法有最近邻插值法、9点插值法、双线性插值法和双立方插值法等。其中最近邻插值法和9点插值法相对简单,但是效果也较为一般,如果缩放比例过大会导致严重的马赛克或者失真现象。双立方算法最为复杂,效果也最好,但是会耗费较多的FPGA逻辑资源。综合效果和资源两方面,本设计采用的是双线性插值,该算法的基本原理如下:
假设某个目标像素地址对应的源像素地址的浮点坐标为P(i+u,j+v),其中i和j为浮点坐标的整数部分,u和v为浮点坐标的小数部分。如图7所示,则该像素的值F(i+u,j+v)可由原图像中坐标为Q11(i,j)、Q21(i+1,j)、Q12(i,j+1)和Q22(i+1,j+1)的四个像素值确定:
图像倒置和帧率转换需要至少缓存两帧的图像像素值,而ECP5中的嵌入式块RAM(Embedded Block RAM,EBR)资源不足以缓存下这么多的数据,因此需要借助外部的DDR3 SDRAM存储。图像倒置和帧率转换的功能框图如图8所示,数据先通过写入FIFO,完成跨时钟域转换,然后借助Lattice的DDR3 SDRAM控制器IP完成对开发板上的两个Micron DDR3 SDRAM颗粒的读写,最后通过读取FIFO输出数据。此外,还可以通过配置信号使能或者禁止这两个功能,以及修改相关的参数等。帧率转换模块可以将每秒30帧的图像转换为每秒60帧,或者将每秒60帧转换为每秒30帧。
饱和度调整模块可以对像素的RGB值同时进行调整,可以只对其中的一个或者多个进行调整。其基本原理如式(2)所示,对RGB值分别乘以某一个系数,然后再减去某个值,从而到达对特定色彩鲜艳度的调整。
由于在某些显示器中,电流与电压并不是一个线性的关系,这会导致暗区的像素要比实际情况更暗,而亮区要比实际情况更亮。为了能够较好地还原实际的图像,设计中还实现了伽马校正(Gamma Correction)的功能。伽马校正的基本原理如式(3)所示,其中Po表示校正之后的值,Pi为输入的像素值,γ为伽马系数值。
为了便于在FPGA中实现,可以对式(3)稍作处理。如式(4)所示,其中b表示像素值的位宽。
3 系统验证与结果分析
为了验证系统的功能,将索尼IMX214配置为1 920×1 080,60 Hz,RAW10格式输出。通过Lattice Diamond中的Reveal工具采集ECP5中的相关输入输出信号波形图。由于MIPI CSI-2输入信号属于专用IO信号,无法直接使用Reveal采集,因此借助Active HDL软件对CrossLink中的设计进行仿真,以获得相关信号波形。并通过禁止(或者使能)相关模块功能,对比输出图像的效果。
3.1 CrossLink相关信号波形图
CrossLink的仿真波形图如图9所示,其中csi_clk_p为MIPI CSI-2输入时钟信号,为连续模式(Continuous Mode)。csi_d0_p、csi_d1_p、csi_d2_p和csi_d3_p为MIPI CSI-2的四个数据输入通道(Data Lane)。fv为帧有效信号,lv为行有效信号,pixdata为 RAW10格式的像素数据输出。
3.2 ECP5相关信号波形图
ECP5的Reveal采集波形图如图10所示,其中CSI2_sens_fv为CrossLink输出的帧有效信号,CSI2_sens_lv为行有效信号,CSI2_sens_data为RAW10格式的像素数据。vsync和hsync分别为帧同步信号和行同步信号,data_enable为数据有效信号。pix_red、pix_green和pix_blue分别为输出的像素的RGB值信号。
3.3 图像处理效果对比图
图像处理效果对比图如图11所示,为了保证显示效果,在测试过程中,Bayer转RGB模块和Gamma校正模块一直处于使能的状态。其中图11(a)为原图,即未使用白平衡、线性对比度展宽、图像缩放与倒置、饱和度调整等模块;图11(b)为仅使用白平衡和线性对比度展宽模块所获得的图像;图11(c)为使用了饱和度调整之后的图像;图11(d)为使用了图像缩放与倒置之后的图像。
通过对比,可以发现IMX214直接输出的像素信号值很小,因此显示的画面很暗。经过线性对比度展宽等模块的处理后,图像又显得过亮,且色彩不够鲜艳。再经过饱和度调整模块处理后,图像取得了较好的色彩效果。最后,图像倒置模块也成功地对图像完成了倒置的操作。
4 结论
本文设计并基于Lattice FPGA实现了一个实时的高清图像采集与处理系统。其最高可采集1080p60的实时图像,并完成一系列的实时图像处理功能。由于采用了模块化的设计思想,使得其具有良好的可扩展性和可裁剪性。基于本设计,稍加改动还可以完成例如边缘检测、图像分割与拼接等常规的图像处理功能。表明本系统具有良好的灵活性与较高的实用价值。
参考文献
[1] MIPI Alliance,Inc.MIPI alliance specification for camera serial interface 2(CSI-2)[Z].2009.
[2] Lattice Semiconductor.CrossLink family data sheet[Z].2018.
[3] Lattice Semiconductor. Sil9136-3/Sil1136 HDMI deep color transmitter data sheet[Z].2018.
[4] MIPI Alliance,Inc.MIPI alliance specification for D-PHY[Z].2009.
[5] 李凯.MIPI CSI/DSI简介及信号和协议测试方法[J].国外电子测量技术,2012,31(3):11-15.
作者信息:
李先友1,赵曙光1,段永成1,王建强2
(1.东华大学 信息科学与技术学院,上海201620;2.上汽大众汽车有限公司,上海201805)