Hi Simon,

I also got a question about how the weighting is performed.

Before the question, first of all there may be an error
in rtk::ThreeDCircularProjectionGeometry::GetAngularGapsWithNext(...). I
cannot see the reason for the factor 0.5 in the following code:
  //Last projection wraps the angle of the first one
  angularGaps[curr->second] = 0.5 * ( sangles.begin()->first +
2*vnl_math::pi - curr->first );
If this is indeed wrong, then the max gap can be underestimated in
the ParkerShortScanImageFilter, which you use for the 20 degree condition.

Then here's the question: why does RTK eliminate the first and last
projections before calculating the weights? The Parker weights are already
all zeros for the first and the last projections involved in the
calculation. If you rule out the first and the last projection in the data
set in advance, you then have four projections with zeros and the effective
scan angle is smaller then the actual short scan, which may lead to an
insufficient data problem.

Best regards,
Chao



2015-12-18 18:18 GMT+01:00 Simon Rit <[email protected]>:

> Hi Shiras,
> Sorry for the delayed answer, times are busy. The way RTK computes the
> spanned arc is from the second projection angle to the before last
> projection angle, i.e., in your case
> 209.609216488925-11.6067737022482
> so it's a span of 199 degrees and your cone angle is indeed too large.
> Like I said, this part of RTK is perfectible and there is no way to change
> this but change the code.
> However, the source of artefacts might be something else. On simulated
> data, I tried:
>   rtkprojectshepploganphantom --like original_proj.mhd -g
> geometry_parker_corr.xml -o proj.mha
>   rtkfdk -p . -r proj.mha -o fdk.mha -g geometry_parker_corr.xml
> and the result is not that bad. What do you think? Can you show us a
> snapshot if sg's wrong in your opinion?
> Simon
>
>
> On 09/12/2015 11:01, Shiras Abdurahman wrote:
>
> Dear Simon,
>
> I am attaching the mhd files of projections.
>
> With regards,
> Shiras
>
> On Tue, Dec 8, 2015 at 6:17 PM, Simon Rit <[email protected]>
> wrote:
>
>> Hi,
>> The geometry files look ok to me. What is the projection information? If
>> you're still getting the same message as before, I think it's because you
>> don't have enough data. If you send the mhd file of the projections (just
>> the mhd, not the raw data), I can try to test it on simulated data to let
>> you know my feeling.
>> Simon
>>
>> On Tue, Dec 8, 2015 at 5:41 PM, Shiras Abdurahman < <[email protected]>
>> [email protected]> wrote:
>>
>>> Dear Simon,
>>>
>>> I tried this option and unfortunately it did not work. I added zero
>>> projections and modified geometry files. However, I am getting same
>>> artifacts in the volume. Voxel values changed a little bit that indicates
>>> during backprojection it still considers extreme projections. I am also
>>> getting an output message same as before.
>>>
>>> I am attaching geometry files.
>>>
>>> With regards,
>>> Shiras
>>>
>>> On Tue, Dec 8, 2015 at 10:15 AM, Simon Rit <
>>> <[email protected]>[email protected]> wrote:
>>>
>>>> So calling AddProjection before and after the loop with an adequate
>>>> gantry_angle should work.
>>>> Simon
>>>>
>>>> On Tue, Dec 8, 2015 at 9:52 AM, Shiras Abdurahman <
>>>> <[email protected]>[email protected]> wrote:
>>>>
>>>>> Drear Simon,
>>>>>
>>>>> I generate the geometry with system geometry parameters and using
>>>>> AddProjection method.
>>>>>
>>>>> Here is the code
>>>>>
>>>>>
>>>>> rtk::ThreeDCircularProjectionGeometry::Pointer rtk_sys_geometry_;
>>>>> rtk_sys_geometry_ = rtk::ThreeDCircularProjectionGeometry::New();
>>>>> for (uint16_t proj_index = 0; proj_index < num_projections_;
>>>>> proj_index++)
>>>>> {
>>>>>
>>>>> rtk_sys_geometry_->AddProjection(rtk_geom_params_.at(proj_index).sid_mm,
>>>>> rtk_geom_params_.at(proj_index).sdd_mm,
>>>>> rtk_geom_params_.at(proj_index).gantry_angle_deg,
>>>>> rtk_geom_params_.at(proj_index).proj_offset_x_mm,
>>>>> rtk_geom_params_.at(proj_index).proj_offset_y_mm,
>>>>> rtk_geom_params_.at(proj_index).out_plane_angle_deg,
>>>>> rtk_geom_params_.at(proj_index).in_plane_angle_deg,
>>>>> rtk_geom_params_.at(proj_index).src_offset_x_mm,
>>>>> rtk_geom_params_.at(proj_index).src_offset_y_mm);
>>>>> }
>>>>>
>>>>>  And then write to xml file.
>>>>>
>>>>> Shiras
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Dec 8, 2015 at 9:23 AM, Simon Rit <
>>>>> <[email protected]>[email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>> rtkfdk.cxx just read the geometry from a file so the best is to
>>>>>> modify the geometry file. How do you generate the geometry?
>>>>>> For example, if you use rtksimulated geometry, let's say that you
>>>>>> were using:
>>>>>> rtksimulatedgeometry -n 200 -a 200 -o g.xml
>>>>>> then you'll have to replace it with
>>>>>> rtksimulatedgeometry -n 202 -a 202 -o g.xml -f -1
>>>>>> Don't forget to add dummy projection at the beginning and the end. If
>>>>>> you use a more complex geometry, maybe SimpleRTK
>>>>>> <http://wiki.openrtk.org/index.php?title=SimpleRTK> can be helpful
>>>>>> (I'd use that) or you'd have to modify the cxx code to add these 
>>>>>> additional
>>>>>> projections in the geometry and the projection stack.
>>>>>> Simon
>>>>>>
>>>>>>
>>>>>> On Tue, Dec 8, 2015 at 8:51 AM, Shiras Abdurahman <
>>>>>> <[email protected]>[email protected]> wrote:
>>>>>>
>>>>>>> Dear Simon,
>>>>>>>
>>>>>>> Thanks a lot for the reply. Can you please inform me how can I set
>>>>>>> where the arc starts?
>>>>>>> Do I need to modify geometry also?
>>>>>>> If you can point the line of code rtkfdk.cxx, it will be really
>>>>>>> helpful.
>>>>>>>
>>>>>>> With regards,
>>>>>>> Shiras
>>>>>>>
>>>>>>> On Tue, Dec 8, 2015 at 7:56 AM, Simon Rit <
>>>>>>> <[email protected]>[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Dear Shiras,
>>>>>>>> Yes, for practical reasons the first and the last projections are
>>>>>>>> set to 0 and the arc used in the Parker weighting starts between the 
>>>>>>>> first
>>>>>>>> two projections and ends between the lasts two projections. There is a
>>>>>>>> simple solution: add a projection at the beginning and the end of the 
>>>>>>>> arc,
>>>>>>>> which can contain any pixel values but should be set where you want 
>>>>>>>> this
>>>>>>>> arc to start. In the future, I think someone should once take the time 
>>>>>>>> to
>>>>>>>> correct this but I haven't so far. I'll keep you posted on the mailing 
>>>>>>>> list
>>>>>>>> when it's corrected.
>>>>>>>> Simon
>>>>>>>>
>>>>>>>> On 07/12/2015 12:04, Shiras Abdurahman wrote:
>>>>>>>>
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> I am trying to reconstruct a volume from projection data generated
>>>>>>>> with C-arm CT. There are 248 projections with an angular range of 199
>>>>>>>> degree. Technically, parker weighting should run without any problems.
>>>>>>>> However, I am getting an output message that "You do not have enough 
>>>>>>>> data
>>>>>>>> for proper parker weighting". After parker weighting, the two extreme
>>>>>>>> projections (projection number 1 and 248) were completely zero and thus
>>>>>>>> reconstructed volume contained artifacts. When I increased the angular
>>>>>>>> range, this problem did not happen. How can I solve this problem 
>>>>>>>> without
>>>>>>>> increasing angular range? Is there any threshold constant that I can 
>>>>>>>> change
>>>>>>>> in command line  or in my code?
>>>>>>>>
>>>>>>>> I really appreciate any help you can provide.
>>>>>>>>
>>>>>>>> With regards,
>>>>>>>> Shiras
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Rtk-users mailing 
>>>>>>>> [email protected]http://public.kitware.com/mailman/listinfo/rtk-users
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
>
> _______________________________________________
> Rtk-users mailing list
> [email protected]
> http://public.kitware.com/mailman/listinfo/rtk-users
>
>
_______________________________________________
Rtk-users mailing list
[email protected]
http://public.kitware.com/mailman/listinfo/rtk-users

Reply via email to