本发明涉及图像缩放处理技术领域,特别涉及一种基于显著性模型的图像缩放的方法。
背景技术:
图像缩放技术是图像处理领域中的一项常用技术,用于改变数字图像的空间分辨率。传统的图像缩放往往是采用插值的方法来改变图像的分辨率,例如双线性插值、双立方插值等。这种方法比较简单,但是存在两个问题,一是在图像缩放过程中图像中所有景物都同比例的缩小或者放大,这样无法对图像中一些重要目标进行保护,以突出图像重点;二是在改变图像长宽比时会使图像内容发生严重的失真。本专利所解决的技术问题就是在图像尺寸变化的情况下,保持图像主体区域不变形的缩放技术。
技术实现要素:
本发明要解决的技术问题是:提供一种基于显著性模型的图像缩放方法。该方法能够检测出图像的显著性区域,在任意改变图像大小的同时保持图像中的主体特征不变。
本发明采用的技术方案为:一种基于显著性模型的图像缩放方法,其特征在于实现步骤如下:
(1)对输入图像进行预处理,将图像从rgb色彩空间转换到cielab色彩空间;
(2)采用基于超像素全局对比度的方法计算得到图像的显著性区域;
(3)将显著性检测的结果与图像的梯度信息结合得到能量矩阵;
(4)结合能量矩阵,使用线裁剪算法对原始图像进行缩放,以实现图像尺寸的调整。
本发明与现有技术相比的优点在于:首先,本发明利用了发明内容中步骤(2)所述的方法,基于超像素全局对比度的方法计算图像的显著性区域,该方法能够将图像中的像素聚簇为大小几乎一致的,形状规整的,能够紧密贴合物体边缘的超像素,同时提高了图像全局对比度的计算效率。其次,本发明的发明内容步骤(3)中将图像显著性信息加入图像缩放技术中可以使得在图像缩放时保证整个显著性物体完整性,物体内部几乎不发生形变,而物体周围环境的显著性平稳过渡,可以减少人工痕迹的影响。
附图说明
图1本发明的方法流程图;
图2超像素分割结果图;
图3显著性检测结果图;
图4任意尺寸缩放结果图。
具体实施方式
步骤1对输入图像进行预处理,将图像从rgb色彩空间转换到cielab色彩空间:
步骤1.1rgb转换到xyz
假设r,g,b为像素三个通道,取值范围均为[0,255],转换公式如下:
上面的gamma函数,是用来对图像进行非线性色调编辑的,目的是提高图像对比度;
步骤1.2xyz转到cielab
下面两个公式中,l*,a*,b*是最终的lab色彩空间三个通道的值。x,y,z是rgb转xyz后计算出来的值,xn,yn,zn一般默认是95.047,100.0,108.883;
步骤2采用基于超像素全局对比度的方法计算得到图像的显著性区域;
步骤2.1基于六边形简单线性迭代聚类hslic(hexagonalsimplelineariterativeclustering)方法对图像进行超像素分割。
(1):初始化聚簇中心,按照六边形网络顶点排布,点之间的间隔为
(2):在3×3的邻域内微调聚簇中心,使其移动到梯度最小的位置。
(3):对于每一个聚簇中心,在圆形邻域内(半径为2s)搜寻最为匹配像素,并更新聚簇中心,迭代多次,直到达到较好的聚簇效果。
(4):按颜色差异最小策略加强超像素的连通性合并为超像素。
步骤2.2同时考虑颜色和空间距离两个因素,对分割后的图像基于全局对比度计算得到图像的显著性区域。
超像素的全局对比度可以采用如下的公式计算:
r为图像中所有超像素的集合,ri∈r,rj∈r,j=1,2,...,|r|;dlab(ri,rj)在cielab颜色空间的欧式距离量,用来度量ri和rj的颜色差异,dxy(ri,rj)是两个超像素ri和rj在图像xy平面的欧式距离,用度来量ri和rj的空间接近程度。s(ri)是超像素ri的显著性值。通过公式可以计算出每一个超像素的显著性,进而得到图像i的显著图s(i)。
步骤3将显著性检测的结果与图像的梯度信息结合得到能量矩阵。其中,图像i的梯度定义如下:
gx和gy使用内核大小为3的sobel算子计算:
能量矩阵定义如下:
e(i)=ω*s(i)+(1-ω)*g(i)(10)
其中,s(i)是图像i的显著性图像,通过步骤(2)可以得到;g(i)是图像i的梯度图像,ω(0<ω<1)表示显著性图像的权重,在本文算法中,取ω=0.8。
步骤4使用线裁剪算法对原始图像进行缩放,以实现图像尺寸的调整,步骤如下:
步骤4.1计算像素线的能量值e(c);
像素线的能量值e(c)为像素线中所有像素的能量值之和,即:
其中,ci表示该像素线的第i个像素,e(i(ci))为该像素在能量矩阵中的能量。n表示该像素线的长度,当像素线为横向时n=w,当其为纵向时n=h,w和h分别是图像的像素宽度和高度;
步骤4.2寻找图像的最低能量像素线;
计算出图像的能量矩阵之后,需要根据能量矩阵寻找水平或垂直方向能量值最低的连通像素线;
最低能量像素线c*的公式为:
如果需要对图像的高度和宽度都进行调整,由于每次只能对一条像素线进行操作,所以每次选择的是两条最低能量像素线中单位像素能量值最低的那条,即
其中,h和w分别为图像的像素高度和宽度,
步骤4.3添加或者删除图像最低能量像素线;
寻找到图像的最低能量像素线之后,需要在图像中添加或者删除这条像素线。如果需要缩小图像,将最低能量像素线从图像中删除;如果需要放大图像,则将这条像素线添加到图像中原像素的旁边;
对图像大小进行缩放时,如果只需要对图像的一个方向进行调整,那么每次只需要寻找到相应的最低能量像素线,然后添加或删除该像素线即可。例如,当只需要调整图像的宽度,将其从分辨率h*w(h为高度,w为宽度)调整到h*(w+d)的时候,每次寻找结合能量矩阵中能量最低的纵向连通像素线,将其添加到原像素旁边即可。添加d条纵向最低能量像素线即可将图像分辨率调整为h*(w+d),其中每条像素线的长度为h,增加的像素总数为d*h。
步骤4.4修正像素线能量值;
为了避免放大图像时同一条像素线被重复添加,可以对添加过的像素线进行标记。标记的方式是在每次添加像素线之后将该像素线中所有像素的能量值都设置成无限大(通常是在系统中设置一个合适的数值大小),从而使得下次寻找最低能量像素线时该像素线的累积能量值不会是最低的.
由于相邻像素线的能量值往往都是比较接近的,仅仅标记处理过的这条最低能量像素线还不够,因为下次重新寻找到的最低能量像素线很有可能在标记过的这条像素线的附近。因此,在处理当前最低能量像素线之后,不光需要对当前像素线的能量值进行修正,还需要对该像素线邻域内的若干条像素线的能量值进行不同程度的修正。以纵向像素线为例,对当前最低能量像素线的[-d,d]邻域内的像素进行修正的公式如下:
enew(i+k,j)=e(i+k,j)+ω(i+k,j)*e(i,j),k∈[-d,d](14)
其中,ω(i+k,j)是|k|的递减函数,也就是ω(i+k,j)的值随着需要修正像素与当前最大能力像素线的距离|k|的增大而减小。ω(i+k,j)的公式如下:
ω(i+k,j)=p/(1+|k|)(15)
其中,p的大小与图像缩放程度有关。当图像缩放程度较大时,意味着图像的像素能量值需要修正的次数和数量都大大增加。为了避免修正次数太多导致重要区域的能量值相对变低,在图像缩放程度较大时,将p的取值变小。也就是说,p的值随着缩放程度的增加而递减。p的值由如下公式得出:
其中,pw和ph分别表示处理纵向和横向像素线时候的取值。p的取值不超过1。w和h分别表示原图像的宽度和高度;w'和h'分别表示目标图像的宽度和高度。分别使用w/|w'-w|和h/|h'-h|来表示图像的缩放程度。
以上对本发明实施所提供的一种基于显著性模型的图像缩放方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。