You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将骰子上的标记点数按所属面分组以识别投掷总数值

骰子点数面分组通用解决方案

核心思路

利用骰子的固有几何约束实现分组,完全不依赖点的大小、圆度特征,适配任意常规拍摄角度:骰子的三个可见面为两两正交的平面,同面所有点数必然共面,且顶面法向量与相机拍摄方向夹角最小。

具体实现步骤

方案一:基于平面约束的高精度方案(推荐)

  • 对已分割的单个骰子区域做边缘检测,拟合出骰子的三条主棱边,结合消失点几何原理计算三个可见面各自的法向量在二维图像上的投影,无需提前获取相机内参。
  • 对每个已识别的点数坐标,计算其到三个候选平面的投影残差,将点归入残差最小的平面对应的分组中。可搭配RANSAC算法过滤误识别的异常点,避免干扰分组结果。
  • 分组完成后,选择法向量与图像平面法向量夹角最小的分组,该组包含的点数即为当前骰子的顶面读数,多个骰子直接累加读数即可得到最终结果。

方案二:基于改进聚类的轻量方案

如果不想引入三维几何计算,可以对原有聚类算法做约束修正:

  • 替换K-means为DBSCAN密度聚类,无需提前指定聚类数量,适配不同可见面数量的场景。
  • 不使用固定的邻域距离阈值,改为取当前骰子外接矩形边长的√2/2作为邻域距离上限,符合同面点的最大分布范围约束。
  • 增加聚类后校验逻辑:同一个聚类簇的所有点必须可以被一个凸四边形完全包围(骰子面的透视投影必然为凸四边形),不满足条件的簇自动拆分后重新聚类。

优化建议

可加入骰子点数先验约束做结果校验:单个骰子每个面的点数只能是1-6的整数,三个可见面的点数总和最大为15(4+5+6),若分组结果不符合该规则,自动触发重新计算逻辑,进一步提升准确率。

内容的提问来源于stack exchange,提问作者Gtomika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:06:03