随着虚幻引擎在影视虚拟制作领域以及模拟仿真领域比如自动驾驶仿真等的不断深入应用,如何在虚幻引擎中模拟真实相机的机制已成”刚需“。前不久的直播中,文磊和大家分享了如何在虚幻引擎中模拟真实相机的测光从而进行准确曝光设置等内容,而这篇文章会和大家介绍下如何在虚幻引擎4.24中进行真实相机的标定、畸变模拟与矫正。
首先来认识下这次的主角, 打开Plugins窗口,搜索“Lens Distortion”, 结果会如下图列出两个关于镜头畸变模拟的插件,今天我们主要聊聊最新的“OpenCV Lens Distortion”插件,至于两者的异同,我们会在下文中进行说明。将插件启用,然后重启项目,正式开始!
一、相机的标定
要模拟或者矫正相机畸变,首先需要进行相机标定,从而计算出相机内参。顾名思义,这款内置插件是基于OpenCV的相机模型来工作的。相机内参主要包括径向、切向畸变系数,纵、横向焦距以及光学中心在最终画面上的位置,这些都是由于实际相机或者镜头制造精度或者装配误差所造成的不完美。这款插件的标定是基于OpenCV默认的相机标定方法--张正友标定法。方法的具体的操作流程,网上资料很多,就不在此赘述。
插件提供了两种方法进行相机标定。
1.使用图片文件标定
一种方式是将一组包含棋盘格的图片输入给标定器(Calibrator)。这些图片上的棋盘格组合起来需要能基本覆盖整个画面,棋盘格画面需要清晰。采集时要缓慢转动或者索性在静止时截图来避免运动模糊导致的误差。下边的一组示例图片中存在着一些不足,一是每张图片上的棋盘格占画面比例过低,导致需要采集更多的图片;二是棋盘格没有覆盖到右上角区域,这容易导致计算出的内参在右上角出现较大误差; 三是每个区域不同角度的棋盘格张数有限,这也是潜在影响标定精度的因素之一。
接下来看下具体如何实现,创建一个基于Actor的蓝图类,称之为”BP_CamDistortionMgr”。接着添加一个”BeginCalibration”函数,实现如下图。核心是调用”Create Calibrator”创建标定器ÿ