Given a stack of images img, use the first frames_per_set of them to create one number image, the next frames_per_set of them to create the next number image and so on to get a time-series of number images.

number_timeseries(
  img,
  def,
  frames_per_set,
  overlap = FALSE,
  thresh = NULL,
  detrend = FALSE,
  quick = FALSE,
  filt = NULL,
  s = 1,
  offset = 0,
  readout_noise = 0,
  gamma = 1,
  parallel = FALSE
)

Arguments

img

A 4-dimensional array of images indexed by img[y, x, channel, frame] (an object of class ijtiff::ijtiff_img). The image to perform the calculation on. To perform this on a file that has not yet been read in, set this argument to the path to that file (a string).

def

A character. Which definition of number do you want to use, "n" or "N"?

frames_per_set

The number of frames with which to calculate the successive numbers.

overlap

A boolean. If TRUE, the windows used to calculate brightness are overlapped, if FALSE, they are not. For example, for a 20-frame image series with 5 frames per set, if the windows are not overlapped, then the frame sets used are 1-5, 6-10, 11-15 and 16-20; whereas if they are overlapped, the frame sets are 1-5, 2-6, 3-7, 4-8 and so on up to 16-20.

thresh

The threshold or thresholding method (see autothresholdr::mean_stack_thresh()) to use on the image prior to detrending and number calculations. If there are many channels, this may be specified as a vector or list, one element for each channel.

detrend

Detrend your data with detrendr::img_detrend_rh(). This is the best known detrending method for brightness analysis. For more fine-grained control over your detrending, use the detrendr package. If there are many channels, this may be specified as a vector, one element for each channel.

quick

FALSE repeats the detrending procedure (which has some inherent randomness) a few times to hone in on the best detrend. TRUE is quicker, performing the routine only once. FALSE is better.

filt

Do you want to smooth (filt = 'mean') or median (filt = 'median') filter the number image using smooth_filter() or median_filter() respectively? If selected, these are invoked here with a filter radius of 1 (with corners included, so each median is the median of 9 elements) and with the option na_count = TRUE. If you want to smooth/median filter the number image in a different way, first calculate the numbers without filtering (filt = NULL) using this function and then perform your desired filtering routine on the result. If there are many channels, this may be specified as a vector, one element for each channel.

s

A positive number. The \(S\)-factor of microscope acquisition.

offset

Microscope acquisition parameters. See reference Dalal et al.

readout_noise

Microscope acquisition parameters. See reference Dalal et al.

gamma

Factor for correction of number \(n\) due to the illumination profile. The default (gamma = 1) has no effect. Changing gamma will have the effect of dividing the result by gamma, so the result with gamma = 0.5 is two times the result with gamma = 1. For a Gaussian illumination profile, use gamma = 0.3536; for a Gaussian-Lorentzian illumination profile, use gamma = 0.0760.

parallel

Would you like to use multiple cores to speed up this function? If so, set the number of cores here, or to use all available cores, use parallel = TRUE.

Value

An object of class number_ts_img.

Details

This may discard some images, for example if 175 frames are in the input and frames_per_set = 50, then the last 25 are discarded. If detrending is selected, it is performed on the whole image stack before the sectioning is done for calculation of numbers.

See also

Examples

# \donttest{ img <- ijtiff::read_tif(system.file("extdata", "50.tif", package = "nandb"))
#> Reading 50.tif: an 8-bit, 50x50 pixel image of unsigned #> integer type. Reading 1 channel and 50 frames . . .
#>  Done.
nts <- number_timeseries(img, "n", frames_per_set = 20, thresh = "Huang") # }