【发布时间】:2017-06-20 02:10:50
【问题描述】:
注意:我正在尝试创建一个可以处理一般范围的图像、方向和质量的过程,而不仅仅是这个图像。
我知道您可以使用凸包将一组点与多边形包围起来,并且您可以使用几种算法中的一种来为这些点创建一个最小边界框。但是,我想做类似于最小边界框的事情,但不将其限制为矩形。
说我有这张收据:
凸包:
最小边界框(旋转卡尺):
我的目标:(ms-paint):
正如您所见,最小边界框不太适用,因为收据从角度来看是一个梯形。这只会变得更糟,视角越低。我想要有 4 个点和尖角,所以我不能使用凸包。
有没有一种算法可以用来获得类似于凸包或最小边界框但限制为 4 个点和任何四边形形状的东西?
【问题讨论】:
-
为什么不用哈里斯角检测器?或者,使用您当前的算法,您可以拒绝凸包中的小线,并找到长线的交点。通过这两个端点,您可以找到交叉点using determinants。或者您可以保留凸包中的所有点并使用
kmeansclustering 找到这 4 个点的中心并将其称为您的点。 -
查看我的回答here 以获取使用霍夫线进行交叉聚类的示例。我认为找到轮廓对于该图像可能会更好,然后像我在那个答案中那样拟合线条并找到交叉点。
-
@AlexanderReynolds 好主意。现在我生成轮廓,近似它们,凸包它们,然后寻找最小边界框。我不想使用凸包或轮廓的唯一原因是用于形状笨拙的收据,其中您的边缘非常圆润或翘曲。霍夫线是另一种选择,但我从文本中得到了数百行,即使在边缘检测之前进行了严重的模糊和平滑之后。如果我想改进它,那将是另一个问题。编辑那里的答案很好,看起来很有希望。
-
使用形态学操作使文本在找到轮廓之前虚拟消失。查看 Stack 上的一个很好的示例 here,除了你想做的所有事情。无论哪种方式,文本处理都可以帮助使那些霍夫线走上边界。并且可能有助于我假设您将要做的进一步处理。
标签: algorithm opencv language-agnostic polygon bounding-box