Blob Analysis --Blob 分析
Blob分析(Blob Analysis)是对图像中相同像素的连通域进行分析,该连通域称为Blob。Blob分析可为机器视觉应用提供图像中的斑点的数量、位置、形状和方向,还可以提供相关斑点间的拓扑结构。
4.1 Basic Concept
Blob分析主要分三部分:
4.2 Extended Concept
4.2.5 Extract Segmentation Parameters 获取分割参数
Instead of using fixed threshold values, they can be extracted dynamically for each image. One example
for this is a gray value histogram that has multiple peaks, one for each object class. Here, you can use
the operators gray_histo_abs and histo_to_thresh.
for this is a gray value histogram that has multiple peaks, one for each object class. Here, you can use
the operators gray_histo_abs and histo_to_thresh.
如果图像的前景和背景区域灰度值分布比较均匀,那么图像的灰度直方图具有明显的双峰。
我们可以通过图像的灰度直方图的谷底值来作为划分阈值。gray_histo_abs and histo_to_thresh.
4.2.6 Segment Image
For the segmentation various methods can be used. The most simple method is threshold, where one
or more gray value ranges that belong to the foreground objects are specified. Another very common
method is dyn_threshold. Here, a second image is passed as a reference. With this approach, a local
threshold instead of a global threshold is used. These local threshold values are stored in the reference
image. The reference image can either be static by taking a picture of the empty background or can be
determined dynamically with smoothing filters like mean_image.
or more gray value ranges that belong to the foreground objects are specified. Another very common
method is dyn_threshold. Here, a second image is passed as a reference. With this approach, a local
threshold instead of a global threshold is used. These local threshold values are stored in the reference
image. The reference image can either be static by taking a picture of the empty background or can be
determined dynamically with smoothing filters like mean_image.
dyn_threshold : Segment ->Thresthold->dyn_threshold 算子的例子很好的说明了。
4.2.7 Process Region
Once blob regions are segmented, it is often necessary to modify them, e.g., by suppressing small areas,
regions of a given orientation, or regions that are close to other regions. In this context, the morpho-
logical operators opening_circle and opening_rectangle1 are often used to suppress noise and
closing_circle and closing_rectangle1 to fill gaps.
Blobs with a specific feature can be selected with select_shape, select_shape_std, and se-
lect_shape_proto.
regions of a given orientation, or regions that are close to other regions. In this context, the morpho-
logical operators opening_circle and opening_rectangle1 are often used to suppress noise and
closing_circle and closing_rectangle1 to fill gaps.
Blobs with a specific feature can be selected with select_shape, select_shape_std, and se-
lect_shape_proto.
图像分割以后
opening_circle opening_rectangle1 用于消除噪点
closing_circle and closing_rectangle1 用于填充缺口
也可以根据特征选择,在halcon 可视化的 特征直方图中 有操作。
例子:solution_guide/basics/crystal.hdev
*中值滤波 滤波用的元素结构大小 21*21
mean_image(Image,ImageMean,21,21)
*两幅图像 比较后出来的的二值图 是要提取的物体
dyn_threshold(Image,ImageMean,RegionDynThresh,8,'dark')
connection(RegionDynThresh,ConnectedRegions)
*改变形状 为(convex)凸 形
shape_trans (ConnectedRegions, ConvexRegions, 'convex')
*选出面积大的
select_shape (ConvexRegions, LargeRegions, 'area', 'and', 600, 2000)
select_gray (LargeRegions, Image, Crystals, 'entropy', 'and', 1, 5.6)
----------------------------------------------------------------------------------------------------------------------------------------
例子:solution_guide/basics/atoms.hdev
gauss_image (Image, ImageGauss, 5)
watersheds (ImageGauss, Basins, Watersheds) *分水岭分割
watersheds (ImageGauss, Basins, Watersheds) *分水岭分割
******
* -> skip regions at the border of the image 去掉四边
******
* 以左上角列为基准,选取2--width-1 的列; 也就是说去掉了最左边的边框
select_shape (Basins, SelectedRegions1, 'column1', 'and', 2, Width-1)
select_shape (SelectedRegions1, SelectedRegions2, 'row1', 'and', 2, Height-1)
select_shape (SelectedRegions2, SelectedRegions3, 'column2', 'and', 1, Width-3)
select_shape (SelectedRegions3, Inner, 'row2', 'and', 1, Height-3)
* -> select irregularly shaped atoms 找到不规则的网格
select_shape (Inner, Irregular, 'compactness', 'and', 1.45, 3)
select_shape (Inner, Irregular, 'compactness', 'and', 1.45, 3)
例子:hdevelop/Applications/Measuring-2D/particle.hdev
************************
*提取出白色的区域: 可以看出 分两部分:1.亮度大的大块区域 2.亮度小的小块区域
*************************
*二值化分割说大块的区域
threshold (Image, Large, 110, 255)
*做一下膨胀
dilation_circle (Large, LargeDilation, 7.5)
dilation_circle (Large, LargeDilation, 7.5)
*取出LargeDilation之外的区域,这个区域包含有亮度较小的块
complement (LargeDilation, NotLarge)
reduce_domain (Image, NotLarge, ParticlesRed)
complement (LargeDilation, NotLarge)
reduce_domain (Image, NotLarge, ParticlesRed)
*做中值处理,31*31 较大所以较小的 亮度点就没了
mean_image (ParticlesRed, Mean, 31, 31)
mean_image (ParticlesRed, Mean, 31, 31)
*这两幅图做运算,就出来 亮度小的小块区域
dyn_threshold (ParticlesRed, Mean, SmallRaw, 3, 'light')
dyn_threshold (ParticlesRed, Mean, SmallRaw, 3, 'light')
*再去小噪点 ok
opening_circle (SmallRaw, Small, 2.5)
connection (Small, SmallConnection)
opening_circle (SmallRaw, Small, 2.5)
connection (Small, SmallConnection)
例子:hdevelop/Applications/Measuring-2D/fin.hdev
***********************************
*找出图片的毛刺
***********************************
*二值化
bin_threshold (Fin, Dark)
*背景
difference (Fin, Dark, Background)
difference (Fin, Dark, Background)
*填充背景图的缺口
closing_circle (Background, ClosedBackground, 250)
*两背景比较得出 毛刺区域
difference (ClosedBackground, Background, RegionDifference)
*消除小的噪点
opening_rectangle1 (RegionDifference, FinRegion, 5, 5)
opening_rectangle1 (RegionDifference, FinRegion, 5, 5)
常用的操作符:见Solution——guide 4.4
作者: 小马_xiao
出处:http://www.cnblogs.com/xiaomaLV2/>
关于作者:专注halcon\opencv\机器视觉
本文版权归作者,未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接