【问题标题】:image feature detection with large structuring element具有大结构元素的图像特征检测
【发布时间】:2013-02-06 04:27:32
【问题描述】:

我正在尝试从图像中提取一些特征,但提取的每个特征都非常小。提取较大特征的最简单方法似乎是使用较大的结构元素,但以下代码在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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我想使用类似于ndimage.iterate_structure(struct,2)生成的结构的连接。这样,如果两个特征相隔一个像素,则它们被认为是相同的特征。膨胀是否与使用更大的结构具有完全相同的效果?
    • 如果你用一个基本正方形进行扩张,这两个相隔一个像素的特征将被连接起来。因此,它们将被标记为单个特征。
    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    相关资源
    最近更新 更多