如何用matlab将读入的bmp图像格式文件的象素数据写入数组,并以文本文件格式(*.txt)输出。

如何用matlab将读入的bmp图像格式文件的象素数据写入数组,并以文本文件格式(*.txt)输出。这是一个很基础的题目,由于本人之前没学习过MATLAB软件,现在正在学习中,但还有地方不明白呀,请大家帮帮忙

假设你有图片test.bmp,可以用如下的方式读入matlab,然后写到txt。
img_test = imread('test.bmp');
dlmwrite('b1.txt',img_test(:,:,1));
dlmwrite('b2.txt',img_test(:,:,3));
dlmwrite('b3.txt',img_test(:,:,3));
BMP是有3个波段的,所以这里写了三次,分别存入三个文件。追问

后来我自己是这样做的
A=imread('lena.jpg');
A=rgb2gray(A);
fid=fopen('F.txt','wt');
[m ,n]=size(A);
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,'%g\n',A(i,j));
else
fprintf(fid,'%g\t',A(i,j));
end
end
end
fclose(fid);
得到256*256的矩阵形式
那我最终对图像的处理一般是对哪个波段处理么?能再问一哥问题么?怎么将bmp格式转灰度图

追答

你对图像的那个波段进行处理是你自己控制的,不是程序自动实现的。
比如我上面代码中,分别把RGB三个波段存入文件。
比如你的代码中,把3个波段合成为1个波段,然后对这个波段进行处理。

BMP转灰度:

先试试这个看是否OK
img_test = imread('test.bmp');
b = rgb2gray(img_test);

如果不行,针对你这个问题,只需要将其中的第一波段存下即可转换。
img_test = imread('test.bmp');

b = img_test(:,:,1);

原因如下:

1 如果你的图本身就是灰度图,但是存成了RGB的bmp图像,那么只用存一个波段即可,因为这时三个波段一样。
2 如果你的图本身是彩色BMP,但是你需要的是灰度,那么同样只用存一个波段即可,因为这时三个波段虽然不同,但是只能保留一个波段。
(我没有研究过matlab中实现rgb2gray(A)这个函数的算法,但通常使用的算法有,RGB三者的平均值,或者按参数组合得到灰度)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-20
比如有一张照片名字叫123456.bmp,那么写到矩阵a中:
a=imread('123456.bmp');
将矩阵a写到123456.txt中:
dlmwrite('123456.txt',a,'-append','delimiter', ' ');
-append表示追加输入,'delimiter', ' '表示矩阵元素用空格隔开