xxxxxx 通信工程系毕业设计论文
图3-14 Overlay模块
Overlay Points—在图像上覆盖一点或一组点。 Overlay Line—在图像上覆盖一条线。 Overlay Bitmap—在图像上覆盖一位图。 Overlay Text—在图像中覆盖文字。
3.NI IMAQ I/O模块
用于Vision采集图像的输入和输出。如图3-15所示。
图3-15 NI IMAQ I/O模块
3.3 LabVIEW应用
3.3.1 创建虚拟仪器
就以一个简单的波形显示其来说明虚拟仪器的创建。这个波形显示器利用公式框节点计算函数y=sin(x),来将波形显示出来。如图3-16所示。
图3-16 波形显示器前面板
27
xxxxxx 通信工程系毕业设计论文
1.前面板
用File菜单的New选项打开一个新的前面板窗口,把波形显示部件(在Control中Graph子模版下选择Waveform Chart节点)放入前面板窗口,然后更改节点标签和X、Y轴标签,最后右建单击显示部件,选中Visible Items中的Graph Palette,打开显示部件的控制按钮。
2.框图程序
框图程序是由节点、端点、图框和连线四种元素构成的。
节点类似于文本语言程序的语句、函数或者子程序。LabVIEW有两种节点类型,分别是函数节点和子VI节点。两者区别在于:函数节点是LabVIEW一编译好了的机器代码供用户使用的,而子VI节点是以图形语言形式供用户使用的。用户可以访问和修改任一子VI节点的代码,但无法对函数节点进行修改。节点都提供与外部调用者之间的接口,称为端口。
端点是只有一路输入/输出,且方向固定的节点。LabVIEW有三类端点:前面板对象端点、全局与布局变量端点和常量端点。对象端点是数据在框图程序部分和前面板之间传输的接口。一般来说,一个VI的前面板上的对象都在框图中有一个对象端点与之一一对应。当在前面板创建或删除面板对象时,可以自动创建或删除相应的对象时,控制对象的端点在框图中是粗框框住的。
图框是LabVIEW实现程序结构控制命令的图形表示。如循环控制、条件分支和顺序控制等,编程人员可以使用它们控制VI程序的执行方法。
连线是端口建的数据通道,它们类似于普通程序中的变量赋值过程。数据是单向流动的,从源端口向一个或多个目的端口流动。不同线形代表不同数据类型。每种数据类型还以不同颜色强调。
3. 从框图程序窗口创建前面板对象
用选择和连线工具,你都可以用鼠标右键点击任一节点和端点,然后从弹出菜单中选择“创建常数”,“创建控制”,或“创建显示”等命令。LabVIEW会自动地在被创建的端点与所点击对象之间接好连线。
4. 数据流编程
控制VI程序的运行方式叫做“数据流”。对一个节点而言,只有当它的所有 输入端口上的数据都成为有效数据时,它才能被执行。当节点程序运行完毕后,它把结果数据送给所有的输出端口,使之成为有效数据。并且数据很快从源送到目的端口。
如图3-17所示,这个VI程序把两个输入数值相乘,再把乘积减去50.0。这个程序中,框图程序从左往右执行,这个执行次序不是由于对象的摆放位置,而是由于相减运算函数的一个输入量是相乘函数的运算结果,它只有当相乘运算完成并把结果送到减运算的输入口后才能继续下去。请记住,一个节点(函数)只有当它所有的输入端的数据都成为有效数据后才能被执行,而且只有当它执行完成后,它的所有输出端口上的数据才成为有效。
28
xxxxxx 通信工程系毕业设计论文
图3-17
3.3.2 程序调试技术
1. 找出语法错误
如果一个VI程序存在语法错误,则在面板工具条上的运行按钮将会变成一个折断的箭头,表示程序不能被执行。这时这个按钮被称作错误列表。点击它,则LabVIEW弹出错误清单窗口,点击其中任何一个所列出的错误,选用Find功能,则出错的对象或端口就会变成高亮。
2. 设置执行程序高亮
在LabVIEW的工具条上有一个画着灯泡的按钮,这个按钮叫做“高亮执行”按钮上。点击这个按钮使该按钮图标变成高亮形式,再点击运行按钮,VI程序就以较慢的速度运行,没有被执行的代码灰色显示,执行后的代码高亮显示,并显示数据流线上的数据值。这样,你就可以在根据数据的流动状态跟踪程序的执行。
3. 断点与单步执行
为了查找程序中的逻辑错误,你也许希望框图程序一个节点一个节点地执行。使用断点工具可以在程序的某一地点中止程序执行,用探针或者单步方式查看数据。使用断点工具时,点击你希望设置或者清除断点的地方。断点的显示对于节点或者图框表示为红框,对于连线表示为红点。当VI程序运行到断点被设置处,程序被暂停在将要执行的节点,以闪烁表示。按下单步执行按钮,闪烁的节点被执行,下一个将要执行的节点变为闪烁,指示它将被执行。你也可以点击暂停按钮,这样程序将连续执行直到下一个断点。
4. 探针
你可以用探针工具来查看当框图程序流经某一根连接线时的数据值。从Tools工具模板选择探针工具,再用鼠标左建点击你希望放置探针的连接线。这时显示器上会出现一个探针显示窗口。该窗口总是被显示在前面板窗口或框图窗口的上面。在框图中使用选择工具或连线工具,在连线上点击鼠标右键,在连线的弹出式菜单中选择“探针”命令,同样可以为该连线加上一个探针。
29
xxxxxx 通信工程系毕业设计论文
第4章 用LabVIEW采集图像并合成3D图像
4.1 LabVIEW图像采集分析概述
4.1.1 图像采集
LabVIEW提供了多种图像采集的方法。其中NI公司的视觉采集软件提供的驱动和函数,既能够从数千种连接到NI接收器上的不同相机上采集图像,也能够从连接在PC、PXI系统或笔记本计算机上标准端口的IEEE1394和千兆位以太网视觉相机采集图像。在推出用软件的基础上,NI公司又推出了图像采集卡,对于NI公司的图像采集卡,可以直接使用采集卡自带的驱动以LabVIEW中的DAQ库直接对端口进行操作。但由于NI公司的图像采集卡成本很高,大多用户难以接受,因此硬件平台往往采用通用图像采集卡,软件方面的处理程序仍采用LabVIEW以及视频处理模块编写。文正是基于这样的目的,提出了一种在LabVIEW环境下驱动通用图像采集卡的方案,在TDS642EVM高速DSP视频处理板卡的平台下,完成实时图像采集及处理。
闻亭公司TDS642EVM(简称642)多路实时视频处理板卡是DSPTMS320DM642芯片设计的评估开发板。计算能力可达到4Gips,板上的视频接口和视频编解码芯片PhilipsSAA7115H相连,实现实时多路视频图像采集功能,支持多种PAL,NTSC和SECAM视频标准。本系统通过642的PCI接口与主机进行数据交换。PCI支持“即插即用(PnP)”自动配置功能,使图像采集板的配置变得更加方便,其一切资源需求的设置工作在系统初启时交由BIOS处理,无需用户进行繁琐的开关与跳线操作。PCI接口的海量数据吞吐,为其完成实时图像采集和处理提供保证。
图像采集的过程也就是图像采集板卡对来自CCD的标准视频信号(PAL制式)进行模数转换的过程,将量化后的数据通过PCI总线传入计算机内存,然后通过编制的应用程序读取显示。
图4-1 图像采集示意图
如图4-1所示,模块实现的功能是把由摄像头输入的模拟视频转换成为BT.656标准的频数据流。在本系统中,摄像头输出PAL制的模拟视频,通过CVBS接口输入到ADV7181B中。与视频解码器的接口分为:数据接收部分和控制部分。数据接收部分的数据宽度为8位,D0到D7;控制部分即I2C模块,接口为SCLK和SDA。视频信号采集模块(FPGA+SRAM):BT.656数据传输到FPGA以后,FPGA
30
xxxxxx 通信工程系毕业设计论文
要对输入的数据进行预处理,再传送给DSP进行处理。预处理的目的是把BT.656数据流中的Y,Cb,Cr信号分别提取出来,用SRAM作为缓存,再传送给DSP进行处理。FPGA中主要有三个接口:与视频解码器的接口,与DSP的接口以及与SRAM的接口。
对于采集的数据,可以采用以下的一种图像缓存方案:FPGA把获得的一帧图像的数据保存到SRAM中,同时DSP从另外一块SRAM中读取数据。这样,在第一次采样时,FPGA将从ADV7181B中获得的数据保存到SRAM中,此时DSP处于等待状态。第一次采样结束后,DSP与FPGA进行总线切换,分别连接到与上次不同的SRAM上,此时DSP开始读数据,FPGA开始采数据。每当DSP与FPGA完成各自的任务时,DSP与FPGA进行总线切换,交换连接的SRAM,从而实现帧的连续采集。
视频信号处理模块(TMS320C6713):TMS320C6000的开发主要面向数据密集型算法,有着丰富的内部资源和强大的运算能力,所以被广泛地应用于数字通信和图像处理等领域。
视频采集应用程序由LabVIEW编制完成。在需要进行图像采集时,LabVIEW发送读取SDRAM中存储的YCbCr格式图像数据的请求,642获得请求后,开始采集图像并将采集到的YCbCr数值存储到相应的内存地址,在642完成整一帧的图像采集之后,将SDRAM中的标志变量Sem设定为0,LabVIEW在这个过程中循环读取标志变量的值,当为0时,则从SDRAM中获得图像数据,也就是Y,Cb,Cr三个数组的数据,然后将其转化为LabVIEW能够显示的标准RGB格式输出该图像。
4.1.2 图像处理
图像处理也可以称作视觉处理。LabVIEW提供了多种图像处理的方法。其中非常常见的是通过调用MATLAB图像处理程序。MATLAB具有强大的科学计算功能大量稳定可靠的算法库集数值分析矩阵运算信号处理和图形显示于一体针对不同领域的应用具有信号处理图像处理神经网络等几十个专用工具箱MATLAB的缺点在于界面开发能力较差并且数据输入网络通信硬件控制等方面都比较繁琐。
基于以上理由利用混合编程技术在LabVIEW中调用和操作MATLAB就可以相互补充充分发挥两者的优势开发出高效率的虚拟仪器。
LabVIEW和MATLAB混合编程的实现主要有以下几种方法:
1.利用节点调用算法。
在MATLAB Script节点中用户可以编辑MATLAB程序也可以直接调入已经存在的MATLAB程序并在LabVIEW环境下运行用户可以很方便地在自己的LabVIEW应用程序中使用MATLAB编写的算法和功能丰富的工具箱。MATLAB Script节点对输入输出数据的类型有明确的要求目前两者之间的数据通信仅支持Real Vector、Real Matrix、Complex、Vector、Complex、Matrix六种格式的数据而且还必须根据具体情况进行选择。用该方法实现LabVIEW与MATLAB的混合编程简单实用其缺点是没有脱离MATLAB的环境而只是将它在后台执行所以这种方法必须在计算机中安装有MATLAB。
2.利用COM组件调用MATLAB算法。
COM技术的核心就是二进制接口规范此规范独立于编程语言和操作系统从MATLAB6.5开始增加MATLAB COM Builder功能它可以帮助用户将用M语言开发的算法自动快速地转变为独立的OM组件对象生成的COM组件对象可以在任何支
31

