我今天在看一个古老的帖子,
“基于实验室的统一颜色尺度”(2006年5月9日)
。我想提供一个更新,以说明现在从实验室转换为RGB颜色要比当时更容易转换为RGB颜色。但是,当我重读原始帖子时,我意识到当时我很天真地说,在实验室空间中使用路径构建colormap的可能性可能会在转换为SRGB时会导致木材外颜色。
考虑到它,我想我想做两个(或三个)后续职位。今天,第一个后续文章将重点放在一些方法上,以可视化实验室空间中的曲线在SRGB外面的曲线外。接下来,我将探索修改我先前演示的技术,以避免染色外颜色。
这是我在2006年5月9日帖子中展示的结肠菌:
theta = linspace(0,pi/2,256)。';
l = linspace(0,100,256)。';
显示colormap:
我在写2006年帖子时没有意识到的是,其中一些实验室颜色不在SRGB颜色空间的范围内。
我们可以确定
通过查看颜色组件值
RGB
看看是否有超出范围的
$ [0,1] $
。
这使我探索了不同的方式来可视化实验室曲线中哪些颜色的范围。(请注意,此讨论假设我们在谈论SRGB,这是由
LAB2RGB
。。下一个代码块在colormap中找到了所有与白膜外颜色的连续段。
OUT_OF_GAMUT_MASK =任何(RGB> 1,2)|任何(RGB <0,2);
d = diff([0; out_of_gamut_mask; 0]);
值
第一的
和
最后的
高于实验室颜色
实验室(1:61,:)
和
实验室(211:256,:)
不在SRGB范围内。现在使用这些数字添加
范围警报
指示器(红色条)到显示的菌落。
另一种可视化方法是绘制由红色,绿色和蓝色颜色组件值返回的
LAB2RGB
并显示这些值太高或太低的位置。
XLIM([1-0.05*高度(RGB),1.05*高度(RGB)]);
y1 = min(-0.2,ax.ylim(1));
y2 = max(1.2,ax.ylim(2));
yline(0,线宽= 5,颜色= [0.7 0.7 0.7])
yline(1,线宽= 5,颜色= [0.7 0.7 0.7])
情节(k,一个(size(k)),'r*',Markersize = 6)
情节(k,zeros(size(k)),'r*',Markersize = 6)
接下来,我想向
一个
和
b
摩托外实验室曲线颜色的值。
最后,我想展示
l
摩托外实验室曲线颜色的值。
Xlim([1-0.05*高度(实验室),1.05*高度(LAB)]);
我创建了一些生成这些不同图的实用程序功能。他们在这篇文章的结尾。我会用
Tiledlayout
将所有四个图组合在一个图中。
PlotLabColorMapWithGamutalArm(实验室)
plotlabrgbcolorswithgamutalarm(实验室)
plotabwithgamutalarm(实验室)
实用程序功能
功能PlotLabColorMapWithGamutalArm(实验室)
[首先,最后] = outofgamutsegments(lab);
功能plotlabrgbcolorswithgamutalarm(实验室)
Xlim(ax,[1-0.05*高度(RGB),1.05*高度(RGB)]);
y1 = min(-0.2,ax.ylim(1));
y2 = max(1.2,ax.ylim(2));
yline(ax,0,线宽= 5,颜色= [0.7 0.7 0.7])
Yline(AX,1,线宽= 5,颜色= [0.7 0.7 0.7])
情节(ax,k,一个(大小(k)),'r*',Markersize = 6)
情节(ax,k,zeros(size(k)),'r*',Markersize = 6)
功能plotabwithgamutalarm(实验室)
[首先,最后] = outofgamutsegments(lab);
功能plotlwithgamutalarm(实验室)
xlim(ax,[1-0.05*高度(实验),1.05*高度(实验)]);
[首先,最后] = outofgamutsegments(lab);
功能[首先,最后] = outofgamutsegments(实验室)
OUT_OF_GAMUT_MASK =任何(RGB> 1,2)|任何(RGB <0,2);
d = diff([0; out_of_gamut_mask; 0]);
注释
要发表评论,请单击这里登录您的数学帐户或创建一个新帐户。