users > CMTK motion correction(FILM) questions
Showing 1-6 of 6 posts
Nov 7, 2013 05:11 PM | haewon nam
CMTK motion correction(FILM) questions
I am using CMTK with motion correction for interleaved MRI.
I have a couple of questions during using the sw.
1. When the size of the data is large(e.g., 256x180x256), the correction algorithm didn't go through. Is there any tip I need to get in mind to use FILM?(because, the exact same motion with lower resolution(128x90x256) can be corrected)
2. Can I set the motion parameters if I know the motion parameters? Or, can I set the initial guess for the motion parameters for registration?
I am really appreciate to release this software. Thank you,
Haewon Nam
I have a couple of questions during using the sw.
1. When the size of the data is large(e.g., 256x180x256), the correction algorithm didn't go through. Is there any tip I need to get in mind to use FILM?(because, the exact same motion with lower resolution(128x90x256) can be corrected)
2. Can I set the motion parameters if I know the motion parameters? Or, can I set the initial guess for the motion parameters for registration?
I am really appreciate to release this software. Thank you,
Haewon Nam
Nov 7, 2013 06:11 PM | Torsten Rohlfing
RE: CMTK motion correction(FILM) questions
Hi -
Originally posted by haewon nam:
When you say, "didn't go through", what do you mean exactly? Did you get an error message, did the tool crash, did it just run forever, or did it complete but not generate any output?
I assume you're sure your machine has enough memory?
It would also help to know how far in the process you get ... if you add "--verbose-level 9" to your command line, you should get a very detailed output of the various processing steps. That may help pinpoint the problem.
2. Can I set the motion parameters if I know the motion parameters? Or, can I set the initial guess for the motion parameters for registration?
The tool has an optional command line parameter, "--import-xforms-path", to import existing transformations between the passes.
To see what file format is expected, I would suggest using the "--export-xforms-path" command to export computed transformations for an example case.
To be honest, it has been a long time since I wrote this, I haven't used these tools in years myself, and the import/export of transformations was never really intended for general use.
Best,
Torsten
Originally posted by haewon nam:
I am using CMTK with motion correction for
interleaved MRI.
I have a couple of questions during using the sw.
1. When the size of the data is large(e.g., 256x180x256), the correction algorithm didn't go through. Is there any tip I need to get in mind to use FILM?(because, the exact same motion with lower resolution(128x90x256) can be corrected)
I have a couple of questions during using the sw.
1. When the size of the data is large(e.g., 256x180x256), the correction algorithm didn't go through. Is there any tip I need to get in mind to use FILM?(because, the exact same motion with lower resolution(128x90x256) can be corrected)
When you say, "didn't go through", what do you mean exactly? Did you get an error message, did the tool crash, did it just run forever, or did it complete but not generate any output?
I assume you're sure your machine has enough memory?
It would also help to know how far in the process you get ... if you add "--verbose-level 9" to your command line, you should get a very detailed output of the various processing steps. That may help pinpoint the problem.
2. Can I set the motion parameters if I know the motion parameters? Or, can I set the initial guess for the motion parameters for registration?
The tool has an optional command line parameter, "--import-xforms-path", to import existing transformations between the passes.
To see what file format is expected, I would suggest using the "--export-xforms-path" command to export computed transformations for an example case.
To be honest, it has been a long time since I wrote this, I haven't used these tools in years myself, and the import/export of transformations was never really intended for general use.
Best,
Torsten
Nov 12, 2013 04:11 PM | haewon nam
RE: CMTK motion correction(FILM) questions
Thank you for your reply.
1. What I meant is, it didn't correct it. I guess it is because of the registration error.
2. Could you let me know how I can import the known transformation.(in 4x4 matrix, as SPM? What should be the file format?
Thanks again!
Haewon
1. What I meant is, it didn't correct it. I guess it is because of the registration error.
2. Could you let me know how I can import the known transformation.(in 4x4 matrix, as SPM? What should be the file format?
Thanks again!
Haewon
Nov 12, 2013 05:11 PM | Torsten Rohlfing
RE: CMTK motion correction(FILM) questions
Originally posted by haewon nam:
That is possible.
Another common source of error, however, is not to set the number of "passes" correctly, i.e., the number of partial, interleaved images. "film" cannot detect that itself, and the default may be incorrect. If you are not sure, you could use the "split" tool in CMTK to split your uncorrected volume into passes. If these still show the usual motion artifacts, then your interleave factor (or slice orientation) are likely incorrect.
Sorry, you cannot import a transformation from SPM.
I (and therefore CMTK) do not know how to interpret SPM's transformation, what coordinate system they refer to (what are the axes? what is the origin?), etc.
An alternative approach would be to use CMTK's own "registrationx" tool to register the separate passes together, after you extract them using "split." Then use the "volume_reconstruction" tool for reconstruction using the pre-computed transformations.
TR
Thank you for your reply.
1. What I meant is, it didn't correct it. I guess it is because of the registration error.
1. What I meant is, it didn't correct it. I guess it is because of the registration error.
That is possible.
Another common source of error, however, is not to set the number of "passes" correctly, i.e., the number of partial, interleaved images. "film" cannot detect that itself, and the default may be incorrect. If you are not sure, you could use the "split" tool in CMTK to split your uncorrected volume into passes. If these still show the usual motion artifacts, then your interleave factor (or slice orientation) are likely incorrect.
2. Could you let me know how I can import the
known transformation.(in 4x4 matrix, as SPM? What should be the
file format?
Sorry, you cannot import a transformation from SPM.
I (and therefore CMTK) do not know how to interpret SPM's transformation, what coordinate system they refer to (what are the axes? what is the origin?), etc.
An alternative approach would be to use CMTK's own "registrationx" tool to register the separate passes together, after you extract them using "split." Then use the "volume_reconstruction" tool for reconstruction using the pre-computed transformations.
TR
Nov 12, 2013 09:11 PM | haewon nam
RE: CMTK motion correction(FILM) questions
Thanks for your suggestion. Yes, it would be much better if I can
use volume_reconstruction after co-registering two passes. Could
you let me know how I can do volume_reconstruction? I cannot find
the manual in the doc.
So, say, pass1.img(with resolution [1:n,1:m,1:2:k], odd volume) and pass2.img((1:n,1:m,2:2:k), even volume) are already co-registered, how can I run volume_reconstruction to generate (1:n,1:m,1:k)?
I already looked over volume_reconstruction --help. I couldn't find out what is the format of the xform.
So, say, pass1.img(with resolution [1:n,1:m,1:2:k], odd volume) and pass2.img((1:n,1:m,2:2:k), even volume) are already co-registered, how can I run volume_reconstruction to generate (1:n,1:m,1:k)?
I already looked over volume_reconstruction --help. I couldn't find out what is the format of the xform.
Nov 12, 2013 09:11 PM | Torsten Rohlfing
RE: CMTK motion correction(FILM) questions
Try something like this:
volume_reconstruction --isotropic-injection --recon-grid-path original.hdr --write-injected-image inject.hdr -o recon.hdr pass1.hdr xform pass2.hdr
where pass1.hdr and pass2.hdr are your two pass images (I prefer using the .hdr file over using .img).
Also, "original.hdr" should be your original 3D image that both passes were extracted from. (This will define the grid to which the motion-corrected image is reconstructed).
And "xform" should be a transformation computed by either CMTK's "registration" or "registrationx" tools.
When this completes, you should find two output images:
1) inject.hdr - image after the initial volume injection step, for verification only
2) recon.hdr - the final, reconstructed image after volume injection followed by (with default parameters) 20 iterations of cubic-kernel inverse interpolation minimizing the L2 reconstruction error.
Good luck!
TR
Originally posted by haewon nam:
volume_reconstruction --isotropic-injection --recon-grid-path original.hdr --write-injected-image inject.hdr -o recon.hdr pass1.hdr xform pass2.hdr
where pass1.hdr and pass2.hdr are your two pass images (I prefer using the .hdr file over using .img).
Also, "original.hdr" should be your original 3D image that both passes were extracted from. (This will define the grid to which the motion-corrected image is reconstructed).
And "xform" should be a transformation computed by either CMTK's "registration" or "registrationx" tools.
When this completes, you should find two output images:
1) inject.hdr - image after the initial volume injection step, for verification only
2) recon.hdr - the final, reconstructed image after volume injection followed by (with default parameters) 20 iterations of cubic-kernel inverse interpolation minimizing the L2 reconstruction error.
Good luck!
TR
Originally posted by haewon nam:
Thanks for your suggestion. Yes, it would be
much better if I can use volume_reconstruction after co-registering
two passes. Could you let me know how I can do
volume_reconstruction? I cannot find the manual in the doc.
So, say, pass1.img(with resolution [1:n,1:m,1:2:k], odd volume) and pass2.img((1:n,1:m,2:2:k), even volume) are already co-registered, how can I run volume_reconstruction to generate (1:n,1:m,1:k)?
So, say, pass1.img(with resolution [1:n,1:m,1:2:k], odd volume) and pass2.img((1:n,1:m,2:2:k), even volume) are already co-registered, how can I run volume_reconstruction to generate (1:n,1:m,1:k)?