高速数字图像

2024-10-03

高速数字图像(精选7篇)

高速数字图像 篇1

电容耦合器件(Charge Coupled Device,CCD),是20世纪70年代初发展起来的新型半导体光电成像器件[1]。由于其具有信号输出噪声低、动态范围大、量子效率和电荷转移效率高等特点,加之多年来新型半导体材料技术的不断积累和大规模集成技术的日臻完善,CCD技术目前广泛应用于国民经济、国防建设、科学研究等各个领域。随着上述领域对数字图像的分辨率以及传输速度的要求越来越高,人们对高速图像采集系统的性能、稳定性和可靠性也提出了新的要求。本文提出了一种基于PXIE总线和Camera Link协议的高速CCD图像采集系统设计方案,并详细说明了部分模块的具体实现方式。

1 系统工作原理及总体设计

1.1 Camera Link协议及PXIE协议介绍

(1) Camera Link协议简介

Camera Link是一种基于视频应用发展而来的通信接口[2]。它是NI等13家公司基于Channel Link技术联合推出的一种新型接口,简化了相机与其他设备的连接。Camera Link的驱动端将28位并行数据以7∶1方式转化为4组LVDS数据流和1组LVDS时钟信号,串行发送至接收端进行处理。其最高传输速率可达2.38 Gb/s。图1为Camera Link工作原理图。

Camera Link接口协议提供4类信号:相机控制信号、图像数据信号、电源和串行通信信号[3]。其接口有3种结构,分别是初级配置(Base)、中级配置(Medium)和高级配置(Ful1)。Camera Link使用端口定义来区分这些配置。3M 26-pin MDR(Mini D Ribbon)连接器之所以被选择与Camera Link配套使用是因为它优秀的设计和先前 Channel Link高速传输的成功经验[4]。

(2) PXIE协议简介

PXI(PCI Express for Instrumentation)由NI 公司于1997 年率先提出[5]。PXIE 基于Compact PCI标准,增加了时钟和同步触发总线,但其核心仍然是PCI总线。PXI Express相对PXI最显著的改进和优势就在于它融入PCI Express的特点,采用串行传输,点到点的总线拓扑结构。不同于PXI在所有总线设备间分享带宽,PXI Express为每一个设备提供单独的传输通道。同时它所增加的时钟和同步触发信号以及拥有特殊的接口物理特性使得其在测量、通信、工业自动化等领域拥有更大的技术优势。本文采用PXIE-8x,最高传输速度达到1 400 Mb/s。

1.2 总体设计

系统总体结构图,如图2所示。

图2中,DS90CR288A[6]为NI公司高性能串并转换器,将Camera Link接口协议的4路LVDS信号和1路LVDS时钟转换为28位LVCMOS/LVTTL数据和一路时钟信号,DS90LV047A[7]为NI公司的3 V LVDS 4路单端转差分驱动器。DS90LV049[8]为NI公司的3V LVDS 双向线路驱动器和双向线路接收器。

系统工作流程为:

首先,采集卡通过DS90LV047A对CCD相机发出的控制指令。CCD相机在接到指令后,将采集到的图像数据分为4路LVDS数据信号和1路LVDS时钟信号,通过接口连接器MDR26,输送到图像采集卡;图像采集卡将串行数据转换成38路并行信号和1路随路时钟传送给FPGA进行数据处理。由于数据量很大,为保证数据低误码率及提高可靠性,使用了2块Micron 2 GB DDR2对数据进行缓存和乒乓处理。FPGA根据用户的需求进行高速的图像处理。采集卡通过PXIE-8x将图像数据上传至PC(上位机)上进行后期处理,同时实现PC(上位机)对图像采集卡的控制。图像数据最终通过PC将数据存储在SSD(Solid-state Drive)电子盘上,以供随时调用。在读/写速度等关键性能上,SSD电子盘远远优于传统机械硬盘,因此选用SSD电子盘为数据存储介质。采集卡还采用DS90LV049(LVDS双线路驱动器,带有双线路接收器)来实现采集卡与相机间的串行通信,用户可以根据需要对CCD相机进行配置。

2 关键模块设计

2.1 Camera Link接口设计

根据系统功能要求,Camera Link接口设计包括3个部分,即为视频数据信号接口设计,控制信号接口设计,串行通信命令接口设计。

2.1.1 视频数据信号的接口设计

视频数据信号为FVAL,LVAL,DVAL和SP,它们分别是帧允许信号、行允许信号、数据允许信号和保留信号,4路均为LVDS数据信号,外加1对LVDS时钟信号,在此采用了National Semiconductor公司的DS90CR288A芯片,将5路LVDS信号转换为28路数据信号。具体连接图如图3所示。

2.1.2 控制信号接口设计

相机控制信号CC1,CC2,CC3,CC4为4路LVDS信号,为节省布线空间,FPGA发出的控制信号均为单端信号,因此采用National Semiconductor公司的DS90LV047A芯片将采集卡发出的单端COMS控制信号转化为LVDS信号,完成对CCD相机的控制。图4为DS90LV047A与MDR26的连接。

2.1.3 串行通信信号接口设计

串行通信信号由两对LVDS信号提供,这些信号使相机与其使用者之间可以进行通信。因为是双向通信,在此采用了National Semiconductor公司的DS90LV049芯片实现了LVDS差分信号到单端CMOS信号的双向转换。图5为DS90LV049与MDR26的连接示图。图中EN为1时,EΝ¯可以不接,4条通路可以全通。

2.2 PXIE模块设计

2.2.1 PXIE的时钟电路设计

在PXIE规范中,对于时钟的频率稳定度要求是100 MHz±300 ppm,抖动(Cycle-to-Cycle)需要小于125 ps,占空比要求50%±5%以内。因此,系统中选用IDT公司的ICS874003-02[9]作为100 MHz参考时钟的抖动衰减器。ICS874003-02是一款高性能的将差分时钟转换为LVDS电平时钟信号的时钟抖动衰减器,该元件可支持PXI Express系统,具有衰减或“清除”100 MHz PXIE输入时钟抖动,同时将其转换成250 MHz LVDS输出能力的时钟器件。ICS874003-02在芯片内部集成了一个高性能,低相噪的锁相环。锁相环的鉴相带宽为400 kHz,可以快速锁定时钟,减小抖动。该器件支持低于1 ps RMS极低相位噪声的基准时钟生成,满足基于PXIE的高速应用的严格的抖动要求。它的最大周期抖动为35 ps,占空比变化为50%±2%,完全可以满足PXIE对时钟的要求,其内部原理图如图6所示。

该系统设计中采用QA0/nQA0和QA1/nQA1两对差分输出时钟,并且将这两个输出分频器的分频系数设置为5,使输出时钟频率和输入时钟频率相同。

ICS874003-02提供独立的电源用以隔离内部锁相环产生的开关噪声,VDD,VDDA,以及VDDO必须单独通过过孔连接到电源层,并且在每个电源脚上都要加入旁路电容,为了获得最佳的时钟抖动特性,电源需要相互隔离。如图7所示,1个10 Ω的电阻以及1个10 μF和0.01 μF的旁路电容构成了一个电源滤波电路,连接到每个VDDA脚,10 Ω的电阻可以被磁珠所替代。

2.2.2 PXIE的 IP core设计

该系统中,采用Virtex-5[10,11]LX50T型FPGA作为PXIE的传输控制器,由于FPGA内部集成了PCIe端点模块,所以减少了很多外围硬件电路的设计难度。PCIe端点模块的IP核框图如图8所示。

由图8可以看出,PXIE IP核采用分层结构,即分别为物理层链路模块、物理层、数据链路层、传输层和用户应用层。传输层负责处理用户应用层(User Application)提供的传输层包(TLP)并安排其传输。数据链路层负责链路管理和数据完整性,包括错误的检测和纠正。物理层负责完成包的成帧和解帧、字节的组合和拆分、链路的初始化和训练、扰码生成和解扰。发送时,物理层链路模块负责将物理层生成的扰码应用到传输数据中,同时复用到物理层模块接收到的有序集中,最后把包传输给传输接口;接收时,负责从传输接口上接收TLP字节,从数据中解码有序集,并且将DLLP和TLP解扰。

2.2.3 PXIE传输速度问题及解决情况

由于PXIE传输协议是基于PCIe传输协议的扩展,所以可以利用目前比较成熟的PCIe传输协议实现技术在硬件程序设计层次上实现PXIE传输协议,至于PXIE协议的一些扩展接口,都可以在FPGA外围用基本硬件电路简易的实现。FPGA生产厂商Xilinx公司提供了一套成熟,稳定并且免费的PCIe传输方案,以IP(Intellectual Property)的形式提供给用户。

PCIe IP核虽然为PXIE传输协议提供了解决方案,但是仍然存在问题。首先,在实际测试过程当中,由于PCIe IP一直占用了CPU,使得PC在进行数据传输时,主机本身无法进行其他操作,还有一定几率造成系统崩溃。其次,由于PCIe协议进行传输的包载荷过小,在进行大数据量传输的时候,会进行多次传输,从而浪费大量时间在结束和发起传输上,导致平均数据传输率下降。最后,由于IP核的重要特性是通用化,所以IP核的接口包括了所有PCIe信号,使得用户操作非常繁琐,不利于设计的移交和修改。直接内存访问(Direct Memory Access,DMA)控制器能够从根本上解决前两个问题,经过优化设计也能改善第三个问题。

PXIE总线DMA的FPGA功能设计框图如图9所示。

当PC机需要通过PXIE总线发送数据时,首先PC机为DMA传输在内存中划定两块内存空间,作为数据的第一级缓存,并将这两块内存空间的基地址和大小轮流通过PXIE总线传给DMA控制器。这些配置命令通过特定的字符串被识别,并写入相应的配置命令寄存器。划定两块内存空间是为了在当DMA控制器从一块内存中读取数据时,PC机可以向另一块内存写入数据,以乒乓操作的形式提高传输效率。

接下来,PC机发起对数据的传输。PC机上的PCIe控制器从内存中取得数据后,将原始数据封装,并串转换往下继续传输,数据包通过吉比特串行收发器传至FPGA,在进入PCIe IP核后被拆解,剥离的纠错信息作为包进一步处理的依据,最后在应用层以并行数据的形式推入DMA控制器。

DMA控制器将数据流存入数据输出FIFO,根据FIFO剩余空间的大小判定是否从PC机中继续读取数据,这样就保证了数据不会因为来不及从FIFO中取走而丢失。当DMA控制器接收到一块内存大小的数据之后,就会以边带信号的形式发送中断信号给上位机,上位机接收到中断之后就可以开始下1次DMA传输。

当PC机需要通过PXIE总线接收数据时,工作流程与通过PXIE总线发送数据基本类似,主要区别在于从PC机往下发送的包里不包含数据,仅包含路由及其他控制信息,DMA控制器接收到包后,会以完成包的形式将数据打包往上传回PC机,完成包按照接收到包中的路由信息,逆向寻址回到PC机的内存,PC机就完成了一次通过PXIE总线接收数据。

加入DMA控制器之后的PXIE总线被重新封装,操作得到简化。

2.3 测试结果

在测试中,PXIE配置为8通道,测试数据为16 MB,在PC机通过PXIE接口读取数据的操作过程当中,平均数据率达到1 504 Mb/s。在PC机通过PXIE接口发送数据的操作过程中,平均数据率达到1 490 Mb/s。通过PCIe测速软件进行传输速度测试,其结果如图10所示。

3 结 语

本文介绍了一种基于PXIE总线和Camera Link协议的高速CCD图像采集系统的设计方案。该方案给出了一种Camera Link硬件接口电路的设计思路,并且选用Xilinx公司的Virtex-5 LX50T型FPGA作为整个采集系统的核心处理器,同时对Virtex-5自带的IP core进行研究和开发,实现Camera Link采集卡通过PXIE总线与上位机进行串行通信。在试验过程中,FPGA设计灵活,开发周期短的优点充分得以体现,为下一步的高速图像采集系统的研制奠定了基础。

参考文献

[1]董琰,彭琦,李健志,等.基于Camera Link协议的CCD图像采集系统[J].吉林大学学报:信息科学版,2010,28(4):372-377.

[2]朱齐丹.Camera Link硬件接口电路设计[J].应用科技,2008,35(8):57-60.

[3]张德联,张帆.基于Camera Link的高速数据采集压缩系统[J].科学技术与工程,2008,8(18):5253-5255.

[4]魏明.基于Camera Link接口的CMOS数字相机技术研究[D].长春:长春理工大学,2005.

[5]刘红.通用CompactPCI/PXI接口技术研究[D].成都:四川大学,2005.

[6]National Semiconductor Corporation.DS101087,DS90-CR287/DS90CR288A+3.3V rising edge data strobeLVDS 28-bit channel link-85 MHZ[EB/OL].[2000-10-11].http://www.national.com.

[7]National Semiconductor Corporation.DS100887,DS90-LV047A 3V LVDS Quad CMOS differential line driver[EB/OL].[1999-07-20].http://www.national.com.

[8]National Semiconductor Corporation.DS200420,DS90-LV049 3V LVDS dual line driver with dual line receiver[EB/OL].[2003-03-21].http://www.national.com.

[9]IDT.PCI expressTMjitter attenuator ICS874003-02[EB/OL].[2007-06-13].http://www.IDT.com.

[10]Xilinx.UG196 Virtex-5 FPGA rocket GTP transceiver us-er guide[EB/OL].[2008-02-11].http://www.xilinx.com.

[11]Xilinx.UG197 Virtex-5 FPGA integrated endpoint blockfor PCI express designs[EB/OL].[2009-07-22].http://www.xilinx.com.

色差图像的数字图像拼接算法 篇2

图像拼接或者全景图像技术是指把同一场景的相邻之间有重合区域的一系列图片拼接成一幅宽视角的、与原始图像接近且失真小、没有明显缝合线的图片,以满足人们浏览全景图片的需求。该技术正被应用于各种领域,如视频压缩、视频索引、目标跟踪[1]或者虚拟环境的创建。

目前,已经有许多算法都可以将同一场景图片中的重叠部分提取出来并且快速的拼接成为一幅全景图片,其中有许多算法可以得出令人满意的融合结果。MingShing Su等使用小波进行多尺度的融合[2],但是这种方法只是在重叠区域进行局部的融合处理,无法保证图像的全局自然。Anat Levin等采取梯度域的融合方法进行图像拼接[3],可以减少源图像间色差对融合结果的影响。但是以上这两种方法对于存在有明显色彩和亮度差异的图片,融合后的全景图像就会失真。因此,在进行图像拼接之前需要曝光校正。Pedro M.Q.Aguiar等直接计算和线性化的曝光校正之间进行迭代[4],从而进行图像的配准。Matthew Uyttendaele等把图像分为若干块[5],将每一块进行曝光校正,然后再把这些校正过的块进行融合。Aseem Agarwala和Anat Levin等在梯度域中进行拼接[6,7],从而避免了曝光的差异。M.Brown等将每幅图片的像素平均值乘以一个可令最小化误差函数最小的常量进行增益补偿[8]。

本文提出的方法主要针对存在明显颜色和亮度差异的一系列待拼接图片的拼接,得到一幅无明显拼接缝的全景图像。通常图像拼接的过程主要分为三个步骤:图像配准、图像对齐和图像融合。但是,对于存在明显色差的图像,若直接进行拼接计算,得到的融合图像存在明显的拼接缝。因此,在这种情况下,需要对原图像进行色彩校正。计算相邻图片间的色彩校正参数和每个彩色通道的全局色彩调整参数,选择适合的颜色和亮度,对每一幅图片进行色彩校正。然后,对图像进行配准计算。图像拼接中一个关键技术是图像融合,即将一系列图像融合为一幅全景图像并且肉眼看不到图片间的拼接缝。本文采用基于余弦关系变换的加权融合算法进行图像融合,得到最终的全景图像。实验结果表明,本文算法对于存在色差的图片序列可以实现无缝快速的拼接,并且可根据需要调整图像的色彩和亮度。

1 色差图像的图像拼接算法

本文算法的实现流程如图1所示。首先计算色彩校正参数和全局调整参数,对待拼接的图片进行色彩校正;然后使用SIFT和RANSAC算法进行图像配准;最后,根据对融合速度的要求,选择0-1加权融合算法或平均值法进行图像融合,得到拼接图像。

1.1 色彩和亮度校正

在实际获取图片的过程中,由于拍摄时间的不同和曝光强度不同,所得到的相邻的待拼接图像之间的亮度和色彩会存在一定的差异。若不进行色彩校正,将会导致拼接后的的图像存在肉眼可见的拼接缝,直接影响拼接图像的效果,可以清晰地看到待拼接图像中存在的色差导致拼接后的图片也有很明显的拼接缝,这时就需要对原图像进行色彩的校正,从而提高拼接效果。

本文的例子中原图均是两幅图像的拼接,但是此算法同样适合于n幅图像的拼接。假设有n幅待拼接的图像P1,P2,…,Pi,…,Pn,假设Pi-1和Pi是相邻的两幅图片,Pˉi-1和Pˉi是这两幅图片中重叠的区域,c∈{R,G,B},i=1,2,⋯,n,则图片Pi的色彩校正参数αc,i可由以下公式得到:

式中:M是指相邻图像的重叠区域;Sc,i-1(s)是指图像Pˉi-1中的像素点S的像素值;Sc,i(s)是指图像Pˉi中的像素点S的像素值;γ是指参数,通常设定为2.2。对于待拼接的第一幅图片P1,设定αc,i=1。为了避免图像色彩过饱和,又设定一个全局调节参数gc,用来调整整个待拼接序列的色彩值。需要计算彩色图像R,G,B三个通道的调节参数gc,则要使图像i的c通道的调节参数αc,igc尽量的接近1,那么有最小二次方程:

结合方程(1),将方程(2)求导等于0,可转换成以下方程:

得到色彩校正参数αc,i和全局调节参数gc,那么可以对图像Pi进行色彩校正:

式中:Sc,i(s)是指图像Pi在通道c∈{R,G,B}上在像素点p的像素值。

可根据图片使用场合的不同和个人的喜好,在色彩校正时调整参数,选择适合的拼接效果。

1.2 图像配准

每幅图片都有其确定的SIFT特征点,这个特征点包括尺度空间极值、特征点位置、特征点方向和特征点描述符。

SIFT(Scale Invariant Feature Transform)算法[9]是David G.Lowe在1999年首先提出的用于目标识别的一个方法,首先对两幅图像进行尺度和灰度空间检测,确定关键点位置和所处尺度,然后,用关键点邻域梯度的主方向作为方向特征生成关键的SIFT特征向量进行匹配,但是这种算法仍然存在误匹配。2004年,Lowe提出了尺度不变特征变换,使其对尺度、旋转、亮度、仿射、噪音等都具有不变性。

用最近邻算法(NN)对图像间的特征点进行匹配。该方法主要是根据特征点的最近邻距离与次近邻距离的比值来判断特征点间是否匹配,取一个阈值,如果低于该阈值则认为特征点间匹配。NN方法的关键是搜索特征点的最近邻和次近邻。如图2所示。

由于特征点提取时存在一定的精度误差,提取出的特征点会比求解方程式所需的多很多,另外,自动提取和匹配得到的匹配特征点集合中也难免存在误匹配点或伪匹配点,由于引起误匹配点存在的原因是特征检测算子把图像的某一部分错误地认定为特征,一般的参数估计等方法都不能将其排除,因此需要一种容错能力很强的算法来优化特征点集合,所以本文中使用估计算法RANSAC[10]。

RANSAC的基本思想是,在进行参数估计时,不是不加区分地对待所有可用的输入数据,而是首先针对具体问题设计出一个搜索引擎,利用此搜索引擎迭代地剔除掉那些与所估计的参数不一致的输入数据,即所谓的误配点,然后利用正确的输入数据来估计参数。

图3是经过RANSAC算法提纯之后的配准点。

1.3 图像融合

图像融合技术是将配准后的图像序列进行拼接、增加图像信息量并消除接缝的过程。由于之前已经进行图像的校正,减少了待拼接图像的色差,这使得图像的融合更加简单。

本文采用加权平均的融合算法[11],使光强或颜色逐渐过渡,以避免图像的模糊和明显的接缝。本文选取0-1加权融合算法,在重叠区域中,权重函数d1由1渐变到0,d2处由0渐变到1,由此实现了在重叠区域平滑过渡。该方法的主要思想是:在重叠部分由前一幅图像慢慢过渡到第二幅图像,即将图像重叠区域的像素值按一定权值相加合成新的图像。假如f1,f2分别表示两幅待融合的图像,d1(x),d2(x)为加权函数,f表示融合后的图像,那么有:

这里,权重函数满足d1+d2=1,0

0-1加权融合算法可以得到令人满意的融合效果,但是对于较大图片的融合,采用0-1加权融合的算法消耗的时间过长。例如,本文试验在频率为1.73 Hz的处理器、内存为2 GB的电脑上运行,对于1 000×700的图片拼接,需要时间为72.281 s。此时,本文采取更加简单快速的平均融合方法,即d1和d2均取值为0.5。此时1 000×700的图片在同一台电脑上运行的时间为36.8 s,明显提高了运行速度。但是平均融合算法可能会使融合图像出现明显的带状瑕疵。

比较0-1加权融合算法和平均融合方法,平均融合方法更加快速,但是融合效果可能存在瑕疵;0-1加权融合算法得到的融合效果更好,但是融合速度相对较慢。可以根据对融合质量和速度的要求选择恰当的融合算法。

2 拼接结果

本文针对有明显色彩和亮度差异的图片,提出了一种图像拼接算法。图4(a)是存在色差的原图像的拼接,由于原图像存在色差,导致融合后的图像有明显的拼接缝,严重影响了拼接效果。图4(b)是进行色彩校正后的图像的拼接,色彩校正之后,两幅图像间的色差有了明显的改善,融合后的全景图像效果较之前有了显著的提高。

3 结论

本文提出了一种基于特征点的自动拼接算法,该方法对于存在严重色差图像的拼接有良好的鲁棒性。对于获取的待拼接图像进行色彩和亮度补偿,得到适合色彩亮度一致的待拼接图像,并调整参数选择需要的亮度值。提取待拼接图像的SIFT特征点,采用最近邻算法进行特征点配准,进一步地采用RANSAC算法对配准点去伪运算,实现图像的准确配准。由于之前已经进行图像的校正,减少了待拼接图像的色差,这使得图像的融合更加简单。本文采用0-1加权融合算法和平均融合算法相结合的方法进行图像融合。平均融合方法更加快速,但是融合效果可能存在瑕疵;0-1加权融合算法得到的融合效果更好,但是融合速度相对较慢。可以根据对融合质量和速度的要求选择恰当的融合算法。由于SIFT算法计算量大,因此本文提出的拼接算法需要更多的内存和运行时间。未来的图像拼接可以改善图像配准算法以节省内存和运行时间。

注:本文通讯作者为易子川。

摘要:针对有明显色彩和亮度差异的图片,在进行传统的图像拼接后,会产生肉眼可见的拼接缝,严重影响拼接效果。因此,提出一种针对存在色差的图像拼接算法。首先,计算相邻图片间的色彩校正参数和每个彩色通道的全局色彩调整参数,选择适合的颜色和亮度,对每一幅图片进行色彩校正。其次,引入SIFT和RANSAC算法,实现了图像的准确配准。最后,采取0-1加权融合算法和平均融合算法结合进行图像融合,得到最终的全景图像。实验结果表明,由于已经进行图像间的校正,减少了待拼接图像的色差,使得图像的融合更加简单。该算法对于存在色差的图片序列可以实现无缝快速的拼接,并且可根据需要调整图像的色彩和亮度。

关键词:图像拼接,色彩校正,SIFT,图像融合

参考文献

[1]Jin J S,Zhu Z,Xu G.A stable vision system for moving vehicles[J].IEEE Transactions on Intell Transport Syst,2000,1(1):32-39.

[2]SU M,WANG W H,CHENG K.Analysis on multiresolution mosaic images[J].IEEE Transactions on Image Processing,2004,13(7):952-959.

[3]LEVIN A,ZOMET A,PELEG S,et al.Seamless image stitching in the gradient domain[C]//Proceedings of 2004 European Conference on Computer Vision.Prague,Czech Republic:ECCV,2004:377-389.

[4]AGUIAR P M Q.Unsupervised simultaneous registration and exposure correction[C]//2006 IEEE International Conference on Image Processing.[S.l.]:IEEE,2006:361-364.

[5]UYTTENDAELE M,EDEN A,SZELISKI R.Eliminating ghosting and exposure artifacts in image mosaics[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.[S.l.]:IEEE,2001:509-516.

[6]AGARWALA A.Efficient gradient-domain compositing using quadtrees[J].ACM Transactions on Graphics(Proc.SIGGRAPH),2007,26(3):941-945.

[7]LEVIN A,ZOMET A,PELEG S,et al.Seamless image stitching in the gradient domain[J].Lecture Notes in Computer Science,2004,3024:377-389.

[8]BROWN M,LOWE D G.Automatic panoramic image stitching using invariant features[J].International Journal of Computer Vision,2007,74(1):59-73.

[9]LOWE D G.Distinctive image features from scale-invariant keypoints[J].International Journal of Computer Vision,2004,60(2):91-110.

[10]Fischler M A,Bolles R C.Random sample consensus:a paradigm for model fitting with applications to image analysis and automated cartography[J].Communication Association Machine,1981,24(6):381-395.

高速数字图像 篇3

图像采集系统在实际应用中多呈现为适应一种或多种通信协议的图像采集卡, 图像采集卡作为机器视觉系统中关键的一环, 是图像采集单元 (多为工业数字照相机) 与数据处理单元 (工业控制计算机或者其他嵌入式处理系统) 之间的接口, 直接决定了图像数据采集的速度、精度、传输距离等重要参数, 从而影响整个机器视觉系统总体性能[1]。图像数据传输采用的通信协议决定了图像采集卡的种类与性能, 基于一种通信协议设计的图像采集卡的价格及其性能则决定了它的应用范围。综合考虑通信协议的速度、成本等因素, 在工业应用环境中, 多采用基于IEEE1394 (Fire Wire) 总线、千兆以太网或者Camera Link总线等协议的图像采集卡。本文即来源于基于机器视觉的某自动化液态药剂异物检测系统, 该系统中采用了基于Camera Link总线协议的相机及图像采集卡, 高速采集生产线上液态药剂照片, 进行图像处理后对有异物的药剂进行剔除[2]。该系统换代型号提出了更高的技术要求, 相应的图像采集卡也进行了重新设计。根据新的设计要求, 对本次设计的图像采集系统进行了子系统分立设计、分立仿真、系统集成和系统级仿真, 并设计生产了一套试验样板, 对系统样板进行综合测试, 满足设计要求。

1 图像采集系统概述

作为图像采集单元 (工业相机) 与图像处理单元的接口, 图像采集系统接收工业相机的数据, 进行分析整理后把图片像素数据送到图像处理单元的存储器中。工业相机传来的数据中除了图片像素数据以外还包括图像同步信号、相机控制命令、相机设置参数等数据[3]。所有的数据都按照通信协议的规则进行编码和传送, 而图像采集卡需要对这些数据进行分离, 提取其中的图片像素数据送给图像处理单元, 接收并发送相机控制命令和相机设置参数, 对相机进行控制, 以满足工作要求。图像处理单元对图像信息进行适当处理, 进一步发送到上位机或者完成处理后输出显示, 发出控制信号等。如图1所示图像采集卡原理框图。

2 FPGA系统设计

本设计中FPGA系统可分为以下几个子模块: (1) ANSYC_FIFO, (2) TRIGER, (3) COUNTER, (4) SRAM, (5) LCD, (6) VGA, (7) LED, (8) FIFO1、FIFO2, (9) Nios。下面详细介绍各模块设计。

2.1 ANSYC_FIFO模块

该模块作为相机Camera Link接口的图像数据、同步信号、像素时钟的输入接口, 接收图片数据并缓存后以系统频率输出数据。如图2所示。

其中, ASYNC_FIFO是顶层设计, 调用并实例化了两个FIFO, 分别是FIFO_1和FIFO_2。这两个FIFO是基于IP软核, 通过Mega Wizard生成的, 数据位数为8位, 深度1k。具体工作原理为, 当相机接收到触发信号后, 相机内部操作快门, 获得一幅图片数据, 经过已设定的延时后, 通过Camera Link接口输出图像数据。经过DS90CR288解串后成为并行数据。两个同步信号FVAL、LVAL分别指示正在传输的图像数据是否有效:当LVAL为高时, 表示正在输出一行数据, 当FVAL为高时, 表示正在输出一帧数据。一帧包含494行, 在两行数据之间LVAL会有短暂低电平。故当FVAL为高时, LVAL呈现周期、占空比固定的正脉冲。图像数据则在每个像素时钟的下降沿更新。

2.2 TRIGER模块

该模块是相机触发信号发生器。该模块接受COUNTER输出的特定按键信号后, 发出一个符合相机要求的触发脉冲, 通过Camera Link接口送给相机。由于Camera Link接口内部是LVDS信号, 故触发信号由FPGA上两个引脚输出, 分别作为LVDS的正相端与反相端。相机每接到一个触发信号 (周期大于15.8 ms) , 便会拍摄一张照片并传送。此模块结构示意图如图3所示。

其中, SYSCLK为系统时钟输入, RST_B为复位信号输入, PRESS为按键信号, TRIG_SIG-NAL_P为触发信号输出, 此信号为LVDS信号, 由FPGA自动生成正相与反相触发信号, 送给相机。

相机对于触发信号的要求是持续时间大于10μs的正脉冲, 相机接收到触发信号后启动快门, 拍摄照片, 于触发脉冲下降沿固定延时后输出这一帧数据。由于相机输出数据需要时间, 故每两次触发之间至少需要间隔16.7 ms。

PRESS信号既可以接受通过按动按键, 由COUNTER检测到后发出的, 也可以由嵌入式CPU软核按照控制需求发出。

2.3 COUNTER模块

该模块是按键信号采集器, 输入信号为系统板上四个独立按键, 系统时钟信号和复位信号, 输出信号为四路按键触发信号, 按键次数计数、LED位选信号。此模块示意图如图4所示。

其中, SYSCLK为系统时钟输入, RST_B为系统复位输入, KEY[3:0]为按键引脚输入, 接收四位按键动作信号;LED_DATA[7:0]为7段LED数码管的段选输出 (LED_DATA[7]为小数点控制位) , LED_SEL[3:0]为4个7段数码管的位选输出。四位LED数码管采用动态显示。在本设计中, 数码管显示只为检测是否有按键按下, 与系统性能无关, 因此只用了一位数码管, 显示的触发次数为0~9, 指示触发状态。KEY_PRESS[3:0]为按键触发信号输出, 当KEY[3:0]所连接的按键被按下后, 该信号对应位输出一个正脉冲, 高电平持续时间为一个系统时钟周期。只到被按下的按键被释放以前, 正脉冲只输出一次, 且高电平持续时间不受按键按下时间的影响。

2.4 SRAM模块

该模块是外部存储器SRAM与系统的接口, 接收由ASYNC_FIFO输出的数据和数据有效信号, 将一帧图片存入SRAM中。或者读出SRAM中的数据, 由数据输出口输出。此模块示意图如图5所示。

其中, SYSCLK为系统时钟输入, RST_B为系统复位输入。KEY_TRIG为相机触发信号, 在该模块中作为SRAM读写地址复位信号。KEY_READ为数据读出触发信号。DATA_IN[7:0]为数据输入端口, DATA_IN_EN为输入数据有效信号, 当此信号为高时, 表示输入的为有效数据。DATA_OUT[7:0]为读出数据输出接口, DA-TA_OUT_EN为输出数据有效信号, 当此信号为高时, 表示正在输出有效信号。SRAM_DATA[7:0]为SRAM数据输入输出端口。SRAM_CS_B为SRAM片选信号。SRAM_WE_B为SRAM输入使能信号, SRAM_OE_B为SRAM输出使能信号。SRAM_ADDR[18:0]为SRAM读写地址输出端口。

在本设计中, SRAM采用ISSI公司的IS61LV5128AL, 该芯片为512k*8bit的高速CMOS静态RAM (SRAM) , 读写时间为10~12 ns, 全静态操作, 不需要时钟信号, 不需要刷新。

2.5 LCD模块

此模块是LCD显示器的接口, 输入为系统时钟、系统复位、8bit×1数据, 数据有效信号。输出为用于控制LCD显示的各个控制位和数据总线。此模块示意图如图6所示。

其中, SYSCLK为系统时钟输入, LCDCLK为LCD数据时钟输入, RST_B为系统复位输入, DA-TA_IN[7:0]为8bit×1显示数据输入, DATA_EN为显示数据有效标志。LCD_RST为LCD复位输出, LCD_RS为LCD命令、数据控制信号, LCD_CS为LCD片选信号, LCD_RD为LCD读写信号, LCD_WR为写入LCD数据锁存信号。

其中VGA、LED、FIFO1、FIFO2、Nios模块设计在此不做详细介绍。

3 基于Model Sim的FP-GA功能仿真及逻辑分析

本次设计对FPGA系统功能和子模块进行了仿真, 下面以ASYNC_FIFO模块为例说明仿真过程。

输入信号:SYSCLK, PIXCLK, RST_B, FIFO_CLR, FVAL (模拟测试, 并未包涵494个LVAL) , LVAL。输出信号:DATA_OUT, DA-TA_EN.内部监视信号:EMPTY_1, EMPTY_2, ALFULL_1, ALFULL_2, DATA_IN_1, DATA_IN_2, Q_1, Q_2, RD_FIFO_X, WR_FIFO_X. (X代表1或者2) 。

时序仿真如图7所示。

信号说明:SYSCLK:系统时钟, RST_B:系统复位信号 (下同) 。PIXCLK:像素时钟, FIFO_CLR:FIFO清零信号, FVAL、LVAL:帧同步、行同步信号。DATA_OUT:数据输出, DA-TA_EN:数据输出有效标志, EMPTY_X:FIFO_X读空信号, ALFULL_X:FIFO_X写满信号, DA-TA_IN_X:FIFO_X数据输入, Q_X:FIFO_X数据输出, RD_FIFO_X:FIFO_X rdreq信号, WR_FIFO_X:FIFO_X wrreq信号。

从图中可以看出, 信号变化符合预期摄像, 满足设计要求。同样, 用不同的信号对各子模块和系统进行仿真, 仿真结果满足设计要求。

4 结束语

通过仿真和测试运行结果看, 系统运行稳定, 帧频50fps, 图像输出流畅, 没有明显数据丢失现象, 图像传输速率快, 传输稳定, 且有充足的升级余量。相机可按需配置, 配置程序简单, 可触发拍照, 拓展了应用范围。系统初步运行结果显示, 本设计达到了设计要求。由于高速图像采集系统是高速机器视觉系统的关键部分, 也是高速机器视觉技术第一道难关, 本次设计的系统稳定可靠, 为高速图像采集系统设计提供了一个参考。

参考文献

[1]原魁, 肖晗, 何文浩.采用FPGA的机器视觉系统发展现状与趋势[J].计算机工程与应用, 2010, 46 (36) :1-6.

[2]王冠.面向CPLD/FPGA的Verilog设计[M].北京:机械工业出版社, 2007.

高速数字图像 篇4

关键词:高速摄像机,Visual C++,技术

引言

使用高速摄像机的光测经纬仪可以使测角数据信息和图像同步输出, 扩大了光测的应用范围。论述了利用VC++对磁盘文件的操作功能将高速摄像机图片和跟踪转台的两种实时运动信息合成为一种新的数据形式, 并在此基础上利用VC++的DIB访问函数和多媒体定时器开发出了相关的连续显示功能, 弥补了高速摄像机记录图片信息不足的缺陷, 并通过连续显示功能更加直观地将图像及信息显示出来。

1 高速摄像机存储图像的结构

所述的高速摄像机某型经纬仪上使用的高速像机。它具有4G的内存, 可响应外同步, 采用了SR-CMOS图像传感器芯片技术, 最大分辨率为1024×1024像素, 当摄像速度为1000帧/秒时可以连续拍摄4秒。图像存储采用的CINE文件格式 (后缀为:*.cin) 分为:CINE文件头、BMP文件图像头、相机设置信息、可选部分 (标记部分包括捕获信号, 每一幅图像的IRIG时间) 、图像位置指针表、一系列的图像对象 (附加信息和点阵信息) 六大部分。

2 利用VC++6.0合成数据

通过对CINE文件结构的研究, 可发现注释区域的第二部分虽在默认生成的CINE文件中是空缺的, 但由于其在结构中已定义, 可将实时信息存放在此。同时注释区域的第一部分 (注释区域的大小) 应作相应的调整。例如:当Annotation (译:注解, 注释) 数组为15个字节时, Annotation Size新=Annotation Size旧+15=8+15=23字节。

注释区域大小的变化直接会影响其后像数阵列的起始地址, 从而指向图像地址表的指针指向的地址也要相应的调整 (从第二个指针开始指向的地址内容=原地址内容+15) 。简言之, 合成实时数据时只需对CINE文件的第五、六部分做必要的改动即可。

VC++提供了CFile类来实现对磁盘文件的操作。与CWnd是所有窗口类的基类类似, CFile是MFC所有文件类的基类, 它提供无缓冲二进制文件的输入输出服务, 并通过其派生类支持文本文件、内存文件和Socket文件。可直接通过CFile的构造函数来打开磁盘文件, 同时可以用标志位指定打开方式 (只读、只写、读写等) 。使用CFile::Read () 和CFile::Write () 函数可实现对文件的顺序读写, 它们都从文件的当前位置开始, 文件刚开始时, 当前位置为文件头, 文件当前位置随着文件读写的字节数而移动。Seek () 函数可以实现对文件的定位, 它把文件位置相对于基准移动一个偏移量 (即改变文件的当前位置) 。

部分调用方法如下:

file.Open ("v4.CIN", CFile::mode Read) ;//以只读方式打开一个CINE文件

file.Open ("v4.cdm", CFile::mode Read Write|CFile::mode Create|CFile::share Deny None) ;//创建一个新文件类型:cdm (自定义的图片和实时信息合成后的文件后缀)

file.Read (p DIB, dw Bits Size) ;//读出文件的内容到p DIB指向的地址中

file.Write (p DIB, Off Image Offsets) ;//从p DIB指向的地址开始读出Off Image Offsets个字节的内容, 并写到指定文件中

file.Write (p DIB, 4) ;//写注释区域大小

file.Write (angleandfocal, 15) ;//写方向焦距信息

file.Close () ;//关闭文件

这样, 合成后的图像便附带了实时信息。但相机提供的函数不具有同时显示图像和附加信息的功能, 下面用VC++6.0实现连续显示功能。

3 利用VC++6.0实现新文件类型的演示

相对数据合成而言, 合成后图像的慢速回放的编程实现要复杂一些。具体实现应分图像的显示和每幅图像的定时替换两大步。

3.1 图像的显示

从第二部分CINE文件格式的描述介绍可知, 其结构第六部分的像素阵列实际上是连续存储的多个DIB (Device-Independent Bitmap设备无关位图, 标准的Windows位图格式) 。可以利用Windows支持的一些重要DIB访问函数来实现合成图像的显示。但是这些函数都还没有封装到MFC中, 而且参数大多较为复杂, 一般需要构造DIB函数库, 以便使用时可以直接调用。由于在本例中, 只使用了显示功能。故可以省去构造DIB函数库这一步, 在程序中直接使用。但必须在所编辑的程序的头文件里加上以下声明:

DECLARE-HANDLE (HDLB) ;//DIB句柄

#define PALVERSION 0×300//DIB常量

本例中, 主要使用的DIB函数是Stretch DIBits函数, 它可以缩放显示DIB于显示器和打印机上。

其原型为:int Stretch DIBits (HDC hdc, int XDest, int YDest, int n Dest Width, int n Des Height, DWORD du Width, int XSrc, int YSrc, DWORDdw Height, int n Src Width, int n Src Height, CONSTVOID*lpv Bits, CONST BITMAPINFO*;

p Bitsinfo, UINT i Usage, DWORD dw Ro) 。另外, 本例中还需用到Set Stretch Bit Mode函数, 其功能是设置显示模式。

3.2 图像的定时替换

如果按照传统的顺序编程方法, 将是显示一幅图片后刷新转台信息, 等待一段时间后, 再显示另一幅图像。但由于Windows为基于消息机制的系统, 任何事件的执行都是通过发送和接收消息来完成的, Update Data (刷新参数函数) 的运行也不利外。它发送一个消息至消息队列中便认为已执行完毕, 转向下一个命令 (显示下一幅图) 。可是程序需要的刷新参数功能并没有实现, 只有当前面的消息响应后才会响应本消息 (真正的实现) 。然而, 由于主线程占用计算机的CPU直到最后一幅图显示完毕才会释放, 这样发送到消息队列中的刷新参数消息就暂时被挂起, 得不到实时处理, 直到主线程结束才会相应队列中的刷新参数消息。故使用传统的方法必然会出现图片连续显示 (某个进程) 而转台信息一直不刷新, 直到图片显示完毕, 才出现最后一幅图的转台信息的情况。

因此, 不能简单地采用顺序编程方法来实现图像和附加信息地同时显示。采用多媒体定时器可解决这一问题。多媒体定时器由微软公司在其多媒体Windows中提供的底层API支持, 其精度非常高, 与硬件中断相当, 其优先级也远远高于一般的Windows Timmer定时器。多媒体定时器单独的使用一个线程, 一旦定时时间到将触发显示和参数的刷新。由于多媒体定时器没有始终占用计算机的CPU, 故可以做到图像和附加信息的同时显示。

在使用多媒体定时器时要注意以下几点:

a.多媒体定时器的设置分辨率不能超出系统许可范围。

b.在使用完定时器以后, 一定要及时删除定时器及其分辨率, 否则系统会越来越慢。

c.多媒体定时器在启动时, 将自动开辟一个独立的线程。在定时器线程结束之前, 注意一定不能再次启动该定时器, 不然将造成死机。

4 结论

介绍的高速摄像机记录图像事后合成与回放方法在试验中运行良好。其可行、快速的解决方法, 弥补了高速摄像机图像信息的不足, 满足了工程实际的需要, 并给事后数据处理带来了便利, 具有较高的使用价值。

参考文献

[1]何照才, 胡保安.光学测量系统[J].2002.

[2]姜志, 姚力生.高速电视的发展现状[J].光子学报, 2002.

[3]何斌, 马天宇, 王运坚.Visual C++DigitalIm-age Processing[J].2001.

串口传输数字图像 篇5

串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时, 字节数据转换成串行的位。接收数据时, 串行的位转换为字节数据。串行技术应用广泛, 如远程监控, 工业自动化和软件通信等多个领域。

二、串口通信的原理分析

2.1基于WINDOWS的VC++串行通信编程

利用VC++编制串行通信程序有三种方法:

一是采用Win32应用程序编程接口 (API) 所提供的串口通信函数, 用SDK思路编写;

二是用Active X通信工件MSComm开发串行通信程序;

三是采用C++的MFC思路, 将Win32串口通信的API函数封装在一个类中实现通信。

2.2串行接口标准

串行通信线路连接数, 要解决两个问题:

一是计算机与外设之间的物理接口标准, 属于OSI中的物理层, 包括RS-232、RS-422及RS-485标准等。

二是按接口标准设置计算机与外设之间串行通信的接口电路。

三、串口通信整体设计方案

3.1面向对象的思想

面向对象的思想是把信息系统本身看作是一系列离散的对象的集合, 这些对象包括数据结构, 及数据结构的操作或行为。若对象之间由事件触发, 引起互通消息实现互操作, 设计出的软件是模块化的, 可扩充和可移植的。

面向对象的程序设计以“对象”和“数据结构为中心, 用“对象”表现事物, 用“类”表示对象的抽象, 用“消息传递”表现事物的相互联系, 少用“方法”表现处理事物的过程。

3.2 VC下的32位串口应用程序

Windows32位下的串口应用程序用3种方法实现:MSComm控件;用API通信函数或者CSerial Port类。

3.2.1使用MSComm控件方法

VC++6.0提供的MSComm控件通过串口端口发送和接收数据, 为程序提供串口通信功能。在当前对话框中插入MSComm控件, 然后在Class Wizard中为创建的通信控件定义一个成员对象 (CMSComm m_Com) , 通过该成员对象即可设置MSComm控件属性。

MSComm控件需要设置常用属性, 即初始化串口, 打开串口, 读写串口。

3.2.2使用32位的API通信函数

在VC++6.0下, MFC应用程序线程用CWin Thread对象表示。VC++把线程分成两种:用户界面线程和工作者线程。用户界面线程提供界面和用户交互, 用于处理用户输入及其相应的各种事件和消息, 工作线程处理程序的后台任务。在Main Frm.cpp中定义全局变量, 然后在程序中创建一个串口, 进行相应的串口参数设置, 启动一个工作者线程, 用来监视串口状态, 看有无数据到达、通信有无错误;用户界面线程可专心进行数据处理、提供友好的用户界面, 最后为工作者线程编写一个全局函数, 主要完成数据接收工作。

3.3图像传输设计方案

利用MATLAB软件将一幅图像转换成矩阵, 然后用串口输出, 从COM1输入图像矩阵并发送, 在COM2端可以接受到该图像矩阵, 通过MATLAB还原可以得到原图像。用虚拟串口软件VSPD模拟串口, 同时添加一对虚拟串口是设定通过非MODE (三线制) 串口连接线连接在一起的, 像两个真实的物理串口可以进行通信, 可节约成本, 提高连接的可靠性。

四、结束语

实验表明, 通过MSComm控件通过串口端口可以实现发送和接收图像数据, 在传输过程中可实时进行更新显示, 图像传输后将其保存为BMP格式文件, 可以进行后续处理使用。

摘要:随着现代信息技术的发展以及计算机网络的广泛应用, 计算机通信技术以及日趋成熟, 串口通信是一种灵活方便可靠的通信方式。本文通过VC++软件的MSComm控件编程来控制PC与PC串口之间的数据传输加以说明, 采用虚拟串口的方式在一台PC机上的不同串口之间传输数据。

关键词:串行通信,MSComm控件,多线程,虚拟串口,VC++

参考文献

[1]李长林高洁, Visual C++串口通信技术与典型实例, 清华大学出版社, ISBN 7-302-12903-7, 2006-05-01.

[2]陈淑珍, 石波.基于Windows多线程环境下的串口通信[J].计算机工程与设计, 2000-3.

[3]田敏郑瑶李江全.Visual C++数据采集与串口通信测控应用实践, 人民邮电出版社.ISBN978-7-115-22611-2, 2010-6.

数字图像压缩综述 篇6

数字图像压缩的概念

在当前这个信息化社会中, 多媒体技术已被人们频繁使用, 多媒体信息主要是由图像、文本和声音三大元素组成。图像作为其主要元素之一, 发挥着越来越重要的作用;而传输图像需要占用大量的数据空间, 严重影响传输速率和实时处理量, 因而我们要将图像进行压缩, 来解决这一问题。

数字图像压缩是以尽可能少的比特数代表图像或图像中所包含的信息量的技术, 图像通过压缩处理去掉其中的数据冗余、符号冗余、视觉冗余等各种冗余信息, 提高传输速率, 节省存储空间。

1 发展现状

目前数字图像压缩已取得了划时代的发展, 在国际上形成了一系列国际标准, 如JPEG标准。此标准是负责开发静止图像压缩标准的“联合图片专家组”于1989年形成的基于自适应DCT的JPEG技术规范的第一个草案, 后经多次修改, 最终在一年后形成国际标准。随着多媒体应用的不断增长, 为满足人们在图像压缩领域的迫切需要, 于2000年联合图片专家组又研究出新一代静态图像压缩标准——JPEG2000。系列的国际标准的提出标志着数字图像压缩技术已由学术研究转为产业化, 逐步走向成熟。它使通信、广播、计算机产业的界限变得模糊, 促使现有信息产业的结构发生巨大改变, 当前分形图像压缩和小波图像压缩是研究的新方向。

2 图像压缩基本方法

图像压缩有两种基本的压缩方法:一种是有损数据压缩;另一种是无损数据压缩。有损数据压缩一般采用变换编码方法, 例如, 基于离散余弦变换 (DCT) 的变换编码方法, 如JPEG;还有基于小波变换的方法, 例如JPEG2000、EZW、SPIHT等等。JPEG是有损数据压缩。通过DCT变换后选择性丢掉人眼不敏感的信号分量, 实现高压缩比率。PNG是无损数据压缩中图片压缩常采用的格式, 采用LZ77派生的无损数据压缩算法。而音频压缩格式Fl LAC、TTA和视频压缩格式HUFFYUV也是无损数据压缩常采用的压缩格式。

2.1 有损数据压缩

有损数据压缩是一种破坏性压缩。它在压缩过程中, 允许有一定信息的失真, 但此失真对原图像影响较小, 得到一个与原图像相近似的图像, 但压缩比却大大提高了。有损数据压缩常用于因特网、流媒体、视频以及电话领域。有损数据压缩方法有色彩空间、色度抽样、变换编码、分形压缩。

2.2 无损数据压缩

无损数据压缩采用数据的统计冗余进行压缩, 使数据通过其压缩后信息没有受到损失, 均可还原到压缩前的原样。比如在工程制图、计算机程序、医疗图像、指纹图像等方面此方法得到广泛应用。经常使用的无损压缩方法有Shannon-Fano编码、Huffman编码、游程 (Run-length) 编码、LZW (Lempel-Ziv-Welch) 编码和熵编码法等。无损压缩的优势有100%的保存, 没有任何信号丢失;音质高, 不受信号源的影响;转换方便。无损压缩的不足是缺乏硬件支持, 占用空间大, 压缩比不高。

3 图像压缩算法

比较常用的数字图像压缩方法有:基于傅立叶变换的图像压缩算法、基于离散余弦变换的图像压缩算法、基于小波变换的图像压缩算法。此外还有NNT (数论变换) 压缩、基于神经网络的压缩方法、Hibert扫描图像压缩方法、自适应多相子带压缩方法等。下面简单介绍近年来任意形状纹理编码的几种算法。

3.1 形状自适应离散小波变换

SA-DWT编码主要包含SA-DWT和零树熵编码的扩展以及嵌入式小波编码 (EZW) 。

其中经过SA-DWT之后的系数个数, 同原任意形状可视对象的像素个数相同;EZW则是采用渐进式量化和嵌入式编码, 算法复杂度低, 打破了常规, 即使用低复杂度的算法就可以完成高效的压缩编码器的编码。

3.2 Egge r方法

Egger方法使用了小波变换的局域特性, 把可视对象的行像素推到与边界框的右边界相平齐的位置, 然后对每行的有用像素进行小波变换, 接下来再进行另一方向的小波变换。此方法可能引起重要的高频部分同边界部分合并, 不能保证分布系数彼此之间有正确的相同相位。

3.3 形状自适应DCT (S A-DCT) 算法

SA-DCT把一个任意形状可视对象分成的图像块, 对每块进行DCT变换, 它实现一个类似于形状自适应Gilge DCT变换的有效变换, 但它比Gilge DCT变换的复杂度要低。可是, SA-DCT也有缺点, 它把像素推到与矩形边框的一个侧边相平齐, 因此一些空域相关性可能丢失, 这样再进行列DCT变换, 就有较大的失真了。

4 结论

今天, 数字图像压缩技术取得了卓越的成果, 它广泛应用于网络互联、媒体传播、医疗图像等生活的各个方面, 由于它的存在, 使我们大大减少了传输数量, 提高了通信速率, 使生活更加便捷, 同时也使多媒体技术上了一个新的台阶, 数字图像压缩技术在更深更广层次上的应用值得我们进一步研究。

参考文献

[1]刘方敏等.JPEG2000图像压缩过程厦原理概述[J].计算机辅助设计与图形学报, 2002.

[2]T Sikora, B Makai.Shape-adaptive DCT for genericcoding of video[J].IEEE Trans.Circuits Syst.Video Technol., 1995, 5 (1) :59-62.

[3]M Bi, S H Ong, Y H Ang.Comment on“Shape-adaptiveDCT for generic coding of video”[J].IEEE Trans.CircuitsSyst.Video Technol., 1996, 6 (6) :686-688.

[4]P Kauff, K Schuur.Shape-adaptive DCT with block-basedDC separation and Delta DC correction[J].IEEE Trans.CircuitsSyst.Video Technol., 1998, 8 (3) :237-242.

[5]吴乐南.数据压缩[M].电子工业出版社, 2005.

[6]张晓娣等.新一代的静止图像压缩标准JPEG2000[J].电信科学, 2001.

数字图像运动检测 篇7

关键词:数字图像,运动检测,图像匹配

1、引言

“数字图像处理”[1]就是对一个物体的数字表示施加一系列的操作, 以得到所期望的结果。处理的过程中能改变图片的样子使其更称心或更具吸引力, 或者达到某种预定的目标。数字图像处理离不开计算机, 因此又称计算机图像处理。数字图像处理有很多优点[2], 主要有: (1) .精度高:不管是对4bit还是8bit和其他比特图像的处理, 对计算机来说几乎是一样的。 (2) .再现性好:不管是什么图像, 它们均用数组或集合表示。 (3) .通用性、灵活性高:不管是图像还是X线照片、红外热成像、超声波图像等不可见光成像, 尽管这些图像成像体系中的设备规模和精度各不相同, 但当把图像信号直接进行A/D变换, 或记录成照片再数字化, 对于计算机来说都能用二维数组表示, 不管什么样的图像都可以用同样的方法进行处理, 这就是计算机处理的通用性。

2、背景提取

背景提取是一个比较的过程, 实现的思路为:按图片获得的顺序分析几幅图片, 如果检测到的这几幅图片上面的内容没有太大变化, 则可以把整个图片作为背景。

2.1 图像数据读取

首先要从一个BMP文件中读取图像信息, 并把图像显示在视图区。BMP文件有两种显示方式[3], 一种将BMP文件读成DIB格式 (设备相关型的位图格式) , 当显示时, 一种是直接将D I B显示, 另一种是将DIB转化为DDB (设备无关型位图格式) , 再显示D D B。其中, D D B存在很严重的问题, DDB中没有保存位图的调色板, 这就造成了一个使用的前提——位图必须在同类设备中显示, 并且此设备在位平面或彩色上与原设备有同样的彩色安排, 否则色彩可能完全失真。但是, D I B就是B M P文件去掉BITMAPFILEHEADER (文件头) , 因此把BMP读入到DIB数据结构中再显示十分方便。只要读入BITMAPINFO结构和图像数据即可。并且DIB的显示方法可以调用Set DIBits To Device函数。直接将DIB位图的图像输出到设备, 用于显示DIB。因此在本文中, 直接将BMP显示为DIB位图形式。而且, 在本文中要读取的不止一幅图片, 所以要设置不同图片 (如背景, 前景) 的显示区域, 同时还要注意及时释放无用的文件句柄, 避免内存泄漏。图片数据读取有两种情况, 第一种情况是在进行背景提取的时候读取图片, 第二种情况是在进行运动物体判定的时候读取图片。得到每行像素所占用字节数的函数BytePerLine。得到像素点数据在整个数据区中偏移的函数PixelOffset。图片颜色数据读取的函数Read DIBFile。数据读入到内存后的显示界面如图1所示。

2.2图像的中值滤波

图像在拍摄、扫描或者传输过程中总会添加一些噪声, 这样就影响了图像的质量, 需要除去这些噪声提高图像的质量便于以后的图像处理, 这个过程也叫做图像的平滑。中值滤波是一种局部平均去噪声的平滑操作。所谓局部平滑法就是一种直接在空域上进行平滑处理的技术。认为图像是由许多恒定的小块组成, 相邻像素间存在很高的空间相关性, 而噪声则是相对独立的。因此, 可用像素邻域内的像素平均灰度值代替该像素原来的灰度值, 实现图像平滑。那中值滤波它就是把跟当前处理的像素点相关的像素点的数值进行排序, 然后把中间数值赋给当前处理点。它对脉冲干扰和椒盐的抑制效果好。同时图像的平滑可采用多种滤波方法, 比如低通滤波, 高斯滤波等。值得一提的是, 中指滤波实现的图像平滑不会破坏图像的边缘信息。这对要进行的边缘提取的操作是十分必要的。

中值滤波也是一种非线性的图像平滑方法, 它对一个滑动窗口内的诸像素灰度值排序, 用其中值代替窗口中心像素的原来灰度值。中心像素的灰度就是灰度最大的那个对于离散的脉冲信号, 当其连续出现的次数小于窗口尺寸的一半时, 将被抑制掉, 否则将不受影响。所以, 在进行中值滤波的时候要先使用尺寸较小的窗口在选用大的窗口。在本文中, 采用的是3*3的滤波模板。但是在其他相关应用中, 可以根据需要设定相应的滤波模板对图像进行平滑处理。

2.3 图像灰度化

图像灰度化的过程就是彩色图像转换为黑白图像的过程, 因为灰度图像比彩色图像更加容易进行运算, 所以经常要把彩色图像转换成灰度图像[4]。这个转换没有确定的标准, 一般来说, 都是根据原来的图片中的RGB三个分量以及它们的权重来求取的。本文中对三个分量是按照0.39、0.50、0.1的权重来分配的。

灰度化处理后的效果图如图2所示。

2.4 图像梯度的获取

图像的信息一般都集中在像素值变化比较剧烈的地方, 也就是说图像的边缘地区的像素呈现连续性的变化, 所以灰度最高的点 (即在原图像中梯度值最高的点) 必然在边界上, 可以把这一点作为边界跟踪过程的起始点。图像的梯度就是图像中像素之间变化的大小, 它是一个微分的过程, 在离散的图像处理中, 都是用像素值的“差”来代替像素值的“导”。如果一个像素落在图像中某一个物体的边界上, 那么它的邻域将成为一个灰度级变化的带。对这种变化最有用的两个特征是灰度的变化率和方向, 它们分别以梯度向量的幅度和方向来表示。边缘检测算子检查每个像素的邻域并对灰度变化率进行量化, 通常也包括方向的确定。

梯度的求法也有很多种, 其中大多数是基于方向导数掩摸求卷积的方法。比较有名的算子有sobel算子、拉普拉斯算子等。一个无噪声的图像具有陡峭的边缘, 可用拉普拉斯算子将它们找出来。但由于噪声的存在, 在运用拉普拉斯算子之前需要先进行低通滤波。低通滤波处理的使用低通滤波器。信号或图像的能量大部分集中在幅度谱的低频和中频段是常见的;而在较高的频段、感兴趣的信号常被噪声所淹没。因此, 低通滤波器就是起到一个能降低高频或分幅度的滤波器就能减弱噪声看的见的影响。而sobel算子是一个3*3算子, 对灰度渐变和噪声较多的图像处理得较好, 更可以扩展成八个方向上, 在实际操作上比其他的算子要简便, 步骤要省一些, 节省了操作空间。所以本文中就是用sobel算子来求梯度的。可以明显的看到, 求梯度之后, 图像中的平滑的区域变暗了, 而图像的边缘地区变亮了, 也就是说, 物体的边缘更加突出了。梯度化后的图像如图3所示。

3、图像匹配

3.1 图像特征区域的确定

要想进行图像的匹配, 必须要先确定一块用来匹配的区域, 因为不可能把两幅图像的所有像素进行比较, 那样计算量太大, 系统开销不允许。如何抽取特征区域也是相当重要的。如果特征找的不对, 图像匹配就不可能准确。从一个图片中提取什么样的特征, 将因不同的模式而异。特定区域的确定要先人为的设定判断条件。在这种情况下, 不能用像素点与点之间的距离, 也不是点与一组点间的距离, 而是一个统计距离。在本文中, 把像素点数值总数最大的一块区域作为特征区域 (在进行这个操作之前必须已经进行了求梯度的操作) 。因为这样的特征区域中的像素点数值变化明显, 更加容易进行匹配, 有利于减少误差。

3.2 得到特征区域的颜色信息

定位出特征区域的位置时, 处理的是求了梯度之后的图像, 而后面的运动检测要求使用原来图像的彩色区域信息, 所以光有了区域位置还不行, 必须得到该区域具体像素点的颜色信息。在系统实现的时候是把特征区域的颜色信息存放到一个数组里面, 这样后面要用它的时候只要查询数组就够了, 相对于查询整个源图像来说, 可以大大地节省计算时间。特征区域的颜色信息如图4所示。

3.3两幅图像的匹配

图像的匹配, 简单的说就是进行两幅图像的相似程度的判断。一般来说, 要比较的两幅图像的大小 (长宽) 是相等的, 需要判定的只是图像内容的相似情况。系统实现图像匹配的时候, 已经进行了图像特征区域的提取, 因此在进行匹配的时候, 图像对齐已经不成问题了。

具体实现的方法为:先把两个图像的特征区域的中心点对齐, 然后根据两个中心点在各自图像中的偏差, 来确定要比较的像素。接着处理那些要进行比较的像素, 得到它们的差值的绝对值, 最后累加这些绝对值, 观察它的大小, 如果绝对值非常大, 说明两幅图像的差异很大, 就认为不能匹配, 否则就认为匹配成功。

在求得一幅图片的特征区域之后, 就要把这幅图片和第二幅图片进行比较, 分析两幅图片的相似程度如何, 如果很相似, 说明图片上面没有运动物体, 可以把其中的一幅图片设定为背景 (当然也可以根据需要多比较几幅图片) 。

注意:把第一幅图片和第二幅图片进行比较的时候, 第二幅图片同样要进行中值滤波处理。如果第二幅图片上面没有第一幅图片上面的特征区域, 那就说明两幅图片是完全不同的, 系统直接返回去检查下一幅图片。如果第二幅图片上面有第一幅图片上面的特征区域, 那么系统将根据两个特征区域在各自图片中的相对位置, 进行图片相似度的比较。成功则确定背景, 不成功则查看下一幅图片, 继续进行背景确定的判定。

下面先看第一个过程:特征区域的匹配。在执行这一操作之前, 系统已经得到了第一幅图片的特征区域的信息。现在要做的事情就是查看第二幅图片里面有没有相同的 (或者说是非常相近) 的一块区域。具体算法如下:把已经得到的存放彩色特征区域信息的数组当作一个模板在第二幅图片上移动, 计算两个正方形内像素点的差值, 找到第二幅图片中差值最小的正方形区域。考察在这个区域里面两个正方形的像素颜色差值, 如果大于设定的上限, 则说明第二幅图片里面没有第一幅图片的特征区域, 如果小于设定的上限, 则把这块区域当作第二幅图片的特征区域。匹配得到的特征区域如图5所示。

完成了特征区域的匹配之后要进行的是相似度判定。相似度判定就是考察两幅图片像素颜色差别的大小。其中包括图片对齐的过程, 对齐是按照特征区域对齐的方法来进行的, 即把两个特征区域的中心点重叠, 然后考察两幅图片中对应像素的差值。最后根据得到的差值, 综合确定两幅图片是否相似。

3.4 特征区域的第二次判定

在进行特征区域确定的时候, 如果第一次判定失败, 则需要进行第二次判定, 因为有可能运动物体刚刚遮盖了被分析图片上的特征区域, 如果仅仅进行简单的一次判断, 就会出现错误。进行第二次判定的算法为:在背景图片中找到第二个特征区域, 而且这个特征区域必须和第一个特征区域有一定的空间间隔, 然后把找到的特征区域当作滤波模板, 在前景图片上找寻相似的区域。寻找过程和第一次判定相似。

4、物体的区域定位

要判断物体的运动轨迹, 首先就要从图片中提取出物体, 这就是物体的区域定位。物体的区域定位在系统中是很关键的一步。在进行物体的区域定位之前, 已经先对前景图片中进行特征区域的确定。具体的算法如下:下把前景图片中的特征区域和背景图片中的特征区域对齐, 然后根据两个特征区域中心点在各自图片中的位置, 计算得到要进行处理的像素点。接着扫描所有要处理的像素点, 把两幅图片像素值相减的绝对值存放到前景中, 同时把前景图片中没有被处理的像素点都置成黑色。经过这样的处理, 前景图片中所有背景成分都被滤掉 (显示为黑色) , 而运动物体则显示出来了。可以根据需要, 适当地放大物体像素点的数值, 这样可以看得更加明显。

因为要绘制的物体的运动轨迹是一条曲线, 所以每张图片上面的物体最终都只能用一个点来表示, 这个点就是物体的中心点。在图形学上称为图形的几何中心。确定物体的几何中心比较容易, 只需扫描整张图片, 寻找颜色是白色点, 记录它们的横坐标和纵坐标的位置, 并做累加, 同时累加白色点个数。最后把累加得到的横坐标的值除以白色点个数后, 得到的值就是物体中心点的横坐标数值, 纵坐标也是如此。一般来说, 这样得到物体的几何中心还是比较准确的, 除非物体在运动过程当中发生了非常大地形变。在取得物体中心点的过程中, 已经把一系列的中心点都保存到了一个专门记录物体运行轨迹的数组里, 当处理完所有的图片后, 数组里面就记录了完整的物体的运行轨迹。只要扫描整个数组, 按照里面的数值把曲线绘制出来即可。运动物体的运动轨迹如图6所示。

综合上述可知, 运用计算机这种工具, 可以实现数字图像处理技术在图像识别、图像检索以及日常生活等各个领域的广泛应用。本设计通过对一系列图片的处理, 提取出图像中的背景, 识别出物体运动轨迹, 进而对运动物体跟踪算法, 即背景提取、物体定位、中心点确定、轨迹描述等, 这些技术都可以使用在各种数字视频监控系统中, 例如可以作为一个监控系统的软件核心, 应用到银行、宾馆、超市以及珠宝行中, 其监控范围可以小到办公室乃至走廊中。

参考文献

[1]Tinku Acharya, Ajoy K.Ray.数字图像处理[M].北京:清华大学出版社.2007

[2]Castleman, K.R著;朱志刚等译.数字图像处理[M].北京.电子工业出版社.2002, 2.

[3]何斌.Visual C++数字图像处理[M].人民邮电出版社.2002.236.

上一篇:燃气流量下一篇:安全电流