APP下载

基于MVF和颜色量化的LED灯饰效果优化方法

2014-03-03文元美聂新明

中国测试 2014年5期
关键词:灯饰内存颜色

文元美,聂新明,胡 勇

(广东工业大学信息工程学院,广东 广州 510006)

基于MVF和颜色量化的LED灯饰效果优化方法

文元美,聂新明,胡 勇

(广东工业大学信息工程学院,广东 广州 510006)

为解决大型LED灯饰实时控制系统中截取计算机屏幕图像速度慢和图像数据量大的问题,在屏幕DC方法的基础上,结合内存映射文件技术,设计一种提高屏幕图像采集效率的新方法;同时使用颜色量化技术在保证视频图像效果的基础上有效降低视频图像颜色数据量,提高控制系统的实时性。实验结果表明:该LED灯饰效果优化方法既有较快的屏幕图像截取速率,又在降低图像位数的前提下保证了图像视觉效果,在LED灯饰实时控制系统中应用良好。

LED灯饰;屏幕DC;内存映射文件;颜色量化

0 引 言

目前在大型LED灯饰软件处理系统中,获取屏幕图像的方法主要有创建屏幕DC(device context)方法[1]以及DirectX中的DirectDraw方法[2]两种。其中屏幕DC方法截图速率较低,难以满足实时性抓屏处理的需求;DirectDraw方法截图速率高,但是因为无法直接获取Overlay Surface中的数据,而导致截图黑屏的现象。

通常为降低系统传输量,在发送图像文件时,后端硬件会进行取高位处理,从而保证系统传输的实时性,然而处理后的图像会出现颜色等分线、图像轮廓模糊等问题,导致图像效果严重失真。

本文在屏幕DC截图的基础上,利用内存文件映射技术(map view of file,MVF),将图像文件映射到虚拟内存的一块地址空间,在访问文件时避免不必要的I/O操作,加快图像采集速度,以解决传统屏幕DC法截图速度慢的问题。同时为降低网络传输量,对所采集的图像,在统一量化算法处理的基础上建立简易八叉树,对像素点进行裁剪,有效提升LED灯饰实时控制处理软件的性能。

1 基于MVF技术的屏幕DC截图法

1.1 内存映射文件技术

WIN32 API提供了一种进行文件操作的高效途径,即内存映射文件。内存映射文件允许在WIN32进程的虚拟地址空间中保留一段内存区域,并将物理存储器中目标文件提交给该区域,映射到这段虚拟内存之中。采用存取内存数据的方式直接操作文件中的数据,如同这些数据放在内存中一样,简化了对文件的访问操作,还可以实现多个进程共享数据,使用内存映射文件技术可大大提高程序的运行效率。

图1 基于MVF的屏幕DC读写屏截图流程

1.2 基于MVF的屏幕DC读写屏截图方法

LED灯饰处理软件截取在主机上实时播放的成像数据。由于软件系统截取的是连续视频,通常抓取速率不能低于24帧/s,以免使人感到画面阻滞不流畅。同时为兼顾LED灯饰系统实时数据传输能力,通常在抓取图像时,根据视频刷新率,设置截图速率,从而控制所抓取图像的数据量。综合考虑截屏速率以及数据量,设计了基于MVF的屏幕DC读写方法,其截图流程如图1所示。

基于MVF的屏幕DC读写方法[3],在屏幕DC截图法中引入Win32提供的函数CreateDIBSection(),通过它创建一个存储DIB位的内存区域,既可以执行相应的GDI操作,又可以直接通过指向DIB位区域的指针方位DIB位区域。避免了图片资源选入后,转化为DDB在时间和空间上的开销,加快了读屏速度。CreateFileMapping()函数用来创建文件映射内核对象,不分配进程的地址空间,不占用内存空间,在实际应用中通常是一次性将整个文件创建为内存映射对象。

MapViewofFile()函数将文件中的数据映射到进程的地址空间,UnmapViewOfFile()函数解除文件内存映射,系统将内存中的数据回写到磁盘。最后通过CloseHandle()函数关闭映射文件,释放内存空间。

2 基于八叉树的颜色量化算法设计

在LED灯饰实时控制系统网络通信能力一定的情况下,每个像素点的颜色数据量越少,网络负载压力就越小。但是直接单纯地减少图像像素点数据量会不可避免地造成图像细节失真,严重影响图像的视觉特性。为了使颜色量化重建的图像在视觉效果上尽可能接近原始图像,本文在利用统一量化算法对图像初步处理的基础上,采用八叉树算法[4],通过构建简易八叉树,并限制八叉树层数,减少叶节点,简化量化处理过程,提高处理速度,以适应LED远程控制系统应用环境的实时性。

2.1 八叉树构建

在前文屏幕图像采集中,获取的是RGB信号,虽然在原理上说,LUV空间与人的视觉是相关联的[5],在LUV空间上量化能得到更好的视觉效果,考虑到RGB空间与LUV空间中进行转换需要经过非线性运算,消耗大量的系统资源,为保证算法效率,直接采用RGB颜色空间进行颜色量化。

在设定构建八叉树时,采用规则八叉树的存储结构[6],其中每个节点的数据结构中包括一个指向父节点的指针,一个指向8个子节点向量的指针。另外还包括该节点对应的颜色出现的次数,R、G、B三位的颜色值以及节点代表的颜色在调色表中的索引值等五个字段。同时带有3个成员函数,分别用于判断该节点是否为叶子节点、该节点是否为倒数第2层的节点,把子节点的R、G、B三位颜色值及其颜色出现次数累加到父节点中。这种结构可以有效平衡空间和操作效率之间的关系,适用于实时性要求较高,内存空间有限的系统中。

在设定的RGB颜色空间建立八叉树过程如下:

1)通过统一量化法对24位颜色数据取高位,即将R8:G8:B8量化成12位的R4:G4:B4,获取的12位颜色信息作为八叉树中节点的坐标值,其中RGB数据信息按照从高到低分别对应八叉树中的浅层级节点与深层级节点,以此循环处理,可以确保得到的八叉树的深度为4层。

2)确定八叉树节点的坐标信息后,从根节点纵向遍历八叉树。如果遍历到的坐标位置中不存在八叉树的节点时,则生成该八叉树节点,否则继续以RGB低1位的组合作为节点坐标。深入到八叉树的叶节点时,统计目前八叉树中存在的颜色数,同时把该节点对应颜色出现的次数以及颜色的RGB值累加到节点数据结构的相应字段中。

图像中每个像素均做以上两步处理,直至图像中的每个像素均与八叉树中的叶节点一一对应,此时便建立了如图2所示的八叉树。

图2 构建的4层八叉树结构图

2.2 八叉树的裁剪与图像质量恢复

八叉树数据结构的建立需要大量的内存空间,同时占用较多时间来计算叶节点,因此有必要对叶节点进行裁减,以减少运算时间和空间复杂性。在八叉树的裁减中,对相同深度的节点取舍有两个标准,即选择具有最少像素的节点或者具有最多像素的节点。前者可以使图像的误差最小,但是缺少对图像细节的支持;后者可能在大范围的光滑区域中产生带状效应,但是可以较好地保持图像中的细节,达到反走样的效果[7]。在LED灯饰实时控制处理的应用环境中,图像的轮廓和层次感对锁播放图像的视觉效果有着重要的影响,必须要保证图像误差尽可能的小,因此,在裁减具有相同深度的节点时,本文采用首先删除具有最小像素的节点,对图像细节的支持可以通过后续的误差扩散处理解决。

裁减八叉树的过程是以八叉树的颜色数是否大于256色作为是否裁减完毕的判断依据。当八叉树的颜色数大于256时,便从具有最小像素点的节点开始裁减,直到颜色数小于等于256,这样处理得到的调色表的颜色数范围介于249~256之间,能够符合调色表的设计要求。

八叉树的裁减过程先考察第3层的节点数是否大于256,如果大于256,则先把所有第4层的叶节点合并到其父节点中,并对其进行裁减。然后进行自下而上的裁减过程。其设计思想是删除颜色次数出现最小的最底层父节点的所有子节点,直到八叉树的颜色数小于等于256。步骤如下:

1)从根节点开始遍历八叉树,搜索出所有最底层的父节点。

2)把这类节点存储在一个链表当中,并以节点的颜色数作降序排列。

3)把这类节点子节点的颜色数和RGB的值累加到该类节点中。

4)此时在链表末尾端是颜色次数出现最少的最底层的父节点,在链尾删除这种父节点所对应的所有子节点,这种最底层的父节点就变成了叶节点,其本身所对应的父节点就成了底层的父节点,重复步骤1)向下循环操作,直至八叉树的颜色数小于257为止。

为降低对图像八叉树颜色数据结构进行裁减后出现的图像层次感差、轮廓现象明显等视觉上的不适反应,本文在颜色量化处理的基础上,设计一个负反馈系统,通过Floyd-Steinberg[8]误差扩散算法,对当前像素的量化误差按一定比例扩散到邻接像素上,局部的误差就在相邻像素上得到补偿。这种算法运算简单,处理速度快,所以适用于LED灯饰实时控制系统。

3 实验与结果分析

为了比较屏幕DC法和优化后的屏幕DC截图效率,在同一软硬环境下,利用所设计的屏幕图像采集软件做了4次捕捉实验,每次捕捉尺寸不同,每次连续捕捉1000帧,捕捉一帧所需要的平均时间以及帧数如表1所示。

由表1可见,采用传统DC屏幕截图法,即使是在尺寸比较小的时候(如200×200)时,仍没有达到24帧/s以上。而结合MVF技术的屏幕DC法,在截取尺寸在330×240以内时,可以做到以24帧/s的速率抓取监控屏幕中连续播放的视频图像,完全可以满足LED灯饰控制系统对实时连续播放的需求。

表1 实验测试视频帧抓取时间及帧数

为了检验对所截取图像的量化效果,特别是检验图像在层次感、颗粒感与轮廓变化上给人的视觉感受,选择如图3(a)所示的原图进行图像静态试验,分别对原图做了统一量化处理(图3(b))、改进后的八叉树裁减处理(图3(c))及最后误差扩散处理(图3(d))。由图可知改进的八叉树算法在颜色的数据量减为原来的1/3的情况下,能够有效减少在颜色渐变区域存在的带状现象,颜色更有层次感,在经过Floyd-Steinberg误差扩散处理后,图像增加了颗粒感,同时带状现象也进一步弱化,从而进一步提高视觉效果。

图3 颜色量化算法效果实现对比图

本文所设计的LED灯饰效果优化方法经上述分步检验后,在如图4所示的大型LED灯饰控制系统中进行了具体实验,将采用本方法所采集的视频资源与LED灯具布局平台[9-10]所提供的LED像素点布局文件映射后,生成可被后端硬件所识别的异形文件。

4 结束语

本文设计的LED灯饰效果优化方法,通过设计基于MVF技术的屏幕DC方法,实时截取LED实时控制屏幕图像,能够适应各种视频源文件,技术上实现简单并且处理速度快;同时通过对原始八叉树算法时效性的改进,配以Floyd-Steinberg误差扩散处理等技术,较好地解决了采集到的屏幕图像由于颜色量化所产生的带状现象、颜色失真等问题。

图4 大型LED灯饰控制系统

由于采用本方案设计的软件系统工作在Windows系统,而非实时操作系统,所以软件在实时抓取连续播放视频图像时,每秒实际截取的帧数可能会小于设置的帧数,因此可考虑将本文所设计的方法移植到实时操作系统上(如VxWorks),从根本上解决软件系统运行速度问题。

[1]於文雪,李松毅,罗立民.基于Windows GDI的图形图像处理探讨[J].计算机工程,2003,29(2):270-272.

[2]董英英,王启峰.基于DirectDraw的击键式卡通游戏设计[J].计算机应用与软件,2010,27(4):169-241.

[3]徐世波,郭爱菁.基于大型图片的文件读取方法的研究与探讨[J].计算机应用与软件,2009,26(6):126-140.

[4]刘志福,胡君.视觉显著性的八叉树颜色量化方法[J].计算机工程,2011,37(6):212-214.

[5]赵志诚,蔡安妮.图像颜色矢量量化算法[J].北京邮电大学学报:自然科学版,2007,30(5):131-134.

[6]余文勇,李亚军,陈幼平.虚拟现实场景中基于八叉树的网格简化算法[J].计算机工程与应用,2006(14):34-37.

[7]Kang H C,Kai T W,Chin C C,et al.Exploiting hardware accelerated occlusion queries for visibility culling[J].IEICET Ransactions on Fundamentals,2005,88(7):2007-2014.

[8]Zhou B F,Fang X F.Improving mid-tone quality of variable-coefficient error diffusion using threshold modulation[C]∥ACM Trans on Graphics.New York:ACM,2003:437-444.

[9]Wen Y M,Nie X M,Liu G X.Design and realize of the graphics platform for LED lamps’layout based on GDI+and dual-buffer[C]∥International Workshop on Information and Electronics Engineering,2012:3297-3301.

[10]聂新明,文元美,刘桂雄.LED灯具布局平台中MVC设计模式的研究与实现[J].现代制造工程,2012(9):135-138.

Optimization method for improving effects of LED lighting based on MVF&color quantization

WEN Yuan-mei,NIE Xin-ming,HU Yong
(School of Information Engineering,Guangdong University of Technology,Guangzhou 510006,China)

To solve the problems of low speed of screenshot of computer screen images and large amount of image data in the large-scale LED lighting real-time control system,a new method to improve the efficiency of the screen image screenshot was designed based on screen device context(DC)method combined with map view of file technology.At the same time,color quantization technology is utilized to reduce the amount of video image data and improve real time performance of the monitoring system,on the condition of good video image effects.The experimental results show that applying the optimized method of improving the LED lighting effects could get a faster screenshot of the screen image with better visual effect.The method is applied in the LED lighting real-time information system.

LED lighting;screen DC;map view of file;color quantization

TP301;TN312+.8;O224;TP274

:A

:1674-5124(2014)05-0096-04

10.11857/j.issn.1674-5124.2014.05.025

2013-11-17;

:2014-01-24

中国博士后科学基金项目(2011M500130)

文元美(1968-),女,湖北荆州市人,副教授,博士,主要从事智能信息处理与可信研究。

猜你喜欢

灯饰内存颜色
2020斯德哥尔摩家具与灯饰展
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
Barovier&Toso灯饰殿堂
纸糊地球仪
特殊颜色的水
内存搭配DDR4、DDR3L还是DDR3?
上网本为什么只有1GB?
灯饰清洗养护生意真的很赚钱