【问题标题】:How do i find pixels points inside quadrilateral using Java?如何使用Java找到四边形内的像素点?
【发布时间】:2011-06-23 13:05:31
【问题描述】:

我正在做一些图像处理,我有一个四边形的 4 个点的坐标。 (有点像梯形) 我怎样才能得到里面所有像素的坐标?顺便说一句,我正在使用Java。 谢谢!

【问题讨论】:

  • 您是指以像素为单位的区域还是形状内所有单个像素的列表?假设第一个,并且您拥有的坐标代表四个单独的像素,您只需要查找并实现一个公式即可找到四边形的面积(Google 将帮助您解决此问题)。

标签: java image process polygon pixels


【解决方案1】:

您需要扫描线多边形填充。

这是一个关于该主题的快速 PDF 讲座:

http://www.cs.binghamton.edu/~reckert/460/lect11_2009-areafill-transformations.pdf

这是一个网页示例,其中包含一些示例 C 代码和基本思想的一个很好的说明:

http://alienryderflex.com/polygon_fill/

这是简短的表格。将四边形线分成左边和右边的线。对于每个恒定的 Y 坐标行,找出左行的交叉点;找出正确线的交叉点;两个交叉点之间的那一行上的所有像素都在梯形内。

从历史上看,这种事情最初(并且可能现在仍然是)用于在软件中渲染 3D 场景。我想它当时有一个不同的名字,但我不记得了。但是,您实际上不必绘制像素;无论您是否绘制它们,该算法都会为您提供像素。

【讨论】:

    【解决方案2】:

    这是一个碰撞检测问题吗?您想知道给定点是否在形状内吗?还是您真的想要形状内所有点的坐标?

    【讨论】:

    • 不,这不是碰撞检测问题。我想知道给定形状内的所有坐标,以便计算该多边形内的平均 RGB 值。
    • 我正在寻找这种解决方案。你能指出我正确的方向吗?
    【解决方案3】:

    http://wiki.processing.org/w/Find_which_side_of_a_line_a_point_is_on 有关于如何找到一个点在直线的哪一侧的伪代码。

    如果您的四边形由点定义为 A、B、C、D - 检查您的点是否位于 AB、BC、CD 和 DA 的“左侧”应该会给您答案。

    编辑:糟糕,我认为您的问题是找到 a 点,而不是所有点。希望这仍然有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      相关资源
      最近更新 更多