我想做一个硬币识别项目,在这个项目中,相机会拍摄一对硬币的照片,然后通过价值来识别它们,将它们总结起来并输出金额。我只是想通过查看它们的大小来识别价值(硬币越大价值越高),但我能想到的问题是,如果图片是从不同角度拍摄的,或者相机与硬币的距离与平时不同,那该怎么办?如何解决这个问题,或者有没有其他方法呢?我没有以前的图像处理经验,我想随时学习。相机识别硬币的适当角度是多少?
回答
如果您没有任何经验,您试图实现的目标并不那么容易......但是如果您能够理解成像过程的基础知识和背后的几何图形,则相机角度不是问题:通过使用校准过的相机,您可以检索硬币所在的表面的图像(假设它们在桌子上)。
当你试图识别你的硬币时,你可以尝试做的事情实际上是使用椭圆拟合算法或hough circle变换来查找从原始图像使用omography获得的表的鸟瞰图上的圆圈。
从我的观点来看,谷人所说的基本上是正确的。只需添加一些我认为对你很重要的事情。 您需要了解以下内容
校准相机。 - >您可以获得诸如焦距和原点等固有参数以及相机旋转和平移等外部参数,因此您可以稍后纠正图像。
重新整理图像。 - >图像提取将修改图像,以便您可以看到该图像。为此,我建议你把你的相机放在你要放硬币的桌子上面。相机和桌子之间的距离应该很大,这意味着相机的分辨率也应该足够高。
只要你了解相机校准和图像校正的原理,并获得您的硬币图像,您可以使用日食算法或霍夫变换进行图像分割,只是为了获得硬币的环绕圈。
然后,您可以执行一些图像处理,如二值化或侵蚀,无论计算圆的面积如何。
但是,我个人不会仅仅采用硬币的大小等特征来确定硬币的价值,因为一些具有不同值的硬币可能具有非常相似的大小。因此,我会向您推荐另一种称为分类器的技术。您可以添加颜色甚至纹理等功能。那么在你的情况下,我认为你可以应用SVM:支持向量机将你的硬币分类到正确的类中。
我明白你没有经验的图像处理。但是你的解决方案没有捷径。我建议你花点时间了解我提案的框架和每一步的内在原因。玩的开心。 :) 希望这可以对你有所帮助。
很好的说明了我对新手的回答,谢谢yirui。我只是想补充一点,正确地说,经过某种预处理后,您也可以在第4点中提出建议,您仍然可以搜索圆(使用OpenCV的斑点检测器),选择检测到的斑点周围的ROI,然后运行分类器只是在这些投资回报率上。您建议的双重检查,不仅尺寸大小,当然是可取的,但合适的斑点很容易,速度非常快......您还可以通过分类器保留该检查并使其鲁棒化。 – valleymanbs
- 1. WP7相机看到的角度是多少?
- 2. Backbone.js视图的适当粒度是多少?
- 3. 相机和颜色识别
- 4. m堆不同价值的硬币,你只能从顶部获得硬币。假设你可以将n个硬币带回家,最大值是多少?
- 5. 快速硬币更换算法最多3个硬币在C
- 6. 角度不识别我的控制器
- 7. 硬币
- 8. 适用于多组2D坐标的适当相似性度量
- 9. 硬币找零,但只有硬币
- 10. C#:返回应该返回多少种硬币
- 11. 安卓相机上的物体识别
- 12. 角度对象不被识别-Protractor-net
- 13. 角度js不识别控制器
- 14. Firebase功能无法识别角度4
- 15. 随机翻动一枚硬币
- 16. DFA可以识别多少种语言?
- 17. SQL识别缺少
- 18. 手机的确切屏幕宽度和高度是多少?
- 19. 文本识别无法识别货币符号
- 20. n个硬币。哪个是假的?
- 21. vb.net中的最大标识符长度是多少?
- 22. 查找相机有多高的旋转角度
- 23. 有效地识别在哪个轴季度是一个给定的角度的角度
- 24. Ruby多少错误检查是适当的?
- 25. ElapsedTime性能计数器的适当初始值是多少?
- 26. 墙上时钟每秒的时针旋转角度是多少?
- 27. 模拟掷硬币
- 28. Prolog:硬币更换
- 29. 角度较大的货币过滤器
- 30. 如何识别2相同类型的相机gphoto2
以[此示例](http://scikit-image.org/docs/dev/user_guide/tutorial_segmentation.html)为例演示这些经典的图像处理工具可以为您做些什么(至少用于预处理)。我不会追求尺寸度量,但是可以通过对象分类(经典的ML工具)追踪某种对象检测(可能已经在本例中解决了)。 – sascha