Digital Signal Processing Reference
In-Depth Information
Erzeugen von Indexbildern
Fur die Erzeugung von Indexbildern ist in ImageJ keine spezielle Me-
thode vorgesehen, da diese ohnehin fast immer durch Konvertierung be-
reits vorhandener Bilder generiert werden. Fur den Fall, dass dies doch
erforderlich ist, ware z. B. folgende Methode geeignet:
12
Farbbilder
1
ByteProcessor makeIndexColorImage(int w, int h, int nColors) {
2
byte[] Rmap = new byte[nColors];
// red, green, blue color map
byte[] Gmap = new byte[nColors];
3
byte[] Bmap = new byte[nColors];
4
// color maps need to be filled here
5
byte[] pixels = new byte[w * h];
6
IndexColorModel cm
7
= new IndexColorModel(8, nColors, Rmap, Gmap, Bmap);
8
return new ByteProcessor(w, h, pixels, cm);
9
10
}
Der Parameter
nColors
definiert die Anzahl der Farben - und damit
die Große der Farbtabellen - und muss einen Wert im Bereich 2
...
256
aufweisen. Naturlich mussten auch die drei Farbtabellen fur die
RGB
-
Komponenten (
Rmap
,
Gmap
,
Bmap
) und das Pixel-Array
pixels
noch mit
geeigneten Werten befullt werden.
Transparenz
Ein vor allem bei Web-Grafiken haufig verwendetes
”
Feature“ bei Index-
bildern ist die Moglichkeit, einen der Indexwerte als vollstandig trans-
parent zu definieren. Dies ist in Java ebenfalls moglich und kann bei
der Erzeugung des Farbmodells (
IndexColorModel
) eingestellt werden.
Um beispielsweise in Prog. 12.3 den Farbindex 2 transparent zu machen,
musste man Zeile 32 etwa folgendermaßen andern:
1
int tidx = 2;
// index of transparent color
2
IndexColorModel icm2 =
3
new IndexColorModel(pixBits, mapSize, Rmap, Gmap, Bmap,
tidx);
4
ip.setColorModel(icm2);
Allerdings wird die Transparenzeigenschaft derzeit in ImageJ sowohl bei
der Darstellung wie auch beim Speichern von Bildern nicht berucksich-
tigt.
Konvertierung von Farbbildern in ImageJ
Fur die Konvertierung zwischen verschiedenen Arten von Farb- und
Grauwertbildern sind in ImageJ fertige Methoden fur Bildobjekte vom
Typ
ImagePlus
und Prozessor-Objekte vom Typ
ImageProcessor
ver-
fugbar: