Description Usage Arguments Details Value Examples
View source: R/02_color_space_conversion.R
Wrapper for convertColor
that builds in random
sampling, error messages, and removes default illuminant (D65) to enforce
manual specification of a reference white.
1 2 3 4 5 6 7 8 | convertColorSpace(
color.coordinate.matrix,
from = "sRGB",
to = "Lab",
sample.size = 1e+05,
from.ref.white,
to.ref.white
)
|
color.coordinate.matrix |
A color coordinate matrix with rows as colors
and channels as columns. If a color histogram (e.g. as returned by
|
from, to |
Input and output color spaces, passed to
|
sample.size |
Number of pixels to be randomly sampled from filtered pixel array for conversion. If not numeric or larger than number of colors provided (i.e. cluster matrix), all colors are converted. See details. |
from.ref.white, to.ref.white |
Reference whites passed to
|
Color spaces are all passed to
convertColor
, and can be any of: "XYZ"
,
"sRGB"
, "Apple RGB"
, "CIE RGB"
, "Lab"
, or
"Luv"
.
Lab
and Luv
color spaces are approximately perceptually
uniform, meaning they usually do the best job of reflecting intuitive color
distances without the non-linearity problems of more familiar RGB spaces.
However, because they describe object colors, they require a reference
'white light' color (dimly and brightly lit photographs of the same object
will have very different RGB palettes, but similar Lab palettes if
appropriate white references are used). The idea here is that the apparent
colors in an image depend not just on the "absolute" color of an object,
but also on the available light in the scene. There are seven CIE
standardized illuminants available in colordistance
(A, B, C, E, and
D50, D55, and D65), but the most common are:
"A"
:
Standard incandescent lightbulb
"D65"
: Average daylight
"D50"
: Direct sunlight
Color conversions will be highly dependent on the reference white used, which is why no default is provided. Users should look into standard illuminants to choose an appropriate reference for a dataset.
The conversion from RGB to a standardized color space (XYZ, Lab, or Luv) is
approximate, non-linear, and relatively time-consuming. Converting a large
number of pixels can be computationally expensive, so
convertColorSpace
will randomly sample a specified number of rows to
reduce the time. The default sample size, 100,000 rows, takes about 5 seconds
convert from sRGB to Lab space on an early 2015 Macbook with 8 GB of RAM.
Time scales about linearly with number of rows converted.
A 3- or 4-column matrix depending on whether
color.coordinate.matrix
included a 'Pct' column (as from
getImageHist
), with one column per channel.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # Convert a single RGB triplet and then back convert it
rgb_color <- c(0, 1, 0)
lab_color <- colordistance::convertColorSpace(rgb_color,
from="sRGB", to="Lab", to.ref.white="D65")
rgb_again <- colordistance::convertColorSpace(lab_color,
from="Lab", to="sRGB", from.ref.white="D65")
# Convert pixels from loadImage() function
img <- colordistance::loadImage(system.file("extdata",
"Heliconius/Heliconius_B/Heliconius_07.jpeg", package="colordistance"))
lab_pixels <- colordistance::convertColorSpace(img$filtered.rgb.2d,
from="sRGB", to="XYZ", sample.size=5000)
# Convert clusters
img <- colordistance::loadImage(system.file("extdata",
"Heliconius/Heliconius_B/Heliconius_07.jpeg", package="colordistance"))
img_hist <- colordistance::getImageHist(img, bins=2, plotting=FALSE)
lab_clusters <- colordistance::convertColorSpace(img_hist, to.ref.white="D55")
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.