Colormap测试图像
今天我想告诉你们我是如何以及为什么制作这些图像的:
在MATLAB R2014b发布后,我写了几篇博客(第1部分,第2部分,第3部分,第4部分)关于新的默认颜色映射,parula这是在那个版本中引入的。
过了一段时间,我看到了彼得·科维西的一些材料设计感知上统一的彩色地图(或者彼得写的彩色地图)。
我对Peter设计的一个测试图像特别感兴趣,这个测试图像是为了直观地评估彩色地图的感知特征。下面是测试图像:
图像是通过将一个正弦信号叠加在一个线性斜坡上而构建的,当你离开顶部一行时,正弦信号的振幅会变得更小。下面是图像的三个横截面:第1行、第64行和第128行。
url =“http://peterkovesi.com/projects/colourmaps/cm_MATLAB_gray256.png”;我= im2double (imread (url));subplot(3,1,1) plot(I(1,:)) axis([1 512 0 1]) title(的第一行) subplot(3,1,2) plot(I(64,:)) axis([1 512 0 1]) title(“64行”)子图(3,1,3)plot(I(128,:)) axis([1 512 0 1]) title(“128行”)
下面是制作这个测试映像的基本代码。我要稍微改变一下柯维西的形象。我将添加一个额外的半周期正弦信号,使其在图像右侧达到峰值,我将在底部添加一个全范围线性斜坡部分。(如果你仔细观察上面的横截面曲线,你会发现线性斜坡从5%上升到95%。)
首先,计算斜坡。
num_cycles = 64.5;pixels_per_cycle = 8;一个= 0.05;宽度= pixels_per_cycle * num_cycles + 1;Height = round((width - 1) / 4);坡道= linspace(A, 1-A, width);
接下来,计算正弦曲线。
k = 0:(宽度);x = -A*cos((2*pi/pixels_per_cycle) * k);
现在,改变正弦信号的振幅与图像底部距离的平方。
q = 0:(高度1);Y = ((high - q) / (high - 1)).^2;y = (y') .* x;
把正弦信号叠加到斜坡上。
I = I1 +斜坡;
最后,在图像底部添加一个全范围线性斜坡部分。
= [I;repmat (linspace(0, 1,宽度),(身高/ 4),1)];clf imshow (I)标题(“Colormap测试图像”)
上周,我发了帖子Colormap测试图像文件交换。它包含函数colormapTestImage它为你做了这一切。
我= colormapTestImage;
该函数还有另一种语法。如果您传递给它一个colormap的名称,它将使用该colormap显示测试图像。例如,这是用旧的MATLAB默认颜色图的测试图像,飞机.
colormapTestImage (“喷气机”)
这个测试图像说明了我们为什么要替换飞机作为MATLAB的默认颜色映射。我已经在下面的图片上标注了一些问题。
现在与新的默认颜色映射进行比较,parula.
colormapTestImage (“parula”)
我想这说明了我们想要达到的目标parula:数据的感知保真度。
因为我说的是parula,我将以提到我们需要一些非常微妙的调整来结束parulaR2017b版本。所以你可以比较一下,我给你看R2014b附带的原始版本。
colormapTestImage (“parula_original”)
读者们,你能说出不同之处吗?请在评论中告诉我们。
- 类别:
- Colormap
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。