相机的标定+畸变矫正

本文介绍了如何使用MATLAB进行摄像机标定和通过OpenCV进行畸变矫正。主要内容包括标定板的制作、采集图像、在MATLAB中进行标定,以及畸变参数的选择和标定结果的可视化。最后展示了不同畸变系数下的校正效果,建议使用两个径向畸变系数以避免过度扭曲。
摘要由CSDN通过智能技术生成

摄像机标定

本文目的在于记录如何使用MATLAB做摄像机标定,并通过opencv进行校正后的显示。

首先关于校正的基本知识通过OpenCV官网的介绍即可简单了解:
http://docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html

对于摄像机我们所关心的主要参数为摄像机内参,以及几个畸变系数。上面的连接中后半部分也给了如何标定,然而OpenCV自带的标定程序稍显繁琐。因而在本文中我主推使用MATLAB的工具箱。下面让我们开始标定过程。

标定板

标定的最开始阶段最需要的肯定是标定板。两种方法,直接从opencv官网上能下载到:
http://docs.opencv.org/2.4/_downloads/pattern.png

方法二:逼格满满(MATLAB)

J = (checkerboard(300,4,5)>0.5);
figure, imshow(J);
 
 
 
  • 1
  • 2

这里写图片描述

采集数据

那么有了棋盘格之后自然是需要进行照片了。不多说,直接上程序。按q键即可保存图像,尽量把镜头的各个角度都覆盖好。

#include "opencv2/opencv.hpp"
#include <string>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    VideoCapture inputVideo(0);
    //inputVideo.set(CV_CAP_PROP_FRAME_WIDTH, 320);
    //inputVideo.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
 
当进行相机标定时,通常需要进行畸变矫正以提高图像质量。在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`函数显示校正结果。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值