Halcon基础——图像增强

图像增强

定义

image

分类

image

空间域

image

频率域

image

点运算

image

线性灰度变换

使用一个线性函数去改变灰度值
image

分段线性灰度变换

image

非线性灰度变换

image

Halcon的点运算

image
image
image

直方图修正法

基于图像的灰度直方图进行修正。
image

直方图均衡化

让图像灰度分布更加均匀。
image

直方图规定化

经处理后,左侧图像灰度直方图类似于右侧图像。
image

图像平滑

噪声

高斯噪声

image

椒盐噪声

image

均值滤波

image
image
为了能够确认出中心点,掩膜的Size要设置为奇数。

中值滤波

取指定掩膜中,灰度的中值,作为当前点的灰度值。
中值滤波对于椒盐噪声有很好的去噪效果。
image

多图像平均法

拍摄多幅图像后,然后将图像累加后取平均值。原因:使用电子设备拍摄的图像中的噪声多为高斯噪声,其对应的数学期望为0.因此取多幅图像计算平均值,能够降低噪声。

图像锐化

image

图像边缘提取

假设我们获取一条扫描线上的所有灰度值,那么其对应的灰度图像如下图所示。
image
对于一阶导数而言,边缘出现在其导数的极值处。并且对应二阶导数的零点。
image

数学原理

image
如何在图像上求导数呢?首先要明确图像上的像素点都是离散的,实际上我们的求导是用差分去表示微分。例如在x方向上导数的计算公式如下。
image

边缘检测算子

上面讲到,我们既可以通过一阶导数去判断边缘,也可以通过二阶导数去判断边缘。根据采取的方法不同分为以下两类方法。
image

梯度法

在模拟图像中,在理想条件下。对于图像函数f(x,y)其应该是处处可导的。
image
在实际情况中,我们还是选择使用差分去代替上面的求导。从中我们分别可以得到x和y方向的导数公式。近似得到梯度。
image
将上述公式转换为一个模板即可得到。
image

横向微分运算

image

纵向微分运算

image

双方向一次微分运算

image

交叉差分运算

image
image

Sobel算子(一阶微分)

上面的两种方法(双方向、交叉),在实际应用过程中,非常容易收到噪声的干扰,导致边缘提取不准确。
image
Sobel算子通过大中心位置的权重以及感受野,能够实现更好的边缘提取效果。
image
下图中,使用Sobel算子,我们更能直观体会到增强后的人的轮廓。
image
image

Halcon中使用Sobel算子

image
该算子的返回结果是一张幅值强度图像。
其中,FilterType规定了幅值的计算方式,通常采用绝对值相加的方式即可。Size用于设置算子模板的大小。
需要明确的是,使用算子提取的所谓边缘,是基于灰度的变化进行的,也即是说提取的边缘是一条灰度的过渡带。这是我们往往还需要搭配skeleton算子,才能获取到一条细致的边缘轮廓。

拉普拉斯增强算子(二阶微分)

此类算子就是通过计算二阶导数进行边缘增强。通过计算二阶导的梯度,实现边缘增强。
image
不同的掩膜实际上就规定了算子能够检测的边缘方向,例如 如果图像中仅包括水平和垂直的边缘,那么选择4邻域的掩膜即可。如果还包含斜边,就应该考虑使用8邻域的掩膜
image
image
image

Halcon中使用拉普拉斯算子

image

需要明确的是,该算子返回的图像,仅仅是通过拉普拉斯算子滤波后的一个二阶导数图像。根据上面的分析可以,边缘对应着二阶导为0的点,因此图像中的边缘实际上是值为0的地方。如果想要提取边缘,还需要使用zero_crossing_sub_pix等算子,去找出为0的像素点,这才是真正的边缘
更多情况下,我们使用的是laplace_of_gauss算子,该算子会首先进行一次高斯滤波降噪。

posted @ 2025-09-29 13:11  Ytytyty  阅读(113)  评论(0)    收藏  举报