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相关推荐

  1. 目标检测方法简介:RPN(Region Proposal Network) and SSD(Single Shot MultiBox Detector)

    原文引用:http://lufo.me/2016/10/detection/ 最近几年深度学习在计算机视觉领域取得了巨大的成功,而在目标检测这一计算机视觉的经典问题上直到去年(2015)才有了完全使用 ...

  2. 棋盘格检测--Automatic Detection of Checkerboards on Blurred and Distorted Images

    Automatic Detection of Checkerboards on Blurred and Distorted Images In Proc. IEEE/RSJ International ...

  3. Camera和Image sensor技术基础笔记(5) -- HDR相关技术

    动态范围(Dynamic Range) 动态范围最早是信号系统的概念,一种信号系统的动态范围定义为:最大的信号不失真的电平和噪声电平的差,在实际场景中,多用分贝(dB)为单位来衡量一个信号系统的动态范 ...

  4. 高通 camera CTS Verify FOV calibration debug

    高通 camera CTS Verify FOV calibration debug 背景 分析 如何修改 总结 背景 CTS 手动测试中 有Camera FOV calibration的测试. MT ...

  5. 手眼标定算法---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. 6、相机标定中的特殊棋盘格检测方法(真是啥需求都会有)

    摘要 1. 需求 2. 算法的步骤 3. 实现的效果 4. 部分代码 5. 非常感谢您的阅读! 6 期待您加入 1. 需求 我目前在做自动驾驶车辆上的各类传感器的标定问题.很容易理解,各类传感器就相当 ...

  7. 目标检测 - 基于 SSD: Single Shot MultiBox Detector 的人体上下半身检测

    基于 SSD 的人体上下半身检测 这里主要是通过将训练数据转换成 Pascal VOC 数据集格式来实现 SSD 检测人体上下半身. 由于没有对人体上下半身进行标注的数据集, 这里利用 MPII Hu ...

  8. SSD(Single shot multibox detector)目标检测模型架构和设计细节分析

    先给出论文链接:SSD: Single Shot MultiBox Detector 本文将对SSD中一些难以理解的细节做仔细分析,包括了default box和ground truth的结合,def ...

  9. 人脸检测--S3FD: Single Shot Scale-invariant Face Detector

    S3FD: Single Shot Scale-invariant Face Detector ICCV2017 Caffe code will be available 本文针对基于 anchor ...

最新文章

  1. PCL点云配准(2)
  2. python开源项目贡献_通过为开源项目做贡献,我如何找到理想的工作
  3. 控制文字长度,多出的文字用省略号代替
  4. 面试题 17.12. BiNode
  5. 蓝桥练习-算法训练 素因子去重
  6. 为什么Docker是云计算必然的现在和未来
  7. 怎么把word里面虚线变成实线_弱电不会制作cad图,花3分钟看完,只要会用WORD保证你能画出来...
  8. 行为设计模式 - 命令设计模式
  9. Python3 网络爬虫:下载小说的正确姿势
  10. DUILIB相对位置修改为锚概念
  11. 按头安利 好看又实用的手绘图标素材看这里
  12. pyodbc linux 乱码,关于python:无法在Linux上安装pyodbc
  13. Android Notification中PendingIntent.Flag的应用
  14. VR球类游戏填坑总结
  15. HTC One X S720e/G23刷ROOT教程
  16. 已解决:java.sql.SQLException: Value ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp
  17. 大学计算机基础实践教程实验八,《大学计算机基础》实验报告八.doc
  18. DAY2_L2正则化
  19. blt功能_BitBlt使用详解 | 学步园
  20. 下列不是用于制作计算机动画,计算机应用基础动画制作软件_2019答案章节答案期末答案...

热门文章

  1. Spring 视图解析
  2. vc连接数据库,对数据的基本操作
  3. 在机械狗上利用AstraPro3D深度摄像头简单实现目标跟踪和人体姿态识别
  4. 用于药物反应预测的自适应大小的子结构学习
  5. jni android 参数 字符串 jstring,2.4.5 jstring介绍
  6. python django windows_Python+Django在windows下的开发环境配置图解
  7. R 语言柱状图示例笔记
  8. 你的数据也可以-两篇NAR的数据库
  9. 微生物组-扩增子16S分析研讨会(2020.1)
  10. Nature综述:进化病毒毒力的系统发育基因组学