27

我最近开始在我的 Kinect 上进行黑客攻击,我想删除深度阴影。阴影是由红外发射器稍微靠近相机侧面造成的,因此任何靠近的物体都会得到很大的阴影,而远处的物体会得到更少或没有阴影。

阴影长度与阴影两侧最近点和最远点之间的距离有关。

我的目标是能够将彩色图像正确地映射到深度上。这在不处理阴影的情况下是行不通的,如下图所示:
在此处输入图像描述

4

6 回答 6

3

深度阴影总是变黑吗?

如果是这样,您可以使用像时间中位数这样的简单方法来计算图像的背景(更多信息在这里:http ://www.roborealm.com/help/Temporal_Median.php ),然后每当像素为黑色时,设置它到该像素位置的背景值。

于 2011-02-04T00:03:15.437 回答
3

几周前我对这个问题做了一些初步的工作。我的代码直接作用于 WriteableBitmap 而不是深度数据,但如果你只做图像处理,它应该可以工作。该算法并不完美,并且会通过更多调整而受益。如果您更新了代码,请告诉我;我很想看看你在做什么!

源代码贴在我的博客上:

http://richardpianka.com/2011/02/trackingni-depth-correction/

于 2011-02-27T18:00:22.997 回答
2

我不知道 c# 的情况如何,但 openni c++ 有一个名为 xnSetViewPoint() 的函数,唯一的问题是,由于转换,您会丢失前 20 行左右的图像数据。

原因是由于使用了两个不同的传感器,它们彼此靠近但不完全相同。

于 2011-02-23T09:52:26.447 回答
0

很抱歉,阴影是由于您的身体阻止推断的点撞击房间的那个点造成的,所以它会产生一个黑点......除了将基础背景更改为黑色以外的其他颜色之外,您无能为力所以它不会是一个明显的阴影

于 2011-08-28T09:58:59.843 回答
0

Kinect 方法 -MapDepthFrametoColorFrame

获取[x,y]深度框中的位置,并使用该方法进行填充

于 2013-06-03T15:54:24.203 回答
0

彩色相机和 kinect 深度相机的尺寸不同,并且红外点的原点不是来自同一个凸轮,它是距离它几厘米的红外投影仪(因为该位移用于计算深度)。

但是,这里的解决方案很容易,您的阴影数据位于左侧。所以你需要在它变黑之前扩展最后一个已知的颜色数据。

为了更好地适应它,将彩色凸轮数据向右移动。

于 2015-09-15T21:15:14.000 回答