Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

--head Resampled image is misaligned with NAC. #18

Open
ashgillman opened this issue Jul 18, 2018 · 9 comments
Open

--head Resampled image is misaligned with NAC. #18

ashgillman opened this issue Jul 18, 2018 · 9 comments

Comments

@ashgillman
Copy link
Contributor

ashgillman commented Jul 18, 2018

Hi,

I have run a STIR non-attenuation corrected reconstruction on my data, and compared the output with nm_mrac2mu's umap output. It is misaligned in the y direction. Any suggestions/speculations as to what might be causing this?

Cheers,
Ash

NB: If you click the images they will open in a new tab and you can cycle.
Look between the UTE and the NAC, since they are a similar scale the silly colorbar won't make the image move.

410141_umap hv
410141_ute2 hv
nac_sirf_s21i30_30 hv

@bathomas
Copy link
Collaborator

Strange. Your NAC file name says SIRF but you state STIR. Which are you using?

@ashgillman
Copy link
Contributor Author

SIRF sorry

@ashgillman
Copy link
Contributor Author

ashgillman commented Jul 18, 2018

Perhaps because the resampled origin is set to be the same as the input origin? Usually, our radiographers will play around with the acquisition FOV, I'd have thought the resampled origin would not depend on the input.

https://github.com/UCL/petmr-rd-tools/blob/master/lib/nmtools/MRAC.hpp#L692

@ashgillman
Copy link
Contributor Author

ashgillman commented Jul 18, 2018

I'm also getting

E0718 23:21:20.582680  5732 MRAC.hpp:683] Input x or y size is odd. Unsure how to resample!
E0718 23:21:20.582690  5732 NMmrac2mu.cpp:143] Failed to scale image

Which is an error I inserted, since I had made some assumptions about how the output size calculation should go. But is there a reason that the output shape isn't just set to 344*344*127?

Although note this is probably unrelated, but potentially the same solution

@ashgillman
Copy link
Contributor Author

If I could add a third unrelated "problem" with potentially the same solution:
When I also run mrac2mu on the vendor reconstruction, it has a different size in the z axis
410141_recon-vendor hv

I put quotes around "problem" because I think that STIR/SIRF can handle this (offset in z). But, still if you are using the --head option I might think you'd expect to always get 344x344x127?

@ashgillman
Copy link
Contributor Author

The solution I am hinting at is that perhaps the output size should be taken from the JSON specification in the beginning. As an added bonus, you could potentially in the future extend this so that you could supply a JSON file input with resampling parameters (I assume this was the original intent).

@bathomas
Copy link
Collaborator

bathomas commented Jul 18, 2018

Your assumption about the JSON is correct, I just haven't got round to it. (More than happy to accept a PR...)

Yes, I would expect to get 344x344x127 with --head, but I didn't really think about resampling other images. If you are rescaling is failing because x and or y are not even, then this means that your input image is not 192^3? If so, then the code as it stands will fall over.

What do you mean when you say radiographer's play with the FOV, do you mean the MR acquisition or they retro recon. the PET with a zoom and/or offset?

@ashgillman
Copy link
Contributor Author

My input is 192x192x128. As I said, I think that STIR/SIRF handle z offsets, so long as the z resolution is acceptable (half the ring spacing?), so it /has/ worked for me (just not this time).

I mean the MR acquisition, so it is not necessarily centered transaxially.

So if the output transform is constant (identity) and the output size and spacing are parameters, that leaves the origin and the direction to be calculated.

Origin
I guess the image should lie in the center, such that outputOrigin[0] = outputSize[0] * outputShape[0] // 2 and likewise for the y-axis. I am not sure for the z-axis though...

Direction
Currently this is taken from the input, but I think maybe it should actually also be a constant? Again, I am not sure which. The default doesn't work for me currently, so I have to use --orient RAS. My DICOM direction is
(0020,0037) DS [1\0\0\0\0\-1] # 12,6 Image Orientation (Patient)

I am happy to make some changes, test and make a PR. The main issue at the moment though is that z-origin.

Does this sound correct to you?

@bathomas
Copy link
Collaborator

Origin, yes, but I feel like the direction should come from the input. I deliberately chose RAI as the default because I believe this is what Siemens appear to uses in e7 tools. The reason for this is that (assuming everything goes fine) the output volume of nm_mrac2mu without any switches should be almost identical to the raw mu-map volume from e7 tools.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants