MATLAB如何保存索引图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中去
参考技术A 这个很简单,你不是转化好图像了吗,假设命名为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
出现小波分析的界面 选择二维小波分析 然后再在文件夹中加载图片 就产生这样的错误了

参考技术B 把变量直接存成MAT文件就行。追问

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

追答

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

参考技术C 用imwrite命令写相关语句应该可以吧。

以上是关于MATLAB如何保存索引图的主要内容,如果未能解决你的问题,请参考以下文章

matlab 图怎么保存

matlab中,如何保存为灰度图而不是二值图

matlab动画如何保存

matlab 如何按照指定的分辨率保存figure

MATLAB中如何将imshow后的图片保存成原始大小的?

怎样用matlab保存剪切的tif图像?