【发明内容】
基于此,有必要提供一种抠图图像质量好,计算效率高的图像抠图方法。一种图像抠图方法,包括如下步骤:获取原图像,根据所述原图像的空间和颜色信息把所述原图像预分割成多个子区域;以所述子区域为节点生成图,计算所述图各个节点之间的权值;根据所述权值将所述原图像分割成前景和背景;将所述前景融入新图像中。
在优选的实施方式中,所述获取原图像,根据所述原图像的空间和颜色信息把所述原图像预分割成多个子区域的步骤为:根据所述原图像的空间和颜色信息计算所述原图像每个像素的均值漂移量;根据所述均值漂移量把所述原图像预分割成多个子区域。
在优选的实施方式中,所述以所述子区域为节点生成图,计算所述图各个节点之间的权值步骤为:标记部分所述节点为前景节点,标记部分所述节点为背景节点,剩下未作标记的为未标记节点;根据所述前景节点的彩色值、所述背景节点的彩色值及未标记节点的彩色值计算所述图各个节点之间的权值。
在优选的实施方式中,所述根据所述前景节点的彩色值、所述背景节点的彩色值及未标记节点的彩色值计算所述图各个节点之间的权值步骤为:增加源节点和汇节点,计算除源节点与汇节点外所有节点与所述源节点之间的权值,及计算除源节点与汇节点外所有节点与所述汇节点之间的权值;计算所述图中除源节点及汇节点外所有节点与相邻节点之间的权值。
在优选的实施方式中,除源节点与汇节点外所有节点与所述源节点及所述汇节点的权值计算公式如下:
其中,a
i为除所述源节点与所述汇节点外的任一节点,F为所述前景节点的集合,B为所述背景节点的集合,U为所述未标记节点的集合,
为所述源节点与a
i节点之间的权值,
为a
i节点与所述汇节点之间的权值。C
i为a
i节点的彩色值,
为所述前景节点的彩色值的集合,n为所述前景节点的彩色值的集合内元素的数量,
为所述背景节点的彩色值的集合,m为背景节点的彩色值的集合内元素的数量,
为C
i与集合
颜色距离最小的前l个距离值之和,
为C
i与集合
颜色距离最小的前l个距离值之和。
在优选的实施方式中,所述图中除源节点及汇节点外的所有节点中相邻节点之间的权值Ri,j的计算公式如下:
其中,i,j为除源节点及汇节点外相邻的节点,Ci,Cj分别为i,j的彩色值,σ为预分割后各节点与除源节点及汇节点外相邻节点彩色值的方差平均值,T为相邻子区域共享边像素数。
在优选的实施方式中,所述将所述前景融入新图像中的步骤为:根据所述前景制作掩膜以得到所述原图像的确定前景,根据所述确定前景获得过渡区域;计算所述过渡区域的透明值;根据所述透明值重新计算所述前景及所述背景。
在优选的实施方式中,所述制作掩膜以得到所述原图像的确定前景,根据所述确定前景获得过渡区域的步骤为:对所述前景进行腐蚀得到第一掩膜,所述第一掩膜所在的区域为所述确定前景;对所述前景进行膨胀得到第二掩膜,所述第二掩膜所在的区域减去所述确定前景得到所述过渡区域。
在优选的实施方式中,所述计算过渡区域的透明值步骤包括如下步骤:构造关于透明值的线性方程组
(L+λD)α=λb
其中,λ为一个常数,D为N×N的对角矩阵,N为所述原图像的像素总数,α为所述透明值,b为所述原图像按列展开成N×1矩阵,L为N×N矩阵,其坐标为(i,j)的元素的值为:
其中,δij当i=j时其值为1,其它情况下为0,wk为坐标为(i,j)的元素的8邻域,所述坐标为(i,j)的元素与所述坐标为(i,j)的元素的8邻域构成3×3窗口,Ii和Ij分别是对应位置的3×1色彩分量,μk为所述窗口中的3×1色彩均值,∑k为所述窗口中的3×3协方差矩阵,ε为常数,I3为3×3的单位矩阵;采用乔里斯基分解算法求解所述透明值。
在优选的实施方式中,所述根据所述透明值重新计算所述前景及所述背景的步骤为:如果所述原图像像素相应的透明值大于第一阈值,该像素属于所述前景;如果所述原图像像素相应的透明值小于第二阈值,该像素属于所述背景;如果所述原图像像素相应的透明值小于等于第一阈值且大于等于第二阈值,求解方程Ax=I,其中,A的第一列为α,第二列为1-α,α为所述透明值,I为所述原图像,得到属于前景的分量和属于背景的分量。
上述图像抠图方法利用原图像的空间和颜色信息将原图像预分割成多个子区域,然后以子区域为节点生成图,通过求解图的最小分割问题,提取得到前景,然后将前景融入新图像中,既减少了图的计算量,又保证了提取前景的质量,进而保证了图像抠图的质量。
【附图说明】
图1为一实施例的图像抠图方法流程图;
图2为一实施例的原图像;
图3为图1所示的图像抠图方法中通过均值漂移量预分割的方法流程图;
图4为图2所示的原图像通过图3所示的均值漂移量预分割得到的效果图;
图5为图1所示的图像抠图方法中标记节点计算权值的方法流程图;
图6为图5所示的标记节点计算权值的方法中标记图像的效果图;图7为图5所示的标记节点计算权值的方法中计算各节点之间权值的方法流程图;
图8为图的结构图;
图9为图2所示的原图像提取前景的效果图;
图10为图1所示的图像抠图方法中通过透明值计算前景和背景的方法流程图;
图11为图10中通过透明值计算前景和背景的方法制作掩膜的方法流程图;
图12为图9所示的前景通过图11所示的制作掩膜的方法得到的掩膜效果图;
图13为图10中通过透明值计算前景和背景的方法求解透明值的方法流程图;
图14为图13所示的通过求解透明值得到的透明值的效果图;
图15为通过图14所示的透明值将前景融入新图像效果图。
【具体实施方式】
一种图像抠图方法,具体的流程如图1所示:
S110,获取原图像根据所述原图像的空间和颜色信息把所述原图像预分割成多个子区域。在一实施例中,原图像如图2所示。如图3所示,步骤S110的具体过程为:
S210,根据所述原图像的空间和颜色信息计算所述原图像每个像素的均值漂移量。在原图像中,空间相近,颜色相似的像素倾向表示同一信息。基于这一思想,可通过原图像的空间和颜色信息把原图像预分割成多个子区域,方便后续的处理。原图像的每个像素可以表示为具有r维颜色向量(r=1为灰度图,r=3为彩色图),加上像素的s维空间向量(s=2为二维图像,s=3为三维图像)的r+s维向量,x=(xr,xs),根据公式(1)迭代计算每个像素点的均值漂移量,直到该均值漂移量收敛。
其中,xi为原图像中的第i像素,yi,j+1为该像素的均值漂移量的第j+1次迭代,hr为色彩间带宽,hs为空间带宽,xk为位于xi邻域中的像素的向量,n为xi邻域中的向量总数,可以是4邻域、8邻域或其他邻域。收敛的判断条件如公式(2)所示,
其中,yi,j+1为xi像素的均值漂移量的第j+1次迭代,yi,j为xi像素的均值漂移量的第j次迭代,eps表示一个大于零的小数。
S220,根据所述均值漂移量把所述原图像预分割成多个子区域。得到所有原图像像素的均值漂移量后,通过公式(3)将原图像划分成多个子区域。
其中,zi为原图像中的第i像素多次迭代后获得的确定的均值漂移量,zk为原图像中的第i像素的邻域中的第k向量多次迭代后获得的确定的均值漂移量,||zk-zi||2为zi和zk的欧式距离。若zi和zk的欧式距离满足公式(3),则zi和zk所对应的像素属于同一子区域。对图2的原图像通过均值漂移量把原图像预分割成多个子区域得到的效果图如图4所示。
S120,以所述子区域为节点生成图,计算所述图各个节点之间的权值。在一个实施例中,如图5所示,步骤S120的具体过程为:
S310,标记部分所述节点为前景节点,标记部分所述节点为背景节点,剩下未作标记的为未标记节点。标记的效果如图6所示。通过S110的步骤后,原图像被分割成为多个子区域,以子区域为节点生成图,对于复杂的图像计算机难以确定哪部分属于前景,哪部分属于背景,为了得到较好的分割结果,需人工将部分节点标记为前景节点,部分节点标记为背景节点,剩下未做标记的为未标记节点。
S320,根据所述前景节点的彩色值、所述背景节点的彩色值及未标记节点的彩色值计算所述图各个节点之间的权值。图的节点确定后,需确定节点与节点间的权值。在一个实施例中,如图7所示,步骤S320的具体过程为:
S410,增加源节点和汇节点,分别计算除源节点与汇节点外所有节点与所述源节点及所述汇节点之间的权值。增加虚拟的源节点与汇节点,源节点与除源节点与汇节点外的所有节点均有连接的边,除源节点与汇节点外的所有节点两两之间均有连接的边,除源节点与汇节点外的所有节点与汇节点均有连接的边。除源节点与汇节点外的其他节点与源节点及汇节点之间的权值通过公式(4)进行计算,
其中,a
i为除所述源节点与所述汇节点外的任一节点,F为所述前景节点的集合,B为所述背景节点的集合,U为所述未标记节点的集合,
为所述源节点与a
i节点之间的权值,
为a
i节点与所述汇节点之间的权值。C
i为a
i节点的彩色值,
为所述前景节点的彩色值的集合,n为所述前景节点的彩色值的集合内元素的数量,
为所述背景节点的彩色值的集合,m为背景节点的彩色值的集合内元素的数量,
为C
i与集合
颜色距离最小的前l个距离值之和,
为C
i与集合
颜色距离最小的前l个距离值之和。
S420,计算所述图中除源节点及汇节点外所有节点中相邻节点之间的权值。相邻节点Ri,j之间的权值的计算公式(5)如下:
其中,i,j为除源节点及汇节点外相邻的节点,Ci,Cj分别为i,j的彩色值,σ为预分割后各节点与除源节点及汇节点外相邻节点彩色值的方差平均值,T为相邻子区域共享边像素数。
S130,根据所述权值将所述原图像分割成前景和背景。如图8所示,得到图的各边的权值后,使用最小割方法将原图像分割成前景和背景,其中前景的效果如图9所示。在一个实施例中,算法流程如图10所示,步骤S130的具体过程为:
S510,根据所述前景制作掩膜以得到所述原图像的确定前景,根据所述确定前景获得过渡区域。过渡区域为难以区分前景、背景的区域。在一个实施例中,如图11所示,步骤S510的具体过程为:
S610,对所述前景进行腐蚀得到第一掩膜,第一掩膜所在的区域为所述确定前景。对前景进行两次腐蚀操作得到第一掩膜,第一掩膜所在的区域即为确定前景。
S620,对所述前景进行膨胀得到第二掩膜,第二掩膜所在的区域减去确定前景得到所述过渡区域。对前景进行三次膨胀操作,得到的结果减去确定前景即可得到过渡区域,整个掩膜效果如图12所示,得到掩膜后,可根据需要手工对掩膜进行修改。
S520,计算过渡区域的透明值。在一个实施例中,如图13所示,步骤S520的具体过程为:
S710,构造关于透明值的线性方程组
(L+λD)α=λb
其中,λ为一个常数,D为N×N的对角矩阵,N为所述原图像的像素总数,α为透明值,b为原图像按列展开成N×1矩阵,L为N×N矩阵,其坐标为(i,j)的元素的值为:
其中,δij当i=j时其值为1,其它情况下为0,wk为坐标为(i,j)的元素的8邻域,坐标为(i,j)的元素与坐标为(i,j)的元素的8邻域构成3×3窗口,Ii和Ij分别是对应位置的3×1色彩分量,μk为窗口中的3×1色彩均值,∑k为窗口中的3×3协方差矩阵,ε为常数,I3为3×3的单位矩阵。
S720,采用乔里斯基分解算法求解所述透明值。计算后的透明值如图14所示。
S530,根据所述透明值重新计算所述前景及所述背景。在优选的实施例中,第一阈值为0.95,第二阈值为0.05。该步骤包括如下判断步骤:
如果原图像像素相应的透明值大于0.95,该像素属于前景;
如果原图像像素相应的透明值小于0.05,该像素属于背景;
如果原图像像素相应的透明值小于等于0.95且大于等于0.05,求解方程Ax=I,其中,A的第一列为α,第二列为1-α,α为透明值,I为原图像,得到属于前景的分量和属于背景的分量。确定前景、透明值大于0.95的像素及属于前景的分量组成前景。
S140,将所述前景融入新图像中。根据如下的公式(6)融合前景到新图像中,
In=αF+(1-α)Bn (6)
其中,In为融合后的图像,Bn为新图像,α为透明值,F为前景。融合后的效果如图15所示。
上述抠图方法利用原图像的空间和颜色信息将原图像预分割成多个子区域,然后以子区域为节点生成图,通过求解图的最小分割问题,提取得到前景,然后将前景融入新图像中,既减少了图的计算量,又保证了提取前景的质量,进而保证了图像抠图的质量。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。