#' Create a warped grid for visualization.
#'
#' Deforming a grid is a helpful way to visualize a deformation field. This
#' function enables a user to define the grid parameters and apply a deformable
#' map to that grid.
#'
#' @param img input image
#' @param gridStep width of grid blocks
#' @param gridWidth width of grid lines
#' @param gridDirections directions in which to draw grid lines, boolean vector
#' @param fixedReferenceImage reference image space
#' @param transform vector of transforms
#' @param foreground intensity value for grid blocks
#' @param background intensity value for grid lines
#' @return image is output
#' @author Avants BB
#' @examples
#'
#' fi = antsImageRead( getANTsRData( 'r16' ) )
#' mi = antsImageRead( getANTsRData( 'r64' ) )
#' mygr = createWarpedGrid( mi )
#' \dontrun{
#' mytx <- antsRegistration(fixed=fi, moving=mi, typeofTransform = c('SyN') )
#' mywarpedgrid = createWarpedGrid( mi, gridDirections=c(F,T),
#' transform=mytx$fwdtransforms, fixedReferenceImage=fi )
#' plot( fi, mywarpedgrid, alpha=0.75, color.overlay='blue' )
#' }
#'
#' @export createWarpedGrid
createWarpedGrid <- function( img, gridStep=10, gridWidth=2,
gridDirections = c(TRUE, TRUE), fixedReferenceImage=NULL, transform=NA,
foreground=1, background=0 )
{
if ( length( gridDirections ) != img@dimension )
gridDirections = rep( TRUE, img@dimension )
garr = as.array( img ) * 0 + foreground
gridw = gridWidth
# FIXME - should figure out how to improve the code below
for ( d in 1:img@dimension )
{
togrid = seq( from=1, to=(dim( garr )[d]-gridWidth), by=gridStep )
for ( i in 1:length( togrid ) )
{
if ( d == 1 & img@dimension == 3 & gridDirections[d] )
garr[ togrid[i]:(togrid[i]+gridw),,] = background
if ( d == 2 & img@dimension == 3 & gridDirections[d] )
garr[ ,togrid[i]:(togrid[i]+gridw),] = background
if ( d == 3 & img@dimension == 3 & gridDirections[d] )
garr[ ,,togrid[i]:(togrid[i]+gridw)] = background
if ( d == 1 & img@dimension == 2 & gridDirections[d] )
garr[ togrid[i]:(togrid[i]+gridw),] = background
if ( d == 2 & img@dimension == 2 & gridDirections[d] )
garr[ ,togrid[i]:(togrid[i]+gridw)] = background
}
}
gimg = as.antsImage( garr )
antsCopyImageInfo( img, gimg )
if ( ! any( is.na( transform )) & !is.null( fixedReferenceImage ) ) {
fixedReferenceImage = check_ants(fixedReferenceImage)
return(antsApplyTransforms( fixed=fixedReferenceImage, moving=gimg,
transformlist=transform ) )
} else {
return( gimg )
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.