Ticket #1869 (closed enhancement: fixed)

Opened 6 years ago

Last modified 6 years ago

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:
Blocking:

Description

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 6 years ago by hinerm

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

Implemented  SourceOptimizedCompositeXYProjector which resolves this.

Note: See TracTickets for help on using tickets.