[Rtk-users] Streaming filter in ProjectionsReader

Chao Wu wuchao04 at gmail.com
Thu Jun 11 16:52:20 EDT 2015


Thanks Simon, it is clear.

I have an issue with rtkfdk. When using cuda, the first several (mini-)
filters in rtkfdk look like this:
file reader -> preprocessing filters -> streaming filter -> cuda displaced
detector filter -> ...
When the streaming filter is updated, all preprocessed projection data will
be store in RAM, which is not a problem so far.
However when executing the cuda displaced detector filter, RAM to GRAM copy
will be triggered. In my case the GRAM is not big enough to store the data.
I know --lowmem will work but when it combines with --division the
projection files will be re-read several times from harddisk, which is
quite inefficient and slow.

My previous temporary solution is to use the streaming filter as a sort of
isolator:
Instead of updating the streaming filter in the first step, I only update
the last preprocessing filter.
This way, when updating the remaining part of the pipeline, the buffered
region of the input of the streaming filter will be the full stack of
projections, but the buffered region of the output of the streaming filter
will just be the requested region by the cuda displaced detector filter
(#subsetsize projections). Then there is no problem to copy this small
amount of projections from RAM to GRAM during execution of the cuda
displaced detector filter.
Nevertheless looking at your explanations about the purpose of the
streaming filter, I found this is not an optimal solution.

Now I am thinking to add a simple filter between the streaming filter and
the cuda displace detector filter for isolation, so that its input will
buffer the full stack of projections after updating the streaming filter,
but its output only buffers the requested region (#subsetsize projections).
How do you think about this solution? Any better opinions?

Regards,
Chao


2015-06-11 19:19 GMT+02:00 Simon Rit <simon.rit at creatis.insa-lyon.fr>:

> Not stupid at all. We have recently introduced the possibility to
> automatically compute the I0 (pixel value without object). This is the
> filter I0EstimationProjectionFilter in the ProjectionsReader, see graph in
> doc <http://www.openrtk.org/Doxygen/classrtk_1_1ProjectionsReader.html>.
> In many scanners, the exposure varies from frame-to-frame and we wanted
> this to be projection-specific which is why we did this. We also think that
> all the preprocessing is more efficient per projection but this is pure
> conjecture.
> There were only pros in our opinion but do you see cons to this solution?
> Simon
>
> On Thu, Jun 11, 2015 at 7:06 PM, Chao Wu <wuchao04 at gmail.com> wrote:
>
>> Hi all,
>>
>> Maybe a stupid question... what is the purpose of the streaming filter at
>> the end of the mini-filter pipeline inside the ProjectionsReader?
>> Thanks.
>>
>> Regards, Chao
>>
>> _______________________________________________
>> Rtk-users mailing list
>> Rtk-users at public.kitware.com
>> http://public.kitware.com/mailman/listinfo/rtk-users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/rtk-users/attachments/20150611/9eb59c53/attachment-0010.html>


More information about the Rtk-users mailing list