图像识别 - 图像中的骰子

时间:2018-04-27 07:23:23

标签: c# wpf image image-recognition dice

我正在开发一个WPF应用程序,我需要"找到" /"阅读"来自图像文件的骰子(例如我的摄像头拍摄)/ BitmapSource。

所以我需要知道发现的骰子数量(1,2,3,4,5或6?)及其数量......

我在google上搜索过,但我找不到方法......到目前为止,我唯一能找到的是EmGu(英特尔OpenCV图像处理库的.NET包装器) )。但是,这似乎非常广泛。

一些进一步的信息/想法/经验会有所帮助。

2 个答案:

答案 0 :(得分:1)

首先:要完成此任务,您需要一个愿景库(如OpenCV),没有办法解决。否则,您必须自己实施所需的图像处理。

第二:根据您捕获图像的环境,任务对于计算机来说真的很难。对于机器视觉,建议图像符合以下条件:

  • 灰度值
  • 光滑和黑暗的背景
  • 前景中的几个对象
  • 与背景形成鲜明对比的对象识别

第三次:使用机器视觉完成任务这里是一个小指南。与以往一样,有多种方法可以做到。

a)使用二值化

  1. 过滤:应用过滤器,例如中值滤波器
  2. 二值化:二值化图像并选择骰子的区域
  3. 形态学:应用形态学操作(例如开放)来摆脱选定但不想要的背景部分
  4. 计数:计算具有相似特征(宽度,...)的区域,如骰子
  5. 计数:计算先前选定的骰子区域中的孔
  6. b)机器学习

    如果你敢,你也可以尝试机器学习appraoch,使用例如来自Google的TensorFlow。在这种情况下,您没有上面提到的大多数限制,但您需要使用数百个图像来教授算法。图像需要正确分类/标记(“no.1”,..)。如果正确地教导它也会识别不同的骰子类型(大小,颜色,......),这很难用a)方式。

答案 1 :(得分:0)

我不知道图像识别,我认为使用骰子滚轮程序可能更简单。
我知道AI很难。很难。
对于人工智能最简单的方法可能就是你教授AI点数和骰子计数的方法。

假设你有网络摄像头,并安排图片中唯一的白色东西是斑点 您可以拍照,然后“只是”通过图片中的xy坐标来检查图像中的白色。 当你找到一个,那么任何连接的白色仍然是那个地方 任何未连接的白色都是另一个地方 您将需要调整此过程,以便闪亮的位或任何不被拾取的东西。 如果骰子不是绿色并且你在绿色的台面上滚动,那么当你点击非绿色时,那就是骰子。