FPGA实现的鱼眼镜头图像畸变矫正显示

(整期优先)网络出版时间:2023-07-26
/ 2

FPGA实现的鱼眼镜头图像畸变矫正显示

蒋艳玲1,,柳鹏程2,邓帆影1

(1.四川长九光电科技有限责任公司,四川 绵阳 621000;

2.四川九洲防控科技有限责任公司,四川 绵阳 621000)

摘要:为适应正常的视觉习惯,将曲面的鱼眼镜头图像转成矩形平面图像,通过算法和实际成像对比,选用透视投影的畸变校正算法。重点介绍了透视投影的畸变校正算法,以及基于FPGA的透视投影算法实现的内容。应用结果表明,FPGA实现的鱼眼镜头畸变矫正显示,达到了预期的效果。

关键字: FPGA; 鱼眼镜头 ; 畸变校正 ;透视投影 ;

中图分类号:TP301.6 ,TP311文献标识码:A

FPGA Realization of Fish-Eye Lens Image Distortion Correction Display

JIANG Yan-ling1,LIU Pong-cheng 2, DENG Fan-ying1

 ( 1.Sichuan Changjiu Photoelectric Technology Co., Ltd, Mianyan 621000 ,China

2.Sichuan Jiuzhou  Falcon Technology Co., Ltd,Mianyan 621000 ,China)

Abstract: adapt to normal visual habits, the curved fisheye lens image is converted into a rectangular planar image. Through algorithm comparison and actual imaging comparison, a perspective projection distortion correction algorithm is selected. The distortion correction algorithm of perspective projection, the implementation of perspective projection algorithm based on FPGA. The application results show that the fish eye lens distortion correction display implemented by FPGA achieves the expected effect.

Key words:  FPGA;  Fish-Eye Lens ;Distortion Correction; Perspective projection

1引言

鱼眼镜头的视场极大,其拍摄的一帧图像包含的信息非常丰富,不需要旋转和扫描,可以以凝视的方式进行工作,再结合体积小,隐蔽性强的优点,鱼眼镜头拥有独特的应用价值,但同时也导致了不可避免的图像畸变,即在相同的面积下,鱼眼图像中心附近信息量最大,形变最小,而随着半径的增加,信息量减小,形变逐渐增大。

本文的系统在实际应用中,为获得大视场采用光学鱼眼镜头,导致图像畸变失真,不符合正常视觉习惯,则需要对鱼眼图像进行畸变校正[1]

2畸变矫正算法原理

工程上最常用的鱼眼成像的校正算法为基于双经度的校正方法[2]和基于透视投影的畸变校正方法[3],因为本文系统对光学成像系统参数十分清楚,不需要大量采样即可得到标定参数,同时基于双精度的校正算法有一定的校正效果但边缘模糊畸变不能完全校正,所以本文系统选用了透视投影的畸变校正算法。为了便于接口通信和软件算法实现,实现图像的实时处理,选用了FPGA处理芯片,实现鱼眼镜头的畸变校正显示。

透视投影算法原理如下:首先确定畸变校正后的图像大小及像素坐标系,然后确定光学成像系统的方位角和俯仰角,并将畸变矫正后的图像中像素坐标与方位角和俯仰角一一对应。

假设畸变校正后的图像大小为,因为摄像机视角为(以度为单位),(本文以摄像机视角为为例),因此。令图像中心与光轴中心重合,因此对应的方位角范围为,(目前摄像机方位角范围,从左到右方位增加),对应的俯仰角的范围为(目前摄像机俯仰角范围,从上到下俯仰减小)。将方位角与畸变校正后图像的宽一一对应,将俯仰角与畸变校正后图像的高一一对应,即每一个像素对应的角度范围为

透视投影的畸变校正算法核心为首先确定非畸变图像像素点坐标,然后反向映射到鱼眼图像坐标,最后通过插值得到像素点的灰度值,实现详细步骤如下:

1)以图像中心与光轴中心重合,以中心为原点,建立光学像素坐标系;

2)畸变校正图像像素坐标,计算该像素对应的方位角、俯仰角(以弧度表示);

3)计算该点对应光学像素坐标系下的直角坐标

4)计算该点对应光学像素坐标系下与轴的夹角

5)计算该点对应光学像素坐标系下在

平面的投影矢量与轴的夹角

注:为了保证象限一致,编程时一般采用

6)计算光学像素坐标下,该点与光轴中心的距离

注:其中为标定所得畸变参数,(针对)。

7)计算该点相对与光轴中心的偏移

8)计算目标像素点坐标

注:(为像素中心点坐标对于图像为)。

此时计算得到目标像素点为小数,而图像显示像素以整数为单位,因此无法得到为非畸变图像在像素位置的灰度。本文采用双线性插值算法来实现像素点的灰度值计算,原理如图1所示。

图1 双线性插值原理示意图

其中的向下取整,的向下取整

9)线性插值计算公式如下:

10)最后得到畸变校正后的图像

简化公式后得到:

3基于FPGA的算法实现

在外部摄像机安装好后,镜头和图像对应关系就确定了,为了降低FPGA算法实现的复杂度,简化硬件与软件系统,这里通过采用 Matlab运算生成dx/ dy系数表,系数表通过网口传递给FPGA存在DDR3内。

硬件系统的搭建和软件算法功能的实现如下所述。

3.1硬件系统

该算法的实现是在公司其他项目平台上进行了验证,硬件系统的搭建如图2硬件示意框图所示,本文中FPGA芯片选用的是XILINX公司的7系列工业级芯片XC7V690T997;网口芯片选用的千兆网口RTL8211E芯片,DDR3选用SM41J256M16M芯片,视频芯片选用的是模拟视频芯片ADV7179。基于该硬件系统平台可以实现软件算法功能的实现和验证。

图2 硬件示意框图

3.2软件实现

软件功能示意框图如图3所示,有网口控制模块,DDR3缓存控制模块、运算和缓存控制模块、视频显示模块组成。其中网口控制模块通过控制网口芯片,实现鱼眼图像数据和dx/ dy系数数据的输入,并将接收的数据解码发送给DDR3缓存控制模块。DDR3缓存控制模块通过控制DDR3存储芯片,分别存放来自网口解码的图像数据和dx/ dy系数数据。运算和缓存控制模块实现畸变矫正算法的功能和校正后显示数据缓存的功能。视频显示模块,将显示用的数据根据视频芯片显示格式的要求生成显示信号输出。

其中运算和缓存控制模块的实现是整个鱼眼镜头畸变矫正显示功能实现的关键。

图3 软件功能示意框图

4运算缓存控制模块

运算缓存控制模块的功能框图如图4所示。

图4 运算缓存控制模块功能框图

该模块在FPGA 内生成了双口DRAM和FIFO,分别存放从DDR3读出的图像数据和dxdy系数数据,便于获取插值像素点相邻4点的图像数据和dxdy系数。同步逻辑控制根据显示节拍,取出图像数据和系数用于数据同步,传递给运算单元进行双线性插值[7]运算,运算完成的图像数据放入异步FIFO缓存,显示控制模块通过对ADV7170的逻辑时序控制,控制显示节拍,截取900*900图像中的640*512部分数据用于图像显示。

运算单元实现的双线性插值运算如图5所示,用了两个减法器,八个乘法器,三个加法器和一些延时单元组成[4]

图5运算单元

5实现结果

设计中,选用XILINX公司的型号为的工业级FPGA,采用verilog语言对各个控制模块进行设计,在VIVADO2018.3中进行时序仿真,图像接入显示器,经功能验证如图6对比图所示,双经度的校正图像不均匀,效果较差,而透视投影校正图像显示清晰,边缘没有缺失,校正均匀效果较好,满足预期效果。

图6试验结果对比图

6结论

本文介绍了FPGA实现的鱼眼镜头图像畸变校正显示,从试验结果看,FPGA处理芯片降低了图像处理延时,实现了图像实时处理显示;通过MATLAB的运算得到dxdy系数,根据校正图像的先后顺序缓存对应的系数表,简化了硬件和软件系统,降低了工程实现的复杂度;双经度的校正图像不均匀,边缘模糊效果较差,而对比透视投影的算法,图像边缘正常没有失真,图像显示清晰、均匀,达到了预期的效果。

附中文参考文献:

[1]李江华,李恩德. 针对鱼眼图像边缘校正缺失的快速校正算法[J]. 小型微型计算机系统,2021,42(3):578-583. DOI:10.3969/j.issn.1000-1220.2021.03.022.

[2]赵丹阳,吕勇,李晓英. 鱼眼图像畸变的双向经度快速校正方法[J]. 红外技术,2019,41(10):956-962.

[3]王向军,白皓月,吴凡璐,等. 基于改进球面透视投影的鱼眼图像畸变校正方法[J]. 图学学报,2018,39(1):43-49. DOI:10.11996/JG.j.2095-302X.2018010043.

[4]孙红进. FPGA实现的视频图像缩放显示[J]. 液晶与显示,2010,25(1):130-133. DOI:10.3969/j.issn.1007-2780.2010.01.025.