我正在进行一个项目,旨在构建一个程序,能够自动对眼部照片中的瞳孔区域进行相对准确的检测。我目前使用的是Python中的simplecv,因为Python更易于实验。由于我刚开始,我的工作照片相当标准化。然而,虹膜和瞳孔的大小以及虹膜的颜色可能会有所不同,并且眼睛的位置在照片之间可能会略有移动。以下是一张来自维基百科的图片,与我使用的图片相似:“MyStrangeIris.JPG” 由Epicstessie拍摄,根据 CC BY-SA 3.0 许可证发布
我尝试过简单的阈值处理。由于不同眼睛的虹膜颜色不同,固定的阈值处理无法适用于所有图片。
此外,我尝试了simplecv内置的sobel和canny边缘检测,但对于虹膜较暗的眼睛效果不佳。我还怀疑仅靠sobel或canny无法解决问题,因为有时瞳孔边缘会有噪声(例如,睫毛的反光)
我对图像处理和机器学习有入门级的知识。目前,我在考虑三种可能性:
- 基于某些变量对阈值进行回归
- 为瞳孔边缘检测制作特定的掩模
- 对每个像素进行分类(这看起来需要构建大量的训练集)
我走在正确的轨道上吗?我希望能联系到在这类问题上有更多经验的人。任何建议/意见都非常欢迎。谢谢!
回答:
我不确定关于虹膜分类的内容,但我做过从照片中识别手写数字。我建议提高对比度和饱和度,然后使用k-最近邻算法来分类你的图像。根据你的训练集,你可以达到高达90%的准确率。
我认为你走在正确的轨道上。进行图像预处理以简化分类,然后训练你选择的算法。不过,你应该将每张图像视为一个输入向量,而不是对每个像素进行分类!