Il existe quatre opérations morphologiques les plus élémentaires, à savoir l'érosion, l'expansion, le calcul ouvert et le calcul fermé. `scipy.ndimage implémente ces quatre opérations respectivement sur des tableaux binaires et des tableaux en niveaux de gris
niveaux de gris | ||
---|---|---|
grey_erosion | corrosion | |
grey_dilation | expansion | |
grey_closing | closing (d'abord expansion puis corrosion) | |
grey_opening | opening ( corrosion d'abord puis expansion) |
ij signifie quand l'origine de B BB est à (i, j) , l'ensemble de toutes les valeurs qui valent 1 dans B.
Cette formule signifie que lorsque la structure B est utilisée pour corroder A, lorsque l'origine de B est traduite en pixel (i, j) de l'image A, si B est complètement entouré par la zone de chevauchement des deux, le la valeur est affectée à 1. Sinon, la valeur est 0. Lorsqu'un certain élément dans B vaut 1, si la position correspondante dans A est également 1, alors la valeur en (i, j) est 1. Il s'agit d'un exemple plus intuitif. L'inflation est l'opposé et peut être exprimée comme En d'autres termes, tant que la zone de chevauchement de B et A n'est pas un ensemble vide, alors le point (i, j) est fixé à 1. Un exemple est le suivantimport numpy as np import matplotlib.pyplot as plt import scipy.ndimage as sn x = np.zeros([20,20]) x[5:15, 5:15] = 1 x_ero = sn.binary_erosion(x) x_dil = sn.binary_dilation(x) fig = plt.figure() ax = fig.add_subplot(1,3,1) ax.imshow(x) plt.title("original") ax = fig.add_subplot(1,3,2) ax.imshow(x_ero) plt.title("erosion") ax = fig.add_subplot(1,3,3) ax.imshow(x_dil) plt.title("dilation") plt.show()
Morphologie en niveaux de gris
Les opérations de corrosion, d'expansion et d'ouverture et de fermeture des images en niveaux de gris sont une extension de sa forme binaire, en utilisant une logique de type convolution. L'image de l'escalier est directement récupérée à partir dex = np.zeros([20,20]) x[5:15, 5:15] = 1 x[10:12,10:12] = 0 x[2:4, 2:4] = 1 x_open = sn.binary_opening(x) x_close = sn.binary_closing(x) fig = plt.figure() ax = fig.add_subplot(1,3,1) ax.imshow(x) plt.title("original") ax = fig.add_subplot(1,3,2) ax.imshow(x_open) plt.title("opening") ax = fig.add_subplot(1,3,3) ax.imshow(x_close) plt.title("closing") plt.show()
scipy
Liste des paramètres
Les paramètres de la fonction binaire et de la fonction en niveaux de gris ne sont pas les mêmes. En prenant l'opération de fermeture comme exemple ci-dessous, tous les paramètres des fonctions binaires et en niveaux de gris, à l'exception de l'entrée d'entrée, sont communs à. les deux.
structure est un type de tableau, représentant l'élément de construction, qui peut être compris comme un modèle de convolutionParamètres du filtre d'orgin, la valeur par défaut est 0
from scipy.misc import ascent img = ascent() funcs = { "original": lambda x, tmp:x, "erosion" : sn.grey_erosion, "dilation" : sn.grey_dilation, "opening" : sn.grey_opening, "closing" : sn.grey_closing } fig = plt.figure() for i, key in enumerate(funcs): ax = fig.add_subplot(2,3,i+1) plt.imshow(funcs[key](img, (10,10)), cmap=plt.cm.gray) plt.title(key) plt.show()
border_value La valeur au bord
binary_closing(input, iterations=1, mask=None, border_value=0, brute_force=False)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!