J'ai posé cette question hier sur ce sujet trouvé ici: Histogram Normalization.Couleur Histogramme Normalisation
Cependant, j'ai essayé d'utiliser quelques idées que j'ai eues dans le lien pour effectuer la normalisation sur une image et j'ai obtenu le résultat suivant. Ici, je normalise tout le pixel à 50% sauf les pixels noir et blanc. La formule utilisée est: (pixel - min)/(max - min) * 127
pixel = (float)src.at<uchar>(j,i);
if (pixel == 255)
{
img.at<uchar>(j,i) = pixel;
}
if (pixel == 0)
{
img.at<uchar>(j,i) = pixel;
}
/*if (min == 0 || max == 0 || (max - min == 0))
{
img.at<uchar>(j,i) = pixel;
}
else
{*/
normal__ = ((pixel - min)/(max - min)) * (127);
img.at<uchar>(j,i) = normal__;
//}
}
Résultats:
RED PIXEL: MIN = 0 MAX = 253
GREEN PIXEL: MIN = 0 MAX = 254
BLUE PIXEL: MIN = 0 MAX = 255
image avant Normalization
Après Normalization en utilisant formule ci-dessus:
Maintenant, je suis confi rming si mes pas sont corrects. Merci .. :)
Quand je le place dans l'instruction else, il obtient des pixels déformés sur une région .. Je me demande pourquoi c'est –
Je suppose que c'est parce que les niveaux 0 et 255 ne sont pas visibles en noir et blanc. La fonction de normalisation résultante n'est pas lisse. Toutes les régions blanches de la voiture ne seront pas au niveau de 255 pixels. Votre fonction de normalisation actuelle étend le pixel valus dans la plage 0-127, tandis que la plage normale pour les images est 0-255. C'est pourquoi l'image est plus sombre. Une fonction de normalisation a généralement l'intention de faire le contraire; Si les pixels sont dans une plage plus petite, les valeurs comprises entre 0 et 255 seront dispersées. Vous pouvez prendre une image à faible contraste et utiliser 255 au lieu de 127. Cela devrait fonctionner. – Totoro
Oh, je vois mon erreur là-bas. Encore une question comme pour une image si pour chaque canal R G B, j'obtiens la valeur du pixel min et max. Si min = 0 et Max = 255, j'obtiendrai le même canal que l'entrée. Est-ce normal? –