视觉检测之产品瑕疵检测(2)金属表面疤痕


image.png

这是一条金属棒上的伤疤,不知道被什么啃去了一块,你说该怎么才能把这个伤疤提取出来呢?

肯定是非常简单的,核心一定是threshold算子做阈值分割,然后就是select_shape选择区域

只不过在threshold算子的前置算子会有所不同,在select_shape后面的后置算子也如此。

本例子提供三种方法,基本上思路都是增加图像,然后threshold阈值分割。


方法一。

dev_update_off ( )
dev_close_window ( )
read_image (Image, 'C:/Users/Administrator/Desktop/划痕+油污+瑕疵的检测/划痕、油污、瑕疵/金属表面疤痕/Image.bmp')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/4, Height/4, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)

* 预处理
mult_image(Image,Image, ImageResult, 0.0067, 0)
scale_image_max(ImageResult, ImageScaleMax)
bit_not(ImageScaleMax, ImageNot)
mult_image(ImageNot, ImageNot, ImageResult1, 0.005, 0)
threshold (ImageResult1, Regions, 10, 153)
connection(Regions, ConnectedRegions)
* 处理
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 39094.1, 72934)
fill_up(SelectedRegions, RegionFillUp)
select_shape (RegionFillUp, SelectedRegions1, 'height', 'and', 758, 829.69)
dilation_circle(SelectedRegions1, RegionDilation, 3.5)
fill_up(RegionDilation, RegionFillUp1)
erosion_circle(RegionFillUp1, RegionErosion, 3.5)
reduce_domain(Image,RegionErosion, ImageReduced)


mult_image(Image1, Image2 : ImageResult : Mult, Add : )

两副图像相乘。其效果就是增加图像的对比度。即白越白黑越黑,中间灰度值像素很变少。

scale_image_max(Image : ImageScaleMax : : )

最大化图像的灰度值。这个算子的效果就是增加图像的对比度。

bit_not(Image : ImageNot : : )

对像素所有位求补。这个算子的效果就是让图像反相显示,即黑色就变白色。


下面图片依次为: 原图->mult_image->scale_image_max->bit_not
image.pngimage.png image.png image.png


方法一的处理结果:

image.png


方法二。

dev_update_off ( )
dev_close_window ( )
read_image (Image, 'C:/Users/Administrator/Desktop/划痕+油污+瑕疵的检测/划痕、油污、瑕疵/金属表面疤痕/Image.bmp')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/4, Height/4, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)


*方法二
*图像处理
gauss_image (Image, ImageGauss, 3) 
scale_image_max (ImageGauss, ImageScaleMax) 
* Extract color edges using Canny, Deriche, or Shen filters
edges_color (ImageScaleMax, ImaAmp, ImaDir, 'canny', 1, 'nms', 20, 40) 
threshold (ImaDir, Region, 1, 255) 
closing_circle (Region, RegionClosing, 3.5) 
connection (RegionClosing, ConnectedRegions) 
fill_up (ConnectedRegions, RegionFillUp) 
select_shape (RegionFillUp, SelectedRegions, 'area', 'and', 10000, 99999)


gauss_image(Image : ImageGauss : Size : )
使用离散高斯函数平滑图像。它是一种图像滤波效果。

edges_color(Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )
根据颜色进行边缘提取


下面效果依次是: scale_image_max->edges_color->threshold->fill_up

image.png image.png
image.png image.png

由这段例程可知,edges_color提取边缘后再使用threshold算子,然后fill_up算子填充。全过程其实是region的操作,因此边缘提取还可以是region,并不是边缘提取都只有XLD的算子。


例子二的效果:

image.png


方法三。

* 初始化
dev_update_off ( )
dev_close_window ( )
read_image (Image, 'C:/Users/Administrator/Desktop/划痕+油污+瑕疵的检测/划痕、油污、瑕疵/金属表面疤痕/Image.bmp')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/4, Height/4, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)


*方法三
* 加强图像的对比度
emphasize(Image,ImageEmphasize,Width, Height, 5)
threshold(ImageEmphasize, Region, 0, 5)
fill_up(Region, RegionFillUp2)
connection(RegionFillUp2, ConnectedRegions1)
select_shape(ConnectedRegions1, SelectedRegions2, 'area', 'and', 55000, 60000)
closing_circle(SelectedRegions2, RegionClosing, 13.5)


emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )

增强图像对比度


下图的效果依次是: emphasize->threshold->fill_up和closing_circle

image.png image.png

image.png

方法三比较简单,只不过在threshold之前用了一个前置算子emphasize用来增强图像的对比度。


--------------------- 

作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864