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: | ||
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 2013-07-25T14:21:50-05:00 by hinerm
- Status changed from new to closed
- Resolution set to fixed
Implemented SourceOptimizedCompositeXYProjector which resolves this.