TIGRE icon indicating copy to clipboard operation
TIGRE copied to clipboard

Big detector offset problem

Open jiangtaochen opened this issue 1 year ago • 4 comments

Hello! I have some problem in big detector offset when I use the FDK to reconstruct result . For circular trajectory CBCT, when the detector is laterally displaced less than half of its lateral size, mathematically the central slice image exactly reconstructed, and images in other slices can be reconstructed accurately enough. So I reproduce this problem in my code.Here is the geometry :

geo.nDetector = np.array([100, 3072])  # number of pixels
geo.dDetector = np.array([0.14, 0.14])  # size of each pixel
geo.sDetector = geo.nDetector * geo.dDetector  # total size of the detector

geo.nVoxel = np.array([10, 300, 1024])  # number of voxels
geo.dVoxel = np.array([2, 0.4, 0.4])  # size of each voxels
geo.sVoxel = geo.nVoxel * geo.dVoxel  # total size of the image

geo.DSO = 1000# Distance source origin (mm
geo.DSD = 1500  # Distance source detector(mm)

geo.accuracy = 0.5
geo.COR = 0

geo.rotDetector = np.array([0, 0, 0])

geo.mode = "cone"

geo.offDetector = np.array([0,180])
geo.offOrigin = np.array([0, 0, 0])

The object is bigger than the detector view.When I set the detector offset 180(p=41.86%) that can totaly reconstruct the object .And I use the wang's weights to preweight the projection before I use the FDK algorithm .The wang's weight program is that I covert to python version from the MATLAB version .And I saw there is a warning in your MATLAB version : Detector offset percent greater than 30 which may result in image artifacts, consider rebinning 360 degree projections to 180 degree. And In my program,the image artifacts did shown up in my program. I wonder know that why would this happen when the detector offset percent is greater than 30 ?.And is any way can solve this problem ,so that the detector offset can reach nearly 50%. I didn't find articles to solve this problem.May be you can give me some advice or articles to figure it out.

Expected Behavior

Actual Behavior

image object image offset =100(23.26%) ,FDK reconstruction after wang's preweight image offset =180(41.86%) ,FDK reconstruction after wang's preweight

Code to reproduce the problem (If applicable)


Specifications

  • MATLAB version:
  • OS:
  • CUDA version:

jiangtaochen avatar Jul 21 '22 09:07 jiangtaochen

Honestly, I can't remember where the 30% comes from.... But clearly you can see the effect! The original paper does definitely say it has to be less than 50%, but still unsure where 30% comes from. Maybe empirical tests, no idea, my memory is bad.

What the warning message says is that if you have more than 30% offset, try to use projections only in the 0-180 range, don't do full circle. I believe the problem is that at more than 30%, you are really getting into the missing projections range in the center, there is very little projection data that covers the central area of the image, thus you lose intensity even with the correction.

I know there are newer papers suggesting modifications to the Wang weights, but I don't have time time to research and test them!

If you find a better way to weight for offset, and want to contribute to TIGRE, feel free to make a pull request with your changes (including the wang weigths you already added!)

AnderBiguri avatar Jul 21 '22 09:07 AnderBiguri

YES ,the orignal paper does not say anything about 30%,so I am confused about 30% in you matlab version . And I'd love to contribute to TIGRE, so can you show me the paper that modify Wang weights, rencently I just have some time to ewsearch this

jiangtaochen avatar Jul 21 '22 12:07 jiangtaochen

Yes you are right, I don't entirely sure where it comes from, but empirically you can see its true.

I have not done a proper research to see which weighting options exists and which ones are worth adding, so I can't really suggest any particular paper. I am afraid that if you want to try new ones you will need to do the literature research yourself, sorry!

But if you want to add your implementation of Wang weights, you can do it now, that is definetly missing in the python version!

AnderBiguri avatar Jul 21 '22 12:07 AnderBiguri

Hi @jiangtaochen, this is interesting, I was looking at offset redundancy weighting about a month ago. Couple of papers did talk about different weighting function than Wang (I can try to find them), but their experiments suggested that changing weighting function had little impact.. Also, for large offsets, using iterative reconstructions with Wang weighting provided better results than FDK (reference : https://ieeexplore.ieee.org/document/5874179) I've been working with @AnderBiguri on including offset weighting to iterative reconstructions in MATLAB, and a4267be provides this. Try running reconstruction with some of these iterative algorithms and see if it helps.

grupesh avatar Aug 15 '22 16:08 grupesh