NOTICE! This is a static HTML version of a legacy ImageJ Trac ticket.

The ImageJ project now uses GitHub Issues for issue tracking.

Please file all new issues there.

Ticket #336 (closed task: fixed)

Opened 2011-02-11T15:43:44-06:00

Last modified 2011-09-12T10:18:31-05:00

Continue work on revision 3 of imglib-ops

Reported by: bdezonia Owned by: bdezonia
Priority: major Milestone: imagej-2.0-alpha5
Component: ImgLib2 Version:
Severity: serious Keywords:
Cc: Blocked By:
Blocking:

Description

Rev 2 of AssignOperation code is in the imglib-ops subproject of Imglib. Rev 3 is mostly complete in the test branch of the imglib-ops subproject in the example.rev3 package. This code needs enhancement to fully replace rev 2.

One thing it needs is for ComposedImageFunction to be finished. This code allows one to compose multiple subregions of images as one virtual image that one can sample. This would support the ability to combine regions of data (within one image or many) into the output image.

Another thing it needs is the definition of the domain within each function. This would allow one to reason whether an in place change can be done safely. It also would simplify the parallelization of an operation.

Finally it needs more functionality ported to it from IJ2 and reconciled with imglib scripting.

Change History

comment:1 Changed 2011-02-11T15:43:49-06:00 by bdezonia

  • Status changed from new to accepted

comment:2 Changed 2011-02-15T11:15:11-06:00 by bdezonia

By additional IJ2 functionality I mean porting the various Unary/Binary functions in ij2-common. But they can be less constrained by type considerations as we don't need to match IJ1 exactly. If the user wants exact IJ1 behavior they should send their data (converted if necessary) to IJ1.

comment:3 Changed 2011-02-15T11:50:09-06:00 by bdezonia

A few things that need to be done also

  • make things "final" where possible and test speeds and improve where possible
  • make interfaces such that plugins can easily create and run Operations
  • make a simple operation that does no condition testing and no notifications
  • make rev3 friendly for multithreading by creating copies of input functions
  • extend functions to have domains where their well defined
  • extend functions to delineate their relative input neighborhood

(these last two very useful for multithreading)

  • add more implementations of IntegralScalarFunction, UnaryOperator, BinaryOperator, etc.
  • go back to passing T's around as outputs to function.evaluate() so that complex numbers can be supported

comment:4 Changed 2011-02-17T12:06:12-06:00 by bdezonia

one more change needed:

  • ImageFunction should be able to be accessed out of bounds by initializing an out of bounds cursor. Maybe pass in factory to constructor.

comment:5 Changed 2011-02-24T14:22:53-06:00 by bdezonia

Just a note that ComposedImageFunction was completed a while ago in rev3 ops.

comment:6 Changed 2011-02-24T14:39:35-06:00 by bdezonia

In testing ComposedImageFunction I found a design issue with rev3 ops. Let's say that we want to create a 2d image that is the average of 3 other images. The 3 images represent a 3d dataset (as a COmposedImageFunction). The code for walking the output image is in 2d. So ideally we need a way to pass a 2d index to a 3d dataset and get back a subset representing the z values. then we'd average these z values. must consider best way to handle this in rev3 ops.

comment:7 Changed 2011-03-04T13:49:15-06:00 by bdezonia

Note that some changes were made to rev 2 (not 3) of ops to accommodate the creation of pure IJ2 plugins. These changes will need to make their way into rev 3 ops.

comment:8 Changed 2011-03-14T10:38:06-05:00 by bdezonia

  • Summary changed from Continue work on imglib-ops to Continue work on revision 3 of imglib-ops

comment:9 Changed 2011-03-23T13:41:14-05:00 by bdezonia

  • Milestone changed from biweekly-2011: Mar-14 to Mar-25 to biweekly-2011: Mar-28 to Apr-08

comment:10 Changed 2011-05-10T11:06:37-05:00 by bdezonia

  • Milestone changed from biweekly-2011: Apr-25 to May-06 to imagej-2.0-beta1

comment:11 Changed 2011-07-27T15:10:43-05:00 by curtis

  • Milestone changed from imagej-2.0-beta1 to imagej-2.0-alpha5

comment:12 Changed 2011-08-01T13:57:38-05:00 by bdezonia

I have spent some time on nights and weekends working on a revamp of the functional code. I have new insights into a more useful approach. Will hopefully bring to fruition soon.

comment:13 Changed 2011-08-16T20:30:48-05:00 by bdezonia

  • Status changed from accepted to closed
  • Resolution set to fixed

Committed rev 6 of imglib ops and incorporated changes into IJ2 with 4f3811104399f2349fd49490f5c298d2128fc4cc. Enhancement tickets to follow.

comment:14 Changed 2011-09-12T10:18:31-05:00 by bdezonia

Over the last few weeks many updates to architecture and numerous Real and Complex operations added.