image-processing - 区分 3D 阴影圆柱体方向的正确特征提取方法是什么?

标签 image-processing machine-learning computer-vision feature-extraction

一般来说,我对神经网络实现感兴趣,以解决阴影形状问题。到目前为止,首先,我已经通过着色实现获得了一个简单的形状。

然而,特别是对于这个问题,我希望训练一个回归模型,该模型将在给定阴影的情况下学习 3d 空间中圆柱体的 3d 方向。每个图像只是一个灰度 3D 阴影圆柱体。在整个数据集中,只有大小和方向有所不同。

假设纹理是匹配的,并且光源始终与每个圆柱体图像具有相同的位置。

当我找到了大量关于这个问题的文献时,我很快意识到我目前需要的应该要简单得多。因此,我只需要一个建议:适合上述问题的正确图像描述符是什么?

最佳答案

Z轴旋转(考虑到Z轴从你指向投影平面)很简单,它只是边界框的旋转。为了解决由于其他轴旋转而导致的扭曲问题,您可以考虑圆柱体顶部的椭圆平面截面,找到短轴和长轴并计算投影。

在另外两个轴上,我会选择一些渐变方法。使用一些梯度运算符,您应该能够找到具有相同阴影强度的区域的轮廓。这些轮廓由距光源相同距离的点组成,从而创建圆锥曲线(在这种情况下,直线也是圆锥曲线)。

提取圆锥曲线后,我可能会运行一些回归算法来找到圆锥曲线的等线。

最后一步是计算空间中的实际变换。你必须考虑投影平面和投影变换,但我认为这应该是可能的。

编辑: http://i.imgur.com/7GpbSE7.png

我创建了这个简单的圆柱体图像。然后我将颜色数量减少到 16。如您所见,现在可以看到单独的灰色阴影。我认为应该可以使用区域的边缘来近似圆柱体的旋转。

在我的例子中使用的是并行照明引擎,因此边缘实际上是线段。但如果我使用点照明引擎,egdes 将具有不同的形状 - 它们将是椭圆的一部分。

使用一些 3D 数学,可以计算出气缸位置的反向近似值。我不太确定具体方法,这只是一个猜测。另外,我认为不可能找到投影变换的唯一逆变换。这可能会让事情变得复杂。

PS:有样本数据吗?

关于image-processing - 区分 3D 阴影圆柱体方向的正确特征提取方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19363017/

相关文章:

machine-learning - 识别区分类别时最有用的单词

java - "java.lang.OutOfMemoryError: Java heap space"在 ColdFusion 11 中使用 ImageReadBase64() 读取大图像时

matlab - 定位两个物体的接触像素

python - 尝试针对随机森林模型进行测试时,如何修复 “Number of features error”?

machine-learning - reshape y_train 以在 Tensorflow 中进行二进制文本分类

image-processing - 使用opencv在c中进行手部检测从kinect设备捕获视频

python - Keras InceptionV3 类型错误 : unhashable type: 'Dimension'

opencv - 旋转不变检测器的最佳解决方案是什么?

Python:从不规则网格高效地插值到二维规则网格

java - java中的setRgb用于tif缓冲图像丢失其坐标信息