[ImageJ-devel] plugin development for ImageJ2 or ImageJ1?

Curtis Rueden ctrueden at wisc.edu
Thu Jan 8 13:57:19 CST 2015


Hi Gerrit,

> I’m a little bit confused reading ImageJ2 is still in beta.

It is confusing because "ImageJ2" consists of more than one component --
some of which are still in beta, and some of which are not [1]. In each
case, the component's version number gives a hint [2].

In a nutshell: ImageJ2 is "in production" as an end-user application which
enhances ImageJ1, but ImageJ2's data model [3] and image I/O [4] libraries
are still under heavy development and not yet production quality.

> I thought it would be worthwhile to convert it to the current ImageJ
> platform, in order to make it future proof.

As Mark said, coding against ImageJ 1.x is the most future proof for now.
The ImageJ2 data model will be a good choice once it is more mature and has
reached version 1.0.0.

> I’v seen a lot of nice ImageJ2 and ImgLib features, and promises about
> availability.

If you want to start utilizing some of the new features sooner, two useful
components in particular are out of beta:

1. ImgLib2 [5] - powerful new N-dimensional data model

There are several Fiji plugins (e.g., [6]) that use ImgLib2 together with
the ImageJ1 data model; the imglib2-ij component [7] is useful for doing
this. (The difference between ImgLib2 and ImageJ2 is: ImgLib2 provides a
powerful underlying image data model, while ImageJ2 builds rich metadata
structures on top of it.)

2. SciJava Common [8] - powerful new plugin framework

There are several cool things you can do with SciJava Common -- e.g.,
define new plugin types, or write parameterized commands (e.g., [9],
[10]) usable from various applications such as ImageJ, KNIME, OMERO and
CellProfiler.

All the code is available on GitHub [11], and all the binaries are shipped
with Fiji [12].

Regards,
Curtis

[1] http://imagej.net/ImageJ2#ImageJ2_is_more_than_just_an_application
[2] http://imagej.net/Architecture#Versioning
[3] http://imagej.net/ImageJ_Common
[4] http://imagej.net/SCIFIO
[5] http://imagej.net/ImgLib2
[6] http://fiji.sc/Stitching
[7] https://github.com/imglib/imglib2-ij
[8] http://imagej.net/SciJava_Common
[9] http://git.io/zEx--w
[10] http://git.io/FapZcw
[11] http://imagej.net/Source_code
[12] http://fiji.sc/Downloads

On Thu, Jan 8, 2015 at 8:29 AM, Mark Hiner <hiner at wisc.edu> wrote:

> Hi Gerrit,
>
> >so given the fact that ImageJ2 reached the 2.0.0 stage in june last
> year, and also since it is the default ImageJ version in Fiji
>
> The ImageJ welcome page [1] describes each of Fiji, ImageJ 1.x and ImageJ2
> in detail. But to clarify briefly, Fiji is a distribution of ImageJ - it
> includes both ImageJ 1.x, and ImageJ2 (as well as a number of plugins).
>
> >So from your message I conclude that although my customer uses Fiji, I
> better stick to ImageJ1
>
> Because Fiji ships both ImageJ 1.x and IJ2, it is capable of running
> plugins for both. Since your client can use either, for production work
> like it sounds you're doing, you should use the ImageJ 1.x API [2] due to
> its stability. The ImageJ2 team is committed to backwards compatibility
> with ImageJ 1.x [3], so your plugins should still work as ImageJ2 continues
> to develop.
>
> >Is there information available about ImageJ’s roadmap?
>
> All our development happens on GitHub [4]. In particular, the base ImageJ
> repository [5] provides a good view of issues and milestones.
>
> >As you suggested I will send this message also to Imagej-devel, sorry
> for cross-posting.
>
> No worries at all. Per the mailing list descriptions [6], both of these
> lists are perfectly appropriate for the scope of these discussions.
>
> Hope this helps. Thanks for the questions - let us know if you have any
> more!
>
> Best,
> Mark
>
> [1] http://imagej.net/Welcome
> [2] http://imagej.net/developer/api/index.html
> [3]
> http://imagej.net/Frequently_Asked_Questions#Will_ImageJ1_macros.2C_plugins_and_scripts_still_work_in_ImageJ2.3F
> [4] http://imagej.net/Git
> [5] https://github.com/imagej/imagej
> [6] http://imagej.net/Mailing_lists
>
> On Thu, Jan 8, 2015 at 7:16 AM, Polder, Gerrit <gerrit.polder at wur.nl>
> wrote:
>
>> Dear Wayne,
>>
>> I’m a little bit confused reading ImageJ2 is still in beta.
>>
>> Im not a fulltime ImageJ user, but once and a while customers ask me to
>> develop imaging software in ImageJ. Mainly I'm using Matlab and Halcon.
>> I’m spending about 4-8 weeks a year on ImageJ. My previous project was
>> about a year ago.
>> Currently I need to update some features on one of my plugins, so given
>> the fact that ImageJ2 reached the 2.0.0 stage in june last year, and also
>> since it is the default ImageJ version in Fiji, as I already said I thought
>> it would be worthwhile to convert it to the current ImageJ platform, in
>> order to make it future proof.
>>
>> So from your message I conclude that although my customer uses Fiji, I
>> better stick to ImageJ1, in order not to provide him with a buggy plugin.
>>
>> On the last two conferences I’v seen a lot of nice ImageJ2 and ImgLib
>> features, and promises about availability.
>> Is there information available about ImageJ’s roadmap?
>>
>> As you suggested I will send this message also to Imagej-devel, sorry for
>> cross-posting.
>>
>> best regards,
>> Gerrit.
>>
>> On 8 Jan 2015, at 05:50, Rasband, Wayne (NIH/NIMH) [E] <
>> rasbandw at mail.nih.gov> wrote:
>>
>> > Dear Gerrit,
>> >
>> >> On Jan 7, 2015, at 2:54 PM, Polder, Gerrit <gerrit.polder at wur.nl>
>> wrote:
>> >>
>> >> Dear Wayne,
>> >>
>> >> thanks for the prompt reply, my question was indeed not clear stated.
>> >> Yes this is a ImageJ1 plugin, but since I need to add some
>> functionality to it I thought it would be worthwhile to convert it to the
>> current ImageJ platform, in order to make it future proof.
>> >> As ImageJ2 now is the production release I decided to give it a try.
>> >
>> > ImageJ2 is not the production release. It is beta software. The two
>> options in Fiji’s Edit>Option>ImageJ2 dialog (ImageJ2 data structures and
>> SCIFIO) are disabled by default because they are buggy.
>> >
>> >> Is it true that questions related to the development of user plugins
>> should be addressed to imagej-devel?
>> >
>> > Question related to development of ImageJ2 plugins, imglib2 and SCIFIO
>> should be addressed to imagej-devel.
>> >
>> >> I’m also curious about other plugin developers, how many still develop
>> in ImageJ1, and how many switched already to ImageJ2?
>> >
>> > Most developers are still writing ImageJ plugins.
>> >
>> >> By the way I already found part of the problem. The Image I tested my
>> plugin tryout on was an old ImageJ image, instead of a new dataset ‘image’.
>> After enabling the SCIFIO library I could input an image in my plugin.
>> >> But still I think need more documentation and examples, kind of ‘guide
>> for switchers’.
>> >
>> > You should bring these issues up on the imagej-devel mailing list.
>> >
>> > Best regards,
>> >
>> > -wayne
>> >
>> >
>> >> On 7 jan. 2015, at 17:26, Rasband, Wayne (NIH/NIMH) [E] <
>> rasbandw at mail.nih.gov<mailto:rasbandw at mail.nih.gov>> wrote:
>> >>
>> >> Dear Polder,
>> >>
>> >> Your plugin is not an ImageJ2 plugin. It is an ImageJ plugin that you
>> can easily compile and run it using the Plugins>Compile and Run command.
>> Questions about ImageJ2 and mavin should be sent to the image-dev mailing
>> list.
>> >>
>> >> http://imagej.net/mailman/listinfo/imagej-devel
>> >>
>> >> Best regards,
>> >>
>> >> -wayne
>> >>
>> >>
>> >>
>> >> On Jan 7, 2015, at 10:40 AM, Polder, Gerrit <gerrit.polder at wur.nl
>> <mailto:gerrit.polder at wur.nl>> wrote:
>> >>
>> >> I succeeded in making a maven project, but I’m still struggling in
>> finding demo code and the api for writing a simple plugin.
>> >> For instance how to code a pluginfiler in imagej2?
>> >>
>> >> public class Get_blue_region implements PlugInFilter {
>> >> ImagePlus imp;
>> >> boolean DEBUG = false;
>> >>
>> >> public int setup(String arg, ImagePlus imp) {
>> >>     this.imp = imp;
>> >>     if (arg.equals("about")) {
>> >>         showAbout();
>> >>         return DONE;
>> >>     }
>> >>     return DOES_RGB;
>> >> }
>> >>
>> >> public void run(ImageProcessor ip) {
>> >>     ImagePlus calim = new ImagePlus("Blue Part", ip);
>> >>     …………….
>> >> }
>> >> }
>> >>
>> >> sorry if this is a silly question, but I got stuck in all wikis and
>> github repositories.
>> >>
>> >> Gerrit.
>> >>
>> >>
>> >> On 20 Dec 2014, at 19:11, Polder, Gerrit <gerrit.polder at wur.nl<mailto:
>> gerrit.polder at wur.nl><mailto:gerrit.polder at wur.nl>> wrote:
>> >>
>> >> thanks Mark, this is exactly where I was looking for.
>> >>
>> >> Gerrit.
>> >>
>> >> On 20 dec. 2014, at 06:00, IMAGEJ automatic digest system <
>> LISTSERV at LIST.NIH.GOV<mailto:LISTSERV at LIST.NIH.GOV><mailto:
>> LISTSERV at LIST.NIH.GOV>> wrote:
>> >>
>> >> Hi Gerrit,
>> >>
>> >> Now I like to switch to IJ2, I’m wondering whether there is an IJ2
>> example
>> >> project available.
>> >>
>> >> The ImageJ-tutorials <https://github.com/imagej/imagej-tutorials>
>> project
>> >> is the intended starting point for developers. There is also an
>> accompanying
>> >> entry <http://imagej.net/Writing_ImageJ2_plugins> in the Development
>> >> <http://imagej.net/Development> section of the ImageJ wiki.
>> >>
>> >> Thanks for the interest in ImageJ2 - let us know if you have any
>> questions
>> >> or run into problems!
>> >>
>> >> Best,
>> >> Mark
>> >>
>> >> --
>> >> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>> >>
>> >
>>
>>
>> _______________________________________________
>> ImageJ-devel mailing list
>> ImageJ-devel at imagej.net
>> http://imagej.net/mailman/listinfo/imagej-devel
>>
>
>
> _______________________________________________
> ImageJ-devel mailing list
> ImageJ-devel at imagej.net
> http://imagej.net/mailman/listinfo/imagej-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://imagej.net/pipermail/imagej-devel/attachments/20150108/6d72f745/attachment.html>


More information about the ImageJ-devel mailing list