前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >棋盘格检测--Automatic camera and range sensor calibration using a single shot

棋盘格检测--Automatic camera and range sensor calibration using a single shot

作者头像
用户1148525
发布2019-05-28 12:10:55
1.8K0
发布2019-05-28 12:10:55
举报
文章被收录于专栏:机器学习、深度学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1436945

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档