2013-01-31 149 views
2

我想制作一个小软件,它将以人手的扫描图像作为输入,并根据手相的原理预测未来。 我想就如何准确获得手上各种线条的坐标提供一些建议。 该方法应该保持通用,因为我没有特定的图像集,它应该适用于所有的图像。从手的图像获取信息

在此先感谢。

+1

看看霍夫变换 – BeRecursive

回答

2

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

所有玩笑不谈,这里是一个可能有用的建议:

  1. 向提议者与光源是低到一边,这将在手投跨越浅脊阴影拍摄他们的手给你一个更好的输入信号手的线。
  2. 其次使用某种边缘检测或边缘增强的图像的位图数据。这可以用相当标准的convolution matrix kernel filter来实现,否则称为Sobel operator
  3. 您可能需要将图像裁剪到大部分只是一个方形窗口的区域,除非未来也写在手指的线条上。
  4. 最后,要获得线条和坐标,您可能需要查看图像矢量化:the Hough transform特别有效,但vectorization algorithms from Microsoft Research,a survey paper from 2000'Outliner', an open source edge finder and vectorizer也可能有用。
    使用你的边缘增强的图像数据,然后将它转换成一组矢量与这些参考文献中描述的方法之一将给你至少一些数学公式,并为线存在的坐标。然后,您可以将手分成感兴趣的片段并检索存在于这些片段中的线的公式。
  5. 匹配公式到它们的一般形状可以用某种有监督的机器学习来完成,例如你感兴趣的形状就是这些训练数据。您也可以考虑使用Ramer-Douglas-Peucker algorithm作为其中的一个额外步骤来降低公式的复杂性。

希望这会有所帮助。顺便说一句,如果你对未来有任何有用的头脑,一定要让我们知道!

+0

谢谢克里斯,一旦我实现了每一件事,我都会让你知道。 – user2028730

0

你能举一个例子吗?

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

之后,您可以使用Hough Transform来查找图像中线条的长度和方向。

另外,它可能是一个可行的方法来检测线/皱纹/黑暗区域,然后skeletonize图像。这会给你线条的分支和端点。