繁体   English   中英

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

[英]How to convert plot data to image matrix (containing indices of colormap) in 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];

生成简单的矩形图案。 我想要的是复杂的图案,例如矩阵(图像数据)形式的某些曲线(x ^ 2或sinx)。 有可能将它们转换为图像数据吗???

您拥有的一种选择是使用Matlab的绘图功能制作所需的图片,然后将其保存为TIFF等图形格式。 接下来加载图像文件(可能使用imread),这将为您提供像素阵列。 这不是一个稀疏数组,而是一个完整的数组。 我希望您能弄清楚如何使它稀疏,或者取消颜色,使白色变成黑色(值(255,255,255)的像素变为(0,0,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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM