## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  dpi = 60,
  collapse = TRUE,
  comment = "#>", 
  fig.align = "center",
  fig.width = 4,
  strip.white = TRUE
)

## ----echo=F-------------------------------------------------------------------
library(recolorize)
current_par <- graphics::par(no.readonly = TRUE)

## ----fig.width = 5, fig.height=4----------------------------------------------
library(recolorize)
img <- system.file("extdata/ephippigera.png", package = "recolorize")
rc <- recolorize2(img, plotting = FALSE)

layout(matrix(1:2, nrow = 1))
par(mar = c(0, 0, 2, 1))
# calculates the distance matrix and plots the results
dist_original <- imDist(readImage(img),
                        recoloredImage(rc), 
                        color_space = "sRGB", 
                        main = "Unscaled distances")

# more plotting options - setting the range is important for comparing 
# across images (max is sqrt(3) in sRGB space, ~120 in Lab)
imHeatmap(dist_original, range = c(0, sqrt(3)),
          main = "Scaled distances")

## ----fig.width = 4, fig.height=3----------------------------------------------
hist(dist_original, main = "sRGB distances", xlab = "Distance")

## ----fig.width = 5, fig.height=4.5--------------------------------------------
img <- system.file("extdata/corbetti.png", package = "recolorize")
rc <- recolorize2(img, cutoff = 45, plotting = FALSE)

layout(matrix(1:10, nrow = 2, byrow = TRUE))
par(mar = c(0, 0, 2, 0))
# 'overlay' is not always the clearest option, but it is usually the prettiest:
layers <- splitByColor(rc, plot_method = "overlay")

# layers is a list of matrices, which we can just plot:
for (i in 1:length(layers)) {
  plotImageArray(layers[[i]], main = i)
}

## ----eval=FALSE---------------------------------------------------------------
# # export color map
# recolorize_to_png(rc, filename = "corbetti_recolored.png")
# 
# # export individual layers from splitByColor
# for (i in 1:length(layers)) {
#   png::writePNG(layers[[i]],
#                 target = paste0("layer_", i, ".png"))
# }

## ----eval=F-------------------------------------------------------------------
# # convert to a classify object
# as_classify <- classify_recolorize(rc, imgname = "corbetti")
# adj_analysis <- pavo::adjacent(as_classify, xscale = 10)
# 
# # run adjacent directly using human perceptual color distances (i.e. no spectral data - proceed with caution)
# adj_human <- recolorize_adjacency(rc)

## ----echo=F-------------------------------------------------------------------
graphics::par(current_par)

