我在3D场景中有一个物体的两个图像I1和I2。图像之间的区别在于对象已移动。摄像机位置和校准是已知的,并且已知对象上的一些3D特征点以及移动它的3D变换。我也有这些特征点的投影。
我想对齐图像。所以看起来我有几个选择:
我可以查看2D特征点并导出仿射变换来进行对齐。直观地说,这似乎会有错误,因为它不会解释透视失真。
我可以找到单应变换并使用warpPerspective进行变换。我是单应变换的新手,但听起来这会考虑透视变形。实际上,通过我的设置,我相信单应矩阵很简单:反转投影矩阵,反转3D变换,然后重新投影。这将给x' = Hx。这似乎会给我精确的图像对齐。
所以第一个问题:warpPerspective会给warpAffine提供更好的对齐结果吗?
第二个问题:并非所有特征点都位于同一平面上。我还可以使用warpPerspective吗?我想我读的单应性变换点必须在同一个平面上。
第三个问题:由于单应变换是3x3,这意味着我需要知道图像中每个像素的z坐标才能进行变换?
感谢。
答案 0 :(得分:1)
仿射变换是图像内平面2D变换。它不考虑平面外转换。
单应性模拟平面的透视变换。所以可以考虑例如用于后倾斜平面。
如果你的物体是平面但可以进行平面外旋转,你需要一个单应性来模拟它。
如果你的模式不是平面,那么单应性不是真正的模型。话虽这么说,但这通常是一个足够的近似值。但是,平面外点将被错误地扭曲。