Matlab 如何将当前(jet)颜色贴图转换为灰度颜色贴图
我有一个gui用于计算和绘制我的项目的图像。它以“Jet”彩色地图显示图像。但是,我希望在灰色颜色贴图中显示图像 我试过以下方法。但它用黑色的彩色地图显示图像。Matlab 如何将当前(jet)颜色贴图转换为灰度颜色贴图,matlab,matlab-figure,grayscale,Matlab,Matlab Figure,Grayscale,我有一个gui用于计算和绘制我的项目的图像。它以“Jet”彩色地图显示图像。但是,我希望在灰色颜色贴图中显示图像 我试过以下方法。但它用黑色的彩色地图显示图像。 cmap=gray(255); J1=ind2gray(J,cmap) 设置(手柄图,“彩色地图”,J1) 实际代码如下所示: n = ceil(m/4); u = [(1:1:n)/n ones(1,n-1) (n:-1:1)/n]'; g = ceil(n/2) - (mod(m,4)==1) + (1:le
cmap=gray(255);
J1=ind2gray(J,cmap)
设置(手柄图,“彩色地图”,J1)代码>
实际代码如下所示:
n = ceil(m/4);
u = [(1:1:n)/n ones(1,n-1) (n:-1:1)/n]';
g = ceil(n/2) - (mod(m,4)==1) + (1:length(u))';
r = g + n;
b = g - n;
g(g>m) = [];
r(r>m) = [];
b(b<1) = [];
J = zeros(m,3);
J(r,1) = u(1:length(r));
J(g,2) = u(1:length(g));
J(b,3) = u(end-length(b)+1:end);
if verLessThan('matlab','9.1')
set(handle_fig,'Colormap',J);
else
% Get all axes and set their colormap. This is a fix for 2016b+
% (9.1+) which now sets colormaps on a per-axis basis for imshow()
% instead of for the entire figure.
handle_axes = findobj(handle_fig,'type','axes');
for i = 1:length(handle_axes)
colormap(handle_axes(i),J);
end
end
ind2gray
将索引图像转换为灰度。显然,您没有索引图像,因此此函数没有用处
而是使用将RGB颜色贴图转换为灰度颜色贴图:
J1 = rgb2gray(J);
我建议使用“灰色”(灰度)颜色贴图。。。如果将jet colormap转换为灰度,则高值和低值将显示为黑色,中间值将显示为较亮。所以只需使用:set(handle_fig,'Colormap','gray');我已经按照您的建议尝试了set(handle_fig,'Colormap','gray')
它向我显示了以下错误:在设置Figure的'Colormap'属性时使用matlab.ui.Figure/set时出错:Value必须是:范围[0 1]内的single或double类型的Mx3数组UINT8类型的Mx3数组感谢您的建议。我已经尝试过了。看来我离我想要的很近了。我已经用你建议的结果更新了我的问题。上下刻度均为黑色。但是,我希望下刻度为白色,上刻度为黑色。但是,我希望颜色条的下刻度为白色,上刻度为黑色。**@Khubabilyaskhan:你是说你只想使用标准的灰色颜色贴图吗?您的问题是如何将给定的颜色贴图转换为灰度。应用标准的灰色颜色贴图很简单。查看colormap
的帮助。
J1 = rgb2gray(J);