Halcon学习笔记——机器视觉应用工程开发思路及相机标定

   机器视觉应用工程开发思路

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

       1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头。

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

 

       机器视觉应用工程大致开发思路:

      一、获取图像       

      图像采集可以来源多个途径,用算子read_image去读取图像文件;用相机助手,可读取单个或多个相机视频;使用读文件或读取路径(可用tuple实现读取多个图像文件)助手。

      其中,使用相机助手获取相机图像最为常用。

      Halcon通过ImageAcquisition Interfaces对各种图像采集卡及各种工业相机进行支持。其中包括:模拟视频信号,数字视频信号Camera Link,数字视频信号IEEE 1394,数字视频信号USB2.0,数字视频信号Gigabit Ethernet等。 

     Halcon通过统一的接口封装上述不同相机的image acquisition interfaces,从而达到算子统一化。不同的相机只需更改几个参数就可变更使用。

     Halcon图像获取的思路:1、打开设备,获得该设备的句柄。2、调用采集算子,获取图像。

 

      二、图像颜色空间变换

      颜色的定义,颜色是光作用于人眼引起除形象以外的视觉特性。计算机常用的颜色空间主要有两种,RGB和HSVRGB颜色空间,主要是依据人眼的生理结构,人眼有三类视锥体细胞,分别是红,绿,蓝。而HSV颜色空间,是基于颜色本身的属性,H代表色相,主要由波长决定;S代表纯度,取决于峰值能量与其他频段能量白色光的比例;V代表亮度。H与S属性,常常会混为一谈,是为颜色的色度特性。

      因此,在一副彩色图像中,倘若在RGB颜色空间中无法寻得合适阈值进行分割时,常常可以将RGB颜色空间转换到HSV颜色空间,去观察图像的色相以及饱和度属性。

     三、图像预处理

     图像预处理,即对采集的图像不是很满意,以致于会影响后续图像处理的结果,因此必须对采集的图像进行预处理。图像预处理,并未对图像做出实质性的提取和改变,主要是以滤波、增强对比度等改善图像质量为目的。

     图像预处理,主要包括了四个部分,图像的点运算(即操作直方图),图像的几何变换、图像的增强处理以及图像的正交变换

     图像的点运算,主要用于改变一幅图像的灰度分布范围;图像的几何变换,主要包括图像的平移变换、镜像变换、图像的转置、缩放和旋转等内容;图像的增强处理,主要对图像的噪声过滤以及对比度增强,即平滑、锐化处理;图像的正交变换,主要包括傅里叶变换、哈达玛变换、离散余旋变换以及K-L变换等,将信号从空间域变换到空间频域,以便于更好的处理信号。

      四、区域及轮廓提取(提取ROI)

    区域以及轮廓的提取,即提取ROI,这一步是整个图像处理软件中的核心步骤。就我目前的知识水平大致可分为三个方法:Blob分析,模板匹配以及机器学习识别模式

    Blob分析的基本思想,通过其灰度值的差别来识别图像中前景的像素。Blob分析三兄弟,图像分割,图像形态学处理,特征提取。

    模板匹配,主要包括形状匹配以及灰度值匹配。关键步骤,创建模板;在图像中查找模板。

    机器学习识别,基于多层感知的自我训练,通过监督学习,形成分类器。主要分为四步,创建trf训练文件(绑定字符图像与字符),创建神经分类器,训练分类器,将分类器保存为ocm文件(即可用于识别)。

       五、图像识别及诊断(或要进行相机标定)

转载于:https://www.cnblogs.com/dzw2017/p/6992832.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

输入框不可以输入中文

输入框不可以输入中文1.输入框不可以输入中文&#xff0c;中文直接消失 <input oninput "valuevalue.replace(/[\u4e00-\u9fa5]{0,}$/g,)"/>2.说明 oninput 事件在元素值发生变化是立即触发 匹配使用正则表达式 正则表达式在线测试网站

图片上传js验证图片长宽_js判断图片上传时的文件大小,和宽高尺寸

今天在做图片上传的小功能&#xff0c;使用了一个kissy上传组件。很好奇它是如何在图片上传前&#xff0c;检测到图片的大小和尺寸的&#xff1f;我们来写个小实例实现一下吧如何读取图片的size首先&#xff0c;原生input file控件有个files属性&#xff0c;该属性是一个数组。…

必填校验加变色,点击颜色消失

必填校验加变色&#xff0c;点击颜色消失1.例子 <td changeColorForNull"ah0"><input class"noNull" type"text" id"ah0"name"ah" notNull"案号" onfocus"myFocus(this)" value"" …

一个关于python装饰器参数的问题

看到廖雪峰python教程上&#xff0c;python装饰器一章 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318435599930270c0381a3b44db991cd6d858064ac0000 在最后的作业题上 再思考一下能否写出一个log的decorator&#xff0c;使它既…

action怎么获得 ajax date参数_ajax()gt;load()事件的新用法!!!

load()函数用于从服务器加载数据&#xff0c;并使用返回的html内容替换当前匹配元素的内容。load()函数默认使用GET方式&#xff0c;如果提供了对象形式的数据&#xff0c;则自动转为POST方式。load()函数只会替换每个匹配元素的内部内容(innerHTML)。你还可以在URL字符串后面追…

apache shiro_Apache Shiro第1部分–基础

apache shiroApache Shiro &#xff08;最初称为JSecurity&#xff09;是Java安全框架。 它被接受并于2010年成为Apache顶级项目。它的目标是功能强大且易于使用。 该项目正在积极开发中&#xff0c;用户和开发人员的邮件列表均处于活动状态。 最重要的区域记录在其网页上。 但…

js编码解码

js编码解码//对输出结果编码 function encodeStr(val) {return encodeURIComponent(encodeURIComponent(trim(val))); }// 对参数解码 function decodeStr(val) {return decodeURIComponent(decodeURIComponent(trim(val))); }后端解码 public static String urlDecode(String …

PHP 中文文件名 空格等 CURL 读取

用rawurlencode 对文件名进行编码转载于:https://www.cnblogs.com/zhaoyun4122/p/7198895.html

无显示器u盘安装centos_最新版 CentOS 8.1.1911 安装教程及常见问题图文详解

基于笔记本(华硕)操作&#xff0c;使用软碟通(UltraISO)制作的系统启动盘(U盘&#xff0c;内存大于8G)操作可自行百度&#xff0c;非常简单(或可留言&#xff0c;择情况出一期U盘制作启动盘教程)。a、登录 centos 官网下载镜像文件官网地址&#xff1a;https://www.centos.org阿…

谨慎使用JUnit的预期异常

有时&#xff0c;当我们收到对jOOQ或其他库的拉取请求时&#xff0c;人们会将单元测试中的代码更改为更“惯用的JUnit”。 特别是&#xff0c;这意味着他们倾向于更改此代码&#xff08;公认的不是那么漂亮的代码&#xff09;&#xff1a; Test public void testValueOfIntInv…

plupload使用例子

plupload使用例子1. 例子 <li><a id"uploadFile">上传</a></li>//文书上传和显示 $(function () {var uploader new plupload.Uploader({runtimes: html5,flash,silverlight,html4,// 指定上传方式browse_button: uploadFile,unique_names…

mysql获取相隔时间段的数据

思路&#xff1a;为时间段内的数据进行编序号&#xff0c;然后计算好相隔时间&#xff0c;拿到id作为搜索条件 SELECT * FROM ( SELECT (i:i1) as i, id, data_send_time FROM jl_pims_machine_time mt,(select i:0) as it where mt.company_id 1001 AND mt.machine_id 1 ord…

bom实现方块移动_从0开始实现一个俄罗斯方块

写在前面得话&#xff1a;这篇文章主要记录了我是怎么一步一步写出俄罗斯方块&#xff0c;整个代码用的函数编程&#xff0c;主要是为了让一些不熟悉es6, 面向对象写法得 新手能更容易看明白&#xff0c;全部得代码中都是一些js的基础知识&#xff0c;很容易理解。要说有点麻烦…

字符串工具类

字符串工具类import javax.servlet.http.HttpServletRequest; import java.util.UUID;public class CommonUtil {/*** param request 请求* return java.lang.String 返回路径* description 获取绝对路径* date 2021/7/14 20:45*/public static String getUrlPath(HttpServletR…

JSonP跨域请求

JSonP跨域请求 我们在通过自己的页面或程序通过ajax请求其它网站或服务时&#xff0c;会存在一个ajax直接请求普通文件存在跨域无权限访问的问题&#xff0c;甭管你是静态页面、动态网页、web服务、WCF&#xff0c;只要是跨域请求&#xff0c;一律不准。不过我们又发现&#xf…

cli3解决 ie11语法错误 vue_基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册...

项目地址&#xff1a;https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register通过 vue-cli3.0 Element 构建项目前端&#xff0c;Node.js Koa2 MongoDB Redis 实现数据库和接口设计&#xff0c;包括邮箱验证码、用户注册、用户登录、查看删除用户…

gwt 嵌入html_GWT和HTML5画布演示

gwt 嵌入html这是我对GWT和HTML5 Canvas的第一个实验。 我的第一个尝试是创建矩形&#xff0c;仅用几行代码就得出了这样的内容&#xff1a; 码&#xff1a; public class GwtHtml5 implements EntryPoint {static final String canvasHolderId "canvasholder";sta…

使用UIWebView载入本地或远程server上的网页

大家都知道&#xff0c;使用UIWebView载入本地或远程server上的网页&#xff0c;sdk提供了三个载入接口&#xff1a;- (void)loadRequest:(NSURLRequest *)request; - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL; - (void)loadData:(NSData *)data MI…

css使按钮固定在界面上面

css使按钮固定在界面上面<div><div style"border-bottom: 1px solid #e7e7e7"><a class"" onclick"saveTable()" style"margin-left: 2%"><i class""></i>保存</a><a class"&q…

Spring MVC:Trgger手动验证表单对象

有时可能需要在Spring MVC Controller中使用手动验证。 使用Spring的org.springframework.validation.ValidationUtils类非常简单。 了解如何在两种不同的情况下调用验证器。 方案1 –调用验证 在这种情况下&#xff0c;我有一个带有用户名字段的用户表单。 用户名字段使用自定…