【问题标题】:How to recognize UI elements in image?如何识别图像中的 UI 元素?
【发布时间】:2013-11-13 08:19:23
【问题描述】:

我正在尝试制作一个自动化工具,并正在尝试一种录制屏幕截图并记录用户输入的录制方法。这个想法是让用户拍摄快照并在“提交”按钮的快照上突出显示一个正方形。在播放过程中,程序会对打开的窗口进行截图,并通过搜索截图找到按钮的坐标。所以我需要一种算法来搜索图像以获得按钮的精确(或非常接近)图像。到目前为止,我发现的算法比较图像相似度,但无法在子图像中找到它,考虑到我试图找到的“对象”将是一个近乎完美的匹配,对象识别算法似乎有点过头了。有什么想法吗?

【问题讨论】:

  • 我之前已经成功地使用了蛮力检查每个可能放置对象的每个像素的方法(使用嵌套的 for 循环很容易做到) ,但这当然需要完全匹配。

标签: algorithm object-recognition image-comparison


【解决方案1】:

以下工具可以帮助您:

【讨论】:

    【解决方案2】:

    您需要的是一种高效的特征提取方法。这取决于您要查找的内容,但我们假设您要查找此图片中的 发送 按钮:

    此按钮的一个特点是它在顶部和底部包含一对平行线段。这同样适用于两个文本输入字段,但对于按钮,这个偏移量正好是 17 像素。

    如果您计算源图像的最大像素值及其自身垂直移动 17 个像素,这就是您得到的结果:

    发送按钮现在显示为水平实线。您可以通过对图像进行阈值处理并寻找完整的黑色像素序列来轻松检测到这一点。仅供参考,以下是我在应用 10px 水平运动模糊并以 128 灰度级进行阈值处理后得到的结果:

    此过程将很快确定候选职位。然后,您可以对这些位置使用更强大的技术,例如 2D 卷积和OCR,而不会造成太多性能损失。

    【讨论】:

    • 感谢您提供帮助解释概念的建议和图表,现在我有一些事情要做
    【解决方案3】:
    1. 在按钮图像中找到明显的特征

      例如可以使用与按钮表面颜色相邻的边缘颜色或方形子图像的推导、形状或平均颜色(8x8 像素...)

    2. 在快照中搜索此功能

      我将使用平均颜色作为开始,因此将图像划分为N x N 像素区域并计算它们的平均颜色。如果您发现方形的平均颜色与您的按钮平均颜色相似,那么您就有可能的位置。

    3. 之后,如果有你的按钮,你可以暴力攻击附近的区域

      在这个阶段不要直接比较你的颜色(可能会被抗锯齿和过滤器扭曲......)。更好的方法是比较推导 +/- 一些准确性。您可以确定按钮可能存在的系数:

      p(x,y)=count(matching pixels) / (button pixels)
      

      如果它与1.0 足够接近,那么您找到了您的按钮。

    PS。在第 3 阶段,您可以使用灰度图像来简化操作

    【讨论】:

    • 感谢您的回答!它为进一步研究提供了许多主题
    猜你喜欢
    • 2019-06-16
    • 2021-02-01
    • 1970-01-01
    • 2018-03-30
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多