Skip to content

About

3D Slicer client for VISOR-serve: the panel for each tool is generated from the server's descriptor

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,108 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Automated Dental Tools Remote

Automatic dental and craniofacial analysis in 3D Slicer — segmentation, landmark identification, orientation, registration and classification of CBCT scans, intraoral surface scans and MRI. Every computation runs on a remote tool server, so a laptop that cannot run a segmentation can still ask for one: a ported module installs nothing into Slicer's interpreter and downloads no model. MRI2CBCT is temporarily unavailable: it is not shipped until it is ported to the server.

Automated Dental Tools Remote logo

Examples of automated segmentation, landmarking and registration

Compatible with the stable and nightly versions of 3D Slicer. Modules appear under the Automated Dental Tools Remote category.


⚠️ Your data leaves this machine

This extension is a client. The modules listed as server-backed below upload the files you select to a tool server over the network, where the computation happens, and download the result back into the scene. The remaining modules — Medical Data Anonymizer, VISU and Agent — run on this machine and send nothing.

There is no de-identification in the current client. Files are streamed to the server as they are on disk, with their names, their DICOM headers and whatever identifiers they contain. The de-identification pipeline is specified in DEIDENTIFICATION_SPEC.md but is not yet implemented.

Consequences you must accept before using this extension on patient data:

  • Out of the box the client points at a loopback address with a development token, so nothing leaves the machine until you change it. Set the address in the Server Tools Settings module, and point it only at a server you or your institution control. See Connecting this client to a server.
  • TLS certificate verification is on, and is not a setting: no panel offers to turn it off, because a client that cannot tell the real server from something answering in its place protects neither the images nor the API key. What this asks of you is the other half — the server has to present a certificate this client can verify. See Connecting this client to a server.
  • De-identify your data before selecting it, or confine use to data that carries no protected health information.
  • Check that the arrangement between your institution and whoever operates the server covers the data you are about to send.

MRI2CBCT is temporarily unavailable until it is ported to the server.


Connecting this client to a server

Installing and sharing a server is the server repository's subject — VISOR-serve's README covers joining a workstation to the tailnet, on Ubuntu, Windows and macOS. What follows is only what happens on this side of the wire.

A server with a public address

The server listens on loopback with a self-signed certificate this client does not accept. The client talks to it only through a public address: an https:// URL whose certificate a public authority signed — for a server on this very computer too. Any of these gives it one:

  • tailscale serve (scripts/setup-tailscale.sh) publishes it as https://<name>.<tailnet>.ts.net and fetches and renews the certificate itself;
  • a reverse proxy in front of it with a Let's Encrypt or institutional certificate, its address set as PUBLIC_URL in the server's .env;
  • the server itself on its own domain, with its own public certificate, likewise named in PUBLIC_URL.

In Server Tools Settings, this means:

  • URL — that https:// address, printed at the end of the server install;
  • Token — the server's API token, never its admin token.

That is the whole configuration. Until it is saved, the URL is a placeholder (https://set-your-server.invalid) that reaches nothing.

The rules have no setting, flag or file that relaxes them (ServerToolsCoreLib/tls.py):

  • https:// only. Every http:// URL is refused, http://localhost included; the server has no plain-HTTP listener at all. An http:// URL saved by an older client is ignored at startup (logged; the other settings still apply) until an https:// one is saved.
  • Publicly-signed certificates only, verified against the authorities in certifi's bundle (the one requests ships), named explicitly so that REQUESTS_CA_BUNDLE and its kin change nothing, hostname included. There is no custom CA, no certificate pinning and never verify=False.
  • No redirect is ever followed, and no request to an http:// URL ever leaves the client: a redirect is how https:// would become http://.
  • What the server says is shown as text. Its error messages, a text tool's answer and a schema's descriptions never render as HTML in a dialog, a label or a tooltip, and a result archive is unpacked only inside its folder, under a size and entry-count ceiling.

Behind tailscale serve, a device that has not joined the tailnet cannot reach the address at all, which is the access control; removing it from the Tailscale admin console is how access is withdrawn. Behind a reverse proxy, that control is the proxy's and the network's to provide.

Where the address and the token live, and which one wins

Two layers, and the second wins:

ServerToolsCore/ServerToolsCoreLib/config.py the compiled-in defaults
Server Tools Settings what you saved in the panel, stored by Slicer per installation

settings_qt.apply_saved_overrides runs at Slicer startup and lays the saved values over the defaults, so editing config.py changes nothing on a machine where that panel has ever been saved. It is the first thing to check when an edit to config.py appears to be ignored. settings_qt.clear_overrides() removes the saved group and gives config.py the last word again.

Publishing a server from Slicer Cloud instead

Slicer Cloud can start a server on this machine, and asks under Network access which address to publish it on. The choice decides who can reach it:

Choice Who reaches it
This computer only nobody else — the default, and it keeps the server off the network entirely
an interface named tailscale, wg, tun or zt, shown as private network, encrypted the machines in that mesh, over the mesh's own encryption
an ordinary interface, shown as local network anyone on that network
Every network on this machine anyone who can route to it

Whatever the choice, the address the panel hands every module is the deployment's public one (public_url from server_ctl.py: PUBLIC_URL when set, otherwise the tailscale serve address), never the server's own port: that port presents a self-signed certificate, which this client refuses. Without a public address the panel saves nothing and says how to get one. deploy.host_addresses classifies the interfaces and skips Docker's own bridges — binding to one of those publishes the server to containers and to nothing else.


How it is put together

  • ARCHITECTURE.md — how the client works, file by file. Start here; it is the authoritative reference.
  • VISOR-serve — the server: routes, auth, dispatch, the /DATA store. It knows no dental tool.
  • SADT-VISOR — the tools: one isolated project per tool, each with its own interpreter and its own pins. What a tool computes, and what it was validated against, is in its README there.
  • SlicerAutomatedDentalTools — the upstream extension, where every algorithm here originates, and which runs the same tools locally.

A module's panel is generated from the server's tool descriptor (GET /tools) rather than written by hand, so a field added to a tool server-side appears in Slicer with no client release. This is why most modules ship no .ui file: that is the design, not an omission.

Do not install this extension alongside SlicerAutomatedDentalTools. Use one or the other: this client is meant to replace the local extension, not to run next to it.

They cannot share a Slicer. 34 of this extension's 41 modules carry the same names as the upstream ones, and four of its helper packages do too (MRI2CBCT_utils, Agent_CLI_utils, MRI2CBCT_CLI_utils, Testing). Slicer registers whichever of two same-named modules comes first in the module search path and silently drops the other — no warning, no error — so which extension you are running would depend on install order, with nothing in the interface to tell you. Shared package names are worse: because each module directory goes on sys.path, they make the upstream modules fail to import.

Both extensions are listed in the Extensions Catalog during the transition, so either can be downloaded. Installing them together is what is unsupported.


Modules

Panels that send work to the server:

Name Description
AMASSS Segments the skull structures of a CBCT scan. Acronym for Automatic Multi-Anatomical Skull Structure Segmentation.
ALI Places anatomical landmarks on a CBCT scan or an intraoral surface scan; the server picks the engine from what the input holds. Acronym for Automatic Landmark Identification.
ASO Reorients CBCT scans or intraoral surface scans into a standardized frame. Acronym for Automated Standardized Orientation.
AReg Registers two timepoints of the same patient, for CBCT or intraoral surface scans. Acronym for Automated REGistration.
Crown Segmentation Labels an intraoral surface scan tooth by tooth. Its output is the precondition for ALI's IOS landmarks and for the IOS modes of ASO, AReg and FlexReg.
AutoCrop3D Crops a folder of CBCT scans to one region of interest drawn in Slicer.
AutoMatrix Applies one or several transformation matrices to a folder of scans or landmark files.
FlexReg Registers two intraoral arches on a patch the clinician draws, rather than on the whole mesh, because teeth move between timepoints and the palate does not.
GreedyReg Affine registration of CBCT scans with the Greedy engine, in landmark, automatic or combined mode, single or batch.
BatchDentalSegmentator Segments teeth and jaw structures on dental CT and CBCT in batch, for mixed or permanent dentition.
CLI-C Localizes and classifies impacted canines on CBCT. Acronym for Classification and Localization of Impacted Canines.
DOCShapeAXI Grades a 3D surface and returns the GradCAM surface that explains the grade. Acronym for Dental Oral and Craniofacial Shape Analysis eXplainability and Interpretability.
VFACE Measures facial asymmetry and longitudinal change, then classifies it. Acronym for Visual Facial Asymmetry Classification Engine.
SurgMovPred Predicts the soft-tissue outcome of a planned surgical movement.
CNE Extracts structured findings from free-text clinical notes with a language model hosted on the server. Successor of the former MedX module.

Panels that do not send work to the server:

Name Description
VISU Opens a folder a tool has already produced and pairs scan, mask and landmarks for review, one case at a time, with the arrow keys to step through a cohort. Computes nothing.
Medical Data Anonymizer Anonymizes identifiers in medical documents (DOCX, PDF, TXT, CSV, XML, ODT) on this machine.
Agent Runs the other modules from a request in plain language, using a local LLM.
Slicer Cloud Stands a tool server up from inside Slicer and keeps it current: clones the server repository, starts the container, and chooses which model bundles land on disk.
Server Tools Settings Sets the server address and credentials every other module uses, and tests the connection.

Two modules carry no panel of their own and sit in the Automated Dental Tools Remote.Advanced category:

Name Description
Server Tools Core Hidden module whose only purpose is to make ServerToolsCoreLib — the HTTP client, the panel generator and the background worker — importable by every other module.
Example Tool Minimal reference panel, kept as the worked example of what a module built on the generated-panel base class reduces to.

Legacy command-line modules

These two directories are CLI modules of the former local extension that the panels above still drive. They are built, so they appear under Automated Dental Tools Remote.Advanced.

Name Description Driven by
Agent_CLI Routes a request in plain language to the right tool, extracts its parameters and builds the command to run. Agent

The CLI modules of the other tools — landmark identification, orientation, registration, the asymmetry classification and clinical-note extraction — are gone: the sequencing they existed for is the server's now, and they had already been dropped from the build, so nothing shipped them and nothing imported them.

Features shared by every server-backed panel

Input — a single file or a whole folder. If the input is a file already loaded in the scene, the result is shown on the slice views when it comes back.

Output — the result can be written next to the input or into a folder you choose, grouped per patient, with a prediction identifier of your choosing in the output file names.


Requirements

  • 3D Slicer, stable or nightly. See the Slicer system requirements.
  • A reachable tool server. Set its address in Server Tools Settings, or deploy one with Slicer Cloud — see Connecting this client to a server. Without it, every server-backed module is inert.
  • No GPU, no conda environment and no model download are needed for the server-backed modules — that is the point of this client.

Citing

A DOI is registered for this software; see CITATION.cff (10.5281/zenodo.22150410). The algorithms themselves are published through the upstream extension, SlicerAutomatedDentalTools.


AMASSS Module

Extension Logo

AMASSS module will allow you to segment CBCT scan using AMASSS algortihm.

Prerequisites

Module structure

Input file: The input has to be an oriented CBCT. It can be a single CBCT scan loaded on slicer or a folder containg CBCTs with the following extention:

.nrrd / .nrrd.gz
.nii  / .nii.gz
.gipl / .gipl.gz

Available sample data for testing: MG_test_scan.nii.gz

Load models: The user has to indicate the path of the folder containing the trained models for AMASSS.

Segmentation selection: The user can choose the structure to segment using the selection table. Depending on the type of CBCT to segment, the user can select the "Use small FOV models" checkbox to use on higher definition scans. SegTab

Output option: By selecting the "Generate surface files" checkbox. The user will also get a surface model of the segmentation that will be saved in a "VTK files" folder and will be automatically loaded in slicer at the end of the prediction if working on a single file.

Advanced option:

  • You can increase/decrease the precision of the segmentation (going above 50 will drastically increase the prediction time and is not necesary worth it, going under 50 will make the prediction much faster but less accurate)
  • If the user whant to generate surface files, he can choose the smothness applied on the model.
  • Depending on your computer power, you can increase the CPU and GPU usage to increase the predictio speed.

ALI Module

Extension Logo

ALI module provide a convenient user interface allowing to identify landmarks on different type of scans:

ALI-CBCT

The implementation is based on the ALI-CBCT algortihm originally developed by Maxime Gillot at https://github.com/Maxlo24/ALI_CBCT.

Prerequisites

Module structure

Input file: The input has to be an oriented CBCT. It can be a single CBCT scan loaded on slicer or a folder containg CBCTs with the following extention:

.nrrd / .nrrd.gz
.nii  / .nii.gz
.gipl / .gipl.gz

Available sample data for testing: MG_test_scan.nii.gz

Load models: The user has to indicate the path of the folder containing the trained models for ALI-CBCT.

Landmark selection: Once the folder containing the trained models is loaded. The user can choose the landmark he want to identify with the table showing the available landmarks: SegTab


ALI-IOS

The implementation is based on the ALI-IOS algortihm originally developed by Baptiste Baquero at https://github.com/baptistebaquero/ALIDDM.

Prerequisites

Module structure

Input file: The input has to be an oriented IOS segmented with the Universal Numbering System. This segmentation can be automatically done using the SlicerJawSegmentation extention. The input can be a single IOS loaded on slicer or a folder containg IOS with the following extention: The array name of labels in the vtk surface is: "Universal_ID" or "predictionid" or "PredictionID"

.vtk

Available sample data for testing: T1_01_L_segmented.vtk and T1_01_U_segmented.vtk

Load models: The user has to indicate the path of the folder containing the trained models for ALI-IOS.

Landmark selection: For the IOS landmarks, the user has to choose which tooth he need the landmakrs on by checking the label of the tooth on the left table. Once the folder containing the trained models is loaded. The user can choose the landmark he want to identify with the table on the right showing the available landmarks: LM_tab_ios

ASO Module

If you want more information and a descriptive tutorial of this tool, take a look at this github page: Automated Standardized Orientation

Extension Logo

ASO module provide a convenient user interface allowing to orient different type of scans:

  • CBCT scan
  • IOS scan

How the module works?

2 Modes Available (Semi or Fully Automated)

  • Semi-Automated (to only run the landmark-based registration with landmark and scans as input)
  • Fully-Automated (to perform Pre Orientation steps, landmark Identification and ASO with only scans as input)
Mode Input
Semi-Automated Scans, Landmark files
Fully-Automated Scans, ALI Models, Pre ASO Models (for CBCT files), Segmentation Models (for IOS files)

Input file:

Input Type Input Extension Type
CBCT .nii, .nii.gz, .gipl.gz, .nrrd, .nrrd.gz
IOS .vtk .stl .vtp .off .obj

Test Files Available: You can either download them using the link or by using the Test Files button.

Module Selected Download Link to Test Files Information
Semi-CBCT Test Files Scan and Fiducial List for this Reference
Fully-CBCT Test File Only Scan
Semi-IOS Test Files Mesh and Fiducial List Reference
Fully-IOS Test Files Only Mesh Reference

Reference:

The user has to choose a folder containing a Reference Gold File with an oriented scan with landmarks. You can either use your own files or download ours using the Download Reference button in the module Input section.

Input Type Reference Gold Files
CBCT CBCT Reference Files
IOS IOS Reference Files

Landmark selection

The user has to decide which landmarks he will use to run ASO.

Input Type Landmarks Available
CBCT Cranial Base, Lower Bones, Upper Bones, Lower and Upper Teeth
IOS Upper and Lower Jaw

The landmark selection is handled in the Landmark Reference Section:

Models Selection

For the Fully-Automated Mode, models are required as input, use the Select Button to automatically download, extract and select the selected models.

ASOSADT

AReg Module

Extension Logo

AReg module provide a convenient user interface allowing to orient different type of scans:

  • CBCT scan
  • IOS scan

How the module works?

3 Modes Available

  • Semi-Automated (to only run the automatic registration with masks segmentation and scans as input - only for CBCT)
  • Fully-Automated (to perform the automatic registration with only scans as input)
  • Orientation and Registration (to perform the automatic orientation using ASO process and the automatic registration with only scans as input)
Mode Input
Semi-Automated (only for CBCT) Scans, Masks segmentation
Fully-Automated Scans, Segmentation Models
Orientation and Registration Scans, ALI Models (for CBCT files), Segmentation Models

For CBCT, a final step is added and consist of segmenting different skeletal structures using AMASSS process within each mode.

Input file:

Input Type Input Extension Type
CBCT .nii, .nii.gz, .gipl.gz, .nrrd, .nrrd.gz
IOS .vtk .stl .vtp .off .obj

Test Files Available: You can either download them using the link or by using the Test Files button.

Module Selected Download Link to Test Files Information
Semi-CBCT Test Files Scan and Masks segmentation
Fully-CBCT Test File Only Oriented Scan
Orientation and Registration for CBCT Test File Only Scan
Fully-IOS Test Files Only Mesh )
Orientation and Registration for IOS Test Files Only Mesh

Pipelines

CBCT - AReg Pipeline

Workflow

IOS - Patch prediction

PipelinePrediction

Some Results

ARegResult

Models Selection

For the Fully-Automated Mode, models are required as input, use the Select Button to automatically download, extract and select the selected models.

AutoCrop3D Module

AutoCrop3D icon

AutoCrop3D stands for "Scans automatically cropped" according to a Region Of Interest (ROI).

Useful Information

This module has the same utility as "Crop Volume", which offers more interactive feedbacks to the user, but "AutoCrop3D" allows you to easily trim the ROI of all the cases in your study. Then you can load your files into Slicer to view them. More Information about Crop Volume

It solves the issue of files that may be too heavy for "Crop Volume Sequence" More Information about Crop volume Sequence.

How does the module work?

Input:

Input Input Type Input Extension Type Files to Test
File or Folder CBCT .nii, .nii.gz, .gipl.gz, .nrrd, .nrrd.gz Segmentation.zip
Region of Interest* Volume .json ROI.mrk.zip

You can choose a suffix which will be added to the existing name of your file(s).

If you want to generate VTK files from your Segmentations, the Segmentation files must have "Seg" somewhere in the name. For example: patientName_Seg.nii.gz

How to create a Region Of Interest?

Use the module "Volume Rendering" to create your ROI and then save it as a .json file.

  1. Upload a scan file
  2. Choose the option Display ROI
  3. Change the ROI as you like
  4. Save it

Tuto1 Tuto2

AutoMatrix Module

Extension Logo

The AutoMatrix module provides a user interface to apply a matrix to a folder for different types of scans or segmentations:

  • CBCT
  • IOS

How the module works?

How to name the new files and where they are stored

The module will replicate the folder structure from your input folder inside the output folder. Each new file will keep the original filename, followed by the suffix you specify. If the "Add matrix name to filename" option is enabled, the matrix filename will also be appended.

Example:

With matrix name Without matrix name
Input file: patient1_T1_MA.nii.gz Input file: patient1_T1_MA.nii.gz
Input matrix: patient1_matrix1.tfm Input matrix: Matrix_mirror.tfm
Suffix: _apply Suffix: _mir
Output file: patient1_T1_MA_apply_matrix1.nii.gz Output file: patient1_T1_MA_mir.nii.gz

4 Modes available

Sometimes a LinkName is required. See the information below.

Mode Download Link to Test Files Information
File patient and file matrix Test Files LinkName is not required. The matrix is applied to the input file. This new file is save in the output folder.
File patient and folder matrix Test Files LinkName required. For each matrix applied, a new file is created.
Folder patient and file matrix Test Files LinkName is not required. The matrix will be applied to all files in the input folder.
Folder patient and folder matrix Test Files LinkName required. For each matrix applied, a new file is created. You can have more than one file with the same patient name.

When a LinkName is required :

The name of the matrix files and the name of the seg/scan files must begin with the same patient name. After the patient name, you must put and underscore before any other information. Example : Name file patient : patient1_T1_MA.nii.gz Name matrix files : patient1_left_MA.tfm

Mirror :

There is button "Mirror" that will automatically download the matrix mirror and put in input.

Input file:

Input Type Input Extension Type Input Matrix Extension
CBCT .nii.gz .tfm .npy .h5 .mat .txt
IOS .vtk .stl .vtp .off .obj .tfm .npy .h5 .mat .txt
Landmark .mrk.json .tfm .npy .h5 .mat .txt

CNE Module

CNE icon

The CNE module extracts structured findings from free-text clinical notes. It is the successor of the former MedX module.

The language model runs on the server: nothing is installed into Slicer and no model is downloaded to this machine.

Features

  • Input: one clinical note or a folder of them (.txt, .pdf or .docx), searched recursively. A scanned, image-only PDF has no text and is skipped rather than answered from nothing.
  • Note type: TMJ or Ortho. It selects the fine-tuned model, its prompt and its context window; leave Model on automatic and the server uses the model fine-tuned for that note type.
  • Output: per note, Extraction_<note>.json and a readable Extraction_<note>.txt, plus CNE_report.json, which says how many notes were extracted and why any were not.

Medical Data Anonymizer Module

Medical Data Anonymizer icon

The Medical Data Anonymizer module provides automated anonymization of sensitive information in medical documents using AI-powered text analysis. It helps ensure HIPAA compliance and patient privacy protection by identifying and removing or replacing personally identifiable information (PII) and protected health information (PHI) from various document formats.

Features

Supported File Formats:

  • PDF documents
  • Word documents (.docx)
  • Text files (.txt)
  • CSV files (.csv)
  • XML files (.xml)
  • OpenDocument Text (.odt)

Anonymization Options:

  • Names (patients, doctors, healthcare providers)
  • Phone Numbers
  • Email Addresses
  • Dates and Times
  • Addresses and Locations
  • Social Security Numbers
  • Medical License Numbers
  • Driver's License Numbers (optional)
  • Credit Card Numbers (optional)
  • Bank Account Numbers (optional)
  • IP Addresses (optional)
  • URLs/Websites (optional)

Anonymization Methods:

  • Replace with Label: Replaces sensitive data with generic labels (e.g., <PERSON>, <DATE>)
  • Redact: Completely removes sensitive information
  • Hash: Replaces with cryptographic hashes for consistent anonymization
  • Mask: Replaces with asterisks or other masking characters

How does the module work?

  1. Install Dependencies:

    • Click "Install Dependencies" to automatically install required libraries (Presidio, file processing tools)
    • Restart 3D Slicer after installation
  2. Select Input and Output:

    • Input Directory: Folder containing documents to be anonymized
    • Output Directory: Folder where anonymized documents will be saved
  3. Configure Anonymization:

    • Choose Entity Types: Select which types of sensitive information to anonymize
    • Advanced Options:
      • Anonymization Method: Choose how to handle detected sensitive data
      • Confidence Threshold: Set detection sensitivity (0.0-1.0, default: 0.5)
  4. Process Files:

    • Click "Anonymize Files" to start processing
    • Progress bar shows real-time status
    • Anonymized files are saved with "_anonymized" suffix

Output

  • Anonymized Documents: Each input file generates an anonymized version in the selected format
  • File Mapping CSV: file_mappings.csv tracks original and anonymized filenames with unique identifiers
  • Processing Log: Detailed logging of the anonymization process

Use Cases

  • Research Data Preparation: Remove PHI from clinical notes and research documents
  • Data Sharing: Prepare medical documents for sharing with external collaborators
  • Compliance: Ensure HIPAA compliance when processing medical documents
  • Archive Management: Create anonymized versions of medical records for long-term storage

Prerequisites

  • Dependencies: Automatically installed via the "Install Dependencies" button
  • Language Models: English language model is automatically downloaded
  • Supported Systems: Windows, macOS, Linux

MRI2CBCT Module

Temporarily unavailable. MRI2CBCT is not shipped with this extension until it is ported to the tool server. Its source stays in MRI2CBCTRemote/ and MRI2CBCT_CLIRemote/; the description below documents the module as it will return.

Extension Logo

The MRI2CBCT module provides a user interface to perform the registration between MRI and CBCT scans.

How does the module work?

Preprocessing Step:

  1. Orient and Center CBCT:

    • Input: CBCT folder path
    • Download Models: You can download the models required for segmentation and orientation by clicking on "Download."
  2. Orient and Center MRI:

    • Bilateral mode: When enabled, additional options become available:
      This option is intended for bilateral TMJ scans, which contains two slices between left and right separated by a large distance.When such DICOM volumes are saved as NIfTI, the original slice spacing is lost or misrepresented, which distorts the image.

    Enabling bilateral mode lets you select a loaded DICOM node to automatically retrieve the true acquisition spacing (from DICOM metadata) and apply it before orientation. This ensures that the image is correctly resampled and anatomically accurate. > If **Bilateral** is disabled, the spacing from the input scan is used as-is. - **Input:** MRI folder path - **Axis Direction:** You need to choose the new direction for each axis.
  3. Left and Right Cropping:

    • Inputs: Folder paths for CBCT and/or MRI.

Resampling Step:

  • Options: You can resample T1 and/or T2 scans for MRI, CBCT, and Segmentation independently.
  • Slice/Number of Slices: Decide the new slices/number of slices or retain the same size as before running it.
  • Spacing: Choose the new spacing or keep the same spacing as in the input.
  • Center Image: When enabled, padding is added equally in all directions to center the content.

Approximation:

This step aligns the MRI and CBCT volumes to prepare for precise registration.

  • Inputs: Resampled MRI and CBCT volumes.

Cropping (TMJ Region):

Currently, cropping is done using the AutoCrop method. In the future, this step will be replaced by a trained model that automatically identifies and extracts the TMJ region of interest.

Registration:

  • Inputs: CBCT, CBCT segmentation, and MRI scans after completing the preprocessing steps, including manual approximation and cropping.
  • Normalization Options: Select the normalization method and specify the percentile to apply to both MRI and CBCT scans. Default values are provided for convenience.

FlexReg Module

Extension Logo

FlexReg is a module that allows you to register patient-specific Intra Oral Scans. It lets you create custom patches for registration.

How does the module work?

  1. Load your files:

    • Choose your path by clicking on "Select" and load it by clicking on "View".
  2. Draw your own patch:

    • Butterfly Patch:
      • You can draw a butterfly patch using the parameters and select your own teeth. Note that this patch, with the default values, is called “ButterflyPatch” and is created when you run AREG_IOS:

        Butterfly Patch Image

    • Custom Patch:
      • You can draw the patch using landmarks and customize it:
      • Patch landmarks

    • You can combine multiple patches by creating them one by one. All your patches will be used as a single patch for the registration.
    • Multiple patchs

  3. Registration:

    • After creating your patch for both the fixed and moving scans, choose the output folder and the suffix you would like. If you have a lower arch to move, you can select it.
    • Register them by clicking on "Registration".

DOCShapeAXI Module

This integrates advanced deep learning algorithms enabling the classification of nasopharynx airways obstruction, mandibular condyles, and alveolar bone defect in cleft. The tool facilitates the automated classification of medical shapes, assisting in clinical diagnosis and decision-making. The extension was originally developped https://github.com/lucieDLE/DOC-ShapeAXI/

Prerequisites

  • This extension works with Linux and Windows.
  • This extension requires the installation of SlicerConda. Follows the instructions for more information.

Supported Dataset

Currently, the extension supports only three types of datasets:

  • Nasopharynx Airway Obstruction: Three models are available for this dataset.
    • Severity model: classifies 4 levels of airway obstruction ranging from 0 to 3, where 0 is the lowest level and 3 is the greatest level.
    • Binary model: classifies between 0 and 1, where 0 is the absence and 1 is the presence of adenoid hypertrophy-related obstruction.
    • Regression model: directly predicts the ratio of obstruction ranging between 0 and 100%.
  • Mandibular Condyle:
    • Severity model: classifies the condylar changes into 4 levels of severity ranging from 0 to 3.
  • Alveolar Bone Defect in Cleft:
    • Severity model: classifies the defect into 4 levels of severity ranging from 0 to 3.

How does the module work?

  1. Select a Data Type: nasopharynx airways obstruction, mandibular condyles, and alveolar bone defect in cleft.

Note

This step allow to select automatically the appropriate classification model.

  1. Select an Input folder: a folder that contains 3D models stored as VTK files.
  2. Select an Output directory: a folder that will contain all the outputs (model, predictions results stored in a CSV file, and explainability visualizations). User Interface.
  3. Run the module: Click on the Run Prediction button.

Note

The progress will be display in the UI with a progress bar.

Viewing the Results

All the results are saved in the Output directory specified by the user. you can find:

A. the csv file containing the prediction made by the network.

B. a folder named Explainability containing the visualization results:

  1. Open the folder and drag and drop a shape in Slicer
  2. Go to the module Models location of the Models tab to select in Slicer.
  3. In the Display drop-down menu, click on the Scalar section
  4. check the visibility box and change the color table to ColdToHotRainbow
  5. Set the Data Scalar Range to Auto if not set Screenshot of the location and values of the visualization settings
  6. Change the Active Scalar to the class you want to visualize

BatchDentalSeg

3D Slicer extension for fully-automatic segmentation of CT and CBCT dental volumes in batch using Dentalsegmentator model (for adults scans), PediatricDentalsegmentator model (for children scans), UniversalLabDentalSegmentator (for labeling all the teeth), NasoMaxillaDentalSegmentator (for segment separatly the upper skull and the Naso Maxillary Complex.

image After selecting the following:

  1. Input folder (containing volumes to process)
  2. Output folder (where segmentations will be saved)
  3. Model (the pretrained network that best fits your scans)

this module generates the following labeled regions for each volume:

PediatricDentalSegmentator

(Identical to DentalSegmentator)

  • Maxilla & Upper Skull
  • Mandible
  • Upper Teeth
  • Lower Teeth
  • Mandibular canal

DentalSegmentator

  • Maxilla & Upper Skull
  • Mandible
  • Upper Teeth
  • Lower Teeth
  • Mandibular canal

NasoMaxillaDentalSegmentator

This model splits the upper skull into two regions and also segments teeth and mandible:

  • Upper Skull (excluding nasal/maxillary complex)
  • Naso-Maxilla Complex
  • Mandible
  • Upper Teeth
  • Lower Teeth
  • Mandibular canal

UniversalLabeling

Same as DentalSegmentator, but each tooth receives its own unique label:

  • Maxilla & Upper Skull
  • Mandible
  • Upper Teeth (each tooth labeled separately)
  • Lower Teeth (each tooth labeled separately)
  • Mandibular canal

DentalSegmentator model

DentalSegmentator is based on nnU-Net framework. It has been trained on 470 dento-maxillo-facial CT and CBCT scans from 7 institutions by Dot G, et al, here is their paper and nnUnet paper:

Dot G, et al. DentalSegmentator: robust open source deep learning-based CT and CBCT image segmentation. Journal of Dentistry (2024) doi:10.1016/j.jdent.2024.105130

Isensee F, et al. nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation. Nat Methods. 2021;18(2):203-211. doi:10.1038/s41592-020-01008-z

PediatricDentalSegmentator model

As DentalSegmentator, PediatricDentalSegmentator is also based on nnUnet. It has been trained on 513 dento-maxillo-facial CBCT scans including scans withs primary teeth.

UniversalLabDentalSegmentator model

As PediatricDentalSegmentator, UniversalLabDentalSegmentator is also based on nnUnet. It has been trained on 513 dento-maxillo-facial CBCT scans including scans withs primary teeth

NasoMaxillayDentalSegmentator model

As DentalSegmentator, NasoMaxillaryDentalSegmentator is also based on nnUnet. It has been trained on 135 dento-maxillo-facial CBCT scans including scans withs primary teeth.

Using the extension

This extension is compatible with 3D Slicer Stable Release (version 5.8.0, or later), downloadable from the official website.

The plugin can be installed in Slicer using the extension manager. It's a module in the Automated Dental Tools extension so it can be can be found using the search bar by typing "Automated Dental Tools".

After the installation process and restart of Slicer, the extension can be found in the module file explorer under Automated Dental Tools>BatchDentalSegmentator. It can also be found by using the find module button and searching for the keyword BatchDentalSegmentator.

You will also need to install the NNUNet extension, you can find it by using the find module button and searching for the keyword NNUNet

To use the extension, click on Select Folder to select the folder where your scans are and click on Select Output Folder to select the folder where your segmentations will be save.

image

Then choose the model that you want to use :

image

Finally click on the Apply button to start the segmentations.

If your device doesn't include CUDA, the processing may be very long and a dialog will ask for confirmation before starting the segmentation process.

During execution, the processing can be canceled using the Stop button. The progress will be reported in the console logs.

image

After the segmentation process has run, the segmentation will be loaded into the application. The segmentation results can be modified using the Segment Editor tools.

Screencast from 06-02-2025 11_29_42 AM (1)

The segmentation can be exported using the Export segmentation menu and selecting the export format to use.

The Surface smoothing slider allows to change the 3D view surface smoothing algorithm.

Exemple of using

exemple_use3

CLI-C Module

CLI-C (Classification and Localization of Impacted Canines) is a 3D Slicer extension designed for automated segmentation of dental Cone-Beam Computed Tomography (CBCT) images using a deep learning Mask R-CNN model. It streamlines dental segmentation workflows for intra-osseous teeth, facilitating accurate identification and visualization of impacted canines for orthodontic and dental surgical planning.


Key Features

  • Automatic Segmentation: Precisely segments and classify impacted teeth, determininng the intra-osseous localization including buccal, bicortical, and palatal regions from CBCT scans.
  • Mask R-CNN Model Integration: Utilizes advanced deep learning architectures to provide accurate and robust segmentation.
  • Progress Monitoring: Real-time progress bar and log updates during segmentation tasks.
  • User-Friendly Interface: Simple GUI integrated seamlessly within 3D Slicer.
  • Batch Processing: Supports segmentation of single files or batch processing of entire directories of CBCT scans.

Installation

Prerequisites

  • 3D Slicer 5.6+
  • Python packages: torch, torchvision, nibabel, numpy, scipy, requests

The module checks and automatically installs these dependencies upon first usage.

Setup

Load the Module in 3D Slicer

  • Open 3D Slicer.
  • Navigate to Module → Slicer Automated Dental Tools → CLIC.

Usage

Step 1: Load CBCT Data

  • Use the file dialog to select your CBCT image or directory containing multiple CBCT images.
  • Available sample data for testing: MN138.nii , UM06.nii

image

Step 2: Download/Select Model

  • Click "Download Model" if using for the first time, or specify your existing model directory.

image

Step 3: Configure your output

  • Click "Choose save folder" if you want to a specific output folder or clic on save in input folder if you want the outputs in the same folder than the input
  • write the suffix you want for th outputs

image

Step 3: Run Segmentation

  • Click Predict to begin segmentation, if it s the first time you run a pop up will maybe ask you to install some dependency, clic on 'yes', the process will take a little time to start.
  • Observe the progress bar and log output for real-time feedback.

image

Step 4: Visualize Results

  • Segmentations automatically load into Slicer's viewer with clear labeling.
  • A color-coded legend (Buccal, Bicortical, Palatal) appears in slice views.
  • Be carefull, if you have scans with differents field of view in your input folder and you try to navigate through the scans when th process is end the views can turn black, in this case you have to clic on the button reset field of view.

image

image

VFACE Module

VFACE (Visual Facial Asymmetry Classification Engine) is a 3D Slicer extension designed for automated classification of facial asymmetry. It provides advanced measurement extraction and machine learning-based classification of facial structures including the mandible and maxilla.


Key Features

  • Automated Asymmetry Classification: Automatically classifies facial asymmetry patterns based on facial structure analysis.
  • Facial Measurement Extraction: Extracts key measurements from facial structures for quantitative analysis.
  • Machine Learning Based: Uses trained deep learning models for accurate asymmetry classification.
  • User-Friendly Interface: Simple GUI integrated seamlessly within 3D Slicer for easy access and use.
  • Batch Processing: Supports analysis of single files or batch processing of multiple datasets.

Installation

Prerequisites

  • Required Python packages will be automatically installed upon first usage.

Setup

Load the Module in 3D Slicer

  • Open 3D Slicer.
  • Navigate to Module → Slicer Automated Dental Tools → VFACE.

Usage

The module provides an intuitive interface for facial asymmetry classification. Simply load your facial data, select the appropriate models and parameters, and run the analysis to obtain automated classification results and measurements.

For detailed usage instructions and tutorials, please refer to the module's built-in help documentation.

GreedyReg Module

Extension Logo

GreedyReg performs ITK-SNAP style registration of CBCT scans using the Greedy registration engine. It combines manual approximation tools with automatic registration, and can process a single pair of scans or a whole folder in batch.

Prerequisites

  • The Greedy binary is required. If it is not found, the module shows a Download Greedy button that installs it automatically (~60MB).
  • The Distant Registration mode additionally relies on the ALI-CBCT Python libraries. If they are missing, the module offers to install them.

How does the module work?

  1. Input Volumes: select the fixed (T1) and moving (T2) CBCT scans to register.
  2. Create Mask (optional): paint a region to focus the registration on a specific area.
  3. Manual Alignment: roughly pre-align the moving scan using rotation/translation sliders and the manual approximation tools.
  4. Automatic Registration: run the Greedy registration, save the registered volume, or use Run Batch Registration to process an entire folder of scans.
  5. Distant Registration (Large Misalignment): when the two scans start far apart, this mode uses ALI-CBCT landmarks to first bring them close together before registering. It is also available in batch.

Agent Module

Extension Logo

The Agent module is the graphical front-end of the AI Agent extension. Instead of opening each module by hand, you describe what you want to do with your dental/orthodontic imaging data in natural language, and the agent selects the right Automated Dental Tools module, extracts its parameters and runs it for you.

The agent runs fully locally: it is powered by the qwen3:8b model through Ollama, so no data leaves your machine.

Prerequisites

  • Ollama must be installed.
  • Click the Check button once to install the required Python dependencies and pull the qwen3:8b model. This step is only needed the first time.

How does the module work?

  1. Describe your task: Type your request in plain language (e.g. "orient these CBCT scans" or "segment this folder").
  2. Add your data: Drag & drop one or more files or folders into the drop zone.
  3. Choose a mode:
    • Agent (Automated): the agent picks the matching tool, fills in its parameters and runs it automatically.
    • Consultant: the agent recommends the most appropriate tool(s) for your request without running them.
  4. Run: the agent routes your request to the corresponding module. If a tool execution fails, the agent automatically tries to fix the parameters from the error and retries (up to a few attempts).

The routing, parameter extraction and command building are handled by the internal Agent_CLI module.

Acknowledgements

Authors: Maxime Gillot (University of Michigan), Baptiste Baquero (UoM), Luc Anchling (UoM), Nathan Hutin (UoM), Alexandre Buisson (UNC), Paul Dumont (UNC), Enzo Tulissi (UoM), Alban Gaydamour (UoM), Jeanne Claret (UoM),Gaelle Leroux (UoM), Lucia Cevidanes (UoM), Juan Carlos Prieto (UNC), David Allemang (Kitware), Jean-Christophe Fillion-Robin (Kitware), Connor Bowley (Kitware), James Butler (Kitware).

Supported by NIDCR R01DE 024450, AA0F Grabber Family Teaching and Research Award and by Research Enhancement Award Activity 141 from the University of the Pacific, Arthur A. Dugoni School of Dentistry.

License

This software is distributed under the terms of the 3D Slicer License, a BSD-style license with additional clauses covering contributions and issues specific to 3D Slicer. The full text is in LICENSE.txt.

About

3D Slicer client for VISOR-serve: the panel for each tool is generated from the server's descriptor

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages