Calculate the Nickerson Color Difference between two colors, given in Munsell HVC; see Nickerson.
NickersonColorDifference( HVC0, HVC1, symmetric=TRUE )
a numeric Nx3 matrix with HVC values in the rows, or a vector that can be converted to such a matrix, by row.
HVC0
can also be a numeric 3-vector with a single HVC, and it is then replicated
to match the size of HVC1
.
HVC0
can also be a character N-vector with Munsell Notations,
which is converted to an Nx3 matrix using HVCfromMunsellName()
.
a numeric Nx3 matrix with HVC values in the rows, or a vector that can be converted to such a matrix, by row.
HVC1
can also be a numeric 3-vector with a single HVC, and it is then replicated
to match the size of HVC0
.
HVC1
can also be a character N-vector with Munsell Notations,
which is converted to an Nx3 matrix using HVCfromMunsellName()
.
if FALSE
then use the original Nickerson difference formula,
and if TRUE
then use a symmetrized version;
see Details.
A numeric N-vector with the pairwise differences,
i.e. between row i of HVC0
and row i of HVC1
.
If HVC0
=\(H_0,V_0,C_0\) and If HVC1
=\(H_1,V_1,C_1\) then the original Nickerson formula is:
$$NCD(HVC0,HVC1) = 0.4 C_0 \Delta H ~+~ 6 \Delta V ~+~ 3 \Delta C$$
where \( \Delta H = |H_0 - H_1| \) (on the circle),
\( \Delta V = |V_0 - V_1| \) and
\( \Delta C = |C_0 - C_1| \).
Unfortunately, if HVC0
and HVC1
are swapped, the color difference is different.
The first color is considered to be the reference color and the second one is the test color.
The difference is not symmetric.
Another problem is that the difference is not continuous when the second color is a neutral gray, for rectangular coordinates on a plane of constant V.
Both of these problems are fixed with a slightly modified formula: $$NCD(HVC0,HVC1) = 0.4 \min(C_0,C_1) \Delta H ~+~ 6 \Delta V ~+~ 3 \Delta C$$
For the first formula set symmetric=FALSE
and for the second formula set symmetric=TRUE
.
Nickerson, Dorothy. The Specification of Color Tolerances. Textile Research. Vol 6. pp. 505-514. 1936.
# NOT RUN {
NickersonColorDifference( '7.6P 8.9/2.2', '8P 8.2/3' )
## [1] 6.952
# }
Run the code above in your browser using DataLab