- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字图像处理实验报告63445298资料
数字图像处理实验
一、实验内容及目的
已知一幅图上有五个瓶子,装有液体。
二、实验思路分析:
三、实验步骤
1、打开MATLAB软件,并将Current Folder改为所要处理的图片Fig1.jpg所在目录。我的图片所在目录为E:\12-13-2\数字图象处理\di:
2、读取和显示原始图像,显示原始图像的直方图:
picOP = imread(Fig1.jpg); % 读入图像
figure,imshow(picOP),title(原始灰度图像); % 显示图像
figure, imhist(picOP), title(原始灰度图像直方图); % 显示原始图像的直方图
3、将图像进行二值化处理:
由于原始图像中白色比较明显,瓶身的颜色和背景比较相近,所以直接进行二值化处理,将未装满液体的信息提取出来。
picB = picOP; % 复制灰度图像到picB
picBW = im2bw(picB,T/255); % 采用全局阈值进行灰度图像转变为二值图像
figure,imshow(picBW),title(全局阈值下二值图像); % 显示二值图像
4、进行形态学操作,转化为有利于处理的图像picMORPHOLOGY = picBW ; % 复制准备形态学处理
se = strel(square,10); % 结构化元素
fo = imopen(picMORPHOLOGY,se); % 开操作
figure,imshow(fo),title(开运算之后图像); % 输出开运算之后图像
、标记连通域,
图像处理后五个白色区域面积为:
[2374; 2739; 8381; 2739; 1660]
五个质心的坐标数据:
[20.6251053074979; 48.0433866891323; 138.604600219058; 46.6575392479007; 256.266674621167; 84.9748240066818; 376.604600219058; 46.6575392479007; 484.618072289157; 47.9084337349398]
6、根据面积和质心坐标计算结果判断那个装灌不合格:
通过没有装灌部分的面积大于2900或者质心大于50则判断为不合格,由步骤5的连通面积和质心坐标可得第三个瓶子不合格。
clear all;
close all;
T = 200; % 全局阈值 200时效果要好一些,手动选出的值
%step1 读取和显示原始图像,显示原始图像的直方图
picOP = imread(Fig1.jpg); % 读入图像
figure,imshow(picOP),title(原始灰度图像); % 显示图像
figure, imhist(picOP), title(原始灰度图像直方图); % 显示原始图像的直方图
% step2 转化为二值图像
picB = picOP; % 复制灰度图像到picB
picBW = im2bw(picB,T/255); % 采用全局阈值进行灰度图像转变为二值图像
figure,imshow(picBW),title(全局阈值下二值图像); % 显示二值图像
% step3 进行形态学操作,转化为有利于处理的图像
picMORPHOLOGY = picBW ; % 复制准备形态学处理
se = strel(square,10); % 结构化元素
fo = imopen(picMORPHOLOGY,se); % 开操作
figure,imshow(fo),title(开运算之后图像); % 输出开运算之后图像
% step4 计算出各个白色连通区域(未装灌区域)面积和质心坐标
[L,num] = bwlabel(fo,4); % 为白色连通区域做标签
stats = regionprops(L,basic); % 利用 regionprops()函数计算面积、质心和边界等
s = [stats.Area]; % 矩阵S 中保存所有白色连通区域的面积
zx = [stats.Centroid]; % zx保存白色连通区域质心的坐标
% step5 根据面积和质心坐标计算结果判断那个装灌不合格
for indexnum = 1:num % 有实际几个连通区域就做几个循环,实际就是小于等于5个
if ( (s(indexnum) 2900) | (zx(2* indexnum) 50 ) ) % 如果面积大于2900或者质心大于50则为不合格
msgbox({不合格的瓶子是,num2str(indexnum)}); % 显示第几个瓶子不合格
end
end
形态学操
文档评论(0)