Halcon 学习之焊点提取
虽然不是第一天学Halcon,但也大差不差,准备是想用一些案例来学Halcon。
首先就是焊接站视觉引导机械臂时的案例,无论做什么样的工程,或难或易都需要能够有一个整体到局部的思想,就是处理图像时要做到慢慢逼近目标效果,而不是为了达到某种效果,只在整体变动。如图,我们需要的时提取出图中的6个焊点,大致思路为:
* Image Acquisition 01: Code generated by Image Acquisition 01
ImageFiles := []
ImageFiles[0] := 'D:/topdesk/新建文件夹 (2)/Image1.jpg'
ImageFiles[1] := 'D:/topdesk/新建文件夹 (2)/Image2.jpg'
ImageFiles[2] := 'D:/topdesk/新建文件夹 (2)/Image3.jpg'
ImageFiles[3] := 'D:/topdesk/新建文件夹 (2)/Image4.jpg'
ImageFiles[4] := 'D:/topdesk/新建文件夹 (2)/Image5.jpg'
for Index := 0 to |ImageFiles| - 1 by 1*关闭窗口dev_close_window ()*读取图片read_image (Image, ImageFiles[Index])* Image Acquisition 01: Do something*得到图像大小get_image_size (Image, Width, Height)*打开一个窗口dev_open_window (0, 0, Width/4, Height/4, 'black', WindowHandle)*相机参数CameraParameters := ['area_scan_division',0.0292901,-427.05,8.2957e-006,8.3e-006,1233.21,1034.14,2590,1942]CameraPose := [0.000805324,-0.000892219,0.0491989,359.334,359.428,90.12,0]**畸变矫正change_radial_distortion_cam_par ('adaptive', CameraParameters, 0, CamParamOut)gen_radial_distortion_map (Map, CameraParameters, CamParamOut, 'bilinear')map_image (Image, Map, ImageMapped)dev_clear_window ()dev_display(ImageMapped)**图像处理read_shape_model ('D:/topdesk/焊接xml/img_model1.shm', ModelID)*在图像中找对应模板find_scaled_shape_model (ImageMapped, ModelID, rad(-180), rad(180), 0.5, 1.2, 0.3, 1, 0.5, 'none', 4, 0.9, Row, Column, Angle, Scale, Score)gen_circle (ROI_0, Row-201.918, Column-811.291, 54.7195)gen_circle (TMP_Region,Row-206.834, Column-512.782, 46.6049)union2 (ROI_0, TMP_Region, ROI_0)gen_circle (TMP_Region, Row-211.751, Column-62.09, 49.5117)union2 (ROI_0, TMP_Region, ROI_0)gen_circle (TMP_Region, Row-216.667, Column+221.78, 52.2062)union2 (ROI_0, TMP_Region, ROI_0)gen_circle (TMP_Region, Row-216.667, Column+675.4, 50.0603)union2 (ROI_0, TMP_Region, ROI_0)gen_circle (TMP_Region, Row-226.5, Column+976.83, 50.8263)union2 (ROI_0, TMP_Region, ROI_0)*提取焊点,单独进行图像处理reduce_domain (ImageMapped, ROI_0, ImageReduced)threshold (ImageReduced, Regions, 149, 255)fill_up (Regions, RegionFillUp)connection (RegionFillUp, ConnectedRegions)opening_circle (ConnectedRegions, RegionOpening, 5.5)*筛选出合适的点作为焊点shape_trans (RegionOpening, RegionTrans, 'outer_circle')select_shape (RegionTrans, SelectedRegions, 'area', 'and', 150, 99999)*计焊点的个数,该产品最多只能有6个焊点count_obj (SelectedRegions, Number)*得到每个焊点的中心位置area_center (SelectedRegions, Area, Row1, Column1)dev_clear_window ()dev_display (ImageMapped)*在图中标出各个焊点的位置if (Number=6)for i := 0 to Number-1 by 1gen_cross_contour_xld (Cross, Row1[i], Column1[i], 61, Angle)stop ()endforendifstop ()
endfor
输出的结果为:
图中为畸变处理后图像,则在未畸变处理图像中显示各个焊点如下:
不难看出中间点位相对准确,俩边点位关于中间便宜程度相同,而畸变处理后的点位更接近于实际点位,所以此相机在工程中,不进行畸变处理,会使焊接时的点位中间部分相对准确,俩边镜像外偏,不经行畸变处理的工程中,也可以通过在像素坐标转换成实际世界坐标时,给每个点加相应的补偿来避免出现焊接偏离焊点的情况。
Halcon 学习之焊点提取相关推荐
- halcon第二讲:焊点提取
本文要完成的任务是将下图中焊点提取出来,对应于halcon例程Blob分析中的ball.hdev. dev_open_window (0, 0, 512, 512, 'black', WindowHa ...
- Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例
Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例 一.基本概念 基本流程为: 获取图像 对图像进行灰度值标定 (针对相机获取的图像灰度和输入能量之间的非线性关系, ...
- HALCON学习之旅(七)
HALCON学习之旅(七) 文章目录 HALCON学习之旅(七) 1.MFC与Halcon混合编程 2.C#与Halcon混合编程 3.Halcon测量助手使用 4.Halcon实例进阶一(拟合区域椭 ...
- HALCON学习之旅(四)
HALCON学习之旅(四) 文章目录 HALCON学习之旅(四) 1.如何对区域进行反选,补集,交集,合并操作 2.如何对区域进行填充操作 3.如何根据区域特征过滤区域 4.如何画各种交互ROI图形 ...
- Halcon学习笔记:3D_coordinates(3D标定)
Halcon学习笔记:3D_coordinates(3D标定) 欢迎有兴趣的朋友一起学习,代码理解注释有问题的可以告诉我,一起讨论,共同进步. *初始化程序,dev_close_window() *关 ...
- 一、HALCON学习笔记(容器液位缺陷检测)
一.HALCON学习笔记(容器液位缺陷检测) * In this example a fill level check for the * pharmaceutical industry is dem ...
- Halcon学习笔记(五)几何定位+仿射+车牌识别
定位 Blob分析 模板匹配 仿射 使用单位矩阵求仿射矩阵 示例:affine_trans_region.hdev 单位矩阵 hom_mat2d_identity (HomMat2DIdentity) ...
- halcon例程讲解_跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量
跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量 This example program demonstrates the basic usage of a measure object. ...
- 机器视觉-halcon学习笔记1
德国的软件,傻瓜式安装,每月更新的licence:开发环境就配置好了. ps:软件可以直接在 halcon学习网上下载,18的版本就行. 这玩意有自带的脚本语言在halcon的开发环境IDE下写,写好 ...
最新文章
- java中关于DecimalFormat四舍五入的用法
- Tungsten Fabric SDN — 零宕机(ZIU)自动化运维
- JavaEE Web开发之Servlet篇
- oracle 外部表装载,Oracle 原理:数据装载 ,SQLldr ,外部表
- github使用_一文轻松学会GitHub的使用
- IE 中释放javascript对象
- 南京大学计算机学院宋教授,宋曰钦教授
- 浏览器输入url后发生了什么?
- linux-shell面试题 之二
- selenium截取验证码图片
- 信息学奥赛一本通 1381:城市路(Dijkstra)
- 不懂得如何优化CNN图像分类模型?这有一份综合设计指南请供查阅
- 6425C-Lab8 使用组策略管理安全性(2)
- 分布式文件系统FastDFS动态扩容
- Abaqus取消汉化(汉译英,英译汉)
- CAN波特率与负载率
- 9个经典营销创业案例,彻底颠覆你的营销思维
- Java多线程——ConcurrentMap、ConcurrentHashMap
- MySQL查询优化实例
- 【Python】excel格式转换操作 -操作Excel、Word、CSV(4)(保姆级图文注释+测试代码+api例程)