From: Erik R. Valdes-Estrada on 18 May 2010 14:59 > ============== > > I think you mean > > X2=iradon(F,theta, ~, ~, ~,size(X1,2)) > > > I think this is because the length of the projection 'F' produced by matlab's radon has been inaccurately determined. > ================ > > radon does not compute a projection length (see doc radon). It uses a cruder algorithm that is basically the transpose of iradon() after subdividing the pixels. > ++++++++++++++++++++++++++++++++ > Regarding the 1 pixel discrepancy, I tend to think iradon just uses different rules from radon to decide where the coordinate origin is, always rouding it to the nearest pixel or something... ++++++++++++++++++++++++++++++++ > =============================== No, i meant X2=iradon(F,theta, size(X1,2)), we don't need ~,~,~, because those are string inputs and OUTPUT_SIZE which in this case is-> size(X1,2) is the third and last numeric input allowed . =============================== ....even if you can force iradon to give reconstructions of the same dimension as the original, they are not properly returned because the error on the projection F (aka sinogram), so F's rows are proportional to the detectors (or pixels) but radon ads some more (maybe as a safety measure), but they must forgot to consider this on the iradon, and obviously also to properly test it. ++++++++++++++++ thats a "BIJECTION ISSUE" ++++++++++++++++
From: Alejandro Ramos on 25 May 2010 19:05 "Erik R. Valdes-Estrada" <vaee(a)yahoo.com> wrote in message <hsuo1q$4no$1(a)fred.mathworks.com>... > > ============== > > > > I think you mean > > > > X2=iradon(F,theta, ~, ~, ~,size(X1,2)) > > > > > I think this is because the length of the projection 'F' produced by matlab's radon has been inaccurately determined. > > ================ > > > > radon does not compute a projection length (see doc radon). It uses a cruder algorithm that is basically the transpose of iradon() after subdividing the pixels. > > > ++++++++++++++++++++++++++++++++ > > Regarding the 1 pixel discrepancy, I tend to think iradon just uses different rules from radon to decide where the coordinate origin is, always rouding it to the nearest pixel or something... > ++++++++++++++++++++++++++++++++ > > > > > =============================== > No, i meant X2=iradon(F,theta, size(X1,2)), > we don't need ~,~,~, because those are string inputs and OUTPUT_SIZE which in this case is-> size(X1,2) is the third and last numeric input allowed . > > =============================== > > ...even if you can force iradon to give reconstructions of the same dimension as the original, they are not properly returned because the error on the projection F (aka sinogram), so F's rows are proportional to the detectors (or pixels) but radon ads some more (maybe as a safety measure), but they must forgot to consider this on the iradon, and obviously also to properly test it. > > ++++++++++++++++ > thats a "BIJECTION ISSUE" > ++++++++++++++++ _________________________________________________ I think, this transform has a group delay of one sample. This is reflected in one sample in the beginning and at final in both dimensions. Because a first overview is a basic filter. I made a test with this code: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc,clear,close all iptsetpref('ImshowAxesVisible','on') I = zeros(500,500); I(25:75, 25:75) = 1; theta = 0:360; [R,xp] = radon(I,theta); figure imshow(I); figure imshow(R,[],'Xdata',theta,'Ydata',xp,'InitialMagnification','fit') xlabel('\theta (degrees)') ylabel('x''') colormap(hot), colorbar J=iradon(R,theta); figure imshow(J) size(I) size(J) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Diferences between original image and reconstructed image are by cause of rounded error and residual terms in transform. Maybe you can find an explanation in this paper; is old, but explains basis of DTR. http://amath.colorado.edu/pub/wavelets/papers/BEYLKI-1987.pdf
First
|
Prev
|
Pages: 1 2 Prev: find distance along complicated geometric surface Next: quasi monte carlo with sobol sequence |