|
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;
}
1.7.4