我有一个像左侧的图像。我想获得覆盖区域或多边形的弧点,以获取右侧的图像。我得到了所有行的终点值。
我该怎么做(获得所有覆盖区域)?任何算法或想法?
最简单的方法是使用递归填充技术。
假设您有一个黑白图像开始,您在一个区域上放置一个颜色像素。您递归地填充该像素的上、下、左和右区域。当这些像素中的每一个返回时(因为所有周围的像素都是彩色或黑色的墙壁),您返回。
您可以为每个 x,y 坐标迭代地执行此操作,如果它已经被先前的运行着色,则跳过它。在这样做时,如果您愿意,您也可以迭代颜色。
这是二值图像分割的经典案例,据我所知,输入图像的分辨率有限。反转您的图像,可能会侵蚀它以填充线条中的孔,然后进行图像分割。一个简单的算法是执行图像的前向扫描并为每个像素分配其向后(直接向左或任何上方方向)白色邻居的区域值,或者如果它只有黑色向后邻居,则分配一个新区域值,连接区域当有不同区域编号的邻居时。
作为第二种方法,如果您有一个完整的线列表,您可以尝试使用图形方法。将每条线视为图中的一条边,将每个交点视为一个节点,并找出图中的最小环。这些是你的房间。