Git Product home page Git Product logo

cmfreg's Introduction

CMFreg

Cranio-Maxillofacial registration

For assessment of overall facial changes, cranial base segmented models are only used to mask anatomic structures that change with growth and treatment. The registration procedures actually compare voxel by voxel of gray-level CBCT images, containing only the cranial base, to calculate rotation and translation parameters between the 2 images. Cranial base registration yields information of facial displacements relative to the cranial base. For subjects in whom cranial base growth is complete, registration is done using the gray level CBCT datasets of the whole cranial base ( Nongrowing registration module). The larger the number of voxels used for the registration, the more robust the registration is. For this reason, for adult patients the whole cranial base “mask CBCT” is used for registration. For growing patients ( Growing registration module), the registration includes two steps in the same module: in the first, an initial head alignment is done using the whole cranial base, and then a finer registration is performed at the stable structure on the anterior cranial base. For assessment of localized facial changes, such as mandibular or maxillary growth or bone remodeling of the mandibular condyle or tooth movement, specific anatomic regions can be used to create localized masks and aid regional superimpositions. The challenge in regional superimpositions is to determine which structures offer stable reference for registration.

The CMFregistration modules also include the following functionalities:

  • Downsize image: for high resolution image files with large size, downsizing facilitates image analysis, making it more robust and saving computing processing time. In this tool, any voxel size can be entered to resample the volume.

  • Label extraction and Label addition: segmentation files can be modified to extract or add a anatomic region of interest into a new file.

  • Mask creation: segmentation files are used to : 1: generate CBCT files that can be used to mask anatomic regions that changed with growth and treatment ; or 2: generate a CBCT file that contains only the anatomic region of interest for regional superimpositions.

https://sites.google.com/a/umich.edu/dentistry-image-computing/Clinical-Applications/3d-registration---longitudinal-and-across-subjects

http://www.slicer.org/slicerWiki/index.php/Documentation/4.4/Extensions/CMFreg

cmfreg's People

Contributors

allemangd avatar bpaniagua avatar clementmirabel avatar jbvimort avatar jcfr avatar juanprietob avatar lassoan avatar phcerdan avatar pieper avatar viboen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cmfreg's Issues

Enhance downsize image functionality

Downsize CLI module always applies a linear interpolator when resampling the image and this does not work for labelmaps.

Even though a lot of different interpolators are created, linear interpolation is used always
https://github.com/DCBIA-OrthoLab/CMFreg/blob/master/Downsize/Downsize.cxx#L149

Suggestion to @juanprietob @ClementMirabel @pdedumast: Add an option to this CLI to allow selecting downsizing gray scale (linear interpolation) and label maps (nn interpolation)

Issues during ROI registration

@luciacev @bpaniagua @jcfr

Hi, here some issues with ROI registration option from Surface Registration module of SlicerCMF extension:

  1. Landmarks size. When the user increases the size of the model (zoom it the model), the size of the landmark decreases, then the correct position of the landmark cannot be correctly confirmed.

  2. Landmarks placement in different models (fixed and moving) in Dual 3D view. When the user places landmarks in one model (click on “add”) and before clicking to choose the correct position, if the cursor (arrow) passes to the other model and then returns to the previous one, it automatically creates other landmarks for the first model. It happens ever when passing to the other model window. It could happen either when placing landmarks on the fixed or moving models. In other words, the cursor cannot pass through one of the models, otherwise when it returns more landmarks are created automatically.

  3. ROI parameters. These problems with ROI were present in previous versions, as well. But, now it is worse. Ideally, it should allow the choice of “value of radius” whatever the user wants either in the fixed or the moving model. However, it happens some things:

    a. It stops working from nothing. Sometimes, the user could click in clean mesh and the ROI parameter option works again. Other times, the ROI parameter option stops and the software stops and crushes forcing to close the software and open it again.

    b. When some modifications have to be done to the “value of radius” of the ROI, the software slows progressively, sometimes stops and even closes automatically. Sometimes it only allows placing ROis in the fixed model and when the user tries to place them in the moving model, the software does not respond.

    c. When the “value of the radius” does not need to be modified and runs ok, the software only allows one registration to be performed. When the user tries to perform a second registration, the software stops and the user needs to close the software and open it again.

The mentioned issues happen for both (for Windows and macOS) Preview Release version of Slicer 4.11.0 (even in the new one, built 2020-05-14).

Thank you very much,
Regards,

Widgets not appearing in Surface Registration module

Issue migrated from https://issues.slicer.org/view.php?id=4476

Reporter: fepegar

Some of the main widgets are gone in the Surface Registration module of CMFreg extension.
I'm using the latest nightly (r26647).

  1. Open Slicer (with CMFreg extension previously installed)
  2. Go to Surface Registration module

Log:

[DEBUG][Qt] 20.11.2017 18:20:37 [] (unknown:0) - Session start time .......: 2017-11-20 18:20:37
[DEBUG][Qt] 20.11.2017 18:20:37 [] (unknown:0) - Slicer version ...........: 4.9.0-2017-11-18 (revision 26647) linux-amd64 - installed
[DEBUG][Qt] 20.11.2017 18:20:37 [] (unknown:0) - Operating system .........: Linux / 4.10.0-37-generic / 0000041-Ubuntu SMP Fri Oct 6 20:20:37 UTC 2017 - 64-bit
[DEBUG][Qt] 20.11.2017 18:20:37 [] (unknown:0) - Memory ...................: 7865 MB physical, 8071 MB virtual
[DEBUG][Qt] 20.11.2017 18:20:37 [] (unknown:0) - CPU ......................: GenuineIntel Intel(R) Core(TM) i5-7600 CPU @ 3.50GHz, 1 cores, 4 logical processors
[DEBUG][Qt] 20.11.2017 18:20:37 [] (unknown:0) - Developer mode enabled ...: yes
[DEBUG][Qt] 20.11.2017 18:20:37 [] (unknown:0) - Prefer executable CLI ....: yes
[DEBUG][Qt] 20.11.2017 18:20:37 [] (unknown:0) - Additional module paths ..: /home/fernando/.config/NA-MIC/Extensions-26647/CMFreg/lib/Slicer-4.9/cli-modules, /home/fernando/.config/NA-MIC/Extensions-26647/CMFreg/lib/Slicer-4.9/qt-scripted-modules
[DEBUG][Python] 20.11.2017 18:20:38 [Python] (/home/fernando/opt/Slicer/Nightly/lib/Python/lib/python2.7/site-packages/git/cmd.py:719) - Popen(%s, cwd=%s, universal_newlines=%s, shell=%s)
[DEBUG][Python] 20.11.2017 18:20:38 [Python] (/home/fernando/opt/Slicer/Nightly/lib/Python/lib/python2.7/site-packages/git/cmd.py:719) - Popen(%s, cwd=%s, universal_newlines=%s, shell=%s)
[DEBUG][Python] 20.11.2017 18:20:41 [Python] (/home/fernando/opt/Slicer/Nightly/lib/Slicer-4.9/qt-scripted-modules/SubjectHierarchyPlugins/AbstractScriptedSubjectHierarchyPlugin.py:36) - Scripted subject hierarchy plugin registered: Annotations
[DEBUG][Python] 20.11.2017 18:20:41 [Python] (/home/fernando/opt/Slicer/Nightly/lib/Slicer-4.9/qt-scripted-modules/SubjectHierarchyPlugins/AbstractScriptedSubjectHierarchyPlugin.py:36) - Scripted subject hierarchy plugin registered: SegmentEditor
[DEBUG][Python] 20.11.2017 18:20:41 [Python] (/home/fernando/opt/Slicer/Nightly/lib/Slicer-4.9/qt-scripted-modules/SubjectHierarchyPlugins/AbstractScriptedSubjectHierarchyPlugin.py:36) - Scripted subject hierarchy plugin registered: SegmentStatistics
[DEBUG][Qt] 20.11.2017 18:20:38 [] (unknown:0) - Number of registered modules: 143
[DEBUG][Qt] 20.11.2017 18:20:38 [] (unknown:0) - Number of instantiated modules: 143
[DEBUG][Qt] 20.11.2017 18:20:41 [] (unknown:0) - Number of loaded modules: 143
[DEBUG][Qt] 20.11.2017 18:20:41 [] (unknown:0) - Switch to module:  "Welcome"
[WARNING][Qt] 20.11.2017 18:20:41 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleButton'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:41 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleGroupBox'; defaulting to base class 'QGroupBox'."
[WARNING][Qt] 20.11.2017 18:20:41 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleGroupBox'; defaulting to base class 'QGroupBox'."
[WARNING][Qt] 20.11.2017 18:20:41 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleGroupBox'; defaulting to base class 'QGroupBox'."
[WARNING][Qt] 20.11.2017 18:20:41 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleButton'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:41 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleGroupBox'; defaulting to base class 'QGroupBox'."
[WARNING][Qt] 20.11.2017 18:20:41 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleGroupBox'; defaulting to base class 'QGroupBox'."
[INFO][Stream] 20.11.2017 18:20:41 [] (unknown:0) - Loading Slicer RC file [/home/fernando/.slicerrc.py]
[DEBUG][Qt] 20.11.2017 18:20:57 [] (unknown:0) - Switch to module:  "SurfaceRegistration"
[INFO][Stream] 20.11.2017 18:20:57 [] (unknown:0) - -------Surface Registration Widget SetUp--------
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'qMRMLWidget'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleButton'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - Designer: The enumeration-type property contentsFrameShape could not be read.
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a widget of the class 'qMRMLTreeView'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "Empty widget item in QVBoxLayout 'verticalLayout'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleButton'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - Designer: The enumeration-type property contentsFrameShape could not be read.
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleButton'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - Designer: The enumeration-type property contentsFrameShape could not be read.
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'qMRMLNodeComboBox'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'qMRMLNodeComboBox'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'qMRMLNodeComboBox'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'qMRMLNodeComboBox'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleButton'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - Designer: The enumeration-type property contentsFrameShape could not be read.
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkSliderWidget'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkSliderWidget'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleButton'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - Designer: The enumeration-type property contentsFrameShape could not be read.
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'qMRMLNodeComboBox'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'qMRMLNodeComboBox'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkCollapsibleButton'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - Designer: The enumeration-type property contentsFrameShape could not be read.
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkSliderWidget'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkSliderWidget'; defaulting to base class 'QWidget'."
[WARNING][Qt] 20.11.2017 18:20:57 [] (unknown:0) - "QFormBuilder was unable to create a custom widget of the class 'ctkSliderWidget'; defaulting to base class 'QWidget'."
[CRITICAL][Stream] 20.11.2017 18:20:57 [] (unknown:0) - Traceback (most recent call last):
[CRITICAL][Stream] 20.11.2017 18:20:57 [] (unknown:0) -   File "/home/fernando/.config/NA-MIC/Extensions-26647/CMFreg/lib/Slicer-4.9/qt-scripted-modules/SurfaceRegistration.py", line 70, in setup
[CRITICAL][Stream] 20.11.2017 18:20:57 [] (unknown:0) -     treeView.setMRMLScene(slicer.app.mrmlScene())
[CRITICAL][Stream] 20.11.2017 18:20:57 [] (unknown:0) - AttributeError: 'NoneType' object has no attribute 'setMRMLScene'
[CRITICAL][Stream] 20.11.2017 18:20:58 [] (unknown:0) - Traceback (most recent call last):
[CRITICAL][Stream] 20.11.2017 18:20:58 [] (unknown:0) -   File "/home/fernando/.config/NA-MIC/Extensions-26647/CMFreg/lib/Slicer-4.9/qt-scripted-modules/SurfaceRegistration.py", line 191, in enter
[CRITICAL][Stream] 20.11.2017 18:20:58 [] (unknown:0) -     fixedModel = self.inputFixedModelSelector.currentNode()
[CRITICAL][Stream] 20.11.2017 18:20:58 [] (unknown:0) - AttributeError: SurfaceRegistrationWidget instance has no attribute 'inputFixedModelSelector'

Downsize Error

Since November update, the 'Downsize' module is no longer working.
Screen Shot 2023-01-03 at 1 51 18 pm
Uploading Screen Shot 2023-01-03 at 1.51.29 pm.png…

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.