halcon案例分享
目录
测量长度
仿射变换
测量长度和距离
模板匹配
旋转角度
找圆心
BLOB分析
控制变量
机器视觉工程应用的开发思路
测量长度
仿射变换
测量长度和距离
模板匹配
旋转角度
找圆心
BLOB分析
控制变量
机器视觉工程应用的开发思路
机器视觉工程应用主要可划分为硬件和软件两大部分。
硬件:工程应用的第一步就是硬件选型。硬件选型很关键,因为它是你后面工作的基础。主要是光源、工业相机和镜头选择。
软件:目前业内商业库主要有Halcon,康耐视,DALSA,evision,NI(labview+vision模块)等,开源库有OpenCV。
机器视觉工程应用的基本开发思路是:
一、图像采集
二、图像分割
三、形态学处理
四、特征提取
五、输出结果
下面在Halcon下对这四个步骤进行讲解。
一、图像采集:
Halcon通过imageacquisition interfaces对各种图像采集卡及各种工业相机进行支持。其中包括:模拟视频信号,数字视频信号Camera Link,数字视频信号IEEE 1394,数字视频信号USB2.0,数字视频信号Gigabit Ethernet等。
Halcon通过统一的接口封装上述不同相机的image acquisition interfaces,从而达到算子统一化。不同的相机只需更改几个参数就可变更使用。
Halcon图像获取的思路:
1、打开设备,获得该设备的句柄。
2、调用采集算子,获取图像。
1、打开设备,获得该设备的句柄。
open_framegrabber('DahengCAM', 1, 1, 0, 0, 0, 0, 'interlaced', 8, 'gray', -1, 'false','HV-13xx', '1', 1, -1, AcqHandle) //连接相机,并设置相关参数
Parameter |
Values |
Default |
Type |
Description |
Name |
'DahengCAM' |
string |
Name of the HALCON interface. |
|
HorizontalResolution |
1 |
1 |
1表示水平全部,2为水平1/2,表示图像截取。 |
|
VerticalResolution |
1 |
1 |
同上,表示垂直方向。 |
|
ImageWidth |
0 |
integer |
所需的图像部分的宽度('0 '代表了完整的图像)。 |
|
ImageHeight |
0 |
integer |
所需的图像部分的高度(0”是完整的图像) |
|
StartRow |
0 |
integer |
所需的图像部分左上方的像素行坐标 |
|
StartColumn |
0 |
integer |
所需的图像部分左上方的像素列坐标 |
|
Field |
忽视 |
|||
BitsPerChannel |
忽视 |
|||
ColorSpace |
'default', 'gray', 'rgb' |
'gray' |
string |
HALCON图像的通道模式 |
Generic |
忽视 |
|||
ExternalTrigger |
'false', 'true' |
'false' |
string |
外部触发状态 |
CameraType |
'HV-13xx', 'HV-20xx', 'HV-30xx', 'HV-31xx','HV-50xx', 'SV-xxxx' |
'HV-13xx' |
string |
所连接的摄像机系列型。 |
Device |
'1', '2', '3', ... |
'1' |
string |
相机连接第一个设备号“1”,第二个设备编号“2”。 |
Port |
忽视 |
|||
LineIn |
忽视 |
2、调用采集算子,获取图像。
grab_image (Image, AcqHandle) //(同步采集)完后处理图像,然后再采集图像。采集图像的速率受处理速度影响。
grab_image_async (Image, AcqHandle,MaxDelay) //(异步采集),一幅画面采集完后相机马上采集下一幅画面,不受处理速度影响。其中第三个参数为:MaxDelay,表示异步采集时可以允许的最大延时,本次采集命令距上次采集命令的时间不能超出MaxDelay,超出即重新采集。
图像采集其他相关算子:
grab_image_start,该算子开始命令相机进行异步采集。只能与grab_image_async(异步采集)一起使用。
例子:
* 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)
3、相机参数读写
读取相机参数:
info_framegrabber( : : Name, Query : Information, ValueList)
写相机参数:
set_framegrabber_param( : : AcqHandle, Param, Value : )
二、图像分割:
图像分割的定义:
所谓图像分割是指将图像中具有特殊含义的不同区域分割开来,这些区域是互相不交叉的,每个区域都满足特定区域的一致性。
1、基于阈值的图像分割
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)
bin_threshold — 使用一个自动确定的阈值分割图像。
格式: bin_threshold(Image : Region : : )
dyn_threshold —使用一个局部阈值分割图像。
格式: dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
例子:
mean_image(Image,Mean,21,21)
dyn_threshold(Image,Mean, RegionDynThresh,15,'dark')
var_threshold —阈值图像局部均值和标准差的分析。
格式: var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )
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)质量检测
来源:https://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html
001:计算机视觉领域研究资源及期刊、会议介绍
002:德国kuka机器人与世界冠军乒乓对决
003:120图勾勒全球AI产业完整图谱!
004:Facebook 开源计算机视觉系统,从像素水平理解图像(附论文及代码)
005:想成为机器学习工程师?这份自学指南你值得收藏
006:十一种通用滤波算法
007:图像处理与计算机视觉基础,经典以及最近发展
008:机器人行业深度报告(完整版)
009:从洗衣妹到谷歌首席科学家,她靠孤独改变了人工智能界!
010:工业级机器视觉行业研究报告
011:双远心工业镜头的原理简述
012:如何装备一个学术型的 iPad ?
013:机器视觉系统概述
014:德国工匠:我们没有“物美价廉”的东西
015:为什么最好的机械臂是7个自由度,而不是6个?
016:史上最给力的技术视频!
017:机器人10大流行编程语言对比,你掌握了哪种?
018:新奇复杂机械原理图!
019:机器人控制系统相关知识大汇集
020:机器人的工作原理,史上最详细的解析!
021:光源选型知识点
022:这才是机械手,这才是自动化,你那算什么?
023:摄像机和镜头的基础知识
024:物联网产业链全景图(附另13大电子行业全景图,必收藏)
025:日本到底强大到什么地步?让人窒息!看后一夜未眠
026:德国机械用行动惊艳全世界:无敌是多么寂寞
halcon案例分享相关推荐
- 近期活动盘点:AI Time:论道AI安全与伦理、大数据、AI在中国金融保险业的应用案例分享讲座...
想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: AI Time"science debate 论道AI安全与伦理 2019年5月31日 如今,人工智能的社会角色不断更新迭代,越 ...
- linux下批量修改文件名精彩解答案例分享
######################################################### #linux下批量修改文件名精彩解答案例分享 #date:21:34 2011-11 ...
- 关闭 定时开启_【话说定时器系列】之四:STM32定时器更新事件及案例分享
STM32定时器是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍.去年,电堂推出了<STM32 TIMER基础及常规应用介绍>,为大家梳理了 STM32 TIMER 的庞大内容, ...
- 企业大数据运用实战案例分享
一.企业大数据如何起步:从小数据到大数据 目前国内外关于大数据的谈论很多,大多是谈运营级别的,或者说从服务端.服务方提得较多一些.笔者要跟大家交流的问题是作为各类企业尤其是客户方的企业来说,大数据跟他 ...
- 老李案例分享:Weblogic性能优化案例
老李案例分享:Weblogic性能优化案例 POPTEST的测试技术交流qq群:450192312 网站应用首页大小在130K左右,在之前的测试过程中,其百用户并发的平均响应能力在6.5秒,性能优化后 ...
- 2020-12-14 Matlab 模糊控制 车辆泊车 案例分享
Matlab 模糊控制 车辆泊车 案例分享 最近看到了一个知网的文献,研究基于模糊控制的自动泊车,复现了论文, 模糊控制方法参看之前的文章: matlab模糊控制工具箱使用和模糊控制pid实例参考(一 ...
- 计算机网络第4版潘爱民_学术活动 钱江会计实务精英讲坛预告(第84期)| 何继昌 : 战略视角下之财务分析应用实践 兼选股案例分享...
钱江会计实务精英讲坛预告第84期 # 主题 战略视角下之财务分析应用实践 --兼选股案例分享 # 时间 2020年12月25日 2:00 pm---4:00 pm # 地点 C楼213 主讲人简介 何 ...
- 某大型数据中心离心式冷水机组 控制板UPS电源改造项目案例分享
摘 要 离心式冷水机组作为大部分数据中心的核心设备,其是否稳定.安全运行决定着数据中心制冷系统的安全运行.本文分析了某大型数据中心离心式冷水机组控制板UPS电源改造创新案例,分析了改造项目过程中可 ...
- 批次管理的质量跟踪案例分享_食品加工行业
批次管理的质量跟踪案例分享_食品加工行业 最近接触了一个食品行业的项目,针对食品行业有几大特点和行业的特殊性: 1.保质期的控制与管理 2.物料进行化学实验 3.原料采购时扣率 4.物料进行批次跟踪 ...
最新文章
- Linux(CentOS 7_x64位)系统下安装GaussView5
- CVE-2017-11882漏洞分析
- 全球及中国硝基复合肥市场产销状况与未来运营前景分析报告2022版
- GridView RowDeleting 动态添加行,删除行记录 不删除数据库中记录
- Java9中的GC 调优
- 招聘职位:ERP咨询顾问(广州、厦门)
- 案例46-crm练习客户登录
- z-index在IE中的迷惑
- iscsi-target
- linux 下 dhcp failover相关
- Python图书馆管理系统
- 怎么使用水经注万能地图下载器制作百度个性化道路地图
- 咸鱼Maya笔记—Maya 编辑法线
- Lucas-Kanade稀疏光流法
- 循环神经网络--RNN GRU LSTM 对比分析
- 中国移动、联动、电信
- mongodb可视化工具 mac版 Studio 3T破解
- 6个实用的红米手机技巧
- mc冒险者传说java_我的世界冒险者传说第一章图文攻略
- 平板win10 android哪个耗电,win10开启平板模式省电吗?win10平板模式省电方法
热门文章
- 一次百度网盘的悲惨经历
- JVM、DVM(Dalvik VM)和ART虚拟机的区别
- 漂亮的带搜索框蓝黄拼色网站404页面源码
- winfrom+Fleck 上传文件
- bzoj 1269 editor
- 宝塔面板专业版企业版教程 纯手动 带原版脚本 插件免费用
- win7计算机未连接网络,Win7无线网络显示未连接但可以上网的解决办法
- HDU 5835 Danganronpa
- 软件测试显卡最高清晰度,硬件碾压机再临? GTA5显卡性能全测试
- TypeError: object() takes no parameters