Égalisation d'histogramme ne fonctionne pas sur la couleur de l'image OpenCV

Je suis en train d'effectuer une égalisation d'histogramme à l'aide d'OpenCV à l'aide de la fonction suivante

Mat Histogram::Equalization(const Mat& inputImage)
{
    if(inputImage.channels() >= 3)
    {
        vector<Mat> channels;
        split(inputImage,channels);
        Mat B,G,R;

        equalizeHist( channels[0], B );
        equalizeHist( channels[1], G );
        equalizeHist( channels[2], R );
        vector<Mat> combined;
        combined.push_back(B);
        combined.push_back(G);
        combined.push_back(R);
        Mat result;
        merge(combined,result);
        return result;
    }
    return Mat();
}

Mais quand je reçois le résultat, il semble n'y avoir aucune différence dans l'entrée et la sortie de l'image, ce que je fais mal?

Désolé pour la mauvaise qualité d'image, la "Séquence" (à gauche) est histogramme égalisé, vous pouvez voir ses même que l'entrée (à droite).

Égalisation d'histogramme ne fonctionne pas sur la couleur de l'image OpenCV

Ce qui manquait?

  • Split -> Égaliser -> Merge n'est pas la bonne approche pour effectuer une égalisation d'histogramme de la couleur de l'image. Il sera sévèrement effet l'équilibre des couleurs de l'image. Apporter un objet de multiples couleurs dans l'image et vous verrez la couleur de déséquilibre qu'il va créer.
InformationsquelleAutor | 2013-02-21