images2curves {curveDepth} R Documentation

Convert images to curves

Description

Converts images to curves with points sorted in traversing order.

Usage

images2curves(images)


Arguments

 images A 3-dimensional array with each slice (matrix in first two dimensions) corresponding to an image. Each (eps-strictly) positive entry is regarded as an occupied pixel (one), otherwise it is regarded as an empty pixel, of an image.

Value

A list of curves where each element is a function being a list containing a matrix coords (curve's values, d columns).

References

Lafaye De Micheaux, P., Mozharovskyi, P. and Vimond, M. (2018). Depth for curve data and applications.

Examples

library(curveDepth)
# Pixel-grid filling function for an image
plotGridImage <- function(dims){
redDims1 <- dims[1] - 1
redDims2 <- dims[2] - 1
for (i in 1:(dims[1] - 1)){
lines(c(i / redDims1 - 0.5 / redDims1,
i / redDims1 - 0.5 / redDims1),
c(0 - 0.5 / redDims2, 1 + 0.5 / redDims2),
lwd = 1, lty = 3, col = "lightgray")
lines(c(0 - 0.5 / redDims1, 1 + 0.5 / redDims1),
c(i / redDims2 - 0.5 / redDims2,
i / redDims2 - 0.5 / redDims2),
lwd = 1, lty = 3, col = "lightgray")
}
rect(0 - 0.5 / redDims1, 0 - 0.5 / redDims2,
1 + 0.5 / redDims1, 1 + 0.5 / redDims2)
}
# Pixel-grid filling function for a curve
plotGridCurve <- function(dims){
for (i in 1:(dims[1] - 1)){
lines(c(i / dims[1], i / dims[1]), c(0, 1),
lwd = 1, lty = 3, col = "lightgray")
lines(c(0, 1), c(i / dims[2], i / dims[2]),
lwd = 1, lty = 3, col = "lightgray")
}
rect(0, 0, 1, 1)
}
# Load a digit and plot it
data("mnistShort017")
aSevenDigit <- mnistShort017$7[, , 5] image(as.matrix(rev(as.data.frame(aSevenDigit))), col = gray((255:0) / 256), asp = 1, xlim = c(0 - 1 / 27, 1 + 1 / 27), ylim = c(0 - 1 / 27, 1 + 1 / 27)) plotGridImage(dim(aSevenDigit)[1:2]) # Convert the digit to a curve and plot it aSevenCurve <- images2curves(array( aSevenDigit, dim = c(28, 28, 1)))[[1]] plot(cbind(aSevenCurve$coords[, 1],
1 - aSevenCurve\$coords[, 2]),
type = "l", lwd = 3, asp = 1,
xlim = c(0, 1), ylim = c(0, 1),
xlab = "x", ylab = "y")
plotGridCurve(dim(aSevenDigit)[1:2])


[Package curveDepth version 0.1.0.9 Index]