Halcon教程十三:图像预处理

在前面的一些教程中
我们用到的预处理最多的步骤是
图像灰度化 在遇到更复杂的图像的时候
Halcon提供了更多的处理算子
整理一些
图像灰度化
灰度变化的主要目的,是提高图像的对比度。对比度就是图像的清晰程度。包括灰度变换和直方图变换等。

灰度变换分为:灰度线性变换、灰度非线性变换、和灰度直方图变换。
灰度线性变换:将图像的像素点的灰度值按照线性变换函数进行变换。g(x,y)=af(x,y)+b。还可以进行分段变换、取反变换。

图像取反:g(x,y)=255-f(x,y)。

图像相加算子:sub_image

图像取反算子:invert_image
灰度非线性变换:图像灰度值采用非线性函数进行变换,常用的有对数函数和指数函数。

对数函数变换算子:log_image。

指数函数变换算子:exp_image
灰度直方图变换:对图像中的像素灰度做映射变换。这种映射是基于灰度直方图的,这里介绍直方图均衡化。

直方图均衡化算子:equ_histo_image。
图像滤波
图像滤波的作用:去除图像中的干扰(噪声)。噪声一般由外接产生,如灰尘、热噪声等。

滤波主要分为:
均值滤波:

对于模糊图像以及图像内部的噪声由很好的作用。

算子:mean_image

中值滤波:

对单个噪声点具有很好的平滑作用。特别是椒盐噪声。

算子:median_image

高斯滤波:

根据高斯函数,考虑权重的滤波。

算子:gauss_filter

导向滤波:

对于边缘具有很好的保持作用,同时能够对其他地方去除噪声,是使用频率较高的去噪方法。

算子:guided_filter

图像仿射变化
图像的变换,包括仿射变化和透视变化。一般情况下用的是仿射变化。图像的仿射变化指的是平移与旋转。

计算图像移动前后矩阵关系:vector_angle_to_rigid

对图像进行变换:affine_trans_image
图像的极坐标变换
极坐标的定义
Halcon教程十三:图像预处理
在平面内由极点、极轴和极径组成的坐标系。在平面上取定一点O,称为极点。从O出发引一条射线,称为极轴。再取定一个单位长度,通常规定角度取逆时针方向为正。这样,平面上任一点的位置,就可以用r表示线段的长度,a表示角度,r叫做点的极径,a叫做点的极角。有序数对(r,a)就称为P点的极坐标,这样建立的坐标系叫做极坐标系。

极坐标系的变换:选取极坐标原点,并将原坐标系变换为极坐标系的过程,称为极坐标系的变换过程。

关键点在于,极坐标系的原点的选取以及起始角度的设置。

Halcon教程十三:图像预处理
*极坐标-图形圆展开
polar_trans_image_ext (ImageReduced, PolarTransImage, 256, 256, 0, 6.28319, 0, 100, 512, 512, ‘nearest_neighbor’)
*极坐标-图形合并圆
polar_trans_image_inv (PolarTransImage, XYTransImage, 256, 256, 0, 6.28319, 0, 100, 512, 512, ‘nearest_neighbor’)
图像的傅里叶变换
傅里叶变换是时域到频域的变换方法,通俗讲是将现在的空间变换到一个能够反映某些事物出现频率的空间。
图像傅里叶变换:
Halcon教程十三:图像预处理
用途:一般用于对出现频率高的像素点的分析以及噪声的去除。

频率图特点:图像中心为频率0的原点,由内到外频率越来越高。其中,灰度变换激烈的地方对应高频成分,如边缘。灰度变换不大的地方对应低频。

(频率高,指的是图像边缘和噪声)
*傅里叶变换-得到的图片是一个频率分布图。原点在中心
*从中间往外,由低到高,中间是低频。高频对应的是边缘变化明显的地方。低频对应外围区域都是灰色的
fft_image (GrayImage, ImageFFT)

*求傅里叶变换图片的圆心。
area_center (ImageFFT, Area, Row, Column)
*画圆
gen_circle (Circle, Row, Column, 20)
gen_circle (Circle1, Row, Column, 100)
*大圆减小圆,得到的值画圆环
difference (Circle1, Circle1, RegionDifference)
*绘制选中的区域,'fill’填充,0是灰度值,0就就相当于屏蔽掉
*paint_region (Circle, ImageFFT, ImageResult, 0, ‘fill’)
paint_region (RegionDifference, ImageFFT, ImageResult, 0, ‘fill’)
*傅里叶逆变换
fft_image_inv (ImageResult, ImageFFTInv)

额这里做个准备 后面用到后会和例子一起写