检测&测量Android上

时间:2016-03-21 12:49:53

标签: android opencv image-processing javacv opencv4android

要求是创建在一个特定移动设备上运行的Android应用程序,该应用程序记录响应于强光(物理连接到移动设备)而扩张的人眼瞳孔的视频。然后在设备上逐帧地对视频进行后处理以检测&测量每帧中瞳孔和虹膜的直径。请注意,图像处理不需要实时进行。最终结果将是描述瞳孔(&虹膜)大小随时间变化的数据集。预计虹膜大小可以用于增强瞳孔直径数据的置信度(例如,去除瞳孔大小数据的严重错误),但也可以作为眼睛在任何情况下扩张的相对量度。点。

我熟悉开发Android移动应用程序,但我在图像处理方面的经验非常有限。我已经研究过解决方案,似乎答案可能在于OpenCV / JavaCv库,它们应该提供形状检测(例如http://opencvlover.blogspot.co.uk/2012/07/hough-circle-in-javacv.html),但任何人都可以提供有关这些特定问题的指导:

我是否认为它可以检测位图中的两个圆形,一个在另一个内?即彼此内部的形状不是问题。

JavaCv是否可以检测到一个圆圈,并返回一个位置&半径/直径?即它没有返回一组顶点,然后需要进一步处理以与圆形进行比较?它似乎有一个HoughCircle方法,所以我想是的。

在进行形状检测之前,通常使用每帧的哪种处理?例如,一种增强边缘,平滑或去除颜色的算法?

我可以使用它来检测检测到的圆的存在吗? (以像素为单位,但随后可以轻松转换为实际测量值,因为正在使用已知硬件)。我想是的,但听到更熟悉的人的确认会很高兴。

这个项目是一个非商业性的慈善项目,所以任何帮助都特别受到赞赏。

Video frame sample

1 个答案:

答案 0 :(得分:0)

我真的建议使用ndk,因为它的功能更丰富一些。此外,它允许您在带有图像的笔记本电脑上运行和测试算法,然后再将其推送到设备,从而加快开发速度。

预处理步骤: 通常,人们会使用阈值或canny边缘检测和形态学操作,如侵蚀扩张。

对于虹膜/瞳孔的检测,houghcircles不是一个非常好的方法,像MSER这样的特征检测方法对于不那么明确的圆圈更有效。 Here是我在同一主题上写的另一个答案,它有代码可以提供帮助。

如果您希望衡量某些地区,我建议您浏览this博客。它清楚地说明了合理准确测量所涉及的步骤。