如何用matlab将读入的bmp图像格式文件的象素数据写入数组,并以文本文件格式(*.txt)输出。 5
如何用matlab将读入的bmp图像格式文件的象素数据写入数组,并以文本文件格式(*.txt)输出。这是一个很基础的题目,由于本人之前没学习过MATLAB软件,现在正在学...
如何用matlab将读入的bmp图像格式文件的象素数据写入数组,并以文本文件格式(*.txt)输出。这是一个很基础的题目,由于本人之前没学习过MATLAB软件,现在正在学习中,但还有地方不明白呀,请大家帮帮忙
展开
2个回答
展开全部
假设你有图片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个波段的,所以这里写了三次,分别存入三个文件。
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三者的平均值,或者按参数组合得到灰度)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询