1.米粒分割、识别与统计实验,见图1。要求:1.对图像进行分割,并给出分割后的图像;2.计算出米粒的数目、最大米粒的面积。
图1:
2.气泡自动计数工作
当听说您成功解决了米粒问题后,一家流体公司与您进行了联系,希望能通过某些处理解决气泡自动计数工作,以便进行质量控制。该公司已解决了成像问题,并可以得到分辨率为800*800像素的8比特图像,如下图所示。每幅图像表示一个大小为8cm2的面积。公司希望使用每幅图像来做两件事情:(1)确定图像中气泡所占面积与图像总面积的比率,(2)计数不同气泡的数量。基于上述资料,请您提出该问题的一个解决方案。在您的解决方案下,必须指出可检测的最小气泡的物理尺寸。清楚地陈述您所做的那些可能会影响到解决方案的所有假设。
3.瓶子灌装检测
一家使用瓶子盛装各种工业化工品的公司雇佣您来设计一种检测瓶子未装满的方法。瓶子在传送带上移动并通过自动填装和封盖机的情形如下图所示。当液位低于瓶颈底部和瓶子肩部的中间点时,则认为瓶子未装满。瓶子横截面的侧面与倾斜面的区域定义为瓶子的肩部。瓶子在不断移动,但该公司有一个成像系统,该系统装备了一个前端照明闪光灯,可以有效停止瓶子的移动,所以您可以得到非常接近于这里显示的样例图像。基于上述资料,请您提出一个检测未完全装满的瓶子的解决方案。清楚地陈述您所做的那些可能会影响到解决方案的所有假设。
clc
clear
I=imread('米粒.jpg');
figure(1),subplot(231),imshow(I),title('原始图像')
%大津法直接阈值分割
BW0=im2bw(I,graythresh(I));
figure(1),subplot(232),imshow(BW0),title('大津法直接阈值分割')
background=imopen(I,strel('disk',32));
figure(1),subplot(233),imshow(background),title('背景图像')
I2=imsubtract(I,background);%图像减法,即I-background同时负值截取为零
figure(1),subplot(234),imshow(I2),title('顶帽运算后的图像')
I3=imadjust(I2,stretchlim(I2),[0,1]);
figure(1),subplot(235),imshow(I3),title('对比度拉伸后的图像')
level=graythresh(I3);
BW=im2bw(I3,level);
figure(1),subplot(236),imshow(BW),title('大津法阈值分割')
BW=imopen(BW,strel('disk',2));%去除小的噪声
imshow(BW)
[labeled,numobjects]=bwlabel(BW,8);%连通分量提取与统计
numobjects %连通区域的数量
figure,imshow(labeled),title('显示标签矩阵');
impixelregion;
d_color=label2rgb(labeled,@spring,'c','shuffle');
figure,imshow(d_color),title('颜色渲染')
gra=regionprops(labeled,'basic')
area49=gra(49).Area
maxarea=max([gra.Area])%最大面积
类似
连通分量提取与统计:
[labeled,numobjects]=bwlabel(BW,conn);
其中,BW是一副输入二值图像,conn用于指定期望的连接(不是4就是8)。Labeled为标记矩阵,numobjects为所给出的连接分量总数。
gra=regionprops(labeled,‘basic’) % regionprops函数,是用于计算区域描绘子的主要工具,其中,Labeled为标记矩阵,gra为结构数组。
%通过该函数,可以计算出每个连通域的面积、周长等参数。