42 votes

Réduction des yeux rouges algorithme

J'ai besoin de mettre en œuvre la réduction des yeux rouges pour une application que je suis en train de travailler sur.

Googler surtout fournit des liens commerciaux de l'utilisateur final des produits.

Connaissez-vous un bon de réduction des yeux rouges algorithme, qui pourraient être utilisés dans une application GPL?

44voto

Benry Points 3330

Je suis en retard à la fête, mais pour les futurs chercheurs, j'ai utilisé l'algorithme suivant pour une application personnelle que j'ai écrit.

Tout d'abord, la région à réduire est sélectionné par l'utilisateur et transmis à l'oeil rouge la réduction de la méthode d'un Point de centre et de rayon. La méthode des boucles sur chaque pixel dans le rayon et le calcul suivant:

//Value of red divided by average of blue and green:
Pixel pixel = image.getPixel(x,y);
float redIntensity = ((float)pixel.R / ((pixel.G + pixel.B) / 2));
if (redIntensity > 1.5f)  // 1.5 because it gives the best results
{
    // reduce red to the average of blue and green
    bm.SetPixel(i, j, Color.FromArgb((pixel.G + pixel.B) / 2, pixel.G, pixel.B));
}

J'aime vraiment les résultats de cette parce qu'ils gardent l'intensité de la couleur, ce qui signifie que la réflexion de la lumière de l'œil n'est pas réduite. (Cela signifie garder des yeux de leur "vivant" regardez.)

7voto

kiwi Points 519

une grande bibliothèque pour trouver des yeux est openCV. il est très riche, avec des fonctions de traitement d'image. voir aussi cet article avec le titre "Automatique des yeux rouges, détection" de l'Ilia V. Safonov .

6voto

Martin Beckett Points 60406

D'abord, vous devez trouver les yeux! La manière standard, il y a un détecteur de bord, puis une transformation de Hough pour trouver deux cercles de la même taille, mais il peut être plus facile d'algorithmes pour la simple découverte des amas de pixels rouges.

Ensuite, vous devez décider ce que de les remplacer, en supposant qu'il existe suffisamment de vert/bleu de données dans l'image, il vous suffit d'ignorer le canal rouge.

OpenCV est une très bonne bibliothèque libre pour le traitement de l'image, il serait peut-être exagéré pour ce que vous voulez - mais il a beaucoup d'exemples et d'une communauté très active. Vous pouvez aussi chercher pour objet les algorithmes de suivi, le suivi d'un objet de couleur dans une scène est une très similair et problème commun.

4voto

Bill the Lizard Points 147311

Si personne d'autre ne vient avec plus de réponse directe, vous pouvez toujours télécharger le code source de GIMP et de voir comment ils le font.

3voto

japollock Points 864

Le plus simple algorithme, et encore un qui est très efficace serait de zéro, la R de la triple RVB pour la région d'intérêt.

Le rouge disparaît, mais les autres couleurs sont préservées.

Une extension de cet algorithme peut impliquer la mise à zéro de la valeur de R pour seulement triples où le rouge est la couleur dominante (R > G et R > B).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X