【发布时间】:2020-04-23 10:21:46
【问题描述】:
单击其中一个像素后,我想返回属于同一区域的像素列表。输入将是所选像素(种子),输出将是具有相同值且属于同一区域的所有像素的列表(不被任何不同值的像素分隔)。
我的想法是创建一个种子的辅助列表并检查每个种子的邻居。如果邻居的值与种子的值相同,则将其附加到区域列表中。我的python实现如下:
def region_growing(x, y):
value = image[x,y]
region = [(x,y),]
seeds = [(x,y),]
while seeds:
seed = seeds.pop()
x = seed[0]
y = seed[1]
for i in range(x-1, x+2):
for j in range(y-1, y+2):
if image[i,j] == value:
point = (i,j,z)
if point not in region:
seeds.append(point)
region.append(point)
return region
它可以工作,但对于较大的区域来说非常慢。你会建议什么算法?
【问题讨论】:
-
point not in region非常慢。如果您使用访问点的set而不是列表,它会快得多。 -
谢谢,我试试
标签: algorithm image-processing