ThreeB 1.1
|
Classes | |
class | ClassicGlow |
Plugin implementing the classic glow/hot LUT which seems to be missing from ImageJ. More... | |
class | LoadTestData |
Plugin class to load the standard test data from the JAR file. More... | |
class | JNIUserInterface |
3B User interface for the Java plugin. More... | |
class | SPair |
Utility class to hold a pair of strings. More... | |
class | Util |
Utility calss to hold a number of handy static functions. More... | |
class | three_B |
ImageJ plugin class. More... | |
class | AdvancedDialog |
Control panel which basically presents the .cfg file in a large edit box along with additional necessary things (frame range and pixel size). More... | |
class | ThreeBDialog |
Dialog box for starting 3B The dialog highlights bad things in red. More... | |
class | Spot |
Basic spot class, simply contains coordinates. More... | |
class | SomethingChanges |
Listener class which triggers a complete redraw. More... | |
class | FloatSliderWithBox |
This class makes a floating point slider bar with an edit box next to it for more precision. More... | |
class | CloseButtonListener |
Close button issues a window close event. More... | |
class | StopButtonListener |
Stop 3B thread. More... | |
class | ExportButtonListener |
Listener for the export button. More... | |
class | EControlPanel |
Control panel for running 3B plugin and providing interactive update. More... | |
class | ThreeBRunner |
This class deals with running the actual 3B code It should be run in a separate thread It will make calls back to a viewer, and accepts termination calls as well. More... | |
class | ThreeBHelp |
3B plugin cclass to bring up a basic help window. More... | |
class | ThreeBLoader |
Plugin class to load up an old 3B run. More... | |
Functions | |
string | get_string (JNIEnv *env, jstring js) |
Image< jbyte > | get_local_copy_of_image (JNIEnv *env, jbyteArray data, int rows, int cols) |
Image< float > | get_local_copy_of_image (JNIEnv *env, jfloatArray data, int rows, int cols) |
JNIEXPORT void JNICALL | Java_ThreeBRunner_call (JNIEnv *env, jobject jthis, jstring cfg, jobjectArray images, jbyteArray mask_data, jint n_images, jint rows, jint cols, jstring file) |
static SPair | Util::getFileName (String t) |
string get_string | ( | JNIEnv * | env, |
jstring | js | ||
) |
Get a local C++ copy of a java string.
Definition at line 122 of file multispot5_jni.cc.
Referenced by Java_ThreeBRunner_call().
{ const char* str; //Covert the config into a string str = env->GetStringUTFChars(js, NULL); string stdstring(str); env->ReleaseStringUTFChars(js, str); return stdstring; }
Image<jbyte> get_local_copy_of_image | ( | JNIEnv * | env, |
jbyteArray | data, | ||
int | rows, | ||
int | cols | ||
) |
Get a local C++ copy of an image from a jbyteArray coming from the guts of ImageJ.
Definition at line 138 of file multispot5_jni.cc.
Referenced by Java_ThreeBRunner_call().
{ //This takes a copy of the pixels (perhaps) jbyte* pix = env->GetByteArrayElements(data, NULL); BasicImage<jbyte> pix_im(pix, ImageRef(cols, rows)); Image<jbyte> im; im.copy_from(pix_im); //This frees the pixels if copied, or releases a reference env->ReleaseByteArrayElements(data,pix, JNI_ABORT); return im; }
Image<float> get_local_copy_of_image | ( | JNIEnv * | env, |
jfloatArray | data, | ||
int | rows, | ||
int | cols | ||
) |
Get a local C++ copy of an image from a jfloatArray coming from the guts of ImageJ.
Definition at line 156 of file multispot5_jni.cc.
{ //This takes a copy of the pixels (perhaps) float* pix = env->GetFloatArrayElements(data, NULL); BasicImage<float> pix_im(pix, ImageRef(cols, rows)); Image<float> im; im.copy_from(pix_im); //This frees the pixels if copied, or releases a reference env->ReleaseFloatArrayElements(data,pix, JNI_ABORT); return im; }
JNIEXPORT void JNICALL Java_ThreeBRunner_call | ( | JNIEnv * | env, |
jobject | jthis, | ||
jstring | cfg, | ||
jobjectArray | images, | ||
jbyteArray | mask_data, | ||
jint | n_images, | ||
jint | rows, | ||
jint | cols, | ||
jstring | file | ||
) |
Run the 3B code.
Definition at line 176 of file multispot5_jni.cc.
References JNIUserInterface::fatal(), get_local_copy_of_image(), get_string(), null_graphics(), and JNIUserInterface::send_message().
{ istringstream config(get_string(env, cfg)); GUI.ParseStream(config); JNIUserInterface ui(env, jthis); ui.send_message("Initializing..."); string filename = get_string(env, file); //Attmpt to open the file ofstream save_spots; save_spots.open(filename.c_str()); int err = errno; if(!save_spots.good()) { ui.fatal("failed to open " + filename + ": " + strerror(err)); return; } vector<ImageRef> maskir; Image<double> maskd; { Image<jbyte> mask = get_local_copy_of_image(env, mask_data, rows, cols); maskd = convert_image(mask); for(ImageRef p(-1, 0); p.next(mask.size()); ) if(mask[p]) maskir.push_back(p); } vector<Image<float> > ims; for(int i=0; i < n_images; i++) { jfloatArray f = static_cast<jfloatArray>(env->GetObjectArrayElement(images, i)); ims.push_back(preprocess_image(get_local_copy_of_image(env, f, rows, cols))); env->DeleteLocalRef(f); } double mean, variance; tie(mean, variance) = mean_and_variance(ims); for(unsigned int i=0; i < ims.size(); i++) transform(ims[i].begin(), ims[i].end(), ims[i].begin(), bind1st(multiplies<double>(), 1/ sqrt(variance))); tie(mean, variance) = mean_and_variance(ims); //A sanity check. cerr << "Rescaled:\n"; cerr << "mean = " << mean << endl; cerr << "std = " << sqrt(variance) << endl; cerr << "Version 1.1" << endl; auto_ptr<FitSpotsGraphics> gr = null_graphics(); place_and_fit_spots(ims, maskir, maskd, save_spots, *gr, ui); }
static SPair Util::getFileName | ( | String | t | ) | [inline, static, package] |
The a file name for saving and complete path using ImageJ's file open dialog.
Kep re-querying user if the file will be overwritten. Windows already provides the query built in.
t | Initial file name |
Definition at line 80 of file three_B.java.
References SPair::a, and SPair::b.
Referenced by three_B::run().
{ //Get a filename to save as, with appropriate warnings for //overwriting files. String fname, fullname; while(true) { SaveDialog save = new SaveDialog("Save 3B output", t, ".txt"); fname = save.getFileName(); fullname = save.getDirectory() + File.separator + fname; if(fname == null) break; File test = new File(fullname); //Windows' open dialog seems to do overwrite confirmation automatically, //so there is no need to do it here. if(!ij.IJ.isWindows() && test.exists()) { GenericDialog g = new GenericDialog("Overwrite file?"); g.addMessage("The file \"" + fname + "\" already exists. Continue and overwrite?"); g.enableYesNoCancel("Yes", "No"); g.showDialog(); if(g.wasOKed()) break; else if(g.wasCanceled()) { fname = null; break; } } else break; } SPair r = new SPair(); r.a = fname; r.b = fullname; return r; }