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 #1869 (closed enhancement: fixed)

Opened 2013-05-14T13:56:26-05:00

Last modified 2013-07-25T14:21:50-05:00

Improve Compositing of SCIFIOCellImgs

Reported by: hinerm Owned by: hinerm
Priority: major Milestone: imagej2-unscheduled
Component: SCIFIO Version:
Severity: serious Keywords: Cells
Cc: Blocked By:


Currently all compositing by the DefaultDatasetView in IJ2 is through the CompositeXYProjector in imglib2.

This compositing process, handled by the "map()" method, uses the source's RandomAccess to check each composite component's value at the target's x,y coordinates.

However, since the SCIFIOCellImg requires separation of channels, and more than just channels can be composited, there is no guarantee that each composite component's value for a given coordinate will be within the same cell. This can lead to worst-case-scenario behavior where a new cell is loaded for each component for each x,y coordinate.

Although all the cells could conceivably be in memory, the overhead for fetching them N times per position is significant.

One possible solution is to use N different RandomAccess objects, one per composite component. This will produce optimal cell loading patterns, but requires that N cells will fit into memory.

Another possible solution would be storing the individual composite values in Cell iteration order and lazily creating the composite types. Potentially, the composite calculation could be done in parallel whenever the last composite value was stored for a particular position.

Change History

comment:1 Changed 2013-07-25T14:21:50-05:00 by hinerm

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

Implemented  SourceOptimizedCompositeXYProjector which resolves this.