-
众所周知,火星距离地球非常遥远,星地通信距离长,通信路径损耗大,数据传输延迟长, 因此数据通信具有低码速率、高增益信道编码的特点[1]。图像的大数据量对深空通信信道造成极大的传输压力,因此必须采用图像压缩方法来降低整体数据传输量,缓解通信压力,同时让用户及早获取图像。
国外方面,1996年美国国家航空航天局(National Aeronautics and Space Administration,NASA)发射的人类首个火星车“探路者号”(Mars Pathfinder, MPF),其图像采用了块截断编码(Block Truncation Coding,BTC)算法[2],该算法采用局部二值编码处理,计算过程简单,编码速度快,但容错性较差。2004年登陆火星的“勇气号”(Spirit)、“机遇号”(Opportunity)、“火星探测漫游者”(Mars Exploration Rovers,MERs)均采用了2种图像压缩算法[3]:ICER和MLOCO(Modified LOCO)。ICER是专为深空数据传输而设计、基于小波变换的渐进式有损压缩方法,具有高效的容错技术。MLOCO是将Huffman编码和上下文模型编码相结合,特别适合对色调连续的图像进行无损压缩。
国内方面,作者所在的中国首次火星探测图像处理团队针对星上计算机处理能力较弱,内存容量有限,火星探测轻小型化的高要求强约束,提出了一种“基于首1游程的图像位面并行编码算法”[4-5],该算法首先对图像进行小波变换和位面提升,再根据小波系数的首1比特位置将数据分离为位置数据和精细数据,位置数据能够反映图像轮廓和整体,因此数据压缩编码时位置数据编码在前,精细数据编码在后,当地面先收到位置数据后,图像逐渐显示出整体,随着精细数据不断增多,图像纹理逐步清晰,这种渐进式压缩算法相比ICER和MLOCO,简化了上下文建模,每个位平面的压缩不依赖于更高一位面的编码,位平面间支持并行编码,该算法具有计算复杂度低,容错性强,数据访问次数少,内存占用小,适合宇航应用等优点。但早期算法没有考虑彩色图像相邻像素间相关性弱和图像分段编码等问题。
本文首先分析了火星车图像管理的特点,归纳出火星车图像压缩软件需具备3项能力(文件统一管理能力、高效压缩能力、高容错能力)。针对文件统一管理能力,提出了一种针对多类型图像数据的图像统一管理文件系统。针对压缩算法高效性和高容错性要求,在文献[4]算法基础上扩展了多载荷图像统一化处理、彩色图像预处理和分段位平面编码3个重要过程,进一步提高图像压缩算法的压缩性能和容错能力,并形成一整套图像压缩软件设计方案,使用FPGA(Field Programmable Gate Array)+DSP(Digital Signal Processing)方式实现了整套软件。最后采用了一套图像压缩软件仿真验证系统,对压缩效果进行了验证,结果表明了算法的有效性。目前整套软件已在“祝融号”火星车中投入使用,在轨使用效果良好。
-
火星车图像管理相比传统型号的图像管理,具有以下特点。
1)存储轻小型化和图像多类型,要求星上具有统一的图像文件管理能力
相比月球探测器,火星探测器对轻小型化要求更高,传统的月球探测器各载荷图像分散管理方式会增加存储设备数量,无法满足火星探测高度集成化和轻小型化的苛刻要求。并且火星车上带有避障、导航、多光谱等多种相机,这些相机采集的图像数据种类多,包括灰度图像、彩色图像和多波段图像等。为了支持多台相机、多类图像数据、多个时间标签图像的随机访问,需要星上具有一套统一的支持多种类图像,多分区存储独立相机数据、并且支持并行读写的图像文件系统。考虑到星载硬件资源限制,要求文件系统结构开销小,控制及使用简单,读写速度快。
2)信道资源极其有限,要求星上具备快速图像压缩能力
火星距离地球为(0.56~4)×108km,从火星到地球的通信链路带宽受到极大限制,在深空数据源端对图像进行在轨压缩是节省发射能量、提高信息回传效率的必由之路。为了有效提高信道使用效率,要求图像压缩算法的压缩性能越高越好,同时考虑到星载计算机存储及计算资源有限,要求图像压缩算法的计算资源消耗少,数据访问次数少,空间复杂度低。
3)信道误码率较高,要求压缩功能具备较强容错能力
由于探测器通信信号强度的衰减速度与距离平方成正比,自身硬件噪声和宇宙背景噪声的干扰相较而言变得更强,因此深空探测的信道误码率较高,另外火星与地球通信单次时长近20分钟,图像数据不能像地面传输网络那样频繁重传,所以要求传输的图像压缩码流具有较强容错性,即使某些位出现干扰或丢失,不会造成大片图像的毁坏。
-
传统的月球探测器各载荷图像采用分散管理方式,每类图像管理相对简单,无需设计统一的图像文件系统。而使用传统的地面计算机的文件系统(如YAFFS(Yet Another Flash File System)[6]、JFFS (Journalling Flash File System)[7]等)对火星车图像进行统一管理,数据结构又过于复杂,需要大量的CPU计算资源,占用大量内存来建立文件系统节点树,在星载计算机系统中,由于CPU内存及IO接口速度很低,无法达到NandFlash的最大读写速率。
基于以上原因,本文设计了一种基于FPGA(Field Programmable Gate Array)的NandFlash多分区并行图像文件系统,利用图像文件大小固定的特点,建立了以大尺寸节点与时间戳组合列表的文件系统,解决火星车图像统一化存储及访问的难题。
该文件系统设计原理如图1所示。主要包含图像节点初始化模块、图像接收模块、图像随机访问模块和硬件控制模块。
1)图像节点初始化模块
图像节点初始化模块主要完成图像节点存储结构的初始化工作。首先擦除分区,并更新擦除失败的块信息到坏块表中,然后从分区起始块开始地址往后搜索,搜索到连续M个有效块(M可根据文件大小进行设定),建立一个节点,连续有效块的第一个块地址即为节点起始地址;以此方法建立N个节点,并将存储映射关系存放到MRAM(Magnetoresistive Random Access Memory)中该分区的相应节点地址上。这种映射关系充分利用了图像文件大小固定的特点,文件存储结构简单可靠,整体开销小,控制及使用简单,并且读写速度也非常快。
2)图像接收模块
图像接收模块主要完成多载荷的图像统一接收及存储工作。该模块接收多个载荷相机的图像数据,根据相机标识申请对应分区的节点创建图像,使用当前时间作为图像时间戳。图像创建后得到节点起始物理地址,然后接收图像数据,每接收到1页Flash的数据量,根据物理地址调用Flash控制模块,将数据写入Flash中。使用分区策略和时间戳标识方法可以有效支持图像文件的并行写入,极大提高系统的速度,也便于图像文件的随机快速访问。
3)图像随机访问模块
DSP图像访问模块主要完成图像文件的随机访问和DSP操作控制。对于文件访问,首先在MRAM中获取需要访问节点的物理地址,然后使用物理地址去Flash中连续访问多块数据内容,获得完整图像文件数据。这种两级访问方式,控制及使用简单,随机访问速度快,可以有效降低整个图像压缩的处理时长。DSP操作控制主要包括DSP图像写入控制、DSP图像读取控制、DSP图像下行和DSP图像数据擦除控制。
4)硬件控制模块
硬件控制模块包括Flash访问控制和MRAM控制器。Flash访问控制模块主要完成Flash写入调度、读取调度、擦除调度和Flash硬件控制接口。MRAM控制器主要完成图像节点逻辑地址与物理地址映射关系的建立以及MRAM的读写控制。
-
针对压缩算法高效性和高容错性要求,本文在基于首1游程的图像位面并行编码算法基础上扩展了多载荷图像统一化处理、彩色图像预处理和分段位平面编码3个重要过程,进一步提高算法的压缩性能和容错性能。
-
对于单幅1M图像1 024×1 024×8 bit的渐进式压缩采用的是基于首1游程的图像位面编码算法;该编码算法将小波系数分离为两部分:①首1 bit及其以上位面数据,称为位置数据;②首1位面以下数 据,称为精细数据。位置数据表示了图像小波变换系数的符号、坐标及首1位面号。其最低位面为1,其以上位面全为0,采用带符号自适应二进制游程编码[4]对该部分数据进行编码。精细数据为每个系数中低于首1位面的其余bit,这部分数据决定了每个小波系数的细化值。精细数据没有统计集中特征,因此直接将其bit连接形成码流。首1游程位平面编码算法如图2及表1所示
表 1基于首1游程的位面编码算法
Table 1.Bit-plane coding based on run-length coding of first-1 bit
算法流程 1)对图像进行9~7整数小波变换;
2)对小波变换系数进行权值提升;
3)针对权值提升有各子带有效位面,从小波系数MSB到LSB循环,将图像数据按照位平面分离为位置数据+精细数据两部分,对于第i位面的每个系数遍历执行:
a)如果当前位面i高于或等于当前系数首1位面,则为位置数据,利用带符号自适应二进制游程编码方法对该系数i位面位置数据编码;输出码流Pi;
b)如果当前位面i低于当前系数首1位面,那么就是位置数据,直接将该系数第i位面精细数据bit输出码流Ri;
c)将Pi和Ri按顺序连接到上一位面编码码流之后。
4)输出完整的码流。火星车载荷图像除了1 M图像外,还包括8 M多光谱图像(如多光谱相机图像)和8 M彩色图像(如导航地形相机图像)等各类图像[8],对于这几类图像的统一化处理是软件需考虑的重点。本文设计了一套统一化处理方法,完成了各类图像的统一化编码压缩过程。具体流程如图3所示。由于小波变换[9]需要每个像素点的位数为16位,因此对于1 024×1 024×8 bit图像扩展为1 024×1 024×16 bit图像,每个像素点的高8位填充0,然后再进行位平面编码。
DSP软件首先接收用户的压缩指令,根据压缩指令中的图像逻辑编号计算图像的逻辑地址,根据逻辑地址在MRAM中获取图像实际的物理地址,然后根据物理地址在Flash中读取图像数据。根据图像类型,进行不同处理:
1)对于1 M图像,直接将其扩展为1 024×1 024×16 bit的单个数据块,然后对数据块按表1过程进行压缩编码;
2)对于4 M图像,将其扩展为2 048×2 048×16 bit的数据块,然后将数据块分解为4块1 024×1 024×16 bit的数据块,然后对每块按表1过程进行压缩编码;
3)对于8 M多光谱图像,直接将数据块分解为4块1 024×1 024×16 bit的数据块,然后对每块按表1过程进行压缩编码;
4)对于8 M彩色图像,为了提高压缩性能,首先需要进行图像预处理(详细过程见4.2章节),将相同分量像素聚集,然后将数据块分解为4块1 024×1 024×16 bit的数据块,最后对每块按表1过程进行压缩编码。
-
导航地形相机的图像为彩色图像,其格式为应用最为广泛的Bayer格式[10-11],这种格式图像如图4左侧所示,其RGB(Red Green Blue)分量是交织存储的,为了进一步利用图像的像素间相关性,在进行压缩前需要对Bayer格式图像进行预处理,其处理过程为将相同分量的像素聚集到一起(如图4右侧所示),提高像素间相关性。然后将处理后的图像进行渐进式压缩,相应的解压过程需要执行预处理的逆过程,将相同分量的像素再拆分为GBRG(Green Blue Red Green)交织方式,恢复出原始的彩色图像。
-
为进一步防止码流传输错误引发图像无法解码问题,本文将图像进行分段编码,根据图像尺寸将图像均分为N×N个图像段,形成N2个分段(Seg1,Seg2,···,SegN2),再将空间图像的分段映射到小波域的分段。一个空间域图像段对应小波域共10个小波子带段(3级小波变换),如图5所示。
采用位平面编码算法对每个位面的每个段编码(简称一个位面段),每个段的每个位面共10个子带码流组成一个数据包(如表2所示),称为分段位面码流包;传输码流组织顺序如图6所示。采用这种分段位平面编码方式,当出现某个高位面的码流包丢失,仅影响该码流包对应的段,而不会导致整幅图像无法解码。
表 2单个数据包的数据内容
Table 2.Packet unit contents
字节长度 数据项名称 2字节 数据包包头标识 1字节 位面段段号(4 bit列号,4 bit行号) 1字节 位面号(1~20) 3字节 位置数据的长度N 3字节 精细数据的长度M N字节 位置数据 M字节 精细数据 2字节 数据包包尾校验信息 -
图7为整个图像压缩软件仿真验证系统,包括器上图像压缩传输验证设备和地面解压验证设备。器上压缩传输验证设备完成图像采集、存储和压缩等功能,地面解压显示设备完成相机图像实时反显、图像解压和系统控制等功能。相机拍摄图像后,经过分路器,将一路图像送往地面解压验证设备进行反显,另一路图像送往相机接口卡进行后续数据处理。相机采集卡能够接收从分路器送来的相机数据,也能接收从地面解压显示验证设备送来的相机模拟卡数据,相机采集卡对收到的图像数据进行格式转换后送DSP目标开发板。DSP目标处理板对收到的图像数据进行存储和压缩处理,并将处理结果、设备状态等发送到地面解压显示验证设备,同时DSP目标处理板也能接收并处理地面解压显示验证设备发来的控制信息。UART(Universal Asynchronous Receiver and Transmitter)串口通信卡、专用同步串口通信卡用于接收器上压缩传输验证设备发来的图像压缩数据,然后通过图像解压软件,还原原始图像送显示设备显示。
-
1)渐进式压缩效果及算法对比情况
对某深空探测图片进行不同比例的压缩,图8~11给出了不同压缩比图像显示效果,从图中可以看出采用1:8压缩可以保证图像较高质量,采用1:200压缩可以看清图像大致轮廓,因此在轨使用可以考虑使用1:200的大压缩比快速获取图像轮廓信息。如果用户认为图像中有感兴趣区域,则将压缩比调整为1:8,继续下行码流,获取图像更多细节纹理。如果不感兴趣,则终止码流,进行下幅图像的获取工作。
同时使用不同压缩算法对该图片进行压缩(小波变换过程均采用整数97小波变换),表3给出实验对比情况,从实验数据可以看出本文方法优于CCSDS-IDC(Consultative Committee for Space Data Systems-image data compression)[12]算法和SPIHT(Set Partitioning in Hierarchical Trees)[13]算法。
表 3整数97小波有损压缩性能比较
Table 3.Performance in impaired compression by using Int97 DWT
码率/bpp 0.1 0.4 0.8 1 2 本研究方法/dB 29.24 35.02 37.91 39.11 43.19 CCSDS-IDC/dB 27.23 34.56 37.54 38.38 42.46 SPIHT/dB 29.14 34.95 37.82 38.94 42.68 2)算法改进效果的验证
(1)彩色图像压缩效果验证
使用了50幅Bayer格式的彩色图像,分别使用含预处理过程的渐进式压缩算法和不含预处理过程的渐进式压缩算法,按照无损压缩设置参数对原始图像进行压缩,前者的数据压缩量平均为4.52 MByte,后者的数据压缩量平均为2.66 MByte,由此可见,增加彩色图像预处理过程可以有效增加数据压缩量。
(2)分段编码效果验证
模拟星地传输的数据误码过程,在第一段码流中植入错误,导致这段图像无法使用,采用分段编码的渐进式压缩,仍然可以解析出3/4的图像(如图12所示)。直接使用不分段的编码算法,则整幅图像都无法解析。由此可见,增加分段编码可以有效提供系统的容错能力。
图 12采用分段编码,丢失第一段码流后的图像解压效果
Figure 12.Image based on segment coding which lost first segment bitstream
3)在轨应用情况
2021年5月22日10时40分,中国“祝融号”火星车已安全驶离着陆平台,到达火星表面,开始巡视探测。图像压缩软件在轨工作良好,可以有效满足火星探测任务需求,为超远距离带宽受限条件下的图像交互传输提供有力支撑,表4为图像压缩软件在轨运行性能指标,满足设计指标要求。
表 4图像压缩软件在轨运行性能
Table 4.Image compression software on-board performance
测试项目 要求 测试结果 支持的压缩比 [1,255]可调 [1,255]可调 常用压缩比 1:8 在轨常用的压缩比为1:8和1:16,
图片效果良好8倍压缩的峰值
信噪比/dB≥37 38.887 4 16倍压缩的峰值
信噪比/dB≥35 36.348 1 1M黑白图像
压缩时间/s≤60 54.52 8M黑白图像
压缩时间/s≤250 238.56 8M彩色图像
压缩时间/s≤300 257.05 -
本文采用FPGA+DSP方式设计了“祝融号”火星车图像压缩软件整体结构,基于FPGA设计了多载荷统一存储处理的图像文件系统,基于此文件系统开展了图像压缩软件的设计与实现,软件实现了扩展的渐进式压缩方法。最后仿真验证了图像压缩的效果,验证结果表明了算法的有效性。目前整套压缩软件已在“祝融号”火星车中投入使用,在轨使用效果良好。该套算法和软件具有较强的通用性,对于未来超远距离深空探测也有很强的借鉴意义。
Image Compression Software Design for Zhurong Mars Exploration Rover
-
摘要:针对火星图像传输信道极其有限,误码率较高等问题,给出了一种火星车图像压缩软件的设计与实现方法:分析了火星车图像管理的特点,归纳出火星车图像压缩软件需具备的三项能力(文件统一管理能力、高效压缩能力、高容错能力);针对文件统一管理能力,提出了一种针对多类型图像数据的统一化管理的文件系统;针对压缩算法高效性和高容错性要求,在基于首1游程的图像位面并行编码算法基础上,扩展了多载荷图像统一化处理、彩色图像预处理和分段位平面编码三个重要过程,进一步提高算法压缩性能和容错能力,并形成一整套图像压缩软件设计方案,使用FPGA(Field Programmable Gate Array)+DSP(Digital Signal Process)方式实现了整套软件;最后采用仿真验证系统对压缩效果进行了验证,仿真结果表明了算法的有效性。本软件经“祝融号”火星车在轨验证,可有效满足火星探测任务需求,软件设计方案可作为后续超远距离深空探测图像压缩的参考。Abstract:Because of the limited number of information transmission channels and high bit error rate in Mars image transmission, a method of image compression software design and realization of Mars rover was proposed. The characteristics of rover image data management were analyzed, and the three capabilities that the rover image compression software needed to have were concluded: uniform file management capability, high-efficiency compression capability, and high fault tolerance capability. For uniform file management capability, a file system for uniform management of multiple types of image data was proposed. To meet the high efficiency and high fault tolerance requirements of the compression algorithm, based on run-length coding algorithm of first-1 bit, the three important processes of multi-load image unification processing, color image preprocessing, and segmented bit-plane image coding were expanded, to improve compression performance and fault tolerance. Then a complete set of image compression software design schemes was formed, using FPGA+DSP, and the complete set of software was realized. Finally a simulation verification system was used to verify the compression effect. Verification results show the effectiveness of the algorithm. This software has been verified by China’s Zhurong Mars rover and can effectively meet the needs of Mars exploration missions. The software design can be used as a reference for image compression in subsequent ultra-long-distance deep space explorations.
-
Key words:
- Zhurong/
- Mars rover/
- image compression/
- software design
Highlights● A file system for uniform management of multiple types of image data was proposed. ● Multi-load image unification processing. ● Color image preprocessing. ● Segmented bit-plane image coding algorithm based on run-length coding of first 1bit. ● Verified by China's Mars rover Zhurong and can effectively meet the needs of Mars exploration missions. -
表 1基于首1游程的位面编码算法
Table 1Bit-plane coding based on run-length coding of first-1 bit
算法流程 1)对图像进行9~7整数小波变换;
2)对小波变换系数进行权值提升;
3)针对权值提升有各子带有效位面,从小波系数MSB到LSB循环,将图像数据按照位平面分离为位置数据+精细数据两部分,对于第i位面的每个系数遍历执行:
a)如果当前位面i高于或等于当前系数首1位面,则为位置数据,利用带符号自适应二进制游程编码方法对该系数i位面位置数据编码;输出码流Pi;
b)如果当前位面i低于当前系数首1位面,那么就是位置数据,直接将该系数第i位面精细数据bit输出码流Ri;
c)将Pi和Ri按顺序连接到上一位面编码码流之后。
4)输出完整的码流。表 2单个数据包的数据内容
Table 2Packet unit contents
字节长度 数据项名称 2字节 数据包包头标识 1字节 位面段段号(4 bit列号,4 bit行号) 1字节 位面号(1~20) 3字节 位置数据的长度N 3字节 精细数据的长度M N字节 位置数据 M字节 精细数据 2字节 数据包包尾校验信息 表 3整数97小波有损压缩性能比较
Table 3Performance in impaired compression by using Int97 DWT
码率/bpp 0.1 0.4 0.8 1 2 本研究方法/dB 29.24 35.02 37.91 39.11 43.19 CCSDS-IDC/dB 27.23 34.56 37.54 38.38 42.46 SPIHT/dB 29.14 34.95 37.82 38.94 42.68 表 4图像压缩软件在轨运行性能
Table 4Image compression software on-board performance
测试项目 要求 测试结果 支持的压缩比 [1,255]可调 [1,255]可调 常用压缩比 1:8 在轨常用的压缩比为1:8和1:16,
图片效果良好8倍压缩的峰值
信噪比/dB≥37 38.887 4 16倍压缩的峰值
信噪比/dB≥35 36.348 1 1M黑白图像
压缩时间/s≤60 54.52 8M黑白图像
压缩时间/s≤250 238.56 8M彩色图像
压缩时间/s≤300 257.05 -
[1] 吴伟仁. 深空测控通信系统工程与技术[M]. 北京: 科学出版社, 2013.WU W R. Engineering and technology of deep space TT&C system[M]. Beijing: Science and Technology Press, 2013. [2] 孙星明. 基于块截断编码的数字水印技术[D]. 长沙: 湖南大学, 2016.SUN X M. Digital watermarking technique based on Block Truncation Coding(BTC) for copyright protection[D]. Changsha: Hunan University, 2016 [3] 徐欣锋. MERs深空在轨图像压缩技术研究[J]. 测试技术学报,2007,21(16):99-100.XU X F. MERs Deep-space imagery compression on-board[J]. Journal of Test and Measurement Technology,2007,21(16):99-100. [4] 徐勇. 基于首1游程的图像位面并行编码算法[J]. 光学精密工程,2015,23(3):864-868.doi:10.3788/OPE.20152303.0864XU Y. Bit-plane paralleled image coding algorithm based on run-length coding of first 1 bit[J]. Optics and Precision Engineering,2015,23(3):864-868.doi:10.3788/OPE.20152303.0864 [5] XU Y, ZHAO L, LIU Z G, et al. Context based adaptive first 1 bit run-length image bit-plane coding algorithm[C]//2018 Eighth International Conference on Instrumentation and Measurement, Computer, Communication and Control. Harbin, China: [s. n. ], 2018. [6] 汪祖民, 张红梅. 嵌入式Linux中Yaffs文件系统的构建与优化[J]. 火力与指挥控制,2015,40(3):146-148.doi:10.3969/j.issn.1002-0640.2015.03.035WANG Z M, ZHANG H M. Construction and optimization of yaffs file system in embedded linux[J]. Fire Control & Command Control,2015,40(3):146-148.doi:10.3969/j.issn.1002-0640.2015.03.035 [7] 刘娅旋. JFFS和YAFFS两种文件系统在嵌入式Linux平台上的运行比较[J]. 信息系统工程,2019(8):91-97.doi:10.3969/j.issn.1001-2362.2019.08.062LIU Y X. Comparison tetween JFFS and YAFFS in linux[J]. JFFS and China CIO News,2019(8):91-97.doi:10.3969/j.issn.1001-2362.2019.08.062 [8] 孟庆宇, 付中梁, 董吉洪, 等. 火星探测高分辨率可见光相机光学系统设计[J]. 深空探测学报(中英文),2018,5(5):458-464.MENG Q Y, FU Z L, DONG J H, et al. The optical system design of the high-resolution visible spectral camera for China Mars exploration[J]. Journal of Deep Space Exploration,2018,5(5):458-464. [9] 孙延奎. 小波分析及其应用[M]. 北京: 机械工业出版社, 2015.SUN Y K. Wavelet analysis and application[M]. Beijing: China Machine Press, 2015. [10] BAUER B E. Color imaging array: US Patent, 3 971 065[P]. 1975-03-05. [11] 罗晓红. 深空探测应用中的Bayer图像高效压缩算法研究[D]. 西安: 西安电子科技大学, 2018.LUO X H. A research on high-efficient bayer patterned image compression algorithm in deep space exploration applications[D]. Xi'an: Xidian University, 2018. [12] CCSDS. CCSDS120.1-G-1, Image data compression report concerning space data system standards[S]. Washing, DC: CCSDS, 2007. [13] CORSONELLO P, STEFANIA P, PAOLO Z. Microprocessor-based FPGA implementation of SPIHT image compression subsystem[J]. Microprocessors and Microsystems,2005,29(6):299-305.doi:10.1016/j.micpro.2004.08.013 -