




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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.0Sigma2 := 3.0 /定义两个常量gen_gauss_filter(GaussFilter1,Sigma1,Sigma1,0.0,none,rft,Width,Height)gen_gauss_filter(GaussFilter2,Sigma2,Sigma2,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 := 11For 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) / 运算后输出的结果 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 = g = 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() endifendfor算法讲解:在实际的表面缺陷检测系统中,针对的检测表面很多是具有一定纹理的比如:布匹、皮革、塑料等,针对这一类表面的检测就不能单纯依靠帧差或者背景差来完成,因为背景的纹理不可能和当前图像的纹理完全相同。因此,本例程的算法通过将图像变换到频域进行处理,提取缺陷分量后反变换到时域,获得缺陷的具体位置。高斯滤波器:在本算法中,在一开始就构造了两个高斯滤波器,高斯滤波器是一种线性平滑滤波器,适用于消除高斯噪声。滤波器的实质是对信号进行滤波,滤除不需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030发酵型辣椒酱产品风味物质分析与品质提升方案
- 企业员工劳务合同解除通知范本
- 电力系统故障诊断与维修流程标准
- 2025-2030动力锂电池隔膜工艺改进方向与产能过剩风险预警分析报告
- 2025-2030动力电池负极材料技术路线更替风险预警报告
- 2025-2030动力电池热管理系统能效优化技术路线图
- 制造业产线自动化升级策略
- 2025-2030动力电池梯次利用商业模式创新与标准体系建设专项研究报告
- 银行春季营销活动策划方案
- 财务部门月结账务操作流程手册
- 2025-2030年中国备件制造行业市场现状供需分析及投资评估规划分析研究报告
- 数字化运营与管理 课件 第1章 数字化运营基础
- 产品尾数管理制度
- 2025至2030中国智能功率模块(IPM)行业项目调研及市场前景预测评估报告
- 安全编码规范
- 中医养生保健操课件
- 平台运营中心管理制度
- 彩钢板房安装合同范本
- 竞选卫生委员演讲稿
- 2025-2030年中国课外辅导行业市场现状供需分析及投资评估规划分析研究报告
- 2025年中国钢包烘烤器市场现状分析及前景预测报告
评论
0/150
提交评论