halcon基础学习(2)—blob分析

        这段时间在学halcon,项目又紧,只能晚上回来学习学习,现在在看着视屏学点基础,其实对我来说学习软件到时很快,视屏里说学视觉还是以项目为主。以下是官方实例,原图

程序跑完之后的效果,其实就是一个典型的blob分析,当然中间还夹杂着其他东西。

源码如下:

* ball.hdev: Inspection of Ball Bonding
* 
dev_update_window ('off')
dev_close_window ()
dev_open_window (0, 0, 728, 512, 'black', WindowID)
read_image (Bond, 'die/die_03')
dev_display (Bond)
set_display_font (WindowID, 14, 'mono', 'true', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
threshold (Bond, Bright, 100, 255)
shape_trans (Bright, Die, 'rectangle2')
dev_set_color ('green')
dev_set_line_width (3)
dev_set_draw ('margin')
dev_display (Die)
disp_continue_message (WindowID, 'black', 'true')
stop ()
reduce_domain (Bond, Die, DieGrey)
threshold (DieGrey, Wires, 0, 50)
fill_up_shape (Wires, WiresFilled, 'area', 1, 100)
dev_display (Bond)
dev_set_draw ('fill')
dev_set_color ('red')
dev_display (WiresFilled)
disp_continue_message (WindowID, 'black', 'true')
stop ()
opening_circle (WiresFilled, Balls, 15.5)
dev_set_color ('green')
dev_display (Balls)
disp_continue_message (WindowID, 'black', 'true')
stop ()
connection (Balls, SingleBalls)
select_shape (SingleBalls, IntermediateBalls, 'circularity', 'and', 0.85, 1.0)
sort_region (IntermediateBalls, FinalBalls, 'first_point', 'true', 'column')
dev_display (Bond)
dev_set_colored (12)
dev_display (FinalBalls)
disp_continue_message (WindowID, 'black', 'true')
stop ()
smallest_circle (FinalBalls, Row, Column, Radius)
NumBalls := |Radius|
Diameter := 2 * Radius
meanDiameter := mean(Diameter)
minDiameter := min(Diameter)
dev_display (Bond)
disp_circle (WindowID, Row, Column, Radius)
dev_set_color ('white')
disp_message (WindowID, 'D: ' + Diameter$'.4', 'image', Row - 2 * Radius, Column, 'white', 'false')
dev_update_window ('on')

1、概念

        在计算机视觉中的Blob是指图像中的具有相似颜色、纹理等特征所组成的一块连通区域。Blob分析(Blob Analysis)是对图像中相同像素的连通域进行分析(该连通域称为Blob)。其过程其实就是将图像进行二值化,分割得到前景和背景,然后进行连通区域检测,从而得到Blob块的过程。简单来说,blob分析就是在一块“光滑”区域内,将出现“灰度突变”的小区域寻找出来。

2、方法

主要方法:取图——分割——提取

2.1、获取图像:首先是获取一张图像。

获取图像目前有三种方法(原理都一样),1、代码read_image (Bond, 'die/die_03')函数,2、从文件->读取图像(ctr+R),生成代码,3、菜单栏,助手也可以

2.2、分割图像:当已经获取了图像,接下来的任务就是去选择前景像素,这个也被称为分割。这个处理  的结果被参考为blobs (二进制大对象)。在HALCON中,数据类型为一个区域。

这些技术包括:二元阈值(Binary Thresholding)、空间量化误差(Spatial~ mtization Error)、软件二元阈值和像素加权(SoftBinary Thresholding and Pixel Weighting)、相关阈值(Relative Thresholds)、阈值图像(Threshold Image)。

2.3、提取特征:在最后一步,去计算特征,诸如面积(如,像素的数量),重心,或者方向。

有的人在取图和分割之间还会加上去噪,当然一般这个预处理都会有的。

1)区域特征

面积area,力矩Moments,平行于主轴的最小矩形smallest_rectangle1,任意方向的最小矩形smallest_rectangle2,

最小圆形smallest_circle,convexity:凸包面积,contlength:区域边界长度

形状特征roundness,circularity,compactness,rectangularity

2)灰度特征

简单灰度值特征:区域的平均灰度值,区域的最小和最大灰度值

主要应用场景:

       针对二维目标图像和高对比度图像,适用于有无检测和缺陷检测。常用于二维目标图像、高对比度图像、存在/缺席检测、数值范围和旋转不变性需求。

显然,纺织品的瑕疵检测,玻璃的瑕疵检测,机械零件表面缺陷检测,可乐瓶缺陷检测,药品胶囊缺陷检测等很多场合都会用到blob分析。

3、延伸

        在实际应用中,需要处理更多步骤,因为很多实际因素,目标信息很难处理。比如图像中有很多杂斑(很难提取目标位),光照不均等。

        还有Blob分析需要后期处理。比如将特征信息转换成实际坐标信息,显示目标物等。

获取图像->应用ROI->定位ROI->矫正图像->图像预处理->动态获取分割参数->分割图像->处理区域->特征提取->将像素坐标转换到世界坐标->结果显示或者输出

图像预处理常用算子:

mean_image:均值滤波

gauss_image:高斯滤波

median_image:中值滤波

动态获取分割参数常用算子:

gray_histo_abs:灰度直方图

histo_to_thresh:直方图二值化

a1111.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的挖掘机

谢谢大家的厚爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值