2

我正在尝试制作一个小软件,它将人手的扫描图像作为输入,并根据手相原理预测未来。想请教一下手头各条线的坐标如何才能准确得到。该方法应该保持通用,因为我没有特定的图像集,它应该适用于所有图像。

提前致谢。

4

2 回答 2

2

我建议使用java.lang.Palmistry包,也可能与java.lang.FuturePrediction包结合使用。

除了所有的笑话,这里有一个可能有用的建议:

  1. 要求提交者用低且偏向一侧的光源拍摄他们的手,这将在手部的浅脊上投射阴影,从而为您提供更好的手部线条输入信号
  2. 其次,对图像的位图数据使用某种边缘检测或边缘增强。这可以通过一个非常标准的卷积矩阵内核滤波器来实现,也称为Sobel 算子
  3. 您可能需要将图像裁剪到手掌上大部分只是一个方形窗口的区域,除非未来也写在手指的线条上。
  4. 最后,要获得线条和坐标,您可能需要研究图像矢量化:霍夫变换特别有效,但是来自 Microsoft Research 的矢量化算法(2000年的调查论文)和“Outliner”,一个开源的边缘查找器和矢量化器也可能有用。
    使用您的边缘增强图像数据,然后使用这些参考文献中描述的一种方法将其转换为一组矢量,将为您提供至少一些数学公式和存在的线条的坐标。然后,您可以将手分成感兴趣的部分,并检索这些部分中存在的线条的公式。
  5. 可以通过某种有监督的机器学习来将公式与其一般形状相匹配,您感兴趣的形状示例就是这些形状的训练数据。您可能还需要考虑使用Ramer-Douglas-Peucker 算法降低公式的复杂性,作为其中的附加步骤。

希望这可以帮助。顺便说一句,如果您对未来有任何有用的提示,请务必告诉我们!

于 2013-01-31T11:22:59.507 回答
0

你能举个例子吗?

它可能会涉及模糊通图像,以便仅保留相关的对比度比例(即,模糊会去除太小的线条和皱纹,带通也会消除尺寸过大的特征)。

之后,您可以使用霍夫变换来查找图像中线条的长度和方向。

或者,它可能是一种可行的方法来检测线条/皱纹/较暗区域,然后对图像进行骨架化。这将为您提供线的分支和端点。

于 2013-01-31T11:29:49.277 回答