Hallo hat jemand Erfahrung mit Plugins für ImageJ?
Ich muss eine Punktoperation programmieren, das später auf ein Graustufenbild(8Bit Bild) angewendet wird.
// Benoetigte Klassen werden importiert
import ij.*;
import ij.plugin.filter.PlugInFilter;
import ij.process.*;
import java.awt.*;
import ij.gui.*;
// Um Bildpunkte lesen und schreiben zu
// koennen muss das Plugin PlugInFilter
// implementieren.
public class Praktikumeins implements PlugInFilter {
// Die Methode setup wird zu Beginn
// aufgerufen, um die Anwendbarkeit
// des Plugins auf das jeweils
// ausgewaehlte Bild zu ueberpruefen.
public int setup(String arg, ImagePlus imp) {
// Bei Uebergabe von "about" wird der
// Text in Methode showAbout ausgegeben
// und die Methode run nicht aufgerufen.
if (arg.equals("about")) {showAbout(); return DONE;}
// dieses Plugins ist nur auf 8 Bit
// Graustufenbilder anwendbar, daher:
return DOES_8G;
}
// Die Methode run verarbeitet
// das ausgewaehlte Bild.
public void run(ImageProcessor ip) {
// Bildpixel kopieren
//byte[] pixels = (byte[])ip.getPixels();
// Bildbreite laden
int width = ip.getWidth();
// Angaben zum Bildbereich (ROI) laden.
Rectangle r = ip.getRoi();
//int pixelindex;
int wert;
int Eingabewert =1;
GenericDialog gd = new GenericDialog("Was wird eingegeben?");
gd.addNumericField("Eingabe 0...127:", Eingabewert,0 ,3,"");
gd.showDialog();
if(gd.wasCanceled())return;
Eingabewert = (int)gd.getNextNumber();
// Schleifen ueber alle Bildpunkte des ROI
int x1 = 127 - Eingabewert ;
int y1 = 127 + Eingabewert;
for (int y=r.y; y<(r.y+r.height); y++) {
if (y<=127){
wert=(y1/x1)*x1;}
else{
wert=((255 - y1)/(255-x1))* (x1-(255-x1))+(y1);
}
for (int x=r.x; x<(r.x+r.width); x++) {
if (y<=127){
wert=(y1/x1)*x1;}
else{
wert=((255 - y1)/(255-x1))* (x1-(255-x1))+(y1);
}
}
}
}
}
das ist was ist bisher geschrieben habe, aber es funktioniert leider nicht
Ich muss eine Punktoperation programmieren, das später auf ein Graustufenbild(8Bit Bild) angewendet wird.
// Benoetigte Klassen werden importiert
import ij.*;
import ij.plugin.filter.PlugInFilter;
import ij.process.*;
import java.awt.*;
import ij.gui.*;
// Um Bildpunkte lesen und schreiben zu
// koennen muss das Plugin PlugInFilter
// implementieren.
public class Praktikumeins implements PlugInFilter {
// Die Methode setup wird zu Beginn
// aufgerufen, um die Anwendbarkeit
// des Plugins auf das jeweils
// ausgewaehlte Bild zu ueberpruefen.
public int setup(String arg, ImagePlus imp) {
// Bei Uebergabe von "about" wird der
// Text in Methode showAbout ausgegeben
// und die Methode run nicht aufgerufen.
if (arg.equals("about")) {showAbout(); return DONE;}
// dieses Plugins ist nur auf 8 Bit
// Graustufenbilder anwendbar, daher:
return DOES_8G;
}
// Die Methode run verarbeitet
// das ausgewaehlte Bild.
public void run(ImageProcessor ip) {
// Bildpixel kopieren
//byte[] pixels = (byte[])ip.getPixels();
// Bildbreite laden
int width = ip.getWidth();
// Angaben zum Bildbereich (ROI) laden.
Rectangle r = ip.getRoi();
//int pixelindex;
int wert;
int Eingabewert =1;
GenericDialog gd = new GenericDialog("Was wird eingegeben?");
gd.addNumericField("Eingabe 0...127:", Eingabewert,0 ,3,"");
gd.showDialog();
if(gd.wasCanceled())return;
Eingabewert = (int)gd.getNextNumber();
// Schleifen ueber alle Bildpunkte des ROI
int x1 = 127 - Eingabewert ;
int y1 = 127 + Eingabewert;
for (int y=r.y; y<(r.y+r.height); y++) {
if (y<=127){
wert=(y1/x1)*x1;}
else{
wert=((255 - y1)/(255-x1))* (x1-(255-x1))+(y1);
}
for (int x=r.x; x<(r.x+r.width); x++) {
if (y<=127){
wert=(y1/x1)*x1;}
else{
wert=((255 - y1)/(255-x1))* (x1-(255-x1))+(y1);
}
}
}
}
}
das ist was ist bisher geschrieben habe, aber es funktioniert leider nicht