Halcon-表面检测-----裂纹检测

2023-11-03

对应示例程序:
detect_mura_defects_blur.hdev

目标:实例实现LCD上有很多污点干扰下,检测LCD的印痕检测。

思路为:对LCD图像进行拆分,提取RGB三个分量。
对B分量进行处理,将其转换为频域内图像,并对其进行高斯卷积。
再将卷积处理后的图像转换回空间域图像。
随后将B分量图像和处理后的B分量图像用算子sub_image做差运算。
最后就可以调用lines_gauss提取印痕了。
为避免边框对lines_gauss的影响,对图像进行了一定的截取处理,
用erosion_rectangle1将四周去除了。

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

代码:

* 实现带污点LCD印痕检测
dev_close_window ()
dev_update_off ()
Path := 'lcd/mura_defects_blur_'
read_image (Image, Path + '01')
get_image_size (Image, Width, Height)
dev_open_window_fit_size (0, 0, Width, Height, 640, 480, WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_color ('red')
ScaleFactor := 0.4
calculate_lines_gauss_parameters (17, [25,3], Sigma, Low, High)
for f := 1 to 3 by 1
    read_image (Image, Path + f.2i')
    *将三通道彩色 图像进行拆分为R,G,B
    decompose3 (Image, R, G, B)
    * 计算图像B的快速傅立叶变换,也就是频域变换,ImageFFT为输出结果图像,to_freq表示从空间到频域变换。
    *none表示变换的规范变化因数,complex表示输出图像为complex类型,width为图像宽度。
    rft_generic (B, ImageFFT, 'to_freq', 'none', 'complex', Width)
    *生成高斯滤波器ImageGauss,100为在空间域中高斯 在主方向生成的标准差,
    *另100为空间域 中高斯在正交于主方向 上的标准差,0表示 滤波器主方向 上的角度 ,none为滤波器的规范。
    *rft为直流 项在频域 的位置,最后 两参数为图片你宽高。
    gen_gauss_filter (ImageGauss, 100, 100, 0, 'n', 'rft', Width, Height)
    *在频域图片ImageFFT上,用高斯滤波器ImageGauss做卷积。
    convol_fft (ImageFFT, ImageGauss, ImageConvol)
    *与上一个rft_generic做反向运算,将频域图像转换为空间域的图像。
    rft_generic (ImageConvol, ImageFFT1, 'from_freq', 'none', 'byte', Width)
   *将两幅图像做减法运算,公式为g' := (g1 - g2) * Mult + Add。
   *g1,g2表示B, ImageFFT1的灰度值,g表示计算结果图ImageSub,2为Mult,100为Add。
    sub_image (B, ImageFFT1, ImageSub, 2, 100)
    * 将图像ImageSub进行放大观察,ImageZoomed为放大后的图像,ScaleFactor, ScaleFactor为长宽放大加数,
    *constant为插值方法。
    zoom_image_factor (ImageSub, ImageZoomed, ScaleFactor, ScaleFactor, 'constant')
    * 获取一幅图的区域,目的为避免边框对lines_gauss的影响。
    get_domain (ImageZoomed, Domain)
    *对图像 进行腐蚀运算处理,7,7为矩形 结构宽高。
    erosion_rectangle1 (Domain, RegionErosion, 7, 7)
    *在图像ImageZoomed截取RegionErosion大小图片,存放到变量ImageReduced
    reduce_domain (ImageZoomed, RegionErosion, ImageReduced)
    *检测图像的线条与宽度。ImageReduced, Lines为输入图像与输出的亚像素线条,
    *Sigma为高斯平滑系数, Low为后滞阈值分隔低值, High为前置阈值分割高值,
    *'dark'表示 提取图像 中的暗线条, 'true'表示 是否提取线条 宽度, 'gaussian'提取线条的模式,
    *gaussian在线条不锐利时使用, 'true'表示添加 能够 提取的接合点。
    lines_gauss (ImageReduced, Lines, Sigma, Low, High, 'dark', 'true', 'gaussian', 'true')
    *生成齐次转换矩阵
    hom_mat2d_identity (HomMat2DIdentity)
    *添加缩放的齐次转换矩阵,HomMat2DIdentity为输入矩阵,
    *1 / ScaleFactor, 1 / ScaleFactor为缩放因数, HomMat2DScale为输出的矩阵。
    hom_mat2d_scale_local (HomMat2DIdentity, 1 / ScaleFactor, 1 / ScaleFactor, HomMat2DScale)
    *对亚像素直线Lines进行仿射变换。
    affine_trans_contour_xld (Lines, Defects, HomMat2DScale)
    * 
    dev_display (Image)
    dev_display (Defects)
    if (f < 3)
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
endfor
复制代码

用到的几个算子:
calculate_lines_gauss_parameters
根据要提前线条的最大宽度和对比度,为算子line_gauss计算出参数sigma、low和high。

rft_generic
傅里叶变换 空间域–频率域的转换
gen_gauss_filter
生成高斯滤波器
convol_fft
卷积

lines_gauss
从图像中提取线。参数lightdark设定提取亮线还是暗线。

仿射变换
hom_mat2d_identity
hom_mat2d_scale_local
affine_trans_contour_xld

参考资料:
[1]: https://www.gkbc8.com/thread-13529-1-1.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Halcon-表面检测-----裂纹检测 的相关文章

  • 【毕业设计】机器视觉手势检测和识别系统 - python 深度学习

    文章目录 0 前言 1 实现效果 2 技术原理 2 1 手部检测 2 1 1 基于肤色空间的手势检测方法 2 1 2 基于运动的手势检测方法 2 1 3 基于边缘的手势检测方法 2 1 4 基于模板的手势检测方法 2 1 5 基于机器学习的
  • 使用Python绘制粽子消消乐,素描图(优化版,正常/漫画/写实风格),词云图,字符画图及提取轮廓

    使用Python绘制粽子消消乐 素描图 优化版 正常 漫画 写实风格 词云图 字符画图及提取轮廓 1 效果图 2 源码 2 1 素描图源码 2 2 优化版 制作不同风格的素描图 正常 漫画 写实风格 https blog csdn net
  • 辐射强度、辐亮度、辐照度——一文搞定

    先写定义 上图是从网上看到的并重写的 其中我们最容易混淆的就是辐射强度 辐亮度 辐照度的关系 如果我们没有接触专业领域 那么我们可能接触最多的就是辐射强度 而这种现象是不对的 因为我们一般考虑的均为这光好强呀 照得屋里特别亮 这里的光亮 我
  • CUDA的下载安装

    大家好 下面将进行CUDA的下载安装 下载安装的详细步骤描述如下 1 CUDA下载 https download csdn net download qq 41104871 87462747 2 CUDA安装 1 首先 需要解压缩下载好的C
  • Matlab导入Excel数据快速绘图

    现在使用Matalb绘图越来越多 不会这个绘图技能感觉都要被时代抛弃了 所以 本文主要是介绍怎么用Matlab导入Excel数据快速绘图 目录 一 基本使用 二 细致调节 1 颜色选项 2 形状选项 3 网格线选项 一 基本使用 事先 建议
  • Halcon模板匹配

    Halcon模板匹配 Halcon模板匹配的方法 模板匹配的流程 基于形状的模板匹配的思路 原理 Halcon模板匹配的方法 模板匹配的流程 基于形状的模板匹配的思路 读取图像 转灰度图 dev close window dev open
  • 使用python实现简单全连接神经网络

    最近在学习神经网络的相关知识 特在此做一个笔记 python语言的功能很强大 可以使用很少的代码实现很多功能 因此大家如果想研究深度学习的话 一定要懂得python语言 这篇笔记记录我的第一次使用python编写神经网络代码的过程 其中代码
  • 图像恢复(加噪与去噪)

    人工智能导论实验导航 实验一 斑马问题 https blog csdn net weixin 46291251 article details 122246347 实验二 图像恢复 https blog csdn net weixin 46
  • 基于Matlab实现图像拼接技术(附上完整源码+图像)

    图像拼接是数字图像处理中一个重要的问题 它的目标是将多张图像拼接成一张更大的图像 图像拼接技术在许多领域中都有广泛的应用 如全景图像拼接 医学图像拼接 遥感图像拼接等 本文将介绍一种基于Matlab实现的图像拼接技术 即基于特征匹配的图像拼
  • SIFT和SURF的替换算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋转)

    SIFT和SURF的替代算法 ORB Oriented FAST and Rotated BRIEF 快速定向和旋转 1 效果图 2 源码 参考 1 用于关键点检测和描述的SIFT Scale Invariant Feature Trans
  • 图像处理神器 ImageMagick 命令介绍

    安装完 ImageMagick 打开命令行 输入相应命令即可处理图像 所有命令前面都要加 magick 网上的教程都没说 也可能是我自己环境没配置吧 说明 内的命令表示是可选的 内表示是示例或者代号而已 magick convert sou
  • SeetaFace编译成功(有windows及Android源码)

    声明 由于本人水平有限 所提供的代码 dll so等必然存在很多问题 仅用于学习 不适合工业级使用 请谨慎使用 如果造成损失 责任自负 对齐 这张照片第3个人的特征点检测有点问题 研发人员很快修正了 赞一个 下面是人脸比对 准确率还是可以接
  • 图像的FFT变换

    一 实验设备 计算机 matlab软件 二 实验目的 1 理解并掌握图像的FFT变换的原理 2 学习使用matlab对图像进行FFT变换 三 实验原理 图像fft变换可以将图像空间域变为频率域 进而对频率域图像进行操作 这样会使操作变得简单
  • MEF:COA-NET

    COA NET COLLABORATIVE ATTENTION NETWORK FOR DETAIL REFINEMENT MULTI EXPOSURE IMAGE FUSION COA NET 用于细节细化多曝光图像融合的协作关注网络 近
  • 螺纹检测案例-螺距测量-大径小径检测-螺牙检测

    齿轮检测分析 Gear inspection and analysis 螺纹结构及检测要素 1 大径 宽径 2 小径 窄径 3 中经 4 螺距 间距 5 螺牙高度 深度 VisionBank 软件螺纹检测工具 02 01 螺纹检测分析流程
  • MATLAB算法实战应用案例精讲-【图像处理】缺陷检测(补充篇)

    目录 前言 疵点缺陷识别 1边缘增强 1 1经典算子 1 2坯布疵点边缘检测
  • 人工智能超分辨率重建:揭秘图像的高清奇迹

    导言 人工智能超分辨率重建技术 作为图像处理领域的一项重要创新 旨在通过智能算法提升图像的分辨率 带来更为清晰和细致的视觉体验 本文将深入研究人工智能在超分辨率重建方面的原理 应用以及技术挑战 1 超分辨率重建的基本原理 单图超分辨率 利用
  • open3D点云分割

    将底面和物体分割开 import time import open3d as o3d import numpy as np mesh box o3d geometry TriangleMesh create box width 0 4 he
  • ETC纹理压缩

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 盘点那些年我们一起玩过的网络安全工具

    大家好 我是IT共享者 这篇文章给大家盘点那些年 我们一起玩过的网络安全工具 一 反恶意代码软件 1 Malwarebytes 这是一个检测和删除恶意的软件 包括蠕虫 后门 流氓 拨号器 间谍软件等等 快如闪电的扫描速度 具有隔离功能 并让

随机推荐

  • 用心整理了6个用电脑就能做的兼职,让你在家增加收入

    在当今信息化的时代 通过电脑进行各种网上兼职已经成为了一种普遍的现象 在电脑上兼职工作 不仅可以帮助人们实现财务自由 而且还可以在家中轻松实现 下面就给大家分享6个在家就可实现的赚钱方法 让你利用业余时间挣取更多的收入 1 百度知道合伙人
  • python刷题第九周

    第一题 第6章 7 找出总分最高的学生 15 分 给定N个学生的基本信息 包括学号 由5个数字组成的字符串 姓名 长度小于10的不包含空白字符的非空字符串 和3门课程的成绩 0 100 区间内的整数 要求输出总分最高学生的姓名 学号和总分
  • 为什么C ++在嵌入式系统设计中是C的可行替代品

    你是一名 你知道C是适合该工作的语言 尽管有时维护周期可以重复很长时间 有时你会感到that琐 就像在编码自动机一样 反复在结构上创建基本迭代 这些结构与上周或上个月的结构非常相似 你已经听说过C 作为一种功能强大的语言的销售趋势 但是你也
  • 零基础大厂实习面经

    菜鸡的准备之路 3月开始准备找实习 现在4月一号 应该是能拿到阿里本地生活的Java研发岗offer 这些天来也算是辛苦了 为了后人能够好避坑 写下些许面经 接下来我将从数据结构与算法 语言基础 计算机网络 和操作系统四个主要方向讲起 基础
  • 【pytharm导入python移植环境遇见Invalid Python SDK问题】

    pytharm导入python移植环境遇见Invalid Python SDK问题 Invalid Python SDK 解决方法 Invalid Python SDK 在学习工作中 我们可能会遇到将自己的工作python环境移入到另一个位
  • Android校招复习全书(1)-j2se

    一 九种基本数据类型的大小 以及他们的封装类 关于JAVA基本数据类型 名称 解释 长度 位 默认值 封装类 byte 字节 8 0 Byte shot 短整型 16 0 Short int 整型 32 0 Integer long 长整型
  • uni-app暂时不兼容v-for深度传参的问题【在APP中,v-for内部作用域元素无法深度访问v-for的变量】【这个问题H5支持,但是uni-app不兼容,哎.......】

    uni app之app平台 由于v for中的token和index在 v bind对象动态绑定的时候 访问不到 所以下面这段代码运行会报错 uni app之H5平台 H5对v fortoken和index子组件深度访问支持良好 uni a
  • unity,欧拉角

    介绍 在Unity中 欧拉角 Euler Angles 用于描述物体的旋转状态 它由三个角度组成 通常是俯仰角 Pitch 偏航角 Yaw 和翻滚角 Roll 在Transform组件中 可以通过eulerAngles属性获取或设置物体的欧
  • [Android] AutoCompleteTextView:自动完成输入内容的控件

    AutoCompleteTextView是EditText的直接子类 与普通EditText的最大不同就是 在用户输入的过程中 可以列出可供选择的输入项 方便使用者 AutoCompleteTextView与普通EditText控件使用方法
  • 复制代码到eclipse中出现问题

    1 直接从网页上复制代码到eclipse中时 会连带着将空格也复制进去 导致eclipse一片红 闪瞎脆弱的心 直接将把报错行代码前面的空格删除 错误自动可修复 2 在遇到大括号前后代码出现错误这样的问题时 显示的是Syntax error
  • Oracle Error : ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: 3000, maximum: 4000)

    author skate time 2008 02 25 最近在导数据的时候 提示如下错误 Oracle Error ORA 22835 Buffer too small for CLOB to CHAR or BLOB to RAW co
  • E4和C++ 开发-Unity 过度到 Unreal 4 对比参考详细

    1 两个编辑器的布局如下 1 1 unity 1 2 UE4 2 Editing Assets编辑资源 2 1 Detail面板就是负责编辑工程资源 类似于Unity里面的Inspector 3 两个引擎的部分术语对比 4 Projects
  • miui秒解bl锁_MIUI12解锁bl篇(原谅我的过失,接上篇文章)

    求原谅 真心求原谅 由于我的疏忽 上期教程不完整 对大家造成不便在这里给大家真诚道歉 对不起 请收下我的膝盖 我的上个教程 小米手机MIUI系统降级任意版本通用教程 MIUI12 MIUI9 因为需要接受bl才可以顺利使用miflash刷机
  • objective c 字符串各种处理

    关于字符串的各种操作 总结一下以便以后复习查找 内容简要 1 创建常量字符串 2 创建空字符串 给予赋值 3 在以上方法中 提升速度 initWithString方法 4 用标准c创建字符串 initWithCString方法 5 创建格式
  • 系统架构设计师之系统设计-面向对象设计-设计模式的分类

    系统架构设计师之系统设计 面向对象设计 设计模式的分类
  • unity学习之URP多相机以及多通道渲染

    默认已经创建好一个URP工程 不知道怎么创建可以看这里 摄像机堆叠 摄像机堆叠允许将多个摄像机的结果合成在一起 摄像机堆叠由一个基础 Base 摄像机和任意数量的额外叠加 Overlay 摄像机组成 当摄像机堆叠中的多个摄像机渲染到同一个渲
  • 16进制颜色代码

    16 进制颜色代码 16 进制颜色代码颜色的组成方式 16进制代码 前二位代表R值 中间二位代表G 末二位代表B 即前两位表示红色 中间两位表示绿色 最后两位表示蓝色 以0 1 2 3 4 5 6 7 8 9 A B C D E F共16位
  • 高云FPGA系列教程(2):FPGA点灯工程创建、程序下载和固化

    文章目录 toc 1 工程目录创建 2 新建工程 3 设计输入 4 设计仿真 5 综合 6 管脚分配 7 时钟约束 8 比特流文件生成 9 程序下载 10 程序固化 11 总结 12 工程下载 本文是高云FPGA系列教程的第2篇文章 介绍完
  • 产业大数据应用:洞察区域产业实况,把握区域经济脉搏

    随着新一代信息技术的崛起 我们进入了大数据时代 在这个时代 数据作为基本生产要素不仅改变着我们的日常生活 更是在区域产业经济发展中扮演着重要角色 它赋予了政府 企业和投资者敏锐的洞察力 一 摸清区域经济现状 基于区域产业经济数据的收集及导入
  • Halcon-表面检测-----裂纹检测

    对应示例程序 detect mura defects blur hdev 目标 实例实现LCD上有很多污点干扰下 检测LCD的印痕检测 思路为 对LCD图像进行拆分 提取RGB三个分量 对B分量进行处理 将其转换为频域内图像 并对其进行高斯