如何在matlab中将绘图数据转换为图像矩阵(包含colormap的索引)

时间:2012-02-16 13:06:48

标签: image matlab

我正在尝试使用稀疏矩阵,我需要一些包含一些模式的稀疏矩阵数据。可以轻松生成的最好的是图像数据 例如 -

a = 64 * ones (9,1);
b = [64 64 64 0 0 0 64 64 64];
c = [64 64 64 0 64 0 64 64 64];
b = b';
c = c';
M = [a a a b c c  b a a a];

Genrates简单的矩形图案。我想要的是复杂的图案,如矩阵(图像数据)形式的一些曲线(x ^ 2或sinx)。是否可以将它们转换为图像数据???

2 个答案:

答案 0 :(得分:0)

您可以选择使用Matlab的绘图功能制作所需的图片,然后将其保存为某些图形格式,如TIFF。接下来加载图像文件(可能使用imread),它会为您提供像素数组。这不是稀疏数组,而是完整数组。我希望你能弄清楚如何使它稀疏,或许否定颜色使白色变为黑色(值为(255,255,255)的像素变为(0,0,0))然后使用稀疏。

答案 1 :(得分:0)

您可以在matlab中构建所有内容,只需将函数值映射到图像中的特定点即可。例如:

imsize = [250,600]; %sets dimensions of your image
buff = 30; %vertical buffer--must be integer >=1 to avoid indexing error
dm = [-pi,pi]; %sets the domain
stepx = (dm(2) - dm(1))/imsize(2);
f = @(x) sin(x); %whatever function you want

y=f(dm(1):stepx:dm(2)-stepx);
stepy = (max(y)-min(y))/(imsize(1)-2*buff);
j=round(imsize(1)/2)-(round(y/stepy));
graph = full(sparse(j,1:imsize(2),1,imsize(1),imsize(2)));
imshow(im2bw(1-graph,.5));