我想知道matlab中imagesc和image的区别

我用这个例子试图找出两者之间的差异,但我自己无法解释输出图像的差异;你能帮我吗?

I = rand(256,256);
for i=1:256

for j=1:256
    I(i,j) = j;


 end
end
figure('Name','Comparison between image et imagesc')
subplot(2,1,1);image(I);title('using image(I)');
subplot(2,1,2);imagesc(I);title('using imagesc(I)');
figure('Name','gray level of image');
image(I);colormap('gray');
figure('Name','gray level of imagesc');
 imagesc(I);colormap('gray');

最佳答案

image 将输入数组显示为图像。当该输入是矩阵时,默认情况下 imageCDataMapping 属性设置为 'direct' 。这意味着输入的每个值都被直接解释为颜色图中颜色的索引,超出范围的值将被裁剪:



由于默认情况下 Matlab 颜色图具有 64 种颜色,因此在您的情况下,这会导致超过 64 的值被剪切。这就是您在 image 图中看到的内容。

具体来说,在第一张图中,颜色图是默认的 parula,有 64 种颜色;在第二个图中 colormap('gray') 应用了 64 个灰度级的灰色颜色图。例如,如果您在此图中尝试 colormap(gray(256)) ,则图像范围将匹配颜色数量,并且您将获得与 imagesc 相同的结果。

imagesc 类似于 image 但应用自动缩放,以便图像范围跨越整个颜色图:



具体来说, imagesc 对应于 imageCDataMapping 属性设置为 'scaled' :



这就是为什么您没有看到 imagesc 的任何剪辑。

关于image - matlab中image和imagesc有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33793034/

10-12 23:18