教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> > > Halcon学习笔记之缺陷检测(二)

Halcon学习笔记之缺陷检测(二)

上传者:曲文波
|
上传时间:2017-06-06
|
次下载

Halcon学习笔记之缺陷检测(二)

  Halcon学习笔记之缺陷检测(二)

  例程:detect_indent_fft.hdev

  说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步:

  首先,我们用高斯滤波器构造一个合适的滤波器(将原图通过高斯滤波器滤波);

  然后,将原图和构造的滤波器进行快速傅里叶变换;

  最后,利用形态学算子将缺陷表示在滤波后的图片上(在缺陷上画圈)。

  注:代码中绿色部分为个人理解和注释,其余为例程中原有代码 *Initialization(初始化)

  dev_updata_off() //这一句包含如下三个算子:

  //dev_updata_pc(‘off’) 关闭更新程序计数器//dev_updata_var(‘off’) 关闭更新变量窗口

  //dev_updata_window(‘off’) 关闭更新图像窗口(即通过命令来显示想要在图像窗口显示的图片)

  dev_close_window() //关闭活动的图像窗口

  read_image(Image,’plastics

  /

  plastics_01’) //载入图片//参数说明:为读入图片命名(Image)// 文件名(’plastics/plastics_01’)

  get_image_size(Image,Width,height) //获取图片的长宽;//参数说明:之前读入或生成的图片(Image)// 图片的宽(Width)// 图片的高(Height) dev_open_window(0,0,Width,Height,’Black’,WindowHandle) //打开一个新的图像窗口//参数说明:起始坐标(0,0)// 大小(Width,Height)// 背景颜色(’Black’)// 窗口句柄(WindowHandle)

  set_display_font (WindowHandle,14,’mono’,’ture’,’false’)//设置不依赖操作系统的字体

  //参数说明:窗口句柄(WindowHandle)

  // 字体大小(14)

  // 字体类型(’mono’)

  // 是否黑体(’ture’)

  // 是否倾斜(’false’)

  dev_set_draw(‘Margin’) //定义区域填充模式//参数说明:填充模式(’Margin’或

  者’Fill’)

  dev_set_line_width(3) //设置输出区域轮廓线的线宽//可以修改参数来看最后缺陷区域标示

  的区别

  dev_set_color(’red’) //设置一种或者多种输出颜色

  *

  *Optimize the fft speed for the specific image size(根据指定图像大小进行fft速度最

  优化)

  optimize_rft_speed(Width,Height,’standard’) //对指定大小的图片的fft速度进行

  优化//参数说明:图片大小(Width,Height)// 优化模式(’standard’)

  *

  *Construct a suitable filter by combining two Gaussian filters(结合两个高斯滤波

  器构造一*个合适的滤波器)

  Sigma1 := 10.0

  Sigma2 := 3.0 //定义两个常量

  gen_gauss_filter(GaussFilter1,Sigma1,Sigma1,0.0,’none’,’rft’,Width,Height)

  //在频域生成两个高斯滤波器//参数说明:生成的高斯滤波器(GaussFilter)// 空域

  中高斯在主方向上的标准差(Sigma)// 空域中高斯在正交于主方向的方向上的标准差

  (Sigma)// 滤波器主方向的角度(0.0)// 滤波器的规范(’none’)

  // 直流项在频域的位置(’rft’)// 图片的大小(Width,Height)

  sub_image(GaussFilter1,GaussFilter2,Filter,1,0) //两图片相减(灰度)

  //sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )//g' := (g1

  - g2) * Mult + Add//以上为函数原型以及运算公式

  *

  *Process the images iteratively(对图像进行迭代运算)

  NumImages := 11

  For Index := 1 to NumImages by 1 //for循环从1到NumImages,步长为1

  *

  *Read an image and convert it to gray values

  read_image(Image,’plastics/plastics_’+Index$’02’)

  rgb1_to_gray(Image,Image) //将原图转化为灰度图,第一个参数为原图

  *Perform the convolution in the frequency domain

  rft_generic(Image,ImageFFT,’to_freq’,’none’,’complex’,Width)//对计算一幅

  图片实部进行快速傅里叶变换 //参数说明:输入的图片(Image) // 傅里叶变换

  后输出的图片(ImageFFT) // 变换方向(’to_freq’或’from_freq’) // 变换因子的规范(’none’) // 输出图片的数据类型(’complex’) // 图片的宽(Width)

  convol_fft(ImageFFT,Filter,ImageConvol) //对图片用一个滤波器在频域进行卷积运

  算 //参数说明:输入的图片(ImageFFT) // 频域滤波器(Filter) // gen_gauss_filter(GaussFilter2,Sigma2,Sigma2,0.0,’none’,’rft’,Width,Height)

  运算后输出的结果 rft_generic(ImageConcol,ImageFiltered,’from_freq’,’n’,’

  real’,Width) //对滤波后的图片进行傅里叶反变换

  *

  *Process the filtered image

  gray_range_rect(ImageFiltered,ImageResult,10,10)//用一个矩形掩膜计算像素点的灰

  度范围 //参数说明:输入的图片(ImageFiltered) // 输出的灰度范围图

  (ImageResult) // 矩形掩膜大小(10,10)

  min_max_rect(ImageResult,ImageResult,0,Min,Max,Range)//判断区域内灰度值的最大

  和最小值 //参数说明:待分析图片区域(ImageResult) // 图片(ImageResult)

  // 被去除的直方图两边像素点所

  // 占总像素数的百分比(0)

  // 得到的最小值最大值及灰度值范围(Min,Max,Range)

  threshold(ImageResult,RegionDynThresh,max([5.55,Max*0.8]),255)//利用全局阈

  值对图像进行分割 //参数说明:输入的图片(ImageResult) // 分割后得到的

  区域(RegionDynThresh) // 阈值(max([5.55,Max*0.8]),255)

  // 公式:MinGray = MaxGray

  connection(RegionDynThresh,ConnectedRegions) //计算区域内的连通部分 //参

  数说明:输入的图片(RegionDynThresh) // 得到的连通区域

  (ConnectedRegions)

  select_shape (ConnectedRegions,SelectedRegions,’area’,’and’,4,99999)//根

  据指定的形态特征选择区域

  //参数说明:输入的图片(ConnectedRegions)

  // 满足条件的区域(SelectedRegions)

  // 将要计算的形态特征(’area’)

  // 独立特征间的连接关系(’and’)

  // 特征的最小限制(4)

  // 特征的最大限制(99999)

  union1(SelectedRegions,RegionUnion) //返回包含所有区域的集合 //参数说明:包

  含所有区域的待计算区域的图片(tedRegions) // 所有输入区域合(RegionUnion)

  closeing_circle(RegionUnion,RegionClosing,10)//用一个圆圈来封闭一个区域 //参

  数说明:将要被封闭的区域(RegionUnion) // 被封闭的区域(RegionClosing)

  // 圆圈的半径(10) connection(RegionClosing,ConnectedRegions1)

  select_shape(ConnectedRegions1,SelectedRegions1,’area’,’and’,10,99999)

  area_center(SelectedRegions1,Area,Row,Column) //计算区域的面积以及中心位置

  //参数说明:待计算的区域(SelectedRegions1) // 区域的面积(Area) // 区域中心的行(Row) // 区域中心的列(Column)

  *

  *Display the results

  dev_display(Image) //显示原图 Number := |Area| //将区域面积

  赋给Number用于后面检查是否存在缺陷 if(Number)

  gen_circle_contour_xld(ContCircle,Row,Column,gen_tuple_const(Number,30),gen_

  tuple_const(Number,0), gen_tuple_const(Number,rad(360)),’positive’,1)//构造一

  个与设定的圆弧或圆相一致的边界//参数说明:生成的边界(ContCircle)// 圆弧或圆

  的中心坐标(Row,Cloumn)// 圆弧或圆的半径(gen_tuple_const(Number,30))

  // 圆弧或圆的起始角度(gen_tuple_const(Number,0))// 圆弧或

  圆的结束角度(gen_tuple_const(Number,rad(360)))// 不明白是什么意思// 相邻两点间的距离(1)

  ResultMessage := [‘Not OK’,Number + ‘defect(s) found’]

  Color := [‘red’,’black’]

  dev_display(ContCircle) else

  ResultMessage := ‘OK’

  Color := ‘forest green’

  endif

  disp_message(WindowHandle,ResultMessage,’window’,12,12,Color,’ture’)

  if(Index#NumImages)

  disp_continue_message(WindowHandle,’black’,’ture’)

  stop()

  endif

  endfor

  算法讲解:在实际的表面缺陷检测系统中,针对的检测表面很多是

  具有一定纹理的比如:布匹、皮革、塑料等,针对这一类表面的检测就

  不能单纯依靠帧差或者背景差来完成,因为背景的纹理不可能和当前图

  像的纹理完全相同。因此,本例程的算法通过将图像变换到频域进行处

  理,提取缺陷分量后反变换到时域,获得缺陷的具体位置。

  高斯滤波器:在本算法中,在一开始就构造了两个高斯滤波器,高

  斯滤波器是一种线性平滑滤波器,适用于消除高斯噪声。滤波器的实质

  是对信号进行滤波,滤除不需要的部分,得到想要的部分。一个低通的

  滤波器可以滤除高频信号,对于图像来说,噪声和边缘往往集中在高频

  分量,因此低通能够降噪,但是也能造成图像的模糊。

  本文关键:本文的关键就是使用两个低通滤波器,进行相减后构造

  了一个带阻滤波器来提取缺陷分量。这就需要保证在实际的待检测表面

  中缺陷所处的频率范围要和背景以及噪声有明显的差异,并且带阻的频

  率选择要合适。通过带阻滤波后获得的频率成分对背景中的纹理要有明显的抑制,并且突出缺陷成分,进行傅里叶反变换后重构的图像就是缺陷图像,经过简单的分割就能很容易得到缺陷了。

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注视频

外研版英语三起5年级下册(14版)Module3 Unit2
沪教版牛津小学英语(深圳用) 五年级下册 Unit 12
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,辽宁省
沪教版牛津小学英语(深圳用) 五年级下册 Unit 10
第12章 圆锥曲线_12.7 抛物线的标准方程_第一课时(特等奖)(沪教版高二下册)_T274713
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
沪教版八年级下册数学练习册一次函数复习题B组(P11)
冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣.mp4
冀教版英语四年级下册第二课
北师大版数学 四年级下册 第三单元 第二节 小数点搬家
冀教版小学数学二年级下册第二单元《有余数除法的整理与复习》
七年级下册外研版英语M8U2reading
沪教版牛津小学英语(深圳用) 四年级下册 Unit 8
第4章 幂函数、指数函数和对数函数(下)_六 指数方程和对数方程_4.7 简单的指数方程_第一课时(沪教版高一下册)_T1566237
冀教版英语三年级下册第二课
第五单元 民族艺术的瑰宝_16. 形形色色的民族乐器_第一课时(岭南版六年级上册)_T1406126
沪教版八年级下册数学练习册21.4(1)无理方程P18
冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣
苏科版数学 八年级下册 第八章第二节 可能性的大小
七年级英语下册 上海牛津版 Unit5
冀教版小学数学二年级下册第二单元《有余数除法的简单应用》
沪教版牛津小学英语(深圳用) 四年级下册 Unit 4
七年级英语下册 上海牛津版 Unit9
每天日常投篮练习第一天森哥打卡上脚 Nike PG 2 如何调整运球跳投手感?
冀教版小学数学二年级下册第二单元《余数和除数的关系》
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,广东省
外研版英语三起6年级下册(14版)Module3 Unit2
化学九年级下册全册同步 人教版 第22集 酸和碱的中和反应(一)
冀教版小学数学二年级下册第二单元《租船问题》