棋盘格检测--Automatic camera and range sensor calibration using a single shot
Automatic camera and range sensor calibration using a single shot
Robotics and Automation (ICRA), IEEE, 2012: 3936-3943
2012 IEEE International Conference on.
这里主要介绍一下 Automatic camera and range sensor calibration using a single shot 这篇文献中的棋盘格特征点检测算法
参考了 https://blog.csdn.net/electech6/article/details/52770010
大的思路就是基于模板匹配检测棋盘格角点,首先定义角点的模板,然后使用模板和图像进行卷积得到一个 Corner likelihood 图 C,将卷积响应较大的位置作为棋盘格角点的候选位置,接着使用了非极大值抑制进行过滤,然后用梯度方向信息进行二次过滤,具体就是用梯度统计的方法在一个n x n局部邻域内验证这些候选点。
下面进行详细分析
首先来看看这个 Corner likelihood 图 C 是怎么得到的? 它是 模板和图像进行卷积得到的。需要先定义角点模板,这里我们定义了两组不同的模板(两种角点原型), two different n × n corner prototypes,主要针对两种不同情况,
第一种情况就是针对 axis-aligned corners,如下图所示
我们定义的模板如下图所示
第二种情况就是棋盘有旋转45度的角点,定义的模板如下图所示
每种角点原型定义了 四个 filter kernels {A,B,C,D}
Each prototype is composed of four filter kernels {A,B,C,D}, which are convolved with the input image I
从模板定义图我们可以看出, A,B是互为对角的, C,D 互为对角,
对应一个棋盘格角点,要么 A、B 比 C、D 亮,要么C、D比 A、B 亮。如何将这个特点使用数学公式描述了
上面的 i 表示 prototype类型 s_i_1 ,s_i_2 表示 the likelihood of the two possible flippings for prototype i,即这个 1,2 对应角点翻转的情况,如下图所示就是一个翻转情况, s_i_1 对应下图左边的情况,s_i_2 对应下图右边情况,i=1(白色为255,黑色为0)
µ 表示 使用一类角点原型 4个滤波器核进行图像卷积响应 求和平均,类似计算邻域的均值
每一类角点原型有两种情况(对应翻转),一共有两类角点原型(对应旋转),一共有四种情况,
图像每个位置我们不知道是哪种情况,所以将四种情况都计算一遍,然后以响应值最大的作为输出
所以 c 是求 四种情况中响应最大的那个响应值,
Corner likelihood 图 C 如下所示
Importantly, note that the above definition leads to a low likelihood c, if any of the four filter kernels responds weakly. This is important for removing as many non-checkerboard style corners as possible from the hypotheses space.
注意: 从上面的定义我们知道,如果4个卷积核响应中任意一个比较弱,那么就会得到一个较小的 likelihood c,这对于过滤图像中很多非棋盘格角点的位置很重要。当然这也会导致一些漏检问题,因为图像存在一些畸变、光照等问题,导致 4个卷积核响应中某一个响应可能比较弱,那么就会直接过滤掉了。
To produce a list of corner candidates, we apply conservative non-maxima-suppression (with parameters n_nms and τ_nms ) [18] on C
接下来我们在 C 上进行 非极大值抑制,过滤一些噪声点。
followed by verifying the candidates by their gradient statistics in a local n × n pixel neighborhood,
接着我们在 n × n 邻域 使用梯度方向统计 进行 角点验证,对应棋盘格角点,其邻域梯度方向非零的值基本是两个值中的一个,对应这个邻域中的两条直线,下面就是用方向直方图将这两条直线的角度找出来,使用 mean shift 得到 α1 and α2, 对应这两条直线
We compute a weighted orientation histogram (32 bins) from Sobel filter responses and find the two dominant modes α1 and α2 using mean shift [19]
Based on the edge orientations, we construct a template T for the expected gradient strength ||∇I|| 2
基于上面得到的直线方向,我们构建一个模板 T,然后用这个 T 和 梯度幅值 ||∇I|| 2 计算 归一化相关系数 normalized cross-correlation operator
将这个 归一化相关系数 与 corner likelihood 相乘得到最终的 corner score,使用阈值过滤,得到最终的 corner candidates
B. Sub-pixel Corner and Orientation Refinement 亚像素角点和方向优化
角点亚像素精确定位有助于相机标定准确度的提升。这里我们优化角点的位置和方向两个信息。这里的位置和方向优化都是基于方向约束来设计的。
对于角点位置优化来说,假定角点位于 c 点,其邻域有一个图像点 p, 其图像梯度为 g_p, 这个梯度方向应该垂直于 pc 线段的方向,也就是这两个向量相乘为0 即: g_pT(p-c)=0 ,当p点不是边缘点,位于平坦区域,那么其图像梯度 g_p=0, 还是满足 g_pT(p-c)=0
在实际中,平坦区域的图像点的梯度可能不是0,边缘点的梯度方向不一定完全垂直边缘直线方向,可以使用下面的最小化来表示
N_I 是一个位于角点候选位置的 局部 11 × 11 的像素区域,上面这个最小化问题有一个解析解:
接下来优化边缘方向 edge orientation vectors e1 和 e2,we seek to minimize the error in deviation of their normals
with respect to the image gradients,这里我们最小化 图像梯度和他们的法线方向的偏差,即梯度方向和法线方向是垂直的
M_i 是邻域的一些点,这些点位于边缘直线上,neighboring pixels, which are aligned with the gradient
mi = [cos(αi )sin(αi)]T of mode i
上面最小化问题的解可以通过设置 上式 Lagrangian 的 derivative 为 0,变为一个 eigenvalue problem, ei 对应一个矩阵最小特征值对应的向量,这个矩阵如下所示
棋盘格检测:
这里通过检测到的角点,将属于同一个棋盘的角点连接起来。具体步骤如下:给定一个种子角点,我们沿着它的边缘方向 e1 和 e2 寻找离它最近的角点,我们得到一个 2 × 2 棋盘区域,以及一个对应的 energy value E(X,Y),然后我们向四周扩展这个 2 × 2 棋盘区域,具体往哪里扩展了? 朝使 E(X,Y) 下降最多的那个方向 扩展。最终我们找到一个棋盘格内左右的小方块区域。
Given a seed corner, we search for its closest neighbors in the direction of its edges e 1 and e 2 , yielding an initial
2 × 2 checkerboard hypothesis with an associated energy value E(X,Y). To optimize E(X,Y), we propose expansion
moves on Y, which expand any of the checkerboard borders by a single row or column. Amongst all four possibilities,
we select the proposal, which reduces E(X,Y) the most.
Fig. 3(a) illustrates the expansion moves exemplarily
能量函数定义
11
棋盘格检测--Automatic camera and range sensor calibration using a single shot相关推荐
- 目标检测方法简介:RPN(Region Proposal Network) and SSD(Single Shot MultiBox Detector)
原文引用:http://lufo.me/2016/10/detection/ 最近几年深度学习在计算机视觉领域取得了巨大的成功,而在目标检测这一计算机视觉的经典问题上直到去年(2015)才有了完全使用 ...
- 棋盘格检测--Automatic Detection of Checkerboards on Blurred and Distorted Images
Automatic Detection of Checkerboards on Blurred and Distorted Images In Proc. IEEE/RSJ International ...
- Camera和Image sensor技术基础笔记(5) -- HDR相关技术
动态范围(Dynamic Range) 动态范围最早是信号系统的概念,一种信号系统的动态范围定义为:最大的信号不失真的电平和噪声电平的差,在实际场景中,多用分贝(dB)为单位来衡量一个信号系统的动态范 ...
- 高通 camera CTS Verify FOV calibration debug
高通 camera CTS Verify FOV calibration debug 背景 分析 如何修改 总结 背景 CTS 手动测试中 有Camera FOV calibration的测试. MT ...
- 手眼标定算法---Navy算法(Robot sensor calibration: solving AX=XB on the Euclidean group)
本文主要介绍Frank C. Park and Bryan J. Martin在文献Robot sensor calibration: solving AX=XB on the Euclidean g ...
- 6、相机标定中的特殊棋盘格检测方法(真是啥需求都会有)
摘要 1. 需求 2. 算法的步骤 3. 实现的效果 4. 部分代码 5. 非常感谢您的阅读! 6 期待您加入 1. 需求 我目前在做自动驾驶车辆上的各类传感器的标定问题.很容易理解,各类传感器就相当 ...
- 目标检测 - 基于 SSD: Single Shot MultiBox Detector 的人体上下半身检测
基于 SSD 的人体上下半身检测 这里主要是通过将训练数据转换成 Pascal VOC 数据集格式来实现 SSD 检测人体上下半身. 由于没有对人体上下半身进行标注的数据集, 这里利用 MPII Hu ...
- SSD(Single shot multibox detector)目标检测模型架构和设计细节分析
先给出论文链接:SSD: Single Shot MultiBox Detector 本文将对SSD中一些难以理解的细节做仔细分析,包括了default box和ground truth的结合,def ...
- 人脸检测--S3FD: Single Shot Scale-invariant Face Detector
S3FD: Single Shot Scale-invariant Face Detector ICCV2017 Caffe code will be available 本文针对基于 anchor ...
最新文章
- PCL点云配准(2)
- python开源项目贡献_通过为开源项目做贡献,我如何找到理想的工作
- 控制文字长度,多出的文字用省略号代替
- 面试题 17.12. BiNode
- 蓝桥练习-算法训练 素因子去重
- 为什么Docker是云计算必然的现在和未来
- 怎么把word里面虚线变成实线_弱电不会制作cad图,花3分钟看完,只要会用WORD保证你能画出来...
- 行为设计模式 - 命令设计模式
- Python3 网络爬虫:下载小说的正确姿势
- DUILIB相对位置修改为锚概念
- 按头安利 好看又实用的手绘图标素材看这里
- pyodbc linux 乱码,关于python:无法在Linux上安装pyodbc
- Android Notification中PendingIntent.Flag的应用
- VR球类游戏填坑总结
- HTC One X S720e/G23刷ROOT教程
- 已解决:java.sql.SQLException: Value ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp
- 大学计算机基础实践教程实验八,《大学计算机基础》实验报告八.doc
- DAY2_L2正则化
- blt功能_BitBlt使用详解 | 学步园
- 下列不是用于制作计算机动画,计算机应用基础动画制作软件_2019答案章节答案期末答案...
热门文章
- Spring 视图解析
- vc连接数据库,对数据的基本操作
- 在机械狗上利用AstraPro3D深度摄像头简单实现目标跟踪和人体姿态识别
- 用于药物反应预测的自适应大小的子结构学习
- jni android 参数 字符串 jstring,2.4.5 jstring介绍
- python django windows_Python+Django在windows下的开发环境配置图解
- R 语言柱状图示例笔记
- 你的数据也可以-两篇NAR的数据库
- 微生物组-扩增子16S分析研讨会(2020.1)
- Nature综述:进化病毒毒力的系统发育基因组学