Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

fanbeam and ifanbeam for reconstruction

153 views
Skip to first unread message

Zuo Nianming

unread,
Mar 5, 2004, 9:31:36 AM3/5/04
to
The following code is from help document,

ph = phantom(128);
d = 100;
% this line has been changed;
F = fanbeam(ph,d,'FanSensorSpacing',0.5);
I = ifanbeam(F,d,'FanSensorSpacing',0.5);
imview(ph); imview(I);

But when I change d to 10*d or other large value, it can't work
properly.

Why?

Mara Yale

unread,
Mar 12, 2004, 9:42:41 AM3/12/04
to
Zuo,

When you say it can't work properly if d=1000, what did you see? a
distorted inverse projection?

Why were you trying d=1000?

If you look at the documentation, there are pictures that show the
geometry. A value of d that large doesn't really make sense because
when d is much larger than the image dimensions, the "fan beams" are
nearly parallel. So, I might not expect the results to be as good as
if you used a value of d on the order of the same size as the image.

<http://www.mathworks.com/access/helpdesk/help/toolbox/images/transf13.shtml#20820>

Mara

Zuo Nianming

unread,
Mar 13, 2004, 8:25:44 AM3/13/04
to
Mara Yale wrote:
>
>
> Zuo,
>
> When you say it can't work properly if d=1000, what did you see? a
> distorted inverse projection?
>
> Why were you trying d=1000?
>
> If you look at the documentation, there are pictures that show the
> geometry. A value of d that large doesn't really make sense because
> when d is much larger than the image dimensions, the "fan beams"
~~~~~~~~~~~~~~~

> are nearly parallel. So, I might not
~~~~~~~~~~~~~~~~~~~~~~

expect the results to be as good as
> if you used a value of d on the order of the same size as the
> image.

Mara,

Just as you say, when d is very large, the fan beam are nearly
parallel. So we usually use this property to check fan-beam algorithm
(including projection and reconstruction) making d very large,
because parallel algorithm is usually easily obtained. So I am
interested in trying d= 10*d or even larger and the result is also
amazing. Have a try ?

Nianming

Robin de Nijs

unread,
Feb 11, 2005, 7:38:22 AM2/11/05
to
Hi,

Just noticed this discussion.

Try to calculate the pixel distance on the sensor for d=100 and
d=1000, for 'arc' geometry the spacing is in this example is 0.5
degree. Measured in pixels that is 100*sin(0.5)=0.87 ok, for d=1000
the spacing measured in pixels is 8.7 not ok, so you have to change
the FanSensorSpacing to approx. 0.05 degrees for d=1000 for example
like this:

figure(1);
ph = phantom(128);
subplot(2,2,1);imagesc(ph);
d = 100; % or 1000 or 10000;
FSS=asin(sin(0.5)*100/d)
% calculate the necessary FanSensorSpacing, so it is comparable to
d=100 with FSS=0.5;
[F,xf] = fanbeam(ph,d,'FanSensorSpacing',FSS);
subplot(2,2,3);imagesc(0:359,xf,F);
[P,xp] = radon(ph,0:359); % calulate parallel beam for comparison
subplot(2,2,4);imagesc(0:359,xp,P);
I = ifanbeam(F,d,'FanSensorSpacing',FSS);
subplot(2,2,2);imagesc(I);

Kind regards,
Robin

0 new messages