【问题标题】:Biggest Rectangle within one color一种颜色中最大的矩形
【发布时间】:2016-09-30 18:43:24
【问题描述】:

我很难找到解决以下问题的方法:

我使用 opencv 用唯一标签标记所有连接的白色像素。

现在我得到了一组这些元素。 这些对象通常是 90% 的矩形,但大多数时候包含一些额外的线条和东西。

我正在寻找一种算法,它执行以下操作:

-从图像中获取最大的矩形(在同一标签内) - 快速的性能 - 甚至可以过滤,包含至少 xx% 具有相同标签的像素的大矩形

也许有人可以帮助我 非常感谢 编辑:示例图片(在这种情况下为车牌位置): 我想要的算法输出将是盘子的矩形(并且诅咒图像中的所有其他矩形,我稍后会过滤它们)

重要的是矩形可以旋转!

【问题讨论】:

  • 也许你可以展示一张图片来解释这个问题......
  • 好主意,谢谢
  • 您是否尝试过使用 cv::findContours(可能在经过精明的边缘检测器之后),然后对每个轮廓使用 cv::minAreaRect。
  • 我不喜欢这种方法。对于世界上大多数车牌,您不能只在边缘膨胀的渐变图像中寻找斑点。您不会在连接的组件中不费力气就找到矩形,因为它们是更大组件的一部分。请提供您的输入图片。
  • @user4834736 : 在车牌检测中,最后你需要汽车的数量。所以我建议你使用 opencv 的 OCR 模块从图像中提取文本。

标签: c++ algorithm image-processing computational-geometry


【解决方案1】:

我的建议

  • 确保通过斑点分析或数学形态学填充小孔;

  • 计算白色区域的距离图;

  • 使用等于半板高度的阈值对距离图进行二值化。

矩形将显示为线段,长度等于板宽减去板高。您可以通过拟合旋转的矩形边界框来定位它们;它们必须具有较大的纵横比。

【讨论】:

  • @user4834736:不幸的是,这不是万无一失的。你会得到假阴性和假阳性。
  • 我建议你先改进你的预处理。通过拥有如此粗的渐变线,你合并了太多人的东西。还要限制您的搜索区域。车牌只会通过图像中的狭窄路径。你知道路在哪里,以及盘子会在哪里移动。这样你就可以摆脱至少 80% 的干扰信息。
  • @Piglet:80% 过高。汽车可以改变车道,卡车有更高的警戒间隙。 20% 更现实。需要使用粗线来确保将印版视为已擦除字符的实心区域。
  • 有多少辆车会在你的视野中变道? 1/10000?在他选择的摄像机角度,您将拥有更多被另一条车道上的汽车覆盖的车牌。所以再输几个也没关系。
  • @Piglet:哼,让我们承认 1/10000 并不夸张。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
相关资源
最近更新 更多