La balance des blancs de l'algorithme
Je fais du traitement d'image et j'ai besoin d'une balance des blancs automatique algorithme qui n'est pas trop intensif en termes de temps de calcul CPU. Toutes les recommandations?
EDIT: et si c'est pertinent pour l'efficacité, je vais être mise en œuvre en Java avec des images en couleur dans un tableau d'entiers.
Vous devez vous connecter pour publier un commentaire.
Un algorithme relativement simple est de calculer la moyenne des teintes (en VHS ou HSL) les plus brillants et les plus sombres de pixels sur l'écran. Dans un pincement, rendez-vous avec les plus brillants de pixels seulement. Si les teintes entre les plus brillants et les plus sombres sont trop différents, aller avec le pixel brillant. Si le noir est noir près aller avec le pixel brillant.
Pourquoi même regarder l'obscurité de pixel? Parfois, l'obscurité n'est pas près de black, et des conseils à la lumière ambiante ou du brouillard ou de la brume.
Cela aura du sens pour vous si vous êtes un grand utilisateur de Photoshop. Faits saillants de la photo ne sont pas liés (ou faiblement) à la couleur sous-jacente de l'objet. Ils sont votre meilleure représentation de la dominante de couleur de la lumière, à moins que l'image est donc surexposées que tout ce qui a submergé le CCDs.
Puis ajuster les nuances de la couleur de tous les pixels.
Vous aurez besoin rapide RVB en VHS et VHS RVB fonctions. (Mais peut-être que vous pouvez travailler en RVB du pixel corrections avec un LUT ou de l'interpolation linéaire.)
Vous ne voulez pas passer par la moyenne des pixels de la couleur ou le plus populaire de la couleur. De cette façon se trouve la folie.
Pour trouver rapidement la couleur la plus claire (et la plus sombre), vous pouvez travailler en RVB, mais vous devriez avoir des multiplicateurs de vert, rouge et bleu. Sur un moniteur RVB, 255 vert est plus lumineux que 255 rouge qui est plus lumineux que 255 bleu. J'ai utilisé pour avoir de bons multiplicateurs dans ma tête, mais hélas, ils ont fui ma mémoire. Vous pouvez probablement google.
Ceci ne fonctionnera pas dans une image qui n'a pas de faits saillants. Un mat mur peint, par exemple. Mais je ne sais pas ce que vous pouvez faire à ce sujet.
Il y a beaucoup d'améliorations à apporter à cet algorithme simple. Vous pouvez la moyenne de plusieurs pixels clairs, la grille de l'image et de saisir pixels clairs et sombres de chaque cellule, etc. Vous trouverez quelques évident réglages après la mise en œuvre de l'algorithme.
GIMP apparemment utilise un algorithme très simple pour la balance des blancs automatique.
http://docs.gimp.org/en/gimp-layer-white-balance.html
Il y a un peu plus de peaufinage que ce qui est décrit ici depuis ma première tentative de mise en œuvre de cette œuvre semble fonctionner pour la plupart des photos, mais d'autres photos semblent avoir des artefacts ou contiennent trop de rouge, de vert ou de bleu :/
@Charles Ma a suggéré d'utiliser le
Gimp
de la balance des blancs de l'algorithme. Danspython
etnumpy
cela pourrait ressembler à ceci:c'est rapide, simple et fournit des résultats très corrects
Blanc des algorithmes d'équilibrage sont durs. Même les appareils photo numériques se tromper de temps en temps, même s'ils savent beaucoup d'infos supplémentaires à propos de l'image - comme si le flash a été utilisé, et le niveau de lumière.
Pour commencer, je voudrais juste dans la moyenne de rouge, de vert et de bleu, et de l'utiliser comme la balance des blancs en point. Fixer des limites sur elle - rester à l'intérieur de l'aire de répartition de tungstène, fluorescent, et à la lumière. Il ne sera pas parfait, mais lors de son mal, il sera relativement facile d'expliquer pourquoi.
Un récemment publié algorithme est la Couleur de la Distribution de l'algorithme et il peut être trouvé ici: http://www.comp.nus.edu.sg/~marron/pdf/ColorConstancyJOSAv10.pdf Dans le document, il y a aussi la référence au code source Matlab (http://www.comp.nus.edu.sg/~whitebal/source/fichiers/illuminantEstimator.m). C'est un algorithme simple qui peut être facilement programmé et les résultats montrent qu'il est très rapide.
Si vous avez besoin de plus rapide et en même temps précis balance des blancs (couleur de constance), algorithmes, vous devriez vérifier ce site: http://www.fer.unizg.hr/ipg/resources/color_constancy/
Il existe plusieurs algorithmes à leur source codé qui pourrait être juste celles que vous recherchez.