[gelöst] Anzahl der Farben reduzieren. Aber wie?
-
Marc Schubert
- Beiträge: 30
- Registriert: 18. Mai 2005 10:00
- Wohnort: Hannover
[gelöst] Anzahl der Farben reduzieren. Aber wie?
Hallo,
ich möchte die Farben in einem QImage auf 16 Reduzieren. Auf 8 bit also 256 Farben geht ja wunderbar mit QImage convertDepth. Nun möchte ich aber nur 16 Farben haben. Wie kann ich die Zahl weiter reduzieren? Hat jemand einen link auf einen Algorithmus der mir helfen könnte?
Warscheinlich werde ich mit einer Palette arbeiten müssen. Aber wie nutze ich diese? Wie wähle ich die richtigen Farben aus?
Vielen Dank im voraus
Marc
ich möchte die Farben in einem QImage auf 16 Reduzieren. Auf 8 bit also 256 Farben geht ja wunderbar mit QImage convertDepth. Nun möchte ich aber nur 16 Farben haben. Wie kann ich die Zahl weiter reduzieren? Hat jemand einen link auf einen Algorithmus der mir helfen könnte?
Warscheinlich werde ich mit einer Palette arbeiten müssen. Aber wie nutze ich diese? Wie wähle ich die richtigen Farben aus?
Vielen Dank im voraus
Marc
Zuletzt geändert von Marc Schubert am 14. Juni 2005 14:49, insgesamt 1-mal geändert.
-
Marc Schubert
- Beiträge: 30
- Registriert: 18. Mai 2005 10:00
- Wohnort: Hannover
Vielen Dank erstmal,
er handelt sich um ein Farbbild 24 bit. Mit QT hab ich es schon auf 256 Farben
herunter bekommen. Es soll aber nur 16 Farben haben.
Wie ermittle ich die 16 Farben, die über bleiben sollen? ( Und wie änder ich Sie am einfachsten?)
Ist linear quantisieren das richtige Wort für den Vorgang?
Wo finde ich über sowas Informationen?
MfG
Marc Schubert
er handelt sich um ein Farbbild 24 bit. Mit QT hab ich es schon auf 256 Farben
herunter bekommen. Es soll aber nur 16 Farben haben.
Wie ermittle ich die 16 Farben, die über bleiben sollen? ( Und wie änder ich Sie am einfachsten?)
Ist linear quantisieren das richtige Wort für den Vorgang?
Wo finde ich über sowas Informationen?
MfG
Marc Schubert
Bei 24-Bit Bildern must genauso vorgehen, bloß für alle 3 Kanäle und ohne Farbpalette:
QRgb rgb = pixel(x,y);
int red = qRed(rgb);
int green = qGreen(rgb);
int blue = qBlue(rgb);
red = (red%16) < 8? (red >> 4) << 4 : ( red >> 4) << 5;
green = (green%16) < 8? (green >> 4) << 4 : ( green >> 4) << 5;
blue= (blue%16) < 8? (blue>> 4) << 4 : ( blue >> 4) << 5;
setPixel(x,y, qRgb(red,green,blue));
und so für das ganze Bild....
QRgb rgb = pixel(x,y);
int red = qRed(rgb);
int green = qGreen(rgb);
int blue = qBlue(rgb);
red = (red%16) < 8? (red >> 4) << 4 : ( red >> 4) << 5;
green = (green%16) < 8? (green >> 4) << 4 : ( green >> 4) << 5;
blue= (blue%16) < 8? (blue>> 4) << 4 : ( blue >> 4) << 5;
setPixel(x,y, qRgb(red,green,blue));
und so für das ganze Bild....
-
Marc Schubert
- Beiträge: 30
- Registriert: 18. Mai 2005 10:00
- Wohnort: Hannover
[quote="Marc Schubert"]Danke das werd ich mal probieren.
Wo hast du das gefunden? Gibt es dafür eine Dokumentation? Ich würd mich gern mehr damit beschäftigen.
Danke nochmal
Marc[/quote]
das hab ich aus dem Kopf geschrieben, aber es gibt sicherlich auch irgend welche Publikationen zum Thema Farbraumquantizierung.... Mass man halt nach sowas suchen...
Wo hast du das gefunden? Gibt es dafür eine Dokumentation? Ich würd mich gern mehr damit beschäftigen.
Danke nochmal
Marc[/quote]
das hab ich aus dem Kopf geschrieben, aber es gibt sicherlich auch irgend welche Publikationen zum Thema Farbraumquantizierung.... Mass man halt nach sowas suchen...
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
-
Marc Schubert
- Beiträge: 30
- Registriert: 18. Mai 2005 10:00
- Wohnort: Hannover
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten: