Fonction de traitement d'images : niveaux de gris

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 626 fois - Téléchargée 139 fois

Contenu du snippet

les composantes d'un pixel en niveaux de gris ont la même valeur.
R=G=B=0 --> Noir
R=G=B=255 --> Blanc
R=G=B=127 --> Gris Moyen
Donc, On fait une moyenne des composantes R,G,B de chaque pixel, puis
on affecte cette moyenne à chaque composante.
R=G=B=(R+G+B) DIV 3

Source / Exemple :


PROCEDURE ToGrayScale (VAR BMP : TBitmap; CONST Rect : TRect);
VAR
TabScanline : ARRAY OF PRGBArray;
I, J : integer;
N : integer;
BEGIN

BMP.pixelFormat := pf24bit;

setLength(TabScanline, BMP.Height);

FOR N := 0 TO BMP.Height - 1 DO
    TabScanline[N] := BMP.Scanline[N];

FOR I := Rect.Left TO Rect.Right DO
    FOR J := Rect.Top TO Rect.Bottom DO
        BEGIN
        WITH TabScanline[J,I] DO
             BEGIN
             N := (RGBTRed + RGBTGreen + RGBTBlue) DIV 3;
             RGBTRed := N;
             RGBTGreen := N;
             RGBTBlue := N;
             END;
        END;

TabScanline := nil;
END;

Conclusion :


w413x@free.fr

A voir également

Ajouter un commentaire

Commentaire

arckhenstone
Messages postés
19
Date d'inscription
lundi 30 mars 2009
Statut
Membre
Dernière intervention
29 juillet 2009
-
pourrais tu m'aider ?
Voici mon code, mais mon tramage ressort en noir et rouge au lieux de nori et blanc et j'ai de nombreuses imperfection dans l'image... plein de petit pixel rouge ( qui devraient être blanc) apparaissent autour de mon image...
Merci d'avance.

procedure TForm1.BiChromieClick(Sender: TObject);
Const
seuil=128;
Var
x,y:word;
begin

for x:=0 to image1.picture.width do
begin

for y:=0 to image1.picture.Height do
begin
if image1.Picture.Bitmap.Canvas.Pixels [x,y]>seuil then
image1.Picture.Bitmap.Canvas.Pixels [x,y]:=255 else image1.Picture.Bitmap.Canvas.Pixels [x,y]:=0;
memo1.Clear;
end;
end;
end;

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.