机器视觉七大应用
1.识别定位
2.缺陷
3.测量
4.符号识别(OCR光学字符,一维码,二维码)
5.手眼标定配合抓取
6.深度学习
7.三维视觉
采集->预处理->图像分割->特征识别以及计算(坐标,面积等)->显示或者通讯(控制运动板卡等)
Blob分析是对图像中相同像素的连通域进行分析,该连通域称为Blob。Blob分析可为机器视觉应用提供图像中的斑点的数量、位置、形状和方向,还可以提供相关斑点间的拓扑结构。
预处理:
机器视觉图像预处理技术包括图像的平滑、增强,边界检测和阈值分割。边界检测和阈值分割是图像预处理的关键。基于二阶导数过零点检测的边界提取方法具有较高的检测精度,但是,利用各种算子对图像求导,必然放大噪声,这就使边界提取受到很大的干扰,即使用上多种统计检验技术,也未能很好地克服这一弱点。先对图像进行平滑滤波,然后再对其求导,求取二阶导数过零点,可以较好地克服噪声的干扰,但是由于边界信息本身就是高额信息,经过低通滤波也会有所损失。

  1. 基于曲线拟合的边界检测方法
  2. 基于梯度强度均值的阈值分割
    1.对比度拉开 a.灰度值缩放 scale_image b.图像增强(灰度变化) emphasize c.灰度形态学 gray_ d.直方图均衡化 equ_histo_image 光照更均匀
    2.去噪 中值 均值 高斯
    图像分割:
  3. 手画 ROI
  4. Blob分析逼近 抠图,分割(三兄弟:二值化,形状选择,形态学,配合intersect,difference,shape_trans)

Halcon 光机电一体化 涉及:
图像基础理论知识
灰度变换
图像增强
图像几何变换
图像分割
图像频域
图像形态学
图像复原
运动图像
图像配准

硬件方案平台上
选光源,镜头,相机,搭建平台

HSV H灰度值大小定颜色,但不是绝对的,受光照和图片质量等因素影响,并非固定的
区域 开运算,腐蚀, 减少像素 闭运算 膨胀 增加像素
灰度图像开运算,腐蚀,暗的像素点增多;灰度图像闭运算,膨胀,亮的像素点增多

字符识别

  1. 读入图片
  2. 预处理(灰度转换,灰度直方图里缩放使能,调范围,
  3. 字符分割:(1)几何矫正 (2)分割,让每一个字体形成一个连通域
  4. 形成trf文件,字符图像与字符关联
  5. 创建神经网络分类器->训练分类器->写分类器(保存OMC文件,消除句柄)
  6. 识别文字

Halcon 分类器基本白底黑字,需invert_image(255-图片现在灰度值)

车牌识别
读入,车牌定位及矫正,字符分割,读取halcon自带分类器,识别,显示
Read_image,特征图选择,shape_trans(外接旋转矩形),识别偏转角度,area_center,vector_anger_to_转正,affine_作用区域和图片,sort_排序,read_ocr_mld(读取halcon自带分类器),do_ocr(执行分类器作用),dev_display(image),disp_message()(在当前显示图片上显示识别到的车牌号)
图像共生矩阵:
对图像上单个象素具有某个灰度进行统计的结果,而灰度共生矩阵是对图像上保持某距离的两象素分别具有某灰度的状况进行统计得到的。
取图像(N×N)中任意一点(x,y)及偏离它的另一点(x+a,y+b),设该点对的灰度值为(g1,g2)。令点(x,y)在整个画面上移动,则会得到各种(g1,g2)值。设灰度值的级数为L,则(g1,g2)的组合共有k(k=L*L)种。对于整个画面,统计出每一种(g1,g2)值出现的次数,然后排列成一个方阵,再用(g1,g2)出现的总次数将它们归一化为出现的概率P(g1,g2),这样的方阵称为灰度共生矩阵。距离差分值(a,b)取不同的数值组合,可以得到不同情况下的联合概率矩阵。(a,b) 取值要根据纹理周期分布的特性来选择,对于较细的纹理,选取(1,0)、(1,1)、(2,0)等小的差分值
纹理特征提取的一种有效方法是以灰度级的空间相关矩阵即共生矩阵为基础的,因为图像中相距(Δx,Δy)的两个灰度像素同时出现的联合频率分布可以用灰度共生矩阵来表示。若将图像的灰度级定为N级,那么共生矩阵为N×N矩阵,可表示为M(Δx,Δy)(h,k),其中位于(h,k)的元素mhk的值表示一个灰度为h而另一个灰度为k的两个相距为(Δx,Δy)的像素对出现的次数。
对粗纹理的区域,其灰度共生矩阵中的mhk值较集中于主对角线附近。因为对于粗纹理,像素对趋于具有相同的灰度。而对于细纹理的区域,其灰度共生矩阵中的mhk值则散布在各处。

缺陷检测
1.凸凹
2.污点,内部凸凹点,瑕疵,孔洞,破损
3.划痕 低角度环形光

打光
凹点 垂直打,凹点变暗,周围打亮
凸点 低角度打,凸点变亮,周围打暗
曲面 网状

处理
1.Blob分析+特征
饼干

binary_threshold
area_holes
Rectangularity

药片检测

access_channel 拆通道
threshold
shape_trans(region,Blister,’convex’)
orientation_region
area_center
vector_angle_to_rigid
affine_trans_image
gen_empty_obj(chambers)
for i := 0 to 4 by 1
Row := 88 + i70
for j := 0 to 2 by 1
column := 163+j
150
gen_rectangle2(rectangle,Row,Column,0,64,30)
concat_obj(chambers,rectangle,chambers)
endfor
endfor
affine_trans_region (Blister,Blister
difference(BLISTER,chambers,pattern)
union1(chambers,chamberUnion)
phiRef := phiRef + rad(180)
area_center(Blister,Area2,RowRef,ColumnRef)
以上定位(求标准位置,blob)
读图计算偏移角度

缺陷检查(在标准位置抠药片,然后和原来的区域相交来判断)
vector_angle_to_rigid(row,column,phi,RowRef,ColumnRef,phiRef ,HomMat2D)
affine_trans_image
reduce_domain(ImageAffinTrans,chamberUnion,imageReduced)
decompose3
var_threshold
connection
closing_rectangle1
fill_up
select_shape
opening_circle
connection
select_shape
shape_trans(selectRegions,pills,’convex’)

count_obj(chambers,Number)
gen_empty(wrongPill)
gen_empty(missingPill)
for i := 1 to Number by 1
select_obj(chambers,chamber,i)
intersection(chamber,pills,pill)
area_center
if(area>0)
min_max_gray9
If(area<3800 or min<60)
concat_obj(wrongPill,pill,wrongPill)
Endif
else
Concat_obj(missingPill,pill,missingPill)

测量类项目背光打光(远心或低畸变镜头+背光源,普通镜头由于中心与两端放大率不一样,会有畸变)
短波长光比长波长光衍射要弱一点,边缘不至于有那么多重影

gen_rectangle1
reduce_domain
create_shape_model
gen_measure_rectangle2
模板匹配定位 测量矩形

2.Blob分析+特征+差分
毛刺

read_image(Fins,’fin’+[1:3])
select_obj(Fins,fin,i)
binary_threshold
closing_circle
区域相减difference (求区域相同部分intersection)

局部亮局部暗

mean_image(image,imageMean, 49,49 )
dyn_threshold(image,imageMean,regin,5,’dark’)
connection
select_shape
count_obj 选择面积大的缺陷

pcb毛刺

背景干净,光照稳定
gray_opening_shape(image,imageOpening,7,7,’octagon’) 暗像素增多,缺陷连接起来

gray_closing_shape(image,imageClosing,7,7,’octagon’)亮像素增多,断的更干净
dyn_threshold(imageOpening,imgeClosing,region,75,’not_equal’)

3.频域+空间域
频域图,每点像素亮度对应相应频段的幅度值
方向,亮度,宽度
频率在哪个方向有剧烈变化,在频域就有亮带

fft_image
gen_rectangle1
gen_rectangle1
union2
paint_region
fft_image_inv
fft_generic
gen_highpass(gen_lowpass)
convol_fft
fft_grnrric

创建滤波器 gen_gauss_filter gen_gauss_filter sub_image
读取图像 灰度化 转频域 频域滤波处理 转空间域 blob分析处理

频域+差分+空间域处理
4.光度立体法
基恩士有LumiTrax算法,就是专门针对凹凸的检测物体,四面打光,合成图像,求取梯度图型,然后Halcon里的光度立体法也是这方面的应用,关键的算子就是photometric_stereo
inspect_blister¬_photometric_stereo.hdev
5.特征训练
6.测量+拟合

回归这个词的意思是,我们在试着推测出这一系列连续值属性
支持向量机,里面有一个巧妙的数学技巧,能让计算机处理无限多个特征
监督学习的基本思想是,我们数据集中的每个样本都有相应的“正确答案”。再根据这些样本作出预测。回归问题,通过回归来推出一个连续的输出;
分类问题,其目标是推出一组离散的结果

  1. 无监督学习已知的数据不同于监督学习的数据,没有任何的标签或是有相同的标签或者就是没标签。针对数据集,无监督学习算法可能会把这些数据分成两个不同的簇,所以叫做聚类算法。聚类应用的一个例子就是在谷歌新闻中。聚类只是无监督学习中的一种。
    一堆数据,不知道数据里面有什么,谁是什么类型,甚至不知道有哪些不同的类型,这些类型又是什么。能否自动地找到数据中的结构,就是说要自动地聚类那些个体到各个类,我们没法提前知道哪些是哪些,因为我们没有给算法正确答案来回应数据集中的数据,所以这就是无监督学习。
    Octave

工具和图像对准的两种方式
助手——>matching->载入第一张图片作为定位测量标准——>基于形状匹配,抠选模板区域———>应用,导入所有图片——>检测,全部检测,看检测结果进行相应的优化——>生成校正代码
动态阈值(threshold不能适应亮度变换图片)
mean_image
dyn_threshold
affine_trans_image 1作用图像
affine_trans_region 2作用于工具
1.变换图像
2.变换工具(检测的这一部分,可能是一段代码)

halcon notes相关推荐

  1. halcon与QT联合:(5.3)瓶盖检测以及QT界面搭建

    接着上篇博客的添加资源之后,本次要实现的是鼠标的滚轮功能图片的缩放. 在QT代码中中文乱码的处理方法: qDebuge()<<QString::fromLocal8Bit("这个 ...

  2. halcon与QT联合:(5.2)瓶盖检测以及QT界面搭建

    目录 1.添加按钮.添加资源 1.1添加那妞 1.2.添加资源 1.2.1.准备资源文件 1.2.2.添加资源文件 1.2.3.添加对应的资源代码 在上一个博客5.1中只是做了一个简单的界面,下面我们 ...

  3. halcon与QT联合:(5.1)瓶盖检测以及QT界面搭建

    halcon实现瓶盖检测与定位代码: dev_close_window() dev_open_window(0, 0, 1024, 1024, 'black', WindowHandle) list_ ...

  4. Halcon与QT的联合编程(2)

    在(1)的基础上继续对halcon与QT的联合编程项目进行扩展. 1.添加类的两种方法: 1.1.添加C++类 1.2.添加设计师界面类 QT的设计类他是有界面的.如果有些参数需要修改的话可以在这个界 ...

  5. Halcon与QT的联合编程(1)

    目录 1.halcon代码的封装 2.halcon代码的导出 3.halcon与QT联合编程 3.1.QT工程建立 3.2.qt与halcon联合 1.halcon代码的封装 在对代码进行封装的时候, ...

  6. halcon:(4)halcon中XLD的概念与应用----汽车引擎盖圆孔检测

    xld(extended Line Descriptions):扩展线的描述. 在halcon中经常会用到的两个概念: 1.region简单的理解区域region,就是某种具有结构体性质的二值图,正常 ...

  7. Halcon 点云拟合平面并获取单位法向量及位姿

    确实因为halcon的文档写的太好了,所以网上关于halcon的博客就很少,点云拟合平面的文档上介绍的比较详细,但是如何从平面模型中读取法向量可确实是难到了,找了三个小时人傻了,然后发现还是一行函数. ...

  8. Halcon 读写txt文件,以逗号或空格分割

    最近在用halcon,经常用到读写文件. 读取文件中的数字存到tuple里边 **********读txt文件并将文件的数字存入元组********* open_file(Filename,'inpu ...

  9. Halcon学习之六:获取Image图像中Region区域的特征参数

    area_center_gray ( Regions, Image : : : Area, Row, Column )    计算Image图像中Region区域的面积Area和重心(Row,Colu ...

最新文章

  1. 在撤销“本地修改”之后再恢复
  2. 启动Tomcat一闪而过解决
  3. 原创:(网格化地图之初)高斯大地座标(经度、纬度)→3°投影带平面直角坐标(X、Y)换算...
  4. [转]12篇学通C#网络编程——第二篇 HTTP应用编程(上)
  5. 0125互联网新闻 | 抖音海外版 TikTok 12月新增7500万;少儿编程平台“编程猫”计划在2 年内IPO...
  6. VTK:几何对象之ParametricSuperToroid
  7. 原SUN网站:java.sun.com,developers.sun.com,bigadmin将合并到OTN
  8. Fiori elements执行过程解析:When click go in table list, odata service is sent
  9. FreeModbus输入寄存器
  10. 微软“黑历史”:一个活了 45 年的愚蠢 Bug!
  11. 5.3.6 原子操作对非原子的操作排序
  12. C语言编程学习gotoxy()与clrscr()函数
  13. Vue开发环境的搭建
  14. 微信更换绑定手机人工服务器,微信更换已绑定手机号码的操作方法
  15. JS中的debugger调试(谷歌浏览器)
  16. php高洛峰_PHP 验证码   高洛峰 细说PHP
  17. Oracle数据库的一点
  18. 图片数据的基本预处理与数据增强
  19. mysql多条新增字段sql合并为一条新增
  20. 【计算机毕业设计】70.毕业设计管理系统源码

热门文章

  1. 什么是AES对称加密算法
  2. 计算机毕设(附源码)JAVA-SSM基于智慧农业的水果销售系统
  3. React Navigation 基本使用
  4. 超融合一体机过渡到云计算
  5. YOLO系列目标检测算法-YOLOv7
  6. JAVA的基本数据类型以及数值范围
  7. 《吻别》英文版《Take me to your heart》
  8. 摸底考察-Linux系统搭建WEB网站服务
  9. activiti学习(二)——activiti流程的部署
  10. 人工智能究竟离我们有多远?