前几天同事突然问我九点标定的几个函数名称,然后我才想起来还有这个重要的技能没有说,因此本篇会详细介绍一下九点标定法。(九点:指有序排列的九个特征点,一般为圆点或者十字)

九点标定的作用:

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];
}

工业图像处理实战--九点标定法相关推荐

  1. 立体视觉入门指南:相机标定之Zhang式标定法

    作者丨李迎松@知乎 来源丨https://zhuanlan.zhihu.com/p/378819083 编辑丨3D视觉工坊 亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知 ...

  2. 工业相机标定(张正友标定法)

    目录 相机标定的概念 a. 相机标定的定义 b. 相机标定的目的 相机标定的过程 a. 标定板选择 b. 标定板摆放及拍摄 c. 标定板角点提取 张正友标定法 a. 反解相机矩阵 b.反解畸变系数 使 ...

  3. 【三维重建】相机标定:张正友标定法

    系列文章目录 本系列开始于2022.12.25,开始记录三维重建项目课题研究时的学习笔记,其中主要分为以下几部分组成: 一.相机成像及坐标系之间的转换关系 二.相机标定:张正友标定法 三.特征检测与匹 ...

  4. 相机标定——张氏标定法

    目录 前言 动机 为什么要进行相机标定 什么是张氏标定法 张氏标定法的原理 透镜成像原理 世界坐标系到相机坐标系的转换 相机坐标系到图像坐标系的转换 图像坐标系到像素坐标系 单应性矩阵 内参求解 外参 ...

  5. python图像处理实战 戴伊_这一套封面的程序员专业书籍你读过哪一本?

    以往我们总盯着畅销书,经典书,新书,今天给大家介绍Packt Publishing的程序员专业书籍.这一套封面的程序员书你读过哪一本? 1.Python图像处理实战 [印度] 桑迪潘·戴伊(Sandi ...

  6. 深入理解张正友相机标定法:数学理论详细推导

    最近在项目中需要在激光雷达(Lidar)和相机(Camera)之间进行标定,即需要标定出相机内参和外参,使用的标定方法是张正友标定法,这里给出其数学理论推导过程. 论文原文:<A Flexibl ...

  7. 【计算机视觉】张正友棋盘格标定法

    目录 前言 环境 (一)实验原理/步骤 1.计算单应性矩阵H 2.计算内参数矩阵 3.计算外参数矩阵 4.最大似然估计 (二)实验代码 (三)实验结果分析 (四)实验总结 前言 "张正友标定 ...

  8. python棋盘格_python实现张正友棋盘格标定法

    文章目录1.原理1.1相机的内参数1.2张氏标定法1.3切向畸变与径向畸变2.环境与代码2.1棋盘环境2.2图片选取2.3代码3.实验结果与分析3.1角点检测结果3.2内参结果截图3.3外参结果截图3 ...

  9. 视频教程-数字图像处理实战-算法基础

    数字图像处理实战 河海大学计算机硕士毕业,现就职于南京华为研究所,从事嵌入式软件开发工作.热爱模式识别及机器学习算法. 金圣韬 ¥70.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+ ...

最新文章

  1. WDS部署服务之四镜像捕获(1)
  2. java工资高还是php_java和php哪个工资高
  3. 计算机和外部通信方式,计算机和外部的通信方式
  4. vscode控制字符引起的问题以及解决思路
  5. openssh升级之后git账户免密登陆失效
  6. Nodejs Promise对象
  7. python--列表list
  8. 锦州师专高等专科学校计算机,《数据库原理与应用锦州师范高等专科学校计算机系》.ppt...
  9. springboot启动报错:Error starting ApplicationContext. To display the conditions report re-run your appl
  10. IPMI 1:ipmi简介
  11. 西门子转以太网模块连接S7-300以太网驱动
  12. 自回归移动平均模型(ARMA)-平稳序列
  13. wps h5制作软件
  14. Sql server添加示例数据库Northwind
  15. cc2430的中文资料
  16. 都说ApiPost香,它到底香在哪里?
  17. 【达内课程】酷跑项目:百度地图获取定位
  18. 表格识别-pytorch
  19. Mac下PHP连接MySQL报错"No such file or directory"的解决办法
  20. SubShader中的LOD

热门文章

  1. STM32F0xx定时器输出PWM配置
  2. Pycharm 远程debug项目配置
  3. python 常微分方程 画向量场_用scipy-odein在python中求解向量常微分方程
  4. android usb麦克风阵列,语音设备 SDK 麦克风阵列建议
  5. 云计算基础架构 (三)Mongodb
  6. 关于毕业必须知道的知识之就业、派遣(1)
  7. 粤嵌GEC6818开发板-入门感慨篇
  8. ecg 幅度_ECG(心电图)
  9. BCS2022|技术峰会:高对抗环境下网络新攻防
  10. 搜索引擎使用小技巧(通配符)