Comment faire pour normaliser une image?
Si j'ai une série de pixels, qui vont de dire -500 à +1000, comment pourrais-je normaliser tous les pixels sur le même gradient de sorte qu'ils tombent entre une plage spécifique, dire 0 et 255?
OriginalL'auteur Nick Bolton | 2009-03-29
Vous devez vous connecter pour publier un commentaire.
Certains pseudo-code de ce genre de valeurs d'échelle de façon linéaire à partir d'une gamme à l'autre
OriginalL'auteur Paul Dixon
Votre question n'est pas très clair, donc je vais supposer que vous êtes en train de faire une sorte de traitement de l'image et les résultats que vous obtenez sont des valeurs de -500 à 1000 et maintenant vous avez besoin pour économiser de la couleur dans un fichier où chaque valeur doit être comprise entre 0 et 255.
Comment vous faites c'est vraiment très dépendante de l'application, ce qui est vraiment la signification des résultats et exactement ce que vous voulez faire. Les deux principales options sont:
Normalisation linéaire linéaire peut votre valeur minimale de 0 et de votre valeur maximale de 255. Bien sûr, vous devrez d'abord trouver le minimum et le maximum. Vous n':
Ce que cela fait, c'est la première carte, les valeurs de
[0,1]
puis tirer vers l'arrière pour[0,255]
.Une troisième option consiste à mélanger et assortir entre ces deux options. Votre application peut vous demander de traiter des valeurs négatives comme inutiles, les valeurs et les fixer à 0 et les valeurs positives à linéairement carte de
[0,255]
.OriginalL'auteur shoosh
Tout d'abord le faire tous positifs. Si le minimum est de 500 puis ajouter 500 à toutes les valeurs. Ensuite, le minimum serait de 0, et le maximum est de 1500.
Alors c'est juste une règle de trois et vous l'avez:
OriginalL'auteur fmsf
De pseudo-code peut aider:
Que du code python.
Droit, doivent être "pour pixel_value dans pixel_values:". Pour beaucoup .NET ce jour-là...
OriginalL'auteur jsapara
Créer deux variables,
MinInputValue
etMaxInputValue
. InitialiserMinInputValue
à un très grand nombre positif (supérieur à la plus grande valeur de pixel-vous jamais s'attendre à voir) etMaxInputValue
à un très grand nombre négatif (inférieur à la plus faible valeur de pixel-vous jamais s'attendre à voir).Boucle sur chaque pixel de l'image. Pour chaque pixel, si la valeur du pixel
PixelValue
est inférieurMinInputValue
, ensembleMinInputValue
àPixelValue
. Si la valeur du pixel est supérieure àMaxInputValue
, ensembleMaxInputValue
àPixelValue
.Créer une nouvelle variable,
InputValueRange
, etMaxInputValue - MinInputValue
.Une fois que ceci est fait, la boucle sur chaque pixel de l'image à nouveau. Pour chaque pixel
PixelValue
, calculer la sortie valeur de pixel comme255.0 * (PixelValue - MinInputValue) /InputValueRange
. Vous pouvez affecter cette nouvelle valeur de retour à l'originalPixelValue
, ou vous pouvez définir le pixel correspondant dans l'image de sortie de la même taille.OriginalL'auteur Spire