用Java计算形状方向(图像分析)

时间:2012-02-12 12:56:39

标签: java image geometry shape

我有一个像这样的图像:

enter image description here

我需要计算它的方向。在这种情况下,形状指向屏幕的左上角。只要3或4次计算平均在实际方向的5度左右(它会稍微移动),准确性就不是很重要。

有人能指出我这样做的算法吗?我不介意将方向作为double或vector返回。

5 个答案:

答案 0 :(得分:0)

如果图像总是呈T形,你可以简单地得到最远的一对像素,然后从找到最远的一对两者(T的边缘),找到哪一个与其他两个相比,从那一个画一条线到那两个的中间点。

你可以通过比较中线和底边来找到T的底部,然后调整角度和偏移直到它实际位于中间来进一步细化它。

答案 1 :(得分:0)

我想,最终的解决方案是不可能的,因为需要图像识别。我将2D图像投影到轴上,即获得图像的宽度和高度,并从这些值中获取方向向量,将它们作为组件。

答案 2 :(得分:0)

首先,有几个假设:

  1. 中心和质心是“接近”
  2. T的下降条长于横杆
  3. 首先,确定图像的边界矩形,并找到沿此矩形的图像点。对于沿线放置并且彼此相距一定距离的点(比如5个像素来选择一个值),您只需要从该簇中取1个点。在这结束时你应该有3个点,即一个三角形。三角形的最短边应该是横杆(来自假设2),即找到彼此最接近的两个点。垂直于穿过这两个点的直线的直线就是你的方向线,即找到它与水平轴之间的角度。

答案 3 :(得分:0)

我会尝试morphological skeletonization来简化图像,然后使用一些简单的算法来确定骨架较长腿的方向。

答案 4 :(得分:0)

最后的解决方案是使用Convex Hull Algorithm,它找到包含带有边界的形状所需的最小点数。