圆环内外圆毛刺(凸起)缺口(凹陷)检测halcon

文章目录

  • 处理要求
  • 处理方法1
    • 方法一思路
    • 方法一halcon源码
    • 处理效果
  • 处理方法2
    • 方法二思路
    • 方法二halcon源码
    • 处理效果

  • 博主写作不容易,孩子需要您鼓励
  • 万水千山总是情 , 先点个赞行不行

处理要求

椭圆/圆环(产品易变形,为椭圆)内外圆毛刺(凸起)缺口(凹陷)检测。
在这里插入图片描述
在这里插入图片描述

处理方法1

方法一思路

1、这是一个圆环产品检测,我们可以通过产品区域与标准圆环进行比较得出不良区域。
2、为了避免误检、误判,我们可以通过区域筛选阈值偏移的方法滤除干扰区域,可以将标准圆环放大消除一些圆度导致干扰。
3、根据不同用户的精度要求,可以通过调节缺陷面积进行筛选。
4、方法1的代码量有点多,但是更贴近工业现场使用。

方法一halcon源码

dev_close_window ()
read_image (Image, 'C:/Users/22967/Desktop/圆环缺陷检测/处理1.jpg')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)*********************方法一**************************
*****变量定义
* 卡尺测量参数
CenterRow:=0
CenterColumn:=0
CenterRadius:=0
* 灰度分割阈值偏移
ThresholdOffest:=80
* 缺陷区域面积阈值
NGArea:=50
*圆环内外偏移阈值
RadiusOffest:=5
* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('C:/Users/22967/Desktop/圆环缺陷检测', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])rgb1_to_gray (Image, GrayImage)*****圆环灰度筛选binary_threshold (GrayImage, Region, 'max_separability', 'dark', UsedThreshold)threshold (GrayImage, Region1, 0, UsedThreshold+ThresholdOffest)*分割连通域connection (Region1, ConnectedRegions)*选取圆环区域select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)*滤除圆环边缘毛刺opening_circle (SelectedRegions, RegionOpening, 1.5)*****求圆环内外圆*求圆环外圆smallest_circle (RegionOpening, Row, Column, Radius)CenterRow[0]:=RowCenterColumn[0]:=ColumnCenterRadius[0]:=Radius*求圆环内圆fill_up (RegionOpening, RegionFillUp)difference (RegionFillUp, RegionOpening, RegionDifference)connection (RegionDifference, ConnectedRegions2)select_shape_std (ConnectedRegions2, SelectedRegions1, 'max_area', 70)smallest_circle (SelectedRegions1, Row1, Column1, Radius1)CenterRow[1]:=Row1CenterColumn[1]:=Column1CenterRadius[1]:=Radius1*****对内外圆进行卡尺测量*创建测量句柄create_metrology_model (MetrologyHandle)*设置卡尺测量参数add_metrology_object_circle_measure (MetrologyHandle, CenterRow, CenterColumn, CenterRadius, CenterRadius[0]/10, CenterRadius[0]/60, 1, 4, ['measure_distance','min_score'], [CenterRadius[0]/30,0.2], Indexnumb)*进行测量apply_metrology_model (Image, MetrologyHandle)*得到测量结果get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5)get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row1, Column1)*****求出标准圆环,进行缺陷检测*突出部分gen_circle (Circle, Parameter[0], Parameter[1], Parameter[2]+RadiusOffest)gen_circle (Circle1, Parameter[3], Parameter[4], Parameter[5]-RadiusOffest)difference (Circle, Circle1, RegionDifference1)difference (SelectedRegions, RegionDifference1, RegionDifference2)*内凹部分gen_circle (Circle2, Parameter[0], Parameter[1], Parameter[2]-RadiusOffest)gen_circle (Circle3,Parameter[3], Parameter[4], Parameter[5]+RadiusOffest)difference (Circle2, Circle3, RegionDifference4)difference (RegionDifference4, SelectedRegions, RegionDifference3)*滤除噪点opening_circle (RegionDifference2, RegionOpening1, 1.5)opening_circle (RegionDifference3, RegionOpening2, 1.5)*合并缺陷区域union2 (RegionOpening1, RegionOpening2, RegionUnion)closing_circle (RegionUnion, RegionClosing, 3.5)connection (RegionClosing, ConnectedRegions1)*结果判断area_center (ConnectedRegions1, Area, Row2, Column2)count_obj (ConnectedRegions1, Number)gen_empty_obj (EmptyObject)for Index1 := 1 to Number by 1if  (Area[Index1-1] > NGArea)select_obj (ConnectedRegions1, ObjectSelected, Index1)smallest_circle (ObjectSelected, Row3, Column3, Radius2)gen_circle (Circle4, Row3, Column3, Radius2)concat_obj (EmptyObject, Circle4, EmptyObject)endifendfordev_set_draw ('margin')dev_set_line_width (3)dev_display (Image)dev_display (EmptyObject)
*     stop()
endfor
clear_metrology_model (MetrologyHandle)

处理效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

处理方法2

方法二思路

1、利用形态学方法进行缺陷检测。
2、缺点就是对圆度不敏感。

方法二halcon源码

dev_close_window ()
read_image (Image, 'C:/Users/22967/Desktop/圆环缺陷检测/处理1.jpg')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
*********************方法二**************************
* 灰度分割阈值偏移
ThresholdOffest:=80
*外圆缺陷查找阈值
OutCircleTh:=200.5
*内圆缺陷查找阈值
InCircleTh:=100.5
*缺陷区域面积阈值
NGArea:=50
*噪点过滤阈值
DelNoise:=1.5* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('C:/Users/22967/Desktop/圆环缺陷检测', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1*读入图片read_image (Image, ImageFiles[Index])rgb1_to_gray (Image, GrayImage)*二值化选取垫片区域binary_threshold (GrayImage, Region, 'max_separability', 'dark', UsedThreshold)threshold (GrayImage, Region1, 0, UsedThreshold+ThresholdOffest)connection (Region1, ConnectedRegions)select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)*外圆缺陷查找fill_up (SelectedRegions, RegionFillUp1)opening_circle (RegionFillUp1, RegionOpening, OutCircleTh)difference (RegionFillUp1, RegionOpening, RegionDifference5)*内圆缺陷查找difference (RegionFillUp1, SelectedRegions, RegionDifference6)connection (RegionDifference6, ConnectedRegions3)select_shape_std (ConnectedRegions3, SelectedRegions2, 'max_area', 70)opening_circle (SelectedRegions2, RegionOpening3, InCircleTh)difference (SelectedRegions2, RegionOpening3, RegionDifference7)*合并缺陷区域union2 (RegionDifference5, RegionDifference7, RegionUnion1)opening_circle (RegionUnion1, RegionOpening4, DelNoise)connection (RegionOpening4, ConnectedRegions4)*结果判断area_center (ConnectedRegions4, Area1, Row4, Column4)gen_empty_obj (EmptyObject1)for Index1 := 1 to |Area1| by 1if  (Area1[Index1-1] > NGArea)select_obj (ConnectedRegions4, ObjectSelected, Index1)smallest_circle (ObjectSelected, Row3, Column3, Radius2)gen_circle (Circle4, Row3, Column3, Radius2)concat_obj (EmptyObject1, Circle4, EmptyObject1)endifendfor  *显示结果dev_set_draw ('margin')dev_set_line_width (3)dev_display (Image)dev_display (EmptyObject1)stop()
endfor

处理效果

在这里插入图片描述
在这里插入图片描述

------------------------------------------------------------------------------------------分割线
------------------------------------------------------------------------------------------
  • 博主简介:
  • 工业自动化上位机软件工程师、机器视觉算法工程师、运动控制算法工程师。目前从业于智能制造自动化行业。 博主邮箱:2296776525@qq.com
  • 帮忙点个赞吧。哈哈。

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

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

相关文章

什么是单播、多播和广播br

什么是单播、多播和广播   “单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在&#…

圆环同心度测量halcon

文章目录处理要求处理源码处理结果博主写作不容易,孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 处理要求 测量圆环同心度 处理源码 read_image (Image, C:/Users/22967/Desktop/图像Barrel 20201024/201024 手机行业 摄像头检测/Barrel 背光/Pic_2020_…

IP组播与组播协议

IP组播与组播协议 2008-4-27来源:不详 作者:佚名 点击:次在Internet上,多媒体业务诸如:流媒体,视频会议和视频点播等,正在成为信息传送的重要组成部分。点对点传输的单播方式不能适应这一类业务传输特性--单点发送多点…

Spring Cloud的应用程序—上下文服务

2019独角兽企业重金招聘Python工程师标准>>> Spring Boot对于如何使用Spring构建应用程序有一个看法:例如它具有常规配置文件的常规位置,以及用于常见管理和监视任务的端点。Spring Cloud建立在此之上,并添加了一些可能系统中所有…

halcon圆环完整度检测

文章目录处理要求程序源码处理结果博主写作不容易,孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 处理要求 查找好的圆环,检测圆环不良 程序源码 read_image (Image, F:/HALCON/圆环完整性检测/6.bmp) rgb1_to_gray (Image, GrayImage) v…

圆环划痕检测halcon

文章目录处理要求处理源码处理效果博主写作不容易,孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 处理要求 查找圆环缺陷 处理源码 read_image (Image, F:/HALCON/圆环划痕处理/10_33221_ba4582f0e88ec79.bmp) rgb3_to_gray (Image, Image, Image, Image…

日志OLAP:在SQL中使用UDF, lambda函数使用案例

场景 日志服务内置了20类SQL函数。面对用户复杂的业务场景,例如使用json来沉淀业务数据,普通的SQL函数可能就无法满足需求,需要一些用户自定义处理逻辑。为了处理json类的业务数据,我们可以采用把json展开成多行的形式进行统计分析…

瓶子个数计数halcon

文章目录处理要求处理方法一源码效果方法二源码效果博主写作不容易,孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 处理要求 查找纸箱内瓶子个数 处理方法一 源码 dev_clear_window () dev_open_window (0, 0, 640*1.5, 512*1.5, black, WindowHandle…

halcon自动对焦算法

1、介绍 图像清晰度是衡量图像质量的一个重要指标,对于相机来说,其一般工作在无参考图像的模式下,所以在拍照时需要进行对焦的控制。对焦不准确,图像就会变得比较模糊不清晰。相机对焦时通过一些清晰度评判指标,控制镜…

HTML学习笔记06-连接

HTML超链接 HTML使用标签<a>来设置文本超链接。 超链接可以是文字&#xff0c;也可以是图片&#xff0c;点击这些内容跳转到新的文档或当前文档的某个部分 代码类似这样&#xff1a; <a href"url">连接文本</a> 实例&#xff1a; <!DOCTYPE HTM…

在Xcode中使用Git进行源码版本控制

在Xcode中使用Git进行源码版本控制 在应用程序开发过程中&#xff0c;很重要的一部分工作就是如何进行源码的版本控制。当代码出现问题时&#xff0c;我们就需要将代码恢复到原先正常的版本。如果是多个人共同开发一个项目&#xff0c;那么代码的控制就会非常复杂。幸运的是&am…

ASP.NET Web API之消息[拦截]处理(转)

出处&#xff1a;http://www.cnblogs.com/Leo_wl/p/3238719.html 标题相当难取&#xff0c;内容也许和您想的不一样&#xff0c;而且网上已经有很多这方面的资料了&#xff0c;我不过是在实践过程中作下记录。废话少说&#xff0c;直接开始。 Exception 当服务端抛出未处理异常…

死磕算法之快速排序

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/80851021 学习更多算法系列请参考文章&#xff1a;死磕算法之汇总篇 快速排序是一个运用了分治法和递归算法的排序方…

Windows操作系统安全加固

本文档旨在指导系统管理人员或安全检查人员进行Windows操作系统的安全合规性检查和配置。 1. 账户管理和认证授权 1.1 账户 默认账户安全 禁用Guest账户。禁用或删除其他无用账户&#xff08;建议先禁用账户三个月&#xff0c;待确认没有问题后删除。&#xff09;操作步骤 打开…

TI DAVINCI开发原理(总共5部分)

2011-06-03 11:14:17| 分类&#xff1a; TI 达芬奇视频处 | 标签&#xff1a; |字号大中小订阅 DAVINCI开发原理之一----ARM端开发环境的建立(DVEVM) 1. 对DAVINCI平台&#xff0c;TI在硬件上给予双核架构强有力的支撑&#xff0c;在DSP端用DSP/BIOS来支持音视频算法的运行…

模拟查找晶元的位置

通过模板匹配找到所有模板位置&#xff0c;并且当单击某个模板时&#xff0c;选中某个模板 read_image (Image, C:/Users/22967/Desktop/晶圆找位置/0.bmp) dev_close_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image)* draw_cir…

初探数位dp

前言&#xff1a;这是蒟蒻第一次写算法系列&#xff0c;请诸位大佬原谅文笔与排版。 一、导入 在刷题的时候&#xff0c;我们有时会见到这样一类问题&#xff1a;在区间$[l,r]$内&#xff0c;共有多少个整数满足某种条件。如果$l$和$r$间的差很小&#xff0c;我们可以考虑暴力枚…

Java演示手机发送短信验证码功能实现

我们这里采用阿里大于的短信API 第一步&#xff1a;登陆阿里大于&#xff0c;下载阿里大于的SDK a、在阿里大于上创建自己的应用 b、点击配置管理中的验证码&#xff0c;先添加签名&#xff0c;再配置短信模板 第二步&#xff1a;解压相关SDK&#xff0c;第一个为jar包&#xf…

ELK日志分析系统(转)

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://467754239.blog.51cto.com/4878013/1700828大纲&#xff1a; 一、简介 二、Logstash 三、Redis 四、Elasticsearch 五、Kinaba 一、简介 …

Glide使用总结

首先&#xff0c;添加依赖 implementation com.github.bumptech.glide:glide:4.5.0 annotationProcessor com.github.bumptech.glide:compiler:4.5.0之后添加访问网络权限 <uses-permission android:name"android.permission.INTERNET" />一、常用的方法 1、加…