Label CT and MRI scans in linked 3D views.

The 3D workspace opens CT and MRI scans in the browser, with three linked views, brush, contour and threshold tools, and measurements at the scanner's spacing.

Real industrial CT, slices 300 to 363, with its published instance labels in white; the box around instance 138 is derived from its label. Gruber et al., Fraunhofer EZRT, CC BY 4.0 (opens in a new tab), modified: windowed, stacked and outlined by Nitsor. Sources

Follow the structure across linked views.

Brush, trace and refine labels across three linked views. Submitting labels saves a revision that records who submitted them and the class of each label.

Me 163 · subvolume V5512 × 512 × 512 voxels
169 × 169 × 307 mm0.33 × 0.33 × 0.6 mm
A real industrial CT volume of an airframe section, cut open at axial slice 300 of 512, with the scanner's own slice on the cut face.The same cut with the dataset's published instance masks colouring each part and the slice.The whole volume coloured by its published instance masks, one colour per labelled part.
Real scan

Real industrial CT, Gruber et al., Fraunhofer EZRT, CC BY 4.0 (opens in a new tab), modified: windowed and rendered by Nitsor.

  1. The scan

    Inspect the scan beneath each label.

    This scan has 512 axial slices, with 0.33 mm pixels and 0.6 mm spacing. The cut face shows the scan beneath the labels.

  2. The labels

    169 parts, each with its own mask.

    The colours are the dataset's published instance masks. In Nitsor, a person draws a label or a model proposes one, and the record says which.

    The same cut with the dataset's published instance masks colouring each part and the slice.
  3. The record

    A part beside its review record.

    The pressure bottle is instance 138. The record shows a model proposal, a reviewer's acceptance and a saved revision.

    The whole volume coloured by its published instance masks, one colour per labelled part.

    Instance 138, pressure bottle

    Proposed
    sam-2.1, on its own branch
    Accepted
    R. Diaz, reviewer, version 4be1c09c
    Commit
    7f3ac91e, parent 19c0a2b4

    Published part and mask.

Volumetric editor

Inspect CT and MRI in linked views.

Draw in one view while two linked views follow the same point. Start on a slice as soon as it has loaded.

The Nitsor editor on a chest CT: the axial slice counts up while a position line moves up the coronal plane, the linked position meets a blue nodule label, Oblique then turns the two linked planes 20 degrees about it, and the coronal plane cuts the nodule at an angle.
What each frame shows
  1. Scroll the axial plane and the coronal position line follows
  2. The linked position sits on the nodule
  3. Oblique turns the linked planes around it
  4. The coronal plane now cuts the nodule at an angle

Real chest CT: Armato et al., "Data From LIDC-IDRI", TCIA, CC BY 3.0 (opens in a new tab), modified: cropped. Label outline from the LIDC readers' published annotations.

  • Views fill in as slices arrive.

    The slice you open is fetched first, for DICOM and VGStudio alike. The two reference views paint from the slices already loaded, marked Partial, and sharpen as the rest load. A part with no slice loaded is hatched as not loaded, never drawn as data.

  • Medical CT and MRI: a broken series is flagged when you register it.

    Uncompressed DICOM series are checked for geometry, slice order and duplicate instances when you register them. Each problem found carries a named code.

  • Industrial CT: one byte range per slice.

    A VGStudio .vol is read slice by slice, each slice as its own byte range, straight from your storage through a short-lived signed link.

    How slices are read

Formats

Open in the viewer and editor

  • DICOM Part 10 (uncompressed)CT and MRI series
  • VGStudio .vgi/.volIndustrial CT volumes

Register as raw acquisition data

  • MRDISMRMRD magnetic-resonance acquisition data
  • TIFF projection stacksCT projections that come with a Nikon .xtekct descriptor

Other industrial CT vendor formats are recognised by name but do not open. Check your scan format

Geometry kinds

Regions, boxes and points.

The editor draws masks, 3D boxes and landmarks on the volume, each with its class. These are real scans with the labels their authors published.

An axial slice of a real industrial CT scan: a bottle wall, a frame, a stringer and a beam, each outlined in white with its instance number.
Masks, one per instanceThe published instance masks 138, 139, 146 and 148. Me 163 V5, Gruber et al., Fraunhofer EZRT, CC BY 4.0 (opens in a new tab), modified: cropped and outlined by Nitsor.
The upper teeth of a real dental cone-beam CT seen from above; white boxes mark the gaps where teeth are missing, labelled maxillary anterior and maxillary posterior.
3D boxes, each with a classThe experts' 3D boxes, seen from above: two maxillary anterior, one maxillary posterior. Dental CBCT case K01 of Science Data Bank 26465: Feng, Li, Gu, Wang and Yu, Science Data Bank, CC BY 4.0 (opens in a new tab), modified: a projection through the upper jaw, cropped.
A real femur CT shown as a projection, with white crosses at the centre of the femoral head and the centre of the knee.
Landmarks, placed in 3DThe published femoral head centre and knee centre in white; grey marks the dataset's reference-frame points. HFValid v3, Pat001: Aldieri et al., University of Bologna, CC BY 4.0 (opens in a new tab), modified: a coronal projection.
A close-up of a lung nodule on a chest CT slice in the Nitsor editor: a blue Brush mask fills the nodule, then on the next slice a blue Contour outline closes around it, and both drawings appear as labels in the rail.
What each frame shows
  1. Brush paints a mask on this slice
  2. On the next slice, Contour draws a closed outline
  3. Each drawing is a label in the rail

Real chest CT: Armato et al., "Data From LIDC-IDRI", TCIA, CC BY 3.0 (opens in a new tab), modified: cropped. Outlines follow the LIDC readers' published annotations.

Draw a mask with Brush or Contour.

Brush paints a mask on a slice. On the next slice, Contour draws a closed outline. Each drawing is a label in the rail.

A close-up of a lung nodule on a chest CT slice in the Nitsor editor: a blue dotted box is drawn around it and holds it from slice 73 to 79, the linked coronal and sagittal views show the box in section, and the rail lists the box as a label spanning slices 73 to 79.
What each frame shows
  1. Box 3D draws a box that spans several slices
  2. The box holds the nodule from slice 73 to 79
  3. The linked views show the box in section
  4. Its label in the rail spans slices 73 to 79

Real chest CT: Armato et al., "Data From LIDC-IDRI", TCIA, CC BY 3.0 (opens in a new tab), modified: cropped. The box spans the slices the LIDC readers' annotation covers.

Draw a box that spans slices.

Box 3D draws one box across several slices. The linked views show the box in section, and its label in the rail lists the slices it spans.

The Nitsor editor's command bar open beside a chest CT, narrowed by the letters nod to three categories; after Enter, the Nodule category is selected, its Brush, Contour and Threshold tools appear in the header, and its hint shows on the scan's bottom edge.
What each frame shows
  1. Open the command bar
  2. Typing narrows it to matching categories
  3. Enter selects the category

Real chest CT: Armato et al., "Data From LIDC-IDRI", TCIA, CC BY 3.0 (opens in a new tab), modified: cropped.

Choose a category from the command bar.

Open the command bar and type to narrow it to matching categories. Enter selects the category, and its tools appear in the header.

The Nitsor editor on a chest CT: the Nodule centre point category is selected in the label rail, a cyan point is placed on a nodule, and a line dragged across the nodule gives a length that the editor shows as a temporary measurement, not recorded.
What each frame shows
  1. Choose a point category
  2. Click the nodule to place a landmark
  3. Drag across the nodule to measure it
  4. The editor shows the length

Real chest CT: Armato et al., "Data From LIDC-IDRI", TCIA, CC BY 3.0 (opens in a new tab), modified: cropped.

Place a landmark, then measure across it.

Choose a point category and click the nodule to place a landmark. Drag across the nodule to measure it, and the editor shows the length.

The Nitsor editor on a real industrial CT scan: its label list of the dataset's published masks, each with its size in voxels; on a phone, the canvas where three of those masks meet.

The Nitsor editor showing published labels on a Fraunhofer V5 scan (Gruber et al., CC BY 4.0 (opens in a new tab), modified: loaded into a sample project). A detail of one screenshot: the label list, or on a phone the canvas where masks 139, 146 and 148 meet. The masks are the dataset's own; the box is derived from label 138. The editor is the product's own (nitsor-app 4a10817da, on main), run against its local test backend with the published labels and our recorded run loaded as sample data.

The editor, on a real scan.

Published masks loaded into the editor, each listed under its class with its size in voxels.

In the label list

Instance 138
published, 293,938 voxels, 1 proposed
Instance 139
published, 116,763 voxels
Instance 146
published, 108,826 voxels
138 box
derived from the published label

As the label list in the screenshot shows them.

Axial slice 192 of 512 through a real industrial CT volume of an airframe section: thin bright skin panels, frames and small fasteners on a dark ground.

Static sample: slice 192 with published masks. Enable JavaScript to explore the slices.

Real scan

Real industrial CT, Gruber et al., Fraunhofer EZRT, CC BY 4.0 (opens in a new tab), modified: windowed by Nitsor.

Measure with the scan's recorded spacing.

Nitsor keeps the voxel spacing recorded in the file, so distance measurements use the scan's physical scale.

An axial T2-weighted MRI slice of a prostate, with the published manual outlines of the prostate and its peripheral zone in white.

Real prostate MRI (T2-weighted) with the collection's published manual segmentation of the prostate and its peripheral zone, drawn by Reader01. Fedorov et al., QIN-PROSTATE-Repeatability, TCIA, CC BY 4.0 (opens in a new tab), modified: windowed, cropped and outlined by Nitsor.

Give the reviewer the context.

Route work to a second reviewer. Each verdict on a label records the version of the label they judged, and finishing the review writes a commit under their name.

One label, as stored

Label
bracket, slices 184 to 201
Drawn by
A. Rivera, annotator, 14:02
Commit
2c817a0d, parent 9e44b1f3
Verdict
accept, S. Okonkwo, reviewer
Judged
5d07e2c9

Worked record example. The label, names, times, decisions and commit IDs illustrate a review; they are not the history of the published MRI label.

A review in the Nitsor editor: one label accepted, a second erased and painted back tighter with the Brush, a third rejected with a reason, then the Queue shows the task reviewed.
What each frame shows
  1. Each label waits for a verdict
  2. Accept keeps the label as drawn
  3. Correct redraws the label with its own tool
  4. Reject asks for a reason
  5. Finishing asks for one reason
  6. The queue shows the task reviewed

Real chest CT: Armato et al., "Data From LIDC-IDRI", TCIA, CC BY 3.0 (opens in a new tab), modified: cropped. Labels from the LIDC readers' published annotations.

Accept, correct or reject, with a reason.

Accept keeps a label as drawn. Correct redraws it with its own tool. Reject asks for a reason, and the queue shows the task reviewed.

Working with uncompressed single-frame DICOM ultrasound images?

Label and review uncompressed single-frame DICOM ultrasound images. Calibration stays with the image; images without spatial geometry remain individual images.

Explore ultrasound research

Show us what you inspect.

Start with a public CT or MRI scan. See how a model suggestion becomes a reviewed label and a fixed training dataset.