0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于DYNA4实现摄像头畸变应用

Vector维克多 来源:Vector维克多 2026-02-26 11:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

DYNA4为乘用车和商用车提供各种复杂的仿真模型,包括车辆动力学模型、发动机模型、动力系统模型、电机模型、交通环境模型和ADAS物理传感器模型等。由于摄像头需要同时满足视场更广、更近的成像距离、体积更小以及成本更低等多方面要求,镜头设计过程中往往会主动接受一定程度的畸变。较大的畸变有助于实现更大的视场角(FOV)、更紧凑的结构、更高的透光效率以及更低的制造成本。摄像头畸变模型用于描述真实镜头成像与理想针孔成像模型之间的偏差,其建模精度将直接决定像素坐标与空间方向之间映射关系的准确性。畸变模型不准确将引入系统性几何误差,并对相机标定、多目标融合以及下游感知与定位算法产生基础性影响,尤其在广角和鱼眼摄像头中尤为关键。

以下将基于DYNA4实现摄像头畸变应用进行系统介绍。

01摄像头畸变的种类

摄像头的畸变是镜头设计者主动接受的一种权衡选择,因为人们想让它“看得更广、更近、更小、更便宜”。畸变并非设计缺陷,而是光学系统在视野、体积和成本之间做出的工程取舍,其影响通过畸变模型在软件中进行描述和补偿。

现实中快速评估畸变程度,可以通过查看图片边缘的弯曲程度、以及寻找图片中直线物体(如建筑边框、门框、地砖缝、路沿、车道线、护栏等)的弯曲来近似评估。表达摄像头畸变有很多成熟的方法,包括参数化畸变模型和查表式畸变模型。参数化畸变模型具有参数少、物理意义明确和易于标定的优点,适合大多数标准镜头;而查表式畸变模型通过直接存储像素映射关系,能够准确描述复杂和非对称畸变,但代价是存储开销大、外延性差以及工程复用性差等因素。下面是学术和工程界常用的一些畸变模型:

>OpenCV normal

>Kannala-Brandt(KB)

>Scaramuzza

>Polynomial 4th Degree Distortion

>Modified Division Distortion

对于视场角小于约120°的标准摄像头系统,采用基于针孔模型的OpenCV normal畸变模型,可在保证物理可解释性的同时获得稳定且成熟的工程效果。对于视场角在120°~180°范围内、畸变以径向对称为主的车载鱼眼摄像头,OpenCV fisheye是不错的选择,Kannala-Brandt畸变模型在OpenCV中以fisheye模型的形式进行了工程化实现,并在算法表达和数值稳定性方面进行了优化,FOV视角延展到大于180°广角以外。对于存在明显非对称与高阶残余畸变的非标准广角镜头,Scaramuzza(OCamCalib)模型因其高度通用的几何描述能力更加适合。对于仅针对特定镜头进行的离线高精度拟合,而不太在乎其物理可解释性能力的,可以使用Polynomial高阶多项式畸变模型或Modified Division Distortion模型作为补充方案。

其中,OpenCV normal和KB(OpenCV fisheye)均属于OpenCV范畴,有官方网页且Github上有开源代码更新;Scaramuzza自带辨识代码的工箱箱,从使用角度来说是较为方便的。在量产项目和多系统集成场景中,通常会优先考虑生态成熟度、算法兼容性和长期可维护性,例如选择OpenCV normal或Kannala-Brandt等畸变模型。

02摄像头的参数以及参数获取手段

摄像头通常有内参和外参两组数据。摄像头内参用于描述镜头和成像系统的几何特性,定义空间光线到像素坐标的投影关系;外参用于描述摄像头相对于车辆或其他传感器的空间位置和姿态,两者共同决定了视觉信息在系统中的几何一致性,是多传感器融合和高精度感知的基础。

图2中红色方块代表摄像头的空间位置使用,棋盘格为拍摄对象(棋盘格黑白等间距)。图中棋盘上的绿色点在大地坐标原点,摄像头相对于棋盘格,可以通过平移向量t和旋转矩阵R来表达。当空间六坐标(位置姿态)固定后,摄像头在空间角度便固定了。

图3为摄像头的视角,即拍摄出来的照片。可以发现,虽然棋盘格黑白等间距且线性,但是投影到照片里并不是等距离变化,甚至直线变为曲线。从棋盘格里各个交点,映射到照片里各交点坐标的这一个过程,便是拟合摄像头的内参畸变的重要步骤。

通常典型内参包括:

>焦距:fx ,fy

>主点:cx ,cy

>畸变参数:

径向畸变(k1, k2, …)

切向畸变(p1, p2)

或鱼眼/多项式模型参数

图3中主点,接近图片的正中央位置,为光轴与成像平面的交点(投影中心落点),可以看出示例中的摄像头是偏右侧的,同时该主点通常近似为畸变的中心点。相对外参,内参是摄像头的固有属性,对于不具备变焦的摄像头,其内参基本是固定不变的。简而言之,内参定义了空间光线如何被投影到图像平面上的像素坐标。对比如下:

内参 外参
描述对象 摄像头自身 摄像头在空间中的位置
是否与安装相关
是否与分辨率相关
是否与镜头相关 强相关
是否需要标定 需要 需要

对于内外参的获取,通常可以使用棋盘格拍照然后通过辨识工具来辨识,例如:

OpenCV:

https://docs.opencv.org/4.x/db/d58/group__calib3d__fisheye.html

Scaramuzza:

https://sites.google.com/site/scarabotix/ocamcalib-omnidirectional-camera-calibration-toolbox-for-matlab提供的函数或工具箱。

其中棋盘格可以采用工具里推荐的黑白相间棋盘格,也可以是自定义的其它棋盘格布置形式,还可以从供应商处直接获取。由于外参是空间尺寸,所以也可以直接用机械测量距离和角度获取的。维克多汽车同时也提供相关项目服务。

03DYNA4摄像头传感器模型参数填写

DYNA4支持不同的传感器畸变模型。在DYNA4中,实现摄像头仿真的步骤如图4。首先打开车辆的动画配置文件.dapx并进行编辑,从左侧Animation Object Database里将Camera拉入Animation Project,按需将Camera固定在空间某一固定位置,也可以放置在车辆里面。然后如红色2处,选择对应的畸变模型(图4中是KB模型的参数)。不同的畸变模型有不同的参数,如红色3处为模型内参。

摄像头的安装位置,即摄像头外参,在红色4处填写,包含平移和旋转两大部分。这里注意摄像头坐标的定义,DYNA4里摄像头坐标满足右手定则,摄像头正前方是X正,正上方是Z正。根据不同畸变模型里坐标定义的差异进行坐标的角度转换即可。平移数值分别为相对于整车或路侧的相对的平移安装距离(取决于摄像头是固定在车上还是在路侧安装的RSU)。

除了摄像头内外参数,还有常规参数,例如水平垂直分辨率、ISO、光圈、快门时间等。填写完毕后,便实现了摄像头在DYNA4里的设置。

9f7719f0-095b-11f1-90a1-92fbcf53809c.png

图4:DYNA4摄像头参数设置

04DYNA4摄像头传感器标定的复现以及棋盘格的制作

在摄像头参数配置完毕之后,可以对软件仿真的效果与实际标定的结果进行对比。首先需在DYNA4里制作实际过程中使用的棋盘格,如图5采用的黑白交错、等间距的棋盘,棋盘上也可以写字或者其它标记以便于后续校对,然后填入摄像头的外参来确定摄像头安装位置。图5是OpenCV建议的10*7等间距的棋盘格,这里加入了一些其他文字。图6是自定义的棋盘格。在DYNA4中实现上述功能较为方便。在DYNA4的动画模块中,可以通过棋盘格图片贴图的方式,将棋盘格PNG或JPG图片直接贴附在平面对象上,其整体尺寸可通过设置贴图平面的长和宽进行调整。

05不同畸变模型在DYNA4中的应用效果

由于篇幅有限,选取Scaramuzza、KB、OpenCV normal/pinhole模型在DYNA4里的应用为例。

5.1Scaramuzza的应用效果

图7是Scaramuzza提供的工具箱中的示例棋盘格图像。Scaramuzza对大广角畸变的摄像头有较好的辨识效果。图片展示了DYNA4中基于Scaramuzza摄像头模型的棋盘格仿真结果与实际标定过程中棋盘格图像的对比。

图7a是在DYNA4里填入内外参,然后配置对应的棋盘格,仿真得出的对应棋盘格照片。图7b为实际标定过程摄像头在某一角度下拍出来的棋盘格照片。图7c是实际标定的照片与DYNA4仿真的图片叠加显示。具体方法是在DYNA4摄像头上加上滤镜,滤镜的图片为对应的实际图片,这样便可以方便进行比对。图7d-7f是在标定过程中,其他拍摄角度下的DYNA4仿真图片与实际照片的对比。

5.2Kannala-Brandt模型/OpenCV fisheye的应用效果

图8是某客户采用Kannala-Brandt模型的仿真对比效果。对于径向对称鱼眼,KB模型非常精准,工程落地成熟。KB模型基于OpenCV fisheye公式,经过相关处理后适合大于180°广角的应用,与OpenCV fisheye的参数相同。这里展示的是某一典型车辆前、后、左、右四个环视鱼眼摄像头的仿真结果与真实效果对比。图8a是在DYNA4里填入内外参,然后配置对应的棋盘格,仿真得出的对应棋盘格照片。图8b为前鱼眼摄像头的实拍照片。图8c是实际的照片与DYNA4仿真的图片叠加显示。图8d-8f分别是DYNA4仿真的左侧、后方、右侧鱼眼摄像头仿真图片与实车拍摄的对比。

5.3OpenCV Normal的应用效果

OpenCV normal对中小畸变非常稳定,尤其在小广角的前后视摄像头上应用较多,有时亦叫Pinhole模型。图9是Github OpenCV工具里提供的棋盘格照片,通过辨识后,在DYNA4里OpenCV摄像头棋盘格仿真与实际过程的棋盘格的对比的图片。图9a是在DYNA4里填入内外参,配置对应的棋盘格,仿真得出的对应棋盘格照片。图9b是在实际标定过程中,在某一角度下拍出来的棋盘格照片。图9c是实际标定的照片与DYNA4仿真的图片叠加显示。图9d-9f是在标定过程中,其他拍摄角度下的DYNA4仿真图片与实际摄像头的对比。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真
    +关注

    关注

    54

    文章

    4487

    浏览量

    138319
  • 摄像头
    +关注

    关注

    61

    文章

    5092

    浏览量

    103164
  • 模型
    +关注

    关注

    1

    文章

    3756

    浏览量

    52127
  • Vector
    +关注

    关注

    3

    文章

    99

    浏览量

    10043

原文标题:基于DYNA4实现摄像头畸变应用

文章出处:【微信号:VectorChina,微信公众号:Vector维克多】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ESP32-S3在初始化摄像头时检测到摄像头模组型号不被支持

    数据位4 D5 GPIO37 摄像头数据位5 D6 GPIO36 摄像头数据位6 D7 GPIO35 摄像头数据位7 XCLK GPIO15 摄像头
    发表于 02-11 06:38

    DYNA4 R10新特性

    DYNA4为乘用车和商用车提供各种复杂的仿真模型,包括车辆动力学模型、发动机模型、动力系统模型、电机模型、ADAS物理传感器和交通环境模型等。新版本DYNA4R10在场景建模
    的头像 发表于 02-04 10:06 521次阅读
    <b class='flag-5'>DYNA4</b> R10新特性

    Vector DYNA4 R10新特性介绍

    DYNA4为乘用车和商用车提供各种复杂的仿真模型,包括车辆动力学模型、发动机模型、动力系统模型、电机模型、ADAS物理传感器和交通环境模型等。新版本DYNA4 R10在场景建模、OpenSCENARIO支持、工具链集成、模型能力以及整体工作流与易用性方面带来了大量重要升级
    的头像 发表于 12-23 09:34 609次阅读
    Vector <b class='flag-5'>DYNA4</b> R10新特性介绍

    自动驾驶既然有双目摄像头了,为什么还要三目摄像头

    [首发于智驾最前沿微信公众号]在自动驾驶领域,纯视觉方案一直受到不少人的认可。双目摄像头由于模拟了人眼的工作方式,能够通过视差计算还原三维信息,在距离判断和空间感知上具有天然优势,因此被广泛应用于纯
    的头像 发表于 12-09 08:59 996次阅读
    自动驾驶既然有双目<b class='flag-5'>摄像头</b>了,为什么还要三目<b class='flag-5'>摄像头</b>?

    索尼4K超高清摄像头模块——FCB-ER8530

    摄像头
    szxuanzhan
    发布于 :2025年08月13日 17:12:43

    创世SD NAND贴片卡:智能摄像头存储难题的完美解决方案 #人工智能 #智能摄像头 #摄像头

    摄像头
    深圳市雷龙发展有限公司
    发布于 :2025年08月05日 11:17:13

    红外摄像头模组是什么?科技时代的眼睛

    在现代科技迅速发展的背景下,红外摄像头模组逐渐成为各类智能设备中的重要组成部分。无论是在安防监控、智能家居还是汽车领域,红外摄像头模组以其独特的功能和优越的性能,正在改变我们的生活方式。本文将
    的头像 发表于 07-31 10:07 1089次阅读
    红外<b class='flag-5'>摄像头</b>模组是什么?科技时代的眼睛

    【EASY EAI Orin Nano开发板试用体验】--USB摄像头使用

    可用设备节点ls /dev/video* 3.定位接入USB摄像头节点设备cd /sys/class/video4linux/cat /sys/class/video4linux/video22
    发表于 07-13 18:21

    【Milk-V Duo S 开发板免费体验】4 - OV5647 摄像头摄像头测试

    引言 以前使用Milk-V Duo的时候,觉得它的摄像头支持比较弱,只能支持特定型号的摄像头,还不好买。我有个学生甚至因为这个原因退出了集创赛。这次特意测试了一下它的摄像头。 DuoS的摄像头
    发表于 07-08 21:26

    庐山派K230可以直接使用usb摄像头吗,可以的话摄像头有啥要求吗?

    庐山派K230可以直接使用usb摄像头吗,可以的话摄像头有啥要求吗
    发表于 06-24 07:07

    K230micropython下能实现同时用USB摄像头和板载摄像头YOLO识别并显示在IDE上吗?

    K230micropython下能实现同时用USB摄像头和板载摄像头YOLO识别并显示在IDE上吗?以及如何提高USB进行YOLO识别的帧数?
    发表于 06-20 06:35

    一文聊聊自动驾驶摄像头

    (单目、双目、环视鱼眼、红外补光)在视场角和深度估计方式上各有侧重,对于摄像头来说,高分辨率、高帧率、宽动态范围和低光性能成为其设计的核心指标。 摄像头数据需经过畸变校正、图像增强、目标检测、深度估计和鸟瞰图重
    的头像 发表于 05-05 09:59 1303次阅读
    一文聊聊自动驾驶<b class='flag-5'>摄像头</b>

    基于RV1126开发板实现多路网络摄像头取流方案

    在RV1126上实现多路网络摄像头取流方案
    的头像 发表于 04-21 14:39 49次阅读
    基于RV1126开发板<b class='flag-5'>实现</b>多路网络<b class='flag-5'>摄像头</b>取流方案

    基于RV1126开发板实现多路网络摄像头取流方案

    在RV1126上实现多路网络摄像头取流方案
    的头像 发表于 04-11 15:57 1276次阅读
    基于RV1126开发板<b class='flag-5'>实现</b>多路网络<b class='flag-5'>摄像头</b>取流方案

    社区安装IPC摄像头,跟安装一般安防监控摄像头有什么区别?

    为了保护社区或其他公共场所的安全,往往需要安装监控摄像头。但随着越来越多的公共安全事件发生,传统只单纯拍摄和记录画面的监控摄像头已不能满足社区安防的需求,需要更多功能的安防监控摄像头来进行更智能化
    的头像 发表于 04-03 10:00 2333次阅读
    社区安装IPC<b class='flag-5'>摄像头</b>,跟安装一般安防监控<b class='flag-5'>摄像头</b>有什么区别?