图像处理课程报告

时间:2024.5.8

 

《数字图像处理》课程论文

目:瓶子灌装流水线是否灌装满瓶体的检测

姓    名                  

学    院          

专业班级                

学    号                

指导教师             

日    期   20##年  6月   10日  

       瓶子灌装流水线是否灌装满瓶体的检测

摘要:使用数字图像处理方法分析图像中液面高度来检测瓶中的液体体积是否符合要求。通过对瓶子中装满液体的区域进行提取,以此区域的大小作为判断的依据。首先对采集的实际图像进行RGB三种颜色分量的提取,将其中的两种分量作差,除去背景,接下来将作差后的图像采用大津法计算阈值并二值化,再通过腐蚀、膨胀等运算去除躁声点。最后标记连通域、计算各连通域的面积,判断出未装满的瓶子,将其标注出来,同时统计瓶子总数及未装满的个数。所有处理过程通过matlab编程实现。

关键词:数字图像处理;液体体积检测

0   引言

    随着消费水平的提高,相关法律法规的完善,在食品(饮料、调料)和医药等行业中,产品的质量变得越来越重要。而产品的重量符合要求正是产品质量的基本要求之一。但现在,这些行业的生产规模日益扩大,生产现代化水平日益提高。采用传统手段对大规模现代化生产线上的产品灌装后的液体体积进行逐一检测,已经是很困难的了。

    在固定的同一种瓶中,其液体的液位变化直接反应了所装液体体积的变化,所以对液位的检测实际上就是对灌装液体体积的检测。本文利用数字图像处理技术对灌装后瓶内液位进行检测的算法,能满足对液体体积进行快速在线检测的要求。

     在当前市面上液面的检测是基于传感器等芯片实现的,结构复杂。而基于数字图像处理的算法只能处理一些简单的理想的图片,事实上流水线由于空气浮沉、机械振动等的影响根本无法采集到躁点少,杂波低的理想图片。

    本算法利用作差法实现了去噪,又运用了图像增强法实现了对目标图像的提取,克服了传统算法的缺点。

1   检测原理

    在瓶子灌装流水线上要实现对液体是否灌装满瓶体的检测,可以有下面三种方法:

   (1)以液面的高度作为判断依据。将刚好装满时的液位高度作为标准,若液面高度低于此标准,则认为未装满。

   (2)以瓶口处未装满的体积作为判断依据。由于同一流水线上的瓶子的尺寸和规格都是一样的,所以当瓶口处未装满的体积大于标准值时则认为未装满。而实际通过摄像头采集的图像是二维的,无法计算体积,于是有面积代替。

   (3)以瓶子装满的体积作为判断依据。由于同一流水线上的瓶子的尺寸和规格都是一样的,所以当瓶子装满的体积小于标准值时则认为未装满。而实际通过摄像头采集的图像是二维的,无法计算体积,于是用面积代替。

    考虑到算法的简便性,本文采用了第三种方法。图像处理的流程如下:

                   图(1)图像处理流程图   

2   去背景

    由于我们最终要提取的是瓶子装满区域的面积,所以我们感兴趣的部分就是瓶子装满液体的区域,其他部分则为背景。去除背景的干扰才能便于后续的面积提取。

例如模拟瓶子灌装流水线上的初始图像如图所示:

                  图(2)初始图像

     其中瓶子本身为无色透明的,所装液体为橙黄色,瓶后的挡板为白色(由于采集光线所致,挡板略显粉红)。若直接进行灰度变换(如图3),所得图像难以将装满区域提取。

       

图(3)直接进行灰度变换后图像

应用matlab编写程序为:

clear

close all

I=imread('E:\图像处理\6.png');

   figure,imshow(I)

I=rgb2gray(I);

   figure,imshow(I)

因此不能直接进行灰度变换,只能考虑先对彩色图像进行处理。首先将彩色图像的RGB三个彩色分量提取出来。

应用matlab编写程序为:

fR=I(:,:,1);           %获取图像的红色分量

fG=I(:,:,2);           %获取图像的绿色分量

fB=I(:,:,3);           %获取图像的蓝色分量

   figure,imshow(fR)   %分别显示图像

   figure,imshow(fG)

   figure,imshow(fB)  

图(4)红色分量图像

图(5)绿色分量图像

图(6)蓝色分量图像

    将RGB三个色彩分量的图形进行分析可发现,在每一种分量的图像中瓶子装满区域与其他部分的差别不大不易提取,但将三种分量的图像进行对比可以发现瓶子已灌装液体的区域与未装满的在分量图像中各有差异,因此可以采用图像代数运算中的图像减法来实现图像装满区域的提取,即图像的去背景。

    图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。图像减法可以作为许多图像处理工作的准备步骤。例如,可以使用图像减法来检测一系列相同场景图像的差异。图像减法与阈值化处理的综合使用往往是建立机器视觉系统最有效的方法之一。

    对原始图像分析可得到如下特征:

   (1)瓶后的挡板为白色,RGB三种分量的灰度值都接近255,因此任意两种分量的图像做减法运算均可以去掉挡板。

   (2)瓶中液体为橙黄色,瓶子本身为无色,因此:

红色分量减去蓝色分量可提取出瓶中装有液体的区域:

   

图(7)红色分量减去蓝色分量后的图像

图(8)红色分量减去绿色分量后的图像

    显然,对液体区域的提取红色分量减去绿色分量没有没有红色分量减去蓝色分量的清晰。

   

图(9)绿色分量减去红色分量后的图像

图(10)绿色分量减去蓝色分量后的图像

图(11)蓝色分量减去红色分量后的图像

图(12)蓝色分量减去绿色分量后的图像

    经过对以上处理方法所得结果进行对比,决定给采用红色分量减去蓝色分量来提取瓶子中装满液体区域的方法。此方法可有效提取液体区域,且噪点少,便于后续的二值化等处理。

    综上可得,用不同颜色分量做作差去背景的方法十分灵活,可根据瓶子的颜色及瓶中液体的颜色来选择不同的作差方式。尤其适用于瓶子颜色与所装液体颜色不同情况下。

以上处理应用matlab编写的程序为:

fR_B=fR-fB;    %红色分量减去蓝色分量

    figure,imshow(fR_B) 

fR_G=fR-fG;    %红色分量减去绿色分量

    figure,imshow(fR_G)

fG_R=fG-fR;    %绿色分量减去红色分量

    figure,imshow(fG_R)  

fG_B=fG-fB;    %绿色分量减去蓝色分量  

    figure,imshow(fG_B)  

fB_R=fB-fR;    %蓝色分量减去红色分量

    figure,imshow(fB_R) 

fB_G=fB-fG;    %蓝色分量减去绿色分量

    figure,imshow(fB_G)  

3   二值化

    图像的二值化处理就是将图像上的点的灰度置为0或255,也就是将整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。利于再对图像做进一步处理时,图像的几何性质只与像素值为0或255的点的位置有关,不在涉及像素的多级值,使处理变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。

    图像二值化的具体实现方法就是将所有灰度大于或等于阈值的像素判定为属于特定物体,其灰度值为255表示,而其他的像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的区域。

    因此图像二值化的选择十分关键,根据其对像素的处理方式,主要分为三类:

   (1)全局阈值法:是指整个图像采用单一阈值(全局阈值)T进行图像二值化。一般有图像的直方图或灰度的空间分布确定一个全局阈值T,将图像的每个像素的灰度值与T进行比较。若大于T,则取为前景色;否则取为背景色;典型的全局阈值法有Ostu法、最大熵法等。

  (2)局部阈值法:由当前像素灰度值与该像素周围点局部灰度特征来确定像素的阈值。通过定义考察点的邻域,并由邻域计算模板实现考察点灰度与邻域点的比较。典型的局部阈值法有Bernsen法、Nilblack法等。

  (3)动态阈值法:当光照不均匀、或者背景灰度变化较大等情况时,必须根据图像的坐标位置关系自动确定不同阈值,实施动态的阈值确定。该法的阈值选择不仅取决与该像素及周围像素的灰度值。而且还与该像素的坐标位置有关。邻域均值法是较为常见的一种动态阈值确定技术。

    对去背景后的图像(图(7))分析得到,图像整体光照均匀,适合用全局阈值法,这里我们采用Ostu法(最大类间方差法,又称大津法)来选取阈值。应用MATLAB进行图像处理时使用函数level=graythresh(I)来计算全局阈值(level).处理后图像如图(13)。

图(13)采用Ostu法选取阈值并将进行二值化的图像

    二值化后的图像基本可以,已能将瓶中装满液体的区域提取。

应用matlab编写程序为:

bw1=im2bw(fG_B,level);     %二值化

    figure,imshow(bw1)

  滤波

    通常,由于噪声的影响,图像在阈值化后所得到边界往往是很不平滑的,物体区域具有一些噪声,背景区域上散布着一些小的噪声物体。连续的开和闭运算可以有效地改善这种情况。有时需要经过多次腐蚀之后在加上相同次数的膨胀,才可以产生比较好的效果。

    开运算:

    先腐蚀后膨胀的过程称为开运算。用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。

    闭运算:

    先膨胀后腐蚀的过程称为闭运算。用来填充物体内细小空间、连接邻近物体、平滑其边界的同时并不明显改变其面积。

    腐蚀:

    腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。

    膨胀:

    膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。可以用来填充物体中的空洞。

经过二值化后的图像虽然能基本提取所需区域,但扔存在一些纤细处分离的物体类噪声点。我们要将这些噪声点去掉,对于每一个瓶子的位置只保留一个连通的区域来计算面积,所以采用开运算的方法来消除噪声。由于噪声点不是很多,可进行一次开运算便得到了很好的效果(如图(14))。如果小物体类噪声点较大可采用多次腐蚀后在经相同次数的膨胀来完成。

图(14)经开运算后的图像

应用matlab编写程序为:

 %SE1=strel('arbitrary',eye(5)); %设置腐蚀结构元素

 %bw2=imerode(bw1,SE1); %腐蚀

 %figure,imshow(bw2)

 bw3=bwmorph(bw1,'open'); %开运算

 figure,imshow(bw3)

 %bw3=bwmorph(bw2,'open'); %开运算

 %figure,imshow(bw3));

  装满区域面积的计算

    对瓶中装满液体区域面积的计算实际就是对目标所占像素数的计算。经过开运算后,每个装满的区域都成了一个连通的区域,为计算每一个区域的面积首先要各个区域进行标记,可以利用matlab中的bwlabel函数来实现;然后计算被标记的各区域的大小,可以利用matlab中的regionprops来实现;Bwlabel的作用是在二值图像中标记连通区域,用法如下:

    L=bwlabel(BW,n)

    返回一个和BW大小相同的L矩阵,包含标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是按8连通寻找区域。

    [L,num]=bwlabel(BW,n)

    这里num返回的就是BW中连通区域的个数。

    regionprops,它的用途是get the properties of region,即用来度量图像区域属性的函数。用法如下:

    TATS=regionprops(L,properties)

    测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素等于对应区域2;以此类推。返回值STATS是一个长度为max(L(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。Properties可以是由逗号分隔的字符串列表、包含字符串的单元数组、单个字符串’all’或者’basic’。如果properties没有指定或者等于’basic’,则属性:’Area’,’Centroid’和’BoundingBox’将被计算。

    在这里我们要得到的是’Area’属性,即面积属性。

Matlab代码为:

[L,n]=bwlabel(bw3,8);

 %STATS=regionprops(L,'Area');%计算连通域大小

 stats=regionprops(L);

   Cen=cat(1,stats.Centroid);

   S=cat(1,stats.Area);

经上述处理后图像中4个装满区域的面积分别为:12873,,11860,10655,13653.

  比较判断是否装满并标记和统计瓶子数目及不合格率

    不难发现,装满的瓶子区域面积都在11000左右,而未装满的瓶子区域面积小于11000,所以我们可以以11000作为区分装满与未装满的阈值。小于次阈值的认为未装满,其余的认为装满。并利用提取的重心坐标将未装满的瓶子在图像中标记出来。同时可统计瓶子数量及未装满的数量,计算不合格率。

Matlab代码为:

hold on;

   x=0;

   for i=1:n

       if S(i,1)<15000

           plot(Cen(i,1),Cen(i,2),'r+');

           x=x+1;

       end

   end

   p=x./n;

   p=100*p;

   str=sprintf('共%d个瓶子,其中有%d个未装满,不合格率为%d%%',n,x,p);

   title(str,'color','r');

同时还在图像上显示了统计结果,如图(15)

   

图(15)标记出未装满瓶子的图像

  总结

    在瓶子灌装流水线上,产品在出厂前是否灌满流体的检测时十分必要的。本文是基于数字图像处理的检测,利用MATLAB软件实现算法,具有执行速度快,算法简单等优点,基本达到了预期目的,但对无色液体,如瓶装水的检测失效,需进步改进。

参考文献

1.冈萨雷斯.数字图像处理(第二版)[M].北京:电子工业出版社,2007.

2.基于数学形态学的图像增强与边缘检测算法的研究[D].闰海霞.吉林:吉林大学,2009.

3.自动生产线透明灌装体积的机器视觉检测系统[J].刘焕军,王耀南,段峰。《计算机工程与应用》20##年12期

4.灌装液体药品质量的机器视觉检测与识别[J]. 何成,王耀南 《中南大学学报》自然科学版 2009(08)

5.灌装自动化生产线上视觉检测机器人研究[D]. 刘焕军. 湖南:湖南大学,2008

更多相关推荐:
课程报告范文

姓名学院电气与电子工程学院班级学号邮箱时间本科生课程研究报告指导手册0高电压工程课程报告目录本科生课程研究报告指导手册1本科生课程研究报告指导手册21报告简介本科生课程研究报告指导手册32背景资料本科生课程研究...

课程报告参考模板

大连交通大学逆向工程课程论文课程报告题目基于逆向工程的个性化假体设计综述学生姓名学号所在院系机械工程学院指导教师1大连交通大学逆向工程课程论文摘要逆向工程在医学上的应用是一门边缘学科涉及到机械工程生物材料科学医...

课程总结报告范本

华北科技学院课程总结20xx20xx学年第1学期安全评价技术院部安全工程学院姓名班级B105学号20xx10044502指导教师张跃兵

课程报告格式说明

课程报告格式说明,内容附图。

课程设计报告范文

计算机技术综合课程设计学生姓名何妞学号6103105048专业班级计算机051班指导教师林振荣二00八年7月4日目录1课程设计目的22课程设计题目描述和要求23课程设计内容24课程设计总结125参考书目1211...

课程报告格式

姓学院专业班级指导教师提交时间封面格式说明:1、报告封面中注明:报告题目、指导教师、作者姓名、学院、专业;2、页边距:上3.6cm、下3cm,左侧3cm、右侧2.5cm;3、段落格式:1.5倍行间距;4、纸张大…

观课报告范文

20xx年初中教师新课标课例研究全员远程研修观课报告(范文)在今天的观课议课活动中,我选择以“??”作为自己的观察视角,实地观察了***老师的一节英语新授(复习)课,现将自己的观课情况总结汇报如下:一、观察点选…

课程设计报告范文

新疆工程学院课程设计报告设计题目系部专业班级学号姓名指导教师完成日期新疆工程学院教务处印制1课程设计任务书教研室主任签名系部主任签名年2月日课程设计评定意见设计题目学生姓名专业班级评定意见评定成绩指导教师签名年...

管理学课程报告范文

浅谈管理的职能与科学管理理论在实践工作中的运用一个人真实经历20xx年暑假的时候正值我大学生涯第一年的完结那个时候经朋友推荐去武汉XX教育咨询有限公司参加面试成为了武汉XX教育中心南湖校区的一名教育顾问教育顾问...

科技文献检索课程报告范文

重庆大学研究生科技文献检索及利用课程报告姓名学号学院电话电子邮箱完成日期文献信息检索检索结果1检索词中文英文12检索3词和4检索2检索式式

工程初验报告(范本)

编号工程初验报告工程名称双河乡店子上至花秋坪公路建设单位威信县双河苗族彝族乡人民政府主管单位威信县财政局施工单位云南义博建筑工程有限公司设计单位威信县交通规划设计室监理单位云南中冶建筑工程监理有限公司检查日期2...

单位工程质量评估报告(范本)

单位工程质量评估报告范本昆明建设咨询监理公司生产管理部年月日全国甲级监理企业昆明建设咨询监理公司地址昆明市东风东路47号建业商务中心九楼电话3133920传真3133361XXXXXXXX工程单位工程质量评估报...

课程报告范文(27篇)