I colori di un immagine possono essere convertiti in scale di grigio facendo un calcolo dei valori effettivi del contrasto e della luminosità. Questi valori vengono utilizzati per generarne uno di grigio.
Di seguito vi riporto il codice per farlo.
Il valore reale della luminosità di un pixel si calcola con la seguente formula:
Y = 0.3*ROSSO + 0.59*VERDE + 0.11*BLU
Questo valore della luminosità può essere convertito in scale di grigio usando
Color.FromArgb(Y,Y,Y).
[C#]
public Bitmap ConvertiScalediGrigio (Bitmap sorgente)
{
Bitmap bm = new Bitmap(sorgente.Width,source.Height);
for(int y=0;y
{
for(int x=0;x
{
Color c= sorgente.GetPixel(x,y);
int luma = (int)(c.R*0.3 + c.G*0.59+ c.B*0.11);
bm.SetPixel(x,y,Color.FromArgb(luma,luma,luma));
}
}
return bm;
}
[VB]
Public Function ConvertiScalediGrigio (ByVal sorgente As Bitmap) as Bitmap
Dim bm as new Bitmap(sorgente.Width, sorgente.Height)
Dim x
Dim y
For y=0 To bm.Height
For x=0 To bm.Width
Dim c as Color = sorgente.GetPixel(x,y)
Dim luma as Integer = CInt(c.R*0.3 + c.G*0.59 + c.B*0.11)
bm.SetPixel(x,y,Color.FromArgb(luma,luma,luma)
Next
Next
Return bm
End Function
Sotto riporto un immagine per dimostrarvi il funzionamento.

Ciao
Ivan