我有一个浮动图像存储在一个浮动2d数组中。
有一个GUI(以灰度显示)。只需单击鼠标,我就可以准确地指向并显示像素的原始值。
现在,给定图像上的点列表,即多边形(也许是凹面),我想挑选出多边形内部的像素。
这就是我的想法。
HashMap<ScanPoint, List<EdgePoint>>
HashMapList 现在,我对第二点有疑问。我无法区分下图 在这里,我必须在HashMapList中添加两次“凹入”点才能完成任务。因为它正在创建两个单独的区域(一个结束,另一个在 same 点开始。)
和下图 我不需要在HashMapList中添加两次,因为它不会创建单独的区域。
如何区分这两个像素/点?
Java中是否有任何库可以处理图像上的几何图形? JTS在纯几何上工作,并且坐标点处于浮动状态,这不是很有用。 图片中的像素具有整数坐标。
答案 0 :(得分:1)
您想要实现的是精确的扫描线多边形填充(SLPF)算法。正如您在发布的这两张图片中所看到的,唯一的区别是形状的方向。屏幕空间。但是内角是形状的一个固有特征,与空间在全局坐标中的放置方式无关。
如果可以从给定的多边形拐角点查询相邻拐角点,请检查两个相邻点是在当前点之下还是在当前点之上,或者检查两条边的最大Y或最小Y是否相同。