我正在阅读立体视觉的主题,使用Hartley& Zimmerman的书以及一些论文,因为我正在尝试开发一种能够从两个图像创建高程图的算法。
我正在尝试提出这种算法的基本步骤。这就是我认为我必须做的事情:
如果我有两个图像,我不得不找到基本矩阵F,以便在以后的三角测量中找到所有点的实际高程值。如果摄像机是校准的,这很简单,如果不是稍微复杂一点(在H& Z中可以找到很多方法)。
为了获得核线,有必要知道F.这些是用于在第二图像中找回第一图像中的图像点x的线。
现在,部分内容让我感到有些困惑:
现在,我将开始在第一张图片中拍摄图像点x_i
,并尝试使用一些匹配算法在第二张图片中找到对应的点x_i’
。使用三角测量,现在可以计算真实世界点X并从中计算出它的高程。将对右图像中的每个像素重复此过程。
在完美世界(无噪音等)中,将根据
进行三角测量 x1=P1X
x2=P2X
在现实世界中,有必要找到最合适的。
对所有像素执行此操作将根据需要生成完整的高程图,但是某些像素将无法匹配,因此无法进行三角测量。
最让我困惑的是,我觉得Hartley& Zimmerman跳过了关于如何获得你的点数对应(匹配?)的整个讨论,而且除了这本书之外我读过的论文还谈了很多关于差异图的文章。在H& Z中根本没有提到。但是我认为我理解正确的差异只是差异x1_i- x2_i
?
这种方法是否正确,如果不是,我会在哪里犯错误?
答案 0 :(得分:0)
您的方法通常是正确的。
您可以将立体摄像系统视为空间中的两个相对方向已知的点。这是光学中心。在每个光学中心的前面,你有一个坐标系。这些是图像平面。当您找到两个相应的像素时,您可以计算每个像素的一条线,通过像素和相应的光学中心。在两条线相交的位置,3D中存在物点。由于不完美的世界,它们可能不会相交,人们可能会使用线条彼此最接近的点。
有几种算法可以检测哪些点对应。
当使用视差时,需要对齐两个图像平面,使得图像是平行的,并且图像1中的每一行对应于图像2中的相同行。然后,仅需要基于每行搜索对应关系。然后,也足以了解单个对应点的x轴上的差异。这就是差距。