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

来源:学生作业帮助网 编辑:作业帮 时间:2024/10/06 20:58:16
matlab中image和colormap是什么关系?像这个代码,image中的元素(0到255),对应于干gray(256)中的256个元素么?但如果使用的是colormap(gray),这样gray默认的只有64行,而不是256,行,matlab是怎么处理的cle
xT]sF+z1}q^/:ţd7O m @mM81`8B_2]лZAq0v{6c[;Ү",Jޑ3*QuGj20ӷ|S%{rl闖yN^N>>N~Y(+e(Ͷ*:Dx </gK5r2 r-45v.I#̋v"o(|]$l}ztEAmԧ~|'3!())W$&x7oʒ"U\#B% jB O#+Ã'?E#zU4&yPu9!M 'Hv"=)zpQQCѽ赉Or怞V?8}Kopb@?Dgk[c$M [Pp ,Są[]fEM[ ;{C-<,`F_K8<41q]eUqI_D:ق,[@ ʂ @AK/>k!u&rvb7;@]`,kxARl؏ IO?sẘ49$$s&.Blj0+ ޢ6i IB?r˂[s.G/Yì8-۽{#Ri6`jfW}lc{pjC@C jPnb &oi|@okĿ;惏d7>LC

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本身并没有”默认“一个什么行数.