如何识别周围的矩形

时间:2014-02-25 10:24:01

标签: algorithm graph-algorithm image-recognition

如何识别给定点的近似周围矩形?

预期输出:如下图所示。

输入:下半部分。

enter image description here

2 个答案:

答案 0 :(得分:3)

我的建议是按照以下两个步骤进行:

  1. 找到积分的convex hull
  2. 找到凸多边形的最小边界框可以在O(n)中求解,后跟algorithm
  3. 已编辑:实际上,上述两个步骤不足以成为正确且可接受的答案。

    在这两个步骤之前,你必须先预处理这一点。

    1. 检查是否有3个或更多点共线,除去两个终点以外的那些点。
    2. 在第1步之后,您现在应该得到一组没有3个或更多点的共线点。
    3. 检查集合的大小:如果它只有1点或2点,你必须特殊处理它们(对于1点你可以找到任何最小的盒子来包含它你自己的方法; 2点可能使它们成为边界框的对角线?)

      如果结果集合还有> = 3分,那么只需按照我原来的2个步骤:凸包+旋转卡尺

      欢呼声。

答案 1 :(得分:2)

这似乎是minimzation problem with constraints

你需要找到4行:

l1: a1x + b1y + c1 = 0
l2: a1x + b1y + c2 = 0
l3: a2x + b2y + c3 = 0
l4: a2x + b2y + c4 = 0

所以,你有8个变量:a1,a2,b1,b2,c1,c2,c3,c4

您需要最小化

Sum(distance(li,point_j) | i from [1,4], j - over all points)

受限制:

l1 dot l3 = 0  [ensuring rectangle - cosine=0->angle between lines=90]
for each point j:
a1xj + b1yj + c1 >=0 ['above' l1]
a1xj + b1yj + c2 <= 0 ['below' l2]
(similarly for l3,l4)

请注意,您可以更改目标函数以匹配其他最小化条件,例如最小区域。