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
出现小波分析的界面 选择二维小波分析 然后再在文件夹中加载图片 就产生这样的错误了
怎么存呢?命令怎么写?谢谢啊 我是新手啥都不懂,望指教。
追答在matlab中运行doc load和doc save,看帮助里怎样写的吧
参考技术C 用imwrite命令写相关语句应该可以吧。以上是关于MATLAB如何保存索引图的主要内容,如果未能解决你的问题,请参考以下文章