首页 > 解决方案 > 如何在二维数据中找到连续区域

问题描述

我想用不同的标签标记图像中的非连续区域。我想这应该可以通过 scikit-learn 实现。例如,图像存储在具有零和一的二维 numpy.ndarray 中,它们位于不同的连续区域。

让我们看一下以下非常简单的数组,其中我们有两个连续的区域,但这些区域之间用零隔开。

np.array([
        [1, 1, 1, 0, 0, 0],
        [1, 1, 0, 0, 0, 1],
        [0, 1, 0, 1, 0, 1],
        [1, 1, 0, 1, 1, 1]
], dtype = int)

该算法应该用类似“1”的标签标记左上角的连续区域,用第二个标签“2”标记右下角的连续区域。

np.array([
        [1, 1, 1, 0, 0, 0],
        [1, 1, 0, 0, 0, 2],
        [0, 1, 0, 2, 0, 2],
        [1, 1, 0, 2, 2, 2]
], dtype = int)

任何提示如何做到这一点?

标签: scikit-learn

解决方案


import numpy as np
from skimage.measure import label

a = np.array([[1, 1, 1, 0, 0, 0],
              [1, 1, 0, 0, 0, 1],
              [0, 1, 0, 1, 0, 1],
              [1, 1, 0, 1, 1, 1]], dtype = int)

label(a)

推荐阅读