[PYTHON] Trouvez l'écart moyen / standard des valeurs de luminosité dans l'image

Objectif

C'est un mémorandum lors du calcul de l'histogramme de la valeur de luminosité de l'image et de la moyenne / dispersion.

code

Trouvez l'histogramme, la moyenne et l'écart type de l'image ci-dessous lena.png: Image de test black.png: image uniformément noire

test.py


import numpy as np
import scipy.stats as sstats
import cv2

def print_stat(fname):

    img_name = fname
    img = cv2.imread(fname,1)
    # Grayscale
    img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    #Tableau unidimensionnel
    img = np.array(img).flatten()
    # img = img[img!=255]

    mean = img.mean()             #Valeur moyenne
    std = np.std(img)             #écart-type
    median = np.median(img)       #Médian
    mode = sstats.mode(img)[0][0] #Valeur la plus fréquente

    print("---", img_name)
    print("mean    : ", mean)
    print("stddev  : ", std)
    print("median  : ", median)
    print("mode    : ", mode)

print_stat('lena.png')
print_stat('black.png')

résultat

$ python test.py
--- lena.png
mean    :  106.4122314453125
stddev  :  45.733566693923045
median  :  107.0
mode    :  44
--- black.png
mean    :  0.0
stddev  :  0.0
median  :  0.0
mode    :  0

Autre

Si vous souhaitez le rendre un peu plus facile à utiliser depuis la ligne de commande,

test.py


import sys
import numpy as np
import scipy.stats as sstats
import cv2

args = sys.argv

def print_stat(fname):

    img_name = fname
    img = cv2.imread(fname,1)
    # Grayscale
    img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    #Tableau unidimensionnel
    img = np.array(img).flatten()
    # img = img[img!=255]

    mean = img.mean()
    std = np.std(img)
    median = np.median(img)
    mode = sstats.mode(img)[0][0]

    print("name=" + img_name + ",")
    print("mean=" + str(mean) + ",")
    print("stddev=" + str(std) + ",")
    print("median=" + str(median) + ",")
    print("mode=" + str(mode) + ",")

arg1=args[1]
print_stat(arg1)
$ RET=$(python test.py lena.png)
$ echo $RET
name=lena.png , mean=106.4122314453125 , stddev=45.733566693923045 , median=107.0 , mode=44 ,
$ echo $RET | sed -e 's/.*name=//' |  cut -d',' -f 1 | awk '{printf "%-20s\n",$1}'
lena.png
$ echo $RET | sed -e 's/.*mean=//' |  cut -d',' -f 1 | awk '{printf "%-20s\n",$1}'
106.4122314453125

référence

Apprendre le traitement d'image avec Python3 et OpenCV [2] ~ Expérience de base sur l'histogramme pour la visualisation d'informations

Recommended Posts

Trouvez l'écart moyen / standard des valeurs de luminosité dans l'image
Trouvez l'écart moyen / standard des valeurs de luminosité dans l'image
Afficher un histogramme des valeurs de luminosité de l'image en python
Hériter de la bibliothèque standard pour trouver la valeur moyenne de Queue
Trouvez le nombre de jours dans un mois
Découvrez la fraction de la valeur saisie en python
Trouvez la solution de l'équation d'ordre n avec python
Dispersion avec la bibliothèque standard et l'oreiller de Python Trouvez l'écart type RVB de l'image et déterminez s'il est monochromatique
Calcul de l'écart type et du coefficient de corrélation en Python
Calculer la somme des valeurs uniques par tabulation croisée des pandas
J'ai essayé de trouver l'entropie de l'image avec python
Comment trouver le nombre optimal de clusters pour les k-moyennes
Maya | Découvrez le nombre de polygones dans l'objet sélectionné
Découvrez la largeur apparente d'une chaîne en python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Trouver des erreurs en Python
Python --Trouvez le nombre de groupes dans l'expression regex
Trouver les valeurs propres d'une vraie matrice symétrique en Python
[Apprentissage automatique] Comprenez à partir des mathématiques que la normalisation se traduit par une moyenne de 0 et un écart type de 1.
J'ai comparé le temps de calcul de la moyenne mobile écrite en Python
Lire la sortie standard d'un sous-processus ligne par ligne en Python
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
Comment entrer / sortir des valeurs à partir d'une entrée standard dans la programmation de compétition, etc.
Trouvez la définition de la valeur de errno
Détecter les points de mosaïque dans l'image
L'histoire de la participation à AtCoder
À propos de l'option moyenne de sklearn.metrics.f1_score
Changer la saturation et la clarté des spécifications de couleur comme # ff000 dans python 2.5
Trouvez l'aire de l'ensemble somme des rectangles qui se chevauchent
[Comprendre en 3 minutes] Le début de Linux
Vérifiez le comportement du destroyer en Python
L'histoire d'une erreur dans PyOCR
Obtenez les nièmes valeurs les plus importantes dans Pandas
Mettre ensemble des valeurs consécutives dans la liste
Visualisez la valeur limite du perceptron multicouche
Implémenter une partie du processus en C ++
Le résultat de l'installation de python sur Anaconda
Version Migemo de la commande: find ,: mfind
Principes de base pour exécuter NoxPlayer en Python
Astuces: Comparaison de la taille de trois valeurs
À la recherche du FizzBuzz le plus rapide en Python
Trouvez-le dans la file d'attente et modifiez-le
Trouvez le coefficient du polypole le moins carré
Extraire la couleur de l'objet dans l'image avec le clustering Mask R-CNN et K-Means
Trouvez l'index des éléments qui correspondent aux conditions dans la trame / série de données pandas
Analyser l'état d'utilisation de l'application de confirmation de contact (COCOA) publiée dans "Image" / Tesseract
Comment trouver le coefficient de la courbe approximative passant par les sommets en Python