From: Erik R. Valdes-Estrada on 16 Jul 2010 23:05 A appreciate your interest, but time-delay doesn't seem to be the explanation, run the following code, is clear that the shifted and missed pixels are not due to a rounding error but to a rule inconsistency on the RT translation, Mathworks must be consistent in using the inverse rule exactly, and by the way, it's not that hard. -Regards Erik R. Valdés-Estrada. %*************************************************** %Matlab's Radon-iRadon bijeciton test %Por E.R. Valdés-Estrada, 16-julio-2010, Ensenada, Baja California, México clc, clf; clear; %clearing memory theta = 0:180; %angles to shoot figure('Name',' radon-iradon bijection test by E.V. '); for L=4:2:128 %testing bijection issue for images of size from L=4 to L=128 (any size would do), this issue is obeserved only when L is pair. AAA=zeros(L,L,3); %array for pouring image values in different colors I=zeros(L); %original empty image I(1,1)=1; I(L,L)=1; %I(1,L)=1; I(L,1)=1; %filling image with pixel markers subplot(2,4,1) AAA(:,:,2)=I; %since matlab's "image" uses RGB, we assign the original image to green domain image(AAA); title('Original'); axis off; AAA(:,:,:)=0; subplot(2,4,2) [R,xp] = radon(I,theta); %R=usual Radon Transform of A, xp vector of relative position imagesc(theta,xp,R); %Displaying the RT(A), a.k.a. Sinogram of image A title('Radon Transform (RT)'); axis off; subplot(2,4,3) IR = abs( iradon(R,theta,'spline','Ram-Lak',L) ); %Applying inverse R.T. to sinogram IR=IR/max(max(IR)); AAA(:,:,1)=abs(IR); %image only supports positive values image(AAA); title('Inverse RT'); axis off; AAA(:,:,:)=0; subplot(2,4,4) AAA(:,:,2)=I; %Original in green AAA(:,:,1)=abs(IR);%_discret); %Reconstructed in Red image(AAA); %BIJECITON NOT MEET when -> intense RED & GREEN title('Bijection FAIL or ABSENT'); ylabel('non-matching pixels -> green & red ') %axis off; AAA(:,:,:)=0; subplot(2,4,6)% NEXT, since the RT a.k.a. sinogram is supposed to 'tell the correct position of each projection' to the inverse radon transform, we are doing this manually (at least mainly for the fisrt part of the 180 rotation). y=size(R,1); x=size(R,2); %creation of new sinogram template Rfix=zeros(y+1,x); Rfix(2:y+1,:)=R(:,:); %Displacement of the x distance of the projections imagesc(Rfix); title('manually fixed RT'); axis off; subplot(2,4,7) IRfix = abs( iradon(Rfix,theta,'spline','Ram-Lak',L) ); %Applying inverse R.T. to sinogram IRfix=IRfix/max(max(IRfix)); %normalizing to enhace image AAA(:,:,1)=abs(IRfix); image(AAA); title('Inverse mfRT'); axis off; AAA(:,:,:)=0; subplot(2,4,8) AAA(:,:,2)=I; %Original in green AAA(:,:,1)=abs(IRfix);%_discret); %Reconstructed in Red image(AAA); %BIJECITON NOT MEET when -> intense RED & GREEN title('Bijection Improvement'); ylabel('pixel fusion -> YELLOW') %axis off; AAA(:,:,:)=0; pause(160/L^2); 'we can observe that when the dimension of A is a multiple of 2(pair)information is misplaced and/or lost' end
|
Pages: 1 Prev: Can I customize figure toolbar item? Next: Neural Network with Image compression |