文档库 最新最全的文档下载
当前位置:文档库 › 图像超分辨率重建

图像超分辨率重建

图像超分辨率重建
图像超分辨率重建

收稿日期:2008唱08唱21;修回日期:2008唱10唱28

作者简介:王培东(1953唱),男,黑龙江哈尔滨人,教授,硕导,CCF会员,主要研究方向为计算机控制、计算机网络、嵌入式应用技术;吴显伟(1982唱),男(回族),河南南阳人,硕士,主要研究方向为计算机控制技术(wu_xianwei@126.com).

一种自适应的嵌入式协议栈缓冲区管理机制

王培东,吴显伟

(哈尔滨理工大学计算机科学与技术学院,哈尔滨150080)

摘 要:为避免创建缓冲区过程中必须指定大小和多次释放而导致可能的内存泄露和代码崩溃的弊端,提出一种自适应的嵌入式协议栈的缓冲区管理机制AutoBuf。它是基于抽象缓冲区接口而设计的,具有自适应性,支持动态内存的自动分配与回收,同时实现了嵌入式TCP/IP协议栈各层之间的零拷贝通信。在基于研究平台S3C44B0X的Webserver网络数据监控系统上的测试结果表明,该缓冲区的设计满足嵌入式系统网络通信的应用需求,是一种高效、可靠的缓冲区管理机制。

关键词:嵌入式协议栈;抽象缓冲区;零拷贝;内存分配

中图分类号:TP316 文献标志码:A 文章编号:1001唱3695(2009)06唱2254唱03doi:10.3969/j.issn.1001唱3695.2009.06.077

Designandimplementationofadaptivebufferforembeddedprotocolstack

WANGPei唱dong,WUXian唱wei

(CollegeofComputerScience&Technology,HarbinUniversityofScience&Technology,Harbin150080,China)

Abstract:Toavoidtraditionalmethodofcreatingbuffer,whichmusthavethesizeofbufferandfreememoryformanytimes,whichwillresultinmemoryleaksandcodescrash.ThispaperproposedaflexiblebuffermanagementmechanismAutoBufforembeddednetworkprotocolstack.Itwasadaptiveandscalableandbasedonanabstractbufferinterface,supporteddynamicme唱moryallocationandbackup.ByusingtheAutoBufbuffermanagementmechanismwithdatazerocopytechnology,itimplementedtotransferdatathroughtheembeddednetworkprotocolstack.ThemanagementmechanismhadbeenappliedtotheWebserversystembaseonS3C44b0Xplatformsuccessfully.Theresultsinrealnetworkconditionshowthatthesystemprovidesagoodper唱formanceandmeetsthenecessaryofembeddednetworksystem.Keywords:embeddedstack;abstractbuffer;zero唱copy;memoryallocation 随着网络技术的快速发展,主机间的通信速率已经提高到了千兆数量级,同时多媒体应用还要求网络协议支持实时业务。嵌入式设备网络化已经深入到日常生活中,而将嵌入式设备接入到互联网需要网络协议栈的支持。通过分析Linux系统中TCP/IP协议栈的实现过程,可以看出在协议栈中要有大量数据不断输入输出,而管理这些即时数据的关键是协议栈中的缓冲区管理机制,因此对嵌入式协议栈的缓冲区管理将直接影响到数据的传输速率和安全。通用以太网的缓冲区管理机制,例如4.4BSDmbuf

[1]

和现行Linux系统中的sk_buf

[2]

多是在大内存、

高处理速率的基础上设计的,非常庞大复杂。由于嵌入式设备的硬件资源有限,特别是可用物理内存的限制,通用的协议栈必然不适用于嵌入式设备,在应用时要对标准的TCP/IP协议进行裁剪

[3]

和重新设计缓冲区管理机制。

1 缓冲区管理机制的性能需求分析

缓冲区管理

[4]

是对内存提供一种统一的管理手段,通过该

手段能够对可用内存提供分配、回收、数据操作等行为。内存的分配操作是根据一定的内存分配策略从缓冲区中获得相应大小的内存空间;缓冲区的数据操作主要是向缓冲区写数据,从缓冲区读数据,在缓冲区中删除数据,对空闲的内存块进行合并等行为;内存的回收就是将已空闲的内存重新变为可用内存,以供存

储其他新的数据。

为了满足长度不一的即时数据的需求,缓冲区对内存的操作主要集中在不断地分配、回收、合并空闲的内存块等操作。因为网络中的数据包小到几个字节大到几千个字节,不同长度的数据对内存的需求必然不同。现存嵌入式设备中的内存多是以物理内存,即实模式形式存在的,没有虚拟内存的形式,对内存的操作实际是操作真实的物理内存,所以对内存操作要特别谨慎。在传统使用动态分配的缓冲区(通过调用malloc()/free())在函数之间传递数据。尽管该方法提供了灵活性,但它也带来了一些性能影响。首先考虑对缓冲区的管理(分配和释放内存块)。如果分配和释放不能在相同的代码位置进行,那么必须确保在某个内存块不再需要时,释放一次(且仅释放一次)该内存块是很重要的,否则就会导致内存泄露。其次是必须确定缓冲区的大小才能分配该内存块。然而,确定数据大小并非那么容易,传统做法是采用最大的数据尺寸的保守估计。而采用保守估计预分配的内存大小总是远超过实际需要的大小,而且没有一定的范围标准,这样难免会导致资源的严重浪费。

随着数据在协议栈中的不断流动,内存块的多次释放和多次分配是难以避免的,而保守估计对于有限的资源来说又是一种浪费的策略。因此为了能有效地利用资源,设计一种可自控的、不用预判断大小的数据缓冲区接口就势在必行。

第26卷第6期2009年6月 

计算机应用研究

ApplicationResearchofComputers

Vol.26No.6Jun.2009

由于嵌入式设备资源的限制,嵌入式缓冲区管理机制的设计性能[5]要达到以下几点要求:

a)高效性。嵌入式设备的实时性要求缓冲区的分配与回收必须快,尽量减少延迟,能满足实时数据的存储与释放。b)可靠性。一方面是系统的内存请求必须得到满足;另一方面必须避免内存分配中的内存泄露问题,一旦内存泄露,则可能带来系统崩溃的危险。

c)持久性。嵌入式设备一般要运行很长时间,系统尽可能减少资源的浪费,降低碎片的产生,提高内存的利用率,保证系统的稳定。

自适应缓冲区的设计要有以下能力:

a)在有限的内存空间可以存放不同长度的数据。b)尽量减少因存储和释放不同长度数据产生的内存碎片。c)尽量减少分配和回收时遍历的次数。

d)尽量减少对预分配的内存进行长度估计。

e)尽量减少缓冲区之间的数据拷贝操作。

另外,为了更好地利用嵌入式设备的资源,需要优化通用协议栈,使得缓冲区的分配和回收简单、高效,提高内存的利用率。2 缓冲区管理机制AutoBuf的分析与设计

缓冲区的分配一般有以下两种策略[5]:

a)静态分配。是指内存在程序编译时已经确定好了大小,内存范围是固定不变的,实现简单,只要在系统设计时设定一个足够大的缓冲区可以接收最大的数据包就行了。这种实现方法数据结构简单、操作方便,但是可能造成内存的浪费,产生资源竞争问题并且不便于动态操作。

b)动态分配。是指根据系统运行时的需要,根据某种内存分配策略动态地满足用户申请的需求。实现机制相对于静态机制来说比较灵活,为系统的实现带来极大的方便,可以随着数据包的到来不断地扩充内存块链表,避免了固定缓冲区分配中即使小数据包也要占据大内存空间的浪费现象,提高了内存的利用率;而且不存在固定共享资源的竞争,从而在同一时间可以处理多个数据包,增强数据的处理能力。但由于数据包的长度不一,在分配内存时可能会产生碎片问题。

综观静态分配和动态分配,动态分配相对于静态分配在资源利用方面是比较有优势的。本文采用动态分配策略来设计协议栈的缓冲区,同时提出一种抽象的缓冲区接口设计来最大程度地减少内存碎片发生的概率,使缓冲区的管理更加灵活,更好地利用内存资源。

2畅1 抽象缓冲区接口的设计

根据应用对象Webserver对网络的需求,参考4.4BSDMbuf和Linux中的sk_buf[6]的设计,本文提出一种抽象的动态缓冲区管理机制,该机制具有自适应性的管理内存,支持动态的内存分配、回收。

一般数据缓冲区的分配是由两个操作完成的,即数据缓冲区实体的定义和实际内存的分配[7]。然而事实上,在实际数据变得可用之前,其实是不需要分配实际的内存。根据这样的思想可以将两个操作分离开来。为了表示抽象的数据缓冲区接口,需要新定义两个数据结构:

typedefstructBufferBlockHeader_st

BufferBlockHeader

{BufferBlockHeader倡pNextBlock;

longint currentLength;

shortint used;

shortint flag;

unsignedchar倡startPoint;

unsignedchar倡endPoint;

};//对要分配的内存块实体的定义

typedefstructBuffer_stBuffer{

longinttotalLength;

BufferBlockHeader倡pFirstBlock;

BufferBlockHeader倡pLastBlock;

};//已创建的抽象缓冲区接口的信息

AutoBuf包含关于已创建的抽象缓冲区的信息,它还管理动态存储的内存块的一个链表。

如果分配了内存,BufferBlockHeader结构中的pNextBlock总是指向该链表中的下一个内存块。每个内存块在分配时都包含一个BufferBlockHeader头,后面跟着一个用于存储实际数据的缓冲区块。

CurrentLength是表示当前数据包的长度,一般当前数据的长度是小于一个MTU的;flag是标志当前的内存块是否被引用,flag=0则认为是未被引用;used是表示该内存块是否空闲,used=0则表示其是空闲块则可以被回收;startPoint和endPoint是两个界限指针主要是界定数据包的范围;totalLength记录当前存储在缓冲区链表中所有未发或已经接收的数据包的总大小;pFirstBlock指向该链表中的第一个内存块,pLastBlock指向该链表的最后一个内存块,这两个指针界定总分配的内存范围,避免在释放时的内存泄露。

2畅2 AutoBuf的主要伪代码实现例程

由于抽象缓冲区接口是将定义与实现分开考虑的,在缓冲区出现数据之前,必须创建抽象缓冲区接口,分配一个包含了一个AutoBuf的内存块,并初始化它的结构体,指明它是一个空抽象缓冲区。下面是用伪代码实现创建函数例程:

structbuffer倡createAutoBuf(){

allocatenewAutoBufstructure

initializethisstructureisNULL

}//创建接口并初始化为空

创建了抽象接口后,当有数据需要存储时,就可以追加数据到抽象缓冲区中。使用下面伪代码实现追加数据过程:

intappendData(AutoBuf倡pBuf,byte倡pInpu,longoffset,longdata唱Len)

{while(pInput!=NULL)

{倡pBuf++=倡pInput++;}

}//追加数据到抽象缓冲区中

如果要从缓冲区中获得数据,使用下面的伪代码实现从抽象缓冲区逐段读取数据,该函数销毁性地从pBuf所指向的抽象缓冲区读取数据,并在内存块变为空时从链表中删除它们,然后返回成功读取的字节数目。

longintreadData(buffer倡pBuf,byte倡pOutput,longoffset,longdata唱Len)

{while(pBuf)

 {倡pOutput++=倡(pbuf唱>pFirstBlock++)

if(pFirstBlock==NULL)

?5522

?

第6期王培东,等:一种自适应的嵌入式协议栈缓冲区管理机制

{free(pbuf);}

}//从抽象缓冲区中读取数据

相应地,必须在使用抽象缓冲区之后通过调用下面的freeBuffer()函数来销毁该缓冲区中的内存块:

voidfreeBuffer(buffer倡pBuf)

{while(pBuf!=NULL)

{freethenextmemoryblock}

freethebufferstructure}

使用内存块的一个空链表来创建一个抽象缓冲区。抽象数据缓冲区仅在实际数据变得可用时才分配内存,释放内存也变成了抽象数据缓冲的责任。集中内存管理数据操作就会带来以下优点:

a)内核和驱动均能通过调用预定义的API函数来构造和/或销毁数据缓冲区。

b)内存使用将保持接近最优状态,因为缓冲区内存仅在必要时才分配,并且会尽快释放,从而最小化内存泄露。c)由于没有哪一方需要管理内存,确定缓冲区的大小就变得不必要了(因而也不可能存在前面指出的多次执行问题)。事实证明缓冲区溢出也不可能会发生,因为仅当存在额外数据空间时才会复制数据。

2畅3 数据传输的分析与零拷贝策略

网络协议栈对内核的缓冲区管理能力提出了很多的要求。这些要求包括能方便地操作可变长缓存、能在缓存头部和尾部添加数据、能从缓存中移走数据,并能尽量减少为这些操作所做的数据复制。

通过分析TCP/IP的原理,在整个数据传输过程中,有以下几个数据拷贝操作:从应用程序到系统内核的拷贝;从系统内核到网卡设备数据缓冲区的拷贝;网络层由于网络最大传输单元(MTU)的限制对传输层传来的数据包进行分片及对分片的重新组合可能引起的拷贝。为了提高网络协议的传输速率,就要尽量减少以上过程中的拷贝次数。

如果能减少拷贝次数将会大大提高协议栈性能,并且可以节约内存空间。为了减少对数据块的大量拷贝,在缓冲区中应尽量使用指针结构作为参数向下层传递,这样的好处是不再把拷贝后放在网络内核缓存中的数据作为参数传递给下层协议。在协议栈中各层之间不再设立独自的缓冲区,相互之间传递数据指针,只有当数据传送时才真正地拷贝数据,达到协议栈内部数据传递零拷贝的目的。

在AutoBuf中可以通过pNextBlock、startPoint、lastPoint等字段的控制,保证当数据在协议栈中处理时,只是通过指针作为参数传递就可以将数据指针传到不同的层来处理。当真正要发送数据时才把数据指针对应的数据拷贝到网络接口的存储区,最终发送出去,减少了数据在传输过程中的多次拷贝操作,达到提高传输速率的目的。

3 AutoBuf性能测试分析

测试平台:采用以Samsumg公司的S3C44B0X为核心的ARM系统开发平台,开发板存储器主要配置包括8MBSDRAM,2MBFlash。

测试方法:移植uCLinux到目标板S3C44B0X,并把网络协议栈部分作为模块加载并在应用层编写测试程序进行测试。

1)基于AutoBuf的服务器的测试算法

1初始化网络服务

2循环等待客户端连接

 2.1对于一个客户端连接建立一个进程

 2.2进程处理程序

 2.3数据大小M=100MB

 2.4接收传输长度L′

 2.5循环直至M=0

2.5.1L=L′

2.5.2如果L>B1(服务器传输端块大小),则

2.5.2.1发送B1个字节

2.5.2.2L=L-B1转至2.5.2

否则

2.5.3发送L个字节

2.5.4M=M-L′

2)基于AutoBuf的客户端的测试算法

1与服务器建立N个连接,对每个连接发送传输长度L′

2M=100MB

3开始计时

4循环直至M=0

 4.1L=L′

 4.2如果L>B2(客户端传输块大小)则

4.2.1对每个连接,接收B2个字节

4.2.2L=L-B2,转至5.2

否则

4.2.3对每个连接接收L个字节

 4.3M=M-L′

5结束计时,得到时间间隔T′,就算T=T′/N

6对每个连接发送L=0,关闭连接

其中:L是每个连接发送的数据长度;N是客户端与服务器端点连接的进程个数;B1是服务器每次发送快的大小;B2是客户端每次接收块的大小,固定为4KB;M是最大的传输总量。

测试结果:分别移植Linux和uCLinux到目标板S3C44B0X中,然后分别对其协议栈缓冲区管理机制进行网络性能测试。这里以系统利用率和网络传输速率为功耗指标,对CPU利用率和网络丢包率进行比较,其性能比较如图2、3所示。CPU利用率的高低说明整体系统的稳定性比较好。由图2数据可见,在一定网络速率下,改进的AutoBuf机制总体CPU功耗比较低,基本在20%以下,适应ARM处理器的要求。网络丢包率的高低说明网络数据传输的性能高。由图3数据可以看出,随网络速率的提高,原Linux的网络丢包率持续高增长,而Auto唱

Buf则保持低增长状态,基本保持在20%以下,总体上能满足应用对象Webserver的实际需求。

经过实际的网络测试后,结果证明在uCLinux中的Auto唱Buf管理机制的应用与零拷贝技术的结合能很好地减少CPU利用率和网络丢包率,是一种高效的协议栈管理机制,完全适合特定的嵌入式Webserver系统需求。

4 结束语

本文在参考4.4BSDMbuf和Linux中的sk_buf的缓冲区管理机制基础上,根据缓冲区的分配原理,将缓冲区的定义与内存的实体分配两个过程分离来考虑,提出一种抽象缓冲区AutoBuf的设计。该缓冲区主要支持动态的内存分配,避免了传统的动态内存分配时因不知道实际的数据大小,而进行的保守估计的预分配做法,减少了内存的浪费,提高了有限资源的利用率。(下转第2262页)

flashcrowd模式运行。其中:N为当前循环周期接收的session总数;t为本循环周期所用的时间。其核心代码见算法3。

算法3 change_detection核心算法

Booleanchange_detection(){

if((N>λ倡×TSAOCAC)AND((N/t)>(λ倡

+κσλ)))returnTRUE;

elsereturnFALSE;}

3 仿真结果

为检验SAOC机制的性能,使用OPNETmodeler[10]

仿真本

文涉及到的接纳控制机制,与基于阈值的接纳控制(TBAC)、

概率接纳控制(PAC)控制策略比较。

实验采用每个会话模型映射到后端三层集群架构,使用文献[6]中近似估计的平均处理时间,HTTP请求处理时间为0.001s,servlet请求处理时间为0.01s,database请求处理时间为1s。实验对数据库层请求分析,SAOC机制参数的取值TSAOC

AC,lλ并不影响该机制的自适应性,仿真中取TSAOC

AC为200s,lλ为0.

3。服务超时时间设定为8s,用户在SLA定义的服务水平标准RT_SLA=5s;TBAC控制机制设置RTTBAC

AC为服务水平标准响应时间,即RTTBAC

AC=5s,TTBAC

AC

=200s,PAC控制机制

两个阈值设置RTPAClow

=3s,RTPAC

high

=5s,满足SLA定义的服务

水平标准,T

PAC

AC

=200s。

实验表明,SAOC控制策略具有自适应性,由图3可以得出。当负载增加时,SAOC控制可以尽可能多地接收session,并且可以很好地控制SLA服务质量,对用户服务作出及时响应。SAOC机制可以快速判断当前负载状况,迅速拒绝已经超过设

定时限的session后续请求,避免了不必要的资源浪费,提高了session成功接纳率。图4截取了仿真时间开始1800~5400s每隔200s统计的数据库层请求95%唱ile响应时间,由图可见

SAOC机制抵制了响应时间的振荡效应,具有相对稳定性。

4 结束语

本文在三层集群体系架构的基础上提出了一种自适应过

载控制机制(SAOC),实现了系统的自适应配置和优化,通过变化检测机制根据当前业务量状况实现两种模式的相互转换,对复杂变化的负载快速作出响应,更好地保证了用户定义的SLA,抵制了振荡效应,保证了系统的稳定性。

SAOC机制不需要人为动态设置参数,与PAC、TBAC比

较,更迅速地判断当前负载,对请求作出快速响应。由于SAOC机制需要统计大量参数并且进行更新,加重了运算量,在低负载时,与前两种机制比较没有太大改善,高负载时

SAOC控制机制能很好地控制响应时间。参考文献:

[1]PHP:hypertextpreprocessor[EB/OL].http://www.php.net.[2]CARDELLINIV,CASALICCHIOE,COLAJANNIM,etal.Thestate

oftheartinlocallydistributedWebserversystems[J].ACMCom唱

putingSurveys,2002,34(2):263唱311.

[3]URGAONKARB,PACIFICIG,SHENOYP,etal.Ananalytical

modelformulti唱tierInternet

servicesanditsapplications[C]//ProcofACMSIGMETRICSInternationalConferenceonMeasurementandModelingofComputerSystems.2005:291唱302.

[4]BARTOLININ,BONGIOVANNIG,SILVESTRIS.Distributedser唱

verselectionandadmissioncontrolinreplicatedWebsystems[C]//Procofthe6rdIEEEInternationalSymposiumonParallelandDistri唱butedComputing(ISPDC).2007:31唱38.

[5]

CHERKASOVAL,PHAALP.Sessionbasedadmissioncontrol:a

mechanism

forpeakloadmanagementofcommercialWebsites[J].IEEETransonComputers,2002,51(6):669唱685.

[6]

ELNIKETYS,NAHUME,TRACEYJ,etal.Amethodfortrans唱

parentadmissioncontroland

requestschedulingine唱commerceWebsites[C]//Procofthe13thInternationalConferenceonWorldWideWeb(WWW).2004:276唱286.

[7]AWEYAJ,OUELETTEM,MONTUNODY,etal.Anadaptive

loadbalancingschemeforWebservers[J].InternationalJournalofNetworkManagement,2002,12(1):3唱39.

[8]MAURICEC,MICHAELD,MICHAELR.Loadbalancingandcon唱

trolfordistributedWorldWideWebservers[C]//ProcofIEEECon唱trolApplications.1999:1614唱1618.

[9]BARTOLININ,BONGIOVANNIG,SILVESTRIS.Anadaptivead唱

missioncontrolpolicyforgeographicallydistributedWebsystems[C]//ProcofACMInternationalConferenceonScalableInformationSystems(INFOSCALE).2007:178唱186.

[10]OPNETTechnologiesInc[EB/OL].http://www.opnet.com.[11]XUZ,BOCHMANNGV.Aprobabilisticapproachforadmission

controltoWebservers[C]//ProcofInternationalSymposiumonPer唱

formanceEvaluationofComputerandTelecommunicationSystems(SPECTS).2004:787唱794.

(上接第2256页)

参考文献:

[1]WRIGHTGR,STEVENSWR.TCP/IPillustratedvol2:theimple唱mentation[M].1995.

[2]HANGINOJI.Mbufissuesin4.4BSDIPv6/IPSecsupport[C]//ProcofUSENIXAnnualTechnicalConference.2000.[3]付晓军,夏应清,何轩.基于LWIP协议栈的内存管理[D].武汉:

华中师范大学,2005:10唱11.

[4]荣苏娟,王沁,张晓彤.一种用于嵌入式系统的可变长缓冲区设计

及其实现[J].微计算机信息,2005,21(23):10唱12.[5]宋丽华.一种高效嵌入式协议栈缓冲区管理机制[D].北京:北京

科技大学,2008:35唱37.

[6]JERRYCHUHK.Zero唱copyTCPinsolaris[C]//ProcofUSENIXAnnualTechnicalConference.1996:253唱264.

[7]LLIKKALR,IYERR,NEWELLD.Microarchitecturalanatomyofa

commercalTCP/IPstack[J].CommunicationTechnologyLabora唱tory,2004,5(10):38唱43.

[8]GUOChuan唱xiong,ZHENGShao唱ren,Analysisandandevalutionof

theTCP/IPprotocolstackofLinux[C]//ProcofInternationalConfe唱renceonCommunicationTechnologyProceedings.2000:444唱453.

图像超分辨率重建

收稿日期:2008唱08唱21;修回日期:2008唱10唱28 作者简介:王培东(1953唱),男,黑龙江哈尔滨人,教授,硕导,CCF会员,主要研究方向为计算机控制、计算机网络、嵌入式应用技术;吴显伟(1982唱),男(回族),河南南阳人,硕士,主要研究方向为计算机控制技术(wu_xianwei@126.com). 一种自适应的嵌入式协议栈缓冲区管理机制 王培东,吴显伟 (哈尔滨理工大学计算机科学与技术学院,哈尔滨150080) 摘 要:为避免创建缓冲区过程中必须指定大小和多次释放而导致可能的内存泄露和代码崩溃的弊端,提出一种自适应的嵌入式协议栈的缓冲区管理机制AutoBuf。它是基于抽象缓冲区接口而设计的,具有自适应性,支持动态内存的自动分配与回收,同时实现了嵌入式TCP/IP协议栈各层之间的零拷贝通信。在基于研究平台S3C44B0X的Webserver网络数据监控系统上的测试结果表明,该缓冲区的设计满足嵌入式系统网络通信的应用需求,是一种高效、可靠的缓冲区管理机制。 关键词:嵌入式协议栈;抽象缓冲区;零拷贝;内存分配 中图分类号:TP316 文献标志码:A 文章编号:1001唱3695(2009)06唱2254唱03doi:10.3969/j.issn.1001唱3695.2009.06.077 Designandimplementationofadaptivebufferforembeddedprotocolstack WANGPei唱dong,WUXian唱wei (CollegeofComputerScience&Technology,HarbinUniversityofScience&Technology,Harbin150080,China) Abstract:Toavoidtraditionalmethodofcreatingbuffer,whichmusthavethesizeofbufferandfreememoryformanytimes,whichwillresultinmemoryleaksandcodescrash.ThispaperproposedaflexiblebuffermanagementmechanismAutoBufforembeddednetworkprotocolstack.Itwasadaptiveandscalableandbasedonanabstractbufferinterface,supporteddynamicme唱moryallocationandbackup.ByusingtheAutoBufbuffermanagementmechanismwithdatazerocopytechnology,itimplementedtotransferdatathroughtheembeddednetworkprotocolstack.ThemanagementmechanismhadbeenappliedtotheWebserversystembaseonS3C44b0Xplatformsuccessfully.Theresultsinrealnetworkconditionshowthatthesystemprovidesagoodper唱formanceandmeetsthenecessaryofembeddednetworksystem.Keywords:embeddedstack;abstractbuffer;zero唱copy;memoryallocation 随着网络技术的快速发展,主机间的通信速率已经提高到了千兆数量级,同时多媒体应用还要求网络协议支持实时业务。嵌入式设备网络化已经深入到日常生活中,而将嵌入式设备接入到互联网需要网络协议栈的支持。通过分析Linux系统中TCP/IP协议栈的实现过程,可以看出在协议栈中要有大量数据不断输入输出,而管理这些即时数据的关键是协议栈中的缓冲区管理机制,因此对嵌入式协议栈的缓冲区管理将直接影响到数据的传输速率和安全。通用以太网的缓冲区管理机制,例如4.4BSDmbuf [1] 和现行Linux系统中的sk_buf [2] 多是在大内存、 高处理速率的基础上设计的,非常庞大复杂。由于嵌入式设备的硬件资源有限,特别是可用物理内存的限制,通用的协议栈必然不适用于嵌入式设备,在应用时要对标准的TCP/IP协议进行裁剪 [3] 和重新设计缓冲区管理机制。 1 缓冲区管理机制的性能需求分析 缓冲区管理 [4] 是对内存提供一种统一的管理手段,通过该 手段能够对可用内存提供分配、回收、数据操作等行为。内存的分配操作是根据一定的内存分配策略从缓冲区中获得相应大小的内存空间;缓冲区的数据操作主要是向缓冲区写数据,从缓冲区读数据,在缓冲区中删除数据,对空闲的内存块进行合并等行为;内存的回收就是将已空闲的内存重新变为可用内存,以供存 储其他新的数据。 为了满足长度不一的即时数据的需求,缓冲区对内存的操作主要集中在不断地分配、回收、合并空闲的内存块等操作。因为网络中的数据包小到几个字节大到几千个字节,不同长度的数据对内存的需求必然不同。现存嵌入式设备中的内存多是以物理内存,即实模式形式存在的,没有虚拟内存的形式,对内存的操作实际是操作真实的物理内存,所以对内存操作要特别谨慎。在传统使用动态分配的缓冲区(通过调用malloc()/free())在函数之间传递数据。尽管该方法提供了灵活性,但它也带来了一些性能影响。首先考虑对缓冲区的管理(分配和释放内存块)。如果分配和释放不能在相同的代码位置进行,那么必须确保在某个内存块不再需要时,释放一次(且仅释放一次)该内存块是很重要的,否则就会导致内存泄露。其次是必须确定缓冲区的大小才能分配该内存块。然而,确定数据大小并非那么容易,传统做法是采用最大的数据尺寸的保守估计。而采用保守估计预分配的内存大小总是远超过实际需要的大小,而且没有一定的范围标准,这样难免会导致资源的严重浪费。 随着数据在协议栈中的不断流动,内存块的多次释放和多次分配是难以避免的,而保守估计对于有限的资源来说又是一种浪费的策略。因此为了能有效地利用资源,设计一种可自控的、不用预判断大小的数据缓冲区接口就势在必行。 第26卷第6期2009年6月  计算机应用研究 ApplicationResearchofComputers Vol.26No.6Jun.2009

图像超分辨率重建处理算法研究概要

第4l卷第ll期 2011年11月 激光与红外 LASER &INFRARED V01.41,No.11 November,2011 文章编号:1001-5078(201111-1278-04 图像超分辨率重建处理算法研究 ?图像与信号处理? 万雪芬1,杨义2,崔剑3 (1.华北科技学院,河北三河065201;2.东华大学,上海201620;3.北京航空航天大学,北京100191 摘要:超分辨算法为实现图像和视频分辨率提高的一种方法。其广泛应用于数字电视、医学图像处理、军事与遥感等领域。超分辨率图像通过融合多帧相似的低分辨率图像达到提高图像细节的目的。本文对使用较为普遍的频域方法、非均匀差值算法、凸集投影算法、迭代反投 影算法、最大后验概率方法及基于学习的方法进行了分析,并简要讨论了超分辨算法未来的发展方向。 关键词:图像处理;超分辨率;低分辨率重建 中图分类号:TP751文献标识码:A DOI:10.3969/j.issn.1001-5078.2011.11.023 Research on super-resolution image reconstruction WAN Xue—fenl,YANG Yi2,CUI Jian3

(I.Nordl China Institute of Science and Technology,Sanhe 065201,China;2.Donghua University,Shanghai 201620,China; 3.Beihang University,Beijing 100191,China Abstract:Super-resolution image reconstruction is a technique to reconstruct high resolution image or video from a 8e- quence of low resolution images.It has been widely used in digital TV,medicinal processing,military and remote剐m8一 ing.The super resolution method is summarized in this paper.Some super resolution image reconstructions ale dis— cussed for super-resolution image reconstruction.The tendency and development prospect a弛also discussed. Key words:image processing;super resolution;low resolution image reconstruction l 引言 近年来,数字图像采集技术已被广泛应用于工控、安监、军事与消费等领域。但由于价格成本因素限制,很多情况下通过低端图像采集设备获得的图片质量与分辨率较低,往往不能满足实际的要求。利用一系列相似的低分辨的图像,经过超分辨率技术的处理,可以得到一幅分辨率较高、包含信息较多的图像。这个处理过程就是超分辨率重建。采用超分辨率技术可以在不更换原有设备的前提下,提高图像的分辨率、改善图像的质量。 超分辨率技术用途较为广泛。在数字电视领域,可以利用超分辨率重建技术将数字电视信号转化为与高清晰度电视接收机相匹配的信号,提高观众的体验。在医疗领域,提高医学图像的分辨率,可以帮助医生做出正确的诊断。在军事、气象领域,通过侦查卫星与气象卫星获得图片的分辨率通常难以达到人们期望的分辨率级别,使用超分辨率技术,通过对观测结果做后期处理,可以更好地识别目标,更好地服务于军事安全和日常生活。

【CN110148085A】人脸图像超分辨率重建方法及计算机可读取的存储介质【专利】

(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910323776.X (22)申请日 2019.04.22 (71)申请人 智慧眼科技股份有限公司 地址 100193 北京市海淀区昆明湖南路51 号中关村军民融合产业园C座207 (72)发明人 刘蒸蒸 刘伟华  (74)专利代理机构 长沙智嵘专利代理事务所 (普通合伙) 43211 代理人 刘宏 (51)Int.Cl. G06T 3/40(2006.01) (54)发明名称 人脸图像超分辨率重建方法及计算机可读 取的存储介质 (57)摘要 本发明公开了一种人脸图像超分辨率重建 方法。本发明的人脸图像超分辨率重建方法,独 创性地提取了两种人脸语义先验知识,将两种人 脸先验信息和人脸超分辨率重建网络的编码部 分拼接合并后作为人脸超分辨率重建网络的解 码部分的输入,确保了重构的人脸图像包含更多 的人脸先验信息,并且将人脸超分辨率重建网络 和多任务人脸语义先验知识提取网络共同作为 生成对抗网络的生成器,使得重建后的高分辨率 人脸图像更加真实逼真,执行速度也很快,对于 不同程度低分辨率的人脸图像都具有良好的鲁 棒性。本发明的人脸图像超分辨率重建方法,对 于由于采集设备和环境以及网络传输介质、图像 压缩等因素引起的低分辨率图像的超分辨率重 建具有良好的应用效果。权利要求书3页 说明书8页 附图5页CN 110148085 A 2019.08.20 C N 110148085 A

1.一种人脸图像超分辨率重建方法,用于对低分辨率人脸图像进行超分辨率重建处理,其特征在于, 包括以下步骤: 步骤S1:采用多任务人脸语义先验知识提取网络提取低分辨率人脸图像的两种人脸先验信息,两种人脸先验信息分别为face parsing maps和face landmark heatmaps; 步骤S2:构建人脸超分辨率重建网络,人脸超分辨率重建网络包括解码部分和编码部分; 步骤S3:将提取的两种人脸先验信息和人脸超分辨率重建网络的编码部分拼接合并后作为人脸超分辨率重建网络的解码部分的输入; 步骤S4:将人脸超分辨率重建网络的解码部分和编码部分、以及多任务人脸语义先验知识提取网络共同作为生成对抗网络的生成器G,并构建判别器D进行对抗训练,同时构建人脸超分辨率重建网络的整体损失函数; 步骤S5:输入低分辨率人脸图像并采用Adam最优化方法迭代更新人脸超分辨率重建网络的参数; 步骤S6:重复执行步骤S5直至整体损失函数收敛,并保存网络模型和参数。 2.如权利要求1所述的人脸图像超分辨率重建方法,其特征在于, 所述步骤S1中的多任务人脸语义先验知识提取网络通过以下步骤构建: 步骤S11:采用3个Residual模块和2个Hour -Glass模块并结合skip connection机制构建多任务人脸语义先验知识提取网络; 步骤S12:初始化多任务人脸语义先验知识提取网络的参数,并构建基于像素级别L2范数的损失函数,然后采用Adam最优化方法训练网络,保存训练好的模型。 3.如权利要求2所述的人脸图像超分辨率重建方法,其特征在于, 所述基于像素级别L2范数的损失函数为 其中,p truth 表示真实的人脸先验信息,p estimate 表示多任务人脸语义先验知识提取网络估计的人脸先验信息。 4.如权利要求2所述的人脸图像超分辨率重建方法,其特征在于, 所述步骤S11具体包括以下步骤: 步骤S111:先利用双线性插值算法对输入的低分辨率人脸图像进行重建,再将重建后得到的人脸图像输入至卷积核为7*7、步长为2的“CONV -BN -ReLU ”卷积结构,“CONV -BN -ReLU ”卷积结构输出人脸图像; 步骤S112:将“CONV -BN -ReLU ”卷积结构输出的人脸图像输入至3个Residual模块,Residual模块的卷积核为3*3、步长为1,Residual模块输出人脸图像; 步骤S113:将Residual模块输出的人脸图像输入至2个Hour -Glass模块,Hour -Glass模块输出人脸图像; 步骤S114:采用两个单独的1*1卷积核对Hour -Glass模块输出的人脸图像进行多任务人脸语义先验信息提取,分别输出表示face parsing maps的特征图和表示face landmark 权 利 要 求 书1/3页2CN 110148085 A

图像超分辨率重建技术的研究背景意义及应用

图像超分辨率重建技术的研究背景意义及应用图像超分辨率重建技术的研究背景意义及应用 1 研究背景及研究意义 2 图像超分辨率重建的应用 1 研究背景及研究意义 伴随着计算机技术、信息处理技术和视觉通信技术的高速发展,人类进入了一个全新的信息化时代。人们所能能够获取的知识量呈爆炸式的增长,因此迫切的要求信息处理技术不断的完善和发展,以便能够为人们提供更加方便、快捷和多样化的服务。数字图像及其相关处理技术是信息处理技术的重要内容之一,在很多领域得到了越来越广泛的应用。对于数字图像在一些情况下一般要求是高分辨图像,如:医学图像要求能够显示出那些人眼不能辨别出的细微病灶;卫星地面要求卫星图像至少能够辨别出人的脸相甚至是证件;有些检测识别控制装置需要足够高分辨率的图像才能保证测量和控制的精度。因此提高图像分辨率是图像获取领域里追求的一个目标。 1970年以来,CCD和CMOS图像传感器广泛的被用来获取数字图像,在很多的 应用场合,需要获取高分辨图像,提高图像分辨率最直接的方法是提高成像装置的分辨力,但是受传感器阵列排列密度的限制,提高传感器的空间分辨率越来越难,通常采用的方法是减少单位像素的尺寸(即增加单位面积内的像素数量),对于数字摄机,比如CCD,就是减少其传感单元的尺寸从而提高传感器的阵列密度,使其能够分辨出更多场景细节。但是这样将导致数字摄像机的价格大幅度提高。技术工艺的制约也限制了图像分辨率的进一步提高。事实上随着像素尺寸的减少,每个像素接收到的光照强度也随之降低,传感器自身的噪声将严重影响图像的质量,造成拍摄的影像信噪比不高,因此,像素尺寸不可能无限制的降低,而是有下限的,当CCD传感器阵列密度增加到一定程度时,图像的分辨率不但不会提高反而会下降,

图像超分辨率重建--图像处理课程设计

目录 1 课程设计目的 (1) 2图像处理系统设计内容及要求 (2) 2.1设计内容 (2) 2.2设计要求 (2) 3 设计方案 (3) 4 功能模块的具体实现 (5) 4.1 空域插值放大的方法 (5) 4.1.1 最邻近插值算法 (5) 4.1.2 双线性插值算法 (6) 4.1.3 双三次插值算法 (7) 4.2 频域重建的方法 (8) 4.2.1 DCT变换的介绍 (8) 4.2.2 DCT放大图像放大算法原理 (8) 4.3 频域分块重建的方法 (10) 4.4 同态滤波器滤波处理 (11) 4.4.1 同态滤波器原理 (11) 4.4.2 同态滤波函数的确定 (12) 5 总结与体会 (14) 参考文献 (15) 附录 (16)

1课程设计目的 MATLAB7.0软件。MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平。通过用MATLAB 对图像进行处理,以实现以下目的。 1.培养严谨的科学态度,正确的设计思想,科学的设计方法和良好的工作作风。 2.培养独立思考的能力,独立检索资料、阅读文献、综合分析、计算机应用、数据及文字处理等能力。 3.培养综合运用基础理论、基本知识的能力。通过课程设计得到工程设计的初步锻炼。

图像超分辨率重建算法研究 文献综述

毕业设计(论文)题目:图像超分辨率重建算法研究 专业(方向):电子信息工程 文献综述 1.引言 超分辨率概念最早出现在光学领域。在该领域中,超分辨率是指试图复原衍射极限以外数据的过程。Toraldo di Francia在1955年的雷达文献中关于光学成像第一次提出了超分辨率的概念。复原的概念最早是由J.L.Harris和J.w.Goodman分别于1964年和1965年提出一种称为Harris-Goodman频谱外推的方法。这些算法在某些假设条件下得到较好的仿真结果,但实际应用中效果并不理想。Tsai &Huang首先提出了基于序列或多帧图像的超分辨率重建问题。1982年D.C.C.Youla和H.Webb在总结前人的基础上,提出了凸集投影图像复原(Pocs)方法。1986年,S.E.Meinel提出了服从泊松分布的最大似然复原(泊松-ML)方法。1991年和1992年,B.R.Hunt和PJ.Sementilli在Bayes分析的基础上,提出了泊松最大后验概率复原(泊松-MAP)方法,并于1993年对超分辨率的定义和特性进行了分析,提出了图像超分辨率的能力取决于物体的空间限制、噪声和采样间隔。 伴随着计算机技术、信息处理技术和视觉通信技术的高速发展,人类进入了一个全新的信息化时代。人们所能够获取的知识量呈爆炸式的增长,因此迫切的要求信息处理技术不断的完善和发展,以便能够为人们提供更加方便、快捷和多样化的服务。数字图像及其相关处理技术是信息处理技术的重要内容之一,在很多领域得到了越来越广泛的应用。对于数字图像在一些情况下一般要求是高分辨图像,如:医学图像要求能够显示出那些人眼不能辨别出的细微病灶;卫星地面要求卫星图像至少能够辨别出人的脸相;有些检测识别控制装置需要足够高分辨率的图像才能保证测量和控制的精度。因此提高图像分辨率是图像获取领域里追求的一个目标。但是通过改善成像装置硬件的分辨力来提高图像的分辨能力是有限的也是不切实际的。因此,需要一种有效的方法来克服图像传感器的这些限制。 解决这一问题的一个实用而有效的方法就是图像的超分辨率重构技术,其不需要昂贵的图像获取设备,只需要通过计算机软件的处理就能获得更高分辨率的图像。因此,用该方法来提高图像分辨率所需要的代价很低。 2.超分辨率图像重构算法研究现状以及优缺点 目前,国内外对超分辨率的研究较突出的有:美国加州大学多维信号处理研究小组的PeymanMilanfar 等提出了大量的实用算法和集成各种算法的超分辨率图像恢复软件包;美国Dayton大学和Wright实验室对红外CCD相机进行了机载试验,利用20幅低分辨率的红外图像,取得了分辨率提高近5倍的实验结果。香港R. F. Chars等研究了超分辨率图像恢复的有效预处理共扼梯度迭代算法。以色列耶鲁撒冷大学M.Elad 等对存在任意运动的图像序列,以及动态的和彩色的多媒体等的超分辨率恢复进行了研究。以色列的

相关文档