In general I have very good experience using TOAST++. Still there are something I cannot figure out by myself. Here we go:
Firstly, how is the measurement vector defined? I mean what is the transfer function from the object to the detector? For the function mvec = Mvec(Obj, varagin). There are three profiles to select: 'Gaussian', 'Cosine' and 'TrigBasis'. I understand the first two but what is TrigBasis?
Secondly, there is negative values of light intensity (Phi value). Is there anyway to put the non-negative constraint for each simulation?
Thirdly, how does TOAST++ perform in the region of non-diffusive regions in a big object, I mean when the criterion of mus>>mua fails. I read some of your early papers regarding the problem, I don't know if the function was implemented in TOAST++.
Thanks.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
where \kappa is the diffusion coefficient, A is a parameter that takes into account the effects of the refractive index mismatch at the tissue-air interface, and \nabla_n is the gradient in outward normal direction.
The measurement projection vector, mvec, projects \phi to the surface exitance \Gamma, and integrates \Gamma over the detector profile.
M_i = \int_surface \Gamma(s) \sigma_i(s) ds
where \sigma_i(s) is the measurement sensitivity profile of the i-th detector on the surface.
Therefore, mvec(i,j) = c/2A sigma_i(r_j)
where r_j is the position of the j-th node (nonzero only for boundary nodes).
The "TrigBasis" profile is experimental and can safely be ignored for now. It builds a distributed source or measurement pattern from a cosine basis. Currently it works only for circular 2D problems, and hasn't been tested well.
To 2: Negative values for Phi usually indicate an insufficiently resolved mesh. Try different mesh resolution and check the behaviour. Often, a higher local node density may be needed close to sources, detectors and high-contrast inclusions.
More rarely, it could indicate a node order problem in the mesh. You can check that with mesh.ElementSize. All values should be positive.
To 3: Non-diffuse regions are currently not supported in the Toast++ toolbox. We did some experiments with different approaches (hybrid diffusion/radiosity approach, P_N approximation, but they are not yet part of the toolbox.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In general I have very good experience using TOAST++. Still there are something I cannot figure out by myself. Here we go:
Firstly, how is the measurement vector defined? I mean what is the transfer function from the object to the detector? For the function mvec = Mvec(Obj, varagin). There are three profiles to select: 'Gaussian', 'Cosine' and 'TrigBasis'. I understand the first two but what is TrigBasis?
Secondly, there is negative values of light intensity (Phi value). Is there anyway to put the non-negative constraint for each simulation?
Thirdly, how does TOAST++ perform in the region of non-diffusive regions in a big object, I mean when the criterion of mus>>mua fails. I read some of your early papers regarding the problem, I don't know if the function was implemented in TOAST++.
Thanks.
To 1: The relationship between surface exitance \Gamma and volume photon density \phi is given by the Robin b.c.:
\Gamma = -c \kappa \nabla_n \phi
\phi + 2 \kappa A \nabla_n = 0
==> \Gamma = c/(2A) \phi
where \kappa is the diffusion coefficient, A is a parameter that takes into account the effects of the refractive index mismatch at the tissue-air interface, and \nabla_n is the gradient in outward normal direction.
The measurement projection vector, mvec, projects \phi to the surface exitance \Gamma, and integrates \Gamma over the detector profile.
M_i = \int_surface \Gamma(s) \sigma_i(s) ds
where \sigma_i(s) is the measurement sensitivity profile of the i-th detector on the surface.
Therefore, mvec(i,j) = c/2A sigma_i(r_j)
where r_j is the position of the j-th node (nonzero only for boundary nodes).
The "TrigBasis" profile is experimental and can safely be ignored for now. It builds a distributed source or measurement pattern from a cosine basis. Currently it works only for circular 2D problems, and hasn't been tested well.
To 2: Negative values for Phi usually indicate an insufficiently resolved mesh. Try different mesh resolution and check the behaviour. Often, a higher local node density may be needed close to sources, detectors and high-contrast inclusions.
More rarely, it could indicate a node order problem in the mesh. You can check that with mesh.ElementSize. All values should be positive.
To 3: Non-diffuse regions are currently not supported in the Toast++ toolbox. We did some experiments with different approaches (hybrid diffusion/radiosity approach, P_N approximation, but they are not yet part of the toolbox.