| 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;
Pour plus d'information: hote@aiglonsoft.com (in french please)