孟利民,包轶名
(浙江工业大学 信息工程学院,浙江 杭州 310023)
基于局部特征的图像插值算法在B/S视频监控中的应用
孟利民,包轶名
(浙江工业大学 信息工程学院,浙江 杭州 310023)
摘要:在B/S模式的视频监控应用中,针对传统的双线性插值图像放大算法会造成图像细节模糊的问题,提出一种改进算法.先计算4个邻点灰度的标准差,通过判断标准差是否大于某个阈值来将图像分为边缘区域和非边缘区域,对于非边缘区域的像素点直接使用双线性插值算法,对于边缘区域的像素点,采用最邻近和双线性插值算法进行加权融合所得的结果.并设计与实现了B/S模式的视频监控系统,在系统中应用改进算法对视频图像进行放大.实验结果表明,该算法可以避免最邻近插值产生的局部锯齿问题,同时也改进了双线性插值造成的图像细节模糊,能够改善视频图像放大后的视觉效果。
关键词:B/S模式;视频监控;图像放大;双线性插值;加权融合
Image interpolation algorithm based on local feature and its application in B/S video surveillance
MENG Limin, BAO Yiming
(College of Information Engineering, Zhejiang University of Technology, Hangzhou 310023, China)
Abstract:In order to solve the problem of image detail fuzzy caused by traditional bilinear interpolation algorithm used in B/S mode video surveillance application, this paper proposes an improved algorithm. In this algorithm, the standard deviation of grey value of the 4 neighbor points are calculated, then the image is divided into edge region and non-edge region according to a certain threshold. For the pixels in non-edge region, the bilinear interpolation algorithm will be used directly. For the pixels in edge region, the nearest neighbor and bilinear interpolation algorithms are used to get weighted fusion result. A B/S mode video surveillance system is designed and implemented in this paper and the improved algorithm is usded to zoom the video image in the system. The experimental results indicate that the algorithm can avoid local aliasing problem caused by nearest neighbor interpolation and improve the image detail fuzzy problem caused by bilinear interpolation. So it can improve the visual effect of the zoomed video image。
Keywords:B/S mode; video surveillance; image zooming; bilinear interpolation; weighted fusion
传统的视频监控应用软件一般由C/S模式来实现[1],然而由于这种模式的软件维护成本高,客户端的安装和更新也较为麻烦,已经越来越少地被开发者所采用[2].与此同时,由于互联网的飞速发展,以及B/S模式相较于C/S模式的优势,将具体的应用以Web页面的形式呈现在浏览器中已经成为软件开发的主流.而在B/S模式的视频监控应用中,视频图像的放大是最常用的功能之一,人们经常希望利用这种方式来更好地观察图像的一些细节.视频图像放大实质上是对视频帧所对应的数字图像进行放大,主要方法是利用差值算法.图像插值是图像超分辨处理的重要环节,不同的插值算法有不同的精度,插值算法的好坏也直接影响着图像的失真程度[3]。
传统的图像插值算法有最邻近插值和双线性插值等,虽然它们实现简单,计算复杂度低,但是由于对每个像素都用相同方法进行处理,没有考虑到图像局部特征,所以效果都不太理想[4].因此,一些基于边缘的图像放大算法被提出.文献[5]采用Canny算子检测边缘,并对边缘进行分类,去除平滑边缘,保留阶梯边缘,并对阶梯边缘的方向进一步细化分类.文献[6]采用Prewitt算子检测边缘,并引入灰度补偿,还利用了边缘像素的方向特性估计边缘,并对边缘和非边缘像素分类插值.然而这些方法都要对图像边缘进行较精确的检测,计算复杂度过大,并且在图像放大倍数不是很高的情况下,实际视觉效果并没有实质性的提升,在针对视频图像放大这种需求的环境下,实用度不高.笔者提出一种双线性插值的改进算法,用一种较简单的方法对图像边缘进行划分,对于边缘像素点采用最邻近插值和双线性插值结果进行加权求和的特殊处理.在实际的B/S模式视频监控应用的环境下对该算法进行实现,并利用该算法对彩色视频帧进行放大操作后进行效果评估,实验结果表明,该算法可以同时改进最邻近插值的局部锯齿效应和双线性插值的细节模糊,改善放大后视频帧的质量。
1传统图像放大算法
图像放大算法可以归结为如何根据源图像的信息来填充放大后图像的每一个像素值,一般采用前向映射的方法,即将放大后图像的像素坐标根据放大比例算出其在源图像中所对应的坐标.假设将一副m×n的图像放大到M×N,其中M>m,N>n.那么放大后图像坐标为(x,y)的像素点在源图像中所对应的坐标(x′,y′)可确定为
(1)
通常所得出的(x′,y′)为小数坐标。
最邻近插值法的思想是直接将源图像中距离(x′,y′)最近的点的像素值作为(x′,y′)的像素值,它只是简单地进行像素值的拷贝,所以在放大后的图像中会出现多个邻近像素的值相同的结果,从而导致图像出现方块锯齿效应,视觉效果很不理想。
双线性插值是利用了需要处理的原始图像像素点周围的四个像素点的相关性,通过双线性算法计算得出的,如图1所示。
图1 双线性插值示意图Fig.1 Schematic diagram of bilinear interpolation
假设f(x,y)代表源图像中坐标为(x,y)点处的像素值,那么(x′,y′)处的像素值为
f(x′,y′)=(1-u)(1-v)f(a,b)+u(1-v)f(a+
1,b)+(1-u)vf(a,b+1)+uvf(a+1,b+1)
(2)
式中u和v分别代表(x′,y′)与(a,b)之间的横向与纵向距离,可表示为
u=x′-a
v=y′-b
(3)
可见双线性插值法利用了所求像素点周围邻近的4个像素点的线性平均权值计算目标像素点的值,可以产生一种平滑过渡的效果,避免了最邻近插值的局部锯齿效应,所得图像整体视觉效果较好.但是如果这邻近的4个像素的值差别过大,那么双线性插值的准确度就会变得不可靠,结果造成了图像局部细节模糊[7]。
2基于局部特征的双线性插值算法
双线性插值法造成局部细节模糊的原因是所求像素点邻近的4个像素点像素值差别过大,而图像中最有可能出现这种情况的便是局部的边缘区域,因此有必要将图像先划分为边缘区域和非边缘区域.然而传统的边缘划分方法计算过于复杂,可以使用一种基于阈值的简便方法[8].首先计算所求像素点邻近4个像素点灰度值的标准差,标准差越大说明目标像素点邻域的灰度变化越大,所包含的边缘信息越多[9],因此可以将该标准差与同一个设定好的阈值相比较,如果大于阈值,则将所求像素点归为边缘区域,反之则将其归为非边缘区域.假设g(a,b)为源图像中坐标为(a,b)的像素点的灰度值,则4个邻点的灰度标准差s为
(4)
(5)
如果s小于预先设定的阈值th,则认为该像素点位于非边缘区域,直接采用双线性插值求出结果.反之如果s大于阈值th,则认为该像素位于边缘区域,可以根据该点到其最邻近点的距离给最邻近插值和双线性插值分配权重,然后对两者进行加权求和得出最终结果,如图2所示。
图2 构造权重示意图Fig.2 Schematic diagram of constructing weights
Wbl=1-Wn
(6)
式中:Wn代表最邻近插值权重;Wbl代表双线性插值权重.进而最终的所求结果f(x′,y′)可表示为
f(x′,y′)=Wnfn(x′,y′)+Wblfbl(x′,y′)
(7)
式中:fn代表最邻近插值的结果;fbl代表双线性插值的结果.采用这种方法考虑了所求像素点到其最邻近点的距离,综合了最邻近插值和双线性插值的结果,对于边缘像素点可以取得更为理想的插值结果,也可以减小由于边缘检测误差所带来的影响.整个改进算法可以由下列步骤来描述:
1) 遍历放大图像的每一个像素,根据式(1)求出其在源图像中对应的坐标(x′,y′)。
2) 求出(x′,y′)周围的4个邻点,并计算每个邻点的灰度值。
3) 根据式(4)计算4个邻点灰度值的标准差s。
4) 若s小于阈值th,则直接根据式(2)使用双线性插值法求出f(x′,y′);若s大于th,则根据式(6)构造最邻近插值和双线性插值的权重,并由式(7)得出f(x′,y′)。
3B/S视频监控系统设计
用Struts2来搭建整个B/S模式视频监控Web应用,设计框图如图3所示。
图3 视频监控Web应用设计框图Fig.3 Design diagram of video surveillance web application
这是一个典型的MVC模式的设计[10],以Struts2中的Action作为控制器,保存视频参数信息的Java类作为数据模型,JSP页面作为视图.用户通过浏览器发起请求之后,由Action处理对应请求,它创建自定义类SipSenderAndReceiver的实例对象,这其中利用MjSip开源库封装了发送和接收SIP消息的功能,我们通常是通过SIP协议来建立音视频会话的[11].Action通过SipSenderAndReceiver实例将请求发送给SIP服务器,由SIP服务器处理之后再将结果返回.Action将返回的数据封装到数据模型对象中,最后JSP页面从数据模型对象中取出有用的数据显示给用户。
这里针对具体需求设计了LoginAction,DevListAction和InviteVideoAction.用户首先会访问登录页面,输入用户名和密码进行登录操作,此时登录请求会被LoginAction处理.LoginAction会将用户名与用SHA1算法加密过的密码通过SipSenderAndReceiver对象发送给SIP服务器进行验证,成功以后会将请求重定向到DevListAction.DevListAction的任务是发送设备信息请求的SIP消息给SIP服务器,解析服务器返回的设备信息,并跳转到视频监控主页面显示设备列表.用户可以在主页面选择某台在线设备并向其发送视频请求,InviteVideoAction会将该请求发送给SIP服务器,服务器会再将请求转发给对应的视频采集设备,并将请求结果和一些视频参数,如解码所需的序列参数集SPS和图像参数集PPS返回给InviteVideoAction,这样一个视频会话就建立起来了。
视频会话建立完成以后,对应设备会通过RTP协议将视频数据发送给流媒体服务器,再由流媒体服务器转发到客户端.客户端通过调用JSP页面中的ActiveX控件的接口函数[12],传入之前从SIP服务器获得的视频解码参数.接口函数中建立了VideoSourceFilter→ffdshow Video Decoder→VMR Video Renderer这样的DirectShow链路完成视频数据接收,解码和显示模块.其中在自定义的VideoSourceFilter中开启了H.264视频流的RTP接收线程,并对接收到的视频数据进行整理,形成视频帧缓存,最后将缓存中的视频帧数据推送给ffdshow.ffdshow负责将H.264视频数据进行解码,还原成YUV420格式后再推送给VMR.VMR负责视频帧的渲染,它最终将视频呈现在用户面前,实际效果如图4所示。
图4 视频监控Web应用界面Fig.4 User interface of video surveillance web application
4图像插值算法的实现及其性能评价
在上述B/S模式视频监控应用的环境下,我们对上文中提出的改进算法做了实现.为了验证改进算法的有效性,将分别对其进行主观评价和客观评价.首先对于主观评价,取352×288像素的源视频帧,如图5所示.分别用最邻近插值,双线性插值和改进算法放大3倍至1 056×864像素,再取其局部细节进行视觉评估.实验中取边缘判定阈值th=70.结果如图6所示。
图5 352×288源视频帧Fig.5 352×288 Source video frame
图6 放大后图像局部比较Fig.6 Local comparison of zoomed image
由图6可以明显看出:最邻近插值出现了局部方块锯齿效应,而双线性插值和改进算法都可以避免出现锯齿.而改进算法相较于双线性插值的优势是可以改善双线性插值造成的图像局部细节模糊问题,为了验证这一点取放大后图像的另一部分细节进行比较,结果如图7所示。
图7 放大后图像细节清晰度比较Fig.7 Detail clarity comparison of zoomed image
仔细对比图7中的上下两幅图可以发现:使用改进算法可以有效地改善双线性插值造成的数字细节局部模糊的现象,这正是由于对于边缘像素点,综合考虑最邻近插值和双线性插值,采用根据其距离最邻点距离构造两者权重的方法所带来的效果。
对于客观评价,可以通过计算均方误差MSE来评估,计算式为
(8)
式中:M为源图像宽度;N为源图像高度;f0(i,j)为源图像中坐标为(i,j)点处的像素值;f(i,j)为源图像由某一算法放大后,再由相同算法缩小到与源图像相同大小后所得的图像中坐标为(i,j)点处的像素值[13].这里将352×288像素的源图像分别用双线性插值和改进算法放大到800×600像素,再由相应算法缩小到352×288像素,由于源视频帧是RGB24格式的彩色图像,所以需要分别计算R分量,G分量和B分量的MSE,结果如表1所示。
表1 MSE计算结果
由表1可以看出:改进算法R,G,B分量的均方误差都要小于双线性插值算法,说明经改进算法处理过后的图像与源图像的差距比双线性插值要小,也反映了改进算法的效果要优于双线性插值。
5结论
以B/S模式视频监控应用中的视频图像放大需求为背景,针对用传统的双线性插值算法进行图像放大虽然可以避免出现方块锯齿效应,但是会出现局部细节模糊的问题,提出一种基于双线性插值的改进算法,利用阈值法将待插值的像素点分为边缘像素点和非边缘像素点,对于边缘像素点综合考虑最邻近和双线性插值,对两者构造权重,求得加权后的结果.在实际的B/S视频监控Web应用中利用改进算法对视频放大模块进行实现并分析效果.实验结果从主观的视觉效果和客观的均方误差分别入手,验证了改进算法的有效性,从而也说明了该方法可以被应用于实际的B/S视频监控应用的图像放大模块中。
参考文献:
[1]何超,俞立,张丹.远程控制实验Web系统设计和开发[J].浙江工业大学学报,2009,37(5):473-476.
[2]JIANG Changgen, HUANG Minghe, TANG Jie. Design and implementation of video conference system based on flex and J2EE[C]//International Conference on Image Analysis and Signal Processing. Taizhou: IEEE,2009:184-186。
[3]张海燕,吴方.几种插值算法的比较研究[J].计算机技术与发展,2012,22(2):234-237.
[4]KIM H C, PARK S J, WANG Jin, et al. Advanced bilinear image interpolation based on edge features[C]//First International Conference on Advances in Multimedia. Colmar: IEEE,2009:33-36.
[5]孔繁庭,侯国强.图像放大中的边缘细化算法研究[J].计算机应用与软件,2010,27(4):261-263.
[6]郭海霞,郭海龙,解凯.基于边缘信息改进的双线性插值算法[J].计算机工程与应用,2011,47(31):171-174.
[7]左飞,万晋森,刘航.Visual C++数字图像处理开发入门与编程实践[M].北京:电子工业出版社,2008.
[8]吴锡生,党向盈,赵勇.基于阈值控制的边缘自适应快速图像插值算法[J].计算机工程,2007,33(22):226-228.
[9]龚昌来,杨冬涛.一种改进的双线性插值图像放大算法[J].激光与红外,2009,39(8):899-901.
[10]毛俊,彭宏,孟利民.基于Django框架的车载定位系统PDF报表下载软件的设计与实现[J].浙江工业大学学报,2012,40(4):446-449.
[11]徐志江,庄壮,孟利民.一种基于Android智能手机的车载定位查询软件[J].浙江工业大学学报,2013,41(6):655-659.
[12]吴金策,杜劲松.B/S架构嵌入式视频监控系统客户端设计[J].电视技术,2013,37(3):188-192.
[13]刘政林,肖建平,邹雪城,等.基于边缘的实时图像缩放算法研究[J].中国图象图形学报,2008,13(2)225-229.
(责任编辑:陈石平)
中图分类号:TP37
文献标志码:A
文章编号:1006-4303(2015)02-0217-05
作者简介:孟利民(1963—),女,浙江金华人,教授,研究方向为多媒体数字通信、无线通信与网络、嵌入式系统,E-mail:mlm@zjut.edu.cn。
基金项目:国家自然科学基金资助项目(61372087)
收稿日期:2014-11-12