R/convolveImage.R

Defines functions convolveImage

Documented in convolveImage

#' convolve one image with another
#'
#' convolves images together
#'
#' @param image antsImage to convolve
#' @param kernelImage antsImage acting as kernel
#' @param crop boolean automatically crops kernelImage
#' @return convimage
#' @author Brian B. Avants
#' @keywords convolve, convolution
#' @examples
#'
#' fi<-antsImageRead( getANTsRData("r16") ,2)
#' convimg<-makeImage( c(3,3) , c(1,0,1,0,-4,0,1,0,1) )
#' convout<-convolveImage( fi, convimg )
#' convimg2<-makeImage( c(3,3) , c(0,1,0,1,0,-1,0,-1,0) )
#' convout2<-convolveImage( fi, convimg2 )
#'
#' @export convolveImage
convolveImage <- function( image, kernelImage, crop=TRUE ) {
  if ( image@pixeltype != "float" | kernelImage@pixeltype != "float" ) {
    print(args(convolveImage))
    print("input images must have float pixeltype")
    return(NA)
  }
  if ( crop )
    {
    kernelImageMask<-getMask( kernelImage )
    kernelImage<-cropImage( kernelImage , kernelImageMask )
    kernelImageMask<-cropImage( kernelImageMask , kernelImageMask )
    kernelImage[ kernelImageMask == 0 ]<-
      mean( kernelImage[ kernelImageMask == 1 ] )
    }
  outimg = .Call("itkConvolveImage", image, kernelImage, PACKAGE = "ANTsR")
  outimg@components = as.integer( image@components )
  return( outimg )
}
neuroconductor-devel/ANTsR documentation built on April 1, 2021, 1:02 p.m.