Halcon图像处理:筛选、降噪与增强全解析

1.区域筛选与排序

  1. select_shape (Regions, Selected, 'circularity', 'and', min, max)

    • 作用:根据形状特征筛选区域
    • 参数:
      • 'circularity':圆形度
      • 0.76~1:只保留圆形度高的区域
  2. 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)

一、空间域法(空域)

**空间域法:**包含图像像素的空间,在空间域中,直接对图像进行各种线性或非线性运算,对图像的像素灰度做增强处理。

分类:

  1. 点运算作用于单个像素,包括:灰度变换、直方图修正、伪彩色增强等。
  2. 模板处理作用于像素邻域,包括:图像平滑、图像锐化等。

二、频域法

**频域法:**在图像的变换域中把图像看作一种二维信号,对其进行基于二维傅里叶变换的信号增强。

常用方法:

  • 低通滤波
  • 高通滤波
  • 同态滤波

三、使用高斯滤波的过程(基于傅里叶变换)

步骤:

  1. 创建高斯核
  2. 傅里叶变换,将空域 → 频域
  3. 在频域下执行高斯滤波
  4. 逆傅里叶变换,将频域 → 空域

四、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 (频域卷积)

  • 频域图像 × 高斯核 = 滤波后的频域图像
相关推荐
小陈工2 小时前
2026年3月24日技术资讯洞察:边缘AI商业化,Java26正式发布与开源大模型成本革命
java·运维·开发语言·人工智能·python·容器·开源
云蝠呼叫大模型联络中心2 小时前
医疗智能客服系统架构设计与云蝠VoiceAgent API集成实践
人工智能·系统架构·api·医疗·voiceagent·ai 客服选型·智能客服 2026
工具箱大集合2 小时前
英语课件PPT免费模板2026实测优选清单
人工智能·ppt
BullSmall2 小时前
Apifox AI 配置的完整参数表
人工智能
WJX_KOI2 小时前
OpenClaw 纯 Windows 环境源码部署教程(含修改脚本配置)
人工智能·windows
AI科技星2 小时前
基于wr/c + h/c = 1的螺旋线矢量特性及应用分析
c语言·开发语言·人工智能·opencv·算法·计算机视觉·r语言
言之。2 小时前
GPT能否替代人类在复杂任务下的直觉?
人工智能·gpt
嵌入式学习和实践2 小时前
当MCU遇上大模型:在单片机上实现AI对话的硬核玩法
人工智能·单片机·大模型
摸鱼仙人~2 小时前
拆解 Qwen2.5-7B:从结构打印看懂大语言模型的设计细节
人工智能·语言模型·自然语言处理