Reslice the volume with plane positioned by several reference points

Is it possible to set several reference points on the volume to form a specific plane, use that plane to reorient the volume, and then reslice and export the result?

I am an orthodontist researching the cranio-maxillofacial area.

I am planning to conduct a study using CT volume data. Due to the nature of orthodontic analysis, it is necessary to reorient the volume based on a specific 2D plane composed of several fiducial points (landmarks).

Depending on the case, two planes may be used as a reference. For example, a specific plane composed of several landmarks is reoriented parallel to the horizontal plane, and then sequentially reoriented so that a specific landmark matches the midsagittal plane.

After the reorientation process, for subsequent work, it is necessary to transform the volume itself according to the plane, reslice it, and export it.

Several commercial programs developed for orthodontic analysis support the functions mentioned above, but unfortunately, they do not support the function to export the work content to a more universal file format. Moreover, it seems that there is no program that can reslice the reoriented volume. Therefore, it is impossible to conduct analysis and research in conjunction with other software.

I would like to inquire if such work is possible using 3D Slicer.

I don’t know if there’s anything quite like that now, but it could be added with some python scripting if it’s not there already in one of these modules:

You can position a markup plane by placing multiple markup points (Markups module → Plane settings → “Three points” or “Plane fit”). You can then get the transformation from the markup plane and create a transform from it (this requires a few lines of Python code). Finally, you can apply the transform to a ROI markup and use Crop volume module with this ROI to resample the volume.

What you describe also sounds vey similar to the ACPC transform module.Maybe you could slightly modify that module to do what you need.

Thank you for your prompt reply. I appreciate your assistance.

I will need to investigate whether such functionality exists in the module. However, do you happen to know of any Python scripts that can perform such a function?

Thank you for your support. I appreciate your assistance.

As you suggested, I was able to successfully make the specified plane using the markup module. but I am still unsure how to proceed at this stage. I am seeking guidance on how to best implement the desired functionality.

Could you please advise me on which Python code I could utilize to achieve this goal? I would be grateful for any recommendations on relevant Python libraries or modules that could facilitate this process.

I am eager to learn and progress in this area, and any guidance you can provide would be immensely helpful. Thank you in advance for your time and consideration.