只拍一张照片相机标定畸变矫正-camera calibration

数据和下载地址:

数据包含基于opencv的完整c++代码以及示例图片。

通过下面方式获取:

​​​​​​下载地址:闲鱼宝贝详情

概述:

只拍一张图片进行camera 相机标定,先亚像素角点检测,再相机标定获取内参,外参,畸变参数。可对camera研发工程师、画质评测人员快速了解摄像头FOV, 畸变程度,校正后FOV损失。

同时方便camera模组厂快速集成到应用和客观评价使用,减小空间占用,增加标定效率。140°FOV鱼眼镜头重投影误差<0.15pixel。

示意图

结果:

矫正前角点检测

校正后角点检测

%YAML:1.0
---
K: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 341.27369673510736, 0., 332.05018346148375, 0.,
       341.23244313918008, 258.88202119428053, 0., 0., 1. ]
D: !!opencv-matrix
   rows: 4
   cols: 1
   dt: d
   data: [ 0.31122149217970446, -0.48351988064173512,
       0.27642067240637258, -0.068852055338915696 ]
R0: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [ 2.4518945752156087, 0.97644648260617251, 1.0869846021571836 ]
T0: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [ -387.98481856258076, 3.7214806462703724, 32.406607351185123 ]
R1: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [ -2.198231211221136, 0.35750352979121486, 0.85291231757684505 ]
T1: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [ 29.988380529342368, -45.476236131506589, 420.6895742121169 ]
R2: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [ 2.257354565281787, 0.3604747380438178, -0.86842254001135499 ]
T2: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [ -88.4156041490467, 204.45095047333581, 295.93437200856255 ]
Project_RMS: 0.13326724132584625

当进行相机标定时,通常需要进行畸变矫正以提高图像质量。在MATLAB中,可以使用相机标定工具箱(Camera Calibration Toolbox)来实现相机标定畸变矫正。 以下是一个简单的MATLAB代码示例,用于相机标定畸变矫正: ```matlab % 步骤1:准备标定板图像和对应的世界坐标点 imageFileNames = {'image1.jpg', 'image2.jpg', 'image3.jpg', ...}; % 标定板图像文件名 squareSize = 25; % 标定板方格尺寸(单位:毫米) worldPoints = generateCheckerboardPoints(boardSize, squareSize); % 生成标定板上的世界坐标点 % 步骤2:检测标定板角点 [imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames); % 步骤3:进行相机标定 params = estimateCameraParameters(imagePoints, worldPoints, 'EstimateSkew', false, 'EstimateTangentialDistortion', true); % 步骤4:显示标定结果 figure; showExtrinsics(params); % 步骤5:读取待校正图像 image = imread('test_image.jpg'); % 步骤6:进行畸变矫正 undistortedImage = undistortImage(image, params); % 步骤7:显示校正结果 figure; imshowpair(image, undistortedImage, 'montage'); ``` 这段代码中,首先需要准备标定板图像和对应的世界坐标点。然后,通过`detectCheckerboardPoints`函数检测标定板角点,并使用`estimateCameraParameters`函数进行相机标定。接下来,可以使用`showExtrinsics`函数显示标定结果。最后,可以使用`undistortImage`函数对待校正图像进行畸变矫正,并使用`imshowpair`函数显示校正结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值