【问题标题】:Convert 3D surface data to 2D range image将 3D 表面数据转换为 2D 范围图像
【发布时间】:2014-11-04 04:50:09
【问题描述】:

我有一个使用 wrl 文件表示的 3D 表面。我已阅读所需的信息。从文件中获取以下数据:顶点、面、法线、纹理坐标。

如何使用这些数据将其转换为 2D 范围图像(与正常强度图像相同,但每个像素都带有底层表面的深度值)?我更喜欢使用 Matlab 偏爱的解决方案来解决这个问题,尽管一般的想法非常受欢迎。

【问题讨论】:

    标签: matlab 3d triangulation point-clouds


    【解决方案1】:

    使用griddata

    如果我理解正确,您有 x,y,z 数据并且您想将其转换为图像,其中图像强度为 Z。

    [ximg,yimg]=meshgrid(1:szX,1:szY);
    img = griddata(x,y,z,ximg,yimg); 
    % normalize image, or set it at range you want
    

    我认为它应该有效。

    【讨论】:

    • 感谢您的回复,安德。我首先尝试过(抱歉,我忘了在帖子中提及)。但是 griddata 中的一个重要约束是网格点(来自 meshgrid)必须是我们从中插值的 3D 表面的一部分。就我而言,我拥有的 3D 数据位于其他地方(大多数 x-y 点都是负数)。为此,我试图将我拥有的 3D 点云(仅通过平移)重新定位到从 meshgrid 获得的网格的大致中心。你怎么看这个?
    • @Swami 明确。您应该 1:填充所有 X-Y 数据以 szX/2 szY/2 为中心,然后 2:缩放数据,使顶点都在 1:szX 1:szY 范围内(包括)。我认为这太难了;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2012-12-03
    • 2018-03-24
    相关资源
    最近更新 更多