Hallo zusammen.
Wieder einmal hat mich das Thema Farben gepackt. Folgendes: Wenn man in HTML eine Farbe, etwa für den Hintergrund definiert, gibt man sie in der Form "FFCC33" an, wobei die ersten beiden Stellen den Rot-Anteil definieren, die mittleren beiden das Grün und die letzten das Blau. Da jeder Farbkanal einen Wert von 00 bis FF = 0 - 255 annehmen kann, stehen demnach 8 bit pro Farbe zur Verfügung - also geht HTML von einer 24-Bit-Farbauflösung aus. Kaum jemand benutzt aber diese Auflösung - die sitzt genau zwischen den Stühlen. Üblich sind entweder 16 oder 32 bit. Die auf 24-Bit-Basis definierte Farbe muß also umgerechnet werden. Wie aber läuft das ab? Bei 16 Bit z.B. hätte ich "knapp fünfeinhalb Bit" pro Farbe zur Verfügung, bei 32 Bit wären es nicht ganz elf - beides nicht der wahre Jakob... weiß jemand etwas darüber?
Danke im voraus für Eure Antworten.
CU
Olaf19
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
Ich denke das in HTML nur eine Farbtiefe von 24 Bit definiert ist. Da wird nichts umgerechnet, die Anzahl der Farben ist einfach limitiert.
224=16.777.216 Farben
Hallo Holger,
das denke ich auf jeden Fall auch. Mir ging es nur darum, wie der Monitor - oder ist es die Grafikkarte? - das umsetzt, wenn er/sie auf 16- oder 32-Bit-Modus gestellt ist.
Danke und CU
Olaf
also ich würde mal rein auf verdacht auf interpolation tippen.
Vermuten würde ich das auch. Wenn man im 8-Bit-Modus mit nicht-websicheren Farben arbeitet, kann es durch das Auf- oder Abrunden hin zum nächsten Wert im 256-Farben-Raster zu erheblichen Farbton- und Helligkeits-Sprüngen kommen, aber ich schätze mal, 16 bit sind schon eine so hohe Qualität, daß das eigentlich nicht mehr vorkommen sollte.
Mich interessierte das nur mal so von der technischen Seite aus.
CU
Olaf
wieso soll kaum jemand 32bit benutzen ? auf winzige farbabweichungen achtet doch eh keiner und spätesten wenn du änfangst mit jpgs zu arbeiten, kannste eh alle vorher schön kalkulierten und getesten farb-kombis, rahmen, BGs ... über board werfen - ausser du nimmst ne 100%ige Quali - aber das würde ja den sinn von jpg verfehlen
Dafür kann man Bilddateien "slicen".
Die Vollfärbflächen Slices setzt man als GIF`s und die anderen "unruhigen" Bilddaten als Jpg !
Gruß
Terra X
Leute lasst euch nicht aufs Glatteis führen!!!
KEINE Gafikkarte stellt wirklich 2hoch32=4.294.967.296 Farben dar!
Das Maximum liegt bei 2hoch30=1.073.741.824 Farben(10bpp).
2Bit bleiben ungenutzt.
Meist aber nur 2hoch24=16.777.216 Farben(8bpp).
Dabei bleibt einfach ein ganzes Byte des Grafikspeichers ungenutzt!
Das heisst pro Farbkanal 8Bit=1Byte.
Für ein Pixel sind das 3*8Bit = 24Bit verpackt in 32Bit=4Byte=2Word=1DWord.
Das hat einfach den Vorteil das die CPU oder der Grafikprocessor solche "geraden" Anzahlen von 1Byte oder 1DWord besser handeln können als "krumme" 10Bit oder 24 bit.
Manche Grafikprogramme/Spiele nutzen das 4. Byte intern als Alpha-Channel.
Den Unterschied zwischen 24Bit und 30(32)Bit kann mann sowieso nur unter ganz bestimmten Bedingungen (1024 statt 256 Abstufungen in einem Graukeil/Farbkeil) sehen.
Und LCD/TFT-Monitore können sowieso nur 24Bit darstellen
Hi Jens!
Wenn nur 30 von 32 Bits benutzt werden, dann hätte jeder Farbkanal 10 Bit = 1024 Abstufungen zur Verfügung. Dann gäbe es auch kein Problem mehr mit der Umrechnung. Genauso bei 16 Bit: Würden nur 15 benutzt, ergäbe es pro Farbkanal 5 Bit = 32 Abstufungen.
CU
Olaf
sorry, daß ich widerspreche, aber die farbdarstellung erfolgt durch den RamDAC und der macht wirklich 2^32 verschiedene farben.
womit du allerdings recht hast ist, daß momentan keine grafikkarte ntern mit 32bit farbgenauigkeit rechnet zum beispiel beim berechnen von 3d effekten.
3dcenter hatte da vor längerem mal einen guten artikel zu, ging damals um sinn/unsinn von interner 32bit genauigkeit bei grafikchips, manche fordern sogar 64bit. das ganze hat einen nicht gleich erkennbaren sinn:
wenn z.b. bei AA verschiedene pixel miteinander verrechnet werden, so kann irgendwann im verlauf der berechnung zum einen der rundungsfehler recht beachtlich werden, zum anderen passiert noch etwas drastischeres, und zwar negative farben, also blöd ausgesprochen dunkler als schwarz udn weißer als weiß (jeder waschmittelhersteller wär glücklich)= ;o)...
nur werden eben diese negativen zwischenergebnisse genullt und mit den genullten zwischenergebnissen weitergerechnet, wodurch einige unschöne effekte entstehen.
deswegen wollen (oder machen sogar) einige grafikchiphersteller auch folgendes: wirklich nur 30 bit nutzen und 2 bits für eine vorzeichendefinition nutzen.
ps: will aber nciht ganz abstreiten, daß es eventuell wirklich karten gibt, deren RamDAC keine 32bit echtfarben darstellt.
pps: mittlerweile ist man aber sogar bei 48bit (aber wohl nur für grafiker interessant, wenn überhaupt)
Tja, ich habe schon Schwierigkeiten 16- oder 32-Bit mit bloßem Auge auseinanderzuhalten. Hängt natürlich vom Ausgangsmaterial ab...
kann man ganz einfach mal testen...photoshop holen...32 bit foto reinladen..in 16 bit ändern..dann siehst schon nen unterschied so im direkten vergleich..beim zocken halte ich es aber eher für mehr als witzlos ;o)
>macht wirklich 2^32 verschiedene farben
Sorry, da muss ich widersprechen
Welcher RAMDAC soll das sein???
Wie soll das gehen mit 10,666 Bit/Farbkanal???
Ausserdem musst du 2 Sachen auseinander halten:
1. Die Verarbeitung von Pixelbildern in Grfikprogrammen.
Das läuft im normalen Arbeitsspeicher des PC ab. Und da sind intern natürlich höhere Farbtiefen bis 32, 48 oder 64 Bit/Pixel üblich.
2. Die Anzeige der Bilder über Grafikspeicher-RAMDAC-Monitor.
Und da ist in den meisten Fällen bei 8 Bit/Farbkanal Ende.
Matrox wirbt damit das die Phahelia in einigen Modi mit 10 Bit/Farbkanal arbeitet.
Mir ist keine Grafikkarte bekannt die mehr als 10Bit/Farbkanal bietet.
> im normalen Arbeitsspeicher des PC... sind intern natürlich höhere Farbtiefen bis 32, 48 oder 64 Bit/Pixel üblich
Da muß ich nochmal einhaken: Warum werden höhere Farbtiefen für die Berechnungen genommen, wenn später nur halb so viele Bits dargestellt werden können? Daß die Farben dadurch genauer ausgegeben werden, dürfte doch arithmetisch nicht möglich sein?
Wie xaffort schon gepostet hat...
Um bei der Verarbeitung Rundungsfehler zu vermeiden!
Wenn in einem modernen Bildbearbeitungsprogramm das mit Layern, Objekten Effekten und Tranzparenzen arbeitet, Bilder berechnet werden, dann können schon Rundungsfehler von mehreren Bit entstehen.
Wenn man dann nur mit 24 Bit rechnet bleiben pötzlich nur noch z.B. 15 "sichere" Bit übrig. der Rest währe ein Rauschen in den LSBs, und das würde man sehen.
Ausserdem werden nicht alle Bilder nur berechnet um auf dem Monitor dargestellt zu werden.
Bildverarbeitungsprogramme werden auch in der Druckvorlagenerstellung eingesetzt. Und da gelten andere Qualitätsansprüche als beim Surfen oder Zocken.
ok..muß zugeben, ich hab mich zum einen etwas arg falsch ausgedrückt und zum anderen auch noch das ein oder andere durcheinander geschmissen. und die 2^32 farben waren auch falsch ;o)...
RamDACs verfügen nur über einen 8Bit D/A wandler pro farbkanal (so weit ich weiß ist die parphelia die einzige mit 10Bit wandlern wie du schon erwähnt hast, ungenutzt bleibt da ber nichts, sind halt nur 10 bit). also werden auch bei 32 bit farbtiere nur 16Mio farben dargestellt., die intern berechneten farben werden also vor (oder im) RamDAC herunter gerechnet.
ich habe aber noch etwas interessantes gelesen..und zwar über den 16Bit modus...die aufteilung findet nämlich wie folgt statt. rot und blau 5Bit und grün 6Bit...da wohl das menschliche auge auf grün besonders empfindlich reagiert.
was ic mit der berechnung im grafikchip meinte bezieht sich hauptsächlich auf 3D anwendungen, dort wird für komplexe berechnungen eben der chip genutzt und da kommt es eben auf seine "bitämäßige" auslegung an. besonders eben bei den korrekturberechnungen bei mehrfachem antialiasing, oder wirklich in hardware implementierte filter (bei manchen profikarten für rendering z.b.). dort werden eben rundungsfehler potenziert wenn die interne genauigkeit nicht hoch genug ist.
(muß wohl in nächster zeit erst überlegen und dann schreiben) ;o)