Forum: PC-Programmierung Bitmap Farbtabelle


von Mick (Gast)


Lesenswert?

Hallo,

ich beschäftige mich gerade mit dem Aufbau von Bitmaps.

Wenn ich ein Bitmap mit einer Farbtiefe von 8Bit habe, dann bedeutet das 
doch dass
- die Farbtabelle maximal 256 Einträge hat ?
- das Bild demnach 256 verschiedene Farben haben kann ?

Wenn ich ein solches Bild erstellen möchte geht das mit Gimp
->Bild ->Modus ->Indiziert

Dort kann ich das Bild auf 256 Farben begrenzen. Innerhalb des Bildes 
werden dann nur 256 verschieden Farben benutzt und in der Bitmap Datei 
wird für jeden Pixel lediglich ein Offset für die jeweilige Farbe in der 
Farbtabelle gespeichert.

Der Einteag selbst in der Farbtabelle ist 4 Byte groß und hat je ein 
Byte für R, G und B. Demnach könnte jeder Farbwert der Farbtabelle
- 24 Bit groß sein ?

Wenn ich 16Bit Farben haben möchte (RGB565)
- wie kann ich das im Gimp einstellen
- wie nennt sich dieser Wert, Farbraum ??

Gruß
Mick

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mick schrieb:
> Wenn ich ein Bitmap mit einer Farbtiefe von 8Bit habe, dann bedeutet das
> doch dass
> - die Farbtabelle maximal 256 Einträge hat ?

Nein. Die Farbtiefe impliziert nicht das Vorhandensein einer 
Farbtabelle.

Die Bitmap kann z.B. eine Graustufenbitmap sein, bei der der 
gespeicherte Wert unmittelbar der Helligkeit entspricht; die Bitmap kann 
aber auch RRGGGBBB-codiert sein (zwei Bit für R und je drei für G und 
B).

Wenn es eine Farbtabelle gibt, dann kann die nur 256 Einträge haben. 
Das ist korrekt.

> - das Bild demnach 256 verschiedene Farben haben kann ?

Ja. Die Anzahl der Farben, aus denen diese 256 gleichzeitig 
darstellbaren ausgesucht werden, kann natürlich deutlich größer sein.

Die klassische VGA-Karte beispielsweise verwendete eine Farbtabelle mit 
256 Einträgen à 18 Bit (je 6 pro Grundfarbe), damit waren 262144 
verschiedene Farben möglich, von denen aber nur 256 gleichzeitig 
angezeigt werden konnten.


BTW: Du plenkst. Keine Leerzeichen vor Satzzeichen.

von Mick (Gast)


Lesenswert?

Ok, danke für die Antworten.

Wie kann ich z.B. in Gimp diesen Farbraum einstellen?
Ich habe ein Bild welches ich mit 256 Farben abspeichern möchte.
Allerdings sollen die Farben selbst 16Bit (RGB565) haben.

von jemand (Gast)


Lesenswert?

Mick schrieb:
> Ich habe ein Bild welches ich mit 256 Farben abspeichern möchte.

Posterisieren?

von Mick (Gast)


Lesenswert?

jemand schrieb:
> Posterisieren?

Im Prinzip genau das was ich gesucht habe.

Ich möchte das Bild mit einem uC an ein LCD schicken. Dieses möchte die 
Farbwerte im RGB565 Format haben. Beim Posterisieren stelle ich 
wahrscheinlich den Wert für alle 3 Farben gleich ein.

Ist dieses RGB565 Format ein Exot oder wie könnte ich das Bild mit Gimp 
erstellen?

von jemand (Gast)


Lesenswert?

Wie kommst du dann auf 256 Farben?

Google "Convert to RGB565"

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mick schrieb:
> Ich möchte das Bild mit einem uC an ein LCD schicken. Dieses möchte die
> Farbwerte im RGB565 Format haben.

Warum aber dann nur 256 Farben, und warum eine Farbtabelle verwenden? 
Geht es um den Speicherbedarf, daß Du nicht mit 16 Bit pro Pixel 
arbeiten willst/kannst?

von Mick (Gast)


Lesenswert?

jemand schrieb:
> Wie kommst du dann auf 256 Farben?

Ich scheine den Zusammenhang einfach nicht zu verstehen.

Mein LCD benötigt die Bilder im RGB565 Format. Das entspricht einem 
Farbraum von 16Bit. Außerdem möchte der uC Code eine Farbtiefe von 8Bit, 
also max. 256 verschiedene Farben.

Wie kann ich in Gimp ein Bild erstellen was 256 verschiedene Farben mit 
je 16Bit (RGB565) beinhaltet?

von jemand (Gast)


Lesenswert?

Mick schrieb:
> Mein LCD benötigt die Bilder im RGB565 Format. Das entspricht einem
> Farbraum von 16Bit. Außerdem möchte der uC Code eine Farbtiefe von 8Bit,
> also max. 256 verschiedene Farben

Langsam. RGB565 hat eine FarbTIEFE von:
5 Bit für Rot, d.h. 2^5 = 32 Helligkeitsstufen für Rot.
6 Bit für Grün, d.h. 2^6 = 64 Helligkeitsstufen für Grün.
5 Bit für Blau, d.h. 2^5 = 32 Helligkeitsstufen für Blau.
Zusammen ergibt das einen FarbRAUM von 16 Bit. Das macht 2^16 = 65536 
verschiedene Farben.

Eine FarbTIEFE von konsequent 8 Bit wäre dementsprechend RGB888 und 
somit ein FarbRAUM von 3 x 8 = 24 Bit. Das macht 2^24 = 16.777.216 
verschiedene Farben.

von Mick (Gast)


Lesenswert?

jemand schrieb:
> Eine FarbTIEFE von konsequent 8 Bit wäre dementsprechend RGB888 und
> somit ein FarbRAUM von 3 x 8 = 24 Bit. Das macht 2^24 = 16.777.216
> verschiedene Farben.

Ok, danke.
Aber wie ist nun der Zusammenhang zu einer Bitmap mit Farbtabelle?
Dort ist ja einmal die Rede von einem Bitwert für die Tabelle selbst, 
also wie groß die Tabelle ist und einem Bitwert für die Farbe.

Dort wird immer von z.B. 8Bit (256 Farben gesprochen). Dieser Wert sagt 
ja im Prinzip nichts über die Farben selbst aus sondern nur über die 
Anzahl.
Und woher weiß ich in einer solchen Bitmap mit Farbtabelle welche 
Farbtiefe verwendet wird.
Bzw. kann diese im Gimp einstellen?

von jemand (Gast)


Lesenswert?

Warum glaubst du eine Bitmap mit Farbtabelle zu benötigen?

von c-hater (Gast)


Lesenswert?

jemand schrieb:

> Warum glaubst du eine Bitmap mit Farbtabelle zu benötigen?

Gute Frage. Vermutlich braucht er sie nicht. Wenn der vom TO 
unverstandene C&P-Code (den er uns auch nicht bekannt gemacht hat) 
Bitmaps (im Sinne von MS-Bitmaps) verarbeitet, dann kann das nicht sein.

Zwar unterstützen MS-Bitmaps durchaus 16Bit(565)-RGB, aber nicht 
"indiziert". Und indiziert wiederum gehen bei MS-Bitmaps zwar 1,4 und 8 
Bits für den Index, aber die Farbtabelle muss (sofern überhaupt 
vorhanden, denn sie ist grundsätzlich optional, auch in allen 
indizierten Modi) immer im RGB32-Format sein, nix 16Bit im Allgemeinen 
oder 16Bit(565) im Besonderen.

Und weil das alles so ist, wie es ist, wird auch keine übliche Software 
Bilder in dem vom TO als erforderlich angenommenen Format erstellen 
können.

Ich würde dem TO empfehlen, seine Faulheit einfach mal abzustreifen und 
zu schauen, was die geklaute Software tatsächlich erwartet. Wenn er das 
erst einmal weiss, sollte es auch nicht schwerfallen, Gimp dazu zu 
bringen, genau das erwartete Format zu produzieren.

Naja, jedenfalls, wenn es tatsächlich möglich ist im Rahmen der 
"normalen" Bitmapformate.

Denn natürlich kann es sein, dass die unbekannte Software für das 
Zielsystem irgendwelche proprietäre Erweiterungen des Bitmap-Formats 
erwartet/verwendet. Das MS-Bitmap-Format hat viel Potential für solche 
Erweiterungen, selbst MS selber hat es mit solchen undokumentierten 
Erweiterungen benutzt, z.B. als Teil der AVI-Videos.

von Vlad T. (vlad_tepesch)


Lesenswert?

jemand schrieb:
> Warum glaubst du eine Bitmap mit Farbtabelle zu benötigen?

weil das display  RGB565 will, er auf dem µC aber nur 8bit pro pixel 
will.
Also braucht er eine Farbtabelle mit 8bit Index und RGB565 Werten.

Gibts imho aber nicht. Man könnte auf dem µC von den RGB24 werten aus 
der Farbtabelle aber auch einfach die unteren 3, respektive 2, bits 
wegschmeißen.

von Georg (Gast)


Lesenswert?

Vlad T. schrieb:
> weil das display  RGB565 will, er auf dem µC aber nur 8bit pro pixel
> will.

Deswegen braucht er aber keine entsprechende Bitmap, sondern nur eine 
Lookup-Tabelle für die Ausgabe an das Display. Die Bitmap kann einfach 
geradeaus 8bit enthalten.

Was er allerdings nicht gesagt hat, oder ich habe es übersehen, ist ob 
es immer die gleiche Tabelle ist oder bei jedem Bild anders sein soll. 
Und ob das Bild auf dem PC korrekt aussehen soll.

Georg

von c-hater (Gast)


Lesenswert?

c-hater schrieb:

> aber die Farbtabelle muss (sofern überhaupt
> vorhanden, denn sie ist grundsätzlich optional, auch in allen
> indizierten Modi) immer im RGB32-Format sein

Sorry, das muss natürlich richtig "RGB24" heißen. COLORTRIPLE...

von Jim M. (turboj)


Lesenswert?

Mick schrieb:
> Wenn ich 16Bit Farben haben möchte (RGB565)
> - wie kann ich das im Gimp einstellen
> - wie nennt sich dieser Wert, Farbraum ??

Was willst Du genau machen?

Die 256 aus den bei RGB565 möglichen Farben auswählen oder das gesamte 
Bild als RGB565 ohne Palette benutzen?

Ich hätte übrigens einfach die 24-bittigen Paletteneinträge genommen und 
die bei RGB565 nicht benötigten Bits abgeschnitten. Das ist 'ne 
Fingerübung in Bitschieberei.

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Jim M. schrieb:
> Ich hätte übrigens einfach die 24-bittigen Paletteneinträge genommen und
> die bei RGB565 nicht benötigten Bits abgeschnitten

Ja, ich auch, aber runden wäre besser als abschneiden - aber 
wahrscheinlich sieht man den Unterschied kaum. Also statt R div 32 
besser (R+4) div 32.

Georg

von Vlad T. (vlad_tepesch)


Lesenswert?

Georg schrieb:
> Vlad T. schrieb:
>> weil das display  RGB565 will, er auf dem µC aber nur 8bit pro pixel
>> will.
>
> Deswegen braucht er aber keine entsprechende Bitmap, sondern nur eine
> Lookup-Tabelle für die Ausgabe an das Display. Die Bitmap kann einfach
> geradeaus 8bit enthalten.

Richtig, warum auch ein definiertes Dateiformat benutzen, wenn man 
selbst eins stricken kann und dann auch noch als Bonus ein 
Konvertierungstool schreiben darf.

Georg schrieb:
> Was er allerdings nicht gesagt hat, oder ich habe es übersehen, ist ob
> es immer die gleiche Tabelle ist oder bei jedem Bild anders sein soll.
> Und ob das Bild auf dem PC korrekt aussehen soll.

Diese Probleme würden sich auch erübrigen, wenn man auf ein 
Standard-Index-Bitmap setzt. und die Farben auf dem µC "skaliert"

von Georg (Gast)


Lesenswert?

Vlad T. schrieb:
> Richtig, warum auch ein definiertes Dateiformat benutzen

Weil es das was er möchte nicht gibt? Wenn du kein Format konkret 
benennen kannst, das eine eingebette Lookuptable im RGB565 Format 
enthält, ist dein Beitrag nicht hilfreich, sondern bloss die übliche 
Stänkerei. Also Butter bei die Fische.

Georg

von AntiMaker (Gast)


Lesenswert?

Georg schrieb:
> das eine eingebette Lookuptable im RGB565 Format
> enthält,

Warum nicht auf die Lookup-Tabelle verzichten, und gleich zwei Byte pro 
Pixel, ohne Lookup, speichern.

Dann kann das Bild auch den vollen Farbumfang des LCDs ausnutzen, ohne 
künstliche Beschränkung auf 256 vorausgewählte Farben.

Braucht natürlich mehr Platz. Ob der Flash-Speicher dafür zu knapp wird, 
oder ob das Bild z.B. sowieso von einer "unendlich großen" SD-Karte 
kommt, wissen wir nicht, dass muss der TE selber abwägen.

von AntiMaker (Gast)


Angehängte Dateien:

Lesenswert?

Beispielbilder (Kleine Auflösung, damit die BMPs nicht gar so groß 
werden)

RGB888 "original"
RGB565 "16-Bit"
RGB565_256colors: "indiziert, 256 Farben aus der RGB565-Palette"

an den Wolkenrändern z.B. sieht man da schon einen starken Unterschied.

von Vlad T. (vlad_tepesch)


Lesenswert?

Georg schrieb:
> Weil es das was er möchte nicht gibt? Wenn du kein Format konkret
> benennen kannst, das eine eingebette Lookuptable im RGB565 Format
> enthält, ist dein Beitrag nicht hilfreich, sondern bloss die übliche
> Stänkerei. Also Butter bei die Fische.

warum? die paar zusätzlichen Bits in der LUT machen den Braten auch 
nicht fett, wenn man unkomprimierte Bilder verwendet. Dafür hat man die 
Scherereien mit der Konvertierung nicht.

An der Stelle, wo man die Pixeldaten dem Display serviert ist es ein 
leichtes die unteren Bits wegzuschmeißen (ob nun mit oder ohne 
vorherigem Runden).

Was ist daran Stänkerei? Es gibt nicht viel simpler zu benutzende und 
verbreitere Formate als bmp.

von c-hater (Gast)


Lesenswert?

Vlad T. schrieb:

> Georg schrieb:
>> Weil es das was er möchte nicht gibt? Wenn du kein Format konkret
>> benennen kannst, das eine eingebette Lookuptable im RGB565 Format
>> enthält, ist dein Beitrag nicht hilfreich, sondern bloss die übliche
>> Stänkerei. Also Butter bei die Fische.
>
> warum?

Weil du das Problem noch nicht begriffen hast. Das Problem ist, dass der 
OP ein Bildformat sucht, was exakt seine Bedürfnisse abdeckt und so 
verbreitet ist, dass es mit Standard-Software erstellbar ist.

Du hast vorgeschlagen, eben kein solches Format zu verwenden. Damit bist 
du definitiv zu 100% am Thema vorbei.

Ich habe dem TO wenigstens noch erklärt, dass es ein solches Format 
schlicht nicht gibt, jedenfalls nicht im Rahmen der MS-Bitmaps. Und auch 
nicht für Jpeg und auch nicht für Gif und auch nicht für Png, das möchte 
ich hier noch hinzufügen.

> die paar zusätzlichen Bits in der LUT machen den Braten auch
> nicht fett, wenn man unkomprimierte Bilder verwendet. Dafür hat man die
> Scherereien mit der Konvertierung nicht.

Das ist überhaupt nicht der Punkt. Natürlich ist wäre es für einen 
erfahrenen Programmierer überhaupt kein Problem, z.B. die 
RGB24-Farbtabelle des MS-BMP-Standardformats zur Laufzeit in eine 
16Bit-RGB565-Farbtabelle zu überführen. Nur der TO kann das halt nicht, 
weil er nur Code aus dem Internet kopieren kann und auch das mangels 
hinreichender Kenntnisse nicht mal gut...

> Was ist daran Stänkerei? Es gibt nicht viel simpler zu benutzende und
> verbreitere Formate als bmp.

Kaum. BMP ist wirklich sehr einfach gestrickt, da geht fast nix auch nur 
halbwegs verbreitetes drunter, was ich in den letzten 40 Jahren in 
Hinsicht auf Bildformate so gesehen habe. Und trotz des wirklich einfach 
Strickmusters ist BMP erstaunlich vielfältig, sogar schon in dem Teil, 
der offiziell dokumentiert ist, Aber das nur nebenbei.

Der springende Punkt ist: Auch KEINES der vielen, angeblich simpler zu 
benutzenden und verbreiteteren Bildformate liefert genau die nötigen 
Features für den TO...

Und noch ein Punkt: DU weisst das ganz offensichtlich nicht und bist 
auch zu blöd, es zu ergooglen... Und deswegen laberst du nur nutzlosen 
Bullshit. Genau darauf wollte Georg dich hinweisen, wobei er natürlich 
genau in Schwarze gehackt hat, nämlich deine offensichtliche 
vollständige Unfähigkeit, ein entsprechendes Format einfach nur konkret 
zu BENENNEN...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.