Halcon学习笔记之缺陷检测(一)
2024-09-26 06:15:15
说明:这个程序利用局部阈值和形态学处理提取表面划痕
代码中绿色部分为个人理解和注释,其余为例程中原有代码
*surface_scratch.hdev:extraction of surface scratches via local thresholding and morphological post-processing* dev_close_window()
dev_update_window(‘off’)
*****
*step: acquire image //获取图片
*****
read_image(Image,’surface_scratch’) //读入图片名为’surface_scratch’的图片
get_image_size(Image,Width,Height) //获取图像的尺寸:宽、高
//在坐标为(0,0)处打开一个图像窗口。其宽和高分别是Width和Width,窗口的句柄为WindowID
dev_open_window_fit_image(Image,0,0,Width,Width,WindowID)
//设置窗口中显示的字体颜色,大小,加粗,倾斜
set_display_font(WindowID,12,’Courier’,’true’,’false’)
dev_set_draw(‘margin’) //设置区域填充类型:’margin’ or ‘fill’
dev_set_line_width(4) //设置线宽,这个在填充类型为fill时效果不明显 dev_display(Image) //显示图片
disp_continue_message(WindowID,’black’,’true’) //显示继续消息,等待用户按F5继续执行
stop() *****
*step: segment image
*****
*-> using a local threshold
mean_image(Image,ImageMean,7,7) //用7×7的窗口对图像进行均值滤波
dyn_threshold(Image,ImageMean,DarkPixels,5,’dark’) //利用本地阈值进行图像分割 *->extract connected components
connection(DarkPixels,ConnectedRegions) //对区域进行连通运算
dev_set_colored(12) //设置区域显示的颜色数目
dev_display(ConnectedRegions) //显示图像
disp_continue_message(WindowID,’black’,’true’)//显示继续提示,提示继续
stop() *****
*step: process regions
*****
*->select large regions
select_shape(ConnectedRegions,SelsectedRegions,’area’,’and’,10,1000) //区域选择,用面积的形态特征选择面积在10到10000间的区域
dev_display(Image) //显示原图
dev_display(SelectedRegions) //显示选择的区域
disp_continue_message(WindowID,’black’,’true’) //显示继续提示,提示继续
stop() *->visualize fractioned scratch
open_zoom_window(0,round(Width/2),2,303,137,496,3,WindowHandleZoom)
dev_set_color(‘blue’) //设置显示颜色(蓝色),功能与dev_set_colored类似
dev_display(Image) //显示原图
dev_display(SelectedRegions) //显示选中的区域图
disp_continue_message(WindowID,’black’,’true’) //显示继续提示信息
stop() *->merge fractioned scratches via morphology
union1(SelectedRegions,RegionUnion) //合并所有区域
dilation_circle(RegionUnion,RegionDilation,3.5) //用半径3.5 的掩膜进行膨胀
dev_display(Image) //显示原图
dev_display(RegionDilation) //显示膨胀后的区域图
disp_continue_message(WindowID,’black’,’true’)//显示继续提示信息
stop()
skeleton(RegionDialtion,Skeleton) //计算区域的中轴,见例程:surface_scratch.hdev
connection(Skeleton,Errors) //连通操作,以便后面进行区域选择
dev_set_colored(12) //设置颜色
dev_display(Image) //显示原图
dev_display(Errors) //显示所有抓痕
disp_continue_message(WindowID,’black’,’true’) //显示继续提示信息
stop() *->distinguish small and large scratches
close_zoom_window(WindowHandleZoom,Width,Height) //关闭缩放窗口
select_shape(Errors,Scratches,’area’,’and’,50,10000)//选择区域面积在50到10000的作为划痕
select_shape(Errors,Dots,’area’,’and’,1,50) //选择区域面积在1到50 的作为点
dev_display(Image) //显示原图
dev_set_color(‘red’) //设置区域显示颜色为红色
dev_display(Scratches) //显示条状划痕(显示为红色)
dev_set_color(‘blue’) //设置区域显示颜色蓝色
dev_display(Dots) //显示点状划痕(显示为蓝色)
最新文章
- Evolutionary Computing: Assignments
- UTF-8 's format
- tinyXML的用法,用于解析gpx文件
- linux:问题
- Leetcode: String to Integer
- UVa 817 According to Bartjens (暴力,DFS)
- C# - Generic
- poj1274 匈牙利算法 二分图最大匹配
- 深入Java虚拟机读书笔记第二章平台无关性
- Android App 内存泄漏Handler
- mac中使用 sourcetree 的快速配置和git服务器登录
- ubuntu系统界面改变
- ExtJs写本地ArrayStore,ComboBox调用
- .Net高级进阶,教你如何构建企业模型数据拦截层,动态控制字段验证
- 缺省源和 Vim 配置
- vue项目使用阿里巴巴矢量图标库教程
- C语言求矩阵的逆
- git中 .ignore文件的配置 忽略不想上传的文件
- 53题看透java线程
- Improving the GPA(hdu4968)dfs
热门文章
- 【CSS3】---盒模型margin、padding及border
- AjaxPro.2使用小结
- JavaScript之六种排序法
- CSS里的引用@import、link
- MVC5 属性路由
- 20150311—html中iframe(转发)
- 向CodeBlocks的Project中添加calss文件时,出现No such file or directory错误的解决方案
- mysql:The total number of locks exceeds the lock table size
- solr6安装部署
- AJAX项目中的一些总结