




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要设计了一种针对洗涤流水线上的织物进行污点检测的软件系统。该系统硬件装置主要由摄像机、采集卡、计算机、扬声器等部分组成。系统软件在VisualC+6.0环境下利用OpenCV视觉库函数开发,主要由参数设置、图像采集、图像预处理、污点检测和输出报警等模块组成。给出了系统污点检测的流程。首先,对采集到的图像进行预处理,再利用图像的像素特征统计和帧差法找出合适的污点与背景的分割阈值,最后在白色亮矩形框中将检测出的污点圈出。在实验室环境下进行了实验验证。实验结果表明,该软件对模拟流水线上织物的污点识别率达到51.32%,检测错误率为45.01%,漏检率为48.66%。识别准确性达到了系统的设计初衷。关键词计算机视觉,污点检测,图像处理,像素统计法AbstractTodesignasoftwaresystemfordetectingthefabricstainsonWashingline.Thesystemhardwaredevicesarethecompositionofcamcorders,capturecards,computers,speakersandotherparts.SystemsoftwareisusedvisionlibraryofOpenSourceComputerVisionLibraryfunctiondevelopmentundertheenvironmentofVC6.0,Itismainlysetbyparameters,imageacquisition,imagepreprocessing,suchasstaindetectionandalarmoutputmodules.Itgivestheprocessesofthestainsdetectionsystem.firstly,Itcollectedimagepreprocessing,andthenitistofindtherightspot,andbackgroundsegmentationthresholdbyusingoftheimagepixelsfeaturestatisticsandframedifferencemethod.Finally,itwilldetectstainscircleinbrightwhiterectangularbox.thelastthingistodotheexperimentalverificationinthelaboratoryenvironment.Experimentalresultsshowthatthesoftwareforthesimulationofthepipelinestainfabricrecognitionratereaches59.38%,itreaches2.05%forthedetectionerrorrate,andreaches1.24%forthemissingrate.Recognitionaccuracyhasmetthesystemaboutwhatithadbeendesigned.KeywordsComputerVision,StainsDetection,ImageProcessing,PixelStatistics目录1引言.11.1课题研究背景及意义.11.2国内外研究与发展现状.11.3主要研究内容.21.4论文结构.22视频污点检测技术.32.1视频采集.32.2图像预处理技术.42.2.1图像去噪.52.2.2图像增强.62.2.3图像二值化.72.2.4“腐蚀膨胀”算法.82.3洗涤生产线污点检测算法.92.3.1模板匹配算法.92.3.2图像变换滤波法.92.3.3像素特征统计法.102.3.3帧差法.102.4视频污点检测方法.103软件详细设计.103.1软件需求分析.103.2开发环境.113.3系统各模块设计.113.3.1系统模块概述.113.3.2图像采集模块.123.3.3图像处理模块.123.3.3洗涤流水线纺织品污点检测.123.4程序运行流程.123.4.1系统初始化.133.4.2参数设置.133.4.3截图功能的实现.143.5多线程编程.143.6检测功能的实现.164视频污点检测实验.164.1实验环境与设备.164.2实验步骤.174.3污点检测结果.194.4实验分析.194.4.1系统准确度分析.194.4.2系统可靠性评价.20结论.21致谢.22参考文献.23附录A:软件操作说明书.25A1安装及配置说明.25A1.1大恒图像采集卡安装配置.25A1.2OpenCV1.0的安装及配置.27A2软件操作说明.29附录B:主要代码.32B1系统INI文件操作.32B2污点检测主要代码.331引言1.1课题研究背景及意义近年来,随着计算机以及图像处理技术的高速发展,视频监控技术已经被广泛的应用于各个领域。由于视频监控具有节约成本,控制操作简单方便等优点,目前,在检验检疫、环境保护、银行系统、工业生产和家庭监控等都有所应用。产品质量检测是视频监控中的重要研究内容,主要是针对生产流水线上的产品进行图像采集,然后经过图像处理,检测出不符合质量要求的产品。利用机器视觉的产品检测方法能很好地克服人工检测的一些缺点,例如:视觉疲劳、视觉范围的局限性等1。然而,目前视频监控技术在洗涤流水线污点检测的应用还很少。如果视频监控技术可以应用到污点检测领域,则既可以减少洗涤生产线所需要的成本,又避免了前述的人工检测的缺点。本课题的研究目的就在于为开发具有低成本高质量的、适合我国洗涤流水线的污点检测系统。1.2国内外研究与发展现状视频检测是计算机视觉领域里研究的热点,因其拥有很广阔的研究背景及应用前景,从而使得其备受国内外研究人士的关注。从国外来看,自美国的“9.11”事件和西班牙马德里列车连环爆炸等恐怖袭击之后,视频监控系统的需求逐渐增加。瑞典Axis公司研制出的AXIS242SIV视频服务器2,它采用特殊DSP芯片,该芯片用于处理图像方面具有非常强大的功能。该企业同时还研制出了基于智能视频应用的AXISIVM120软件2,该软件可以自动统计进/出特定地域的人数。此外,美国VERINT公司提供了智能视频分析解决方案Nextiva2,该方案在智能分析方面可以符合了不同行业及部署环境的用户的不同要求。卡内基梅隆大学与戴维萨尔诺夫研究中心等几家机构一起研发制作了监控系统VSAM2。VSAM是一种主要应用于城镇监控与战场的自动视频监控理解技术,该技术可以大大降低战争中人力监控费用并且实现了对一些危险或者人为无法涉入等场合的监控。英国的雷丁大学对车辆及行人的跟踪的做了相关研究3;IBM与微软等公司采用基于机器视觉的根据手势来识别技术4;马里兰大学开发的实时视觉监控4W系统5,它不但可以定位人和分割人的身体部分,而且可以根据外观模型实现多人追踪,此外该系统还可以对人与人之间简单的交互进行监控。着眼于目前的发展情况,美国以及欧洲区等国家已经掌握了大部分智能视频监控技术。据调查报告显示,智能视频监控的市场在世界范围内拥有35%36%的占有率,此中美国所占比例有9%左右6。从国内来看,在基于机器视觉的智能监控范畴,目前已经有很多高等院校与研究机构对此进行了研究,并取得了丰富的研究成果。其中,北京中科院研究所模式识别实验室选用根据三维线性模型来定位和根据扩展卡尔曼滤波器对车辆跟踪算法对交通实施了监控。在基于运动的视觉监控领域,对行为模式识别进行了深入探索,并取得了一定的成就7。湖北工业大学在纺织品瑕疵检测系统的硬件选择和安装方法上做了相应的研究,通过实行对移动布匹等时间采样,并对其进行预处理和提取图像特征值,再利用模板匹配的SSDA算法得出瑕疵数量。但该方法在采样时要确定织物的移动速率8。华中科技大学的龚艳军在自动验布机的研究中给出了硬件图像采集卡是如何设计的,小波的方法如何在软件应用中实施,以及利用BP神经网络如何分类的9。1.3主要研究内容本文的主要研究内容包含了:(1)图像预处理的技术:针对采集卡采集到的图像,为了更好的识别污点与非污点的特征,需要对图像进行预处理,利用均衡化技术、图像灰度化、图像二值化等进行污点特征值提取。(2)污点检测算法的研究:如何利用经过预处理的图像来更好的检测出污点,需要对一些检测算法进行研究。论文分析研究了模板匹配法、等算法,在基于视频污点检测的洗涤生产线上,xx和yy相对来说较简单,准确性较高,可以满足实际要求。(3)基于OpenCV的污点检测软件开发。该软件能够检测出洗涤生产线的织物污点。软件界面采用MFC设计,视频图像由大恒图像采集卡采集,图像的处理则利用OpenCV库函数来实现。(4)实验。在实验室环境下进行了模拟洗涤生产线污点检测实验验证。实验结果表明检测准确性达到了系统的设计初衷。1.4论文结构本文主要是针对洗涤流水线上的无污点进行检测的研究,论文结构如下:第一章主要介绍了课题的研究背景和国内外的研究现状,并概括了本文的主要研究内容。第二章论述污点检测技术的研究,指出了对采集到的图像进行处理的一些技术,以及可以应用于污点检测的一些算法,最后总结最优方案即本软件所选用的技术和算法。第三章介绍了本软件的设计,阐述了该软件的需求分析,重点论述了系统的组成、各模块的功能以及部分功能如何实现。第四章论述了污点检测实验,包括软件实验环境、实验设备、检测结果以及实验分析。最后是总结、致谢以及附录,该部分对论文进行全面的总结,介绍了软件使用的方法以及主要功能代码。2视频污点检测技术2.1视频采集污点检测的实现需要图像的清晰度比较高,而图像和视频的清晰度主要由摄像机的分辨率和PC端的解析能力来决定。另外,好的传输介质可以减少图像在传输过程中所造成的失真。因感光芯片的性能决定了摄像机的清晰度,所以在选择上一定要慎重。感光芯片有CCD与CMOS两类,考虑到CCD传感器比CMOS传感器在灵敏度、分辨率、噪声控制等方面都好,所以大部分摄像机的感光芯片都选用CCD。摄像机里最核心的部件就是CCD,它能把光线转换成电信号,因此CCD直接关系到摄像机的性能10。由于一般工厂的洗涤流水线不会仅仅只有一条,所以要考虑采用可以实现多通道视频同时采集的图像采集卡。综合以上研究,本系统选用了CVC-3031DT彩色摄像头,该摄像头支持PAL制式,同步方式为内同步,其分辨率为420tvl,信噪比为不下于48dB,采用1/4索尼CCD数字处理芯片11。视频采集卡采用的是大恒图像QP300系列采集卡,它适于多画面同时采集。图像采集卡控制视频数据的传送过程,CPU不参与,从而使其具有灵活性、集成度高、低功耗等特点。图像采集卡硬件图见图2.1,其安装在PCI插槽后的图见图2.2。图2.1图像采集卡图2.2采集卡安装在PCI插槽下面简要介绍采集卡的工作原理和工作流程:(1)DH-QP300采集卡工作原理多路切换A/D转换格式转换缓冲RISCPCI接口Video1Video2Video3Video4图2.3DH-QP300工作原理框图如图2.3所示,视频图像先经多路切换器和解码器,再经过A/D转换器,把模拟图像转化为数字化的图像数据,然后送到数据缓冲器。将数字化的图像数据进行裁剪、压缩及格式变换,由RISC图形掩盖和传输数据。软件决定数据传输目标的位置。(2)DH-QP300采集卡工作流程初始化参数设置采集图像到屏幕采集图像到内存释放资源图2.4图像采集卡工作流程如图2.4所示,在用户应用程序的初始化时最好完成图像采集卡的初始化参数的设置,应用程序退出前结束图像卡操作。图像卡在采集图像数据时,不占用CPU并实时处理图像。2.2图像预处理技术视频图像在采集的过程中由于摄像头的传感器的误差和传输时附加的噪声等原因,不可避免的会对图像有所干扰。因此,需要对采集到的图像进行预处理来提高视频图像的分析和识别能力,减少干扰因素对图像的影响,改善图像质量。下面介绍常用的图像预处理技术。2.2.1图像去噪由于图像在采集的时候,会引入噪声,从而会影响目标的识别,因而需要对图像进行去噪。利用图像平滑技术去除图像噪声。根据图像能量集中在低频段而噪声主要集中在高频段的特点,通常消除噪声的方法都是低通滤波。使图像平滑的一些常用方法有均值滤波、中值滤波和Gauss滤波等。A.Gauss滤波高斯滤波是基于线性的一种滤波法,主要用于去除高斯噪声。简单来说,高斯滤波是通过每个像素点值与该像素点领域的像素点值加权平均后,得到新的每一个像素点值的过程。高斯滤波采用具体模板去扫描图像中的像素点,把模板中心像素点的值用模板确定的像素加权平均灰度值来替代。若采用33模板,其计算公式如下12:(2-1)16/4),(2)1,(),1(),(),1(,),(yxfyxfxfyxfxfyg其中,为图像中点的灰度值,为该点经过高斯滤波后的值。,gGauss滤波前后如图2.5所示。(A)高斯滤波前(B)高斯滤波后图2.5高斯滤波前后从上面两幅图可以看出,高斯滤波后的图像明显变得光滑许多,克服了边界效应。B中值滤波中值滤波应用排序统计理论的原理,是一种非线性滤波技术,其抑制噪声的效果很好。它比均值滤波较好的保存图像的细节,而且不会出现使图像模糊的问题,同时去噪效果也很好13。中值滤波具有原理简单和实现快速方便等优点。中值滤波的原理是针对确定的领域,对其领域的像素值排序,取它们的中心值为新的中心像素值。但中值滤波法不太适合对点、线和尖顶多的图像进行处理。中值滤波和均值滤波7效果如下图2.6(B)和图2.6(C)所示,其中图2.6(A)为原图。(A)原图(B)中值滤波后(C)均值滤波后图2.6图像去噪效果对比图从图中可以看出,均值滤波有将图像模糊化的趋势,去噪效果并不明显,而中值滤波的去噪效果要比均值滤波效果好。2.2.2图像增强(1)灰度直方图灰度直方图可以很好的显示图像灰度分布,因此在很多方面都用到了灰度直方图作为分析的工具,例如图像分割,图像变换,以及匹配识别等14。直方图横坐标用r表示灰度级数,纵坐标用表示灰度概率密度。利用直方)(rp图能够知道图像的灰度级充足性及合理性14。如图2.7所示为灰度图像及它的直方图。(A)灰度图(B)直方图图2.7灰度图像及其直方图从2.7(B)可以看出,图像的灰度主要集中于高灰度级区域,从2.7(A)图片可以看出纹理并不清晰,污点轮廓与周围分割不够明显。(2)直方图均衡化直方图均衡化主要思想是将原来图像的直方图转换为均匀分布的形式,继而使图像的灰度值动态区域范围变大,从而增加了图像整体的对比度,使得不同颜色之间的差距拉大,图像层次和轮廓更加明显15。本软件系统采用了OpenCV库函数里的cvCvtColor函数,该函数实现了彩色图像转化为灰度图像的功能。cvEqualizeHist函数实现了将灰度图像直方图均衡化的作用。图2.8(A)是图2.7(A)经过直方图均衡化后的图像。图2.8(B)为均衡化后的直方图(A)灰度图均衡化后(B)直方图图2.8均衡化图像及其直方图通过图2.8(A)和图2.7(A)比较可以看出,图像的灰度级明显拉伸了,图像的层次表现得相对更加明显,轮廓也变得相对清晰很多。由图2.8(B)和图2.7(B)可以看出,直方图分布变得均匀,不再聚集于某一小部分。通过直方图可以更好的看出经过均衡化后,图像的层次感和清晰的轮廓。2.2.3图像二值化图像的二值化的实现主要利用图像的阈值分割,其核心是阈值的选择。根据图像的灰度直方图获取每个不同灰度级的概率密度分布,通过选择的准则不同来决定阈值的值16。二值图像的优点不仅存储容量小,运算速率快,而且更主要的是利用二值图像可以得出图像中目标物的拓扑特性、进行形态学分析和几何特性。图像的二值化是指将灰度图像转化为二值图像的过程,即将由L个灰度级表示的图像用两个有特殊含义的灰度级来表示,一般情况用一个灰度级表示背景,另一个灰度级表示目标。图像二值化不等同于图像黑白化,只是通常用0和1两个灰度级对灰度级0255进行二值化。图像的二值化处理即把灰度图像转换成仅含有两个灰度级的图像,处理后的图像称为二值图像。模式识别、检测、提取图像的特征以及图像测量等处理均是在二值图像的基础上进行的。设置图像的灰度值范围在a,b内,二值化阈值设为,处理的表达式)(bTa如下17:(2-2)yxfyxfT),(01),(表示二值化后的图像,其中1来表示目标区域,用黑色区域表示,0来表示Tf背景区域,用白色区域表示。本软件运用OpenCV函数cvThreshold来对图像做二值化处理,参数选择CV_THRESH_BINARY。二值化效果图见图2.9:(A)灰度图(B)二值化图图2.9灰度图及其二值化图2.2.4“腐蚀膨胀”算法A.腐蚀腐蚀能够消除小而微不足道的对象。腐蚀在图像处理中的作用是对于确定的结构元素,通过腐蚀运算消除小于结构元素的点。针对于检测区域里有细小的连接的情况,可以考虑利用腐蚀算法将其分割18。把腐蚀算法概括为(1)用33的结构元素扫描图像;(2)结构元素“与”其覆盖的二值图像;(3)若均为1,结果图像的像素为1,否则为0。运用OpenCV函数cvErode可以实现对图像的腐蚀处理,腐蚀效果见图2.10(B)。(A)二值化图像(B)腐蚀处理后图像图2.10二值化图像腐蚀效果B.膨胀膨胀是将与目标相邻的所有边界点归并到该目标,其实质是边界有内向外部覆盖的过程。在数字图像处理中,针对某一确定的结构元素,利用膨胀将间隔相邻和较短的区域连接起来19。程序编写中使用OpenCV库函数里cvDilate()来实现图像膨胀处理。图2.11为膨胀前后的效果图:(A)二值化图像(B)膨胀处理后图像图2.11二值化图像膨胀效果将图2.10(B)和图2.11(B)进行对比,可以看出,对二值图像腐蚀后,边界轮廓更加明显,而膨胀后的边界轮廓均变成白色。2.3洗涤生产线污点检测算法基于视频的目标检测即是把目标从视频序列的背景中分割出来并精确定位的过程。通常是利用目标的颜色特征和位置区域等来实现目标检测。但是,因为图像背景复杂或者目标的运动或静止。到目前为止基于视觉的目标检测仍是一个难题。在某些固定环境下研究者们提出了一些有效的目标检测方法,下面介绍其中几类主要的检测算法。2.3.1模板匹配算法模板匹配是一种目标检测的重要方法。其原理是:先为目标建立参考模板,然后在一幅图像中进行像素点的行列扫描,逐点平移模板搜索符合模板的的目标,且该目标与模板在尺寸、方向和图像具有相似,经过一定的模板匹配运算可以在图中找到所要检测的目标,并确定其坐标位置。模板匹配存在运算量大和容易受干扰物影响等缺点20。2.3.2图像变换滤波法图像变换滤波法是利用图像变换或滤波来达到改善图像质量和增强目标与背景的对比度的目的,从而可快速地判别目标并提取相应的特征值。这类方法主要包括傅立叶变换、小波变换、高低通滤波等,这里简要介绍一下傅立叶变换。傅立叶变换在图像处理的应用很多,其能够实现对图像的频率的提取21。但是此种方法应用于实际中比较难于操作。2.3.3像素特征统计法像素特征统计法需将图像的原像素中图像统计的信息作为识别或分类系统的输入,其统计的信息有图像或图像的灰度均值等,该方法与领域无关22。若该方法用于污点检测即直接对统计图像像素点的灰度级,设定一个阈值范围,超过这个阈值范围的即为污点。这种方法容易受到噪声的干扰,因此对环境要求较高22。但是,由于洗涤流水线的环境基本稳定,所以采用此算法还是比较简单可行的。2.3.3帧差法帧差法23是根据视频序列中前后帧之间像素点的比较来获取目标的位置。按照事先预定规则,两者的像素点的差大于所设阈值则判定该位置为目标区域。帧差法对与光照引起的变化并不敏感,对动态环境有一定的自适应性,但因为光线、运动等引起的背景变化,可能需要考虑背景的配准问题。它无法获得移动较慢的对象的边界,但如果检测运动过快的目标,会造成圈出的过大目标区域。在洗涤流水线上,一方面由于摄像头固定在一处,运动的背景是几乎没有什么变化的,不需要考虑背景的配准问题。另一方面,在进行污点检测的时候不需要准确的定位污点,只需要知道有污点即可。对于流水线的速度也是可以根据需求自行设置的,所以可以考虑用帧差法来实现污点的检测。2.4视频污点检测方法本软件系统,先把采集的彩色图像转换为灰度图像,使用直方图均衡化法来增强图像的清晰度和对比度,然后利用灰度阈值分割法将图像二值化,从而提取出污点部分,再利用“腐蚀膨胀”算法去除由于图像二值化而产生的噪声干扰,最后对其进行像素统计的方法提取合适阈值。根据流水线的周围环境的稳定,考虑利用帧差法来对流水线上的纺织品的污点进行检测。3软件详细设计3.1软件需求分析随着计算机视觉检测在工业流水线的发展,对洗涤流水线的污点检测系统的开发也有所需求。该软件的开发目标是利用摄像头采集流水线上的纺织品图像,采用OpenCV视觉库函数处理采集到的图像,检测到污点后,监控端进行报警。该软件要具有截图、查看和动态调节视频图像的一些有关参数功能,可以将多条流水线的视频同频采集。此软件还要具有将检测到的污点图像自动保存的功能。该软件实现的功能如图3.1所示:主要功能截图设置参数调节通道选择退出查看图片显示图像图3.1主要功能图3.2开发环境本软件系统的设计主要用到了MFC和OpenCV图像处理类库。MFC是WindowsAPI与C+的结合,它为程序开发构造了程序的总体框架,MFC可以很容易结合API或者驱动程序,使得程序员在利用C+里的MFC编写软件时,使得大量内部函数的调用过程被隐藏。OpenCV是一种用于图像处理的计算机视觉库,因其既提供相应的图像处理库函数,又可以与C+环境完美衔接,因此而被广泛应用。3.3系统各模块设计3.3.1系统模块概述如图3.2所示,污点检测系统由以下三部分组成:图像采集模块、图像处理模块、污点检测模块。图像采集图像预处理图像去噪图像增强图像二值化腐蚀-膨胀目标检测阈值分割阈值设定像素点统计目标定位图3.2系统模块3.3.2图像采集模块此模块主要提供系统的数据源,用来获取图像,此系统采用了大恒图像采集卡和摄像机来采集图像序列,关于大恒图像采集卡的介绍前面已经有所描述。3.3.3图像处理模块图像处理系统是整个软件系统的核心部分,也是难点部分。国内外在这方面也做了相当多的研究,在针对下一步的污点识别,此部分起到了决定性的作用。本软件的图像处理系统是在VC环境下建立MFC界面添加相应控件实现视频的采集,利用采集卡获取图像,通过应用OpenCV24的视觉库函数去实现对图像的基本处理,主要包括彩色图像预处理和阈值分割。简化流程如图3.3所示。图3.3图像处理过程3.3.3洗涤流水线纺织品污点检测目标检测有像素特征统计法、图像变换滤波法、模板匹配和帧差法等方法。采用阈值法,即在灰度图的情况下选取合适的阈值分割图像,阈值是将检测目标与背景区分开来的灰度门限25。根据像素特征统计法确定污点的阈值范围T,将污点从背景清楚的分离出来。对于纺织品的污点检测,由于其监控环境比较稳定,所以可以选择帧差法来实现污点的检测。读入图像图像预处理图像阈值分割3.4程序运行流程程序运行流程图如图3.4所示,下面针对部分功能进行详细介绍。系统初始化设置参数采集并显示检测设定查看图像截图系统报警退出图3.4程序运行流程3.4.1系统初始化因采集卡的初始化操作需设置比较多的参数,且每次系统开启时都要进行该操作。为解决这一问题,需在程序设计里将每次设置的参数写入一个系统INI文件,并在每次初始化开始时,查看INI文件是否有初始化信息。如果有,则直接按初始化信息进行初始化,以保存用户对系统初始化参数的选择。否则,就提供一个默认初始化参数进行初始化,并在每次的更改之后,进行保存,以便下次使用。利用GetPrivateProfileInt()函数,从系统INI文件中提取相关参数。例如:VideoScan=(VIDEO_SCAN)GetPrivateProfileInt(VideoParameter,Scan,0,CGCard.ini);表示从系统文件CGCard.ini中的指定小节“VideoParameter”中查找设置项“Scan”的值,若该设置项没有值存在,则采用默认值为0。在大恒图像采集卡SDK中,VIDEO_SCAN是其用于标识视频信号扫描方式的结构体,其中,“0”表示帧方式,隔行扫描图像的所有数据;“1”表示为场方式,逐行扫描一帧图像的一场数据;“2”表示为场方式1,逐行扫描一帧图像的另一场数据。3.4.2参数设置程序运行时,可以通过程序主窗口中的滚动条改变图像显示参数:亮度、对比度、色度和饱和度。对应控件如图3.5所示。图3.5参数调节控件为了实现上述功能,需要对滚动条控件OnHScroll事件进行编程,在事件函数中,设置滚动条的数值范围,对滚动条滚动后的位置所对应的数值进行显示,然后实时地将改变的参数通过图像采集卡SDK接口传递到采集卡,从而对采集卡的视频参数进行更改。3.4.3截图功能的实现大恒图像采集卡开发包提供了CGSnapShot函数用于将采集的图像数据保存到内存中。采用该函数读取当前所有视频源路的当前帧,通过添加内存偏移指针分别保存,并在“截图”按钮响应程序中,将保存的图像数据分别写入对应源路的文件中进行保存。保存的文件为BMP格式。BMP文件的组成,分别是文件头、位图信息头、颜色信息和图形数据。文件头部分说明了BMP的大小、种类和位图的初始地址等信息;位图信息头的数据里定义了位图的尺寸;颜色表是用来决定位图的颜色类型,其表项结构为RGBQUAD类型。位图数据根据扫描的次序来对位图的像素值进行录入,且扫描行的字节数是4的倍数,不足以0填充。3.5多线程编程在编程过程中,为了实现实时采集视频的同时还可以进行其它操作,需要开辟多个线程分别进行处理。在进程里面线程是一个执行单元。当整个系统创建好进程后,此时该进程的执行的主线程被开启。进程随着主执行线程的终止而终止。用户可以在应用程序中创建其它所需线程,实现多个线程并行。利用多线程处理方法可以实现多程序并行,避免克服了某操作长期占用CPU。在MFC里有工作者线程与用户界面线程两类线程。其两者的差别是前者没有消息循环,而后者不但有消息循环,而且还有消息队列。但这两者在Win32的API编程里没有任何差别,两者均仅需通过线程的启动地址就能来驱动线程26。下面选取API函数里用来完成线程创建、挂起、终结等函数进行简要说明。(1)HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,DWORDdwStackSize,LPTHREAD_START_ROUTINElpStartAddress,LPVOIDlpParameter,DWORDdwCreationFlags,LPDWORDlpThreadId);此函数在调用的进程空间里创建了一个新的线程,同时将已建线程的句柄返回。其中各参数说明如下:lpThreadAttributes:该指针指向SECURITY_ATTRIBUTES结构,此结构决定了线程的安全属性,其值一般设为空;dwStackSize:用来说明线程的堆栈深度,其值一般设置为0;lpStartAddress:表新线程开始执行时代码所在地址,即线程的起始地址;lpParameter:指定线程执行时传送给线程的32位参数,即线程函数的参数;dwCreationFlags:控制线程创建的附加标志,可以取两种值。如果该参数为0,线程在被创建后就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统产生线程后,该线程处于挂起状态,并不马上执行,直至函数ResumeThread被调用;lpThreadId:该参数返回所创建线程的ID。(2)DWORDSuspendThread(HANDLEhThread):该函数用来指定挂起的线程,如果函数执行成功,则线程的执行被终止。(3)DWORDResumeThread(HANDLEhThread):该函数用于结束线程的挂起状态,执行线程。(4)VOIDExitThread(DWORDdwExitCode):该函数用于线程终结自身的执行,主要在线程的执行函数中被调用,其中参数dwExitCode用来设置线程的退出码。本次程序设计,创建了两个线程,分别用于显示视频图像数据,污点检测功能实现。线程说明如下表所示。表3.1多线程说明实现功能线程句柄对应线程函数图像采集与显示HCGhcgstaticintCALLBACKSnapThreadCallbackEx(SNAP_INFO*pInfo)污点检测HANDLEM_hWuDianThreadstaticDWORD_stdcallWuDianThread(LPVOIDlpParam)在主对话框的初始化函数中,先创建上述线程,并将创建的线程挂起,直到检测功能复选框被选中时,通过ResumeThread函数结束线程的挂起状态,执行线程。线程函数设计中,主要涉及以下几个分面:首先,在基于对话框的工程头文件中定义线程句柄并添加线程函数声明,例如:staticDWORD_stdcallWuDianThread(LPVOIDlpParam);private:HANDLEm_hWuDianThread;然后,编写线程函数。在线程函数中添加线程响应的操作和对图像的处理。最后,初始化时创建并挂起线程,在程序执行到相应ResumeThread时,执行线程。3.6检测功能的实现纺织品的污点检测功能实现其核心是阈值的选择,对摄像机采集到的图像进行预处理后,进入阈值判断流程,若阈值小于T则说明有污点,系统报警,否则不处理。具体流程见图3.6所示。视频采集图像获取彩色图像图像预处理阈值是否小于T不处理实时显示监控画面是否结束监控结束是否否是发出警报有污点开始图3.6污点检测流程图4视频污点检测实验4.1实验环境与设备实验环境:淮阴工学院计算机工程学院11#317,实验室模拟洗涤流水线纺织品污点检测环境如下图4.1所示。图4.1软件模拟环境实验设备:台式电脑一台,操作系统为WindowsXP;大恒图像采集卡;窗帘;摄像头。4.2实验步骤(1)运行代码进入软件主窗口,见图4.2所示。右侧边显示当前系统状态,右下角三个按钮,分别为“暂停/开始”,“设置”和“退出”,分别实现视频采集的暂停和重新开始,系统功能设置和系统的退出。当点击“设置”按钮时,显示下窗体下方的功能选项,进行相关设置,如图4.3所示。双击某一通道视频进行全屏查看,效果如图4.4所示。图4.2主窗口图4.3点击“设置”后窗口图4.4全屏显示窗口(2)进入图4.3界面后,根据光线问题,可以在参数调节菜单里对图像的各个参数设置,然后选择要检测的通道,本实验为了模拟流水线纺织品的污点检测环境,对实验室的窗帘进行检测,所以实验时选择第四通道,手拿摄像头垂直于窗帘,并用手慢慢的拖动窗帘运动。4.3污点检测结果污点检测功能实现时,只需要检测出当前监视区域出现了污点即可进行报警,因此,在检测出目标像素后,累计出相应的亮点像素,当目标像素超过某个阈值时,认为出现了污点。实验中,对连续的视频图像序列进行背景减除的污点检测时,每隔8帧对图像进行一次处理,在运动目标进入监控区域时,能够迅速检测出前后两帧中变化的部分。在第四通道检测时,由无污点部分到有污点部分,经过背景减除后,污点被白色矩形框圈出,如下图4.5所示,主窗口显示通道四发现污点,同时客
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论