ColorDistance[c1,c2]
给出颜色指令 c1 和 c2 之间的近似感知距离.
ColorDistance[list,c]
给出 list 的元素与 c 之间的颜色距离.
ColorDistance[list1,list2]
给出 list1 和 list2 的对应元素之间的颜色距离.
ColorDistance[image,c]
给出一个图像,其像素值是 image 中像素和颜色 c 之间的颜色距离.
ColorDistance[image1,image2]
生成一个图像,按像素给出 image1 和image2 之间的颜色距离.
ColorDistance
ColorDistance[c1,c2]
给出颜色指令 c1 和 c2 之间的近似感知距离.
ColorDistance[list,c]
给出 list 的元素与 c 之间的颜色距离.
ColorDistance[list1,list2]
给出 list1 和 list2 的对应元素之间的颜色距离.
ColorDistance[image,c]
给出一个图像,其像素值是 image 中像素和颜色 c 之间的颜色距离.
ColorDistance[image1,image2]
生成一个图像,按像素给出 image1 和image2 之间的颜色距离.
更多信息和选项
- 色距又称色差,是对视觉、知觉色彩差异的一种测量. 感知上相似的颜色色距较小.
- ColorDistance 计算两种颜色之间的距离,即两种颜色向量在 LABColor 空间中的欧氏距离.
- 在计算颜色距离时,阿尔法通道被忽略.
- ColorDistance 适用于任意二维和三维图像.
- 当 ColorDistance[image,…] 时,颜色距离以实型图像的形式返回,其维度与 image 相同.
- 当 ColorDistance[image1,image2] 时,image1 和 image2 是中心对齐,且返回重叠像素的颜色距离图像.
- ColorDistance 支持 DistanceFunction 选项. 有以下设置可用:
-
"CIE76" 在 LABColor 中的欧几里得距离(默认设置) "CIE94" 在 LCHColor 中定义的色差 "CIE2000" 带有修正的 CIE94 {"CMC",{l,c}} 颜色测量委员会(Color Measurement Committee)度量,参数为亮度 l 和色度 c "DeltaL" 在 LCHColor 中的亮度差 "DeltaC" 在 LCHColor 中的色度差 "DeltaH" 在 LCHColor 中基于色调的差异 f 给出两个Lab值列表的函数 f - 在 "CMC" 度量下,常用的参数是感知度
和可接受度
. 如果未指定,则使用
.
范例
打开所有单元 关闭所有单元基本范例 (2)
范围 (5)
ColorDistance[Gray, LABColor[.5, .5, 0]]ColorDistance[{RGBColor[0.18077129219442112, 0.15154331458502068, 0.7644876344337121], RGBColor[0.37570945003037726, 0.004125067713668384, 0.2969503457671252], RGBColor[0.45339135078104875, 0.17876965775449882, 0.5229579155791375], RGBColor[0.21616382900417186, 0.7084611599452941, 0.9442344792776058], RGBColor[0.27418805094023435, 0.6676801751797845, 0.7841343593807673]}, RGBColor[0.7691099329143689, 0.3894376342272303, 0.8087557327930035]]ColorDistance[{RGBColor[0.18077129219442112, 0.15154331458502068, 0.7644876344337121], RGBColor[0.37570945003037726, 0.004125067713668384, 0.2969503457671252], RGBColor[0.45339135078104875, 0.17876965775449882, 0.5229579155791375], RGBColor[0.21616382900417186, 0.7084611599452941, 0.9442344792776058], RGBColor[0.27418805094023435, 0.6676801751797845, 0.7841343593807673]}, {RGBColor[0.7691099329143689, 0.3894376342272303, 0.8087557327930035], RGBColor[0.2850187923162437, 0.33077177352188514, 0.13868103167491896], RGBColor[0.4556483766455912, 0.5813490503852354, 0.2804828580204961], RGBColor[0.2899288571808647, 0.3138074861832185, 0.4691678374570174], RGBColor[0.48990820234332033, 0.15952412128896754, 0.0013851383895859826]}]ColorDistance[[image], [image]]ColorDistance[[image], [image]]选项 (8)
DistanceFunction (8)
默认情况下,使用 "CIE76"(也用 ΔEa*b* 表示):
ColorDistance[Red, Blue]对于 LABColor 分量,这对应于 EuclideanDistance:
{c1, c2} = ColorConvert[#, "LAB"]& /@ {Red, Blue};EuclideanDistance[List@@c1, List@@c2]
使用 "CIE94" 度量计算颜色距离(也用 ΔE94 表示):
ColorDistance[Red, Blue, DistanceFunction -> "CIE94"]ColorDistance[Blue, Red, DistanceFunction -> "CIE94"]使用 "CIE2000" 度量计算颜色距离(也用 "CIEDE2000" 或 ΔE00 表示):
ColorDistance[Red, Blue, DistanceFunction -> "CIE2000"]ColorDistance[Blue, Red, DistanceFunction -> "CIE2000"]ColorDistance[Red, Blue, DistanceFunction -> "CMC"]ColorDistance[Red, Blue, DistanceFunction -> "DeltaL"]
ColorDistance[Red, Blue, DistanceFunction -> "DeltaC"]两种颜色的色度之间的距离,每个色度用 Norm[{
}] 计算:
ColorDistance[Red, Blue, DistanceFunction -> "DeltaH"]ColorDistance[Red, Blue, DistanceFunction -> (Abs[#1[[1]] - #2[[1]]]&)]应用 (6)
img = [image];mask = ColorNegate@ImageAdjust@ColorDistance[Red, img]ImageCompose[ColorConvert[img, "Grayscale"], SetAlphaChannel[img, mask]]δ = ColorDistance[[image], {RGBColor[239/255, 11/17, 3/17], RGBColor[32/85, 47/85, 58/255], RGBColor[62/85, 47/255, 43/255]}];
Binarize[ImageAdjust[#], {0, .2}]& /@ δColorDistance[[image], [image]]i = [image];ColorDistance[i, Red]使用 DistanceFunction"DeltaH" 仅测量色调的差异:
ColorDistance[i, Red, DistanceFunction -> "DeltaH"]colors = DominantColors[[image], 50];FindClusters[colors, 4]//Columnref = Blue;
colors = RandomColor[20]colors[[Ordering[ColorDistance[colors, ref, DistanceFunction -> "CIE2000"]]]]Sort[colors]属性和关系 (8)
ColorDistance 等价于 LABColor 空间中颜色的 EuclideanDistance:
{c1, c2} = {RGBColor[1, 0, 0], RGBColor[0, 1, 0]};ColorDistance[c1, c2]{labc1, labc2} = List@@@(ColorConvert[#, LABColor]& /@ {c1, c2});EuclideanDistance[labc1, labc2]color = RGBColor[1, 0, 0];ColorDistance[color, color]ColorDistance[color, ColorConvert[color, XYZColor]]lab = LABColor[0, 0.5, 1.5];ColorDistance[lab, ColorConvert[lab, CMYKColor]]ColorDistance[RGBColor[1, 0, 0, 1], RGBColor[1, 0, 0, .3]]colors = With[{δ = .2}, Flatten[Table[RGBColor[r, g, b], {r, 0, 1, δ}, {g, 0, 1, δ}, {b, 0, 1, δ}]]];
colors = Cases[colors, RGBColor[0. | 1., _, _] | RGBColor[_, 0. | 1., _] | RGBColor[_, _, 0. | 1.]];
pairs = Transpose@Flatten[Outer[List, colors, colors], 1];distanceNames = {"CIE76", "CIE94", "CIE2000", "CMC", "DeltaL", "DeltaC", "DeltaH"};
computedDist =
ColorDistance[Sequence@@pairs, DistanceFunction -> #]& /@ distanceNames;MapThread[Rule, {distanceNames, MinMax /@ computedDist}]//ColumnColorDistance[Red, Black, DistanceFunction -> #]& /@ {"CIE94", "CMC"}
ColorDistance[Black, Red, DistanceFunction -> #]& /@ {"CIE94", "CMC"}"CIE94"、"CIE2000"、"CMC" 和 "DeltaH" 并不总是满足三角不等式:
{c1, c2, c3} = {LABColor[0.13746501016460688, -0.3385073806178629, -0.37154877167601175], LABColor[0.5569755775933762, -0.13467171094537056, 0.5119240857106018], LABColor[0.9568310647628457, 0.18081259166998453, 1.274230978258097]};Table[
ColorDistance[c1, c3, DistanceFunction -> d] ≤ ColorDistance[c1, c2, DistanceFunction -> d] + ColorDistance[c2, c3, DistanceFunction -> d],
{d, {"CIE94", "CIE2000", "CMC", "DeltaH"}}]colors = RandomColor[LABColor, {3, 20000}];simulateTriangularInequality[dist_] := Apply[Thread[ColorDistance[#, #3, DistanceFunction -> dist] ≤ ColorDistance[#, #2, DistanceFunction -> dist] + ColorDistance[#2, #3, DistanceFunction -> dist]]&, colors]//Tally//Sort;simulateTriangularInequality["CIE94"]simulateTriangularInequality["CIE2000"]simulateTriangularInequality["CMC"]simulateTriangularInequality["DeltaH"]"CIE2000" 是最新的标准,引进了很多改进简单实验室距离(Lab distance)的规则. 感觉上会比 "CIE76" 和 "CIE94" 更精确:
image = RandomImage[1, {1500, 1500}];
color = RandomColor[];ColorDistance[image, color, DistanceFunction -> "CIE76"]//AbsoluteTiming//FirstColorDistance[image, color, DistanceFunction -> "CIE94"]//AbsoluteTiming//FirstColorDistance[image, color, DistanceFunction -> "CIE2000"]//AbsoluteTiming//FirstImageDistance 默认计算在 RGB 空间中的两个图像之间的欧几里德距离:
images = {ConstantImage[Red], ConstantImage[LightRed]};ImageDistance@@imagesEuclideanDistance[Flatten@ImageData[#1], Flatten@ImageData[#2]]&@@ColorConvert[images, "RGB"]ColorDistance 默认计算在 LAB 空间中的两个像素之间的欧几里得距离:
Sqrt@Total[ImageData[ColorDistance@@images] ^ 2, 2]EuclideanDistance[Flatten@ImageData[#1], Flatten@ImageData[#2]]&@@ColorConvert[images, "LAB"]ColorDistance 返回不同尺寸的图像的中央区域之间的距离
ColorDistance[[image], [image]]ColorDistance[[image], [image]]ImageMeasurements[%, "Max"]相关链接
文本
Wolfram Research (2014),ColorDistance,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ColorDistance.html (更新于 2015 年).
CMS
Wolfram 语言. 2014. "ColorDistance." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2015. https://reference.wolfram.com/language/ref/ColorDistance.html.
APA
Wolfram 语言. (2014). ColorDistance. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ColorDistance.html 年
BibTeX
@misc{reference.wolfram_2026_colordistance, author="Wolfram Research", title="{ColorDistance}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/ColorDistance.html}", note=[Accessed: 17-July-2026]}
BibLaTeX
@online{reference.wolfram_2026_colordistance, organization={Wolfram Research}, title={ColorDistance}, year={2015}, url={https://reference.wolfram.com/language/ref/ColorDistance.html}, note=[Accessed: 17-July-2026]}
