我有一个喷气式色表:

我想知道是否有某种方法可以转换为灰度。我不能使用平均值,因为最大值和最小值对应的是相同的灰色。或者如果有某种方法可以转换为另一个调色板。
我在谷歌上找不到转换它的函数。MATLAB使用了一种叫做rgb2ind的东西,但是我想知道它的公式。
发布于 2011-09-21 08:15:35
首先,让我使用Jet色彩映射表创建一个索引图像:
img = repmat(uint8(0:255), 100, 1);
cmap = jet(256);
imshow(img, 'Colormap',cmap)

使用IND2GRAY的简单转换会产生以下结果:
J = ind2gray(img,cmap);
imshow(J)

正如您所表达的,最小/最大值收敛到相同的值。据我所知,您希望将jet颜色映射为从深灰色到浅灰色的线性渐变。为此,我们可以使用RGB2HSV函数对其执行reorder using the hue value操作。将以下内容与原始色彩映射表进行比较:
[~,idx] = sortrows(rgb2hsv(cmap), -1); %# sort by Hue
C = gray(256);
C = C(idx,:);
imshow(img, 'Colormap',C)

发布于 2011-09-16 22:50:43
在MATLAB中创建图像
image(1:64);axis off;colormap(jet);将图像保存为tiff,使用画笔裁剪出边界,并保存为'\directorypath\jetmage.tiff‘。
在MATLAB中加载图像
jetmage=imread('\\directorypath\jetmage.tiff');获取图像大小
[szX,szY,szZ]=size(jetmage);获取每种颜色的一行图像,红色、绿色和蓝色。
r=reshape(jetmage(uint8(szX/2),:,1),[szY,1]);
g=reshape(jetmage(uint8(szX/2),:,2),[szY,1]);
b=reshape(jetmage(uint8(szX/2),:,3),[szY,1]);绘制该行每种颜色的强度分布。
plot(r,'r-');hold on;
plot(g,'g-');hold on;
plot(b,'b-');hold on;情节应该是这样的:

您可以使用数组公式作为查找表,或者在此基础上找出一种从数组[r,g,b]中获取‘[r,g,b]’的方法
发布于 2011-09-20 19:04:44
rgb2ind将每个像素的RGB值转换为颜色映射中的索引。如果将2输入版本与颜色映射输入一起使用,则它将在颜色映射中查找与每个像素匹配的最接近的颜色。这基本上会为每个像素提供一个单独的数字,而不是RGB值。
例如,如果您加载图像
RGB = imread(imagefilename);然后,由于jet返回Jet色彩映射,因此可以使用以下命令获取索引数据
mapsize = 256;
map = jet(mapsize);
ind = rgb2ind(RGB, map);然后,您可以使用任何颜色映射表显示图像
colormap(map)
image(ind)
colormap('gray')不要使用imagesc,因为它可能会以不可接受的方式扩展图像的动态范围。
https://stackoverflow.com/questions/7440340
复制相似问题