【问题标题】:Produce image based on images from two perpendicular view根据来自两个垂直视图的图像生成图像
【发布时间】:2014-02-04 11:57:47
【问题描述】:

我试图根据杆的两个垂直视图在其平面中找到曲线形状杆的形状。我准备了一张图片,让我的问题更清楚。

我有杆在平面 1 和 2 上的投影图像,我想在平面 3 上生成杆的图像。我所做的是在视图中找到杆的中心线1和2使用Matlab图像处理工具箱,然后我在这些线上拟合了一条曲线。然后我根据这些拟合曲线生成 3D 数据,最后将另一条曲线或椭圆拟合到最终的 3D 曲线。

它有效,但我想知道是否有更合适的解决方案,例如通过旋转视图 1 和 2。

视图 3 相对于视图 1(和视图 2)的角度是可变的,但视图 1 和视图 2 彼此垂直。

我们可以通过在视图 1 和 2 中找到杆的末端来找到平面 3 的角度,因为它是 atan(x_end_in_view_1/x_end_in_view_two)。是否可以根据来自第二个摄像头的图像,从一个摄像头的视点生成与另一个摄像头成已知角度的图像?

非常感谢任何帮助。

【问题讨论】:

    标签: matlab image-processing multiviews


    【解决方案1】:

    是的,可以从与另一台摄像机成已知角度的摄像机的视点生成图像。给定角度,您可以计算两个平面之间的仿射变换,并将该变换应用于原始图像,以获得图像在另一个平面上的投影。

    仿射变换有 6 个参数,因为您知道两个平面之间的角度,对于 4 个点 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),在倾斜平面(比如 y 轴)(忘记 z 坐标)后,您会知道这些点的 (x, y) 坐标。现在,您将有 8 个方程和 6 个未知数,因此您可以计算仿射变换并将该变换应用于整个图像以获得投影。

    【讨论】:

    • 非常感谢。您有任何可以参考的示例、网站或论文吗?
    • testdrive.mapinfo.com/TECHSUPP/MIPROD.NSF/0/…这个网页详细描述了如何计算仿射变换
    • 谢谢@Bharat,你确定我可以在 3D 中使用这个转换吗?我在网上找到的所有示例都是 2D 的!
    • 您只需要使用2D版本,您将点在3D平面上投影后得到2D坐标(投影部分不难,如果您知道角度),但是平面中的点仍将具有 2D 坐标,它是您需要计算的 2D 平面单应性