假设有两个摄像头A和B,共光心,内参数矩阵分别是
![K_A](https://i-blog.csdnimg.cn/blog_migrate/92aeac3a2b329859fd42b4499bf0812f.png)
和
![K_B](https://i-blog.csdnimg.cn/blog_migrate/bff35321eb8a263de61f78f57bd7917c.png)
,世界坐标系和摄像头A的坐标系重合,那么这两个摄像头的投影矩阵可以设为:
对于世界坐标系中的一个点
![X](https://i-blog.csdnimg.cn/blog_migrate/30607f6751d911eea7736c03da8ef449.png)
,它在两个摄像头对应的图像上的坐标分别为:
注意这里的等号是在齐次意义下成立的等号,也就是说给等式任意一边乘上一个非零常数等式依然成立。由这两个关系式就得到了下面这个等式:
因为两个摄像头共光心,可以用四点算法获得单应矩阵,对单应去除内参数的影响,剩下的就是正交矩阵R了。R的第三行,就是摄像头B在世界坐标系(也就是摄像头A的坐标系)中指向正前方的主轴的单位向量:
这个方向也是对应图像平面的法线方向。因为在摄像头坐标系里,Z轴指向正前方,所以根据设定,摄像头A的图像平面的法线方向是
所以二者夹角的余弦值就是这两个向量的内积,也就是
![r_{33}](https://i-blog.csdnimg.cn/blog_migrate/6b67cdc0d5726a8e6d2dc92bca84b7d9.png)
。
题主把第二问给删了,嘿嘿。第二问是求两平面的方程,确实比较复杂。
如果一个平面的单位法向量是
![n](https://i-blog.csdnimg.cn/blog_migrate/4d181e1748c4269b76d31cec35b6b75c.png)
,到原点的距离是
![f](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png)
,那么平面方程可以写为
![n^Tx+f=0](https://i-blog.csdnimg.cn/blog_migrate/4d181e1748c4269b76d31cec35b6b75c.png%5ETx%2Bf%3D0)
。现在咱们法线方向都有了,关键是要求图像平面到原点的距离。
拿摄像头A来说,设它的内参数是
需要从这个矩阵中恢复出图像平面到原点的距离。假设现在有一个平面,平行于XY平面,距离原点的距离是
![f](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png)
,世界中的一个点
![P=[X,Y,Z]^T](https://i-blog.csdnimg.cn/blog_migrate/09b846bf5513bdb16736f80586315eb2.png)
投影到这个平面上,坐标就变成了
![[\frac{Xf}{Z}, \frac{Yf}{Z}, f]](https://zhihu.com/equation?tex=%5B%5Cfrac%7BXf%7D%7BZ%7D%2C+%5Cfrac%7BYf%7D%7BZ%7D%2C+f%5D)
,这个时候还是三维坐标,但是因为第三个数永远都是
![f](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png)
,可以把它舍去,把前两个数当做图像平面上的平面坐标,再用齐次坐标的表示方法去表示这个平面坐标,也就是给第三个数强行置1,就变成了下面这个齐次坐标:
对应的投影矩阵是:
这个矩阵的内参数矩阵是真实的焦距
![f](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png)
,它的单位和真实世界的度量吻合,可以是米、毫米。但是在实际中,我们通过标定获得的内参数矩阵
![K_A](https://i-blog.csdnimg.cn/blog_migrate/92aeac3a2b329859fd42b4499bf0812f.png)
的对角线是以像素为单位,而不是以米为单位,它是真实焦距
![f](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png)
乘上了一个有关图像传感器的常数,u像素/米:
![f](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png)
米 乘以
![u](https://i-blog.csdnimg.cn/blog_migrate/61966a6b1f7248036f2d4f5cc263f9d0.png)
像素/米 =
![fu](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.pngu)
像素 =
![f_x](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png_x%0A)
像素
如果想从
![f_x](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png_x)
或者
![f_y](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png_y)
中获得原始的
![f](https://i-blog.csdnimg.cn/blog_migrate/b04cc90ff90b4a539a84990b5119208f.png)
,必须有有关传感器的其他知识,比如它的真实尺寸, 否则是没法求出来的。
-
vczh
,专业造轮子,拉黑抢前排。http://gaclib.net
在
图形图像 话题下有 12 个回答
-
叛逆者
,http://klayge.org
在
图形图像 话题下有 7 个回答
-
半闲居士
,slam研究生
在
计算机视觉 话题下有 5 个回答
更多推荐结果