2013-06-25 7 views
0

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 enter image description here

Après Normalization en utilisant formule ci-dessus: enter image description here

Maintenant, je suis confi rming si mes pas sont corrects. Merci .. :)

Répondre

0

Depuis les déclarations

normal__ = ((pixel - min)/(max - min)) * (127); 
    img.at<uchar>(j,i) = normal__; 

ne sont pas dans un if-else déclaration, ils s'appliqués aux pixels noirs et blancs aussi. Es-ce bien?

+0

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 –

+0

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

+0

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? –