halcon瓶身表面缺陷检测-滤波差值法

news2024/11/16 16:32:35

前言

在瓶子,灌装产业中,通常需要瓶子的瓶身进行检测,防止其出现划痕,破洞等情况。但是通常瓶身出现的缺陷都非常小,往往只是一些细小的划痕,这种情况就非常容易被误判为OK情况。
所以采用滤波差值法,可以有效的对瓶身细小的缺陷进行检测。
其核心在于,通过一个大卷积核的滤波程序将缺陷过滤,然后与低滤波的图像进行相减,得以突出缺陷所在位置。为什么不与原图相减?原因在于,低滤波的作用是在尽可能的保存缺陷所在位置的前提下,减少其他图像噪点的影响。所以使用低卷积核滤波时,可以根据实际情况将低卷积核的滤波调大。

1.halcon程序

read_image (Image, 'D:/2024Work/work/4.13瓶子异物检测/异物/10.bmp')
gen_rectangle1 (ROI_0, 152.494, 150.798, 906.861, 710)
reduce_domain (Image, ROI_0, ImageReduced)

binary_threshold (ImageReduced, Region1, 'max_separability', 'dark', UsedThreshold1)
shape_trans (Region1, RegionTrans, 'convex')

threshold (ImageReduced, Regions, 0, 243)
reduce_domain (ImageReduced, Regions, ImageReduced2)
smallest_rectangle2 (Regions, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2-10)
reduce_domain (ImageReduced, Rectangle, ImageReduced1)
*******************************************************************
mean_image (ImageReduced1, ImageMean, 1, 1)
mean_image (ImageReduced1, ImageMean1, 13, 13)
sub_image (ImageMean, ImageMean1, ImageSub, 20, 80)

threshold (ImageSub, Regions, 0, 60)
opening_circle (Regions, RegionOpening, 1)
closing_circle (RegionOpening, RegionClosing, 1)
connection (RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 200, 2000)
dev_display (Image)
dev_display (SelectedRegions)

2.halcon程序解析

2.1定位产品位置

首先需要确定瓶子的所在位置。但是滤波差值法受到边缘的影响较大,所以在确定瓶身位置时,需要尽可能的剔除瓶身上的边缘
在这里插入图片描述
在这里插入图片描述

read_image (Image, 'D:/2024Work/work/4.13瓶子异物检测/异物/10.bmp')
gen_rectangle1 (ROI_0, 152.494, 150.798, 906.861, 710)
reduce_domain (Image, ROI_0, ImageReduced)

binary_threshold (ImageReduced, Region1, 'max_separability', 'dark', UsedThreshold1)
shape_trans (Region1, RegionTrans, 'convex')

threshold (ImageReduced, Regions, 0, 243)
reduce_domain (ImageReduced, Regions, ImageReduced2)
smallest_rectangle2 (Regions, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2-10)
reduce_domain (ImageReduced, Rectangle, ImageReduced1)

2.2滤波求差值

通常情况下滤波求差值可以使用均值,中值,高斯滤波都可以达到类似的效果,但是根据不同产品的不同,实际的差异可能比较大,通常在表面噪点少的情况,可以使用均值滤波
在这里插入图片描述

mean_image (ImageReduced1, ImageMean, 1, 1)
mean_image (ImageReduced1, ImageMean1, 13, 13)
sub_image (ImageMean, ImageMean1, ImageSub, 20, 80)

2.3形态学后处理

在这里插入图片描述

threshold (ImageSub, Regions, 0, 60)
opening_circle (Regions, RegionOpening, 1)
closing_circle (RegionOpening, RegionClosing, 1)
connection (RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 200, 2000)
dev_display (Image)
dev_display (SelectedRegions)

总结

滤波差值法的核心在于如何对滤波器的选择和测试参数。其中,在有大量噪点的缺陷检测项目和有大量边缘的项目中不适合使用。例如皮质表面脏污检测等。滤波差值法受到边缘和噪点的影响非常大,可以在实际使用中多加尝试即可。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stability AI 发布 SD3 API:开启人工智能新篇章

文章目录 1.Stable Diffusion 3 API开放了! 2.Stability AI Document地址3.获取API Key4.API方式调用SD3出图接口地址接口请求规范接口请求响应结果 5.Stable Diffusion 3.0、Stable Image Core、Fooocus 2.3.1、MidJounery效果查看 1.Stable Diffusion 3 API开放了! Stabilit…

js高级 笔记02

目录 01 object提供的一些静态方法 02 词法作用域 03 作用域链 04 arguments的使用 05 开启严格模式 06 高阶函数 07 闭包 01 object提供的一些静态方法 Object.create() 对象继承 Object.assign(对象1,对象2) 对象合并 可以将对象2 里面的可枚举属性和自身的属性合并到…

压缩感知的概述梳理(3)

参考文献 Adaptive embedding: A novel meaningful image encryption scheme based on parallel compressive sensing and slant transform 文献内容 梳理 列表形式 并行压缩感知核心元素与流程 信号 x 长度:N表示:(x \sum_{i1}^{N} a_i\psi_i \su…

软件测试面试:关键问题解析

在软件开发领域,测试是确保软件质量的重要环节。面试是评估软件测试人员技能和经验的关键时刻。在一个软件测试面试中,面试官通常会问一系列问题来评估面试者的知识、技能和解决问题的能力。本文将介绍一些常见的软件测试面试问题,并给出一些…

电脑开不了机?不要慌,三招教你快速解决!

电脑开不了机是我们在日常使用中可能遇到的一个严重问题,它会影响我们的工作和生活。了解如何解决电脑开不了机的问题对于维护电脑正常运行至关重要。本文将介绍三种常见的解决电脑开不了机的方法,帮助您快速恢复电脑的正常使用。 方法1:检查…

刷题日记——进制转换3(机试)

题目——进制转换3 锲而不舍——先给自己立一个纪念碑 思路 根据输入信息,将输入值从m进制转换成10进制将10进制数据转换成n进制数据输出 输入值从m进制转换成10进制 将输入值视作字符串 依次取出字符串字符, 如果是数字: 减去‘0’得到真…

初识 React:安装和初步使用指南

文章目录 前言一、React 是什么?1.组件化开发2.虚拟 DOM3.单向数据流4.生态系统丰富 二、安装1.准备工作2.下载react 三、探索 React 应用总结 前言 在当今的 Web 开发领域,React 已经成为了一个备受推崇的技术。它的组件化、灵活性和高效性使得它成为了…

栅格地图、障碍物地图与膨胀地图(栅格地图)

在ROS中,地图是非常基本的元素,特别对于2D激光SLAM而言,栅格地图可以说是必不可少的元素。机器人在需要前往目标点时,需要在栅格地图中找到一条合适的路径从当前点到达目标点,这部分内容在move_base中有了详细的接口&a…

MySql数据库从0-1学习-第五天事务和索引

事务 事务 是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作 要么同时成功,要么同时失败。 注意事项,默认事务是自动提交的,也就是说,当执行一条DML语句,MySql会立即隐…

“低价竞争”仍在继续,分期免息成商家新武器

近日,在京东618商家生态伙伴大会上,京东推出各项政策,尽全力让所有合作伙伴赢在京东618、赢在京东。京东金融也将在618大促期间,为各位商家带来极具竞争力的金融产品和大促政策。 举例来说,大促期间,“京东…

分类预测 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机数据…

小试牛刀!

1.从双倍数组中还原原数组&#xff08;力扣&#xff0c;vector&#xff09; java式c解法。 class Solution { public:vector<int> findOriginalArray(vector<int>& changed) {int n changed.size();if(n % 2 1) return {};map<int, int> mp;for(int c…

02 - Git 之命令 + 删除 + 版本控制 + 分支 + 标签 + 忽略文件 + 版本号

1 Git相关概念 1.1 以下所谈三个区&#xff0c;文件并不只是简单地在三个区转移&#xff0c;而是以复制副本的方式转移 使用 Git 管理的项目&#xff0c;拥有三个区域&#xff0c;分别是 Working area工作区&#xff08;亦称为 工作树Working Tree&#xff09;、stage area …

【Web】HTML基础

专栏文章索引&#xff1a;Web 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、HTML介绍 1.HTML 定义 2.标签语法 3.HTML 基本骨架 4.标签的关系 5.HTML 注释 二、标签 1.排版标签 1.1 标题标签 1.2 段落标签 1.3 换行标签 1.4 水平线标签 1.5 文本格…

【Spring】之基础概念和使用

&#x1f3c0;&#x1f3c0;&#x1f3c0;来都来了&#xff0c;不妨点个关注&#xff01; &#x1f3a7;&#x1f3a7;&#x1f3a7;博客主页&#xff1a;欢迎各位大佬! 文章目录 1. Spring的概述1.1 什么是容器&#xff1f;1.2 什么是IoC&#xff1f;1.3 什么是DI&#xff1f…

(二十八)Flask之wtforms库【上手使用篇】

目录&#xff1a; 每篇前言&#xff1a;用户登录验证&#xff1a;用户注册验证&#xff1a;使用示例&#xff1a; 抽象解读使用wtforms编写的类&#xff1a;简单谈一嘴&#xff1a;开始抽象&#xff1a; 每篇前言&#xff1a; &#x1f3c6;&#x1f3c6;作者介绍&#xff1a;【…

多任务学习,在共享层,究竟在共享什么?

在多任务学习中&#xff0c;共享层所共享的主要是网络结构和参数。具体来说&#xff0c;当多个任务在共享层进行参数硬共享时&#xff0c;它们使用的是相同的网络结构&#xff08;例如三层全连接神经网络&#xff09;&#xff0c;并且这些网络层的权重&#xff08;weights&…

Java工具类:批量发送邮件(带附件)

​ 不好用请移至评论区揍我 原创代码,请勿转载,谢谢! 一、介绍 用于给用户发送特定的邮件内容,支持附件、批量发送邮箱账号必须要开启 SMTP 服务(具体见下文教程)本文邮箱设置示例以”网易邮箱“为例,其他如qq邮箱或企业邮箱均可,只要在设置中对应开启SMTP及授权码等操…

css中设置元素大小的属性block-size

block-size 是 CSS 中的一个属性&#xff0c;它用于设置元素的块级尺寸&#xff08;即元素的高度&#xff09;。这个属性是 height 和 max-height 的逻辑组合&#xff0c;允许你同时设置元素的最小和最大高度。 这些属性旨在让布局不再依赖于传统的物理方向&#xff08;如上下左…

爬虫 | 基于 Python 实现有道翻译工具

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在利用 Python 语言实现一个简单的有道翻译工具。有道翻译是一款常用的在线翻译服务&#xff0c;能够实现多种语言的互译&#xff0c;提供高质量的翻译结果。 目录 一、项目功能 二、注意事项 三、代码解析 1. 导入…