这个例子展示了如何在模糊图像中检测mura缺陷


总代码:

*频域+差分+空间域
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*根据要提取的线条的最大宽度和对比度,计算线条的Sigma、Low和High参数。
calculate_lines_gauss_parameters (17, [25,3], Sigma, Low, High)
for f := 1 to 3 by 1*1采集图像read_image (Image, Path + f$'.2i')*转换为3通道图像decompose3 (Image, R, G, B)*2预处理之频域变换(建立背景+高斯滤波)* correct side illumination*正确的侧面照明*快速傅里叶变换rft_generic (B, ImageFFT, 'to_freq', 'none', 'complex', Width)*生成一个高斯滤波器gen_gauss_filter (ImageGauss, 100, 100, 0, 'n', 'rft', Width, Height)*在频域中用滤波器卷积图像。convol_fft (ImageFFT, ImageGauss, ImageConvol)*傅里叶逆变换rft_generic (ImageConvol, ImageFFT1, 'from_freq', 'none', 'byte', Width)*差分在空间域--lines_gausssub_image (B, ImageFFT1, ImageSub, 2, 100)* perform the actual inspection*按给定因子缩放图像。zoom_image_factor (ImageSub, ImageZoomed, ScaleFactor, ScaleFactor, 'constant')* avoid border effects when using lines_gauss()*使用时lines_gauss()避免边界效果*获取图像的区域。get_domain (ImageZoomed, Domain)*腐蚀erosion_rectangle1 (Domain, RegionErosion, 7, 7)*抠图reduce_domain (ImageZoomed, RegionErosion, ImageReduced)*检测线条及其宽度。lines_gauss (ImageReduced, Lines, Sigma, Low, High, 'dark', 'true', 'gaussian', 'true')*进行仿射变换hom_mat2d_identity (HomMat2DIdentity)hom_mat2d_scale_local (HomMat2DIdentity, 1 / ScaleFactor, 1 / ScaleFactor, HomMat2DScale)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

逐段分析:

*频域+差分+空间域
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*根据要提取的线条的最大宽度和对比度,计算线条的Sigma、Low和High参数。
calculate_lines_gauss_parameters (17, [25,3], Sigma, Low, High)
for f := 1 to 3 by 1*1采集图像read_image (Image, Path + f$'.2i')

    *转换为3通道图像decompose3 (Image, R, G, B)

    *快速傅里叶变换rft_generic (B, ImageFFT, 'to_freq', 'none', 'complex', Width)

    *生成一个高斯滤波器gen_gauss_filter (ImageGauss, 100, 100, 0, 'n', 'rft', Width, Height)*在频域中用滤波器卷积图像。convol_fft (ImageFFT, ImageGauss, ImageConvol)*傅里叶逆变换rft_generic (ImageConvol, ImageFFT1, 'from_freq', 'none', 'byte', Width)

    *差分在空间域--lines_gausssub_image (B, ImageFFT1, ImageSub, 2, 100)

    *按给定因子缩放图像。zoom_image_factor (ImageSub, ImageZoomed, ScaleFactor, ScaleFactor, 'constant')*使用时lines_gauss()避免边界效果*获取图像的区域。get_domain (ImageZoomed, Domain)*腐蚀erosion_rectangle1 (Domain, RegionErosion, 7, 7)

    *抠图reduce_domain (ImageZoomed, RegionErosion, ImageReduced)

    *检测线条及其宽度。lines_gauss (ImageReduced, Lines, Sigma, Low, High, 'dark', 'true', 'gaussian', 'true')

*进行仿射变换hom_mat2d_identity (HomMat2DIdentity)hom_mat2d_scale_local (HomMat2DIdentity, 1 / ScaleFactor, 1 / ScaleFactor, HomMat2DScale)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


主要算子:

lines_gauss(Image : Lines : Sigma, Low, High, LightDark, ExtractWidth, LineModel, CompleteJunctions : 

功能:检测线条及其宽度

Image:输入图像

Lines:提取出的亚像素精度线条

Sigma:应用的高斯平滑的系数

Low:后滞阈值分割的低值

High:后滞阈值分割的高值

LightDark:提取图像中的亮色或者暗色线条

ExtractWidth:是否提取线条的宽度

LineModel:用于校正线条位置和宽度的线条模型

CompleteJunctions:是否添加能够提取的接合点

基于Halcon学习的缺陷检测【一】detect_mura_blur.hdev相关推荐

  1. 基于Halcon学习的缺陷检测【四】光伏电池片的指纹以及划痕检测【第一种方法】

    此例子主要是为了把光伏电池片的指纹以及划痕标注出来.  总代码: *读取图片 read_image (Image, 'E:/研究生学习/电池片练习/手指印/截图.png') *清除窗口 dev_cle ...

  2. 基于Halcon学习的缺陷检测【五】光伏电池片的指纹以及划痕检测【第二种方法】

     此例子主要是为了把光伏电池片的指纹以及划痕标注出来. 总代码:  *读取图片 read_image (Image, 'E:/研究生学习/电池片练习/手指印/截图.png')*清除窗口 dev_cle ...

  3. 基于halcon的木板缺陷检测算法代码-基于halcon的区域增长、大津分割算法、直方图均衡化

    关键词:Halcon:图像处理:视觉检测:木板缺陷检测:特征提取 对于木条.木板等木制品表观缺陷检测,是机器视觉检测在工业中的一个主要应用,而在这其中节子的提取和检测又是一项重要的品控检测指标,本文以 ...

  4. 基于深度学习的表面缺陷检测方法综述-论文阅读笔记

    //2022.3.2日阅读笔记 原文链接:基于深度学习的表面缺陷检测方法综述 (aas.net.cn) 个人对本篇综述内容的大致概括 论文首先介绍了表面缺陷检测中不同场景下的成像方案,主要根据表面颜色 ...

  5. 论文《基于深度学习的表面缺陷检测方法综述》学习笔记

    <基于深度学习的表面缺陷检测方法综述>学习笔记 前段时间完成了<基于图像的零部件缺陷识别系统设计>毕业课程设计,过程中收获了很多,老师也分享了很多论文,在此记录一下学习的收获. ...

  6. AI-无损检测方向速读:基于深度学习的表面缺陷检测方法综述

    1 表面缺陷检测的概念 表面缺陷检测是机器视觉领域中非常重要的一项研究内容, 也称为 AOI (Automated optical inspection) 或 ASI (Automated surfa ...

  7. 基于AI深度学习的缺陷检测系统

    1. 基于AI深度学习的工业缺陷检测现状 在工业生产中,由于生产和运输环境中的不可控因素,很容易产生划痕.压伤.擦挂等缺陷.而其中的缺陷大部分都极其微小,甚至是肉眼难以识别,这些缺陷所造成的坏品率极大 ...

  8. 基于机器视觉的图像处理缺陷检测方法论文学习

    基于机器视觉的图像处理缺陷检测方法论文学习 Machine Vision based Defect Detection Approach using Image Processing Abstract ...

  9. 使用深度学习 进行缺陷检测,GAN用于表面缺陷检测

    使用深度学习 进行缺陷检测 链接: 千顺智能. 数据库– GRIMA database http://dmery.ing.puc.cl/index.php/material/gdxray/ steel ...

最新文章

  1. Reactjs-JQuery-Omi-Extjs-Angularjs对比
  2. VUE 项目作为服务启动
  3. 毕业的那天,程序员师兄竟然让我去做这一行
  4. 数据包格式_RAW与JPEG格式怎么选??
  5. 有关正则表达式的一些用法总结
  6. web安全day22:linux系统最基本知识最常用操作和命令
  7. 计算机四级少选给分吗,计算机四级:考高分的有效途径(转载)
  8. hdu5294Tricks Device【最短路+网络流】
  9. php 批量生成一维码,thinkphp5 + barcode 生成条形码
  10. 常用计算机技能大全,八个超实用的电脑技能( 快收藏!)
  11. 移动云迁移工具:Hyper-V虚拟化迁移到移动云
  12. git 工作区、暂存区、版本库(本地)、远程版本库区别
  13. View的测量规则以及三大方法流程
  14. 谷歌地球out了,谷歌火星来了!
  15. 高德地图实现仿qq,微信发送位置功能实现逻辑
  16. redux与flux
  17. 解决报错dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
  18. 武汉音乐学院声乐专业考研上岸经验分享
  19. ASEMI代理AD8061ARTZ-REEL7原装ADI车规级AD8061ARTZ-REEL7
  20. 台式计算机BIOS怎么查,怎么查看bios版本|查询电脑主板bios版本的方法

热门文章

  1. ICCV2021 Challenge | 多视角行人追踪
  2. 【Markdown】2022 Typora+PicGo+gitee配置(附资源)
  3. 北京,I'm coming
  4. 为什么google apk 的adj为100
  5. Python 爬虫复习之爬取笔趣阁小说网站(不用正则)
  6. 微软说话人识别工具箱(MSR Identity Toolbox)应用与实践教程
  7. reduce的一些用法
  8. Loopback地址作用
  9. 阿里云IoT办公园区解决方案 附下载
  10. SpringBoot整合Flink(施耐德PLC物联网信息采集)