R/jacobian_lung.R

Defines functions jacobian_lung

Documented in jacobian_lung

#' Calculate Jacobian Determinant Image for the Lungs
#'
#' This function calculates the Jacobian determinant image for the left and right lungs separately.
#'
#' @param right_transformation Transformations for the right lung
#' @param left_transformation Transformations for the left lung
#' @param mask Fixed mask (or standard lung template mask)
#' @param doLog Return the log Jacobian
#' @param geom Use the geometric Jacobian calculation
#' @param relative Returen the relative Jacobian (Jacobian divided by mean Jacobian)
#'
#' @return Jacobian Image
#' @importFrom ANTsR createJacobianDeterminantImage maskImage
#'
#' @export
jacobian_lung = function(
  right_transformation,
  left_transformation,
  mask,
  doLog = TRUE,
  geom = FALSE,
  relative = TRUE
) {

  # Create separate left and right masks
  right = mask == 1
  left = mask == 2

  # Create Jacobian Determinant Image
  jacob_right <- createJacobianDeterminantImage(domainImg = mask,
                                          tx = right_transformation,
                                          doLog = doLog,
                                          geom = FALSE)
  jacob_right <- maskImage(jacob_right, right)

  jacob_left <- createJacobianDeterminantImage(domainImg = mask,
                                                tx = left_transformation,
                                                doLog = doLog,
                                                geom = FALSE)
  jacob_left <- maskImage(jacob_left, left)

  # Put images together
  jacob = jacob_right + jacob_left

  if(relative){

    jacob_right_relative <- jacob_right/mean(jacob_right)
    jacob_left_relative <- jacob_left/mean(jacob_left)
    jacob_relative <- jacob_right_relative + jacob_left_relative

    mylist = list(jacob = jacob,
                  jacob_relative = jacob_relative)
  }else{
    mylist = jacob
  }

  return(mylist)
}
neuroconductor-devel/lungct documentation built on April 1, 2021, 4:40 a.m.