HALCON学习笔记

2019-2-2:

  硬件选型--->镜头光源相机选型第一讲.avi:

  高斯公式:1/u+1/v=1/f  u:物距  v:像距 f:焦距

  线放大倍率:像高/物高  或者 像距/物距

  镜头需要掌握基本概念:焦距 光圈 光圈数(这个参数越大,分辨率越大) 景深 物体在清晰成像的移动范围(光圈越小 景深越大 ;焦距越小,景深越大;拍摄距离越大景深越大)

   具体选型案例如下:

 

硬件选型--->超人视觉初级班镜头光源选型第二讲.avi

 相机主要参数:曝光 分辨率 增益 帧率 尺寸 镜头接口 输出接口 白平衡

远心镜头分成3钟  物方远心 像方远心 双远心(类似于望远镜)

远心可以矫正畸变  一般用于测量 

网口的相机速度会比USB2.0的快些 

实际选型中还需要注意 镜头的分辨率一定大于相机分辨率  镜头的视野范围 必须大于CCD的视野范围 否则会出现黑边   

 硬件选型--->超人视觉初级班镜头相机光源选型第三讲.avi

 

光源 偏振片(让光先只存在一个方向的振动光线 主要用于防止反光) 滤光片 打光原则 图片均匀 

光源分类:

检测类一般用远心镜头+背光源

条光 背光源 球面光源 点光源 同轴光源(被测物体反光均匀) 组合光源 环形光源 

照射方式:同轴方式(被测物体反光均匀)  角度照射(在一定工作距离下 光束集中 均匀性好,照射面积较小 适合塑胶容器的检查)

圆顶光源:适合检测曲面的金属表面文字 例如手机壳上面

 

 

2019-3-4:

课堂启蒙班-->01.基础视频课讲解第一讲(ocr识别).mp4

在HDevelop中操作键盘CTRL+E可以打开例程

  网上搜下lib和dll的区别 lib可以简单理解成2中  一种直接调用 还有一种指向DLL的信息 

 2019-3-8 :

第二课 BMP位图数据 主要包含: 文件头  文件信息  颜色表 位图数据

存储时候 按照4字节来存储 具体可查看代码 

2019-3-10:

第三课 在"文件"中可以查看示例代码 ROI(region of interesting) 敏感区域

 

2019-7-20:

课堂启蒙班->04讲视频 (分成2小节)

1.基于相关性目标识别概述

匹配主要有三种  基于灰度 基于特征 基于变换域

这里讲述normalized cross correlation 方法 简称NCC  

ROI区域可以通过视图左上角的工具按钮 重新绘制

 

2019-8-2:

网络启蒙班:

视频第一讲:讲述硬件连接

视频第二讲:基本操作 

视频第四讲: halcon文件操作 halcon打开相机基本操作  halcon保存文件 讲解例程ball.hdev

视频第五讲:实战采集瓶盖  主要分为二值化    同时connection函数分割(可以fill填充)  然后根据面积或者外形 找到需要的图形最后标出来进行识别

视频第六讲:形态学 二值化里面的处理 灰度处理则不一样  讲解了膨胀 腐蚀  开运算 闭运算   开运算为先腐蚀后膨胀(开预算会断开形态,但幅度不如腐蚀)  闭预算先膨胀后腐蚀(闭运算会闭合形态 ,但幅度不如膨胀)  对灰度图像处理 则是改变灰度的深浅 膨胀和闭运算为变深  腐蚀和开运算为变浅

图像处理流程:   采集图像 -->预处理(中值滤波,均值滤波 高斯滤波 高通滤波 低通滤波这些都属于预处理范围) -->特征处理(如有必要还需要训练学习)-->UI显示    

halcon主要函数:threshold二值化   fill_up_shape填充图形   opening_circle以圆形作为开运算    connection图形分割   select_shape用于图形选择

辅助函数:count_obj统计当前对象数 

第八讲 实战blob分析   在二值化之前可以进行一些预处理  方法见上图像处理流程里面有

 

 

课程中使用到的算子:

read_image

list_files 列举文件

tuple_regexp_select 列举文件后 在根据扩展名获取需要的文件

list_image_files  列举指定目录中的所有图片

write_image  可以保存原始图片 (使用右击保存会丢失像素)

dump_window_image 截图窗口到图像变量

dump_window 截图当前窗口大小来保存  如果框视野大则保存像素多

dev_get_window 获得窗口句柄

query_font 获得窗口中的字体

set_font 设置字体的大小宽度

reduce_domain 缩小图像的定义域 由此引出ROI区域  (region of interest)

注意:创建ROI区域 圆  直线 齐轴矩形  仿射矩形(可旋转矩形)

绘制ROI: draw_xxx ; draw_xxx_mod ; draw_region等算子

生产ROI:gen_xxx ; gen_empty_obj

显示ROI:disp_obj ; disp_xxx ;dev_display

threshold  根据输入的灰度值 输出到指定图形上

connection将之前相近图形连在一起

select_shape 根据像素大小选择指定的区域 回形针例子有明显展现

union1  把图形数组所有区域合并成一个 把所有图形中的区域合并成一个

select_obj 获取图形数组中的某个个例

union2 联合select_obj选出的两个图形个例 合并两个区域为一个

difference 可以使用两个图片的差集  

intersection 可以求得两图的交集

complement 补集 除自身以外的 全部选中

区域和轮廓相互转换:

gen_contour_region_xld  生产contour(轮廓) 从 region(区域) 以XLD方式
gen_region_contour_xld  生成区域

get_region_pionts 获取区域所有的点组

gen _cross_contour_xld 在物体上方式十字叉

area_center 获取面积的中心点

shape_trans  外切成某个图形

smallest_rectangle1 获取外接特征点 左上角坐标和右下角坐标

sort_region 根据搜索到的符合物料进行排序

弧度转角度

Rad:=rad(45) 

Angle:=deg(Rad)

Angle:=deg(45)

仿射变换  类似跟随作用

vector_angle_to_rigid 带角度的刚性匹配  至少一个特征点+一个角度 做仿射变换的算子

vector_to_rigid 不带角度刚性匹配 

vector_to_similarity 柔性匹配 (支持缩放,刚性则不支持缩放) 两个特征点做仿射变换

vectoro_to_hom_mat2d 一般适用于手眼标定  三个特征点以上做仿射变化使用这个算子  多相机可标定在一坐标系里

hom_mat2d_to_affine_par 计算仿射变换的参数    这个算子中的参数phi指角度 Theta指斜切角度

常用的仿射变换:

affine_trans_contour_xld

affine_trans_image  对图像进行仿射变换

affine_trans_point_2d

affine_trans_pixel

affine_trans_region 对区域进行仿射变换

实际应用中 贴合机找到底座的位置 然后可以根据之前设定的位置进行仿射变换 再次进行方向识别

实际应用中如果出现搜素模板闪烁则可以使用下面算子组合使用:

set_window_param(句柄,'flush','false')

dev_dispaly(等等)

set_window_param(句柄,'flush','true') 

通过上面三个算子操作可以避免闪烁

 

制作模板之后 可以保存起来

write_shape_model保存模板 read_shape_model读取模板 然后下次就不用在另外做模板了

贴合机中识别中心使用类似draw_spoke 或者spoke功能 draw_rake和rake  二维测量  在视频<halcon网络课7:测量>1:15中有提到类似贴合机的拟合中心点功能

 

sub_image 只能大图减小图

abs_diff_image 两幅图比较

difference区域背景 大图减小图 

symm_difference 区域两图比较

posted @ 2019-02-02 22:04  peter83ye  阅读(1141)  评论(0编辑  收藏  举报