相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。
相机标定的输入:标定图像上所有内角点的图像坐标,标定板图像上所有内角点的空间三维坐标(一般情况下假定图像位于Z=0平面上)。
相机标定的输出:摄像机的内参、外参系数
流程:
1. 准备标定图片(D435可以利用程序保存所得到的图片)
2. 对每一张标定图片,提取角点信息
3. 对每一张标定图片,进一步提取亚像素角点信息
4. 在棋盘标定图上绘制找到的内角点(非必须,仅为了显示)
5. 相机标定
主要是程序在Linux下的运行。
1. 建立文件夹 cameraCalibration
mkdir cameraCalibration
2. cd ./cameraCalibration
3. (1)建立文件夹 iamge 保存标定所需的图片
src 保存程序
(2)创建文件 Cmakelists.txt
并写入
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
PROJECT( calibration )
SET(CMAKE_CXX_COMPILER "g++")
SET( CMAKE_BUILD_TYPE Debug )
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include )
LINK_DIRECTORIES( ${PROJECT_SOURCE_DIR}/lib)
ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src )
现在cameraCalibration文件夹内应该有 image src CmakeLists.txt
3.在src文件夹内创建
1).calibration.cpp
#include <iostream>
#include <sstream>
#include <time.h>
#include <stdio.h>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc