Half-beam (offset) CT reconstruction
ProjX0 opened this issue · 5 comments
I am attempting half-beam (offset) CT using the TIGRE toolkit. I have modified my code as follows. Could you provide any additional code or advice to improve the image quality for half-beam (offset) geometry?
And, my issue is geometry calibration in half-beam CT. Does TIGRE have any functions for geometry calibration, such as correcting offsets?
%%
angles = linspace(0, 2*pi, size(P.ProjLog,3));
% geo
geo.DSD = 660; % Distance Source Detector (mm)
geo.DSO = 410; % Distance Source Origin (mm)
% Detector parameters
geo.nDetector = [size(P.ProjLog,2); size(P.ProjLog,1)]; % number of pixels [Width, Height] (px)
geo.dDetector = [0.098 * P.Bin; 0.098 * P.Bin]; % size of each pixel (mm)
geo.sDetector = geo.dDetector.* geo.nDetector;
% Image parameters
geo.nVoxel = [750; 750; 450]; % number of voxels [Width, Height, Depth] (vx)
geo.sVoxel = [750 * 0.20; 750 * 0.20; 450 * 0.20]; % total size of the image (mm)
geo.dVoxel = geo.sVoxel ./ geo.nVoxel; % size of each voxel (mm)
% Offsets
geo.offOrigin = [0; 0; 0]; % Offset of image from origin (mm)
% geo.offDetector = [120.927; 3.57295]; % Offset of Detector (mm)
geo.offDetector = [-120.927 /P.Bin; 3.57295 /P.Bin];
geo.COR = 0; % Center of Rotation offset (mm)
% Auxiliary
geo.accuracy = 0.5; % Accuracy of FWD proj (vx/sample)
geo.mode = 'cone'; % Cone beam CT
% FDK with wang weight
imgFDK1 = FDK(single(P.ProjLog), geo, angles, 'filter', 'hann', 'wang', true);
figure,imshow3Dfull(imgFDK1,[0 0.1])
Is there any issue with this reconstruction?
But we don't have any geometry calibration code no, TIGRE assumes you know your geometry perfectly.
Actually, I am unsure about the offset part of the geometry information. Therefore, I asked about motion compensation in this issue on #558 . I wanted to know if it is possible to estimate the offset for center of half-beam.
@ProjX0 Those are very different topics actually. If you are "correcting" for motion of the machine, that is just a geometry definition issue. Estimating that is not a trivial thing, but its generally called "geometric calibration/estimation" in the literature. TIGRE has no functions to do so, as I said, it expectes you to know the geometry. Motion compensation is for when the patient/object is moving, generally in a non-rigid way.
I can help with the offsets, but you will need to be more descriptive than "unsure about offset part", so I know what to explain. For a detector offset scan, indeed geo.offDetector
is the parameter to change, as you do in the code you showed.
After much trial and error, I have successfully reconstructed half-beam CT images using TIGRE. Thank you very much for providing such a useful toolkit. If I encounter any bugs related to this, I will inform you. You can close the issue.
Great news!
Don't hesitate to come with any other issue :)