Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die...

20
ImageJ ¨ Uberblick Bildverarbeitung mit ImageJ Dr. Birgit M¨ oller Institut f ¨ ur Informatik Martin-Luther-Universit ¨ at Halle-Wittenberg Einf ¨ uhrung in die Bildverarbeitung, SS 2008 B. M ¨ oller, ImageJ 1

Transcript of Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die...

Page 1: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Uberblick

Bildverarbeitung mit ImageJ

Dr. Birgit MollerInstitut fur Informatik

Martin-Luther-Universitat Halle-Wittenberg

Einfuhrung in die Bildverarbeitung, SS 2008

B. Moller, ImageJ 1

Page 2: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Uberblick

Uberblick

1 Die Entwicklungsumgebung

2 Das Plugin-Konzept

3 Die Programmierschnittstelle

4 Weitere Informationen

B. Moller, ImageJ 2

Page 3: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

ImageJ-Resourcen

Installation im Linux-Pool:

/lehre/ImageJ

Installation im Windows-Pool:

S:\ImageJ

Starten mit:

java -cp /lehre/ImageJ/ij.jar ij.ImageJ

bzw.

java -cp S:\ImageJ\ij.jar ij.ImageJ

B. Moller, ImageJ 3

Page 4: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Das Plugin-Konzept

Grundidee: Bilder sind Objekte,die mit Operatoren bearbeitet werden

jeder Operator wird durch ein Plugin realisiert

eine Hintereinander-Ausfuhrung mehrerer Pluginsergibt komplexere Verarbeitungsstrange

Automatisierung durch Macro-Sprache(fur uns erstmal uninteressant)

B. Moller, ImageJ 4

Page 5: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Die Plugin-Schnittstelle

jedes Plugin wird durch eine eigeneJava-Klasse realisiert

die Klasse leitet sich von vorgegebenenImageJ-Interfaces ab

Plugins werden automatisch beim Start von ImageJgeladen, wenn. . .

ihr (Klassen-) Name einen Unterstrich (” ”) beinhaltet

sie in einem Verzeichnis namens ”plugins” liegen

B. Moller, ImageJ 5

Page 6: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Realisierung eigener Plugins

1 Java-Klasse ”my plugin.java” schreiben(Datei- und Klassenname mussen identisch sein!)

2 Java-Klasse compilieren:javac -cp <ImageJ-Installdir>/ij.jar my plugin.java

3 die .class-Datei in einen Ordner plugins kopieren,z.B. /home/moeller/plugins

4 ImageJ aufrufen:java -Dplugins.dir=/home/moeller/

-cp <ImageJ-Installdir>/ij.jar ij.ImageJ

5 my plugin im Menu ’Plugins’ aufrufen

B. Moller, ImageJ 6

Page 7: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Plugin-Interfaces

PlugIn:Basis-Plugin, das keinerlei Eingaben erwartet

PlugInFilter:Plugin, das ein Bild als Eingabe bekommt

PlugInFrame:Plugin, das in einem eigenen Fenster selbstandig lauft

⇒ wir werden von PlugInFilter ableiten

B. Moller, ImageJ 7

Page 8: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Plugin-Interfaces

PlugIn:Basis-Plugin, das keinerlei Eingaben erwartet

PlugInFilter:Plugin, das ein Bild als Eingabe bekommt

PlugInFrame:Plugin, das in einem eigenen Fenster selbstandig lauft

⇒ wir werden von PlugInFilter ableiten

B. Moller, ImageJ 7

Page 9: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Schnittstelle von PlugInFilter

Das Interface definiert nur zwei Funktionen:

int setup(java.lang.String arg,ImagePlus imp):

Setup-Routine, die (1x) beim Laden aufgerufen wird

void run(ImageProcessor ip):Hauptroutine, in der das Bild verarbeitet wird,und die mehrfach ausgefuhrt werden kann

B. Moller, ImageJ 8

Page 10: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Setup

int setup(java.lang.String arg, ImagePlus imp):

Initialisierung von Klassenvariablen, etc.

Ruckgabewert spezifiziert Eigenschaften des Plugins:

DOES 8G - 8-bit GrauwertbilderDOES ALL - alle BildtypenDOES RGB - nur RGB-FarbbilderDOES ALL+DOES RGB

. . .

Beispiel-Implementierung:public int setup(String arg,ImagePlus imp) {

return DOES RGB+DOES ALL;

}

B. Moller, ImageJ 9

Page 11: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Bildklassen

ImageJ kennt funf Typen von Bildern:

8-bit Grauwertbilder (GRAY8)

8-bit Farbbilder mit Lookup-Tabelle (COLOR 256)

16-bit Grauwertbilder (GRAY16)

RGB-Bilder mit 256 Werten pro Kanal (COLOR RGB)

32-bit Grauwertbilder (GRAY32)

⇒ Wir werden hauptsachlich mit GRAY8 arbeiten.

B. Moller, ImageJ 10

Page 12: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Bildklassen

ImageJ kennt funf Typen von Bildern:

8-bit Grauwertbilder (GRAY8)

8-bit Farbbilder mit Lookup-Tabelle (COLOR 256)

16-bit Grauwertbilder (GRAY16)

RGB-Bilder mit 256 Werten pro Kanal (COLOR RGB)

32-bit Grauwertbilder (GRAY32)

⇒ Wir werden hauptsachlich mit GRAY8 arbeiten.

B. Moller, ImageJ 10

Page 13: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Bildklassen (2)

Basis-Bildklasse: ImagePlus

zu jedem Bild gehort außerdem ein ImageProcessor

⇒ Achtung! Unschones Software-Design!

normalerweise wird mit ImageProcessor gearbeitet

Zugriff auf den ImageProcessor:

ImagePlus myImg;

ImageProcessor myProcessor=myImg.getProcessor();

B. Moller, ImageJ 11

Page 14: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Bildklassen (3)

neue Bilder erzeugen:ImagePlus img=NewImage.createRGBImage("Title", w, h, 1,

NewImage.FILL BLACK);

wichtige Funktionen von ImageProcessor:

int getWidth(), int getHeight()

int getPixel(int x, int y),void putPixel(int x, int y, int value)

void invert(), void smooth(),void add(int value)

. . . und noch viele mehr (siehe Tutorial)

B. Moller, ImageJ 12

Page 15: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Pixelzugriffe

a) uber Zugriffsfunktionen:int getPixel(x, y)

int [] getPixel(x, y, null)

void putPixel(x, y, value)

b) direkte Bearbeitung des Pixel-Arrays:<type> [] getPixels()

Typ des Arrays bei b) abhangig vom Bildtyp

Grauwertbilder basieren auf byte-Arrays⇒ Wertebereich von byte in Java -127 bis 128

Umwandlung:int pix= pixels[i] & 0xff;pixels[i] = (byte) pix;

B. Moller, ImageJ 13

Page 16: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Pixelzugriffe

a) uber Zugriffsfunktionen:int getPixel(x, y)

int [] getPixel(x, y, null)

void putPixel(x, y, value)

b) direkte Bearbeitung des Pixel-Arrays:<type> [] getPixels()

Typ des Arrays bei b) abhangig vom Bildtyp

Grauwertbilder basieren auf byte-Arrays⇒ Wertebereich von byte in Java -127 bis 128

Umwandlung:int pix= pixels[i] & 0xff;pixels[i] = (byte) pix;

B. Moller, ImageJ 13

Page 17: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Pixelzugriffe (2)

die Arrays sind eindimensional,zeilenweise aneinandergehangt. . .

int [] pixels= img.getPixels();

for (int y= 0; y< img.getHeight(); ++y)

for (int x= 0; x< img.getWidth(); ++x)

int pos= y*img.getWidth() + x;int val= pixels[pos] & 0xff;...

pixel[pos]= (byte) neuerWert;

B. Moller, ImageJ 14

Page 18: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Pixelzugriffe (3)

Farbbilder liefern 1D int-Arrays zuruck

ein int kodiert jeweils alle Farbkanale:

int red= (int)(pixels[i] & 0xff0000) >> 16;

int green= (int)(pixels[i] & 0x00ff00) >> 8;

int blue= (int)(pixels[i] & 0x0000ff);

...pixels[i]= ((red & 0xff)<<16) +

((green & 0xff)<<8) +

(blue & 0xff);

B. Moller, ImageJ 15

Page 19: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Ausgaben

ImageJ kapselt die Kommandozeile

Fehlermeldungen:

IJ.error("Ein Fehler ist aufgetreten!");

Nachrichtenfenster:

IJ.showMessage("Das Ergebnis ist 42!");

B. Moller, ImageJ 16

Page 20: Bildverarbeitung mit ImageJ - informatik.uni-halle.de · ImageJ Uberblick¨ Uberblick¨ 1 Die Entwicklungsumgebung 2 Das Plugin-Konzept 3 Die Programmierschnittstelle 4 Weitere Informationen

ImageJ

Umgebung

Plugins

Klassen

Doku

Weitere Dokumentation:

ImageJ-Homepage:http://rsb.info.nih.gov/ij/

ImageJ Documentation Portal:http://imagejdocu.tudor.lu/

ImageJ-Tutorial - siehe Homepage zur Vorlesung:http://www2.informatik.uni-halle.de/agprbio/AG/Lehre/EBV_SS08/infos.html

B. Moller, ImageJ 17