Frank Lioty
code butcher
Messaggi: 194
Registrato: Oct 2009
Offline
|
#1
[OpenTK]Desaturizzare un'immagine
Salve ragazzi,
ho cercato ripetutamente online, provato varie soluzioni ma senza risultati. Vorrei desaturizzare una texture. Ho letto in giro che una soluzione consiste nel calcolare le componenti "medie" della texture per poi moltiplicare:
Codice:
r * 0.59
g * 0.3
b * 0.11
Ho quindi implementato una funzione per il calcolo delle componenti:
Codice:
private void Average_Color(Bitmap bitmap, ref double r, ref double g, ref double b) {
Color c = new Color();
int pixel_number = 0;
r = 0;
g = 0;
b = 0;
for (int i = 0; i < bitmap.Width; i++) {
for (int j = 0; j < bitmap.Height; j++) {
c = bitmap.GetPixel(i, j);
r += c.R;
g += c.G;
b += c.B;
pixel_number++;
}
}
r /= pixel_number;
g /= pixel_number;
b /= pixel_number;
}
e al momento del render:
Codice:
Average(bitmap, ref r, ref g, ref b);
GL.Color3(r * 0.59 / 255, g * 0.3 /255, b * 0.11 / 255);
//qui disegno la texture
non ottengo però la bitmap in grayscale come mi aspettavo  Cosa sbaglio?
Francesco Liotta
Twitter: FrankLioty | Fan page: The Wardrobe | Blog: AdventureDev | YouTube Channel: FrankLioty1 |
G+: Francesco Liotta
(Questo messaggio è stato modificato l'ultima volta il: 19-07-2012 10:05 da Frank Lioty.)
|
|
| 19-07-2012 2:55 |
|
TheCrib
Indie Pellerossa
Messaggi: 5,295
Registrato: Sep 2010
Offline
|
#2
RE: [OpenTK]Desaturizzare un'immagine
(19-07-2012 2:55)Frank Lioty ha scritto: indovinate un po'? Non funziona Cosa sbaglio?
E' semplice e vorrei rispondere ma hai scritto "non funziona"... AARRGH !!!!
Davide Pasca
http://v5.kazzuya.com - @109mae
http://oyatsukai.com - @oyatsukai
"O frechete !" - M.Magnotta
|
|
| 19-07-2012 6:08 |
|
Frank Lioty
code butcher
Messaggi: 194
Registrato: Oct 2009
Offline
|
|
| 19-07-2012 10:04 |
|
TheCrib
Indie Pellerossa
Messaggi: 5,295
Registrato: Sep 2010
Offline
|
#4
RE: [OpenTK]Desaturizzare un'immagine
(19-07-2012 10:04)Frank Lioty ha scritto: sei proprio un troll . Va beh, avevo sonno 
Edito.
Non ottieni la bitmap in grayscale ? Ne deduco che rimane a colori ? 8P
Comunque il concetto e' che:
Codice:
luminosity = (color_pixel.r + color_pixel.g + color_pixel.b) / 3;
grayscale_pixel.r = luminosity;
grayscale_pixel.g = luminosity;
grayscale_pixel.b = luminosity;
Quindi, dovresti creare una nuova bitmap.
Quei valori che hai sono opzionali. Sono dei pesi per fare la media pesata, piuttosto che la media semplice che ho usato io.
La ragione di quella media pesata e' per simulare la percezione della luminosita' dei colori da parte dell'occhio.. e' una cosa un po' empirica.
Davide Pasca
http://v5.kazzuya.com - @109mae
http://oyatsukai.com - @oyatsukai
"O frechete !" - M.Magnotta
|
|
| 19-07-2012 10:52 |
|
Frank Lioty
code butcher
Messaggi: 194
Registrato: Oct 2009
Offline
|
#5
RE: [OpenTK]Desaturizzare un'immagine
(19-07-2012 10:52)TheCrib ha scritto: Quindi, dovresti creare una nuova bitmap.
mi sfuggiva proprio quello, grazie mille, per la pazienza soprattutto  , FUNZIONA
Francesco Liotta
Twitter: FrankLioty | Fan page: The Wardrobe | Blog: AdventureDev | YouTube Channel: FrankLioty1 |
G+: Francesco Liotta
|
|
| 19-07-2012 11:34 |
|
TheCrib
Indie Pellerossa
Messaggi: 5,295
Registrato: Sep 2010
Offline
|
#6
RE: [OpenTK]Desaturizzare un'immagine
(19-07-2012 11:34)Frank Lioty ha scritto: (19-07-2012 10:52)TheCrib ha scritto: Quindi, dovresti creare una nuova bitmap.
mi sfuggiva proprio quello, grazie mille, per la pazienza soprattutto , FUNZIONA 
Cool.. la mia buona opera quotidiana l'ho fatta.. adesso posso tornare a terrorizzare vecchi e bambini 8)
Davide Pasca
http://v5.kazzuya.com - @109mae
http://oyatsukai.com - @oyatsukai
"O frechete !" - M.Magnotta
|
|
| 19-07-2012 13:49 |
|