学术堂首页 | 文献求助论文范文 | 论文题目 | 参考文献 | 开题报告 | 论文格式 | 摘要提纲 | 论文致谢 | 论文查重 | 论文答辩 | 论文发表 | 期刊杂志 | 论文写作 | 论文PPT
学术堂专业论文学习平台您当前的位置:学术堂 > 计算机论文 > 数字图像处理论文

能在投影屏上留下线条的激光笔系统设计

来源:学术堂 作者:姚老师
发布于:2014-05-22 共4639字
论文摘要

  0、引言

  随着人类进入信息化社会,教学环境的规模在不断扩大。多媒体技术广泛应用于教师的授课。在使用多媒体技术进行授课的过程中,激光笔作为辅助设备几乎是每个教师所必备的。目前市场普通的激光笔只能实现翻页和激光显示的简单功能,通常教师都会使用它来投映一个光点到屏幕上指示信息。但是在教师使用激光笔时,若想强调某一处文字,这种普通的激光笔的局限性显露无遗。普通的激光笔只能起指示作用,却不能在投影屏幕上留下强调的痕迹,即不能在投影屏上留下线条。而基于图像处理的划线激光笔可以解决这种问题。

  划线激光笔的实现原理是:首先使用摄像头拍摄投影屏幕,获取整个投影屏幕的图像,识别分析出每一帧图像中光点的位置坐标,再用软件编程用直线连接前后两帧光点,实现在投影屏幕上划线的功能。在激光光点检测的过程中用到了图像灰度变换、阈值分割、开运算等图像预处理方法以及质心法求解光点坐标。在软件部分采用WindowsAPI函数产生具有鼠标穿透效果的透明窗体在划线的同时仍可以进行其他鼠标键盘操作。本系统在摄像头前加入绿色滤光片,增强对激光光点识别的准确率,滤除杂散光,提升了系统的信噪比和准确度。

  1、系统原理

  基于图像处理的划线激光笔为授课教师提供一种辅助措施,他们在使用多媒体授课时,可在投影屏上进行轨迹绘制,解除传统激光笔对教师的限制,使教学更加生动活泼。划线激光笔的设计遵循实用、便利的原则,使学生和教师都感到自然亲切,使投影屏幕具有像黑板一样可以“写字”的功能。

  基于图像处理的划线激光笔由摄像采集模块与投影屏幕显示模块组成。其系统结构如图1所示。

  教师通过划线激光笔,在投影屏幕上留下激光光点,由绿色滤波片和摄像头获取投影屏幕的图像,图像传输给授课电脑,电脑通过激光光点识别算法获取图像每一帧中的光点位置,把光点位置变换为光点在投影屏幕的实际位置,进行轨迹绘制。结果通过投影仪在投影屏幕上显示出来。图2给出了划线激光笔的系统流程图。

  论文摘要

  2、摄像头的选择及标定

  (1)摄像头的选择

  系统采用USB2.0摄像头作为视频采集装置。采用标准CS接口的镜头,并可以在镜头和摄像头连接处加装滤光片。

论文摘要

  (2)摄像头标定

  由于摄像头采集的图像存在畸变,需要对采集到的图像进行畸变校正;使用时需要识别出光点位置在投影图像中的相对坐标,因此需要对系统进行标定。在摄像头标定的过程中应考虑到摄像头的径向畸变,这里所讨论的划线激光笔对于精度的要求不是非常高,受摄像头径向畸变所带来的误差在实际应用中影响很小。主要考虑由于摄像头光轴无法垂直于投影屏表面引起的透视畸变。

  本系统采用校正的模型为:a(x,y)=c1x+c2y+c3xy+c4b(x,y)=c5x+c6y+c7xy+c8(1)其中(x,y)为校正前图像坐标,(a,b)为校正后图像坐标。共需要用4对总共8个相互对应的点来求取参数。拍摄图像,利用图像的4个角点作为校正参数点。获取图像中校正前的校正点图像坐标,设定其校正后的坐标,建立方程组可求出式(1)中的参数c1~c8。

  则每次在图像面获得的坐标(x',y')对应投影屏幕中所处的实际坐标为(X,Y)其中:X=C1x'+C2y'+C3x'y'+C4Y=C5x'+C6y'+C7x'y'+C8

论文摘要

  为了获取图像平面上4个角点的坐标,使投影屏幕显示一幅白色背景图像。摄像头采集到的图像经灰度化二值化后获得边缘点,并通过边缘点拟合直线,求出角点坐标。

  3、图像预处理

  图像经过摄像头采集后,为了能更好地检测出光点的位置,在提取坐标之前需要对图像进行预处理。图像预处理主要包含:图像灰度化、阈值分割、二值图形态学运算。

  (1)图像分割

  摄像头采集到的图像经过灰度变换后灰度图中仍含有与光点无关的信息,为了能准确提取光点位置信息,必须去除其他无关的信息。对灰度图像进行阈值分割转化为二值图像,去除无关信息。设一幅图像f(x,y),其灰度范围为[t1,t2],如果给定一个阈值T论文摘要

  f(x,y)为灰度图中(x,y)点像素的灰度值;T为规定的阈值;g(x,y)为阈值二值化后该点像素值,只能取0或255。本系统采用自定义阈值分割法。自定义阈值分割法通常用在被提取物体与背景灰度值区别较大的情况。激光笔通常在教室里使用,教室环境简单光照均匀,光点与背景亮度存在很大的差异故使用自定义阈值分割会达到较好效果。如图5光点灰度直方图所示。通过观察发现光点的灰度值主要集中在归一化灰度值的0.7以上。故选取0.7作为阈值进行阈值分割。

  论文摘要

  (2)图像的形态学处理

  图像经过阈值分割变为二值图以后,二值图中仍存在少量空洞和噪点,这会干扰对光点坐标的提取,这时需要对图像进行形态学处理,使二值图中最后只保留光点图像。常见的形态学运算有腐蚀、膨胀、开运算、闭运算。腐蚀具有收缩图像和消除图像中比结构元图像小的成分的作用。可以使相互粘连的物体分开,可以消除图像中的小颗粒噪声。膨胀具有扩大图像或填充比结构元图像小的成分的作用。连接图像中相邻的物体或目标区域,可以填充小孔或者狭缝。开运算使用同一个结构元图像对目标图像先进行腐蚀运算,再进行膨胀运算。开运算可以去除较小的明亮细节,保持整体的灰度级和较大的明亮区域不变。闭运算与开运算相反,先进行膨胀运算,再进行腐蚀运算。闭运算可以去除图像中暗细节部分,相对地保持明亮部分不受影响。

  经过灰度阈值分割后的图像如图6所示,可以明显地看到图中除含有激光光点外,还含有不少小的颗粒噪声。通过开运算的方法先腐蚀掉图像中较小的颗粒点而不破坏光点的完整性,再通过膨胀使光点面积增大便于后续对其坐标进行提取。经过开运算后的图像如图7所示。与图6相比只保留了光点的图像,其他噪声部分被开运算剔除,并且光点的完整性没有遭到破坏。

  论文摘要

  (3)质心法提取光点坐标

  光点每一帧图像经过预处理之后变为只含有光点信息的二值图像,需要从中提取出激光光点的坐标,采用质心法,提取光点几何形状的质心作为光点的坐标。质量中心简称质心,指物质系统上被认为质量集中于此的一个假想点。与重心不同的是,质心不一定要在有重力场的系统中。值得注意的是,除非重力场是均匀的,否则同一物质系统的质心与重心通常不在同一假想点上。在一个N维空间中的质量中心,坐标系计算公式为:论文摘要

  mi表示物质系统中,某i质点的质量。xi表示物质系统中,某i质点的坐标。

  对离散化的数字图像:

论文摘要

  论文摘要

  4、VB与MatLab混合编程

  划线激光笔的软件部分由两部分组成,即图像处理部分和划线部分。图像处理部分采用MatLab进行编程。MatLab具有强大的图像处理功能,方便快速实现各类图像处理算法。划线部分采用VB语言进行编程。VB作为一门简单易用的编程语言诣在迅速开发出应用程序。最后通过VB与MatLab混合编程的方法将两者结合在一起。

  (1)MatLab编程

  基于图像处理的划线激光笔图像处理部分通过MatLab编程实现,主要包含两个步骤。

  ①视频对象的创建

  对摄像头编程需要知道摄像头的各项参数,因此MatLab的工具箱提供了imaqhwinfo()函数,来获取PC上以安装的图像获取硬件信息。使用函数obj=videoinput(adaptorname,deviceID,format)创建视频输入对象。

  ②图像的获取及坐标计算

  getsnapshot(obj)用于截取图像。se=strel(shape,parameters)进行结构元素的生成。imopen(image,se)进行开运算。

  ③质心法

  根据视频格式的高和宽产生以高为行,宽为列的两个大小相同的矩阵。用生成的两个矩阵分别与原图像作积,把作积后的图像求矩阵和再与原图像的矩阵和作商计算出坐标值(x,y)为质心坐标,即光点坐标。

  (2)VB编程

  VB软件编程主要包含两部分,即Windows窗体绘制轨迹与VB、MatLab混合编程部分。通过三个调用WindowsAPI函数GetWindowLong、Set Window Long与Set Layered Window Attributes,实现窗体的透明特性。Get Window Long(HWNDhWnd,intnlndex)函数用于获得有关指定窗口的信息。SetWindowLong(HWNDhWnd,intnlndex,LONGdw New Long)函数用来改变指定窗口的属性。SetLayered Window Attributes(HWNDhwnd,COLORREFcrKey,BYTEbAlpha,DWORDdwFlags)函数为透明窗体函数。bAlpha是不透明度。dwFlags是透明方式,可以取两个值:当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;当取值为LWA_COLORKEY时,窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。当取两个值的组合:LWA_ALPHA Or LWA_COLORKEY时,crKey的地方将变为全透明,而其他地方根据bAlpha参数确定透明度。

  透明窗体的产生及划线的实现方法:

  ①首先通过GetWindow Long函数获得窗口初始化的扩展窗口风格。

  ②把WS_EX_LAYERED透明扩展窗口风格赋值给变量。

  ③通过SetWindowLong函数设定窗口的风格设置成透明扩展窗口风格。

  ④获取之前设定的透明窗体的句柄,利用SetLayered Window Attributes函数。将第二个参数掩码颜色选择为当前窗体的背景色。当第四个参数值为LWA_COLORKEY时,窗体中的所有颜色为背景色的地方将变为透明也就是背景变透明,此时第三个参数无效。

  ⑤最后通过Move函数使窗体全屏显示起到一个“画板”的功能,同时鼠标可以“穿透”窗体执行操作。

  ⑥将每次求出的光点坐标传递给Line函数。Line函数的功能为用直线连接两个指定坐标的点。每画完一条直线将本条直线终点坐标赋值给起点坐标,将终点坐标作为下一条直线的起点坐标,依次连接每个点复原光点所走过的轨迹。

  软件界面包含划线、清屏、停止划线、调节颜色、调节线条粗细等功能。每项功能通过用户触发相应的事件,跳转到相应的代码段执行操作。在界面窗体装载时执行SetWindowPosWindowsAPI函数。该函数为窗体置顶函数,通过调用该函数可以使软件界面窗体保持在所有窗体之上,不会因为鼠标键盘事件而被其他窗体覆盖,更加人性化,使用户操作更加方便。图9显示了软件的界面。

论文摘要

  (3)VB与MatLab混合编程

  使用MatLab的combuilder工具进行混合编程。com是componentobjectmodule的简称,它是一种通用的对象接口,任何语言只要按照这种接口标准,就可以实现调用,该方法实现简单,通用性强,而且几乎可以使用MatLab的任何函数。这也是Mathworks公司推荐的使用方法。MatLab工具箱中提供了deploytool工具。该工具通过C++编译器将多个M文件以类的形式进行编译封装。每个M文件以函数的形式封装成类方法。打包成com组件的形式,即生成dll(DynamicLinkLibrary)动态链接库,供VB调用。

  混合编程实现的实现方法:

  将上述视频对象的创建、图像的获取及坐标计算封装成类的形式。

  在VB中声明类并实例化类的对象。

  在软件启动后调用实例化对象中的视频对象创建方法创建视频窗口。

  在VB中创建定时器Timer控件,设置定时器计时时间,当定时器计时溢出时调用对象中的图像的获取及坐标计算方法计算出坐标传递给Line函数划线。

  5、结语

  系统经过测试,激光笔的响应速度很快,实时性好,能完美处理30帧图像,绘制出的轨迹线条自然、柔和。划线激光笔作为辅助教学工具能够丰富教学手段,使教师授课更加生动,保证了教师授课的连续性。通过使用USB摄像头和绿色滤光片,降低了系统成本,提升了系统识别率。该系传统对于显示设备没有特殊要求,只需设备能显示光点的轨迹即可,不会对显示设备产生其他影响。使用USB摄像头使该系统具备了即插即用的特性,使这套系统的使用场所不仅仅局限于教室,提高了系统的实用性。

  参考文献:
  [1]刘芳,林学訚,史元春.基于激光笔的远程人机交互技术[J].中国图形图像学报,2003,11(8):1356~1360.
  [2]刘钢,陈笑怡,李丹立.基于USB摄像头的激光笔辅助教学系统的设计与实现[J].计算机应用与软件,2011,10(28):77~79.
  [3]赵国立.基于激光笔交互的光笔手绘技术研究[D].河北:燕山大学硕士学位论文,2011:16~28.
  [4]曹茂永.数字图象处理[M].北京:北京大学出版社,2007.9.

相关标签:
  • 报警平台
  • 网络监察
  • 备案信息
  • 举报中心
  • 传播文明
  • 诚信网站