2010-04-10 134 views
1

我正在创建一个实用程序应用程序,该应用程序应检测并报告图像内透明矩形(alpha = 0)的角的坐标。确定旋转矩形的坐标

到目前为止,我已经建立了一个带有Javascript + Canvas的系统,它显示图像并在图像中的透明矩形内单击时启动类似填充的操作。它正确地确定了填充操作的边界框,因此可以为我提供正确的坐标。

这是我迄今为止的实现:http://www.scriptorama.nl/image/(适用于最近的Firefox/Safari)。

但是,边界框方法破坏,然后透明矩形旋转(CW或CCW),因为结果边界框不再适当地表示适当的宽度和高度。我试图想出一些替代方案来检测角落,但一直没有能够想出一个适当的解决方案。

那么,有没有人有任何建议,我可以如何处理这个问题,所以我可以正确检测旋转矩形的四个角的坐标?

+0

这还不清楚。您的示例似乎正确识别边界框。在执行洪水填充时遇到问题吗?为什么这需要找到角落?填充填充通常通过查找边缘像素而不用考虑几何实体。 – 2010-04-10 11:19:03

+0

实际上,边界框工作正常,并通过应用填充算法进行检测。 但是,我需要矩形的角落的确切坐标( - 不是 - 边界框),我不知道如何处理该问题。 – NSSec 2010-04-10 11:23:22

回答

4

我认为你可以用一个简单的扩展,现有的解决方案做到这一点:步行沿着每个边界框的4个边缘,寻找透明像素:

  • 在非旋转的情况下,所有沿着盒子的每个边缘的像素将是透明的。
  • 在旋转的情况下,必须有一个角接触盒子的每个边缘。这将位于离边缘中间最远的透明像素处(由于混叠,可能有多于一个,例如,如果矩形只是非常轻微旋转)。
+0

这很好,马修。正如你所预料的那样,我几乎可以完美地工作,只需要处理由于抗锯齿引起的不准确。谢谢! – NSSec 2010-04-10 15:12:25