【问题标题】:How to resize a depth map from size [400,400] into size [60,60]?如何将深度图从 [400,400] 大小调整为 [60,60] 大小?
【发布时间】:2020-11-22 09:23:23
【问题描述】:

我有一个使用 kinect 相机获得的深度图图像。 在该图像中,我选择了一个大小为 [400,400] 的区域并将其存储为另一个图像。 现在,我想知道如何在python中将此图像调整为[x,y]的大小。

【问题讨论】:

  • 您是否要求一组调整大小的方法(在这种情况下为下采样)?因为它有一个完整的理论:en.m.wikipedia.org/wiki/Image_scaling 通常,您必须选择适当的抗锯齿滤镜,裁剪相应的图像光谱并将其重建为更小的图像。
  • @JeffUK 我知道 openCV resize 函数可用于调整 RGB 或灰度图像的大小,但我不确定如何使用此函数正确调整深度图像的大小,因为这里每个像素都是 z -坐标

标签: python image-processing computer-vision kinect opencv-python


【解决方案1】:

和普通图片一样

import cv2
import matplotlib.pyplot as plt

image = cv2.imread(path_to_your_image) # Insert your image address here
resized = cv2.resize(image, (x, y),  interpolation = cv2.INTER_NEAREST) 

plt.imshow(resized)
plt.show()

【讨论】:

  • 一张 rgb 图像有 3 个通道的红色、绿色和蓝色像素值,而深度图像只有 1 个通道,即 z 坐标,这种方法还能正常工作吗?
  • @Win ,是的,所有图像都只是来自 python 的 numpy 数组。没关系。删除 BGR2RGB 线以消除歧义。
【解决方案2】:

我不建议像处理图像那样降低深度图的分辨率。想象一个场景,在墙前 5 m 处有一个小物体:

  • 使用双三次/双线性算法,您将获得物体和墙壁之间某物的深度。实际上,两者之间只有一个空闲空间。
  • 使用最近邻插值更好,但您会忽略很多信息,在某些情况下,对象可能会消失。

最好的方法是使用 Mode 功能。将原始深度图划分为多个窗口。每个窗口将代表缩小地图中的一个像素。为它们中的每一个计算最频繁的深度值。你可以使用 Python 的statistics.mode() 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2013-08-12
    • 2012-09-23
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多