Ticket #336 (closed task: fixed)

Opened 9 years ago

Last modified 8 years ago

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 9 years ago by bdezonia

  • Status changed from new to accepted

comment:2 Changed 9 years ago 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 9 years ago 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 9 years ago 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 9 years ago by bdezonia

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

comment:6 Changed 9 years ago 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 9 years ago 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 9 years ago by bdezonia

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

comment:9 Changed 8 years ago by bdezonia

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

comment:10 Changed 8 years ago by bdezonia

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

comment:11 Changed 8 years ago by curtis

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

comment:12 Changed 8 years ago 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 8 years ago 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 8 years ago by bdezonia

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

Note: See TracTickets for help on using tickets.