Pixelgrafik

[Back]    [Bresenham - Linienalgorithmus]   [RGB Modell]  

Pixelgrafik


Fast man Bilder als Rasterbilder auf, so lässt sich jedes Bild gitterförmig in Zeilen und Spalten aufteilen. Die dadurch entstehenden quadratischen Bereiche bezeichnet man als Pixel (picture element). Die Möglichkeiten, einen Pixel anzusprechen sind vielfältig. Um unter Python einen Einblick in die Arbeit mit Rastergrafiken zu erhalten, bietet es sich an, die PIL (Python Imaging Libary) zu importieren. Diese unterstützt die gängigen Grafikformate und stellt Methoden zum konvertieren und transformieren von Bildern bereit.

Die Modi, welche vorhanden sind, reichen neben einer weitaus komplexeren Funktionalität aus, um Schwarz - Weissbilder, Graustufenbilder und Farbbilder (zum Beispiel nach dem RGB Modell) zu generieren. PIL bietet darüber hinaus auf der Seite ein gutes Tutorial mit einigen anschaulichen Beispielen, die eine Verwendung der Bibliothek verdeutlichen.


Schwarz - Weissbilder und Graustufenbilder

Während im Schwarz - Weissbild die Bits durch 0 oder 1 dargestellt werden, stehen für Graustufenbilder 256 Bit zur Verfügung. Die Graustufen werden durch die Belegung von 0 - 256 erreicht. Es reicht also völlig aus, eine Textdatei zu erzeugen und die Bits in einer Zeile einzulesen. Die Infos im Header sind dabei zwingend. Neben dem Modus P1 (ASCII) und der Bildgröße 512 x 512, ist es wichtig zu wissen, dass PIL das .pbm Format (portable bitmap) unterstützt. Genauere Ausführungen zu den Formaten und eine Einführung in das Gebiet Pixelgrafik ist hier zu finden. Das Bild kann in einem geeigneten (Freeware) Programm wie zum Beispiel Irfanview betrachtet werden.

P1
#bild.pbm
512 512
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

Im Folgenden wurde ein Graustufenbild, welches im .pgm (portable graymap) Format vorliegt mittels eines kleinen Python Programms in .pbm Bild konvertiert. Die bitweise Anordnung ist dabei in einem Editor ablesbar. Das Bild ist im Internet stark verbreitet und kann als .pgm gezogen werden.

                                      



01   .......
02 
03   import sys
04   import image
05 
06   p = str(img.size[0])+" "+str(img.size[1]) # Hoehe und Breite des Bildes
07   f.write('P1\n')                           # Modus
08   f.write('#bild.pbm\n')                    # Kommentar für Output
09   f.write(p+'\n\n')
10   for i in xrange (img.size[1]):
11       for j in xrange (img.size [0]):
12                pixel_value = img.getpixel((j,i))       # liest den Pixel aus
13                if int(pixel_value < 128): f.write ('1 ')
14                else                     : f.write ('0 ')
15 
16   ............


Das Auslesen der Pixel kann über einfache Bereichsabfragen, wie im Code, beschrieben erfolgen. Die Informationen, welche dem Pixel mitgegeben werden, varieren dabei nach dem Anwendungsbereich Schwarz - Weiss oder Graubild.

Das RGB - Farbmodell

Die Grundfarben des RGB - Modells sind Blau, Grün und Blau. Die Farbe werden jeweils mit einem Byte codiert, sind also als Tripel darstellbar. Weitere Farben können durch mischen erzielt werden. Dabei wird der Anteil jeder Grundfarbe im Bereich [0 .. 255] bzw. als Hexcode [0 .. FF] darstellbar. Eine Anwendung wäre die Gestaltung der Farben bei Webseiten. Ein helles Grün lässt sich zum Beispiel durch den Hexcode [ #CAFF70 ] darstellen. Durch die Codierung der einzelnen Grundfarben (je 256 Bit) ergibt sich die Möglichkeit ca. 16,7 Mio Farben darzustellen.

Insgesamt handelt es sich bei RGB Modell um ein additives Farbmodell, wobei die Deckung der Grundfarben Weiß entspricht. Verwendung findet das Modell für Monitor - bzw. Bildschirmdarstellungen. Für Druckerzeugnisse verwendet man das so genannte subtraktive Farbmodell. In Python läßt sich mittels der Image Libary relativ einfach eine Darstellung der einzelnen Farbmuster erreichen.

                                      



Die Möglichkeit einzelne Farben zu verstärken oder abzuschwächen werden durch ein kleines Tool verdeutlicht. Nebenstehender Screenshot zeigt die optionale Oberfläche. Neben der Selektion von Farben, wird hierbei auch gezeigt, wie Konvertierungen für Tkinter Anwendungen vorzunehmen sind, was die Leistungsfähigkeit der PIL - Bibliothek jedoch nur andeutet.


[SOURCE]











Das CYM - Farbmodell

# Noch auszubauen