猿问

Networkx 中的“计数”边缘属性是什么?

我不明白什么是由下面的函数计算出的区域邻接图的“计数”属性:skimage.future.graph.rag_boundary()。


解释了“重量”属性,但没有解释“计数”属性。


即使在阅读源代码时,我也不明白它是什么。有人能帮我吗 ?谢谢


这是来源:


def rag_boundary(labels, edge_map, connectivity=2):

    """ Comouter RAG based on region boundaries


    Given an image's initial segmentation and its edge map this method

    constructs the corresponding Region Adjacency Graph (RAG). Each node in the

    RAG represents a set of pixels within the image with the same label in

    `labels`. The weight between two adjacent regions is the average value

    in `edge_map` along their boundary.


    labels : ndarray

        The labelled image.

    edge_map : ndarray

        This should have the same shape as that of `labels`. For all pixels

        along the boundary between 2 adjacent regions, the average value of the

        corresponding pixels in `edge_map` is the edge weight between them.

    connectivity : int, optional

        Pixels with a squared distance less than `connectivity` from each other

        are considered adjacent. It can range from 1 to `labels.ndim`. Its

        behavior is the same as `connectivity` parameter in

        `scipy.ndimage.filters.generate_binary_structure`.


    Examples

    --------

    >>> from skimage import data, segmentation, filters, color

    >>> from skimage.future import graph

    >>> img = data.chelsea()

    >>> labels = segmentation.slic(img)

    >>> edge_map = filters.sobel(color.rgb2gray(img))

    >>> rag = graph.rag_boundary(labels, edge_map)


    """


    conn = ndi.generate_binary_structure(labels.ndim, connectivity)

    eroded = ndi.grey_erosion(labels, footprint=conn)

    dilated = ndi.grey_dilation(labels, footprint=conn)

    boundaries0 = (eroded != labels)

    boundaries1 = (dilated != labels)

    labels_small = np.concatenate((eroded[boundaries0], labels[boundaries1]))

    labels_large = np.concatenate((labels[boundaries0], dilated[boundaries1]))

    n = np.max(labels_large) + 1

温温酱
浏览 126回答 1
1回答

森栏

权重矩阵对应于区域之间边界处像素值的平均值。计数矩阵对应于沿这些边界的像素数。因此,rag[i][j]['count']包含沿区域边界的像素数i和j。代码使用了一些花哨的SciPy 稀疏矩阵技巧来提高效率。我(谦虚地;)推荐 Elegant SciPy 的第 5 章(可在http://elegant-scipy.org免费在线获取)以了解有关这些格式的更多信息。
随时随地看视频慕课网APP

相关分类

Python
我要回答