BrownBiomechanics / SlicerAutoscoperM

This 3D Slicer extension enables users to perform image registration.
https://autoscoperm.slicer.org
MIT License
1 stars 4 forks source link

Include dedicated preprocessing for 3D 4DCT (3D Hierarchical Registration) #142

Open amymmorton opened 1 week ago

amymmorton commented 1 week ago

Rather than parse the partial volume into a tiff and tfm file couple| and have to modify the cast (#123 )

Include a preprocessing UI tab in 3d hierachical module -

? duplicate segmentation ui?

amymmorton commented 1 week ago

I can test the 3D-3D with nnrd split volumes to determine the status of registration output as is in the 3DH 

amymmorton commented 1 week ago

Using the BILATERAL wrist set

Split volume of all visible segments (allow overlap) image

image

Traceback (most recent call last): File "C:\Users\amorton1\AppData\Local\slicer.org\Slicer 5.6.2\bin\Python\slicer\util.py", line 3255, in tryWithErrorDisplay yield File "C:/Users/amorton1/AppData/Local/slicer.org/Slicer 5.6.2/slicer.org/Extensions-32448/SlicerAutoscoperM/lib/Slicer-5.6/qt-scripted-modules/Hierarchical3DRegistration.py", line 244, in onApplyButton self.logic.registerSequence(CT, rootID, startFrame, endFrame, trackOnlyRoot) File "C:/Users/amorton1/AppData/Local/slicer.org/Slicer 5.6.2/slicer.org/Extensions-32448/SlicerAutoscoperM/lib/Slicer-5.6/qt-scripted-modules/Hierarchical3DRegistration.py", line 519, in registerSequence self.registerRigidBody( File "C:/Users/amorton1/AppData/Local/slicer.org/Slicer 5.6.2/slicer.org/Extensions-32448/SlicerAutoscoperM/lib/Slicer-5.6/qt-scripted-modules/Hierarchical3DRegistration.py", line 467, in registerRigidBody elastixObj.UpdateLargestPossibleRegion() File "C:\Users\amorton1\AppData\Local\slicer.org\Slicer 5.6.2\lib\Python\Lib\site-packages\itk\ITKCommonBasePython.py", line 3115, in UpdateLargestPossibleRegion return _ITKCommonBasePython.itkProcessObject_UpdateLargestPossibleRegion(self) RuntimeError: D:\a\im\build\cp39-cp39-win_amd64_deps\elx-src\Core\Main\itkElastixRegistrationMethod.hxx:387: ITK ERROR: ElastixRegistrationMethod(000001BC1DB1E7D0): Internal elastix error: See elastix log (use LogToConsoleOn() or LogToFileOn()).

amymmorton commented 1 week ago

Using BN00124

I attempted to create the nrrd from autosegmentation/ split volume - I saved to file, closed slicer and loaded all nrrd from file

Alo get an elastix error: image

Some transforms were populated: image

sbelsk commented 1 week ago

Using BN00124 I attempted to create the nrrd from autosegmentation/ split volume - I saved to file, closed slicer and loaded all nrrd from file Also get an elastix error

In the second scenario you described, did you select all frames in the sequence for registration? If so, I believe the error you described comes from a bug with the frame index, addressed in https://github.com/BrownBiomechanics/SlicerAutoscoperM/pull/127.

The issue I believe we're seeing here is that the UI indicates to the user that frame number 0 through frame number totalNumberOfFrames can be registered. This doesn't make sense because when using 0 as the first index, the last frame has index totalNumberOfFrames-1 (so frame with index number totalNumberOfFrames doesn't exist). Based on the screenshot, it looks like the registration process failed after registering the last frame. I was able to reproduce a similar error when selecting the last frame to be registered, and I too saw some of the transforms being populated like you mentioned.

amymmorton commented 1 week ago

Thanks Shelly- yes I believe I used the full Sequence (I was under the impression that the range issue had been corrected - so I didn't modify).

Regardless - I think the bigger issue is the terrible registration results

On Thu, Nov 14, 2024 at 9:43 AM Shelly Belsky @.***> wrote:

Using BN00124 I attempted to create the nrrd from autosegmentation/ split volume - I saved to file, closed slicer and loaded all nrrd from file Also get an elastix error

In the second scenario you described, did you select all frames in the sequence for registration? If so, I believe the error you described comes from a bug with the frame index, addressed in #127 https://github.com/BrownBiomechanics/SlicerAutoscoperM/pull/127.

The issue I believe we're seeing here is that the UI indicates to the user that frame number 0 through frame number totalNumberOfFrames can be registered. This doesn't make sense because when using 0 as the first index, the last frame has index totalNumberOfFrames-1 (so frame with index number totalNumberOfFrames doesn't exist). Based on the screenshot, it looks like the registration process failed after registering the last frame. I was able to reproduce a similar error when selecting the last frame to be registered, and I too saw some of the transforms being populated like you mentioned.

— Reply to this email directly, view it on GitHub https://github.com/BrownBiomechanics/SlicerAutoscoperM/issues/142#issuecomment-2476533324, or unsubscribe https://github.com/notifications/unsubscribe-auth/APUUPFUHNH4LVPGHB6EVJYD2ASZJ3AVCNFSM6AAAAABRSFFIX2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZWGUZTGMZSGQ . You are receiving this because you authored the thread.Message ID: @.***>

--

Amy Morton MSc Senior Research Engineer

*Brown University Healt*h

Orthopaedic Research, 1 Hoppin Street, Coro West, 4th Providence, RI 02903-4923

linkedin https://www.linkedin.com/in/amy-morton-35374340/

amymmorton commented 15 minutes ago

Attempting to use SequenceRegistration on wrist 3dct

Will update on progress: image