用opencv进行张正友相机标定opencv后,为什么显示矫正效果还没有原来图像好

机器视觉,工业相机opencv 相机标定,定标棋盘格校准板-中国制造交易网
产品名称:机器视觉,工业相机opencv 相机标定,定标棋盘格校准板
产品链接:
手机版链接:
价格:280元联系人:彭芳电话:
标准棋盘格用于机器视觉的图像校准。
具体校准参见相应文献。
尺寸:63X63mm
格子有各种尺寸, 1X1mm, 2X2mm, 3X3mm,
4X4mm, 5X5mm
板子也有大尺寸的板子,请根据自己的需要选择。
棋盘格板标定的原理:
CCD或者CMOS相机在用镜头光学器件取景进行图像采集的时候, 由于对象与摄像机的三维空间位置关系,镜头畸变和相机质量的影响。
成像系统与理想模型不一致,因此在基于图像分析的模式匹配、运动检测等定量分析的时候, 需要对几何畸变的图像进行校正或者对摄像机进行标定, 这个时候就要用上棋盘格板。
以棋盘格板为标准,对畸变图像进行几何校正。
【机器视觉,工业相机opencv 相机标定,定标棋盘格校准板】产品信息由【厦门鑫晖商贸有限公司】提供,【厦门鑫晖商贸有限公司】主营:&&&&&&&&&&,您可以查看更多关于【机器视觉,工业相机opencv 相机标定,定标棋盘格校准板】的产品。
联系人:彭芳电话:
86 591 地址:中国 福建 厦门
金山大道618号橘园洲工业园台江园8号楼3层网站:主营:&&&&&&&&&&
增值电信业务经营许可证:豫B2-查看: 31435|回复: 51
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
各位大侠,本人用1组35张图片,标定相机参数。分别用MATLAB和OPENCV分别标定,标定结果基本一致。
现在,我希望从标定的一副图像中(使用这幅图像标定的相机外参),计算图像上几个红点之间的在3维世界坐标系下的距离(mm)。
相机标定的结果:
1、& & & & 相机内参:
Focal Length:& && &fc = [ 854.37091& &855.65897 ] ?[ 6.10263& &6.00058 ]
Principal point:& &&&cc = [ 369.52264& &296.19708 ] ?[ 5.51474& &5.45121 ]
Skew:alpha_c = [ 0.00000 ] ?[ 0.00000&&]& &=& angle of pixel axes = 90.000 degrees
Distortion: kc = [ -0.09667& &0.12791& &-0.00171& &-0.000 ] ?[ 0.02533& &0.19119& &0.00167& &0.000 ]
Pixel error:& && && & err = [ 0.20807& &0.26036 ]
相机的传感器尺寸:
size& & & & Width/mm& & & & Height/mm& & & & Width/(像素)& & & & Height/(像素)& & & & Sx& & & & Sy
1/2’& & & & 6.4& & & && && && && && && &4.8& & & && && && && && && &&&656& & & && && && && && && & 492& & & && && && && &9.75um/p& & & & 9.75um/p
2、对本图的相机外参:
Translation vector:&&Tc_ext = [-69.316901 & & & &&&-51.302449 & & & &&&237.121385 ]
Rotation vector:& & omc_ext = [ -1.923062 & & & &&&-1.999779 & & & &&&-0.515738 ]
Rotation matrix:& & Rc_ext = [-0.042297 & & & &&&0.998969 & & & &&&0.016462
& && && && && && && && &&&0.880689 & & & &&&0.029498 & & & &&&0.472776
& && && && && && && && &&&0.471803 & & & &&&0.034495 & & & &&&-0.881029 ]
Pixel error:& && &&&err = [ 0.31120 & & & &&&0.39245 ]
3.通过图像处理方法提取关键点坐标,分别获取了图像上两个红色圆圈所代表的位置在图像上的坐标(像素):W1(108.8058),W2(226.6397),在3维空间中,W1和W2两点之间的物理实际距离为30mm。
现想通过将W1和W2坐标从图像坐标系变换到世界坐标系,计算两点间的距离,是否和实际结果对应,之后,在这个标定板所放置的物理位置上进行产品尺寸的精确测量。这种应用在商用机器视觉软件HALCON中已有应用。我想通过OPENCV实现。
方法1.不考虑镜头畸变,由像素坐标与毫米坐标的关系得:
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
没有人帮忙吗???
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
我用OPENCV中的矫正函数,矫正图像后,提取关键点坐标,计算的结果也还是和实际对不上,误差3mm左右~~怎么办啊~~~
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
你好 ,我用你标定出来的相机矩阵M,以及图像坐标W1,W2,W3,W4在没有进行畸变校正的情况下,计算对应的三维坐标,三个距离误差w1w2,w2w3,w3w4分别为1.28mm,0.55mm,0.34mm.我是令z=0,直接求解三维坐标的x和y两个坐标的。我个人认为在求解x和y时没必要用最小二乘法思想,似乎也不能用。希望对你有所帮助吧!
请问您是用opencv的相关函数计算得吗?您是怎样做到的?&
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
你的畸变参数的标定结果:
&&Distortion: kc = [ -0.91 -0.039 0.00000 ] ?[ 0.19 0.85 0.00000 ]
其中第二、三、四项的不确定度跟它本身的值相差不大,可以将它们忽略,在matlab中令est_dist = [ 1 ; 0 ; 0 ; 0 ; 0 ];即只考虑径向畸变中第一个参数k1,忽略其他四个畸变参数,这样标定的结果会更准确!
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
想从图像获得实际的三维坐标,必须要知道该坐标点的Z轴的实际距离吧?
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
我也在做双目距离测量问题。也是距离相差3-5mm.不知道楼主最后怎么解决的?
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
我是做单目摄像机测距的,也遇到了同样的问题。是不是计算的距离和实际距离存在线性关系?
顺便问一下,坐标轴你怎么确定的。X Y Z分别是指向什么方向,原点在哪里?
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
楼主& &你标定的参数误差不大呢
& & 求指导啊!
& & 相机内参:
& & Focal Length: fc = [ 854.897 ] ?[ 6.58 ]
& && & 我标定出来的参数:
& & Focal Length:& && && & fc = [ 859.09190& &942.16956 ]  [ 10.25117& &10.87475 ]
& && & 误差很大也!!
& & 现在最大的问题就是那个外参数
& & 那个表示高度的参数& &与实际的相差很大呢
& & 这困惑了我很久呢& &指点指点下哇!!
相机标定后,从图像坐标(像素)向物理坐标的转换计算,
修正畸变的公式不对把&&应该k1 k2 p1 p2都有用
不考虑畸变肯定误差要大一点
Powered by扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
OpenCV摄像机标定的一些问题,使用函数cvCalibrateCamera2()函数,需要带入角点在图像坐标系中的坐标值与在世界坐标系中的坐标值,其中,图像坐标系中的坐标值通过使用cvFindChessboardCorners()与FindCornerSubPix()两个函数得到,那么世界坐标系中的坐标值怎么处理?另外,由于每张图像标定板的位置都发生变化,所以每幅图像标定出的外参矩阵R和T都各不相同吧?那么如果我用标定完成的摄像机拍摄图像,计算图像中的二维点在三维空间中的坐标信息,那么这里使用的R和T是我自己定义的吗?
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
世界坐标值,根据标定板的尺寸自己生成相应矩阵;每一幅图像对应的外参数是不一样的,外参数值指的是景物坐标系相对于相机坐标系的转换关系;自己定义的RT是什么意思?单个摄像机拍摄的图像是不能得到景物点的三维坐标的,缺少景深信息.可以参考OpenCV相关教程,如果要的话,
能知道你的QQ吗?如果方便想即时跟你请教下。
,我对这方面了解也不多,最好还是自己动手查查相关资料的
为您推荐:
其他类似问题
其实你不应该问这个问题的,虽然我当初入门的时候也问过这个问题,你去把张正友标定算法看一遍你就明白怎么处理了,很简单!
扫描下载二维码&opencv的相机标定是基于C/C++程序的,在实际的操作过程中,显得笨重。由于相机参数一般仅需要标定一次。所以可以借助Matlab的相机标定工具箱完成相机参数标定以及双目相机的立体标定工作。
Matlab相机标定工具箱的界面如下:
点击&Standard...&进入工作界面
按照工具箱说明完成相机的标定。具体步骤可以参见网站http://www.vision.caltech.edu/bouguetj/calib_doc/。
完成标定后将相机参数导入到C开发环境,完成图像的矫正,程序如下:
#include &opencv2/core/core.hpp&
#include &opencv2/imgproc/imgproc.hpp&
#include &opencv2/calib3d/calib3d.hpp&
#include &opencv2/highgui/highgui.hpp&
#ifndef _CRT_SECURE_NO_WARNINGS
# define _CRT_SECURE_NO_WARNINGS
int main()
double fcx,fcy,ccx,ccy,kc1,kc2;
fcx=532.000;
fcy=533.050;
ccx=342.830;
ccy=233.070;
kc1=-0.034;
kc2=0.015;
double mi[3][3]={{fcx,0,ccx},{0,fcy,ccy},{0,0,1}};
double md[5]={kc1,kc2,0,0,0};
Mat cameraMatrix,distC
cameraMatrix=Mat(3,3,CV_64F,mi);
distCoeffs=Mat(1,5,CV_64F,md);
view=imread(&../images/lena.jpg&);
//cvtColor(view,view,CV_BGR2GRAY);
imshow(&RAW IMAGE&,view);
Mat tmp=view.clone();
undistort(tmp,view,cameraMatrix,distCoeffs);
imshow(&undistort&,view);
imwrite(&lena_rectified1.jpg&,view);
//cvWaitKey(1);
结果如下:
旗下网站:
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号前两天发表的时候没注意,代码出了点错误,所以修改了一下,重新发上来。
http://docs.opencv.org/3.0.0/db/d58/group__calib3d__fisheye.html#gga91b6a47d784dd47ea2c76ef656d7c3dca0899eaa2f96d6eedf4464e05
http://docs.opencv.org/master/modules/calib3d/doc/calib3d.html
opencv3.0 fisheye model reference
/questions//what-are-the-main-references-to-the-fish-eye-camera-model-in-opencv3-0-0dev/88476
Kannala J, Brandt S S. A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, ): .
文献地址:http://download.csdn.net/detail/qq_3006
opencv也是参考matlab的Calib_gui_fisheye处理,但是不清楚为什么,Calib_gui_fisheye不能准确的提取角点
  鱼眼镜头的内参模型可以表示为 ,与普通镜头的内参一样,但畸变参数不同,为,含义如下:
  设(X,Y,Z)为一个三维坐标点,投影在图像上的二维坐标为(u,v),如果不考虑畸变,投影关系如下:
  R和t分别代表相机外参中的旋转矩阵和平移向量。
  首先调用OpenCV的FindChessboardCorners()来寻找图像上的标定板的角点,再根据标定板的尺寸指定这些角点对应的三维点的三维坐标,再调用fisheye::calibrate()来进行标定,利用标定结果中的内参和畸变参数调用fisheye::undistortImage()对图像做去畸变操作。最后调用一张待测试的畸变利用标定结果进行畸变校正。  
// VS2012+opencv3.0
#include &opencv2\opencv.hpp&
#include &fstream&
using namespace std;
using namespace
int main()
ofstream fout("caliberation_result.txt");
保存定标结果的文件
/************************************************************************
读取每一幅图像,从中提取出角点,然后对角点进行亚像素精确化
*************************************************************************/
cout&&"开始提取角点………………"&&
int image_count=
Size board_size = Size(9,6);
定标板上每行、列的角点数
vector&Point2f&
缓存每幅图像上检测到的角点
vector&vector&Point2f&&
保存检测到的所有角点
vector&Mat&
int successImageNum = 0;
成功提取角点的棋盘图数量
int count = 0;
for( int i = 0;
i != image_ i++)
cout&&"Frame #"&&i+1&&"..."&&
string imageFileN
std::stringstream StrS
StrStm&&i+1;
StrStm&&imageFileN
imageFileName += ".jpg";
cv::Mat image = imread("img"+imageFileName);
/* 提取角点 */
Mat imageG
cvtColor(image, imageGray , CV_RGB2GRAY);
bool patternfound = findChessboardCorners(image, board_size, corners,CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_NORMALIZE_IMAGE+
CALIB_CB_FAST_CHECK );
if (!patternfound)
cout&&"can not find chessboard corners!\n";
/* 亚像素精确化 */
cornerSubPix(imageGray, corners, Size(11, 11), Size(-1, -1), TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));
/* 绘制检测到的角点并保存 */
Mat imageTemp = image.clone();
for (int j = 0; j & corners.size(); j++)
circle( imageTemp, corners[j], 10, Scalar(0,0,255), 2, 8, 0);
string imageFileN
std::stringstream StrS
StrStm&&i+1;
StrStm&&imageFileN
imageFileName += "_corner.jpg";
imwrite(imageFileName,imageTemp);
cout&&"Frame corner#"&&i+1&&"...end"&&
count = count + corners.size();
successImageNum = successImageNum + 1;
corners_Seq.push_back(corners);
image_Seq.push_back(image);
cout&&"角点提取完成!\n";
/************************************************************************
摄像机定标
*************************************************************************/
cout&&"开始定标………………"&&
Size square_size = Size(20,20);
vector&vector&Point3f&&
保存定标板上角点的三维坐标
Mat image_points = Mat(1, count, CV_32FC2, Scalar::all(0));
保存提取的所有角点
vector&int&
/* 初始化定标板上角点的三维坐标 */
for (int t = 0; t&successImageN t++)
vector&Point3f& tempPointS
for (int i = 0; i&board_size. i++)
for (int j = 0; j&board_size. j++)
/* 假设定标板放在世界坐标系中z=0的平面上 */
Point3f tempP
tempPoint.x = i*square_size.
tempPoint.y = j*square_size.
tempPoint.z = 0;
tempPointSet.push_back(tempPoint);
object_Points.push_back(tempPointSet);
for (int i = 0; i& successImageN i++)
point_counts.push_back(board_size.width*board_size.height);
/* 开始定标 */
Size image_size = image_Seq[0].size();
cv::Matx33d intrinsic_
摄像机内参数矩阵
cv::Vec4d distortion_
/* 摄像机的4个畸变系数:k1,k2,k3,k4*/
std::vector&cv::Vec3d& rotation_
/* 每幅图像的旋转向量 */
std::vector&cv::Vec3d& translation_
/* 每幅图像的平移向量 */
int flags = 0;
flags |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC;
flags |= cv::fisheye::CALIB_CHECK_COND;
flags |= cv::fisheye::CALIB_FIX_SKEW;
fisheye::calibrate(object_Points, corners_Seq, image_size, intrinsic_matrix, distortion_coeffs, rotation_vectors, translation_vectors, flags, cv::TermCriteria(3, 20, 1e-6));
cout&&"定标完成!\n";
/************************************************************************
对定标结果进行评价
*************************************************************************/
cout&&"开始评价定标结果………………"&&
double total_err = 0.0;
/* 所有图像的平均误差的总和 */
double err = 0.0;
/* 每幅图像的平均误差 */
vector&Point2f&
image_points2;
保存重新计算得到的投影点
cout&&"每幅图像的定标误差:"&&
cout&&"每幅图像的定标误差:"&&endl&&
for (int i=0;
vector&Point3f& tempPointSet = object_Points[i];
通过得到的摄像机内外参数,对的三维点进行重新投影计算,得到新的投影点
fisheye::projectPoints(tempPointSet, image_points2, rotation_vectors[i], translation_vectors[i], intrinsic_matrix, distortion_coeffs);
/* 计算新的投影点和旧的投影点之间的误差*/
vector&Point2f& tempImagePoint = corners_Seq[i];
Mat tempImagePointMat = Mat(1,tempImagePoint.size(),CV_32FC2);
Mat image_points2Mat = Mat(1,image_points2.size(), CV_32FC2);
for (size_t i = 0 ; i != tempImagePoint.size(); i++)
image_points2Mat.at&Vec2f&(0,i) = Vec2f(image_points2[i].x, image_points2[i].y);
tempImagePointMat.at&Vec2f&(0,i) = Vec2f(tempImagePoint[i].x, tempImagePoint[i].y);
err = norm(image_points2Mat, tempImagePointMat, NORM_L2);
total_err += err/=
point_counts[i];
cout&&"第"&&i+1&&"幅图像的平均误差:"&&err&&"像素"&&
fout&&"第"&&i+1&&"幅图像的平均误差:"&&err&&"像素"&&
cout&&"总体平均误差:"&&total_err/image_count&&"像素"&&
fout&&"总体平均误差:"&&total_err/image_count&&"像素"&&endl&&
cout&&"评价完成!"&&
/************************************************************************
保存定标结果
*************************************************************************/
cout&&"开始保存定标结果………………"&&
Mat rotation_matrix = Mat(3,3,CV_32FC1, Scalar::all(0)); /* 保存每幅图像的旋转矩阵 */
fout&&"相机内参数矩阵:"&&
fout&&intrinsic_matrix&&
fout&&"畸变系数:\n";
fout&&distortion_coeffs&&
for (int i=0; i&image_ i++)
fout&&"第"&&i+1&&"幅图像的旋转向量:"&&
fout&&rotation_vectors[i]&&
/* 将旋转向量转换为相对应的旋转矩阵 */
Rodrigues(rotation_vectors[i],rotation_matrix);
fout&&"第"&&i+1&&"幅图像的旋转矩阵:"&&
fout&&rotation_matrix&&
fout&&"第"&&i+1&&"幅图像的平移向量:"&&
fout&&translation_vectors[i]&&
cout&&"完成保存"&&
/************************************************************************
显示定标结果
*************************************************************************/
Mat mapx = Mat(image_size,CV_32FC1);
Mat mapy = Mat(image_size,CV_32FC1);
Mat R = Mat::eye(3,3,CV_32F);
cout&&"保存矫正图像"&&
for (int i = 0 ; i != image_ i++)
cout&&"Frame #"&&i+1&&"..."&&
Mat newCameraMatrix = Mat(3,3,CV_32FC1,Scalar::all(0));
fisheye::initUndistortRectifyMap(intrinsic_matrix,distortion_coeffs,R,intrinsic_matrix,image_size,CV_32FC1,mapx,mapy);
Mat t = image_Seq[i].clone();
cv::remap(image_Seq[i],t,mapx, mapy, INTER_LINEAR);
string imageFileN
std::stringstream StrS
StrStm&&i+1;
StrStm&&imageFileN
imageFileName += "_d.jpg";
imwrite(imageFileName,t);
cout&&"保存结束"&&
/************************************************************************
测试一张图片
*************************************************************************/
cout&&"TestImage ..."&&
Mat newCameraMatrix = Mat(3,3,CV_32FC1,Scalar::all(0));
Mat testImage = imread("a.jpg",1);
fisheye::initUndistortRectifyMap(intrinsic_matrix,distortion_coeffs,R,intrinsic_matrix,image_size,CV_32FC1,mapx,mapy);
Mat t = testImage.clone();
cv::remap(testImage,t,mapx, mapy, INTER_LINEAR);
imwrite("TestOutput.jpg",t);
cout&&"保存结束"&&
实验结果:
第1幅图像的平均误差:0.0255382像素
第2幅图像的平均误差:0.0325026像素
第3幅图像的平均误差:0.0244082像素
第4幅图像的平均误差:0.0311312像素
第5幅图像的平均误差:0.0205482像素
第6幅图像的平均误差:0.0385998像素
第7幅图像的平均误差:0.0423178像素
第8幅图像的平均误差:0.0442407像素
第9幅图像的平均误差:0.0396359像素
第10幅图像的平均误差:0.0337944像素
第11幅图像的平均误差:0.0294888像素
第12幅图像的平均误差:0.0391749像素
第13幅图像的平均误差:0.0589933像素
第14幅图像的平均误差:0.0239711像素
第15幅图像的平均误差:0.0267404像素
第16幅图像的平均误差:0.0298319像素
第17幅图像的平均误差:0.0346551像素
第18幅图像的平均误差:0.0538333像素
第19幅图像的平均误差:0.0385998像素
第20幅图像的平均误差:0.0485061像素
第21幅图像的平均误差:0.0441557像素
第22幅图像的平均误差:0.0541894像素
第23幅图像的平均误差:0.0299604像素
第24幅图像的平均误差:0.0385502像素
第25幅图像的平均误差:0.0226273像素
总体平均误差:0.0362398像素
相机内参数矩阵:
[322.1, 0, 626.5;
0, 322.2, 502.5;
畸变系数:
[-0.., -0..]
第1幅图像的旋转向量:
[-3.0065, -0.0138772]
第1幅图像的旋转矩阵:
[0.8276, -0.69;
-0.3919, -0.05;
-0.4664397, -0.56738, -0.5727]
第1幅图像的平移向量:
[-36.7, 169.266]
第2幅图像的旋转向量:
[-2.306, 0.40201]
第2幅图像的旋转矩阵:
[0.022, -0.7051, -0.64789;
-0.1207, -0.3;
-0.9122, -0.6161, -0.288]
第2幅图像的平移向量:
[63.1312, -57.6]
第3幅图像的旋转向量:
[2.44823, -1.6759]
第3幅图像的旋转矩阵:
[0.2958, -0.7;
-0.8981, -0.5546, -0.1831;
0.9769, -0.1304, -0.0301]
第3幅图像的平移向量:
[9.15, 164.369]
第4幅图像的旋转向量:
[-2.9327, -0.805427]
第4幅图像的旋转矩阵:
[0.3522, -0.34;
-0.2262, -0.12;
0.004, -0.9221, -0.0014]
第4幅图像的平移向量:
[-114.612, 29.1]
第5幅图像的旋转向量:
[-2.9916, 0.443054]
第5幅图像的旋转矩阵:
[0.8974, -0.6103, -0.9686;
-0.1718, -0.839, 0.8249;
-0.5831, -0.5942, -0.5216]
第5幅图像的平移向量:
[83.013, 73.5]
第6幅图像的旋转向量:
[-2.75668, -1.001, -0.612898]
第6幅图像的旋转矩阵:
[0.5, 0.594;
0.4812, -0.1;
0.188, -0.2126]
第6幅图像的平移向量:
[-156.079, -54.1]
第7幅图像的旋转向量:
[-2.83598, -0.88453, -0.738399]
第7幅图像的旋转矩阵:
[0.7, 0.8346;
0.5453, -0.;
0.83, -0.2673]
第7幅图像的平移向量:
[-123.099, -60.6]
第8幅图像的旋转向量:
[-2.9748, -0.583872]
第8幅图像的旋转矩阵:
[0.0359, -0.35;
-0.8882, -0.8;
0.6446, -0.1953, -0.7148]
第8幅图像的平移向量:
[-65.6, 93.5776]
第9幅图像的旋转向量:
[-2.9548, 0.0276313]
第9幅图像的旋转矩阵:
[0.4289, -0.9635;
-0.4531, -0.8;
-0.45741, -0.5554, -0.7078]
第9幅图像的平移向量:
[25.637, 36.055, 149.153]
第10幅图像的旋转向量:
[-2.6772, 0.463857]
第10幅图像的旋转矩阵:
[0.5292, -0.9889, -0.545;
-0.7385, -0.6;
-0.5764, -0.2544, -0.7143]
第10幅图像的平移向量:
[57.5034, -40.5]
第11幅图像的旋转向量:
[2.935, -0.234947]
第11幅图像的旋转矩阵:
[0.5, -0.5593;
0.689, -0.2334, -0.81285;
-0.879, -0.7103]
第11幅图像的平移向量:
[3.8, 152.074]
第12幅图像的旋转向量:
[-2.8068, -0.546188]
第12幅图像的旋转矩阵:
[0.9974, -0.7;
-0.4554, -0.1;
0.1665, -0.2157, -0.9645]
第12幅图像的平移向量:
[-68.367, 122.421, 113.478]
第13幅图像的旋转向量:
[-2.90951, -0.523456, -0.663067]
第13幅图像的旋转矩阵:
[0.2, 0.56;
0.3411, -0.7;
0.7559, -0.75178, -0.2103]
第13幅图像的平移向量:
[-94.37, 65.9367]
第14幅图像的旋转向量:
[-2.7866, -0.22678]
第14幅图像的旋转矩阵:
[0.5997, -0.7;
-0.5734, -0.3;
0.80313, -0.2427, -0.8724]
第14幅图像的平移向量:
[24.1, 199.387]
第15幅图像的旋转向量:
[-2.86038, -0.180569]
第15幅图像的旋转矩阵:
[0.3219, -0.99;
-0.80752, -0.9;
0.8423, -0.3867, -0.0575]
第15幅图像的平移向量:
[-6.9, 260.476]
第16幅图像的旋转向量:
[-2.17961, -1.94061, -0.409744]
第16幅图像的旋转矩阵:
[0.3, 0.42694;
0.9215, -0.5;
0.93, -0.9678]
第16幅图像的平移向量:
[-55.2808, -83.903, 214.285]
第17幅图像的旋转向量:
[-2.21555, -0.438635, -0.150732]
第17幅图像的旋转矩阵:
[0.7, -0.18191;
0.1794, -0.7;
0.8801, -0.2609, -0.8542]
第17幅图像的平移向量:
[-64.4695, -103.74, 235.816]
第18幅图像的旋转向量:
[-2.94579, -0.700192]
第18幅图像的旋转矩阵:
[0.1372, -0.37;
-0.11149, -0.46;
0.1497, -0.58701, -0.2448]
第18幅图像的平移向量:
[-86.8, 69.4594]
第19幅图像的旋转向量:
[-3.0955, 0.155099]
第19幅图像的旋转矩阵:
[0.2741, -0.9922, -0.88617;
-0.7853, -0.6;
-0.1442, -0.265, -0.6629]
第19幅图像的平移向量:
[-15.9, 127.149]
第20幅图像的旋转向量:
[-2.9952, 0.361615]
第20幅图像的旋转矩阵:
[0.7793, -0.8473, -0.7617;
-0.1344, -0.4;
-0.0878, -0.78804, -0.2203]
第20幅图像的平移向量:
[41., 118.481]
第21幅图像的旋转向量:
[-2.7471, 0.164568]
第21幅图像的旋转矩阵:
[0.9687, -0.1865, -0.11152;
-0.817, -0.;
-0.6131, -0.9103, -0.5394]
第21幅图像的平移向量:
[-31.49, 134.514]
第22幅图像的旋转向量:
[-2.9638, 0.0981236]
第22幅图像的旋转矩阵:
[0.0114, -0.9268, -0.17651;
-0.3953, -0.6;
-0.12385, -0.52813, -0.0584]
第22幅图像的平移向量:
[85.2, 162.763]
第23幅图像的旋转向量:
[2.84253, -1.05597, -0.348542]
第23幅图像的旋转矩阵:
[0.1006, -0.9699, -0.6436;
-0.2982, -0.4142, -0.232765;
-0.8, -0.5961]
第23幅图像的平移向量:
[99.2, 139.866]
第24幅图像的旋转向量:
[2.69949, -1.26373, -0.371771]
第24幅图像的旋转矩阵:
[0.1872, -0.387, -0.5401;
-0.4025, -0.0317, -0.50193;
-0., -0.1176]
第24幅图像的平移向量:
[122.42, 183.516, 123.981]
第25幅图像的旋转向量:
[2.7944, -0.920859]
第25幅图像的旋转矩阵:
[0.9, -0.6112;
0.7296, -0.0646, -0.5478;
-0.4876, -0.93308, -0.5877]
第25幅图像的平移向量:
[38.5, 166.877]
畸变图像角点检测与校正结果:(只列出一部分)
对了200°视场的鱼眼图像效果还是很好的。
后面的校正图出现拉伸很严重的原因是因为标定板拍摄的时候是倾斜的,并不与光轴垂直。所以会出现近大远小的情况,也就是拉伸的情况。可以这么理解,把这些校正图中的棋盘位置看成无数连续的垂直于光轴的标定板,由于透视效果,远处的格子自然小,近处的会大,连续后就会成为这种现象,虽然人眼感觉怪怪的,但是符合空间分布情况。可以想象一下隧道里的情况,下图还是一个小视场的图,墙上格子变化很明显,如果视场更大一些,就更明显了。
代码下载:
附件中删除了部分图像(有脸的图都删了……^-^)
http://download.csdn.net/detail/qq_7601

我要回帖

更多关于 opencv相机标定代码 的文章

 

随机推荐