Pour la sortie d'un logiciel de traitement d'image (évaluation d'image) utilisant numpy dans python3, Inf et NaN sont inclus dans la moyenne, l'écart type, le maximum et le minimum.
sample_code.py
import numpy as np
img = #En quelque sorte un tableau d'images
print(np.max(img))
print(np.min(img))
print(np.mean(img))
print(np.std(img))
>inf
>-inf
>NaN
>NaN
Comme ça J'étais assez accro à ça
En premier lieu, qu'est-ce que inf ou NaN **? (Gekiuma Gaku) Quand j'ai recherché, beaucoup d'informations sont sorties. inf Abréviation pour l'infini. Représente l'infini. -inf est l'infini négatif, n'est-ce pas?
NaN
Les nombres à virgule flottante ont un nombre spécial appelé NaN (Not a Number) qui représente des valeurs réelles anormales. Cela se produit lorsque vous effectuez des formes indéfinies telles que l'infini-infini, 0,0 / 0,0 ou des calculs qui ne peuvent pas être représentés par des nombres réels, tels que la racine carrée d'un nombre négatif ou le logarithme d'un nombre négatif.
De NaN Story
Je crois comprendre que les valeurs (nombres) que vous ne souhaitez pas prendre en compte ou exclure lors du calcul sont reconnues.
sample_code.py
import numpy as np
img = #En quelque sorte un tableau d'images
img[img == -np.inf] = np.nan
img[img == np.inf] = np.nan
Maintenant inf disparaît du tableau. Allons-nous en
sample_code.py
import numpy as np
img = #En quelque sorte un tableau d'images
img[img == -np.inf] = np.nan
img[img == np.inf] = np.nan
le minimum,maximum= np.nanmax(img), np.nanmin(img)
moyenne= np.nanmean(img)
écart-type= np.nanstd(img)
#Il y a aussi des totaux et des écarts
Référence: https://note.nkmk.me/python-numpy-nansum/
Je parle de quel type de traitement cela est fait. Lors du calcul du maximum et de la moyenne, ** excluez l'élément NaN **. Par exemple, dans le cas du calcul de la moyenne, il n'est pas inclus dans la valeur totale de l'ensemble et n'est pas inclus dans le nombre d'éléments.
Une image qui supprime NaN de la séquence. Alors vous pensez peut-être que vous devriez le supprimer, mais ce n'est pas le cas avec le traitement d'image. Si vous le supprimez, ce sera le même que la taille verticale et horizontale de l'image.
Pour le moment, si vous divisez par 0 ou divisez par 0, inf et NaN seront inclus, donc Est-ce un sentiment que le logiciel qui effectue un tel traitement devrait essentiellement effectuer le traitement ci-dessus?
C'était assez difficile de le remarquer. J'automatise souvent le travail de traitement d'image comme je le fais avec imageJ. J'ai remarqué que le résultat de sortie du logiciel et le résultat traité par imageJ étaient différents. J'ai senti que inf serait exclu. Est-ce du bon sens dans le monde du traitement d'images?
Recommended Posts