发明名称 基于累积能量的无缝拼接图像处理方法
摘要 本发明提供了一种基于累积能量的无缝拼接图像处理方法,考虑了传统无缝拼接seam carving过程中的贪心效应带来的不良效应,通过记录无缝拼接seam carving过程中更多的能量信息和引入能量更新步骤,并融入图像的视觉显著性信息,达到减弱贪心效应的目的。本发明的优点是本发明的方法比原来的无缝拼接技术有更好的内容感知的能力,提高了鲁棒性。
申请公布号 CN101609547A 申请公布日期 2009.12.23
申请号 CN200910054913.0 申请日期 2009.07.16
申请人 复旦大学 发明人 骆思强;张军平;白云峰
分类号 G06T3/40(2006.01)I 主分类号 G06T3/40(2006.01)I
代理机构 上海东亚专利商标代理有限公司 代理人 罗习群
主权项 1、一种基于累积能量的无缝拼接图像处理方法,其特征在于:对于一张输入图像P,按下面的步骤实现缩小宽度:①计算图像的强度表I,并将I中所有元素除以I中元素的最大值(即让最大元素归1);②将I通过大小为20×20,方差为9的高斯低通滤波器,得到模糊化的图像强度Ib;③求出输入图像的视觉显著表Smap,并将Smap中所有元素除以Smap中元素的最大值(即让最大元素归1);④按如下公式构造初始化最小能量表A和最大能量表B:<maths id="math0001" num="0001" ><math><![CDATA[ <mrow> <msubsup> <mi>A</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </msubsup> <mo>=</mo> <mi>min</mi> <mo>{</mo> <msub> <mi>I</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>,</mo> <msubsup> <mi>I</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mi>b</mi> </msubsup> <mo>,</mo> <mi>Sma</mi> <msub> <mi>p</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>}</mo> </mrow>]]></math></maths><maths id="math0002" num="0002" ><math><![CDATA[ <mrow> <msubsup> <mi>B</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </msubsup> <mo>=</mo> <mi>max</mi> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>,</mo> <msubsup> <mi>I</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mi>b</mi> </msubsup> <mo>,</mo> <mi>S</mi> <msub> <mi>map</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> </mrow>]]></math></maths>其中A(0)和B(0)是A和B的初始化值,I是第1步得到的强度表,Ib是第②步得到的模糊化的强度表,Smap是第③步得到的视觉显著表;通过下标i和j遍历A(0),B(0),I,Ib和Smap;⑤重新定义每个像素点的能量和每条seam的能量:设当前已经删除t条seam(t初始值为0),像素点Pi,j的能量记为e(t)(Pi,j),则定义为e(t)(Pi,j):<maths id="math0003" num="0003" ><math><![CDATA[ <mrow> <msup> <mi>e</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>P</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <msup> <mrow> <mo>(</mo> <msubsup> <mi>A</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msubsup> <mo>-</mo> <msubsup> <mi>A</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msubsup> <mi>B</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msubsup> <mo>-</mo> <msubsup> <mi>B</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow>]]></math></maths>其中A(t)和B(t)是删除t条seam之后的最小能量表和最大能量表(初始为A(0),B(0));每条seamS的能量为S中每个像素点的能量和:<maths id="math0004" num="0004" ><math><![CDATA[ <mrow> <msup> <mi>e</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>S</mi> <mo>)</mo> </mrow> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msup> <mi>e</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow>]]></math></maths>⑥按上一步骤的定义,按照下式的动态规划求出当前最小seam(M(t)(i,j)表示删除t条seam后,当前图像中从首行某点为起点,以P(i,j)为终点的seam或者部分seam的最小能量值):M(t)(i,j)=min{M(t)(i-1,j-1),M(t)(i-1,j),M(t)(i-1,j+1)}+e(t)(Pi,j)M(t)的最后一行的最小值对应着当前最小能量的seam的能量;动态规划的过程中记录回溯信息以确定最小seam的位置;⑦确定了当前最小seam的位置后,更新能量表:设当前已经删除了t-1条seam,并且找到了马上要删除的第t条seam(当前最小seam),则首先更新A(t-1)和B(t-1)为A(t1)和B(t1):<maths id="math0005" num="0005" ><math><![CDATA[ <mrow> <msubsup> <mi>A</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>=</mo> <mi>min</mi> <mo>{</mo> <msubsup> <mi>A</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>,</mo> <msubsup> <mi>A</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>}</mo> </mrow>]]></math></maths><maths id="math0006" num="0006" ><math><![CDATA[ <mrow> <msubsup> <mi>B</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>=</mo> <mi>max</mi> <mrow> <mo>(</mo> <msubsup> <mi>B</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>,</mo> <msubsup> <mi>B</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mrow> <mo>(</mo> <mi>t</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow>]]></math></maths>在上式中,(i,j)遍历要删除的第t条seam(当前最小seam)中的点;⑧更新能量表后,删除当前最小seam,形成下一个迭代的能量表:计算出A(t1)和B(t1)后,在当前图像,A(t1)和B(t1)三张图表中分别删除对应当前最小seam位置上的元素;设A(t1)和B(t1)删除对应位置的元素后记为A(t)和B(t),则A(t)和B(t)就是删除t条seam后的对应能量表;如果此时图像还未达到目标宽度,回到第⑤步,否则退出;缩小高度的方法按以上的步骤实现。
地址 200433上海市杨浦区邯郸路220号