APP下载

基于seam carving的内容感知图像缩放算法研究

2017-10-26陈小娥杨薇薇

电脑知识与技术 2017年22期

陈小娥 杨薇薇

摘要:图像在变换成目标尺寸的缩放过程中,均匀缩放容易造成图像的失真,直接裁剪方式可能又会造成图像重要内容的缺失,seam carving算法是一种基于内容感知的图像自适应缩放算法,能较好地解决以上问题。该文对seam carving缩放算法进行了研究,首先实现了图像水平和垂直方向上的自适应缩放算法,并与传统的缩放算法进行实验对比分析;然后对seam carving算法进行改进,通过人工干预选择用户感兴趣或不感兴趣区域,来更好地满足用户所需的缩放效果。

关键词:Seam Carving;内容感知;图像缩放;人工干预

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2017)22-0190-03

随着互联网的不断发展,多媒体显示设备越来越多,具有多样性和功能性等特点。由于各种显示设备的尺寸不同,如何让图像自动地调整自身尺寸大小或者改变其长宽比来适应不同的显示设备,成为图像处理中一个研究的热点问题。

常用的图像缩放算法有均匀缩放、直接裁剪和插值算法等。均匀缩放一般只是机械地按照图像尺寸大小进行缩放,容易造成图像的失真。直接裁剪方法则有可能会移除掉图像中的的一些重要信息内容。插值算法如最近邻插值等对提高图像分辨率能力有限,会引起边缘细节模糊等缺点。Avidan等提出了一种基于内容感知的图像自适应缩放算法,即SeamCarving算法,该缩放方法主要通过定义一些能量函数来衡量图像像素点的重要性,然后通过动态规划来寻找累积能量值最小的像素线,通过不断删除这些能量最小像素线达到缩小图像的目的;而通过增加这些能量最小像素线达到放大图像的目的。自Avidan提出基于Seam Carving的图像缩放算法之后,很多学者对该算法进行了相关研究和改进,主要从能量函数的定义和裁剪路径的选择两方面进行改进。如文献通过重新定义显著能量值、优化查找方法以及结合双线性插值限制抽取像素线的数目等方法来避免图像的重要内容产生扭曲和过度抽取;文献结合可计算美学和内容感知图像缩放,设计了一种新的结合美学原则的图像缩放算法,使得缩放效果既保留了图像的重要内容,同时也具有一定的美感。文献为解决图像重要区域误判问题,综合在区域级别时计算图像显著性SRDS的方法,但该方法较依赖于图像显著性检测的准确度。

本文首先在Avidan提出的Seam Carving算法的基础上,实现了图像水平方向和垂直方向上的自适应缩小算法,同时与传统的缩小算法进行比较,并分析实验结果;接着,提出了一种增加人工干预的改进算法,即通过人工干预选择图像的感兴趣区域或者不感兴趣区域,以此修改图像中某些区域的像素能量值来达到保护该区域(感兴趣区域)或者删除该区域(非感兴趣区域)的目的,由此得到用户所需的缩放效果。

1算法思想

1.1Seam Carving算法思想

Seam Carving算法(以下简称sC算法)的主要思路是通过插入或删除图像中包含尽可能多的相对不重要像素点的像素线来将改变图像尺寸,使其变换到目标尺寸。为了保持图像的原有特征,被插入或删除的像素线应该是在图像中相对不重要的。Avidan提出用能量函数来定义像素点的重要性,本文用图像梯度的一阶范数作为能量函数,具体公式如下:

具体方法是从图像的第二行到最后一行进行遍历,然后按照上述公式计算累计能量值。最后一行中得到的累计能量值最小的像素点即所要求的能量值最小的像素线的终点。接着,由该点进行回溯,即可以找到能量值最小的像素线。

1.2改进的算法

在SC算法缩放过程中,该算法主要通过能量函数来定义像素点的重要性,对于某些图片的缩放效果并不乐观,可能会出现重要对象或者区域错误判断的情况。因此,为了得到更符合人类视觉机制的缩放效果,也为了使人们能够根据需要获得想要的缩放效果,提出了一种人工干预选择感兴趣或不感兴趣区域的方法。

改进的算法思路是,首先用户可以通过鼠标选择用户感兴趣或不感兴趣区域,通过将感兴趣区域的像素点的能量值人为地设置为最大值,而不感兴趣区域的像素点的能量值人为地设置为最小值。根据SC原理,当我们把感兴趣的对象或者区域的像素点的能量值设置为较大时,被SC算法挑选出来的最小能量值所形成的像素线就基本不会经过这些区域或者对象,这些区域就避免了被提取和处理,达到保护图像感兴趣区域或重要信息内容的目的。而将不感兴趣区域的对象或区域设置为最小值时,就大大地增加了该区域被算法自动挑选出来的概率,甚至于达到移除该不感兴趣对象或区域的效果。的过程,图中每个方格代表一个像素,左上角的数字代表该像素点本身的能量值,右下角的数字代表到当前像素点的累积能量值,图1(a)为原SC算法动态规划求解像素线过程,其中箭头表示累积的方向,灰色的箭头表示累积得到最小能量值的方向。由图可以看出最后一行为最终累积的能量值,最小值为7(最后一行第2个像素点和第5个像素点),由此得到两条能量值最小的像素线,分别由灰色的箭头回溯路径可以得到,由图可看出依次是2→4→1和1→2→4。若正中心结点(第2行第3列)为用户感兴趣区域,则通过人工干预,修改该结点本身的能量值为某极大值,如图(b)所示,经修改后,原本被挑选出来的经过中心结点的像素线就得到了保护,从而达到保护感兴趣区域的目的。反之,假设正中心结点为用户非感兴趣区域,同样修改该结点本身的能量值为某极小值,则如图(c)所示,优先被挑选出来的像素线经过了该非感兴趣区域。

2实验结果及分析

2.1水平方向缩放

本文首先实现SC水平方向上的缩小算法,然后将结果与传统缩放方法进行比较,见图2,其中f(a)为原图,图像尺寸为250*250,(b)、(c)、(d)分别为均匀缩放、直接裁剪和本文SC算法缩放后的结果图,图像尺寸为250*160。由图可以看出采用传统均匀缩放算法处理后,图片中鱼和荷花荷叶主体部分被压缩变形了;而直接裁剪算法的结果是图像的一些细节部分,如右边的鱼的嘴部部分图像被裁剪掉了,丢失了一些信息;而本文自适应图像缩放处理后,能够较好的保护图像的主体内容不变形,不丢失。

2.2垂直方向缩放

垂直方向也同样可以进行缩放。如图3所示,其中(a)为原始图像,图像尺寸为300*179,(b)、(c)、(d)为缩放后的结果图,图像尺寸为220*179,分别为直接裁剪、均匀缩放和SC算法。直接裁剪算法,使得图像中右侧的树根没办法完全显示出来;均匀缩放使图片中主体内容左侧的树产生了一定的变形;而SC算法能够较好的保护图像的整体显示效果。

2.3人工干预感兴趣区域缩放

经过实验测试,改进的算法通过人工选择图像感兴趣区域后进行缩放,相对原SC算法取得了较好的缩放效果,特别是原SC算法误判视觉关注区域的时候。如图4所示,其中(a1为原始图像,图像尺寸为250*338;(c)为原SC算法放大后的效果图,图像尺寸为250*388,即水平加宽50,由图可以看出图片左侧人物发生了变形,因为人物身体内部区域所在的像素梯度一阶导数能量值在此图中刚好比较小,如(b)所示。(d)图是人工干预选择感兴趣的区域,也刚好是本图的视觉关注区域,用红色画笔选出该区域。(e)图是用改进的算法得到的放大效果图,由图可明显看出该方法有效地保护了图片中感兴趣区域或视觉重要区域不被破坏。

2.4移除对象的缩放

同样,改进的算法通过人工选择图像非感兴趣区域后进行缩放,可以移除图像中指定的非感兴趣区域或对象。如图5所示,(a)图为原图,(b)图为人工选择待移除对象区域(图中穿红色衣服的小孩),选择后本文算法将红色区域的像素点的能量值改为极小值,从而使得挑选的像素线经过该区域的概率大大增大,达到删除的目的。(c)图为移除对象后的缩小结果图。

3结束语

本文实现了基于Seam Carving的图像缩放算法,包括水平方向和垂直方向的缩放,并将它们分别跟傳统的缩放算法进行比较。同时对缩放算法进行了改进,增加了人工干预,通过选择感兴趣区域或非感兴趣区域,修改对应区域像素点的能量值,从而使得挑选的像素线更符合人们想要的结果,达到所期望的缩放效果。