ColorSpacePoint 到 DepthSpacePoint
ColorSpacePoint to DepthSpacePoint
我正在尝试将单个 ColorSpacePoint 映射到 Kinect SDK 2.0 中的 DepthSpacePoint。
如果了解Kinect提供的三种坐标系,这应该是一个非常简单的映射。 ColorSpace 和 DepthSpace 都是二维空间,它们只是具有不同的分辨率和纵横比。
但是,我无法确定 CoordinateMapper 中的哪个函数会接收特定的 ColorSpacePoint 和 return 关联的 DepthSpacePoint。
任何人都可以解释一下这个问题吗?
谢谢!
SDK 中没有将单个 ColorSpacePoint
映射到 DepthSpace
(或 CameraSpace
)的方法。而且不可能!要获得正确的映射,您不仅需要像素坐标,还需要该特定像素的深度。而在 RGB 图像中,您没有该信息。
要实现从颜色 space 到深度或相机 space 的正确映射,您首先必须将 完整 深度图像映射到彩色图像, 以获得每个颜色像素的深度值。然后很容易将单个像素从颜色映射到深度 space。但是到那时你已经有了完整的映射。
所以,如果你真的需要朝那个方向走,你需要使用CoordinateMapper.MapColorFrameToCameraSpace
映射整个图像。
另一方面,当您在深度或相机中时 space,您已经拥有每个像素所需的所有信息,因此映射单个像素很容易。这就是存在这些方法的原因(例如 CoordinateMapper.MapDepthPointToCameraSpace
)。
编辑:
我希望一张小图可以帮助解释为什么需要深度来获得颜色和深度之间的正确映射space:
彩色相机的一个像素正在注视蓝色物体(蓝色实心箭头)。此像素映射到深度相机的特定像素(红色实线箭头)。
如果物体不存在,彩色相机的相同像素将注视背景(蓝色虚线箭头),这将映射到深度相机中的不同像素(红色虚线箭头 - 不同箭头的方向表示不同的像素)。
但是彩色相机不知道它是在看物体还是在看背景。它只知道那里有哪种颜色。不是那种颜色有多远。这就是为什么单靠彩色相机无法决定哪个是深度相机中的正确像素。
另一方面,深度相机知道每个像素的距离,因此它可以计算出彩色相机中的相应像素。
我正在尝试将单个 ColorSpacePoint 映射到 Kinect SDK 2.0 中的 DepthSpacePoint。
如果了解Kinect提供的三种坐标系,这应该是一个非常简单的映射。 ColorSpace 和 DepthSpace 都是二维空间,它们只是具有不同的分辨率和纵横比。
但是,我无法确定 CoordinateMapper 中的哪个函数会接收特定的 ColorSpacePoint 和 return 关联的 DepthSpacePoint。
任何人都可以解释一下这个问题吗?
谢谢!
SDK 中没有将单个 ColorSpacePoint
映射到 DepthSpace
(或 CameraSpace
)的方法。而且不可能!要获得正确的映射,您不仅需要像素坐标,还需要该特定像素的深度。而在 RGB 图像中,您没有该信息。
要实现从颜色 space 到深度或相机 space 的正确映射,您首先必须将 完整 深度图像映射到彩色图像, 以获得每个颜色像素的深度值。然后很容易将单个像素从颜色映射到深度 space。但是到那时你已经有了完整的映射。
所以,如果你真的需要朝那个方向走,你需要使用CoordinateMapper.MapColorFrameToCameraSpace
映射整个图像。
另一方面,当您在深度或相机中时 space,您已经拥有每个像素所需的所有信息,因此映射单个像素很容易。这就是存在这些方法的原因(例如 CoordinateMapper.MapDepthPointToCameraSpace
)。
编辑:
我希望一张小图可以帮助解释为什么需要深度来获得颜色和深度之间的正确映射space:
彩色相机的一个像素正在注视蓝色物体(蓝色实心箭头)。此像素映射到深度相机的特定像素(红色实线箭头)。
如果物体不存在,彩色相机的相同像素将注视背景(蓝色虚线箭头),这将映射到深度相机中的不同像素(红色虚线箭头 - 不同箭头的方向表示不同的像素)。
但是彩色相机不知道它是在看物体还是在看背景。它只知道那里有哪种颜色。不是那种颜色有多远。这就是为什么单靠彩色相机无法决定哪个是深度相机中的正确像素。
另一方面,深度相机知道每个像素的距离,因此它可以计算出彩色相机中的相应像素。