J'essaie de mettre en œuvre dans OpenCV un algorithme de normalisation local pour réduire la différence d'éclairage dans une image. J'ai trouvé un MATLAB Fonction , et je l'ai mise en œuvre dans OpenCV . Cependant, le résultat que je reçois est différent de celui donné par la fonction MATLAB.
Ceci est mon code: p> la fonction Ce qui suit montre le résultat que je reçois et le résultat théorique, pour les mêmes valeurs de J'ai essayé d'utiliser différentes valeurs pour Toute aide serait appréciée . Merci d'avance. P> p> norminv code > Est la mise en œuvre C ++ donnée par EUAN DEAN dans Ce message . p> sigma1 code> et sigma2 Code> (2.0 et 20.0, respectivement) p>
p> sigma1 code> et sigma2 code>, mais aucun d'entre eux ne semble fonctionner. J'ai également essayé de faire blu1 = 0 code> et blu2 = 0 code> dans la fonction gaussienne, mais cela ne fonctionne pas non plus. P>
3 Réponses :
Vous devez normaliser l'image entre 0 et 255 avant de la convertir en CV_8UC1 P>
Merci pour votre réponse, qui a résolu mon problème. J'ai changé la ligne Flatgray = 255.0 * Flatgray et CV usagé :: Normaliser (Flatgray, Res, 0, 255, Norm_Minmax, CV_8UC1) et cela fonctionne maintenant. Je pensais que la multiplication de 255 normaliserait l'image, mais j'avais tort. Merci.
Voici mon implémentation (j'utilise le résultat comme prévu: p> Notez que vous pouvez spécifier la taille du noyau comme sigma1 = 2 code>, sigma2 = 20 code>):
p> taille (0,0) code> et il sera calculé à partir des valeurs Sigma. p> p>
Merci, c'est très utile aussi. Je voterai votre réponse dès que j'obtiendrai une plus grande réputation.