上一页 1 ··· 3 4 5 6 7 8 9 下一页
摘要: 内存池是种用于分配大量大小相同的小块内存的技术,可以极大加快内存分配/释放过程.MemPool技术的内存分配,释放速度非常快,达到O(1)级别.缺点:1).只能分配特定字节长度的内存,也就是说,MemPool不是通用内存管理器.2).MemPool技术可能导致内存占用只增不减.基本实现如下:其中指针变量MemBlockHeader把所有申请的内存块(MemBlock)串成一个链表,以便通过它可以释放所有申请的内存.FreeNodeHeader变量则是把所有自由内存结点(FreeNode)串成一个链表.内存块大小一般固定为MemBlockSize字节(除去用以建立链表的指针外).内存块在申请之初 阅读全文
posted @ 2012-06-05 23:05 一点心青 阅读(2253) 评论(0) 推荐(0) 编辑
摘要: 下面主要介绍STL中实现的内存空间配置器.关键点:1).考虑到小型区块所可能造成的内存破碎问题,设计了双层级配置器.当配置区块超过128bytes时,调用第一层级配置器,第一层级配置器直接使用malloc()和free().当配置区块小于128bytes时,调用第二层级配置器,采用复杂的memory pool整理方式,降低额外开销.2).内存池管理方式是每次配置一大块内存,并维护对应之自由链表.若有相同大小的内存分配,就直接从自由链表中分配内存块.若内存释放时,则由配置器回收到自由链表中.第二级配置器会主动将任何小额区块的内存需求量调至8的倍数.3).自由链表(free-list)节点的结构如 阅读全文
posted @ 2012-06-05 19:29 一点心青 阅读(1224) 评论(0) 推荐(1) 编辑
摘要: 构造一个动态内存分器的设计空间很大,有多种块格式,空闲链表格式,以及放置,分割和合并策略可供选择.下面介绍的方法中,使用了隐式空闲链表和立即边界标记合并方式.总体思想:首先用malloc申请一大段内存空间,将这段内存空间看作整块的内存;内存分配算法采用了最简单的第一次匹配算法,即在第一次遇到满足请求的未使用的内存区域立刻分配给请求;内存释放时,根据内存区域的头域和尾域标识的分配情况进行合并处理.使用的堆块格式如下图所示:使用的隐式空闲链表格式如下图所示:操作空闲链表的基本常数和宏全局变量:主要的内部函数:外部接口函数:其中,内存释放时,合并可能出现的四种情况如下图所示:参考资料:深入理解计算机 阅读全文
posted @ 2012-06-05 13:06 一点心青 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 分配程序的全局变量分配程序的初始化函数sbrk()函数,用于动态增加内存空间.char *sbrk(int incr) incr为增加的字节数.内存控制块结构分配程序的释放函数分配程序的分配函数指针间的图示效果如下:mem_alloc_ptr为malloc()函数返回的可用区间指针.思考点:1).内存分配的底层编程主要技巧是强制类型的转换,以及一些指针间操作,进行编程实现时,需要画清相应示意图.2).该方法中,使用4字节来标识内存是否可用,有点浪费.3).该方法中,内存释放时,没有内存合并,将会产生许多内存碎片.4).该方法中,内存分配时,在最坏的情况下,需要遍历所有的内存块,效率低下.参考资 阅读全文
posted @ 2012-06-05 10:18 一点心青 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 问题描述:关键帧提取后,将会得一序列关键帧的帧号,然后需要把这些帧保存起来,以便于浏览和管理.通过opencv里的VideoCapture的函数set(CV_CAP_PROP_POS_FRAMES,nextFrameNumber),定位到具体的帧号,但最终读取的并不是对应帧的图像.问题出现的原因:Opencv底层是通过ffmpeg读取视频.其中定位主要用av_seek_frame()来定位frame的位置.int av_seek_frame(AVFormatContext *s,int stream_index,int64_t timestamp,int flags)其中最后一个参数有AVSE 阅读全文
posted @ 2012-06-04 15:08 一点心青 阅读(11241) 评论(1) 推荐(0) 编辑
摘要: 参考文献 基于自适应混合高斯模型的时空背景建模 自动化学报 2009创新点:1).在混合高斯模型基础上,混合了空间分布信息特征.2).空间模型和时间模型进行前景检测时,如何决策.文中主要是利用空间域背景模型进行粗尺度判断,当空间域背景模型无法判断时,再利用时间域背景模型进行判断.3).自适应调整混合高斯模型的个数.时间域模型:混合高斯模型,添加了自适应调整混合高斯模型个数模块.细节请参考:http://www.cnblogs.com/dwdxdy/archive/2012/05/31/2528790.html空间域模型:统计混合高斯模型中背景模型在空间上的分布,作为像素的空间域背景模型.利用颜 阅读全文
posted @ 2012-06-04 11:26 一点心青 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 参考文献 Background Subtraction with Adaptive Spatio-Temporal Neighborhood Analysis VISAPP 2008创新点:1).将前景检测分为二层处理,分别是像素层和区域层,通区域层来消除误检的像素点.2).在区域层处理时,区域窗口的大小是自适应的.像素层处理:与混合高斯模型处理方式一样.区域层处理:针对像素层处理后得到前景像素点,计算并判断该像素点是否与其邻域内某个背景像素点的对应的模型匹配.若匹配,则说明该像素点是背景,否则为前景.当区域窗口较大时,区域层处理的计算复杂度比较高,需要调整窗口大小,来平衡计算复杂度和检测效果 阅读全文
posted @ 2012-06-04 10:53 一点心青 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 参考文献 Real-Time Moving Object Detection in Video Sequences Using Spatio-Temporal Adaptive Gaussian Mixture Models VISAPP 2010创新点:1).改进了混合高斯模型,混合了空间和时间特征信息.2).限制混合高斯模型中的方差值的变化.模型的匹配,更新和基于混合高斯模型的背景建模一致.在前景判断模块添加了一层,空间信息分析,不只是根据模型的匹配结果来确定前景.其步骤如下:1).根据模型匹配结果,得到一个mask图像,用来表示像素点与背景模型的匹配程度.2).针对mask图像计算每个像 阅读全文
posted @ 2012-06-04 10:26 一点心青 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 问题描述:一般利用CUDA进行加速处理时,都需要测试CUDA程序的运行时间,来对比得到的加速效果.解决方法:1).GPU端计时,即设备端计时.2).CPU端计时,即主机端计时.设备端计时有两种不同的方不地,分别是调用clock()函数和使用CUDA API的事件管理功能.clock函数计时:1).在内核函数中要测量的一段代码的开始和结束的位置分别调用一次clock函数,并将结果记录下来.2).根据这两次clock函数返回值,作差计算,然后除以GPU的运行频率(SP的频率)即可以得到内核执行时间.一般只需要记录每个block执行需要的时间,最后将得到多个block的开始和结束时间,然后比较这多个 阅读全文
posted @ 2012-06-04 09:17 一点心青 阅读(5576) 评论(2) 推荐(0) 编辑
摘要: 参考文献 Summarization Extraction Method forSurveillance Video Based on Color SpatialDistribution Characteristic CiSE 2009与传统的关键帧提取方法类似,只不过其选取的特征不同.CSD 颜色空间分布特征将图像中的像素点分为相连的,和不相连的.相连的定义:当该与像素点颜色相同,相连通的像素点组成一个连通域,该区域像素点的个数大于阈值(图像大小的1%~3%)时,该区域为相连的,该区域的像素为相连的像素点.否则,为不相连的.颜色空间分布直方图Hc(i),Hnc(i)分别表示颜色值为i时,对应 阅读全文
posted @ 2012-06-01 18:49 一点心青 阅读(756) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 下一页