我一直在使用 skimage.segmentation 模块来查找图像中的连续片段。例如,
段很好地
我希望能够单独查看原始图像的不同区域(这样上面的图像会产生 6 个大致矩形的子图像)。我在这方面取得了一定程度的成功,但这很困难。我可以使用任何预先存在的模块来完成此操作吗?
如果没有,将不胜感激高级算法建议。
到目前为止的方法:
image_slic = seg.slic(image, n_segments=6)
borders = seg.find_boundaries(image_slic)
sub_images = []
new_seg = []
for every row of borders:
new_seg.append([])
for every pixel in every row:
if (pixel is not a border and is not already processed):
new_seg[-1].append(pixel)
Mark pixel as processed
elif (pixel is a border and is not already processed):
break
if (on the first pixel of a row OR the first unprocessed pixel):
sub_images.append(new_seg)
new_seg = []
使用这种方法,我可以从示例图像中生成与左侧接壤的四个区域,而不会出错。虽然上面的伪代码中没有显示它,但我还在用透明像素填充片段以保持它们的形状。这种额外的考虑使得寻找右侧子图像更加困难。