Seite 1 von 1
[gelöst] Anzahl der Farben reduzieren. Aber wie?
Verfasst: 13. Juni 2005 15:48
von Marc Schubert
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
Verfasst: 13. Juni 2005 19:43
von lepsai
Wenn es sich um ein Grauwertbild handelt, kannst du die Farben linear quantisieren, dafür erstellt du eine Farbtabelle, die ungefähr so belegt ist:
######################
Index Farbwert
0 qRgb(0,0,0)
1 qRgb(0,0,0)
...
8 qRgb(8,8,8)
9 qRgb(8,8,8)
....
16 qRgb(16,16,16)
17 qRgb(16,16,16)
....
usw.
Verfasst: 13. Juni 2005 19:45
von lepsai
Blöde Smiles bedeuten selbstverständlich eine 8
Verfasst: 13. Juni 2005 22:18
von Marc Schubert
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
Verfasst: 13. Juni 2005 23:06
von lepsai
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....
Verfasst: 13. Juni 2005 23:07
von lepsai
Du brauchst auch nicht mehr auf 256 Farben herunterzuskalieren...
Verfasst: 14. Juni 2005 11:44
von 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
Verfasst: 14. Juni 2005 11:49
von lepsai
[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...
Verfasst: 14. Juni 2005 14:46
von FlorianBecker
Wenn man ewig mit Qt arbeitet sieht man den Code vor sich.
lepsai ist in grafischen Dingen hier der Beste. Nicht, das ich mich jetzt bei allen anderen unbeliebt mache: Zumindest der hier ab und an postet

Verfasst: 14. Juni 2005 14:51
von Marc Schubert
dann will ich mal hoffen das sich diese Fähigkeit bei mir auch noch einstellt

. Wäre ja nicht ganz unpraktisch. Naja aber nach ca. 2 Monaten runspielen bin ich aber soweit zufrieden mit mir.
Gruß
Marc
Verfasst: 14. Juni 2005 14:52
von FlorianBecker
Bestimmt.