LAVI-USP / DBT-Reconstruction

LAVI open-source reconstruction toolbox for digital breast tomosynthesis (DBT)
GNU General Public License v3.0
56 stars 19 forks source link

Help needed in removing the shifts in the reconstructed slices (##HELP WANTED) #11

Open aravinth-ray opened 2 years ago

aravinth-ray commented 2 years ago

Hi I tried reconstruction using the FBP algorithm. The objects in the reconstructed images were observed to be shifted in a vertical direction. The images were taken with a static detector. From 0th slice to nth slice, the fibers in the images were moving from downward to upward direction. The machine parameters were listed below,

Breast voxels density

parameter.nx = 2304; % number of voxels (columns) parameter.ny = 2945; % number of voxels (rows) parameter.nz = 55; % number of voxels (slices)

Detector panel pixel density

parameter.nu = 2304; % number of pixels (columns) parameter.nv = 2945; % number of pixels (rows)

Single voxel real size (mm)

parameter.dx = 0.099; parameter.dy = 0.099; parameter.dz = 1;

Single detector real size (mm);

parameter.du = 0.099; parameter.dv = 0.099;

X-ray source and detector distances

parameter.DSD = 650; % Distance from source to detector (mm) parameter.DSO = 608; % Distance from source to the top of object (mm) parameter.DDR = 10; % Distance from detector to pivot (mm) parameter.DSR = parameter.DSD - parameter.DDR; % Distance from source to pivot (mm) parameter.DAG = 1; % Distance of Air Gap (mm)

Bit number quatization

parameter.bitDepth = 16; % Load from dicom header

Angle settings (Degrees)

parameter.tubeAngle = 11; % Tube Angle parameter.tubeDeg = linspace(-parameter.tubeAngle/2,parameter.tubeAngle/2,parameter.nProj);

Slice

I have tried flipping the parameter.tubeDeg angle from positive to negative[8 6 4 2 0 -2 -4 -6 -8]. But this method is also not working. All these information would be helpful for if you can provide me some ideas for resolving this issue.

rodrigovimieiro commented 2 years ago

Hello @aravinth-ray,

Which system are you using? Are you sure the Air Gap distance is 1mm? For GE the value is around 22 and for Hologic 25. That would be my guess.

aravinth-ray commented 2 years ago

Hello @rodrigovimieiro ,

The exact value of Air gap distance is 3mm.

rodrigovimieiro commented 2 years ago

Hello @aravinth-ray , what about the number of slices and the size of each slice? If you want to send me the images with the system configuration, I can take a quick look.

aravinth-ray commented 2 years ago

I'm reconstructing into 55 slices and the thickness of the slice is 1mm. The row size is 2945 and the column size is 2304. The image are taken from the machine with a static detector. I am sharing the projection data along with a reconstructed slice in png format.

The projection data is available in below link, https://www.sendspace.com/filegroup/pfeW9%2B3J8%2Ba9d9opJvoEBW9b7r7YDzM9v%2FffBS2soq7Z23nKnVMC%2FpmdUeLZqCv6oXrv6gWcX7qOVe5UHtkSxBq95XcrDJTD

slice_25

rodrigovimieiro commented 2 years ago

Hello @aravinth-ray , I couldn't find the reconstruction on those links. Could you please add it? Also, can you zip all the files so it is easier to download? If you have the parameters file as well, it would be helpful! Thank you!

aravinth-ray commented 2 years ago

Hello @rodrigovimieiro ,

I have uploaded input projection raw files, machine parameter file and the reconstructed slice files in the below mentioned link,

https://panaceamedicaltechnologies-my.sharepoint.com/:u:/g/personal/vijay_panaceamedicaltechnologies_onmicrosoft_com/ESe7f8mF7QlIiIhETHEhyyYBJxesy53H3DqF7wkcQoeMgQ?e=uhTIw3

rodrigovimieiro commented 2 years ago

Hello @aravinth-ray ,

Indeed, seems to have a shift in the vertical direction (Y axis). Check how I defined the axis here.

Check what I got:

img

Is this a prototype system? I was wondering, each projection is equally spaced in terms of angle?

I defined the parameters in this way (I am using the python version):

def aravinth(self):

    # Breast voxels density 
    self.nx = 2304    # number of voxels (columns)
    self.ny = 2945    # number of voxels (rows)
    self.nz = 55     # number of voxels (slices)

    # Detector panel pixel density
    self.nu = 2304    # number of pixels (columns)
    self.nv = 2945    # number of pixels (rows)

    # Single voxel real size (mm)
    self.dx = 0.099 
    self.dy = 0.099
    self.dz = 1

    # Single detector real size (mm)
    self.du = 0.099   
    self.dv = 0.099

    # X-ray source and detector distances
    self.DSD = 650.0                           # Distance from source to detector (mm)
    self.DSO = 608.0                         # Distance from source to the top of object (mm)
    self.DDR = 10.0                            # Distance from detector to pivot (mm)
    self.DSR = self.DSD - self.DDR           # Distance from source to pivot (mm)
    self.DAG = 3.0                            # Distance of Air Gap (mm)         

    # Number of Projections
    self.nProj = 11  

    # Angle settings (Degrees)
    self.tubeAngle = 20     # Tube Angle

    self.detAngle = 0       # Detector Angle
aravinth-ray commented 2 years ago

Hello @rodrigovimieiro ,

This is not a prototype system.

rodrigovimieiro commented 2 years ago

Got it. What about the question "I was wondering, each projection is equally spaced in terms of angle?"

aravinth-ray commented 2 years ago

Hello @rodrigovimieiro ,

When the tubehead angle moves from -10deg to 10deg, the projection images were moving in a vertically upward direction and it seems like there are equal space between all the projection images.

Even the projection images which is from the direct output of the detector will have the same issue. since there is a space in all the projection images in terms of angle. And because of this, there is a shift in the reconstructed slices.

Proj_0_marked Proj_10_marked

These are the projection images from the detector[1st image is the 0th projection and the 2nd image is the nth projection]. In these images, you can observe the position of the fibers which is marked in blue color.

In comparing the 0th projection and nth projection images, you will find a big difference in the fibers position. And because of this, we are getting shifts in those particular regions[fibers marked in blue].

Thanks!

rodrigovimieiro commented 2 years ago

Ok! I am not very into that geometry. I hope it works. Let me know if you need anything from me. :)

aravinth-ray commented 2 years ago

@rodrigovimieiro , Thanks for your support!!