0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过USB摄像头采集图像,并经过一些运算对图像进行数据分析

lPCU_elecfans 来源:电子发烧友网 作者:电子发烧友网 2020-11-14 11:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

图像处理也可以称作视觉处理。LabVIEW提供了多种图像处理的方法。其中NI公司的视觉采集软件提供的驱动和函数,既能够从数千种连接到 NI 帧接收器上的不同相机上采集图像,也能够从连接在PC、PXI系统或笔记本计算机上标准端口的IEEE1394和千兆位以太网视觉相机采集图像。

本实例主要完成通过 USB 摄像头采集图像,并经过一些运算对图像进行数据分析。在实例中用采集到的图片作样本,让系统认识一个像素,然后开始自动查找图像中的相同像素,查找时还要对图片进行翻转,以全面找到相同的像素,最后再标注出这些点的中心位置和点数。

一、Vision图像工具安装

Vision 是一个图像处理的工具包,当安装完成后,启动 LabVIEW 软件,可以在前面板与后面板上看到相应的控件和函数。

在实验中,我们会用到工具前面板的Vision选项列表的三个图像显示控件IMAQ Image.ctl、Image Display、Image Display(Classic)进行图像分析、处理及显示设置;也会用到后面板“视觉与运动”函数选板,包括常用的视觉图像采集函数组NI-IMAQ、应用函数组Vision Utilities。具体控件与函数使用方法,可自行参考百度索引或者Vision视觉助手相关的书籍手册。

二、图像采集

要处理图像,必须先要获取一张图像。获取图像是通过调用 Vision 中的 IMAQ USB 函数来实现的。它的最大优势在于可以自动识别 USB 摄像头,并读取数据。

选择“函数”|“Vision and Motion”|“IMAQ USB”命令,打开IMAQ USB函数下拉列表,如图1所示。

在进行图像采集时,先要用IMAQ Create函数创建一个图像任务,此函数的接线如图2所示。

图1 图像采集函数

图2 IMAQ Create函数图标

这里通过此函数对图像的名称和类型大小等进行定义,否则后面的工作没有办法进行。然后再通过一个 USB 启动函数来调用 USB 摄像头设备。此函数是 NI 公司自己研发专门读取 USB 设备的函数,其内部通过调用ImaqDirectShowDll.dll文件来实现。

打开USB设备后,就要从此设备上获取数据,所以用了一个IMAQ USB Grab Acquire函数来实现。整个图像采集程序框图如图3所示。

图3 图像采集

三、图像处理过程

此处的图像处理包括对图像进行采样,找出与采样点相同的图像。为了找出各种角度放置的采样点,在查找的同时对图像进行了360°的翻转,这样可以找出图像上所有相同点。

1.整体设计

在本实例设计中,对一张图片先设置好要查找的内容,然后开始自动查找,最后对找出的内容进行标记和显示。

由于软件的运行比较复杂,数据的采集又是实时的,要求处理速度比较快,所以要对其进行整体设计,合理安排控件的调用和执行顺序。本程序中采用了一个大循环,保持程序的持续运行。在内部再调用一个顺序结构来控制程序的执行顺序 ,这样可以保证程序按编程者的思路进行。具体的工作流程图如图4所示。

图4 整个程序流程图

2.设置查找像素

读取了图像数据后,还要设置查找的像素。这里通过一个光标选择函数来实现。

先用函数IMAQ Setup Learn Pattern 2来设置需要记录的各项,然后再用IMAQ Extract函数进行光标设置。这样就记录了此光标区域的图像数据。它的程序框图如图5所示。

图5 设置查找像素

这里用一个条件结构来控制是否进入记录像素的程序。也就是当选择了要记录的像素后,才进入此分支程序。在这一分支程序中,又利用了一个顺序结构,这样提高了程序运行的效率。它的程序如图6所示。

图6 复位记录按钮

3.开始查找

当设置完以上要查找的像素后,就可以在需要的图片中查找此像素。为了查找有用的像素,在选择了“开始查找”后,要先读取上面标记的像素,再进行查找。

此处程序的设计中,也是先运行一个条件结构,再运行顺序结构,按顺序执行程序。读取光标选择像素的程序如图7所示。

图7 读取选择的像素

当读取像素后,利用顺序结构在第二帧的图像中继续查找。在这一帧中放置了一个循环,并限制循环次数为4。此时先用一个IMAQ Rotate对图像进行翻转,每次翻转90°。这样就可以在循环4次时翻转一周,对图像上各个角度的像素进行查找。再把图像送到IMAQ Match Pattern 2函数,对其进行查找。通过此函数直接输出找到的像素信息的数组。为了对找到的信息进行处理,又用一个For循环对此数据和簇进行拆分。这里的For循环次数直接由数组大小来控制。把数组拆开后再找到像素的中心位置,并按设置好的字体和格式显示出来。对字体的设置,前面板如图8所示。

图8 标记字体设置

从图7中可以看出,其中包括字体名称、字体大小、下画线、加粗等标记方式。标记字体程序如图9所示。

图9 标记字体程序

可以看到,最复杂的设置是对标记内容的组合与写入。这里先由Draw Pattern Matches Position函数读取各个记录点的坐标值,然后用一个字符串组合函数把标记和坐标值组合成一个标记字符串。最后由IMAQ Draw Text函数把组合好的标记信息直接写入图像界面中。整个标记程序如图10所示。

图10 完整标记程序

当第二帧执行完后,进入第三帧的图像大小设置。因为在前面查找的过程中,为了查找得更加精确,对图像进行了像素的放大,这里为了显示的方便,就需要对图像进行还原,这样才可以看得清楚。此处用了IMAQ Extract函数,对显示的图像进行放大和缩小,但是没有改变真正的图像。它的程序框图如图11所示。

图11 图像还原

4.程序前面板

当所有后面板程序编写完后,就要进行前面板控件布局。由于此程序中涉及的控件不多,所以很好设置整体布局。程序界面如图12所示。其中,“标签类型”是为了给标签进行不同的编号,在当前坐标前面加的一个前缀,这样更好区分不同的像素点。“最大数目”是查找出目标的最大限制。如果设置为40,则最多只能找出40个目标。当大于此值时,则将多出来的其他目标量忽略。

下面对查找时要放大的倍数进行设置,这里只是对二维的数据放大,所以在界面上设置两个值,一个是X,另一个是Y。前面板布局如图13所示。

图12 控制项设置

图13 放大设置

为了对系统的工作进行控制,需要设置4个按钮。它们分别如下:

— 开始采集:用于启动采集,完成整个任务的第一个动作,采集一张图片。

— 记录标记:用于对光标选择的区域进行记录,以识别设置像素。

— 开始查找:启动整个系统,对采集到的图片进行查找,找出相同像素并进行标记。

— 停止工作:系统停止工作。

界面布局如图14所示。

图14 按钮设置

接下来对查找后的图像进行显示,这是非常关键的一个步骤。这里还对查找到的总个数进行了统计,这样可以让人对查找结果一目了然,完整的前面板界面如图15所示。

图15完整界面

5.程序调试

程序编写完成后,要对系统进行软硬件的联机调试。这里把NI公司的USB摄像头和计算机连接,并在计算机上安装此软件工具包。具体操作如下:

(1)运行本程序,在摄像头下放置好一块电路板,并对其设置好焦距和亮度。单击“开始采集”按钮,对其进行采集,并显示实时采集到的图像,如图16所示。

(2)当采集完一次后,在界面上可以看到清晰的采集结果。此时我们用光标在需要进行识别的地方画出一个区域。此时光标变为绿色,表示用光标选中了要记录的像素。然后单击“学习标记”按钮,此光标消失,表示已经记录(学习)完成,如图17所示。

从图上可以看出,这里选中的是电路板上字母C,让程序学习记录,并找出界面上所有的字母C。

图16 图像采集

图17 设置学习区域

(3)记录学习完成后,就可以查找相同像素的点了。单击“开始查找”按钮后,程序开始在此图上查找记录的像素点,并以此像素点为标准,进行比对,找出相同的点。查找的过程中标出了各个点的坐标和编号。这里把标签类型设置为“A”,以Shift Invariant的方式查找,精度设置为700,最大数目设置为40。这样就可找出所有相同的元素。程序运行时如图18所示。

图18 查找结果

从图中可以看出,查找过程中,程序找出了所有字母 C,并标注了它们的坐标和标签。此处的标签有些不是端正的,主要是由于在对图片进行翻转查找时,按相应的角度找到后直接就标记了。如标签 A43(70,471)表示的意义如下:字母 A是对程序进行查找前设置的标签类型。4表示此图片翻转到第4次找到的,即第4个角度。3表示是此角度下的第3个点。(70,471)表示当前查找到像素的中心坐标,即此目标的 X=70,Y=471,坐标的值是从图像开始的左上角界面算起的。

同时可以看到界面的下面显示了图片的属性,如图片大小、位数等。最后还可以看到一个“已查找到总个数”本框,此处显示的是8个目标。这和图上标注的一样,也和实际完全相符。

(4)完成查找后,单击“停止工作”按钮中断此程序的运行。系统退出图像采集和处理环节。

四、实例总结

本例讲解了LabVIEW中图像处理方面的具体应用,主要对如何利用Vision工具包采集图像进行了详细的讲解。同时采集到图像后进行了各类复杂的运算,其中编程的思路也是笔者的经验展示,读者需要用心体会,掌握设置不同事件的合理运行顺序。

想要领取完整的LabVIEW视觉图像识别与处理学习文档,联系文章文末的助教老师微信领取。

责任编辑:xj

原文标题:纯干货分享!手把手教你工业图像视觉识别与处理

文章出处:【微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    8372

    浏览量

    281684
  • 图像处理
    +关注

    关注

    28

    文章

    1340

    浏览量

    59177
  • 视觉识别
    +关注

    关注

    3

    文章

    110

    浏览量

    17308

原文标题:纯干货分享!手把手教你工业图像视觉识别与处理

文章出处:【微信号:elecfans,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    图像采集卡:机器视觉时代的图像数据核心枢纽

    采集、转换、传输与初步处理,搭建起图像传感器(相机/摄像头)与计算机之间的高速数据链路。其核心价值在于解决“原始图像信号如何高效、精准、稳
    的头像 发表于 11-12 15:15 287次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:机器视觉时代的<b class='flag-5'>图像</b><b class='flag-5'>数据</b>核心枢纽

    蜂鸟E203怎样外部的摄像头进行数据传输?

    蜂鸟E203怎样外部的摄像头进行数据传输
    发表于 11-05 06:58

    蜂鸟处理器+OV5640摄像头模块开发

    步的图像处理做准备。 我们首先实现了摄像头采集模块和HDMI显示模块,随后将二者与蜂鸟结合,结合方式如下所示,虚线框中为我们添加的部分,同时对蜂鸟原来的外设
    发表于 10-31 07:59

    【CPKCOR-RA8D1】3.测试摄像头及屏幕

    ) bsp_sdram_init():初始化外部 SDRAM,为图像数据(如摄像头采集的帧数据)提供存储空间。 (2)I2C 主机初始化
    发表于 10-29 23:11

    【HZ-RK3568开发板免费体验】基于USB摄像头拍照

    普通文件样对其进行读写操作。 V4L2在include/linux/videodev.h文件中定义了一些重要的数据结构,在采集
    发表于 08-19 22:07

    请问如何通过 ADV7180 将 CCTV(模拟)摄像机与EZ-USB™ FX3 连接?

    对于我的应用程序,我需要通过 FX3 的 USB3.0 在 PC(主机)上实时传输CCTV 视频(附有监控摄像头图片) 。来自摄像机的 PAL 格式视频由 Analog Devices
    发表于 07-25 07:42

    图像采集卡的主要功能与应用

    图像采集卡是种安装在计算机内部(通常是PCIe插槽)或通过外部接口(如USB3.0,)连接的硬件设备。它的主要功能是将来自
    的头像 发表于 07-23 13:47 707次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡的主要功能与应用

    迅为RK3576开发板摄像头实时推理测试-ppseg 图像分割

    迅为RK3576开发板摄像头实时推理测试-ppseg 图像分割
    的头像 发表于 07-11 14:31 704次阅读
    迅为RK3576开发板<b class='flag-5'>摄像头</b>实时推理测试-ppseg <b class='flag-5'>图像</b>分割

    【VisionFive 2单板计算机试用体验】USB摄像头测试

    使用opencv测试USB摄像头、检测USB摄像头 插入USB
    发表于 07-06 23:14

    文读懂!图像采集卡是什么?它在工业/医疗/监控等多领域中的作用

    你有没有想过,在工业检测、医院手术室、安防监控这些高精度影像场景中,图像是怎么被“抓”进电脑里进行分析处理的?单靠摄像头就能搞定吗?其实并没那么简单,真正起到关键作用的,是
    的头像 发表于 05-13 13:35 1735次阅读
    <b class='flag-5'>一</b>文读懂!<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡是什么?它在工业/医疗/监控等多领域中的作用

    拖四USB摄像头同步采集方案:高效数据处理的革新突破

    在现代多摄像头应用场景中,高效的数据采集与实时处理是技术核心。基于USB接口的拖四多摄像头系统,通过
    的头像 发表于 04-25 15:20 944次阅读
    <b class='flag-5'>一</b>拖四<b class='flag-5'>USB</b>多<b class='flag-5'>摄像头</b>同步<b class='flag-5'>采集</b>方案:高效<b class='flag-5'>数据</b>处理的革新突破

    基于RV1126开发板实现网络摄像头方案

    在RV1126开发板上实现本开发实例,抓取摄像头数据图像送入编码器进行编码压缩、以及把压缩后的数据通过RTSP协议发送出去的简单核心示例。 若用户需要
    的头像 发表于 04-21 14:56 1312次阅读
    基于RV1126开发板实现网络<b class='flag-5'>摄像头</b>方案

    嵌入式学习-飞凌嵌入式ElfBoard ELF1板卡-开发板适配之USB摄像头

    使用480x272分辨率LCD屏测试)和Webcam C270 USB摄像头,使用tftp将内核镜像和设备树加载到内存,进行测试。 、输入命令进行
    发表于 03-06 09:08

    飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之USB摄像头

    )和Webcam C270 USB摄像头,使用tftp将内核镜像和设备树加载到内存,进行测试。、输入命令进行YUV模式
    发表于 03-05 15:41

    基于RK3588的AI摄像头应用解决方案

    随着人工智能(AI)技术的快速发展,越来越多的视频监控系统开始直接在摄像头上部署AI分析,视频监控从早期的图像记录发展到如今具备AI运算能力和算法,可
    的头像 发表于 01-16 17:19 1090次阅读
    基于RK3588的AI<b class='flag-5'>摄像头</b>应用解决方案