OpenCV相机标定与3D重建(5)鱼眼镜头畸变校正的函数estimateNewCameraMatrixForUndistortRectify()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

估计用于去畸变或校正的新相机内参矩阵。

cv::fisheye::estimateNewCameraMatrixForUndistortRectify 是 OpenCV 中用于鱼眼镜头畸变校正的一个函数。它的主要作用是计算一个新的相机内参矩阵,以便在去畸变和校正过程中使用。这个新的内参矩阵可以帮助保持图像的某些特性,如图像中心的位置。

函数原型

cpp 复制代码
void cv::fisheye::estimateNewCameraMatrixForUndistortRectify	
(
	InputArray 	K,
	InputArray 	D,
	const Size & 	image_size,
	InputArray 	R,
	OutputArray 	P,
	double 	balance = 0.0,
	const Size & 	new_size = Size(),
	double 	fov_scale = 1.0 
)		

参数

  • 参数K: 相机内参矩阵 cameramatrixK。
  • 参数image_size: 图像的尺寸。
  • 参数D: 输入的畸变系数向量 (k1, k2, k3, k4)。
  • 参数R: 物体空间中的校正变换:3x3 的 1 通道矩阵,或向量:3x1/1x3 的 1 通道或 1x1 的 3 通道。
  • 参数P: 新的相机内参矩阵(3x3)或新的投影矩阵(3x4)。
  • 参数balance: 设置新的焦距在最小焦距和最大焦距之间的范围。平衡因子在 0, 1 范围内。
  • 参数new_size: 新的尺寸。
  • 参数fov_scale: 新焦距的除数。

代码示例

cpp 复制代码
#include <iostream>
#include <opencv2/calib3d/calib3d.hpp>
#include <opencv2/opencv.hpp>

int main()
{
    // 示例内参矩阵 K
    cv::Mat K = ( cv::Mat_< double >( 3, 3 ) << 458.654, 0, 367.215, 0, 457.296, 248.375, 0, 0, 1 );

    // 示例畸变系数 D
    cv::Mat D = ( cv::Mat_< double >( 1, 4 ) << 0.0695303, -0.160713, -0.00480225, 0.000911994 );

    // 图像尺寸
    cv::Size imageSize( 720, 576 );

    // 校正变换 R
    cv::Mat R = cv::Mat::eye( 3, 3, CV_64F );  // 单位矩阵作为示例

    // 平衡因子
    double balance = 0.5;

    // 新的相机内参矩阵或新的投影矩阵
    cv::Mat new_K;

    // 有效像素区域
    cv::Rect validPixROI;

    // 调用 estimateNewCameraMatrixForUndistortRectify 函数
    cv::fisheye::estimateNewCameraMatrixForUndistortRectify( K, D, imageSize, R, new_K, balance );

    // 打印结果
    std::cout << "New Camera Matrix:" << std::endl;
    std::cout << new_K << std::endl;

    return 0;
}

运行结果

bash 复制代码
New Camera Matrix:
[368.3332007323949, 0, 371.1237173309401;
 0, 367.2426259492368, 240.771358281485;
 0, 0, 1]
相关推荐
ComputerInBook1 小时前
opencv 图像处理之边缘检测
图像处理·人工智能·opencv·边缘检测
苏州邦恩精密2 小时前
浙江蔡司3D扫描仪如何服务汽车及模具行业?
人工智能·科技·3d·自动化·汽车·制造
3D小将2 小时前
3D格式转换之NWD 转 GLB 格式标准化转换技术
3d·solidworks模型·ug模型·rhino模型·catia模型
玖玥拾3 小时前
Unity 3D 基础(一)Unity基础架构、物理系统、视觉渲染、空间变换与对象查询
笔记·游戏·3d·unity·游戏引擎
在水一缸3 小时前
Box3D 深度解析:当物理引擎传奇迈向三维空间
3d·游戏开发·开源项目·物理引擎·box3d·3d仿真·box2d
苏州邦恩精密5 小时前
浙江蔡司3D扫描仪应用领域及厂家选择分析
人工智能·科技·3d·自动化·制造
TMT星球5 小时前
高德发布通用世界模型工坊ABot-World Studio: 5090单卡可生成小时级实时交互式视频与3D场景
3d
某林2126 小时前
构建高精度 6-DoF 灵巧手控制系统
人工智能·3d·机器人·ros2·技术复盘
3DVisionary16 小时前
注塑模具3D检测的下一个十年:从“事后把关“到“全程数字孪生“
前端·数据库·3d·注塑模具检测趋势·在线全检自动化·ai缺陷识别·模具数字孪生
cd_9492172116 小时前
3D角色自动绑骨怎么做?用V2Fun完成建模、绑定、动作和导出
人工智能·3d