[IMAG]ing eng[INE]s, Tools for Application of Image Filters to Data Matrices
Provides fast application of image filters to data matrices by using C++ algorithms called 'engines'. More details are shown in vignette.
Get the development version from github:
# install.packages("devtools")
devtools::install_github("LuisLauM/imagine")Or install the CRAN version
install.packages("imagine")For all functions, the main input data must be a numeric matrix object. Depending on each funtion, user must indicate some extra arguments for the filter.
Next, we show the utility of quantileFilter, one of the six functions that imagine performs.
# Load imagine
library(imagine)
# Build an example matrix
n <- 1e3
origMatrix <- matrix(seq(n^2), nrow = n)
# Add some NAs
origMatrix_withNA <- origMatrix
origMatrix_withNA[sample(seq(n^2), 0.7*n^2, replace = FALSE)] <- NA
# Apply filter
newMatrix <- quantileFilter(X = origMatrix_withNA, radius = 3, x = 0.1, times = 1)
# Plot matrices for compare
cols <- colorRampPalette(c("green3", "red4"))(n)
par(mar = c(0, 2, 0, 0), mfrow = c(3, 1))
image(origMatrix, col = cols, axes = FALSE)
mtext(text = "Original", side = 2, line = 0.5, font = 2)
image(origMatrix_withNA, col = cols, axes = FALSE)
mtext(text = "Original with NAs", side = 2, line = 0.5, font = 2)
image(newMatrix, col = cols, axes = FALSE)
mtext(text = "Filtered", side = 2, line = 0.5, font = 2)- Minor correction on
is_extremeC++ function. - Minor corrections on
contextualMFdocumentation.
- Adding the
na_onlyargument in several functions allowing to apply the filters only in the cells where there isNAand replacing with the original value in the rest.
- Reorganization of the engines' code into separate files.
- Adding new function (
agenbagFilters) that performs two methods for gradient calculation. - Some minor improvements in documentation, vignettes and code.
- Important corrections, improvements and changes in engines 2, 4 and 5, so as in functions
convolutionQuantile,convolutionMedian,quantileFilterandcontextualMF. timesargument incontextualMFis not longer available.naargument is removed from previous functions: onlyNAwill be considered as aNA.