halcon一维检测之刻度线精确检测

该博客介绍了如何通过图像处理技术精确识别图像中的刻度线。首先,通过一阶导数计算找到边缘变化点,然后利用二阶导数的局部最大值筛选出真正的刻度线中心,通过设定二阶导数阈值来过滤噪声干扰。这种方法能有效识别图像中的刻度线,提高自动化处理的准确性。
摘要由CSDN通过智能技术生成

刻度线在图像中的分布比较特殊,因为刻度线通常只占据了几个像素宽度,对应剖面线灰度值在几个像素内发生急剧变化 ,measure_projection (Image, MeasureHandle, GrayValues),如下图所示

对应灰度值一阶导数由一下算子计算

create_funct_1d_array (GrayValues, Function)
smooth_funct_1d_gauss (Function, Sigma, SmoothedFunction)
derivate_funct_1d (SmoothedFunction, 'first', FirstDerivative)

如下图所示

可以看到每个刻度线都存在两条边缘(负边缘和正边缘),刻度线位置可近似认为是一阶导数过零点。由于噪声干扰,一阶导数过零点非常多。

对应的二阶导数如下图所示

真正的刻度线位置处二阶导数为局部最大值,可通过对二阶导数的阈值筛选进行相关操作从而筛选出真正的刻度线中心

zero_crossings_funct_1d (FirstDerivative, ZeroCrossings)

* Select the positions of those minima (i.e., positions at which the second derivative is positive)
* where the smoothed gray value profile has a high curvature, i.e., where the second derivative
*  has a large absolute value. This criterion ensures that only salient lines are selected.
MinimumMagnitudeOfSecondDerivative := 8
PositionOfSalientLine := []
for i := 0 to |ZeroCrossings| - 1 by 1
    get_y_value_funct_1d (SecondDerivative, ZeroCrossings[i], 'constant', Y)
    if (Y > MinimumMagnitudeOfSecondDerivative)
        PositionOfSalientLine := [PositionOfSalientLine,ZeroCrossings[i]]
    endif
endfor

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值