matlab中image和colormap是什么关系?像这个代码,image中的元素(0到255),对应于干gray(256)中的256个元素么?但如果使用的是colormap(gray),这样gray默认的只有64行,而不是256,行,matlab是怎么处理的cle

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 22:38:17

matlab中image和colormap是什么关系?像这个代码,image中的元素(0到255),对应于干gray(256)中的256个元素么?但如果使用的是colormap(gray),这样gray默认的只有64行,而不是256,行,matlab是怎么处理的cle
matlab中image和colormap是什么关系?
像这个代码,image中的元素(0到255),对应于干gray(256)中的256个元素么?但如果使用的是colormap(gray),这样gray默认的只有64行,而不是256,行,matlab是怎么处理的
clear all
close all
x=linspace(-pi,pi,100);
sf=6; % spatial freq in cycles per image
sinewave=sin(x*sf);
close all
onematrix=ones(size(sinewave));
sinewave2D=(onematrix'*sinewave);
scaled_sinewave2D=((sinewave2D+1)*127.5)+1;
image(scaled_sinewave2D)
% rescales numbers between -1 and 1 to lie between 1 and 256
colormap(gray(256))
axis equal
axis off

matlab中image和colormap是什么关系?像这个代码,image中的元素(0到255),对应于干gray(256)中的256个元素么?但如果使用的是colormap(gray),这样gray默认的只有64行,而不是256,行,matlab是怎么处理的cle

您好,我仔细阅读了帮助文档并进行实验,有如下结论,希望共同探讨:

关于image函数:在您的程序中,scaled_sinewave2D是double类型二维矩阵,其取值在[1,256]之间,matlab会认为其是一个indexed图像,即像素取值对应于colormap中的颜色索引.因此其应当对应于一个256行的colormap.但在未显式指明colormap前,matlab的帮助文档中有个说法是colormap的行数与scaled_sinewave2D的行数一样,但实际测试表明默认colormap(也就是直接调用gray后返回的行数)是64行的,这点暂不清楚原因.但我认为可以忽略之,毕竟只有指定了正确的colormap才有意义,错误的情形可以不管它.

关于gray函数:在没有参数时,gray会获取当前figure的colormap,并转换成行数相同的灰度map.在给出参数是就形成指定行数的灰度map.所以gray本身并没有”默认“一个什么行数.