工业图像处理实战--九点标定法
前几天同事突然问我九点标定的几个函数名称,然后我才想起来还有这个重要的技能没有说,因此本篇会详细介绍一下九点标定法。(九点:指有序排列的九个特征点,一般为圆点或者十字)
九点标定的作用:
1.求解x和y方向的分辨率
2.求解图像坐标到xx坐标的仿射变换矩阵
(PS:关于仿射变换和透视变换的一般理解,仿射变换:一个矩形到另一个矩形的变换过程,透视变换:一个矩形到另一个不规则矩形的变换过程(不规则可以理解为有些边或者其他地方不是直线))
准备工作:九点标定板(3x3,已知行距,列距)。在相机视野范围内,让九点中某个点和XX坐标系的某个点重合,也就是九点在xx坐标系的坐标,是已知的
一、分辨率求解
经过图像处理,我们可以得到九个点的图像上的坐标,然后按照从左到右,从上到下的规律拍好,利用这些点去计算分辨率,大概的程序思路如下
//pt:点集;hj:行距;lj:列距
bool CvGetClibrateData(CvPoint *pt, double hj, double lj, double &dx, double &dy)
{//pt的排列原则从左到右,从上到下,可以使用sort函数排序//具体的sort就不写了,感兴趣的同学自己研究一下,在这里我默认他排好序了//pt的排序结果// 0 1 2// 3 4 5// 6 7 8//因此接下来的求解方法全是数学问题//x方向分辨率dx = (pt[1].x - pt[0].x) + (pt[2].x - pt[1].x);dx += (pt[4].x - pt[3].x) + (pt[5].x - pt[4].x);dx += (pt[7].x - pt[6].x) + (pt[8].x - pt[7].x);dx = dx / (6 * lj);//y方向分辨率dy = (pt[3].y - pt[0].y) + (pt[6].y - pt[3].y);dy += (pt[4].y - pt[1].y) + (pt[7].y - pt[4].y);dy += (pt[5].y - pt[2].y) + (pt[8].y - pt[5].y);dy = dy / (6 * hj);return ture;
}
二、仿射矩阵
从一个坐标系到另一个坐标系的变换,通常使用仿射矩阵。,我使用的是已经二次封装好的,但是没有源码,因此只能用OpenCv中的某些函数说明。
首先
CvMat* cvGetAffineTransform( const CvPoint2D32f* src,const CvPoint2D32f* dst, CvMat* map_matrix );
src:输入图像的三角形顶点坐标。
dst:输出图像的相应的三角形顶点坐标。
map_matrix:指向2×3输出矩阵的指针。
这个函数就是已知图像上三点坐标,和XX坐标系中对应的三点坐标,然后求解一个变化的矩阵。
得到这个矩阵之后,可以根据已知的图像点推算对应XX坐标系上的对应的的坐标(相关变换函数暂时没找到,用的是已经封装好的看不到源码,以后再加)
给出大致的思路,用cvGetAffineTransform或者cv2DRotationMatrix求解出矩阵(2x3的)
然后它的排列大概是下面这样
然后,对应坐标求解,大概是下面这样
2019/4/28更新内容,添加一个变化的代码
void GetTransPt(Point src, Mat trans, Point &dst)
{if (trans.empty()){return;}int n=trans.channels();Point2f p = Point2f(0, 0);dst.x = trans.ptr<double>(0)[0] * src.x + trans.ptr<double>(0)[1] * src.y + trans.ptr<double>(0)[2];dst.y = trans.ptr<double>(1)[0] * src.x + trans.ptr<double>(1)[1] * src.y + trans.ptr<double>(1)[2];
}
工业图像处理实战--九点标定法相关推荐
- 立体视觉入门指南:相机标定之Zhang式标定法
作者丨李迎松@知乎 来源丨https://zhuanlan.zhihu.com/p/378819083 编辑丨3D视觉工坊 亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知 ...
- 工业相机标定(张正友标定法)
目录 相机标定的概念 a. 相机标定的定义 b. 相机标定的目的 相机标定的过程 a. 标定板选择 b. 标定板摆放及拍摄 c. 标定板角点提取 张正友标定法 a. 反解相机矩阵 b.反解畸变系数 使 ...
- 【三维重建】相机标定:张正友标定法
系列文章目录 本系列开始于2022.12.25,开始记录三维重建项目课题研究时的学习笔记,其中主要分为以下几部分组成: 一.相机成像及坐标系之间的转换关系 二.相机标定:张正友标定法 三.特征检测与匹 ...
- 相机标定——张氏标定法
目录 前言 动机 为什么要进行相机标定 什么是张氏标定法 张氏标定法的原理 透镜成像原理 世界坐标系到相机坐标系的转换 相机坐标系到图像坐标系的转换 图像坐标系到像素坐标系 单应性矩阵 内参求解 外参 ...
- python图像处理实战 戴伊_这一套封面的程序员专业书籍你读过哪一本?
以往我们总盯着畅销书,经典书,新书,今天给大家介绍Packt Publishing的程序员专业书籍.这一套封面的程序员书你读过哪一本? 1.Python图像处理实战 [印度] 桑迪潘·戴伊(Sandi ...
- 深入理解张正友相机标定法:数学理论详细推导
最近在项目中需要在激光雷达(Lidar)和相机(Camera)之间进行标定,即需要标定出相机内参和外参,使用的标定方法是张正友标定法,这里给出其数学理论推导过程. 论文原文:<A Flexibl ...
- 【计算机视觉】张正友棋盘格标定法
目录 前言 环境 (一)实验原理/步骤 1.计算单应性矩阵H 2.计算内参数矩阵 3.计算外参数矩阵 4.最大似然估计 (二)实验代码 (三)实验结果分析 (四)实验总结 前言 "张正友标定 ...
- python棋盘格_python实现张正友棋盘格标定法
文章目录1.原理1.1相机的内参数1.2张氏标定法1.3切向畸变与径向畸变2.环境与代码2.1棋盘环境2.2图片选取2.3代码3.实验结果与分析3.1角点检测结果3.2内参结果截图3.3外参结果截图3 ...
- 视频教程-数字图像处理实战-算法基础
数字图像处理实战 河海大学计算机硕士毕业,现就职于南京华为研究所,从事嵌入式软件开发工作.热爱模式识别及机器学习算法. 金圣韬 ¥70.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+ ...
最新文章
- WDS部署服务之四镜像捕获(1)
- java工资高还是php_java和php哪个工资高
- 计算机和外部通信方式,计算机和外部的通信方式
- vscode控制字符引起的问题以及解决思路
- openssh升级之后git账户免密登陆失效
- Nodejs Promise对象
- python--列表list
- 锦州师专高等专科学校计算机,《数据库原理与应用锦州师范高等专科学校计算机系》.ppt...
- springboot启动报错:Error starting ApplicationContext. To display the conditions report re-run your appl
- IPMI 1:ipmi简介
- 西门子转以太网模块连接S7-300以太网驱动
- 自回归移动平均模型(ARMA)-平稳序列
- wps h5制作软件
- Sql server添加示例数据库Northwind
- cc2430的中文资料
- 都说ApiPost香,它到底香在哪里?
- 【达内课程】酷跑项目:百度地图获取定位
- 表格识别-pytorch
- Mac下PHP连接MySQL报错"No such file or directory"的解决办法
- SubShader中的LOD