MATLAB如何保存索引图

就是想用matlaB处理图像,但是图像是真色彩图像,不能直接处理,要先转化成索引图像。转化我会做,但转化好的图像如何保存呢?保存的效果是:在处理的时候能够在MATLAB的存储文件夹中找到该文件,并可以处理。希望大侠们给予帮助......

保存索引图方法如下:

在电脑F\picture下有一彩色图像文件nice.bmp,则可由下述语句读取:
下面是对图像 nice.bmp以y轴为对称轴所做的一个对称变换。
% Transfer1.m
clear all
figure
[x,map]=imread('F:\picture\nice.bmp');% 所得x为一375x420x3的矩阵
[w1,w2,w3]=size(x); % 375 X 420
w22=floor(w2/2);
image(x); %显示出图像
title('HELLO! @This is the first pose of me')%则显示出图像nice.bmp
axis
off;
% 去掉图像中的坐标
colormap(map);
% colormap(),图像查找表函数。函数结构为colormap(map),设置当前的图像查找表到map。
imwrite(x,map,'nice.bmp')
for
i=1:w1
for
j=1:w22
% 图像关于y轴对折
t=x(i,j);
x(i,j)=x(i,w2-j 1);
x(i,w2-j 1)=t;
end
end
figure
image(x);
axis off
title('HELLO!!@@ Can you find any difference of my two picture! ')
colormap(map);
imwrite(x,map,'newpic.bmp')
%把x写到nepic2.bmpz中去

2.
开始时,随便找了个彩色图片,按照上面的步骤运行,结果发现对折后的图片留有印痕,并没有完全

实现对折。后来发现,原来选的图片为真彩图片,而程序当中为索引图片。由于第一次接触图像处理,对于一些概念并不
清楚,用imread对真彩图片进行读取操作是不能返回颜色表的,也就是map为空。于是通过rgb2ind先将原图片转换成索引图片,然后按程序进行,
最终得到结果。

3.这当中也并非一帆风顺,给出的程序也有些小错误(本人菜鸟意见),包括:

(1) 这个程序仅对应于索引图像,至于真彩图像该如何处理,有待高手指点;

(2)figure在程序中仅使用最开始的一个就可以了,第二个多余;

(3)“colormap(map); ”
操作很重要,将它注释掉以后,再进行图像写入操作时,发现颜色一片混乱,这个不太清楚,但个人感觉是颜色表出现不对应情况,等待高手深入解释;

(4)需要说明的是原图片为.bmp文件,过程当中尝试过jpg文件,也需要先转换成索引文件才能出来,但是Matlab中imwrite不能将索引文件直接写成jpg文件(不知为什么?),所以最后还是用bmp文件操作的。

3.最后,给出我的程序及结果:

function[]=main()%

%变换后所得图片:newpic.bmp
%例,在电脑F\picture下有一彩色图像文件nice.bmp,则可由下述语句读取:
%下面是对图像 nice.bmp以y轴为对称轴所做的一个对称变换。
% Transfer1.m
clear all
figure
[x,map]=imread('D:\nice3.bmp');% 所得x为一375x420x3的矩阵
[w1,w2,w3]=size(x); % 375 X 420
w22=floor(w2/2);
%w33=floor(w3/2);
cmap=map;
ax(1)=subplot(1,2,1);

image(x); %显示出图像
title('HELLO! @This is the first pose of me')%则显示出图像nice.bmp
axis
off;
% 去掉图像中的坐标
colormap(map);
% colormap(),图像查找表函数。函数结构为colormap(map),设置当前的图像查找表到map。
imwrite(x,map,'nice3.bmp')
for
i=1:w1
for
j=1:w22
% 图像关于y轴对折
%for k=1:w33

t=x(i,j);
x(i,j)=x(i,w2-j 1);
x(i,w2-j 1)=t;
end
end
%end
%figure

ax(2)=subplot(1,2,2);

image(x);
axis off
title('HELLO!!@@ Can you find any difference of my two picture!
');

linkaxes(ax,'xy');
axis(ax,'image');

colormap(map);
imwrite(x,map,'D:\newpic.bmp') %把x写到nepic.bmpz中去
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-28
这个很简单,你不是转化好图像了吗,假设命名为samples,那么你运行下面2步:sample_name = sprintf('sample_%d.mat',1); save(sample_name,'samples');则在你的当前存储文件夹中就会找到名字为sample1.mat的文件了,里面就是存储的samples的数据。追问

那用小波分析的时候,要加载这个图片,怎么出现错误呢?File sample_1.mat doesn':contain one dimensional Signal.请大侠指教。。。

追答

你的错误提示我没有见过,可否把你程序写下

追问

wavemenu
出现小波分析的界面 选择二维小波分析 然后再在文件夹中加载图片 就产生这样的错误了

第2个回答  2011-02-28
把变量直接存成MAT文件就行。追问

怎么存呢?命令怎么写?谢谢啊 我是新手啥都不懂,望指教。

追答

在matlab中运行doc load和doc save,看帮助里怎样写的吧

第3个回答  2011-03-07
用imwrite命令写相关语句应该可以吧。

MATLAB如何保存索引图
操作很重要,将它注释掉以后,再进行图像写入操作时,发现颜色一片混乱,这个不太清楚,但个人感觉是颜色表出现不对应情况,等待高手深入解释;(4)需要说明的是原图片为.bmp文件,过程当中尝试过jpg文件,也需要先转换成索引文件才能出来,但是Matlab中imwrite不能将索引文件直接写成jpg文件(不知为什么?)...

matlab imwrite函数保存图片问题。imwrite(X,map,filename,fmt) 中...
map可以在读取的时候随图像一起读进来 [X,map]=imread('abc.tif');我不知道你现在有什么要存,不过有问题可以问我。、

在matlab里如何使用索引?
2、方法:限制索引取值范围0到(数组长度-1),或者增加数组的长度。arr[0]=1;arr[1]=2;此数组长度为2,下标最大为1(数组下标从0开始);如果下标超出0-1这个范围就会出现索引超出界限问题。3、你可以使用MATLAB的内置函数size()来确定你的表格的大小,然后确保你的索引在这个范围内。如果你的...

matlba中出现数组索引必须为正整数或逻辑值。
1. 正整数索引:在MATLAB中,数组的索引从1开始。当你试图访问或修改数组中的某个元素时,你必须提供一个正整数的索引值,指示要访问或修改的是数组中的哪个位置。2. 逻辑值索引:除了正整数索引外,MATLAB还允许使用逻辑值作为索引。逻辑值索引通常用于选择满足特定条件的数组元素。例如,你可以使用一个...

matlab中下标索引必须为正整数类型或逻辑类型是为啥
Matlab中存放的数据是离散的,因此索引值必须为整数,且索引从1开始。也可以通过bool型数据来索引,但是该bool型数据的纬度必须和要索引的向量或矩阵的纬度相同。

什么是索引图像?
我补充一张图帮助你理解: 图中圆圈内的就是索引图像的索引表,下面的就是其对应RGB颜色表。 图中小圆圈处的索引号是5,对应RGB颜色的第5行,所以该处RGB颜色实际是0.2902 0.0627 0.0627 索引图像的作用就是体积小,方便传输,只需要把索引表传输过去,接收方用对应的RGB颜色表还原就行。 我是现学现卖,可能有说...

MATLAB 怎样知道一个图片是索引图还是灰度图
imfinfo()获得图形文件信息 isgray('xiaona.jpg')判断是否为灰度图像 读取图像是 imread(‘xiaona.jpg’)

在MATLAB中,数组索引必须为什么数值?
如果在MATLAB中使用非正整数或非逻辑值作为数组索引,就会出现“数组索引必须为正整数或逻辑值”的错误提示。遇到这种情况时,需要检查索引值是否合适,确保它们是在有效范围内的正整数或符合逻辑表达式的值。总结:在MATLAB中访问数组元素时,必须确保使用的索引值是正整数或逻辑值。正整数索引用于直接访问...

用matlab将索引图像转换为RGB图像
[I,map]==imread('C:\\Documents and Settings\\hujian\\桌面\\123.JPG');RGB=ind2rgb(I,map);试试看。黑白图像和彩色图像的数据都不一样啊。

Matlab中的逻辑数组索引
4. 工程应用约定 在使用逻辑数组索引时,通常约定逻辑数组索引由被索引的数组计算得到,逻辑数组的大小与被索引数组的大小相同。这有助于确保逻辑数组索引作为左值和右值时语义的一致性。通过遵守这些约定,我们可以将循环和分支程序转换为更简洁的表达形式,更好地利用Matlab作为计算器。5. 不太常见的逻辑...

相似回答