Hi Brad,<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">I have a general question about how to utilize ImageJ/Fiji...  Is it<br>
possible (and if so, what is the best way) to use ImageJ/Fiji as a<br>
general image processing framework?  Specifically, can it be<br>
incorporated into other Java applications?<br></blockquote>
<br>The short answer is yes, you can use Fiji as a library, but with certain limits. Unfortunately, you have encountered many of the major limitations of ImageJ 1.x.<br><br>The good news is that we are striving to address these shortcomings with
 the ImageJDev project (<a href="http://imagejdev.org/">http://imagejdev.org/</a>), with the first alpha of 
ImageJ 2.0 due on April 1, and the final release due October 1. There is
 still much to be done but large portions of the core architecture are 
in place—particularly UI-independent frameworks for plugins, tools and 
events.<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">  - a fair amount of plugins assume a UI interface (e.g. don&#39;t<br>
provide a simple method with which you can pass all the relevant<br>
parameters, instead they have a run() that pops up dialogs, etc<br></blockquote>
 <br>Fiji contains some hacks to enable headless operation in many cases, but as you point out, if a plugin makes direct use of GUI code, then it will generally not be usable headless.<br><br>To avoid this problem in ImageJ2, we have created an annotated plugin framework where inputs and output parameters are labeled and automatically harvested based on the application context (prompt user with a dialog, collect from a configuration file if run on the command line, etc.). For details, see: <a href="http://imagejdev.org/extensibility">http://imagejdev.org/extensibility</a><br>

<br>Some ImageJ1 plugins running in compatibility mode will still not be usable headless, but new IJ2 plugins will be much more flexible.<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">

  - I haven&#39;t found a clean way to reference code that&#39;s under the<br>
Java default package in code that is not in the default package.  This<br>
could be mitigated if folks would put the computational logic in a<br>
named package, and make the plugin in the default package lightweight<br>
(e.g. just a run method that calls the class in the named package)<br></blockquote>
 <br>Hmm, I am not too familiar with this issue. It may continue to be a problem with ImageJ2, unless someone knows a way around it.<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">


   - it&#39;s been hard to get seamless image I/O, i.e., I haven&#39;t been<br>
able to get a seamless I/O class - for example, getting a simple<br>
ImageReader that would do either native file formats or seamlessly<br>
link to bioformats and create the relevant ImagePlus<br></blockquote><br>We plan to add I/O extensibility to ImageJ2, as a particular subclass of plugin. This will eliminate the need for HandleExtraFileTypes, and other complicated centralized I/O logic present in ImageJ1. This work is not yet complete, but you can track our progress at: <a href="http://imagejdev.org/input-and-output">http://imagejdev.org/input-and-output</a><br>

<br>In the meantime, the LOCI plugins (<a href="http://loci.wisc.edu/bio-formats/imagej">http://loci.wisc.edu/bio-formats/imagej</a>) provide a very simple class for extracting an ImagePlus using Bio-Formats. See: <a href="http://dev.loci.wisc.edu:8080/job/Bio-Formats/javadoc/loci/plugins/BF.html">http://dev.loci.wisc.edu:8080/job/Bio-Formats/javadoc/loci/plugins/BF.html</a> -- in particular, BF.openImagePlus(String) and BF.openImagePlus(ImporterOptions).<br>

<br>HTH,<br>Curtis<br><br><div class="gmail_quote">On Fri, Mar 18, 2011 at 9:27 AM, Brad <span dir="ltr">&lt;<a href="mailto:brad.t.moore@gmail.com" target="_blank">brad.t.moore@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hey all,<br>
<br>
I have a general question about how to utilize ImageJ/Fiji...  Is it<br>
possible (and if so, what is the best way) to use ImageJ/Fiji as a<br>
general image processing framework?  Specifically, can it be<br>
incorporated into other Java applications?<br>
<br>
That might be sound like a simple question (and an easy answer), but<br>
here&#39;s what I&#39;ve tried:<br>
1.  Executing Fiji via the command-line with --headless, -eval, -batch<br>
   + I could utilize Fiji plugins that were setup to work as a macro<br>
   - overhead with calling these operations as a separate process<br>
   - working in --headless mode produced odd results for some plugins<br>
<br>
2.  Linking to various ImageJ/Fiji .jars<br>
   + could use it like a regular library<br>
   + speed<br>
   - a fair amount of plugins assume a UI interface (e.g. don&#39;t<br>
provide a simple method with which you can pass all the relevant<br>
parameters, instead they have a run() that pops up dialogs, etc<br>
   - I haven&#39;t found a clean way to reference code that&#39;s under the<br>
Java default package in code that is not in the default package.  This<br>
could be mitigated if folks would put the computational logic in a<br>
named package, and make the plugin in the default package lightweight<br>
(e.g. just a run method that calls the class in the named package)<br>
   - it&#39;s been hard to get seamless image I/O, i.e., I haven&#39;t been<br>
able to get a seamless I/O class - for example, getting a simple<br>
ImageReader that would do either native file formats or seamlessly<br>
link to bioformats and create the relevant ImagePlus<br>
<br>
I&#39;d appreciate folks&#39; input.  Is there something I should change about<br>
my basic approach...  Is there a doc/code/example I can be pointed to<br>
that successfully does this?  Intuitively, I&#39;m trying to compare<br>
ImageJ/Fiji to a library/framework like OpenCV or ITK.  Can I use it<br>
like this?<br>
<br>
Cheers,<br>
-Brad<br>
<font color="#888888"><br>
--<br>
You received this message because you are subscribed to the Google Groups &quot;Fiji-devel&quot; group.<br>
To post to this group, send email to <a href="mailto:fiji-devel@googlegroups.com" target="_blank">fiji-devel@googlegroups.com</a>.<br>
To unsubscribe from this group, send email to <a href="mailto:fiji-devel%2Bunsubscribe@googlegroups.com" target="_blank">fiji-devel+unsubscribe@googlegroups.com</a>.<br>
For more options, visit this group at <a href="http://groups.google.com/group/fiji-devel?hl=en" target="_blank">http://groups.google.com/group/fiji-devel?hl=en</a>.<br>
<br>
</font></blockquote></div><br>