用for循环遍历所有需要处理的文件即可。
如果文件的命名有规律(例如0001bmp, 0002bmp, ),可以用sprintf函数直接生成文件名;
如果不满足上述条件,但文件在集中存放某个文件夹中,可以用dir获取文件列表;
如果文件没有规律,存放的位置也比较乱,那就直接手写一个cell数组,用以指定要处理的文件列表。
楼上回答正确,其实还可用更为简单的方法,此为图像处理中的基础,举简例说明。\x0d\假设你需将名为face1bmp的彩色图转换为face2bmp的灰度图,代码如下:\x0d\imageName=strcat('face1bmp');%获取图像名称\x0d\I=imread(imageName);%读取彩色图像\x0d\J=rgb2gray(I);%转换为灰度图\x0d\figure(1);%窗口显示灰度图\x0d\imshow(J);\x0d\fname=strcat('face2bmp');\x0d\imwrite(J,fname);%保存为BMP格式的灰度图face2
如果是彩色的话 转成hsv色彩空间,然后v通道内好像就是亮度分量 直接显示v通道得到的就是基于亮度的原图的灰度化。
图像在matlab里面实际就是矩阵,矩阵每个值反映的就是这个像素点的灰度值,v通道的话对应的即为亮度值。
这个只是一个理解上的问题了, 平时我们所说的图像深度指的是 用来表示像素值的bit个数 例如深度为1的为 二值图 深度为8的则为256灰度图 ,当然 你用8bit也可以做成伪彩色 只是8比特表示三个通道的值 所能区分的颜色比较少而已 关键在于你想进行什么样的处理了
下面这个是自己写的,先获取阈值再灰度化,对应标准OSTU的流程
filename=' 填入你的名'
I=imread(filename);
I_gray=rgb2gray(I);
I_double=double(I_gray);%转化为双精度
[wid,len]=size(I_gray);
colorlevel=256; %灰度级
hist=zeros(colorlevel,1);%直方图
%计算直方图
for i=1:height
for j=1:width
m=I_gray(i,j)+1;
hist(m)=hist(m)+1;
end
end
hist=hist/(heightwidth);%直方图归一化
miuT=0;
for m=1:colorlevel
miuT=miuT+(m-1)hist(m);
end
xigmaB2=0;
for mindex=1:colorlevel
threshold=mindex-1;
omega1=0;
omega2=0;
for m=1:threshold-1
omega1=omega1+hist(m);
end
omega2=1-omega1;
miu1=0;
miu2=0;
for m=1:colorlevel
if m<threshold
miu1=miu1+(m-1)hist(m);
else
miu2=miu2+(m-1)hist(m);
end
end
miu1=miu1/omega1;
miu2=miu2/omega2;
xigmaB21=omega1(miu1-miuT)^2+omega2(miu2-miuT)^2;
xigma(mindex)=xigmaB21;
if xigmaB21>xigmaB2
finalT=threshold;
xigmaB2=xigmaB21;
end
end
threshT=finalT;
for i=1:height
for j=1:width
if I_double(i,j)>finalT
bin(i,j)=1;
else
bin(i,j)=0;
end
end
end
figure(1);imshow(uint8(bin));
你说的是将灰度读入到一个数组吗?是的话可以用matlab中的imread函数,比如一个imagejpg,可以用f = imread('imagejpg');将它读到数组f中去,但是你必须先将该放到Matlab的搜索路径中去,要让matlab能找得到。
以上就是关于matlab如何批量提取图像灰度值全部的内容,包括:matlab如何批量提取图像灰度值、如何用MATLAB把bmp格式变成灰度图像、matlab图像转灰度图像等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)