edu.stanford.rsl.konrad.phantom
Class SheppLogan3D

java.lang.Object
  extended by edu.stanford.rsl.konrad.phantom.SheppLogan3D

public class SheppLogan3D
extends java.lang.Object

Three-dimensional Shepp-Logan Phantom in both the Fourier and image domains. This is a class called SheppLogan3D. It can be used to generate Fourier domain signal (or k-space) as well as image domain signal based on a 3-dimensional analytical phantom in both domains. Please refer to the source code or the article referenced below for further information.

Please refer to
Koay CG, Sarlls JE, Özarslan E. Three Dimensional Analytical Magnetic Resonance Imaging Phantom in the Fourier Domain. Magn Reson Med. 58: 430-436 (2007)
for further information.

Since:
07/25/2007, 03/09/2010
Version:
−∞. Rewritten to be usable with JAMA.
Author:
Cheng Guan Koay, Andreas Maier
See Also:
Ref

Constructor Summary
SheppLogan3D()
          Creates a new instance of SheppLogan3D
SheppLogan3D(double[][] ellipsoids)
          User may add new ellipsoids and change their properties with this constructor.
 
Method Summary
 double[][] FourierDomainSignal(double[][] kList)
          Given a list of (kx,ky,kz), the k-space signals at those locations are returned.
 double[] FourierDomainSignal(double kx, double ky, double kz)
          returning the complex signal evaluated at ( kx, ky, kz) in an array of length 2, i.e.
 double[] ImageDomainSignal(double[][] rList)
          Given a list of position vectors, i.e.
 double ImageDomainSignal(double x, double y, double z)
          returning real value of the image intensity at (x,y,z).
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SheppLogan3D

public SheppLogan3D()
Creates a new instance of SheppLogan3D


SheppLogan3D

public SheppLogan3D(double[][] ellipsoids)
User may add new ellipsoids and change their properties with this constructor.

Parameters:
ellipsoids - is a two dimensional matrix arranged according to the following convention:
 
          delta_x, delta_y, delta_z,        a,       b,       c,            phi,  theta,  psi,     rho 
       {{       0,       0,       0,     0.69,    0.92,     0.9,              0,      0,    0,      2. },
        {       0,       0,       0,   0.6624,   0.874,    0.88,              0,      0,    0,    -0.8 },
        {   -0.22,      0.,   -0.25,     0.41,    0.16,    0.21, (3*Math.PI)/5.,      0,    0,    -0.2 },
        {    0.22,      0.,   -0.25,     0.31,    0.11,    0.22, (2*Math.PI)/5.,      0,    0,    -0.2 },
        {       0,    0.35,   -0.25,     0.21,    0.25,     0.5,              0,      0,    0,     0.2 },
        {       0,     0.1,   -0.25,    0.046,   0.046,   0.046,              0,      0,    0,     0.2 },
        {   -0.08,   -0.65,   -0.25,    0.046,   0.023,    0.02,              0,      0,    0,     0.1 },
        {    0.06,   -0.65,   -0.25,    0.046,   0.023,    0.02,              0,      0,    0,     0.1 },
        {    0.06,  -0.105,   0.625,    0.056,    0.04,     0.1,     Math.PI/2.,      0,    0,     0.2 },
        {      0.,     0.1,   0.625,    0.056,   0.056,     0.1,     Math.PI/2.,      0,    0,    -0.2 }};
       

Please to the paper mentioned above for further information on the notations.
Method Detail

ImageDomainSignal

public double[] ImageDomainSignal(double[][] rList)
Given a list of position vectors, i.e. {{x1,y1,z1},{x2,y2,z2},...}, the image domain signals at those locations are returned.


ImageDomainSignal

public double ImageDomainSignal(double x,
                                double y,
                                double z)
returning real value of the image intensity at (x,y,z).


FourierDomainSignal

public double[][] FourierDomainSignal(double[][] kList)
Given a list of (kx,ky,kz), the k-space signals at those locations are returned. The return array is of dimension kList.length by 2. The first column of the array is the real part of the complex signal and the second is the imaginary part of the complex signal.


FourierDomainSignal

public double[] FourierDomainSignal(double kx,
                                    double ky,
                                    double kz)
returning the complex signal evaluated at ( kx, ky, kz) in an array of length 2, i.e. {Re, Im}.