Giter VIP home page Giter VIP logo

dbt-reconstruction's People

Contributors

helderc avatar marcelo-vieira avatar rodrigovimieiro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dbt-reconstruction's Issues

How to specify image dimensions for reconstructed images

Hello,

I run SART algorithm for reconstructing images. I understand that the function dataPreprocess resizes the projection data to contain only the needed object and SART algorithm reconstructs images to this projection data size. I have a few questions:

How can I set image dimensions (widthxheight) for reconstructed images? For example I have detector panel pixel density as

parameter.nu = 2816;    
parameter.nv = 3584;

But want to get reconstructed images in dimenstions of 803x1127 (WidthxHeight). How can I specify image dimensions?

Second question is regarding function dataPreprocess. The segmentation crops projection data and we loose information from the removed part. How can we get information from this part for the reconstructed images?

It would be very helpful if you can provide some inputs on this.

Drawing1

Thanks.

Help needed in setting geometry parameters

Hello,

I run FBP algorithm for reconstructing images from DBT breast phantom raw data. The reconstructed images look blurry and lack details when compared with image outputs from actual DBT system. The actual number of slices is 171. Here I am reconstructing only 16 slices and parameter.dz was modified accordingly.
I believe I have some serious issues with geometry parameter settings. Could you please have a look at the following geometry definition and comment on any flaws. I attach a pictorial representation for the geometry of DBT system.

detector

The geometry definition follows.

% Breast voxels density
parameter.nx = 2816;    % number of voxels (columns)
parameter.ny = 3584;    % number of voxels (rows)
parameter.nz = 16;     % actual number of slices=171   number of voxels (slices)

% Detector panel pixel density
parameter.nu = 2816;    % number of pixels (columns) 
parameter.nv = 3584;    % number of pixels (rows) 

% Single voxel real size (mm)
parameter.dx = 0.25;    % on the X axis (mm)
parameter.dy = 0.25;    % on the Y axis (mm)
parameter.dz = 2.5;      % 0.25;  on the Z axis (mm)

% Single detector real size (mm)
parameter.du = 0.25;    % on the X axis (mm)
parameter.dv = 0.25;   % on the Y axis (mm)

% X-ray source and detector distances
parameter.DSD = 650;         % Distance from source to detector (mm)
parameter.DSO = 593;         % Distance from source to the top of object (mm)
parameter.DDR = 17;          % Distance from detector to pivot (mm)
parameter.DSR = parameter.DSD - parameter.DDR;  % Distance from source to pivot (mm)
parameter.DAG = 15;                             % Distance of Air Gap (mm)

% Number of Projections
parameter.nProj = 16;  

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

parameter.detAngle = 0;   % Detector Angle
parameter.detectorDeg = linspace(-parameter.detAngle/2,parameter.detAngle/2,parameter.nProj);

Raw data matrix shared at
https://drive.google.com/drive/folders/10er-5LklkIFZc3BR0Z_AKhpyFiaivTIC?usp=sharing

I also attach reconstructed image outputs from code and machine.

code_output.zip
machine_output.zip

It would be very helpful if you can provide some inputs on this.

Thanks.

Trying to run the code for tiff file and different geometries

Dear Rodrigo;

I am trying to run it for a prototype system where the input data is in tiff files. Also the geometry is also different. My geometry is 9 angular projections over 15 degree angular span. Here is the attached pdf file for the schematics.
details.pdf
What changes we need to make for the tiff file and different geometry.

CUDA based projection and backprojection calls in SART

Hello,

I compiled the .sln files under Functions/Sources in Visual studio IDE and built files backprojectionDDb_mex_CUDA.mexw64 and projectionDDb_mex_CUDA.mexw64. SART algorithm requires projection and backprojection to run for each iteration and under each iteration for each projection. The CUDA version of these methods seem to accept only two parameters and so the projection number cannot be passed.

The modified projection and backprojection function calls in SART.m

proj_norm = projection(ones(parameter.ny, parameter.nx, parameter.nz, 'single'),parameter, []);
to
proj_norm = projectionDDb_mex_CUDA(ones(parameter.ny, parameter.nx, parameter.nz, 'double'),parameter);

vol_norm = backprojection(ones(parameter.nv, parameter.nu, parameter.nProj, 'single'), parameter, []);
to
vol_norm = backprojectionDDb_mex_CUDA(ones(parameter.nv, parameter.nu, parameter.nProj, 'double'), parameter);

proj_diff = proj(:,:,p) - projection(reconData3d,parameter,p);
to
proj_diff = proj(:,:,p) - projectionDDb_mex_CUDA(reconData3d,parameter,p);

upt_term = backprojection(proj_diff,parameter,p);
to
upt_term = backprojectionDDb_mex_CUDA(proj_diff,parameter,p);

The SART execution shows error

Error using projectionDDb_mex_CUDA
projection_mex requires two input arguments.

Error in SART (line 87)
        proj_diff = proj(:,:,p) - projectionDDb_mex_CUDA(reconData3d,parameter,p);

How can I run cuda versions of methods for SART iterations?

Thanks.

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

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.

Help Needed - Shift observed on reconstructed slices

Hi
I came across this algorithm recently and I tried to reconstruct using FBP algorithm. The reconstructed images has the objects in every slices in shifted manner. My object size is around 55mm and tried to reconstruct into 110 slices each of 0.5mm. My machine parameters are shared below in the parameter settings. The image are taken from the machine with a static detector. I am sharing the projection data as mat file along with a reconstructed slice in jpg format. It would be helpful for if you can provide me some inputs for resolving this.

44

The projection data is available in below link
https://www.sendspace.com/file/emnp03

%% Physical Parameters Settings
% Breast voxels density
parameter.nx = 2304; % number of voxels (columns)
parameter.ny = 2945; % number of voxels (rows)
parameter.nz = 110; % 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.098;
parameter.dy = 0.098;
parameter.dz = 0.5;

% Single detector real size (mm);
parameter.du = 0.098;
parameter.dv = 0.098;

% 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 = 12; % 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)

% Detector and object full real sizes (mm)
parameter.sx = parameter.nx.*parameter.dx;
parameter.sy = parameter.ny.*parameter.dy;
parameter.sz = (parameter.nz.*parameter.dz)+parameter.DAG;
parameter.su = parameter.nu.*parameter.du;
parameter.sv = parameter.nv.*parameter.dv;

% Detector and object Volume grid settings
parameter.xs = (parameter.nx-1:-1:0)*parameter.dx;
parameter.ys = (-(parameter.ny-1)/2:1:(parameter.ny-1)/2)*parameter.dy;
parameter.zs = (0:1:parameter.nz-1)*parameter.dz + parameter.DAG;
parameter.us = (parameter.nu-1:-1:0)*parameter.du;
parameter.vs = (-(parameter.nv-1)/2:1:(parameter.nv-1)/2)*parameter.dv;

% Number of Projections
parameter.nProj = 7;

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

parameter.detAngle = 0; % Detector Angle
parameter.detectorDeg = linspace(-parameter.detAngle/2,parameter.detAngle/2,parameter.nProj);

%% General parameters

% Slice range to be saved
parameter.sliceRange = 1:parameter.nz;
% Region of interest (ROI) to store
parameter.iROI = 1:parameter.ny;
parameter.jROI = 1:parameter.nx;

% Bit number quatization
parameter.bitDepth = 16; % Load from dicom header

Regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.