11

AI老铁 · 2020年08月14日

海思芯片上LDC(镜头畸变校正)功能原理浅析

转载自:海思芯片上LDC(镜头畸变校正)功能原理浅析
作者:ltshan139

前言

海思35xx芯片专门有一个模块GDC(Geometry Distortion Correction)来对畸变图片进行校正。它里面其实有两个应用case,一个是fisheye校正,另外一个是LDC镜头畸变校正。

个人理解,两者主要区别是,前者主要用在摄像头镜头视角范围非常大,比如接近或超过180度,且想非常精细的对图像进行反畸变从而获得比较好的效果。 它一般需要先通过标定来获得摄像头畸变内参K1,K2,K3以及P1和P2(Kx指径向畸变参数,P指切向畸变参数),然后再进行反畸变。 而后者LDC主要用在较广角镜头,只考虑径向畸变的场景,不需要标定,算法实现较简单,只要调节一个参数K就能达到较好的一个效果(当然比不上FISHYE校正)。

本博文主要讨论LDC镜头畸变校正功能。

LDC镜头畸变原理

一般地,镜头畸变分为径向畸变和切向畸变。而径向畸变又分为桶形畸变(barrel)和枕形畸变(Pincushion)。它们在图像上表现如下所示。

20200728141831871.png

                                                                                                      切向畸变(正方形图像畸变成梯形)

LDC只考虑径向畸变,其简化的模型示意图如下所示。

20200728143118863.png

其中,2020072814333427.png为正常图像上某点到图像中心的距离,而20200728143433826.png为畸变图像上相同点到图像中心的距离。它们之间的关系可以简化为:

20200728143241972.png

这里只有一个参数K(上面鱼眼模型里面有三个参数K1,K2以及K3)。

容易知道,对于桶形畸变,K>0,而对于枕形畸变,K<0。当然K具体为什么值,要根据实际效果来调整。

LDC在海思上面的实现

主要参考下面截图(GDC调试指南.pdf)来进行参数调节。上面所提到的参数K和下图红框所示参数相对应,是校正效果调节的主要项。

202007281503179.png

具体效果对比图如下所示(左图为校正前的图,右图为校正后的)

屏幕快照 2020-08-14 下午1.41.33.png

当然,也可以根据上面的数学模型自己来写代码实现,整个算法代码还是比较简单的。



海思AI芯片系列文章



更多海思AI芯片方案学习笔记欢迎关注海思AI芯片方案学习

推荐阅读
关注数
871
内容数
40
海思AI芯片(Hi3519A/3559A)方案学习系列笔记,欢迎关注。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息