Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@KrisThielemans
Copy link
Collaborator

@KrisThielemans KrisThielemans commented Jul 11, 2019

Fixes #351

It should not change results for the mMR.

- We now have 2 members to find out about virtual crystals.
- Correct Biograph 16 info now that we can do this
- Add mCT
- remove hard-coded numbers
- write "gap" code in terms of new `get_num_virtual_crystals...()` functions.

This might work for the mCT as well now
@KrisThielemans KrisThielemans requested a review from NikEfth July 11, 2019 22:30
@KrisThielemans
Copy link
Collaborator Author

@olivierverdier Please check if this works for you. (obviously, non-TOF only for now)

@KrisThielemans
Copy link
Collaborator Author

Hi

Some doc on how to create a “normalisation” sinogram from the command line:

export INPUT=bla.s.hdr
export OUTPUT=norm_projdata.hs
export ECATNORM=norm.n.hdr
correct_projdata ~/devel/STIR/examples/Siemens-mMR/correct_projdata.par

Note that if you want the “efficiency factors” (which is better as it’s easier to see the gaps which should have zero efficiency), you need to edit the .par file

@KrisThielemans
Copy link
Collaborator Author

An important thing to check is how the efficiencies are stored in the norm file. For the mMR, we had to do a strange shift, see

for (int r=0; r<scanner_ptr->get_num_rings(); ++r)
{
int c=scanner_ptr->get_num_detectors_per_ring()-1;
const float save_last_eff = efficiency_factors[r][c];
for (; c>0; --c)
{
efficiency_factors[r][c]= efficiency_factors[r][c-1];
}
efficiency_factors[r][c]= save_last_eff;
}
.

It's likely that this has to be the same for all Siemens scanners I guess, but who knows?

Best way to check is with a high count uniform cylinder and try it both ways. (you could look at the normalised sinograms, or of course the image). Might be a bit subtle.

@KrisThielemans
Copy link
Collaborator Author

This could work for the Biograph 16 as well, but would need uncommenting

.

Note that I changed

1, 2, 13+1, 13+1, 0, 0, 1);// TODO bucket/singles info?
. It previously pretended there was only 1 axial block to make sure that the test didn't fail.

@NikEfth
Copy link
Collaborator

NikEfth commented Jul 18, 2019

Good news, I just found some spare data to test this.

@KrisThielemans
Copy link
Collaborator Author

Anyone any info on this? I'd like to merge this in a week or so

@KrisThielemans
Copy link
Collaborator Author

Listmode code will need some changes as well, in particular

if (proj_data_info_ptr->get_max_ring_difference(0) != proj_data_info_ptr->get_min_ring_difference(0))
error("CListEventECAT8_32bit can only handle axial compression==1");
this->segment_sequence.resize(2*max_ring_diff+1);
this->sizes.resize(2*max_ring_diff+1);
this->segment_sequence[0]=0;
this->sizes[0]=num_rings;
for (int ringdiff=1; ringdiff<=max_ring_diff; ++ringdiff)
{
this->segment_sequence[2*ringdiff-1]=-ringdiff;
this->segment_sequence[2*ringdiff]=ringdiff;
this->sizes[2*ringdiff-1]=num_rings-ringdiff;
this->sizes[2*ringdiff]=num_rings-ringdiff;
}
Relevant replacement lines are mentioned in
#355 (comment)

@KrisThielemans
Copy link
Collaborator Author

any feedback please?

@KrisThielemans
Copy link
Collaborator Author

I'll close this and put in a PR on the release_4.0.0 branch

@KrisThielemans KrisThielemans changed the base branch from master to release_4.0.0 April 21, 2020 19:56
@KrisThielemans KrisThielemans changed the title Siemens mCT additions Siemens mCT and other scanners with virtual crystal additions Apr 21, 2020
@KrisThielemans
Copy link
Collaborator Author

I've put in the change for the listmode data suggested above. However, it doesn't fix the problem that the rest of the code is limited to span=1. That needs more work so won't be for this PR.

@KrisThielemans
Copy link
Collaborator Author

I'll merge this. However, somebody will have to check if the ECAT8 normalisation code actually work for scanners other than the mMR. Volunteers needed!

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

Successfully merging this pull request may close these issues.

add mCT support (allow for virtual crystals)

2 participants