碧波液压网 欢迎你,游客。 登录 注册

基于Labview和Matlab的指针式仪表的自动监控程序

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  

  一、 引言

  随着技术的提高,仪器越来越先进,一般的数据采集仪器或采集卡都自带了与电脑的接口,如网络分析仪和频谱仪等的GPIB接口,一般采集卡的RS232 口,以及USB接口等等。但以前的一些比较旧的设备,特别是指针式仪表等等,没有接口,因而无法与电脑通讯,只能人为的读取表值,这严重的影响了整个系统的效率。

  摄象头监控技术的应用十分广泛,也可以应用到实验监控系统中,得到图象处理方法也有很多,一般采用图象处理功能比较强大的Matlab软件,可以有效的去除干扰数据,然后对指针数据进行判断,得到当前指针的读数。而虚拟仪器的显示则采用Labview软件,采用与指针仪表相对应的表或显示仪器,显示出当前指针值。

  二、 程序设计与流程

  首先,利用摄象头自带驱动程序中的动态链接库文件,如AVICAP32.dll,加上WIN的API,或者正确安装了摄像头驱动后,在Labview 中调用其控件,这样就可以正确的使用摄像头,如要存储图片可以先SendMessage发送命令给控件,再用Clipboard的getdata将图片读出。

  其次,得到当前图象后,利用Matlab中图象处理函数对图象进行预处理,因为仪表结构或环境不同,所以处理的方法或函数的参数也不尽相同,一般是通过实验测试,得到误差较小的黑白图象。Matlab中常用的图象处理函数有imread,imwrite,im2bw,RGB2GRAY等,其中 imread函数是将图象读入到一个三维数组中,前两个数据表示坐标,最后一组数据表示当前点的颜色,im2bw是将图象数据转换为黑白的,变成了二维数组,输入参数有Level,表示对图象的敏感度,当Level取不同值后得到不同的黑白图 。

  数据的处理最关键的就是要判断指针的位置,下面函数就是寻找指针线,如果图片数据转换时少了数据点的,经过判断自动加上。

  for m=1:FindLineNumber-1

  Linesize=size(find(FindLine(m,:,1)>0));

  if Linesize(2)>=Ly-j %前面已经没数据

  tempi=FindLine(m,Ly-j,1);

  tempj=FindLine(m,Ly-j,2);

  if tempi>1 & tempi

  if BW(tempi,j)==0%有数据

  FindLine(m,Ly-j+1,1)=tempi;

  FindLine(m,Ly-j+1,2)=j;

  InLine=1;

  end

  %同理判断周围其他各点

  if InLine==0 %说明没找到,看下一点

  NextL=find(BW(tempi-2:tempi+2,j-1)==0);

  if isempty(NextL)==0 %补上缺点

  FindLine(m,Ly-j+1,1)=tempi-2+NextL(1);

  FindLine(m,Ly-j+1,2)=j;

  end

  end

  end

  end 

  图一、原始图形与Level取0.71,0.72,0.73,0.74,0.75,0.76,0.77,

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签: MATLAB LabVIEW
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论