- 33
- 0
- 约1.64千字
- 约 2页
- 2017-05-02 发布于北京
- 举报
基于MATLAB的图像批量2值化处理并求取面积的方法
基于MATLAB图像批量二值化处理并求取面积的方法
由于个人需要,需要将图片进行二值化处理并求出相关部分面积占比,本人MATLAB小小白,网络上的解决方式大多对文件名要求较高,无法批量的读取和另存,小小白结合大家的方法,终于搞定了自己想要的效果,程序可能不太健壮[捂脸],至少还是可以用的,分享给需要的童鞋,一起学习。
程序实现的功能:
从文件夹【test1】批量读取图片(文件名任意),经过二值化处理、求出面积后,图片以文件名不变的形式存储至【test2】中,图片序号、名称、面积输出至【test2】中test.xls中。
代码如下,多多指教!
CODE:
clear all;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列的元胞数组,用于存放“序号”、“图片名称”、“面积占比”
for k = 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; %求面积的变量
for i=1:a
for j=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中的显示位置
您可能关注的文档
最近下载
- 工程造价审计服务方案.docx VIP
- 22D701-3电缆桥架安装(26.9MB)(26.85MB)5ce2e72e69780631(1).pdf VIP
- CJJ∕T 135-2009 透水水泥混凝土路面技术规程.pdf VIP
- 现场改善管理低成本管理方法终.pptx VIP
- 道路工程材料 课件全套 模块0--4 绪论、岩石与集料--沥青.pptx
- 2025至2030中国鹦鹉养殖行业市场发展分析及细分市场及应用领域与趋势展望研究报告.docx VIP
- 石油设备检修细则.docx VIP
- 间变大细胞淋巴瘤课件.pptx VIP
- 2025年黑龙江省职业教育春季高考考试招生语文全真模拟卷(一)(解析版).docx VIP
- 西班牙介绍-(英文).ppt VIP
原创力文档

文档评论(0)