1. 基于边缘检测的三维跟踪建模
三维物体追踪是已知图像中某个物体在已知一系列空间三维点位置(或者是一个3D 模型面片集)的信息下,将这些点通过一个恰到好处的位姿(R,t)进行转换后投影到图像上。问题的求解目标是这个位姿(R,t),难点是并不知道这些三维点对应图像上的哪些像素点。
假如已知这个3D模型在图像对应物体具有清晰轮廓,特别是物体与背景之间有较好的灰度值区分度的(比如白色桌子上放一本MVG书),就可以利用基于边缘检测的三维物体跟踪。
令:x是重投影回去的轮廓(以下简称轮廓)上的离散点,x表示二维点。此处为方便起见,先命名x对应的三维点的坐标为(X,Y,Z)(X,Y,Z)(X,Y,Z)。
令:x在垂直于轮廓方向且向内的相邻点为xpex_{pe}xpe,平行于轮廓的相邻点为xpax_{pa}xpa。
由于基于边缘检测的三维物体跟踪的最重要的特点是:垂直于边缘方向的梯度大,平行于边缘方向的梯度小,于是有:
E=12∑line∈contour∑x∈line(I(x)−I(xpa))2+(I(x)−I(xpe)−256)2E =\frac{1}{2} \sum_{line\in contour}\sum_{x \in line}(I(x)-I(x_{pa}))^2+(I(x) - I(x_{pe}) - 256)^2E=21line∈contour∑x∈line∑(I(x)−I(xpa))2+(I(x)−I(xpe)−256)2
其中∣I(x)−I(xpa)∣|I(x) - I(x_{pa})|∣I(x)−I(xpa)∣表示梯度。
后者(256−I(x)−I(xpe))2(256-I(x) - I(x_{pe}))^2(256−I(x)−I(xpe))2让候选点到边缘的梯度(即I(x)−I(xpe)I(x) - I(x_{pe})I(x)−I(xpe))尽可能大(那样对应的E才会小)。灰度值最大值一般为256。
由于前者对结果的影响很小,因此我们考虑后者即可:
E=12∑line∈contour∑xi∈line((I(xi)−I(xipe)−256)2E =\frac{1}{2} \sum_{line\in contour}\sum_{x_i \in line}((I(x_i) - I(x_i{pe}) - 256)^2E=21line∈contour∑xi∈line∑((I(xi)−I(xipe)−256)2
**注:**在实验室常用做法中使用的是根据该marker是黑色还是白色而决定使用:
Ei=12(I(x)−I(xppe)+256)2(白色)E_i = \frac{1}{2}(I(x)-I(x_{p_{pe}}) + 256) ^2(白色)Ei=21(I(x)−I(xppe)+256)2(白色)
还是Ei=12(I(x)−I(xpe)−256)2(黑色)E_i = \frac{1}{2}(I(x)-I(x_{pe}) - 256)^2(黑色)Ei=21(I(x)−I(xpe)−256)2(黑色),以便让像素差更接近与0.(我们以下假设是黑色)
2. 基于模型求导
2.1 链式分解
令fi=(I(xi)−I(xipe)−256)f_i = (I(x_i) - I(x_i{pe}) - 256)fi=(I(xi)−I(xipe)−256),则E=12fTf=12[f1f2…fn][f1f2…fn]E=\frac {1}{2}f^Tf= \frac{1}{2} \begin{bmatrix} f_1& f_2&…&f_n\end{bmatrix}\begin{bmatrix} f_1\\ f_2\\…\\f_n\end{bmatrix}E=21fTf=21[f1f2…fn]⎣⎢⎢⎡f1f2…fn