点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

机器视觉工程应用主要可划分为硬件和软件两大部分。

硬件:工程应用的第一步就是硬件选型。硬件选型很关键,因为它是你后面工作的基础。主要是光源、工业相机和镜头选择。

软件:目前业内商业库主要有Halcon,康耐视,DALSA,evision,NI等,开源库有OpenCV.其中NI的labview+vision模块。


机器视觉工程应用的基本开发思路是:

一、图像采集,二、图像分割,三、形态学处理,四、特征提取,五、输出结果。

下面在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

<width>

0

integer

所需的图像部分的宽度('0 '代表了完整的图像)。

ImageHeight <height> 0 integer 所需的图像部分的高度(0”是完整的图像)
StartRow <width> 0 integer 所需的图像部分左上方的像素行坐标
StartColumn <column> 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 
interp 
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)质量检测

原文引自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html

向作者致敬!!

声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

机器视觉应用软件开发步骤及流程相关推荐

  1. 大数据产品开发流程规范_大数据开发步骤和流程

    大数据项目开发步骤: 第一步:需求:数据的输入和数据的产出: 第二步:数据量.处理效率.可靠性.可维护性.简洁性: 第三步:数据建模: 第四步:架构设计:数据怎么进来,输出怎么展示,最最重要的是处理流 ...

  2. 大数据开发步骤和流程

    大数据项目开发步骤: 第一步:需求:数据的输入和数据的产出: 第二步:数据量.处理效率.可靠性.可维护性.简洁性: 第三步:数据建模: 第四步:架构设计:数据怎么进来,输出怎么展示,最最重要的是处理流 ...

  3. app定制开发的完整流程与步骤

    app定制开发,app定制开发流程, APP应用已然成为人们生活中的必需品,想要涉足移动互联网行业的创业者选择定制开发一款APP应用软件无疑是一个捷径.都市微生活科技app开发提示您:首先你要知道ap ...

  4. Spring MVC开发步骤以及执行流程

    Spring MVC开发步骤以及执行流程 开发步骤 1.在web.xml中定义前端控制器DispatcherServlet来拦截用户请求. 2.如果要以post方式提交请求,则定义包含表单数据的jsp ...

  5. 大数据产品开发流程规范_大数据系统开发步骤流程是怎样的

    大数据系统开发步骤流程是怎样的呢?下面来为大家介绍 大数据项目开发步骤: 第一步:需求:数据的输入和数据的产出: 第二步:数据量.处理效率.可靠性.可维护性.简洁性: 第三步:数据建模: 第四步:架构 ...

  6. 软件开发的步骤和流程

    软件开发通常包括以下几个步骤和流程: 需求分析: 收集和分析客户的需求, 确定软件的功能和性能要求. 设计: 根据需求分析的结果, 设计软件的架构和模块划分, 并制定详细的设计文档. 实现: 根据设计 ...

  7. 移动app开发流程,app开发步骤

    个人github:https://github.com/qiilee  欢迎follow 移动app开发流程,app开发步骤 app是手机软件的简称.手机主流的有ios.andriod,windows ...

  8. 数据库应用软件开发前3个步骤之实例讲解

    摘要:目前大部分的公司开发软件都不规范,开发步骤混乱.究其原因,大致可以分为两方面,一方面是客户的需求简单,公司不需要正常的软件开发步骤就可以实现,另一个方面就是公司开发软件没有规范,凭感觉开发软件, ...

  9. halcon从入门到精通pdf_机器视觉软件开发新人入门必看 --机器视觉软件开发学习路径...

    机器视觉是机械.运动.控制.光学.软件.算法于一体的交叉学科,对于学工科的人来说,机械.运动.控制都有一定的了解,对于软件.算法.光学不是很了解.一台设备,有一个到二个机械设计师或者结构工程师,那么这 ...

最新文章

  1. django按钮点击后想刷新当前页面的view写法
  2. 什么是Microsoft Teams的App Studio
  3. Maven排除项目中同名不同版本的jar
  4. ROS中阶笔记(二):机器人系统设计—URDF机器人建模
  5. python移动文件中某个内容_如何在Python中移动文件
  6. 人脸识别冤枉了98%的好人,伦敦警察局长:我很满意
  7. 【BZOJ 1951】 [Sdoi2010]古代猪文
  8. java反射优化_JAVA反射优化
  9. “安全宝”,云安全服务
  10. PHP $_SERVER详解
  11. 线性回归公式推导与代码实现
  12. on the way——《linux内核分析》学习总结
  13. Windows驱动开发,几个BLOG值得经常看看
  14. 2.C语言基础-sprintf函数用法
  15. 淘宝搜索上传图片获得上传sid
  16. 机房教学管理系统/机房管理系统
  17. 微众银行助力普惠金融实现高质量发展
  18. DAX——FILTER
  19. 实体店也可以代办?外卖市场还需严加监管
  20. go语言中error的分类与用法

热门文章

  1. NLP命名实体识别开源实战教程 | 深度应用
  2. “剁手”的第十年,AI加持下的快递速度你还满意吗?
  3. 从MySQL 5.6升级到8.0,Facebook付出了惨痛代价……
  4. SpringCloud 2020版本教程2:使用spring cloud gateway作为服务网关
  5. 配置 Spring Batch 批处理失败重试
  6. IntelliJ IDEA 18 周岁,吐血推进珍藏已久的必装插件
  7. 你会不会模拟超过 5 万用户的并发访问?
  8. 从Servlet、Dubbo、Mybatis聊聊责任链究竟怎么用
  9. 王茂霖:数据挖掘提分三板斧!
  10. 这个Python库可以偷懒,和import说再见!