资源简介
线结构光光平面标定,求出光平面在相机坐标系中的相对位置。
代码片段和文件信息
#include
#include
#include
#include
#include
#include //文件输入输出流搜索
#include
#include
#include “opencv2/core/core_c.h“
#include “opencv/cv.h“
#include “opencv2/highgui/highgui.hpp“
using namespace cv;
using namespace std;
float f = 12.0f; //相机焦距,单位:mm
float dx; //像元x方向长度
float dy; //像元y方向长度
CvMat * intrinsic;
CvMat * distortion;
//————————结构光标定使用的变量——————————
vector cline; //保存单幅图像的角点线,每幅图5条
float struct_line[4]; //存储单条结构光直线
IplImage* chess_image;
IplImage* chess;
IplImage* light_image;
IplImage* light;
IplImage* show_corner;
int number_image = 1;//原来是32
char filename[300];
char* adrSrcChessImage = “SrcImage//c%d.jpg“; //源图像文件夹地址
char* adrSrcLightImage = “SrcImage//cc%d.jpg“; //源图l文件夹地址
float d = 1.76f; //棋盘格物理尺寸。,单位mm or cm???
CvSize board_size = cvSize(5 3); //棋盘规格width*height内角点的个数
int board_width = board_size.width;
int board_height = board_size.height;
int total_per_image = board_width*board_height;
//亚像素角点检测需要的参数
int iterations = 100; //迭代次数
double accuracy = 0.01; //收敛精度
int successes = 0;
char* adrDstImage = “DstImage//%d.bmp“; //畸变校正后的图像文件夹地址
char* adrTempImage = “TempImage//%d.bmp“; //过程图像文件夹地址
CvPoint2D32f * image_points_buf = new CvPoint2D32f[total_per_image]; //单张图像的角点,图像坐标
CvMat * image_points = cvCreateMat(number_image*total_per_image 2 CV_32FC1); //图像坐标系
CvMat * object_points = cvCreateMat(number_image*total_per_image 3 CV_32FC1); //世界坐标系
CvMat * point_counts = cvCreateMat(number_image 1 CV_32SC1); //每张图像的角点数量
FILE* fp = fopen(“DataResult.txt“ “w+“); //保存数据的txt文件地址
FILE* fpInfo = fopen(“Information.txt“ “w+“); //保存异常信息 ‘w+读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
FILE* fpTest = fopen(“LightErrorTest.txt“ “w+“);//保存异常信息
float planeLight[4]; //光平面。
vector point_c; //存储所有图像的交点的摄像机坐标
vector testline;
/*
结构光平面标定设计分析:
步骤:
1.为标定方便,便于提取结构光平面,采用特制标定板。
2.根据相机标定得到的畸变系数,对图像进行畸变校正。
3.求取结构光直线方程(l1)(图像像素坐标系)。
4.求取标定板角点坐标(单位:像素;坐标系:图像像素坐标系)。
5.对每行的三个角点进行直线拟合,得到角点线方程(l2)(图像像素坐标系)。
6.由角点线方程(l2)和结构光直线方程(l1)求取交点(p)的图像像素坐标坐标
7.根据相机标定得到的内参,将三个角点(a,b,c)和一个交点(p)的图像像素坐标映射为 相机坐标(AcBcCc) Pc(归一化到图像平面上的,深度都取为实际焦距f不是标准的)(单位:mm)。
8.据此分别求得向量的夹角a1(角BOC)、a2(角AOC)以及a3(角COP)的值。(A B C P是相机坐标系下的实际坐标)
9.由角a1/a2/a3和A、B、C两两之间的距离d,求得|OP|的值。//用到棋盘格距离
10.再由向量OPc的方向,即可得到p点的相机坐标P。
11.分别对每一行角点线重复第5~10步,可在一副标定图上求得结构光光线上的多个点的相机坐标(x y z),
12.对多个空间点拟合成一条相机坐标系的空间直线 / 存储所有点
13.分别对每一幅结构光标定图重复第2~12步,得到结构光平面上的多个直线方程 / 存储所有点
14.对多个直线方程进行拟合,得到结构光平面方程 / 对13步得到的所有点进行平面拟合,得到结构光平面方程
15.结构光平面标定完成(在相机坐标系)。
*/
/*
结构光提取中心线:
需进行中值滤波,二值化,开运算
再提取中心线,得到直线方程
*/
//矫正图像
void adjustImage(IplImage *showint a)
{
//矫正畸变,测试效果。
IplImage * mapx = cvCreateImage(cvGetSize(show) IPL_DEPTH_32F
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14309 2016-04-22 15:49 光平面标定\StructLightCalibrate\c1.JPG
文件 58 2016-04-22 21:45 光平面标定\StructLightCalibrate\DataResult.txt
文件 616959 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\main.obj
文件 830 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\StructLi.CDB93C0D.tlog\cl.command.1.tlog
文件 41212 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\StructLi.CDB93C0D.tlog\CL.read.1.tlog
文件 732 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\StructLi.CDB93C0D.tlog\CL.write.1.tlog
文件 3040 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\StructLi.CDB93C0D.tlog\li
文件 6858 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\StructLi.CDB93C0D.tlog\li
文件 710 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\StructLi.CDB93C0D.tlog\li
文件 188 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\StructLi.CDB93C0D.tlog\StructLightCalibrate.lastbuildstate
文件 7635 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\StructLightCalibrate.log
文件 1240064 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\vc120.idb
文件 1691648 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\vc120.pdb
文件 92 2016-04-22 21:45 光平面标定\StructLightCalibrate\Information.txt
文件 0 2016-04-22 21:45 光平面标定\StructLightCalibrate\LightErrorTest.txt
文件 243 2016-04-22 21:45 光平面标定\StructLightCalibrate\LightPlaneABCD.xm
文件 20380 2016-04-22 23:06 光平面标定\StructLightCalibrate\main.cpp
文件 49433 2016-04-22 20:01 光平面标定\StructLightCalibrate\SrcImage\a1.jpg
文件 4121 2016-04-20 22:20 光平面标定\StructLightCalibrate\StructLightCalibrate.vcxproj
文件 945 2016-04-20 22:19 光平面标定\StructLightCalibrate\StructLightCalibrate.vcxproj.filters
文件 1772182 2016-04-22 21:45 光平面标定\StructLightCalibrate\TempImage\1.bmp
文件 1772182 2016-04-22 21:45 光平面标定\StructLightCalibrate\TempImage\拟合的角点直线1.bmp
文件 1772182 2016-04-22 21:45 光平面标定\StructLightCalibrate\TempImage\拟合的角点直线2.bmp
文件 1772182 2016-04-22 21:45 光平面标定\StructLightCalibrate\TempImage\拟合的角点直线3.bmp
文件 1772182 2016-04-22 21:45 光平面标定\StructLightCalibrate\TempImage\拟合的角点直线4.bmp
文件 1772182 2016-04-22 21:45 光平面标定\StructLightCalibrate\TempImage\拟合的角点直线5.bmp
文件 6 2019-06-30 11:51 光平面标定\说明.txt
目录 0 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug\StructLi.CDB93C0D.tlog
目录 0 2016-04-22 21:45 光平面标定\StructLightCalibrate\Debug
目录 0 2016-04-27 19:09 光平面标定\StructLightCalibrate\DstImage
............此处省略7个文件信息
- 上一篇:后台管理系统原型模板
- 下一篇:一个STM32的USB鼠标例程
相关资源
- PROBOT Anno手眼标定步骤easy_handeye-眼在
- 机械臂手眼标定
- 线结构光视觉传感器标工具
- 辅助驾驶中的道路检测技术研究.pdf
- 双摄像机线性标定与重建
- 投影仪标定程序
- 张正友相机标定(OpenCV实现)223402
- 欧洲 测量与标定协议 XCP 文档,vect
- halcon手眼标定培训班内部讲义
- INCA使用规范及标定教程.7z
- 基于Autoware的相机与激光雷达联合标定
- 相机标定完整工程
- 摄像机标定方面的论文9篇
- OpenCV张正友相机标定程序,附实验数
- 张正友相机标定Opencv实现完整程序+棋
- 摄像机外参数标定位姿估计 pose esti
- 相机标定讲解ppt
- opencv 普通相机畸变标定校正
- 球面坐标定位法校正鱼眼图像畸变.
- 摄像机RAC两步标定
- 国外的基于matalb的双目视觉标定的程
- opencv标定单目相机
- 摄像头标定数据
- opencv3.0 鱼眼标定校正 改进
- 摄像机标定两篇经典论文英文原版
- Inca软件使用
- inca标定软件使用方法
- 工业机器人手眼系统标定
- VECTOR的CCP源码(CAN标定协议代码)
- OpenCV双目标定双目校正
评论
共有 条评论