aslAveraging.Rd
This function averages arterial spin labeling (ASL) functional MRI tag-control image pairs to estimate perfusion.
aslAveraging(
asl,
mask = NULL,
tc = NA,
nuisance = NA,
method = "regression",
...
)
input asl image
in which to calculate perfusion
vector indicating which images are tagged and which are controls.
Strongly recommended if using regression
or bayesian
methods.
nuisance covariates to include in regression
method to use for computing average. One of sincSubtract
,
simpleSubtract
, cubicSubtract
, surroundSubtract
,
regression
, or bayesian
. See Details
.
additional parameters to pass to ASL averaging functions.
See Details
.
Two major types of methods are available for ASL signal averaging:
Subtraction: All the subtraction methods are based on subtracting
the tag from control images and averaging the result. simple
subtracts adjacent tag and control images. The other methods use
interpolation to obtain a subtracted time-series. Sinc subtraction may
be marginally more accurate than cubic interpolation, but takes much
longer. Surround subtraction uses linear interpolation and is fast.
Regression: Regression regresses the time-series on a vector of alternating tag-control dummy variables. Regression can incorporate nuisance covariates. Bayesian regression incorporates regularization in the regression to encourage all voxels of the same tissue type to have similar perfusion values.
For bayesian
, two more arguments are required:
segmentation: a segmentation image
tissuelist: a list of tissue probability images
These would be as output from atropos
; see Examples
for a
sample usage.
set.seed(1)
nvox <- 8 * 8 * 8 * 10
dims <- c(8, 8, 8, 10)
voxvals <- array(rnorm(nvox) + 500, dim = dims)
asl <- makeImage(dims, voxvals)
tc <- rep(c(-0.5, 0.5), dims[4] / 2)
avg <- aslAveraging(asl, tc = tc)
testthat::expect_equal(mean(avg), 0.00739, tolerance = .1)
slice <- extractSlice(asl, 4, 4)
mask <- getMask(slice)
seg <- atropos(d = 3, a = slice, x = mask, i = "kmeans[6]", m = "[0.0,1x1x1]")
perfSurr <- aslAveraging(asl, mask = NULL, method = "surroundSubtract")
bayesAvg <- aslAveraging(asl,
tc = tc, method = "bayesian",
segmentation = seg$segmentation, tissuelist = seg$probabilityimages
)
#>
|
| | 0%
|
|============ | 17%
|
|======================= | 33%
|
|=================================== | 50%
|
|=============================================== | 67%
|
|========================================================== | 83%
|
|======================================================================| 100%