Skip to content

Add en face slab viewing - #978

Merged
PaulHax merged 5 commits into
Kitware:mainfrom
PaulHax:oct-en-face
Nov 2, 2026
Merged

PaulHax merged 5 commits into
Kitware:mainfrom
PaulHax:oct-en-face

Conversation

@PaulHax

@PaulHax PaulHax commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Add an En face view for grayscale 3D volumes, including native retinal OCT. Mean, maximum, and sum projections use an adjustable slab along any source-grid axis, with independent contrast, pan, zoom, crosshairs, and reference lines. Changing the projection refits automatic contrast, and the view configuration is saved with the session.

Support native OCT spatial metadata and retain valid DICOM pixel spacing and multiframe spacing. The shared slab representation uses vtk.js reslice rendering with corrections for slab sampling. See the view implementation and mapper patch.

Includes the uint8 retinal sample with unchanged uint8 companion labels loaded by segmentation filename matching.

@netlify

netlify Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for volview-dev ready!

Name Link
🔨 Latest commit 89902e8
🔍 Latest deploy log https://app.netlify.com/projects/volview-dev/deploys/6ae7d27816c4faae7bad625c
😎 Deploy Preview https://deploy-preview-978--volview-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PaulHax
PaulHax marked this pull request as draft October 19, 2026 18:53
@PaulHax PaulHax changed the title Add retinal OCT en face viewing and thickness highlighting Add Enface slab viewing and occupied-depth highlighting Oct 27, 2026
Comment thread docs/configuration_file.md Resolved
Comment thread docs/configuration_file.md Resolved
@PaulHax
PaulHax force-pushed the oct-en-face branch 2 times, most recently from 6362f0f to 59b60f2 Compare October 29, 2026 00:34
@PaulHax PaulHax changed the title Add Enface slab viewing and occupied-depth highlighting Add Enface slab viewing Oct 29, 2026
@PaulHax
PaulHax changed the base branch from main to segmentation-filename-matching October 29, 2026 00:35
@PaulHax
PaulHax force-pushed the segmentation-filename-matching branch from 89ea736 to 492e025 Compare October 29, 2026 00:53
@PaulHax PaulHax changed the title Add Enface slab viewing Add en face slab viewing Oct 29, 2026
@PaulHax
PaulHax changed the base branch from segmentation-filename-matching to main October 29, 2026 02:29
@PaulHax
PaulHax marked this pull request as ready for review October 29, 2026 14:04
@PaulHax
PaulHax force-pushed the oct-en-face branch 5 times, most recently from db74f7f to 990a169 Compare November 1, 2026 16:21
Read the projection axis from the en face store when moving the
crosshairs instead of threading it through the widget props, and give
the toolbar one loop for both tool groups and tool availability one en
face branch.

Drop code that repeats existing behavior: the constant opacity function
vtk.js already applies, an OCT coordinate comparison that vtk.js
areEquals provides, an unreachable Sum preset guard, unused returns and
fields, and needless casts and locals. Share the auto window range type
and the slab method list between the windowing store, the slab
estimator, the session schema and the controls.

Re-encode the retinal sample thumbnail as a 128 px JPEG like the other
sample thumbnails.
Replace about thirty hand-written sequences that open the En face
controls, expand Projection and set the slab with shared helpers, and
reuse the page object menu helpers, the tooltip lookup and one tool
button selector instead of local copies.

Share En face view activation and OCT loading between the unit specs,
reuse the image cache cleanup helper, collapse the OCT geometry
rejection cases into one table, and replace an assertion that could not
fail. The fixture builders now share one DICOM string overwrite, one
long-form VR list and one VTI writer.
Only VTI can describe a grid whose voxel indices start at an offset,
and en face does not need to support one. Drop the code that handled
it: the extent offset in the vtk.js reslice mapper patch, extent-based
2D slice ranges, the extent minimum in the slab plane and reference
line geometry, and the crosshairs refusal for offset grids, along with
their tests.
@PaulHax
PaulHax merged commit a08aabf into Kitware:main Nov 2, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant