我有一个位图,其中两个大块颜色相交,我想找到这两个块的交集。
请注意,我不知道这两个形状的实际几何形状,因为这只是原始像素数据。
我可以使用任何算法来执行此操作吗?
答案 0 :(得分:1)
如果您拥有内存中的所有像素数据(我假设您这样做,但这是一个主要的关键点)并且只有两种不同的颜色,您需要做的就是运行水平扫描线来查找RGB从颜色X变为颜色Y的点(请注意,您可能需要运行此扫描线几次,但无论如何它都不会比O(高度)差)。
然后,一个简单的图形遍历(BFS或DFS)将继续沿着该线向下移动(您应该只需要3个点,然后您将能够形成具有等式a * x + b * y + c = 0的几何线(假设它不是曲线))
垂直重复此扫描线(再次,最坏情况下,它是O(宽度))。找到3个点然后你会有两行d * x + e * y + f = 0.使用一点点comp。 geom,这两行的交集会给你你的观点。