fslr and ANTsR:
library(ms.lesion) library(neurobase) all_files = get_image_filenames_list_by_subject( group = "training", type = "coregistered") files = all_files$training02 t1 = readnii(files["T1"]) mask = readnii(files["Brain_Mask"])
hist(t1, mask = mask, breaks = 2000); text(x = 600, y = 40000, '"outliers"')
ortho2(rt1, t1 > 400, col.y = alpha("red", 0.5)) # xyz - cog of a region
rt1 = robust_window(t1) hist(rt1, mask = mask, breaks = 2000);
The fslr function fast calls fast from FSL. The --nobias option tells FSL to not perform inhomogeneity correction (N4 already performed in ANTsR).
t1fast = fast(t1,
outfile = paste0(nii.stub(t1file), "_FAST"),
opts = "--nobias")
FAST assumes three tissue classes and produces an image with the three labels, ordered by increasing within-class mean intensities. In a T1 image, this results in:
ortho2(rt1, t1fast == 3, col.y = alpha("red", 0.5), text = "White Matter")
ortho2(rt1, t1fast == 2, col.y = alpha("red", 0.5), text = "Gray Matter")
ortho2(rt1, t1fast == 1, col.y = alpha("red", 0.5), text = "CSF")
robust_fast = fast(rt1, # the robust_window(t1)
outfile = paste0(nii.stub(t1file), "_FAST"),
opts = "--nobias")
robust_windowextrantsr::otropos function works with nifti objects
ANTsR::atropos functiont1_otropos = otropos(a = t1, x = mask) # using original data t1seg = t1_otropos$segmentation
ortho2(rt1, t1seg == 3, col.y = alpha("red", 0.5), text = "White Matter")
ortho2(rt1, t1seg == 2, col.y = alpha("red", 0.5), text = "Gray Matter")
ortho2(rt1, t1seg == 1, col.y = alpha("red", 0.5), text = "CSF")
robust_windowrobust_t1_otropos = otropos(a = rt1, x = mask) # using robust robust_t1seg = robust_t1_otropos$segmentation
double_ortho(rt1, robust_t1seg)
ortho2(rt1, robust_t1seg == 3, col.y = alpha("red", 0.5), text = "White Matter")
ortho2(rt1, robust_t1seg == 2, col.y = alpha("red", 0.5), text = "Gray Matter")
ortho2(rt1, robust_t1seg == 1, col.y = alpha("red", 0.5), text = "CSF")