Virtual Makeup La beauté vs RGB!

The theory:

Un image d'ordinateur est fait avec des pixels. Tous les pixels sont codés en RGB, e.b. R pour rouge, G pour vert et B pour bleue. Avec un mélange de ces 3 couleurs, vous pouvez produire toute les couleurs. par exemple, 100% Rouge + 100% Vert  donne un jaune pure . Dans windows, toute les couleurs RGB sont codés en octet [0-255], où 255 est 100%. Avec cette information, un programmeur peut faire un logiciel pour changer n'importe-quoi sur une image.

Voici un exemple:

Original

After processing

La couleur des yeux:

Avant de colorier les yeux, vous devez définir la zone de travail. Pour cette image de Avril Lavigne, J'ai défini cette zone:

X > 145 < 291 , Y > 250 < 270 ,  X  < 168 >212

Étape 2, Détecter la couleur à changer:

Avril a les yeux bleue-vert. Cette couleur a exactement le même nivaux de bleue et de vert.  La formule pour détecter cette couleur est:

Red < 82, Green > 16, Blue > 16

Étape 3, Changer la couleur

J'ai essayé différente sorte de couleur et de niveaux mais la mieux, la plus naturelle est 13.7 % plus de bleue. Voici la technique:

If Blue < 255-35 Then Blue = Blue + 35 ( 255-35 est le niveau maximum de bleue )

Pour garder le foncer original des yeux, ajouter:

If Red > 35 Then Red = Red - 35
If Green > 35 Then Red = Red - 35

Vous pouvez changer la couleur de votre choix, par exemple vous pouvez amplifier seulement le vert( pour rendre les yeux vert)

Voici un exemple de programmation en Delphi:

( avant définissez 2 Images Box (Image1 & Image2) )

Procedure TForm1.Button1Click(Sender: TObject);
var
  c:LongInt;
  color:longint;
  red,green,blue:Byte;
  x,y:integer;
  bobo:Boolean;

begin
  for y:=0 to my do // my est la hauteur de "Image1"
  begin
    for x:=0 to mx do  // mx est la largeur de "Image1"
      begin
      c:=Image1.Canvas.Pixels[x, y];  // C = le pixel actuel
      blue := GetBValue(c);
      green := GetGValue(c);
      red  := GetRValue(c);
      bobo:=False;
      if x in [168..212] then bobo:=True; // zone d'exclusion
      if  (x>145) and (x<291) and (y>250) and (y<270) and (bobo=False) then // dans les yeux ?
      if  (blue>16) and (green>16) and (red<82) then  // couleur bleue-vert?
      begin
        cc:=35; // 13.7 %
        if blue<=255-cc then blue:=blue+cc;  // la couleur bleue est amplifier
        //if green>=cc then green:=green-cc; // additionner si vous voulez le foncer des yeux originaux
        //if red>=cc then red:=red-cc; //  ''  ''  ''
      end;
      color:=RGB(red,green,blue); // Color = la nouvelle couleur
      Image2.Canvas.Pixels[x,y]:=color; // on place le pixel
    end;
  end;
end;


Plus d'images...

 

Pour plus d'information: hote@aiglonsoft.com (in french please)