我想阅读自定义图像并应用matlab中的示例中的颜色图。我怎样才能做到这一点?我看到示例imageext
使用自定义图像并应用了色彩图,我想对我的图像做同样的事情。怎么做到呢?我想在matlab中使用我自己的图片作为imageext
这样的例子。
这不起作用:
I = im2double(imread('niklas3.png')); figure(1); imshow(I,[]); daspect([1 1 1]); axis off; colormap gray;
niklas3.png:
但是这段代码有效:
I = im2double(imread('cameraman.tif')); figure(1); imshow(I,[]); daspect([1 1 1]); axis off; colormap summer;
答案 0 :(得分:2)
如果之前显示在图中,您可以在所需的任何图像中应用色彩图。
我建议您使用 imagesc 或 imshow 来显示图像。为此,您需要使用 imread 加载图像。一个好的做法是将图像数据转换为双精度。
I = im2double(imread('cameraman.tif'));
如您所见, im2double 将图像数据转换为从0值到1值的双精度。如果您不想这样,可以使用 double 函数,范围从0到255。
稍后,您需要将图像显示为图形。我强烈建议使用 imagesc 而不是 imshow ,因为 imagesc 允许您自定义数据和显示(例如,添加不同的colormap )。
figure(1); imagesc(I); daspect([1 1 1]); axis off;
现在,您可以使用所需的色彩映射表。输入 help colormap 以获取更多信息,但您可以使用 jet colormap(默认), grey , hot , bones 或任何你想要的东西,只需输入:
colormap gray;
如果您绘制了多个图像,则需要使用以下标记指示目标图像:
figure(1); colormap gray;
如果您想使用 imshow ,只需输入:
即可figure(1); imshow(I,[]); daspect([1 1 1]); axis off; colormap gray;
编辑:一旦我看到您的图片,我就知道您的问题是您正在尝试将色彩映射应用到RGB图像中。也就是说,您尝试将其应用到3D矩阵中,其中行和列标识像素值,第三维标识RGB组件。
因此,您需要将RGB图像转换为2D矩阵(黑白色矩阵)。您可以通过沿第三维执行平均值来完成此操作。
I = nanmean(I,3);
最后,你应该像我之前说的那样应用色彩映射。最终的代码是:
I = im2double(imread('niklas3.jpg'));
I = nanmean(I,3);
figure(1); imshow(I,[]); daspect([1 1 1 ]); axis off;
colormap jet;
这是使用 jet 色彩映射的结果: