首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将二维深度图像/热图转换为三维高度场?

将二维深度图像/热图转换为三维高度场?
EN

Stack Overflow用户
提问于 2019-10-10 00:39:53
回答 1查看 1.1K关注 0票数 0

我想知道如何将2D深度图像/热图转换为三维高度字段。其中Z值是2D图像的值。

我有一个RGB图像:

我还拥有相应的深度图像/热图:

我想将它们组合成这样的高度字段,其中Z值是深度图像/热图的值:

除了将RGB值从RGB图像中保存在3D高度字段之外。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-10 12:08:03

您所描述的实质是向数据集添加另一个维度。有几种方法可以实现这一点,但是请注意,有些方法可能会让其他人感到困惑。您要导出的另一个程序也可能对数据的形状等有很强的期望,所以请检查一下。下面是一些关于你想做什么的想法.

本质上,您描述的是数据的两个“属性”:彩色图像(一个3通道属性)和高度字段(一个单一的“通道”)。一些备选方案:

  • Keep作为两个独立的ndarray。,即图像的三维数组和高度字段的2D数组。将它们命名为适当的名称,并将它们保存在合理的文件结构中。如果我匆匆忙忙的话,这就是我要做的事情(基本上,使用nothing).
  • Put .将它们都放入HDF5文件中--这种格式本质上就像一个小文件系统,带有嵌套的“文件夹”,它允许任意数量的文档和元数据)。它还提供压缩、任意数组访问和其他有用的东西。因此,它对组织大量(或两个)ndarray很好,特别是如果它们是large.
  • Use .,这基本上是n维pandas,可以将两个数组存储在一个单一的数据结构中。对于这个用例来说,这并不理想,但至少可以让您对轴进行标记,这样您就可以清楚地知道数据的4‘通道are.
  • Make a Python class 是什么了。通过这种方式,您可以准确地记录这两个数组是什么,并编写方法来将它们一起绘制。类实例可以被腌制并保存到磁盘中,或者您可以编写方法以任意方式保存它们(例如,HDF5 )。如果我要做很多这样的事情,并且需要一个健壮的、可持续的解决方案,我就会这样做。

下面是这门课的样子:

代码语言:javascript
运行
复制
class BumpImage():
    """
    An image with a 3d height field attached.
    """
    def __init__(self, photo, height):
        if photo.ndim == 2:
            # Make greyscale image into RGB.
            photo = np.repeat(photo[:, :, None], 3, axis=-1)
        self.photo = photo
        if height.shape == photo.shape[:2]:
            self.height = height
        else:
            raise TypeError("Height must be 2d array")

    def size(self):
        return self.height.shape

    def plot(self, ax=None):
        # Make a 3d plot with matplotlib or whatever.
        return ax

    def save(self, fname):
        # Make HDF5 file called fname.
        return

我不会做的事:

  • 将高度通道叠加到NumPy中的其他3个通道上,以生成单个4通道的“图像”。我想说这是个坏主意,因为没有方便的方法来记录你在NumPy中所做的事情。
  • 试图以某种方式将它们呈现在一起,例如以山坡或三维视图表示的高度字段的地块,这将很难再次分离这两个数据集。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58313943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档