1.区域筛选与排序
-
select_shape (Regions, Selected, 'circularity', 'and', min, max)
- 作用:根据形状特征筛选区域
- 参数:
- 'circularity':圆形度
- 0.76~1:只保留圆形度高的区域
-
sort_region (Regions, Sorted, 'first_point', 'true', 'column')
- 作用:区域排序
- 参数:
- 'first_point':按第一个点排序
- 'true':升序
- 'column':按 ** 列(左右)** 排序
2.直方图
获取灰度直方图
*AbsoluteHisto 绝对分布 值是像素个数,索引值是0-255
*RelativeHisto 相对分布 值是百分比 索引值是0-255灰度值范围
gray_histo (Image, Image, AbsoluteHisto, RelativeHisto)
count:=AbsoluteHisto[10]//获取对应的灰度值的个数
count1:=RelativeHisto[10]
获取灰度值的范围
min_max_gray (Image, Image, 0, Min, Max, Range)
gen_region_histo(Region,AbsoluteHisto, 255, 255, 1)
直方图均衡化的操作 把灰度值平均化
equ_histo_image (Image, ImageEquHisto)
噪声 + 滤波
1. 噪声相关算子
gauss_distribution (Size, Distribution)
- 作用:创建高斯噪声分布
- 参数 1:50 → 噪声强度,值越大噪声越多
- 参数 2:Distribution → 输出噪声模型
add_noise_distribution (Image, ImageNoise, Distribution)
- 作用:把噪声加到图片上
- 参数 1:输入图像
- 参数 2:输出带噪声图像
- 参数 3:噪声模型(高斯 / 椒盐)
sp_distribution (Percent1, Percent2, Distribution1)
- 作用:创建椒盐噪声(黑白点噪声)
- 参数 1:10 → 椒噪声(黑点)百分比
- 参数 2:10 → 盐噪声(白点)百分比
- 参数 3:输出噪声模型
2. 滤波去噪算子
mean_image (Image, ImageMean, MaskWidth, MaskHeight)
- 作用:均值滤波(模糊、去高斯噪声)
- 参数 3、4:3,3 → 滤波核大小(必须奇数)
- 特点:去高斯噪声好用,但会模糊边缘
median_image (Image, ImageMedian, MaskType, Radius, Border)
- 作用:中值滤波(专门消除椒盐噪声)
- 参数 3:'circle' → 滤波核形状(圆形 / 矩形)
- 参数 4:3 → 核半径
- 参数 5:'cyclic' → 边界处理方式
- 'cyclic':循环边界(对面像素)
- 'mirrored':镜像边界(复制周边)
图像增强 + 频域 / 空域 + 高斯滤波(Halcon)
一、空间域法(空域)
**空间域法:**包含图像像素的空间,在空间域中,直接对图像进行各种线性或非线性运算,对图像的像素灰度做增强处理。
分类:
- 点运算作用于单个像素,包括:灰度变换、直方图修正、伪彩色增强等。
- 模板处理作用于像素邻域,包括:图像平滑、图像锐化等。
二、频域法
**频域法:**在图像的变换域中把图像看作一种二维信号,对其进行基于二维傅里叶变换的信号增强。
常用方法:
- 低通滤波
- 高通滤波
- 同态滤波
三、使用高斯滤波的过程(基于傅里叶变换)
步骤:
- 创建高斯核
- 傅里叶变换,将空域 → 频域
- 在频域下执行高斯滤波
- 逆傅里叶变换,将频域 → 空域
四、Halcon 代码实现
halcon
* 读取图像
read_image (Image, 'printer_chip/printer_chip_01')
get_image_size (Image, Width, Height)
dev_display (Image)
* 添加高斯噪声
gauss_distribution (100, Distribution)
add_noise_distribution (Image, ImageNoise, Distribution)
dev_display (ImageNoise)
*=============================
* 1 创建高斯滤波核
*=============================
* 参数1:输出高斯滤波图
* 参数2:水平方向平滑程度
* 参数3:竖直方向平滑程度
* 参数4:滤波核角度
* 参数5:归一化方式 'n'=归一化
* 参数6:'rft' 从中心向外发散
* 参数7、8:生成图像宽高
gen_gauss_filter (ImageGauss, 1, 1, 0, 'n', 'rft', Width, Height)
*=============================
* 2 傅里叶变换:空域 → 频域
*=============================
* 'to_freq' = 正向变换
* 'none' = 不做额外处理
* 'complex' = 输出复数格式
rft_generic (ImageNoise, ImageFFT, 'to_freq', 'none', 'complex', Width)
*=============================
* 3 频域滤波(卷积)
*=============================
convol_fft (ImageFFT, ImageGauss, ImageConvol)
*=============================
* 4 逆变换:频域 → 空域
*=============================
rft_generic (ImageConvol, ImageFFT1, 'from_freq', 'none', 'byte', Width)
dev_display (ImageFFT1)
五、算子与参数总结
gen_gauss_filter (高斯滤波核)
ImageGauss:输出高斯核图像1,1:水平 / 竖直平滑程度(越大越模糊)0:核的方向角度'n':归一化(推荐开启)'rft':核分布方式Width, Height:图像尺寸
rft_generic (傅里叶变换)
'to_freq':空域 → 频域'from_freq':频域 → 空域'none':不对结果做缩放'complex':复数格式(频域专用)
convol_fft (频域卷积)
- 将频域图像 × 高斯核 = 滤波后的频域图像