我有2个矩阵。矩阵E
的值介于0到1之间,矩阵A
的值介于0到90之间。我想为每个矩阵中的数字显示不同颜色的图像。
当我将B
函数用于:
colormap
当我应该有几种颜色时(因为我使用的是figure; colormap(jet); imshow(A);
),显示的图像具有多种灰度等级。
当我将jet
函数用于:
colormap
显示的图像完全是白色的,可能是因为我的值高于64(这是figure; colormap(jet); imshow(B);
的最大值)。
我该如何解决这两个问题?我在几个论坛上阅读了很多教程,但找不到答案...
非常感谢您回答我的问题!
答案 0 :(得分:0)
如果值大于1,只需通过其最大值对矩阵进行归一化。因此,对于您的B矩阵,请尝试:
imshow(B/max(B(:)))
答案 1 :(得分:0)
您可以像这样指定颜色图缩放比例和颜色图中的实际颜色数量:
figure; imshow( A, [0 1], 'Colormap', jet(100) );
figure; imshow( B, [0 100], 'Colormap', jet(100) );
jet(100)表示要使用的颜色图中的100种唯一颜色。
答案 2 :(得分:0)
您正在执行的任务使用了错误的功能。
imshow
期望图像的RGB通道的N×M×3阵列输入。当您使用2D矩阵时,函数会假定它是灰度图像(就像将其复制到3个相同的矩阵中以创建这三个通道一样-如果RGB中的所有通道都具有相同的值,则您将获得灰度颜色)。您can use this function together with a colormap得到一个彩色矩阵,但是有更方便的选择。
获取矩阵彩色表示的一个简单函数是imagesc
或(image
,如果您想自己缩放值)。此函数获取矩阵中的值,然后从您选择的颜色图中为它们分配颜色:
A = rand(10);
figure; colormap(jet); imagesc(A);
另一个选项是pcolor
,它的工作原理略有不同,但结果相似。 pcolor
将值附加到像元的顶点(与imagesc
一样,相对于中心),并从每个像元的顶点插入颜色。生成的彩色矩阵总是在一行和一列中较小,因为它需要 n + 1 个点(原始矩阵中的值)来定义 n 个间隙(彩色矩阵)。这是一个示例:
A = rand(10);
figure; colormap(jet); pcolor(A);
shading flat