[Castor-users] Scatter rate estimation for LM-TOF-MLEM
jbaran
jbaran at ifj.edu.pl
Thu Jan 13 11:07:38 CET 2022
Hi Simon.
On 2022-01-04 17:42, STUTE Simon wrote:
> Hi Jakub,
>
> I am confused as you give two different legends for the cuboid data in
> your two latest emails.
Sorry for the mistake. I double-ckecked and the legend for the plot
(cuboid_fdur.png) is as follows:
TOP LEFT: true coincidences
TOP RIGHT: true + scatter coincidences
BOTTOM LEFT: true + scatter coincidences scatter corrected
BOTTOM RIGHT: profiles along the orange line from previous plots.
>
> OK for being both simulated data, indeed, otherwise you could not
> perform your SSRB-like scatter estimation... Sorry.
>
> Your frame duration is significant. As you take it into account when
> computing the scatter estimation (with your method), I do not
> understand why you initially forced it to be ignored in the
> reconstruction ? You should always take it into account.
I ignore it as it was from the previous study and I forget to turn it
off :) The last results are with the scan duration information
incorporated into reconstruction as you suggested.
>
> The way you estimate the scatter seems to be in agreement with what is
> expected into CASToR.
>
> For the cuboid data, I still do not understand how CASToR is including
> a scatter correction. It may be that the real scatter count of each
> LOR is written as a rate in the scatter correction term. If so, then,
> it is not in agreement with the model used in CASToR as the scatter
> rate is included in the forward model (in other words, it is not
> subtracted).
I think it is done like you said. From my understanding, CASToR
calculate the number of scatters and trues and then put the information
about the scatter rate term into list-mode as the number of coincidences
divided by the scan time.
> Anyway, if it is done this way, then it should not be
> done this way and you should not take this as a reference or so.
> You should definitely prefer your SSRB-like method of smoothing the
> scatter estimate.
>
> About your cdh file, everything looks fine.
>
> About what to look for in the datafile, I would like to see the total
> number of prompts VS total number of scatters, based on the CASToR
> datafile, and also the total number of corrected counts. You will be
> able to check if the scatter fraction is in agreement with the data
> coming out from GATE.
We are using the list-mode reconstruction so if it is satisfactory for
you I can give you the numbers of forward projection
(vOptimizer::DataStep1ForwardProjectModel( ... ) method) from the line:
m2p_forwardValues[a_th][b] += ap_Event->GetAdditiveCorrections(b) *
mp_ImageDimensionsAndQuantification->GetFrameDurationInSec(a_bed,
a_timeFrame)
In the attached files I provide a sample of the dumped data for
consecutive events. The values in columns correspond to:
1) m2p_forwardValues[a_th][b] (before adding the
> additiveCorrections)
2) ap_Event->GetAdditiveCorrections(b)
3) m2p_forwardValues[a_th][b] (after adding the additiveCorrections) -
The simulation time is 500 seconds. I dumped the data from 4 iterations
for first 957 events. The two files correspond to the two cases. In the
first case (castor_dev_factor1.txt) we used the values as described
above. In the second case (castor_dev_factor20000.txt) we added an extra
factor =20000 that multiply the scattering estimates. The factor was
obtained just by trial and guess to match the scale between the additive
correction part (scatter) and forward projection of the image estimate.
Besides I also attached two short presentations of one of my colleague
where he summarizes quantitatively all the staff we discuss. There is
also comparison between our data (Scatter_factor_CASTOR_part_V) and the
CAStoR benchmark (Scatter_factor_CASTOR_part_VI).
Concerning the differences I also have another question. We have
analyzed the benchmark data from the castor website (GE SIGNA PET/MR
scanner). We found that the multiplicative factor -
m_multiplicativeCorrection (oProjectionLine::ForwardProject(FLTNB*
ap_image) fromm line value /= m_multiplicativeCorrection;) is 1 in our
case and have various values in castor benchmark data. It seems that it
is a crucial difference in those cases (as seen in the presentations).
Could you elaborate what is its definition and how is it calculated?
The last thing which I would like to ask is a calibration factor given
in list-mode header from your benchmark data. Its value is Calibration
factor: 1.45762e+08. What is the definition of this value? CASToR
documentation states only: "The calibration factor associated to the
current scanner settings (default: 1.)"
All the best,
Jakub
>
> Best
> Simon
> ________________________________________
> De : jbaran <jbaran at ifj.edu.pl>
> Envoyé : lundi 3 janvier 2022 13:39
> À : STUTE Simon
> Cc : Castor Users
> Objet : Re: [Castor-users] Scatter rate estimation for LM-TOF-MLEM
>
> Hi Simon,
>
> I forget to add the proper legend to the cuboid.png file:
>
> The legend for the plot (cuboid_fdur.png) is as follows:
> TOP LEFT: true coincidences
> TOP RIGHT: true + scatter coincidences
> BOTTOM LEFT: true + scatter coincidences scatter corrected
> BOTTOM RIGHT: profiles along the orange line from previous plots.
>
> All the best
> Jakub
>
> On 2022-01-03 13:36, jbaran wrote:
>> Hi Simon,
>>
>> Happy New Year for you also.
>>
>> All datasets which I shown are from the simulation datasets.
>>
>> On 2022-01-03 12:47, STUTE Simon wrote:
>>> Hi Jakub,
>>>
>>> Happy new year to you and your project !
>>>
>>> About real data, what is the scan duration ? Could you share the
>>> header of the datafile ?
>>
>> I assumed that you mean the data from NEMA IEC siulation. The header
>> looks as follows:
>>
>> Data filename: factor_20000_df.Cdf
>> Number of events: 298175691
>> Data mode: list-mode
>> Data type: PET
>> Start time (s): 0
>> Duration (s): 500
>> Scanner name: TB_JPET_2nd_gen
>> Calibration factor: 1
>> Isotope: unknown
>> TOF information flag: 1
>> TOF resolution (ps): 230
>> List TOF measurement range (ps): 3000
>> List TOF quantization bin size (ps): 100
>> Scatter correction flag: 1
>>
>>
>>> I will try to modify as soon as possible the DatafileExplorer toolkit
>>> to display the total corrected counts in addition to the total number
>>> of counts, that that you will be able to see if everything is
>>> globally
>>> correct in the datafile.
>>
>> We developed such a toolkit (more like dumping the data to the
>> external file). Could you please tell me what I should look like for?
>>
>>>
>>> About simulated data, CASToR does not perform any scatter correction,
>>> so there is something I do not understand.
>>> I am not used to the Gate2CASToR toolkit, sorry.
>>> Anyway, in the figure you attached, I cannot believe that bottom left
>>> is true coincidences only, there should be something wrong.
>>
>> I am sorry I made a mistake in the description of the cuboid.png file.
>> It should be as follows:
>>
>> The legend for the plot (cuboid_fdu.png) is as follows:
>> TOP LEFT: true + scatter coincidences scatter corrected
>> TOP RIGHT: true + scatter coincidences
>> BOTTOM LEFT: true coincidences
>> BOTTOM RIGHT: profiles along the orange line from previous plots.
>>
>>> How many iterations/subsets are you using in the reconstructions ?
>>
>> We used 20 iterations. The results which I sent are for the 15th
>> iteration.
>>
>>>
>>> Best
>>> Simon
>>> ________________________________________
>>> De : jbaran <jbaran at ifj.edu.pl>
>>> Envoyé : lundi 20 décembre 2021 10:08
>>> À : STUTE Simon
>>> Cc : Castor Users
>>> Objet : Re: [Castor-users] Scatter rate estimation for LM-TOF-MLEM
>>>
>>> Hi Simon,
>>>
>>> thanks for your prompt reply. and sorry for the late response.
>>>
>>> I did as you suggest. I remove the -ignore-corr fdur flag from the
>>> reconstruction. I attached the results for both, NEMA IEC phantom
>>> (scatter fraction calculated by ourselves) - NEMA_IEC_fdur.png - and
>>> the
>>> cuboid phantom (scatter correction calculated by CASToR) -
>>> cuboid_fdur.png.
>>>
>>> For the NEMA IEC plot, all presented images are reconstructed with
>>> scatter correction implemented and tested by ourselves. The
>>> difference
>>> is in an applied -ignore-corr fdur flag and scaling factor of the
>>> scatter rates and the legend is as follows:
>>> TOP LEFT: scalling factor = 20000 with -ignore-corr fdur
>>> TOP RIGHT: scalling factor = 1 (without -ignore-corr fdur frame
>>> duration is incorporated)
>>> BOTTOM LEFT: scalling factor = 20000 superimposed on scalling factor
>>> =
>>> 1
>>> with -ignore-corr fdur (the images looks the same)
>>> BOTTOM RIGHT: profiles along the orange line from previous plots
>>>
>>> You can see that three of the reconstructed images looks very
>>> similar.
>>> The most significant difference is in the image on TOP LEFT so the
>>> one
>>> with scalling factor = 20000 with -ignore-corr fdur. But still the
>>> effect of the scatters is observable.
>>>
>>> Regarding the way of scatter rate estimation we did in principle as
>>> follows. We calculate the scatter corrections for each TOF bin. Then
>>> we
>>> merge some LORs to calculate the let say downsampled scatter rate.
>>> Then
>>> we divided this number by the number of LORs and time. In principle
>>> you
>>> can find some similarity to the SSRB procedure.
>>>
>>> For the cuboid study where the CASToR calculate the scatter rate
>>> factors
>>> internally, the results doesn't change. For this case I reconstruct
>>> images once again but without -ignore-corr fdur flag. Incorporation
>>> of
>>> the scatter rate does not give any improvement of the image quality.
>>> It
>>> seems that even with nonTOF data these is something wrong with
>>> scatter
>>> correction.
>>>
>>> The legend for the plot (cuboid_fdu.png) is as follows:
>>> TOP LEFT: true + scatter coincidences scatter corrected
>>> TOP RIGHT: true + scatter coincidences
>>> BOTTOM LEFT: true coincidences
>>> BOTTOM RIGHT: profiles along the orange line from previous plots.
>>>
>>> All the best,
>>> Jakub
>>>
>>>
>>>
>>> On 2021-12-07 11:51, STUTE Simon wrote:
>>>> Hi,
>>>>
>>>> OK thanks for the explanations.
>>>>
>>>> Why ignoring the frame duration in the reconstruction ?
>>>>
>>>> As the scatter correction is supplied as a rate, you really need the
>>>> frame duration to rescale the scatters to the prompt coincidences.
>>>>
>>>> Could you try to reconstruct with the frame duration taken into
>>>> account
>>>> ?
>>>>
>>>> How did you translate the estimation of the scatter rates based on a
>>>> sinogram to the list-mode data ? Did you take the binning size into
>>>> account ? You need to divide your scatter rate for a TOF bin by the
>>>> size of the TOF bin to get an "almost" continuous measurement.
>>>>
>>>> Simon
>>>>
>>>> ________________________________________
>>>> De : jbaran <jbaran at ifj.edu.pl>
>>>> Envoyé : mardi 7 décembre 2021 10:59
>>>> À : STUTE Simon
>>>> Cc : Castor Users
>>>> Objet : Re: [Castor-users] Scatter rate estimation for LM-TOF-MLEM
>>>>
>>>> Hi Simon,
>>>>
>>>> many thanks for the quick response. The answers are as follows:
>>>>
>>>>
>>>> On 2021-12-07 09:56, STUTE Simon wrote:
>>>>> Hello Jakub,
>>>>>
>>>>> Thanks for the detailed email !
>>>>>
>>>>> Do you take the scan duration into account in the datafile header ?
>>>>
>>>> Yes, I added the information about the scan duration in the header.
>>>> On
>>>> the other hand in the reconstruction I used -ignore-corr fdur
>>>> option.
>>>>
>>>>>
>>>>> You say that you estimated the scatter rate for each TOF bin
>>>>> independently to be 1-2. Is it "1 or 2" (which would be insanely
>>>>> high)
>>>>> or "e-2" ?
>>>>
>>>> I was not explicit here. The scatter rate passed to the castor lm is
>>>> ranging from 0 to 2. However most values are in the range from 1e-3
>>>> to
>>>> 1e-1.
>>>>
>>>>>
>>>>> How did you compute this estimated scatter rate ?
>>>>
>>>> We made basic estimation based on Monte Carlo simulations - NEMA IEC
>>>> study. For the cubic study we use -sc flag during the conversion of
>>>> the
>>>> ROOT data to CASToR. For this the scatter rate is at the level of
>>>> about
>>>> 1e-4.
>>>>
>>>>>
>>>>> And how did you translate this information into your list-mode file
>>>>> ?
>>>>
>>>> We adapt the CASToR code to read the scatter correction rate factor
>>>> from
>>>> the matrix provided by ourselves.
>>>>
>>>>>
>>>>> Best
>>>>> Simon
>>>>
>>>> All the best,
>>>> Jakub
>>>> _______________________________________________
>>>> Castor-users mailing list
>>>> Castor-users at lists.castor-project.org
>>>> https://lists.castor-project.org/mailman/listinfo/castor-users
>>>>
>>>> To look for something in the mailing-list archives, use the search
>>>> box
>>>> at:
>>>> https://castor-project.org/mailing-list
> _______________________________________________
> Castor-users mailing list
> Castor-users at lists.castor-project.org
> https://lists.castor-project.org/mailman/listinfo/castor-users
>
> To look for something in the mailing-list archives, use the search box
> at:
> https://castor-project.org/mailing-list
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: castor_dev_factor2000.txt
URL: <http://lists.castor-project.org/pipermail/castor-users/attachments/20220113/b453ed72/attachment-0002.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: castor_dev_factor1.txt
URL: <http://lists.castor-project.org/pipermail/castor-users/attachments/20220113/b453ed72/attachment-0003.txt>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Scatter_factor_CASTOR_part_VI.pdf
Type: application/pdf
Size: 1038458 bytes
Desc: not available
URL: <http://lists.castor-project.org/pipermail/castor-users/attachments/20220113/b453ed72/attachment-0002.pdf>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Scatter_factor_CASTOR_part_V.pdf
Type: application/pdf
Size: 757899 bytes
Desc: not available
URL: <http://lists.castor-project.org/pipermail/castor-users/attachments/20220113/b453ed72/attachment-0003.pdf>
More information about the Castor-users
mailing list