Halcon学习笔记1
转:https://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html
机器视觉工程应用主要可划分为硬件和软件两大部分。
硬件:工程应用的第一步就是硬件选型。硬件选型很关键,因为它是你后面工作的基础。主要是光源、工业相机和镜头选择。
软件:目前业内商业库主要有Halcon,康耐视,DALSA,evision,NI等,开源库有OpenCV.其中NI的labview+vision模块。
机器视觉工程应用的基本开发思路是:
一、图像采集,二、图像分割,三、形态学处理,四、特征提取,五、输出结果。
一、图像采集:
Halcon通过imageacquisition interfaces对各种图像采集卡及各种工业相机进行支持。

1、打开设备,获得该设备的句柄。
open_framegrabber('DahengCAM', 1, 1, 0, 0, 0, 0, 'interlaced', 8, 'gray', -1, 'false','HV-13xx', '1', 1, -1, AcqHandle) //连接相机,并设置相关参数
2、调用采集算子,获取图像。
grab_image (Image, AcqHandle) //(同步采集)完后处理图像,然后再采集图像。采集图像的速率受处理速度影响。
grab_image_async (Image, AcqHandle,MaxDelay) //(异步采集),一幅画面采集完后相机马上采集下一幅画面,不受处理速度影响。其中第三个参数为:MaxDelay,表示异步采集时可以允许的最大延时,本次采集命令距上次采集命令的时间不能超出MaxDelay,超出即重新采集。
例子
* Select a suitable image acquisition interface nameAcqName
open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0,\
'default','default','default',-1,-1,AcqHandle)
grab_image(Image1,AcqHandle)//进行同步采集
* Start next grab
grab_image_start(AcqHandle,-1.0)//命令相机进行异步图像采集开始
* Process Image1 ...
* Finish asynchronous grab + start next grab
grab_image_async(Image2,AcqHandle,-1.0)//读取异步采集的图像
* Process Image2 ...
close_framegrabber(AcqHandle)
二、图像分割:
图像分割的定义:
所谓图像分割是指将图像中具有特殊含义的不同区域分割开来,这些区域是互相不交叉的,每个区域都满足特定区域的一致性。
1、基于阈值的图像分割
a) threshold —采用全局阈值分割图像。
格式: threshold(Image : Region : MinGray, MaxGray : )
自动全局阈值分割的方法:
(1)计算灰度直方图
(2)寻找出现频率最多的灰度值(最大值)
(3)在threshold中使用与最大值有一定距离的值作为阈值
代码:
gray_histo(Regions, Image,AbsoluteHisto, RelativeHisto) //计算出图像区域内的绝对和相对灰度值直方图。
PeakGray := sort_index(AbsoluteHisto)[255] //求出出现频率最多的灰度值
threshold(Image,Region,0,PeakGray-25)
b) bin_threshold — 使用一个自动确定的阈值分割图像。
格式: bin_threshold(Image : Region : : )
c)dyn_threshold —使用一个局部阈值分割图像。
格式: dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
例子:
mean_image(Image,Mean,,)
dyn_threshold(Image,Mean, RegionDynThresh,,'dark')
d)var_threshold —阈值图像局部均值和标准差的分析。
格式: var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDar
2、基于边缘的图像分割:寻找区域之间的边界
watersheds —从图像中提取分水岭和盆地。
格式: watersheds(Image : Basins, Watersheds : : )
watersheds_threshold —使用阈值从图像中提取分水岭和盆地。
格式: watersheds_threshold(Image : Basins : Threshold : )
3、基于区域的图像分割:直接创建区域
三、形态学处理
形态学处理以集合运算为基础。
腐蚀、膨胀、开操作、闭操作是所有形态学图像处理的基础。
开操作(先腐蚀再膨胀)使对象的轮廓变得光滑,断开狭窄的间断和消除细的突出物。
闭操作(先膨胀再腐蚀)消弥狭窄的间断和长细的鸿沟,消除小的孔洞,填补轮廓线的断裂。
形体学基础算子:
erosion1
dilation1
opening
closing
常用的形态学相关算子
connection
select_shape
opening_circle
closing_circle
opening_rectangle1
closing_rectangle1
complement
difference
intersection
union1
shaps_trans
fill_up
形态学高级算子:
boundary
skeleton
四、特征提取:
1、区域特征:
area
moments
smallest_rectangle1
smallest_circle
convexity:区域面积与凸包面积的比例
contlength:区域边界的长度
compactness
2、灰度特征
estimate_noise
select_gray
五、输出结果:
(1)获取满足条件的区域
(2)区域分类,比如OCR
(3)测量
(4)质量检测
Halcon学习笔记1的更多相关文章
- Halcon学习笔记之支持向量机(二)
例程:classify_halogen_bulbs.hdev 在Halcon中模式匹配最成熟最常用的方式该署支持向量机了,在本例程中展示了使用支持向量机对卤素灯的质量检测方法.通过这个案例,相信大家可 ...
- Halcon学习笔记之支持向量机(一)
例程:class_overlap_svm.hdev 说明:这个例程展示了如何用一个支持向量机来给一幅二维的图像进行分类.使用二维数据的原因是因为它可以很容易地联想成为区域和图像.本例程中使用了三个互相 ...
- halcon学习笔记——机器视觉工程应用的开发思路【转】
转自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html 机器视觉工程应用主要可划分为硬件和软件两大部分. 硬件:工程应 ...
- Halcon学习笔记——条形码的定位与识别
一维码的原理与结构 条码基本原理是利用条纹和间隔或宽窄条纹(间隔)构成二进制的”0“和”1“,反映的是某种信息. 一维条码数据结构,分四个区域.组成分别为静区.起始/终止符.校验符.数据符. 一维条码 ...
- Halcon学习笔记——机器视觉应用工程开发思路及相机标定
机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...
- halcon学习笔记——(11)Image,region,xld初步
一 读取的3种方式: 读取单张的图片: read_image( image,'filename') //image 是输出对象,后面是输入文件的路径和名称 读取多图: 1,申明一个数组,分别保存路径 ...
- Halcon学习笔记之缺陷检测(二)
例程:detect_indent_fft.hdev 说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步: 首先,我们用高斯滤波器构造一个合适的滤波 ...
- Halcon学习笔记之缺陷检测(一)
例程:surface_scratch.hdev 说明:这个程序利用局部阈值和形态学处理提取表面划痕 代码中绿色部分为个人理解和注释,其余为例程中原有代码 *surface_scratch.hdev:e ...
- HALCON学习笔记
2019-2-2: 硬件选型--->镜头光源相机选型第一讲.avi: 高斯公式:1/u+1/v=1/f u:物距 v:像距 f:焦距 线放大倍率:像高/物高 或者 像距/物距 镜头需要掌握 ...
随机推荐
- maven实战(4)-- maven构建自己的jar到本地仓库中
在平时的开发中,经常需要用到自己以前开发的一个jar包,那么如何使用将自己开发的jar提交到本地仓库中,供其他的项目依赖呢?主要有三种方法: (1)使用mvn的构建命令:mvn clean insta ...
- iOS 深拷贝、浅拷贝、自定义对象拷贝简介
copy语法的目的:改变副本的时候,不会影响到源对象: 深拷贝:内容拷贝,会产生新的对象.新对象计数器置为1,源对象计数器不变. 浅拷贝:指针拷贝,不会产生新的对象.源对象计数器+1. 拷贝有下面两个 ...
- javascript之递归得DOM文本
var tag=document.getElementsByTagName('body')[0]; function findChild(tag){ var child=tag.childNodes ...
- 51Nod 1327 棋盘游戏 —— 延迟DP
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1327 看博客:https://www.cnblogs.com/Na ...
- writing-mode属性
writing-mode属性 最初只是ie中的属性,只有ie支持,现在在css3中谷歌,火狐也开始支持. 所以使用的时候就需要记住两套不同的语法,ie的私有属性和css3的规范属性 如果只需要兼容到i ...
- bzoj2384
树状数组+KMP 匹配问题上KMP 但是问题在于如何判断两个位置相等,我们认为如果一个位置之前比他小的数数量相同那么就是相等. 那么我们用树状数组动态维护这个东西,每次跳nxt的时候用树状数组删除数. ...
- zabbix 监控mysql状态 -Windows
由于公司爬虫mysql数据库在Windows下面,监控一下: 主要命令:mysqladmin -uroot -proot -h127.0.0.1 ping 2>D:\zabbix\waring. ...
- django上课笔记4-复习数据库操作-复习模板-Seccion-详细cookie和session的区别
一.复习数据库操作 字段类型 字符串 EmailField(CharField): IPAddressField(Field) URLField(CharField) SlugField(CharFi ...
- lightoj 1033【区间DP/LCS】
题意: 给你一个长度<=100的字符串. 然后你可以在任何位置插入字符,问最少插入几个构成回文. 思路: 1.长度-LCS: 2.区间DP; 我保证小的区间是一个回文,然后枚举区间,构成大区间, ...
- AGC031 A~C
A题意:给定字符串s,求无重复字符子序列个数(子序列相同位置不同算不同) 在最后加一串a~z表示选了这些就是不选这个字符了,然后答案就是每次选每个字符位置的方案数的积 #include<iost ...