Beitrag
von Gast » Mi Jul 18, 2007 5:00 pm
Wie der Programmierer (Der Bilderklasse) die Bilder ablegt bleibt ihm bzw. dem Grafiktreiber oder der Firmware überlassen. Kann ein 3D-Array [x,y,f] sein, kann eine Pointerliste sein usw.
Das Problem ist: Ein Farbbild hat (normalerweise) 3x 8 Bit pro Pixel , bei 16bit Farbtiefe 3x16Bit Pixel.
Da 3x ein Computer nicht gerne sieht (ist kein 2 hoch x) wird meistens pro Pixel dann 4x8Bit (4 Byte) bzw. bei 16Bit Farbtiefe dann 8Byte.
Desweiteren ist die Frage: Wie sind die Farbpaletten organisiert im Speicher.
Erst alle Roten dann die Grünen dann die blauen anteile oder jeweils RGB oder GRB oder BGR oder .... eines Pixels + Füllbytes und dann der nächste Pixel.
Sofern man diese Struktur kennt kann man dann natürlich ganz einfach die Häufigkeitsverteilung einzelner Farb-Helligkeitswerte pro Farbkanal berechnen lassen.
Allerdings sollte man da eine effektive Speicherung vornehmen. Ein Array [0..2,0..2^16-1] von unsigned LongInt (Jeder Farbwert kann ja doch öfters als 255 mal auftauchen). ist relativ groß.
Bei 8 Bit Farbtiefe geht es aber noch (auch wenn mein Computeralgorithmen Prof. mich erschlagen würde wegen der Speicherplatzverschwendung) - sind dann 3 Farbkanäle a 256 möglichen Werten a 64Bit, also irgendwas zwischen 32 und 64K für das Array.