Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Multi-Resolution Volume Tracings (#4755)
* keep fixed zoom during td rotation to planes * refactor 3d rotation method to keep the zoom and simplify it * fix position and up vector not getting interpolated correctly * add changelog entry * Apply suggestions from code review Co-authored-by: Daniel <[email protected]> * remove zReductionFactor * backend: support anisotropic resolutions in volume bucket keys * fix 3d rotation preset * remove useless check for valid values * remove reassignment of width and height * do volume annotation in all resolutions * Update frontend/javascripts/oxalis/controller/camera_controller.js Co-authored-by: Philipp Otto <[email protected]> * made code pretty * reduce max brush size * disallow trace tool in higher resolutions * enable brushing in high again * do not block resolution loading * annotate z many slices at once when z resolution is > 1 * fixing a few tests * hopefully fixed all tests * Add info about annotating multiple slices * limit area that gets autofilled * [WIP] lazy downscaling of volume buckets * lookup-based live downsampling * [WIP] downsample volume tracings on upload * [WIP] downscale during upload * fix offsets, switch to mode * determine which mags to downsample * adapt nml unit test suite * fix backend dummy tracing * move function to get number of slices to accessor * WIP: applying flood fill to all resolutions * [WIP] track mags in volumetracing object * fix calculating error during downsampling * fix flood fill for all source resolutions * fixed flood fill for all resolutions * handle differing resolutions during volume merging + upload * add up and downsampling of LabeledVoxelsMap * add unlinkFallback route * changelog * cleanup backend code * fixed up and downsampling and added tests * added method to apply a voxel map * fixed upsampling and added regression test * add comments to sampling methods * make copylayer work in multi resolutions * while upsampling annotate mutliple slices * Add todo about refactoring labeling voxels * adjusted voxel labeling method to label in all resolutions the segmentation layer has * added some comments with todos * Update frontend/javascripts/oxalis/model/accessors/volumetracing_accessor.js * always label in all resolutions when using api; show stack-icon when multi-slice-annotating * more comments * replace old unlinkFallbackLayer with new API for that (keep old UpdateAction for backwards compatibility) * fix wrong parameter format * refactor resolution handling to deal with sparse resolutions better (WIP/1) * undo temporary new_resolutions change * continue refactoring resolution handling to deal with sparse resolutions better (WIP/2) --> brush, paint-bucket and copy-segmentation tool seem to work * fix picking segment color when being in a not-existing segmentation mag * ensure that prefetch saga, bucket picker and pull queue don't try to load buckets for not existing mags * ensure legacy getResolutions method provides dense resolution set; clean up * fix initialization and volume annotation sampling spec * fix CI * update snapshots * tune warning text * make merger mode work in higher resolutions * show a status indicator in the viewports if a layer cannot be rendered due to the zoom step * reduce tooltip rerenderings by making styles constant * fix enabled 'Render Missing Data Black' for missing mags * add issue links to todo comments * implement some feedback * Apply suggestions from code review Co-authored-by: Daniel <[email protected]> * more PR feedback * also implement getIndexOrClosestHigherIndex for ResolutionInfo and use where appropriate * return true in isVolumeTraceToolDisallowed if no volume tracing exists * fix front-end merge conflicts * reduce usages of getResolutionByIndexWithFallback and make that function correct (remove isotropic fallback in favor of failing for unclear cases * simplify is2DVoxelInsideBucket method in Bucket * Apply suggestions from code review Co-authored-by: Daniel <[email protected]> * integrate more PR feedback; resolve merge conflict in changelog; rename missing to unrenderable etc * refactor applyLabeledVoxelMapToAllMissingResolutions * further refactoring of applyLabeledVoxelMapToAllMissingResolutions * remove unused import * fix flow after upgrade * improve comment for LabeledVoxelsMap * fix uniform definion * fix getDataValue for missing resolution * Improve performance of volume annotation tools (#4848) * tmp: use LabeledVoxelsMap for brushing and TypedArray for brushing map (first measurements yield 20x better performance) * restore all of the brush functionality; create LabeledVoxelMap in current mag; further performance optimizations * clean up VoxelIterator a bit * more clean up * clean up and fix CI * further clean up * remove todo * use unzoomed centroid when updating direction * fix contour drawing in mag > 1 * fix flow * fix circle-drawing for anisotropic mags * update changelog * rename VoxelIterator to VoxelBuffer2D * optimize draw circle method by comparing squared dist with squared radius * rename variables and change comment for bx and by * remove obsolete comment * add another comment to fillCircle call * ensure that rendered volume magnification is also the mag in which is annotated - also ensure that the volume toolbar is disabled properly when the segmentation cannot be rendered for some reason * Update frontend/javascripts/oxalis/model/sagas/volumetracing_saga.js Co-authored-by: Daniel <[email protected]> * fix issues from merging master * fix upload/download * fix issues after merge * disable continuous drawing for now since its performance needs to be adapted to the multi-resolution feature * fix linting * adapt headline in import modal * change tracing to annotation * change magnification to resolution in user-facing strings and some internal ones * make resolution-warning less verbose * try to fix e.trigger is not a function * fix linting * fix bug in applyLabeledVoxelMap * fix flow * show fallback-not-included warning only when there is fallback data * fix anisotropic bucket adresses * treat empty resolution list as no resolution list * change Boolean() to != null * fix flow in model initialization * ensure volume layer is saved before reloading; fixes #4857 * format * disable copy-segmentation feature for higher mags due to performance * fix some merge-related problems * fix styling of multi-slice-icon * throw an exception if the resolution could not be looked up instead of defaulting to 0,0,0 * look up volume bucket resolution by zoom step ** 2 rather than index * fix that toolbar rerendered on every state change * improve handling of volume-is-disabled case in toolbar * replace exception by fox.failure if volume resolution lookup fails * show data type and resolutions of layer in tooltip next to layer name (therefore, the dtype tag is removed) * fix syntax error * Enforce TaskType Resolution Restrictions for Multi-Res Volume Tasks (#4891) * [WIP] enforce task type magnification settings in tasks * pass allowedMagnifications to rpc methods * pass magnifications as query string * respect resolution restrictions for volume tracings. * add option to downsample existing volume tracing * remove outdated assertion, update resolution list after downsampling * sleep 10s * remove sleep and bump dev-proxy-timeout to 5 min * fix task creation with resolution restrictions * use inclusive check * when uploading zips with differing resolution sets, fail * remove unused import * refresh snapshots (tracings contain organization name) * write header.wkw to every mag in volume download, fix anisotropic directory names * add resolution-samenss assertion in volume dnd import. fix flow types * fix restriction passing in initial data * Add button to trigger downsampling of volume annotation. The reload button next to the active-resolution-indicator only appears for explorative annotations with volume data. It opens a modal which explains the action and its consequences. While the operation is running, the modal blocks further usages of webKnossos. After the operation has completed, the complete page is reloaded. * fix parameter passing in duplicate rpc * avoid undefined behavior of bucket iterator by checking hasNext. do not relabel when “merging” only one volume * make tasktype resolution restrictions immutable. sort resolution list * update migration guide * remove debug output * improve initiate-volume-downsampling modal and move its button to the layer settings * show toast when mag-restriction is violated instead of prohibiting the zoom change in the first place * don't allow editing mag-restrictions in already created tasktype * remove some more debug output, unify variable names * forbid creating new nodes or using volume tools when the current mag was forbidden by the task type * clean up * Update MIGRATIONS.unreleased.md Co-authored-by: Philipp Otto <[email protected]> * fix styling of button-link * use ListBuffer instead of HashSet as per pr feedback * integrate some feedback * Apply suggestions from code review Co-authored-by: Daniel <[email protected]> * remove unnecessary SET_TOOL dependence * do map ids if initialLargestSegmentId != 0 Co-authored-by: Philipp Otto <[email protected]> Co-authored-by: Philipp Otto <[email protected]> Co-authored-by: Daniel <[email protected]> Co-authored-by: Michael Büßemeyer <[email protected]> Co-authored-by: MichaelBuessemeyer <[email protected]> Co-authored-by: Daniel <[email protected]> Co-authored-by: Philipp Otto <[email protected]> Co-authored-by: Youri K <[email protected]> Co-authored-by: Philipp Otto <[email protected]>
- Loading branch information