Digital Signal Processing Reference
In-Depth Information
C.7
Konvertieren von Bildern
public void run (ImageProcessor ip) {
1
int w = ip.getWidth();
2
Programm C.1
Direkter Pixel-Zugriff fur ein Bild
vom Typ
ByteProcessor
.
int h = ip.getHeight();
3
byte[] pixels = (byte[]) ip.getPixels();
4
5
6
for (int v = 0; v < h; v++) {
for (int u = 0; u < w; u++) {
7
int p = 0xFF & pixels[v * w + u];
8
p=p+1;
9
pixels[v * w + u] = (byte) (0xFF & p);
10
}
11
}
12
}
13
Falls (wie in obigem Beispiel) die Koordinatenwerte (
u, v
)fur die
Berechnung nicht benotigt werden und die Reihenfolge des Zugriffs auf
die Pixelwerte irrelevant ist, kann man naturlich auch mit nur einer
Schleife uber alle Elemente des eindimensionalen Pixel-Arrays (der Lange
w
h
) iterieren. Diese Moglichkeit wird beispielsweise in Prog. 12.1 (S.
240) fur die Iteration uber alle Pixelwerte eines Farbbilds genutzt.
ยท
C.7 Konvertieren von Bildern
C.7.1
ImageProcessor
(Klasse)
Die Klasse
ImageProcessor
stellt folgende Methoden zur Konvertierung
zwischen Prozessor-Objekten zur Verfugung, die jeweils eine
Kopie
des
bestehenden Prozessors erzeugen, der selbst unverandert bleibt. Falls der
bestehende Prozessor bereits vom gewunschten Zieltyp ist, wird nur eine
Kopie angelegt.
ImageProcessor convertToByte (boolean doScaling)
Kopiert den Inhalt des bestehenden Prozessors (
this
) in ein neues
Objekt vom Typ
ByteProcessor
.
ImageProcessor convertToShort (boolean doScaling)
Kopiert den Inhalt des bestehenden Prozessors (
this
) in ein neues
Objekt vom Typ
ShortProcessor
.
ImageProcessor convertToFloat ()
Kopiert den Inhalt des bestehenden Prozessors (
this
) in ein neues
Objekt vom Typ
FloatProcessor
.
ImageProcessor convertToRGB ()
Kopiert den Inhalt des bestehenden Prozessors (
this
) in ein neues
Objekt vom Typ
RGBProcessor
.