【问题标题】:Finding a rectangular space in an image without clear borders/edges在没有清晰边界/边缘的图像中查找矩形空间
【发布时间】:2014-07-10 19:07:57
【问题描述】:

我正在尝试查找具有相似像素值且没有任何边框/边缘的区域。

我上传了一张专辑,其中所需区域绘制在一个矩形框中 http://imgur.com/a/rk3AO#0

尽管很少有图像具有明确的边缘,但我正在尝试提出一种算法,该算法适用于没有清晰边缘的图像。

我正在考虑逐个像素地遍历图像并尝试找到具有相似像素值的区域并在它们周围绘制一个矩形。

编辑:

我能够去除噪点并制作出具有重要边缘的二值图像,但我不清楚如何在这些图像中拟合纵横比约为 4:3 的矩形http://imgur.com/a/zPyFW#0

【问题讨论】:

    标签: c++ opencv image-processing computer-vision


    【解决方案1】:

    您的方法并不是真正的方法。它效率不高且很难自动化 - 如果您按值比较像素,您最终将尝试分别为每张图片找到合适的像素值范围(因为根据图片,相似 em> 像素值将意味着不同的东西),这很麻烦并且非常耗时。

    您的任务包含两部分:第一部分是提取颜色均匀的区域,第二部分是尝试在该区域内放置可能的最大矩形。

    为了识别可以绘制矩形的区域,第一步是识别这些区域的边缘。熟悉高通图像滤镜和渐变滤镜 - 它们可以让您检测边缘,从而区分像素值不同的区域。

    您也可以尝试 霍夫变换 - 它用于识别图像上的直线,并且在您的第三张图像(上面写有一些文字的白板)的情况下可能特别有用,即当边界没有那么清楚地定义时。

    一般来说,尝试使用谷歌搜索“边缘检测”、“边缘提取”等 - 许多论文、图像处理库等都很好地涵盖了这个主题。我会节省你很多时间,如果你要做一些严肃的图像处理,无论如何你都必须学习它。

    如果您想测试这些算法,您不必自己实现大部分算法,因为它们已经在 openCV 中实现。


    提取边缘后,您可以执行以下操作:对于检测到的区域(即要适合矩形的区域)内包含的每个像素:

    1. 尽量绘制一个最大的矩形,其左上角锚定在该像素中(如果您从该区域的左上角开始迭代)。

    2. 将此矩形的尺寸与您目前能够适应的最大矩形进行比较。

    3. 保存矩形的尺寸和位置,如果它是当前最大的矩形。

    遍历选定区域的所有像素后,您将获得可以与应该绘制的位置相匹配的最大矩形。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-28
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      相关资源
      最近更新 更多