[Castor-users] Scatter rate estimation for LM-TOF-MLEM
jbaran
jbaran at ifj.edu.pl
Thu Jan 27 00:02:49 CET 2022
Hi Simon,
I would like to kindly ask if you found some time to investigate the
issue we discussed here.
All the best,
Jakub
On 2022-01-13 11:07, jbaran wrote:
> 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
>
> _______________________________________________
> 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
More information about the Castor-users
mailing list