具有大结构元素的图像特征检测

时间:2013-02-20 23:59:13

标签: python image-processing numpy python-3.x scipy

我试图从图像中提取一些特征,但每个提取的特征都非常小。提取较大特征的最简单方法似乎是使用更大的结构元素,但以下代码在ITER > 1时失败。

from scipy import ndimage,misc
lena=misc.lena().astype(float64)
lena/=ndimage.maximum(lena)
lena=lena>0.54# convert to binary image
       #   =====================  
ITER=1 # || FAILS WHEN ITER > 1 ||
       #   =====================
struct=ndimage.generate_binary_structure(2,1)
struct=ndimage.iterate_structure(struct,ITER)
lena_label,n =ndimage.label(lena,struct)
slices=ndimage.find_objects(lena_label)
images=[lena[sl] for sl in slices]
imshow(images[0])

RuntimeError: structure dimensions must be equal to 3

1 个答案:

答案 0 :(得分:2)

structure函数的参数ndimage.label用于确定输入的连通性。当您将输入表示为矩形矩阵时,此连接通常会考虑点p周围的4个或8个邻居。 Scipy遵循此约定并将接受的结构限制为此类情况,因此当将大于3x3的任何内容传递给函数时,它会引发错误。

如果你真的想做这样的事情,首先你需要非常清楚地定义你想要描述的连接。然后你需要实现它。一种更简单的方法是首先扩展输入,然后标记它。这将有效地提供更大的功能,这些功能将使用更大的structure参数进行标记。