代码之家  ›  专栏  ›  技术社区  ›  Dervin Thunk

在图像中找到正方形的算法?

  •  7
  • Dervin Thunk  · 技术社区  · 14 年前

    假设我有一个像,比如说,一个圆和一个正方形。有没有办法根据图像的矩阵求出正方形?(只有一个正方形,时间不是真正的问题)。 谢谢。

    4 回复  |  直到 14 年前
        1
  •  3
  •   Kos    14 年前

    让我们把所有的点分为“亮”和“暗”。

    寻找亮起的点,上面和下面的点也亮起。这些可能是边缘的一部分。

    类似地:如果一个点(x,y)被点亮,而点(x+1,y),(x+2,y)也被点亮,但是(x-1,y)和(y-1,y)是暗的,与y方向类似,那么你很可能会发现一个左上角。等等。用这种方法你可以找到角落,然后从中找到正方形——这似乎是一个简单的方法。

        2
  •  3
  •   thejh    14 年前

    像这样?

    for (x,y of every black pixel) {
     #those methods should return true if the lines length is more than one pixel
     if (hasLineToRight(x,y)&&hasLineToBottom(x,y)) {
      otherx=highestXOfLineToRight();
      othery=highestYOfLineToBottom();
      if (isLine(x,y,x,othery)&&isLine(x,y,otherx,y)) {
       addBoxToList(x,y,otherx,othery);
      }
     }
    }
    

    box image

    您可能希望使用宽度和高度值最高的框。

        3
  •  0
  •   Gintautas Miliauskas    14 年前

    如果图像中的正方形是完美的,请检查在预期位置是否有边框。JH答案中的伪代码应该可以正常工作。

        4
  •  0
  •   Alexandre C.    14 年前

    怎么样 flood filling 从随机点开始直到找到矩形?