任何形状四边形的最小边界框或凸包?

时间:2017-06-20 02:10:51

标签: algorithm opencv language-agnostic polygon bounding-box

注意:我正在尝试制作一个可以处理一般范围的图像,方向和质量的过程,而不仅仅是这个图像。

我知道你可以使用凸包来用一个多边形包围一组点,你可以使用几种算法中的一种为这些点创建一个最小边界框。但是,我想做的是与最小边界框相似的内容,但不限制为矩形。

说我有这张收据:

enter image description here

凸包:

enter image description here

最小边界框(旋转卡尺):

enter image description here

我的目标:(ms-paint):

enter image description here

正如您所看到的,最小边界框不太合适,因为从收视角度来看收据是一个梯形。只有视角越低,这种情况才会越糟。我希望有4个点和尖角,所以我不能使用凸壳。

是否有一种算法可以用来获得类似于凸包或最小边界框的东西,但限于4个点,以及任何四边形?

1 个答案:

答案 0 :(得分:3)

随着色彩空间过滤和形态学操作的混乱,我能够成功地使用Harris探测器。你也可以使用交叉点来扩展它,就像我从Hough Lines那里做here一样,这可能是有用的,虽然有点冗长。这适用于此特定图像,但对于管道,它需要大量参数(打开和关闭内核大小,迭代)。

我的实现是在Python中,但这当然也适用于C ++或Java:

b = permute(a,[2 1 3]);
result = reshape(b, [], 3)

这是角落:

Corners

请注意,您从Harris获得了多个像素,因此如果您想在之后使用它们进行变形,则必须进行聚类才能获得奇异的角点。

我在图像的颜色空间过滤,关闭和打开时应用了蒙版,这样您就可以在这些操作之后看到蒙版。

过滤

Filtering

闭合:

Closing

开放:

Opening