码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Halcon实用:焊点检出设计思路


    一、提要

    本文是Blob示例之一,利用灰度阈值进行的分割的方法,进行焊点检测的算法思路。

    二、问题分析

    电路板的图片如下:焊点是上面黑色圆形区域。

     问题分析:

    1)包含焊点的区域确定

    焊点为暗色目标区域\Omega,而焊点的分布区域在较亮区域W,\Omega \subset M,因此,需要将大集合M优先提出。

    1. *灰度处理 二值化
    2. threshold (Bond, Bright, 100, 255)
    3. *形态学处理 一般用于定位,形状转换,rectangle2带方向的矩形
    4. shape_trans (Bright, Die, 'rectangle2')

    2) 通过浅区提取出背景M

    3)通过 shape_trans 将浅色区域的矩形取出。

    注意:以上将包含前景的区域提出来,缩小了搜索范围;以后操作在更小的区域上进行。通过reduce_domain将区域中的图像取出,准备进行第二次处理。

    reduce_domain (Bond, Die, DieGrey)

    4)在区域中暗区提取出来

    threshold (DieGrey, Wires, 0, 50)

    5)将焊点面积计算出,并获得区域

    *用给定的形状特征填充区域:面积为1~100的区域

    fill_up_shape (Wires, WiresFilled, 'area', 1, 100)

    6)将半径大于15.5圆形,通过开运算提取出

    opening_circle (WiresFilled, Balls, 15.5)

    7)将区域分离开来

    connection (Balls, SingleBalls)

    8)将圆度0.85以上的区域保留下来

    1. select_shape (SingleBalls, IntermediateBalls, 'circularity', 'and', 0.85, 1.0)
    2. sort_region (IntermediateBalls, FinalBalls, 'first_point', 'true', 'column')

    9)将最小区域排序

    1. smallest_circle (FinalBalls, Row, Column, Radius)
    2. NumBalls := |Radius|
    3. Diameter := 2*Radius
    4. meanDiameter := sum(Diameter)/NumBalls
    5. mimDiameter := min(Diameter)
    6. dev_display (Bond)
    7. disp_circle (WindowID, Row, Column, Radius)
    8. dev_set_color ('white')
    9. for i := 1 to NumBalls by 1
    10. if (fmod(i,2)=1)
    11. disp_message (WindowID, 'D: '+Diameter[i-1], 'image', Row[i-1]-2.7*Radius[i-1], max([Column[i-1]-60,0]), 'white', 'false')
    12. else
    13. disp_message (WindowID, 'D: '+Diameter[i-1], 'image', Row[i-1]+1.2*Radius[i-1], max([Column[i-1]-60,0]), 'white', 'false')
    14. endif
    15. endfor

    10)结果输出:

     

  • 相关阅读:
    【蓝桥杯冲击国赛计划第4天】栈
    基于JavaSwing开发简单的学生信息管理系统(增删改查SQLServer数据库)+报告
    -bash: ~/anaconda3/bin/python:Invalid argument 问题解决
    alertmanager集群莫名发送resolve消息的问题探究
    如何满足计算机化系统验证(CSV):制药企业的指南
    HTML5+CSS3+JS小实例:科技感满满的鼠标移动推开粒子特效
    Linux 使用ss命令停止指定端口进程
    Golang的测试、基准测试和持续集成
    基于SSM的新闻网站浏览管理实现与设计
    《微信小程序》初识微信小程序
  • 原文地址:https://blog.csdn.net/gongdiwudu/article/details/114283515
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号