logo_90
Uni ZH
Informatikdienste
PostScript-Corner

1. Der image-Operator
2. Exkurs: Bilder aufrastern
3. Der Operator colorimage
4. Bilderkomprimierung

1. Der image-Operator

Ein Bild wird grundsätzlich hexadezimal kodiert. Jeweils 8 Bits werden als hex. XX dargestellt. Beispiele:
00       Bildpunkt mit Graustufe 0 (weiss)
5E       Bildpunkt mit Graustufe 94
91       Bildpunkt mit Graustufe 145
F0       Bildpunkt mit Graustufe 240
FF       Bildpunkt mit Graustufe 255 (schwarz)
Im Beispiel werden 8 Bits verwendet, um einen Bildpunkt darzustellen. Dies bedeutet, dass wir 256 verschiedene Graustufen unterscheiden können.

IMAGE
Abbildung enthält 256 Graustufen.

Ein Beispiel:

  
/W 463 def        % Breite in Bildpunkten
/H 648 def        % Hoehe in Bildpunkten
Das ganze Bild besteht aus 463 mal 648 Bildpunkten.
 
/pstr W string def % String fuer Scan-Zeile
W H 8		   % dimensions of data 
[W 0 0 H neg 0 H]  % mapping matrix 
{currentfile pstr readhexstring pop}
				image 
 
% Operanden von image:
%    Breite, Hoehe, Anzahl Bits pro Pixel,
%    [Matrix], {Prozedur}
%
2727272727272327232727272727272327272727
2327272727272727272727272B27272727272727
2B272727272727272B2F2F2727272B2B2B2B2B2B
272727272B2B2B2B2B2F2F2B2B272B2B2B2B272B
2B272B2B2B272B2B2B2B27272B2727272B2B2B2B
2B2B2B2B2B2B2B2B2B2B2B2B2B2F2B2B2B2B2B2B
2B2B2B2F2F2B2F2F2F2F2F2F2F2F2F2F2B2F2F2F
2F2F372F2B2B2B2B2B2B2B27272B2B2B2B2B2B2B
...
Der Operator image hat bei PostScript Level 1 die folgenden Operanden: Breite in Pixel, Hoehe in Pixel, Anzahl Bits pro Pixel, Matrix, Prozedur. Der PostScript-Interpreter geht davon aus, dass ein Bild sein eigenes Koordinatensystem hat. Die Matrix besteht normalerweise aus den folgenden sechs Werten: [ Breite 0 0 -Hoehe 0 Hoehe ]. Diese Matrix besagt, dass das Bild von oben nach unten abgetastet wurde.

Der Operator image führt die Prozedur currentfile pstr readhexstring pop wiederholt aus, bis alle Bilddaten verfügbar sind. readhexstring liest eine Scan-Zeile vom aktuellen File und speichert diese in die Zeichenkette pstr.
readhexstring missachtet alle nicht-hexadezimalen Zeichen, also alle Zeichen ausser '0' bis '9' und 'A' bis 'F', so auch das Leerzeichen und 'newline'. Mit pop vernichten wir ein überflüssiges Objekt, welches von readhexstring in den Stack gestellt wurde.

2. Exkurs: Bilder aufrastern

Die Raster-Technik wandelt die Bilder-Graustufen in Kombinationen von Bildpunkten um, die beim Endgerät nur schwarz oder weiss sein können. Die mathematische Beziehung zwischen Rasterdichte und Zahl der Graustufen ergibt sich wie folgt:
Rasterdichte = 
Druckerauflösung over Quadratwurzel aus Zahl_der_Graustufen 
Bei PostScript-Dokumenten werden die Graustufen erst zum Zeitpunkt des Druckens in Halbton-Tupfen (halftone dots) umgewandelt. Dies ist von Vorteil. Ein Bild mit Graustufen sieht nämlich entschieden besser aus, wenn der Standard-Raster (screen frequency) eines hochauflösenden Ausgabegerätes verwendet wird. Es kann sogar empfohlen werden, auf den Einsatz des PostScript-Operators setscreen zu verzichten.

SETSCREEN
LearnPS: Der Operator setscreen (vor dem image-Operator anzugeben)

Bei den Laserdruckern beträgt der Winkel des Punktrasters normalerweise 45 Grad und die Dichte des Punktrasters normalerweise 60 Linien/Zoll. Im Falle der Setzmaschinen ist die Rasterdichte auf 90 oder 120 Linien/Zoll voreingestellt. Achtung: Linien/Zoll und die Auflösung in Pixel/Zoll sind zwei verschiedene Paar Stiefel.

3. Der Operator colorimage

Der Operator colorimage ist die logische Erweiterung des image-Operators und unterstützt Farbkomponenten (RGB oder CMYK) statt lediglich Graustufen. Syntax (für RGB):
width height b/c matrix procRed procGreen procBlue true 3
colorimage 
width
Breite des Bildes in Bildpunkten
height
Höhe des Bildes in Bildpunkten
b/c
Anzahl Bits pro Farbkomponente, z.B. 8 (dieser Wert ist für jede Komponente gleich)
matrix
bestimmt die Transformation des Bildes in das Koordinatensytsem
true 3
Für jede der drei Farbkomponenten R, G und B ist eine separate Prozedur bereitgestellt.
Der Operator colorimage führt die drei Prozeduren procRed, procGreen und procBlue wiederholt aus, um die Daten für die drei Farbkomponenten zu gewinnen.

4. Bildkomprimierung

Die neuen Kompressionsmethoden können die Uebertragung von Farbbildern wesentlich beschleunigen. Der JPEG-Algorithmus (Joint Photographic Expert Group), der mit einem kontrollierten Informationsverlust verbunden ist, kann Bilddaten bis zum Faktor 50 verdichten. Die entsprechenden Filternamen heissen DCTEncode und DCTDecode. DCT steht für "discrete cosine transform". Der Aufruf geschieht mit "/DCTDecode filter". filter ist ein neuer Operator von Level 2, der beim Lesen und Schreiben einer Datei ausgeführt wird.
BILD In einem PostScript-Programm folgt auf DCTDecode gewöhnlich der Operator image. Demgegenüber erfolgt die Komprimierung eines Farbbildes meistens ausserhalb eines PostScript-Programms, so dass also "/DCTEncode filter" kaum verwendet wird.

GOTO Gamma-Korrektur.


Uni ZH | Informatikdienste | PostScript
Last update: Tuesday, 02-Apr-2002 13:45:42 CEST by vo