Halcon图像平滑与去噪

Halcon图像平滑与去噪

文章目录

  • Halcon图像平滑与去噪
    • 1. 均值滤波
    • 2. 中值滤波
    • 3. 高斯滤波
    • 5. 光照不均匀

有时拍摄的图像中会存在很多杂点和噪声,对于比较均匀的噪声,可以考虑用软件的算法进行
消除。例如,可以用图像平滑的方法进行去噪,主要的方法有均值滤波、中值滤波、高斯滤波等。

1. 均值滤波

均值滤波的原理就是将像素灰度值与其邻域内的像素灰度值相加取平均值。该滤波器区域就如同一个小的“窗口”,在图像上从左上角开始滑动,将该“窗口”内的像素灰度值相加并取平均值,然后将该灰度值赋值给“窗口”中的每一个像素。在Halcon中使用mean_image算子进行均值滤波代码举例如下:

read_image (ImageNoise, 'data/marker')
mean_image (ImageNoise, ImageMean, 9,9)
dev_display (ImageMean)

在这个例子中,mean_imag 算子的第一个参数ImageNoise 是输入的带噪声的图像;第二个经数ImageMcan 是输出的均值滤波后的图像;9是卷积核的尺寸,即“窗口”中包含的像素的横纵坐标方向的尺寸。注意,这里滤波器的“窗口”尺寸一般都是奇数像素尺寸的正方形,如3、5、7、9 11、15等,因为奇数可以保证中心像素处于滤波器正中间。该尺寸默认取9。均值滤波效果如图所示。
在这里插入图片描述
图(a)为输入的带噪声的图像,图(b)为均值滤波后的图像。可见,该方法能有效地消除一些高斯噪声,但也容易导致图像变得模糊。因此,对一些图像边界或是需要准确分割的区域,需要考虑使用边界处理的算法或者其他更好的方法。

2. 中值滤波

中值滤波的原理与均值滤波相似,不同的是,它以像素为中心,取一个指定形状的邻域作为滤波器,该形状可以是正方形,也可以是圆形。然后将该区域内的像素灰度值进行排序,以排序结果的中间值作为灰度计算结果赋值给该区域内的像素。在Halcon中使用median_image算子进行均值滤波,代码举例如下:

read _image (ImageNoise, 'data/marker')
median_image (ImageNoise, ImageMedian, 'circle', 3, 'continued')
dev_display (ImageMedian)

在这个例子中,median_image算子的参数解释如下。第1个参数ImageNoise 是输入的带噪声的图像。第2个参数ImageMedian 是输出的中值滤波后的图像。
第3个参数是邻域的形状,这里选择circle,也可以选择square。
第4个参数是卷积核的尺寸,这里选择3,表示圆形的半径是3个像素。注意,如果第3个参
数选择square,那么这里选择3,表示正方形的边长是2×3+1,即7。
第5个参数表示边界的处理方式,因为边界处往往无法移动滤波“窗口”,因此需要对像素做些补充。这里选择continued,表示延伸边界像素。也可以选择cyclic,表示循环延伸边界像素。中值滤波效果如图所示。
在这里插入图片描述
由图 可知,该方法对于去除一些孤立的噪声点非常有效,也能够保留大部分边缘信息。但
是在使用时也要注意滤波器的尺寸的选择,如果选得太大,也容易造成图像的模糊。

3. 高斯滤波

高斯滤波与前两种方法不同的是,它利用的滤波器不是简单地求均值或者排序,而是调用一个二维离散的高斯函数。高斯滤波适用于去除高斯噪声。在Halcon中使用gauss_filter算子进行高斯滤波,代码举例如下:

read image (ImageNoise, 'data/marker')
gauss filter (ImageNoise, ImageGauss, 5)
dev_dísplay (ImageGauss)

在这个例子中,gauss_filter算子的参数如下。
第1个参数ImageNoise 是输入的带高斯噪声的图像。
第2个参数 ImageGauss 是输出的高斯滤波后的图像。
第3个参数是滤波器的尺寸,尺寸值越大,平滑效果就越明显。可以根据实际效果调节该参数,
-般取3、5、7、9、11。高斯滤波效果如图所示。
在这里插入图片描述
图(a)为带高斯噪声的图像,图(b)为应用了高斯滤波器后的图像。与前两种方法相比,高斯滤波能够保留更多的边缘和细节,图像更为清晰,平滑的效果也更加柔和。

5. 光照不均匀

光照不均匀是采集图像时常见的一个问题,由于拍摄环境的光线变化导致图像受光不均匀,这将增加识别图像的难度。可以首先考虑改变硬件环境以避免这一情况,如增加遮光罩、增加光源,或者改变打光方式。硬件上的调整能显著地改善图像质量,为软件提供高质量的图像输入。但是如果条件有限,不便于改变硬件环境或重新采集图像,也可以通过软件算法改善这一情况。
改善光照的方式有很多,本文列举一种,即采用通道分离的方式对彩色图像进行光线均衡化处理。其步骤如下。
(1)输入光照不均匀的彩色图像。这里强调彩色图像,是因为黑白图像是单通道,不适用于这种方法,可以直接通过直方图均衡的方式对图像进行增强。
(2)分离出RGB通道。使用decompose3算子将图像分离成红绿蓝3个通道,并将每个通道单
独存成一幅图像。
(3)对每个颜色通道的图像进行直方图均衡,使其色彩过渡更加平滑。
(4)将平滑后的3个通道的图像重新组合成三通道的彩色图像。这里使用compose3算子将三通道图像重新组合。
完成上述步骤的图像效果如图所示。
在这里插入图片描述
下面是实现这一过程的代码:

read image (test, 'data/label')
decompose3(test, imagel, image2, image3)
mean_image (imagel, Meanl, 9, 9)
emphasize (Meanl, em1, 5, 5, 1.5)
illuminate (eml, ImageIl, 20, 20, 0.55)
equ_histo _image (image2, ImageEquHisto2)
equ_histo _image (image3, ImageEquHisto3)
compose3 (ImageI1, ImageEquHisto2, ImageEquHisto3, MultichannelImage)
dev_display(MultiChannelImage)

由图可以看出,图像光线不均匀的情况有所改善,阴影部分的文字也显露出来了,但是仍然存在局部较大,边缘不清晰等情况。因此,还应当结合去噪和平滑等方法,进一步增强图像质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/400824.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 自定义全局弹窗

自定义全局弹窗可在js和.vue文件中调用&#xff0c;unipop样式不满足&#xff0c;需自定义样式。 效果图 目录结构 index.vue <template><view class"uni-popup" v-if"isShow"><view class"uni-popup__mask uni-center ani uni-cust…

数学建模——启发式算法(蚁群算法)

算法原理 蚁群算法来自于蚂蚁寻找食物过程中发现路径的行为。蚂蚁并没有视觉却可以寻找到食物&#xff0c;这得益于蚂蚁分泌的信息素&#xff0c;蚂蚁之间相互独立&#xff0c;彼此之间通过信息素进行交流&#xff0c; 从而实现群体行为。 蚁群算法的基本原理就是蚂蚁觅食的过程…

R语言的算数运算

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容&#xff0c;每篇文章都在 5000 字以上&#xff0c;质量平均分高达 94 分&#xff0c;看全文请点击下面链接&#xff1a; 3章3节&#xff1a;R的赋值操作与算术运算_r 链式赋值-CSDN博客文章浏览阅读172次。掌…

Ajax-02.Axios

Axios入门 1.引入Axios的js文件 <script src"js/axios-0.18.0.js"></script> Axios 请求方式别名: axios.get(url[,config]) axios.delete(url[,config]) axios.post(url[,data[,config]]) axios.put(url[,data[,config]]) 发送GET/POST请求 axios.get…

Windows的cmd命令行使用Linux类命令

Windows的cmd使用Linux类命令 去我的个人博客观看&#xff0c;观感更佳哦&#xff0c;&#x1f619;&#x1f619; 前言 我在使用Vscode编写C/C代码的时候&#xff0c;经常会用到Shell(你可以理解为命令行)&#xff0c;但是我不得不说Windows下Dos命令极其难用且拉跨&#x1f…

灵活易用的树莓派相机和计算机,降低了3D冰川建模的成本!

利兹大学的研究人员正在监测秘鲁的凯尔卡亚冰帽&#xff0c;这是世界上仅有的几个热带冰帽之一。 在欧洲成功进行试验之后&#xff0c;利兹大学地理学院​​​​​​​的研究人员正在安第斯山脉和喜马拉雅山脉使用树莓派计算机和树莓派高品质相机&#xff0c;建立低成本、长期…

C# simd指令之MaskMove

MaskMove指令说明&#xff1a;该方法将掩码向量中的每个非零元素对应的源向量中的元素移动到内存地址指定的位置。如果掩码中的元素为零&#xff0c;则对应的内存位置不会被修改。 MaskMove指令接受三个参数&#xff08;source、mask、address&#xff09;&#xff1a; 源向量…

养生生活视频素材去哪里找?养生系列视频素材网站分享

如何寻找高质量的养生视频素材。无论您是刚入行的新手&#xff0c;还是拥有众多粉丝的资深创作者&#xff0c;优质的养生视频素材都是吸引观众的关键。接下来&#xff0c;我将介绍一些顶级平台&#xff0c;帮助您轻松获取各类养生视频素材。 蛙学网 首先推荐的平台是蛙学网。这…

鸿蒙开发APP应用UX体验标准

基础体验 应用导航 3.1.1.1 系统返回 页面布局 3.1.2.1 布局基础要求 3.1.2.2 挖孔区适配 人机交互 3.1.3.1 避免与系统手势冲突3.1.3.2 典型手势时长设计3.1.3.3 点击热区 视觉风格 3.1.4.1 色彩对比度3.1.4.2 字体大小 3.1.4.3 图标 3.1.4.3.1 应用图标3.1.4.3.2 界…

个体内比较不同自动化背景增强(BPE)评估方法在乳腺MRI中的效果:| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统

Title 题目 Intraindividual Comparison of Different Methods for Automated BPE Assessment at Breast MRI: 个体内比较不同自动化背景增强&#xff08;BPE&#xff09;评估方法在乳腺MRI中的效果&#xff1a; Background 背景 The level of background parenchymal enh…

flutter 画转盘

import package:flutter/material.dart; import dart:math;const double spacingAngle 45.0; // 每两个文字之间的角度 // 自定义绘制器&#xff0c;ArcTextPainter 用于在圆弧上绘制文字 class ArcTextPainter extends CustomPainter {final double rotationAngle; // 动画旋…

elementplus 二次封装 select 自定义指令上拉加载更多 完美解决 多次接口调用 重新加载数据多次调用数据!!!

效果&#xff1a;&#xff08;名字都是测试数据 随便乱写的 若有冒犯 请联系&#xff09; select 二次封装 网上的这种自定义指令上拉加载更多的实例有很多&#xff0c;但是基本都是有缺陷和问题的。为了记录这个问题 我研究了一天&#xff0c;在今天终于搞定了 呜呜呜。 网上…

TSP-Detection:CMU 提出抛弃交叉注意力的 DETR 变体 | ICCV 2021

DETR基于Transformer将目标检测视为集合预测问题&#xff0c;实现了最先进的性能&#xff0c;但需要超长的训练时间才能收敛。论文研究了DETR优化困难的原因&#xff0c;揭示了收敛缓慢因素主要是匈牙利损失和Transformer交叉注意机制。为了克服这些问题&#xff0c;论文提出了…

微信小程序--26(全局配置-1)

一、全局配置文件 1.标志 app.json 2.配置项 pages 记录当前小程序所有页面的存放路径 window 全局配置小程序窗口配置 tabBar 设置小程序底部的tabBar效果 style 是否启用新版本的组将样式 3.window 导航栏区域 navigationBar …

11 Linux 设备驱动

11 Linux 设备驱动 1、Linux软件特点1.1 用户空间1.2 内核空间 2、Linux程序2.1 应用程序2.2 内核程序2.2.1 编程2.2.2 编译 2.3 内核命令行传参2.3.1 应用程序的命令行传参2.3.2 内核程序命令行传参 2.4 内核程序符号导出2.4.1 应用程序多文件之间的访问调用2.4.1 内核多文件之…

1Panel应用推荐:KubePi开源Kubernetes管理面板

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…

H7-TOOL混合脱机烧录以及1拖4不同的通道烧录不同的程序操作说明(2024-08-07)

【应用场景】 原本TOOL的1拖4是用于同时烧录相同程序给目标板&#xff0c;但有时候一个板子上有多个不同的MCU&#xff0c; 客户希望仅通过一个TOOL就可以完成对板子上多个MCU的烧录&#xff0c;也就是1拖4不同的通道烧录不同的程序&#xff0c;此贴为此制作。 【实验目标】…

序列建模之循环和递归网络 - 循环神经网络篇

序言 在探索序列数据的深层规律时&#xff0c;循环神经网络&#xff08; RNN \text{RNN} RNN&#xff09;以其独特的设计思想成为了序列建模领域的中流砥柱。与传统的神经网络不同&#xff0c; RNN \text{RNN} RNN引入了循环结构&#xff0c;使得网络能够处理任意长度的序列数…

winform 大头针实现方法——把窗口钉在最上层

平时我们再使用成熟的软件的时候&#xff0c;会发现有个大头针的功能挺不错的。就是点一下大头针&#xff0c;窗口就会钉住&#xff0c;一直保持在最上面一层&#xff0c;这样可以一边设置参数&#xff0c;一边观察这个窗口里面的变化&#xff0c;比较方便。下面我就来简单实现…

移动APP测试有哪些注意事项?专业APP测试报告如何获取?

移动APP在其生命周期中有不同的阶段&#xff0c;从开始到投入目标市场再到被淘汰。移动APP的成功有多种因素&#xff0c;例如创建、部署、推广、粘性等。但是&#xff0c;创建出色APP的关键在于它的测试&#xff0c;软件测试负责为客户提供安全有效的产品&#xff0c;因此移动A…