#' Simple makeImage function.
#'
#' Make an image with given size and voxel value or given a mask and vector.
#'
#'
#' @param imagesize input image size or mask
#' @param voxval input image value or vector, size of mask
#' @param spacing image spatial resolution
#' @param origin image spatial origin
#' @param direction direction matrix to convert from index to physical space
#' @param components whether there are components per pixel or not
#' @param pixeltype data type of image values
#' @return antsImage is output
#' @author Avants BB
#' @examples
#'
#' outimg<-makeImage( c(2,10) , 1)
#' outimg<-makeImage( outimg , c(2,10) )
#' testthat::expect_error(makeImage(outimg, c(2,10), components = 2))
#'
#' @export makeImage
makeImage <- function(imagesize, voxval = 0, spacing=c(NA), origin=c(NA),
direction=c(NA), components = FALSE , pixeltype="float") {
if ( components > 1 )
{
stop("Multichannel images not yet supported")
}
if (is.antsImage(imagesize)) {
img <- antsImageClone(imagesize)
sel = as.array(imagesize) > 0
if (length(voxval) == sum(sel) ||
length(voxval) == 1) {
img[sel] <- voxval
} else {
warning("Number of voxels not the same as the positive values")
}
return(img)
}
firstparamnumer <- (typeof(imagesize) == "double" | typeof(imagesize) == "integer")
if (firstparamnumer) {
# imagedimension <- length(imagesize)
outimg = array(voxval, dim = imagesize)
args = list(
object = outimg,
pixeltype = pixeltype,
components = components)
if (!all(is.na(spacing))) {
args$spacing = spacing
}
if (!all(is.na(origin))) {
args$origin = origin
}
if (!all(is.na(direction))) {
args$direction = direction
}
outimg = do.call("as.antsImage", args = args)
return(outimg)
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.