设为首页 加入收藏

TOP

12.4.3 图像识别(2)
2013-10-07 15:13:34 来源: 作者: 【 】 浏览:63
Tags:12.4.3 图像 识别

12.4.3  图像识别(2)

(4)图像经过滤波处理后,图像的预处理过程结束,已经获得了比较清晰的原始图像的灰度图。下面将对图像进行图像分割处理,提取所需目标的特征。由于目标图像与背景有较大区别,可以利用灰度的梯度信息来实现图像分割。通过图像分割,将原始图像中目标药丸显示为黑色,背景区域显示为白色。在MATLAB命令窗口中输入如下代码:

  1. >> level=graythresh(Ft);  
  2. >> BW=im2bw(Ft,level);  
  3. >> imshow(BW); 

程序运行,处理后的图像如图12.12所示。

(5)执行程序后,从图12.12可以看出,目标图像间存在连接状态,这不利于实现正确计数,故在图像分割时所取阈值并不合适。可以从MATLAB的Workspace中读取阈值level的值为0.4353,通过给定这个阈值来获得更好的图像分割效果。需要采取实验的方法评估level的值增加或者减小对图像的影响,通过实验取值分析,最后获得合适的阈值为level=0.3,图像效果如图12.13所示。

 
图12.12  图像分割处理后图像
 
图12.13  更改阈值后分割图像
(6)边缘检测,通过阈值分割后,下面将对图像进行边缘检测,将采用sobel算子进行边缘检测。在MATLAB命令窗口输入如下代码:
  1. >> BW1=edge(BW,'sobel',0.3);  
  2. >> imshow(BW1); 

程序运行后,检测后的图像如图12.14所示。
 
图12.14  图像边缘检测图像
(7)从图像边缘检测图像可以看出,药丸的形状不是标准的圆形,且在图像边缘处存在不完整的图形,需要将图像中药丸的形状进行调整,并且删去图像边缘不完整的图形。具体要通过膨胀和填充操作实现,即对图像边缘进行膨胀处理,补全药丸的缺口,然后利用填充命令进行闭合区域的填充。在MATLAB命令窗口中输入如下代码:
  1. >> se90=strel('line',7,90);  
  2. >> se0=strel('line',7,0);  
  3. >> BW2=imdilate(BW1,[se90,se0]);  
  4. >> figure,imshow(BW2);  
  5. >>BW3=imfill(BW2,'holes');  
  6. >>figure,imshow(BW3);  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇12.4.3 图像识别(3) 下一篇12.4.3 图像识别(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: