Materi
Setelah thresholding, satu citra biner bisa berisi banyak objek. Pelabelan komponen terhubung memberi nomor yang sama pada piksel-piksel yang bersambung. scipy.ndimage.label(input) menganggap semua nilai bukan nol sebagai objek dan nol sebagai latar, lalu mengembalikan dua hal: larik label (0 untuk latar, 1, 2, 3, … untuk objek) dan banyak objek.
Apa arti bersambung ditentukan argumen structure. Dokumentasinya menyebut bawaan untuk citra 2D adalah [[0, 1, 0], [1, 1, 1], [0, 1, 0]]: hanya tetangga atas, bawah, kiri, dan kanan (ketetanggaan 4). Dengan structure=np.ones((3, 3)), tetangga diagonal ikut dihitung (ketetanggaan 8), sehingga dua piksel yang hanya bersentuhan sudut menjadi satu objek dan banyak objek bisa berkurang.
Luas setiap objek cukup dihitung dengan np.bincount(label.ravel()): elemen ke-i adalah banyak piksel berlabel i, dan elemen ke-0 adalah latar. scipy.ndimage.find_objects(label) mengembalikan daftar pasangan slice, satu per label, berisi kotak terkecil yang memuat objek itu; label l berada di indeks l − 1. Contoh "Label image regions" di scikit-image memakai urutan yang sama: ambang, rapikan, beri label, lalu buang wilayah yang terlalu kecil.
import numpy as np
from scipy import ndimage
bercak = np.array([[1, 0, 0], [0, 1, 1], [0, 0, 1]])
print(ndimage.label(bercak)[1]) # 2 objek (ketetanggaan 4)
print(ndimage.label(bercak, structure=np.ones((3, 3)))[1]) # 1 objek (ketetanggaan 8)