matlab - 我的处女帖 : Having trouble with ind2rgb function in matlab

标签 matlab image-processing plot contour

简短的免责声明:我是自学成才的程序员,这是我正式的第一篇堆栈溢出帖子,所以请耐心等待。

我有一个 250X250 概率分布(pdf)矩阵(值范围从 0 到 1),我想将其转换为真彩色(250x250x3)矩阵,这样我就可以保存一系列这些矩阵并将它们显示为电影或将它们另存为 RGB 图像。我的问题有两个:

首先,如果我使用:

cmp=jet;
img=ind2rgb(pdf,cmp);

虽然 imagesc(pdf) 返回了我所期望的正确的热图,但 img 最终是一个完全蓝色的图像,带有 img(:,:,3)=(some value<1)(img(:,:,1:2)==0 。 如果有人能解释原因ind2rgb(),我将非常感激(缩放?)不是同样的方式imagesc()是,以及我将如何解决这个问题。

另外:

我知道contour()imagesc()是在 matlab 图形窗口中显示这些索引值的有用函数,但是有没有办法将 matlab 图形保存为真彩色图像没有图形轴?

如果能回答其中一个或两个问题,我们将不胜感激。

科林

最佳答案

ind2rg 不会缩放图像,它仅将其映射到颜色图。您必须自己缩放图像。此外,您还需要指定颜色图的大小。这是一个例子:

pdf = rand(100,100); % fake data
pdfScaled = uint8(256*pdf); % scale data
cmp = jet(256); % 256 element colormap
img = ind2rgb(pdfScaled,cmp);

subplot(2,1,1)
imagesc(pdf)
title('indexed image')
subplot(2,1,2)
image(img) 
title('rgb image')

结果图如下所示:

indexed and rgb images

关于你的第二个问题,getframeimwrite 可用于保存在轴中显示的图像。例如:

figure
imagesc(spiral(10))
frame = getframe();
imwrite(frame.cdata, 'frame.png')

关于matlab - 我的处女帖 : Having trouble with ind2rgb function in matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16553149/

相关文章:

matlab - 在 Octave 中绘制峰值函数无法生成正确的图表

algorithm - 在矩阵中查找 k 组不相交的行

c# - 检测图像中的椭圆图案

linux - 如何修复 gnuplot -e "plot ' 文件' u 1 :($2)-1 w l"syntax?

python - python 中 3D 曲面图的颜色

python - 为什么 RGB 图像上的 python cv2.resize 函数给出的结果与 MATLAB imresize 函数不同?

matlab - 我有 N*M 矩阵和两个 1*M 行向量,我想对它们进行向量化数学运算

arrays - 访问索引存储在字符串中的结构体数组

matlab - 使用 Globals 而不是在 Matlab 中传递大型数组

python - 识别非常低级别的图片并在 Python 中将其着色为纯黑色