基于MATLAB的图像批量二值化处理并求取面积的方法.docx
- 文档编号:527977
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:2
- 大小:14.90KB
基于MATLAB的图像批量二值化处理并求取面积的方法.docx
《基于MATLAB的图像批量二值化处理并求取面积的方法.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的图像批量二值化处理并求取面积的方法.docx(2页珍藏版)》请在冰点文库上搜索。
基于MATLAB图像批量二值化处理并求取面积的方法
由于个人需要,需要将图片进行二值化处理并求出相关部分面积占比,本人MATLAB小小白,网络上的解决方式大多对文件名要求较高,无法批量的读取和另存,小小白结合大家的方法,终于搞定了自己想要的效果,程序可能不太健壮[捂脸],至少还是可以用的,分享给需要的童鞋,一起学习。
程序实现的功能:
从文件夹【test1】批量读取图片(文件名任意),经过二值化处理、求出面积后,图片以文件名不变的形式存储至【test2】中,图片序号、名称、面积输出至【test2】中test.xls中。
代码如下,多多指教!
CODE:
clearall;clc;
file_path='C:
\Users\LPZ\Desktop\test1\';%图像文件夹路径,自行定义
img_path_list=dir(strcat(file_path,'*.jpg'));%获取该文件夹中所有jpg格式的图像
img_num=length(img_path_list);%获取图像总数量
area=cell(img_num,3);%定义一个“图片数”行,3列的元胞数组,用于存放“序号”、“图片名称”、“面积占比”
fork=1:
img_num%逐一读取图像
image_name=img_path_list(k).name;%图像名
x=imread(strcat(file_path,image_name));
[a,b,c]=size(x);
if~isgray(x)
x=rgb2gray(x);%转换为灰度图像
end
level=graythresh(x);%使用最大类间方差法确定最佳阈值
xbw=im2bw(x,level);%再转换为二值图像
xbw=medfilt2(xbw);%中值滤波
bw=xbw;%滤波后二值图像
black=0;%求面积的变量
fori=1:
a
forj=1:
b
if(bw(i,j)==0)
black=black+1;
end
end
end
imwrite(bw,['C:
\Users\LPZ\Desktop\test2\',image_name]);%保存图片,~bw为矩阵取反,即反向
P=black/(a*b);%黑色部分占面积百分比
area{k,1}=k;%数组第一列
area{k,2}=image_name;%数组第二列
area{k,3}=P;%数组第三列
end
a1={'序号'};%定义excel第一列表头
b1={'图片名称'};%定义excel第二列表头
c1={'面积占比'};%定义excel第三列表头
xlswrite('C:
\Users\LPZ\Desktop\test2\test.xls',a1,'Sheet1','A1');
xlswrite('C:
\Users\LPZ\Desktop\test2\test.xls',b1,'Sheet1','B1');
xlswrite('C:
\Users\LPZ\Desktop\test2\test.xls',c1,'Sheet1','C1');
xlswrite('C:
\Users\LPZ\Desktop\test2\test.xls',area,'Sheet1','A2');%定义数字和字符在excel中的显示位置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 图像 批量 二值化 处理 求取 面积 方法
![提示](https://static.bingdoc.com/images/bang_tan.gif)