如何确定图像中

时间:2015-09-08 23:56:10

标签: c# math

请考虑以下情况:

  • 包含图像的组件;
  • 由用户定义的多边形列表,用于在图像中创建区域;
  • 每个多边形由至少3个点的列表组成(它们的序列决定了多边形的形状);
  • 每个点由(x,y)值对组成;
  • (x,y)对中的每个值介于0和1之间,并表示该点位于图像的%(宽度,高度)处;

我需要的是对多边形的所有区域执行一些处理,一次一个像素。在我的特定场景中,要扫描'整个图像逐个像素并验证它是否在任何多边形内,是不可接受的。额外奖励:如果一个像素已被处理,但它是多个多边形的一部分,请不要再处理它。

我想也许我可以,给定任何多边形和图像(任意宽度x高度),生成多边形区域内的像素列表。那么问题就更多的是数学问题,但我被困住了。其他方法也欢迎!有任何想法吗?非常感谢!

2 个答案:

答案 0 :(得分:2)

你需要的是一个多边形光栅化器,它给出了多边形内的所有像素, 例如http://alienryderflex.com/polygon_fill/

如果你想组合多边形以分解双像素,那么我建议http://www.angusj.com/delphi/clipper.php

计算所有多边形的并集,并将它们添加为正数和非零缠绕规则,或者要在多边形上发布的任何其他规则(仅在它们自我重叠时才相关)。

答案 1 :(得分:1)

Rasterizing a 2D polygon。 在这种情况下,您可以在特定像素上执行处理,而不是将每个像素设置为特定颜色。