【问题标题】:Programmatically compare (simple) drawing patterns on mobile在移动设备上以编程方式比较(简单)绘图模式
【发布时间】:2020-08-24 13:31:33
【问题描述】:

我需要确认两个移动用户之间的同步,我想这样做:第一个用户在屏幕上画一些图案(画一些具体的东西,比如房子或者只是一些抽象的线条)和其他用户必须绘制相同的。

当然生成的绘图/base64 永远不会相同,但我如何进行比较以了解这两种模式有多相似?

示例:确认上下图相同

【问题讨论】:

  • 为什么其他用户必须绘制它?从别人的屏幕上拍照片不是更容易吗?
  • 我已经在这个帖子中给出了非常详细的解释 - stackoverflow.com/questions/23931/… 您可以使用“边缘检测”来近似比较两个图像。

标签: android ios draw


【解决方案1】:

我认为这是一个非常重要的问题,但我会确定以下几点:

您必须确定许多相似性参数,例如:

  1. 2 条线可以相互偏移多少(就像你画的 w,最后一个笔画有点宽,所以太宽了)
  2. 大小重要吗? w 和 W 一样吗?
  3. 绘图的位置重要吗?左上角的 w 和右下角的 w 构成相似的图像吗?两张相似的图纸之间允许有多少距离。
  4. 允许相差多少,ABCDEFGHI和ABCDEFGH相似吗
  5. 不透明度重要吗? hello 和 hello 一样吗?似乎从您的绘图中您假设 hello 类似于 hello
  6. 形状重要吗?纵向的 hello 和横向的 hello 类似吗?

我会采用以下步骤:

  1. 确定 2 张图纸的起点(可能从最左侧开始,并确定一张或多张独立图纸,例如周围散落的许多小圆圈)
  2. 相应地移动并保留一个实体,该实体代表两个图形与上述点之间的差异。

您的核心工作是移动和比较引擎,比较是在同一“方向”上绘制的部分。在比较圆形时,这可能会出现问题。但是当方向变化大于一定程度时,您可以切换比较的内容(例如超过 30 度会使您脱离该形状并移动到比较下一个)。

还必须考虑到绘图有多个出口路线的情况,因此您必须启动另一个比较线程,同时保留一个表示已经通过的实体的实体,以免进入无限循环。

所以这个故事的士气,这是很大的,没有直接简单的 api 可以为你做到这一点:)。

【讨论】:

    【解决方案2】:

    就我而言,我认为您有两种方法可以使用。第一个@Ali在他的回答中说,处理了很多参数,案例和很多意想不到的事情!

    第二种方法,我更喜欢。

    你说:

    我需要确认两个移动用户之间的同步

    我猜你有这个应用程序的后端,通过将当前图像传递到后端并使用 Open CV 之类的工具/库对其进行处理,以比较两个图像并测量相似性。所以应用程序正在返回类似 96% 相似度的结果。

    最后,我觉得这个问题太笼统了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多