发明名称 一种无线视频传感器的AVS编码功耗模型优化方法
摘要 本发明公开了一种无线视频传感器的AVS编码功耗模型优化方法,通过对I帧图像直接进行AVS编码,而对P帧图像将预测模式分为Skip模式、帧间16×16预测模式和其余帧间预测模式三类,根据所列出的功耗模型,在已知目标比特率和可用编码功耗时,确定采用Skip模式和采用帧间16×16预测模式编码的宏块,对剩下的宏块则利用拉格朗日代价函数在除Skip模式和帧间16×16预测模式外的其余帧间预测模式中选择最佳的预测模式,确保了功耗模型的低计算复杂性和有效性;本发明方法在可用编码功耗不断降低时,可以实时地根据所列的功耗模型调节视频信号中的帧图像中采用Skip模式、帧间16×16预测模式和其他帧间模式编码的宏块个数,从而使无线视频传感器在能量受限的情况下视频图像的质量保持最优。
申请公布号 CN101848394B 申请公布日期 2012.01.18
申请号 CN201010184247.5 申请日期 2010.05.25
申请人 宁波中科集成电路设计中心有限公司 发明人 宋震龙;黄晁;杨文勇;张从连;郑从卓
分类号 H04N7/50(2006.01)I;H04N7/26(2006.01)I 主分类号 H04N7/50(2006.01)I
代理机构 宁波奥圣专利代理事务所(普通合伙) 33226 代理人 程晓明
主权项 1.一种无线视频传感器的AVS编码功耗模型优化方法,其特征在于包括以下步骤:①设定无线视频传感器当前获取的视频信号的初始目标比特率,记为R,其中,视频信号包括多个图像组,每个图像组由一个I帧图像和至少一个P帧图像组成,I帧图像为每个图像组编码时的起始帧图像,P帧图像为前向预测帧,编码时以其前一帧图像的重建帧图像作为参考帧;无线视频传感器中的AVS编码器以帧为编码单元依次对各图像组中的各帧图像进行AVS编码,定义当前编码的帧图像为当前帧图像;②判断当前帧图像是否为I帧图像,如果是,则遍历所有帧内预测模式为当前帧图像中的各个宏块选择各自最佳的预测模式,然后执行步骤<img file="FSB00000638953900011.GIF" wi="95" he="62" />否则,继续执行;③计算当前帧图像的可用编码功耗,记为Pow,<img file="FSB00000638953900012.GIF" wi="401" he="99" />其中,V为无线视频传感器中的CMOS电路的供电电压,f<sub>CLK</sub>为无线视频传感器中的CMOS电路的时钟频率;④计算当前帧图像与其参考帧的绝对误差和,记为SAD,<img file="FSB00000638953900013.GIF" wi="801" he="145" />其中,Height表示当前帧图像的高度,Width表示当前帧图像的宽度,f<sub>n</sub>(i,j)表示当前帧图像中坐标为(i,j)的像素的像素值,f<sub>n-1</sub>(i,j)表示参考帧中坐标为(i,j)的像素的像素值,n≤N,N表示视频信号中包含的帧图像的帧数;⑤根据当前帧图像与其参考帧的绝对误差和SAD列出AVS编码功耗模型:<maths num="0001"><![CDATA[<math><mrow><munder><mi>min</mi><mrow><mo>{</mo><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub><mo>,</mo><msub><mi>N</mi><mi>left</mi></msub><mo>}</mo></mrow></munder><mi>D</mi><mo>=</mo><mi>SAD</mi><mo>&times;</mo><mo>[</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msup><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mfrac><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub><mi>M</mi></mfrac><mo>-</mo><mfrac><msub><mi>N</mi><mi>left</mi></msub><mi>M</mi></mfrac><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>&times;</mo><msup><mrow><mo>(</mo><mfrac><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub><mi>M</mi></mfrac><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><mfrac><msub><mi>N</mi><mi>left</mi></msub><mrow><mn>2</mn><mo>&times;</mo><mi>M</mi></mrow></mfrac><mo>)</mo></mrow><mo>&times;</mo><msup><mn>2</mn><mrow><mo>-</mo><mn>2</mn><mi>&gamma;</mi><mo>&times;</mo><mfrac><mrow><mi>M</mi><mo>&times;</mo><mi>R</mi></mrow><mrow><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub><mo>+</mo><msub><mi>N</mi><mi>left</mi></msub></mrow></mfrac></mrow></msup><mo></mo><mo>]</mo><mo>,</mo></mrow></math>]]></maths>其中,N<sub>16×16</sub>和N<sub>left</sub>满足约束条件:<maths num="0002"><![CDATA[<math><mrow><mi>Pow</mi><mo>=</mo><mrow><mo>(</mo><msub><mi>C</mi><mn>1</mn></msub><mo>&times;</mo><mfrac><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub><mi>M</mi></mfrac><mo>+</mo><msub><mi>C</mi><mn>2</mn></msub><mo>&times;</mo><mfrac><msub><mi>N</mi><mi>left</mi></msub><mi>M</mi></mfrac><mo>+</mo><msub><mi>C</mi><mn>3</mn></msub><mo>&times;</mo><mi>R</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>D表示当前帧图像的编码失真,M表示当前帧图像包含的宏块的个数,<img file="FSB00000638953900016.GIF" wi="426" he="113" />N<sub>16×16</sub>表示当前帧图像中采用帧间16×16预测模式编码的宏块的个数,N<sub>left</sub>表示当前帧图像中采用除Skip模式和帧间16×16预测模式外的其余帧间预测模式编码的宏块的个数,γ为AVS编码功耗模型参数,C<sub>1</sub>表示帧间16×16预测模式的计算复杂度,C<sub>2</sub>表示除Skip模式和帧间16×16预测模式外的其余帧间预测模式的计算复杂度,C<sub>3</sub>表示AVS编码器中熵编码的计算复杂度,其余帧间预测模式包括帧间16×8预测模式、帧间8×16预测模式和帧间8×8预测模式;⑥消去AVS编码功耗模型中的参数N<sub>left</sub>,得到当前帧图像的编码失真D,<maths num="0003"><![CDATA[<math><mrow><mi>D</mi><mo>=</mo><mi>SAD</mi><mo>&times;</mo><mo>{</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>&times;</mo><msup><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mfrac><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub><mi>M</mi></mfrac><mo>-</mo><mfrac><mi>Pow</mi><msub><mi>C</mi><mn>2</mn></msub></mfrac><mo>+</mo><mfrac><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>&times;</mo><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub></mrow><mrow><mi>M</mi><mo>&times;</mo><msub><mi>C</mi><mn>2</mn></msub></mrow></mfrac><mo>+</mo><mfrac><mrow><msub><mi>C</mi><mn>3</mn></msub><mo>&times;</mo><mi>R</mi></mrow><msub><mi>C</mi><mn>2</mn></msub></mfrac><mo>)</mo></mrow><mn>2</mn></msup></mrow></math>]]></maths>,然后<maths num="0004"><![CDATA[<math><mrow><mo>+</mo><mo>[</mo><mn>1</mn><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msup><mrow><mo>(</mo><mfrac><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub><mi>M</mi></mfrac><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><mfrac><mi>Pow</mi><mrow><mn>2</mn><mo>&times;</mo><msub><mi>C</mi><mn>2</mn></msub></mrow></mfrac><mo>+</mo><mfrac><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>&times;</mo><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub></mrow><mrow><mn>2</mn><mo>&times;</mo><mi>M</mi><mo>&times;</mo><msub><mi>C</mi><mn>2</mn></msub></mrow></mfrac><mo>+</mo><mfrac><mrow><msub><mi>C</mi><mn>3</mn></msub><mo>&times;</mo><mi>R</mi></mrow><mrow><mn>2</mn><mo>&times;</mo><msub><mi>C</mi><mn>2</mn></msub></mrow></mfrac><mo>]</mo><mo>&times;</mo><msup><mn>2</mn><mrow><mo>-</mo><mn>2</mn><mi>&gamma;</mi><mo>&times;</mo><mfrac><mrow><mi>M</mi><mo>&times;</mo><mi>R</mi><mo>&times;</mo><msub><mi>C</mi><mn>2</mn></msub></mrow><mrow><msub><mi>C</mi><mn>2</mn></msub><mo>&times;</mo><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub><mo>+</mo><mi>M</mi><mo>&times;</mo><mi>Pow</mi><mo>-</mo><msub><mi>C</mi><mn>1</mn></msub><mo>&times;</mo><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub><mo>-</mo><mi>M</mi><mo>&times;</mo><msub><mi>C</mi><mn>3</mn></msub><mo>&times;</mo><mi>R</mi></mrow></mfrac></mrow></msup><mo>}</mo></mrow></math>]]></maths>计算使当前帧图像的编码失真D的值最小时当前帧图像中采用帧间16×16预测模式编码的宏块的个数N<sub>16×16</sub>;⑦根据当前帧图像中采用帧间16×16预测模式编码的宏块的个数N<sub>16×16</sub>,计算当前帧图像中采用除Skip模式和帧间16×16预测模式外的其余帧间预测模式编码的宏块的个数<maths num="0005"><![CDATA[<math><mrow><msub><mi>N</mi><mi>left</mi></msub><mo>,</mo><msub><mi>N</mi><mi>left</mi></msub><mo>=</mo><mi>M</mi><mo>&times;</mo><mrow><mo>(</mo><mfrac><mi>Pow</mi><msub><mi>C</mi><mn>2</mn></msub></mfrac><mo>-</mo><mfrac><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>&times;</mo><msub><mi>N</mi><mrow><mn>16</mn><mo>&times;</mo><mn>16</mn></mrow></msub></mrow><mrow><mi>M</mi><mo>&times;</mo><msub><mi>C</mi><mn>2</mn></msub></mrow></mfrac><mo>-</mo><mfrac><mrow><msub><mi>C</mi><mn>3</mn></msub><mo>&times;</mo><mi>R</mi></mrow><msub><mi>C</mi><mn>2</mn></msub></mfrac><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>⑧根据当前帧图像中采用帧间16×16预测模式编码的宏块的个数N<sub>16×16</sub>和当前帧图像中采用除Skip模式和帧间16×16预测模式外的其余帧间预测模式编码的宏块的个数N<sub>left</sub>,计算当前帧图像中采用Skip模式编码的宏块的个数,记为N<sub>Skip</sub>,N<sub>Skip</sub>=M-N<sub>16×16</sub>-N<sub>left</sub>;⑨定义当前帧图像中的第k个宏块为当前宏块,计算当前宏块和当前帧图像的参考帧中与当前宏块相对应的宏块的绝对误差和,记为SAD<sub>k</sub>,<maths num="0006"><![CDATA[<math><mrow><msub><mi>SAD</mi><mi>k</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><msup><mi>i</mi><mo>&prime;</mo></msup><mo>=</mo><mn>0</mn></mrow><mrow><msup><mi>i</mi><mo>&prime;</mo></msup><mo>&le;</mo><mn>15</mn></mrow></munderover><munderover><mi>&Sigma;</mi><mrow><msup><mi>j</mi><mo>&prime;</mo></msup><mo>=</mo><mn>0</mn></mrow><mrow><msup><mi>j</mi><mo>&prime;</mo></msup><mo>&le;</mo><mn>15</mn></mrow></munderover><mo>|</mo><msub><mi>f</mi><mi>k</mi></msub><mrow><mo>(</mo><msup><mi>i</mi><mo>&prime;</mo></msup><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>)</mo></mrow><mo>-</mo><msub><mi>f</mi><mrow><mi>k</mi><mo>_</mo><mi>c</mi></mrow></msub><mrow><mo>(</mo><msup><mi>i</mi><mo>&prime;</mo></msup><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>)</mo></mrow><mo>|</mo><mo>,</mo><msub><mi>f</mi><mi>k</mi></msub><mrow><mo>(</mo><msup><mi>i</mi><mo>&prime;</mo></msup><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>)</mo></mrow></mrow></math>]]></maths>表示当前宏块中坐标为(i′,j′)的像素的像素值,f<sub>k_c</sub>(i′,j′)表示当前帧图像的参考帧中与当前宏块相对应的宏块中坐标为(i′,j′)的像素的像素值,1≤k≤M;⑩令k′=k+1,k=k′,然后返回执行步骤⑨对当前帧图像中的下一个宏块进行处理,直至当前帧图像中所有宏块处理完毕;<img file="FSB00000638953900031.GIF" wi="60" he="59" />按从小到大的顺序对当前帧图像中的各个宏块和当前帧图像的参考帧中与各个宏块各自相对应的宏块的绝对误差和进行排序,构成绝对误差和序列,记为{SAD<sub>1</sub>,SAD<sub>2</sub>,…,SAD<sub>p</sub>,…SAD<sub>M</sub>},从绝对误差和序列{SAD<sub>1</sub>,SAD<sub>2</sub>,…,SAD<sub>p</sub>,…SAD<sub>M</sub>}中取出第N<sub>Skip</sub>个元素<img file="FSB00000638953900032.GIF" wi="150" he="94" />和第(N<sub>16×16</sub>+N<sub>Skip</sub>)个元素<img file="FSB00000638953900033.GIF" wi="288" he="102" />其中,SAD<sub>p</sub>表示绝对误差和序列{SAD<sub>1</sub>,SAD<sub>2</sub>,…,SAD<sub>p</sub>,…SAD<sub>M</sub>}中的第p个元素;<img file="FSB00000638953900034.GIF" wi="140" he="92" />获取当前帧图像中与当前帧图像的参考帧中相对应的宏块的绝对误差和小于等于绝对误差和序列{SAD<sub>1</sub>,SAD<sub>2</sub>,…,SAD<sub>p</sub>,…SAD<sub>M</sub>}中的第N<sub>Skip</sub>个元素<img file="FSB00000638953900035.GIF" wi="150" he="66" />的所有宏块,将这些宏块需采用的最佳的预测模式确定为Skip模式,将由这些宏块组成的集合定义为第一宏块集合,第一宏块集合包含的宏块的个数为N<sub>Skip</sub>,将由当前帧图像中除第一宏块集合中的所有宏块外的其他宏块组成的集合定义为剩余宏块集合,剩余宏块集合包含的宏块的个数为M-N<sub>Skip</sub>;<img file="FSB00000638953900036.GIF" wi="59" he="59" />获取剩余宏块集合中与当前帧图像的参考帧中相对应的宏块的绝对误差和小于等于绝对误差和序列{SAD<sub>1</sub>,SAD<sub>2</sub>,…,SAD<sub>p</sub>,…SAD<sub>M</sub>}中的第(N<sub>16×16</sub>+N<sub>Skip</sub>)个元素<img file="FSB00000638953900037.GIF" wi="284" he="71" />的所有宏块,将这些宏块组成的集合定义为第二宏块集合,第二宏块集合包含的宏块的个数为N<sub>16×16</sub>,将由剩余宏块集合中除第二宏块集合中的所有宏块外的其他宏块组成的集合定义为第三宏块集合,第三宏块集合包含的宏块的个数为M-N<sub>Skip</sub>-N<sub>16×16</sub>;<img file="FSB00000638953900038.GIF" wi="60" he="59" />计算第二宏块集合中的各个宏块的实际运动矢量,将第二宏块集合中已确定实际运动矢量的各个宏块需采用的最佳的预测模式确定为帧间16×16预测模式;<img file="FSB00000638953900039.GIF" wi="59" he="59" />计算第三宏块集合中的各个宏块分别采用帧间16×8预测模式、帧间8×16预测模式和帧间8×8预测模式时的拉格朗日代价,将拉格朗日代价最小时相应的帧间预测模式作为各个宏块各自需采用的最佳的预测模式;<img file="FSB000006389539000310.GIF" wi="59" he="67" />利用无线视频传感器中的AVS编码器,对当前帧图像中的各个宏块以各自最佳的预测模式进行编码,直至当前帧图像整帧编码完成;然后检测无线视频传感器中的CMOS电路的供电电压V是否大于0,如果是,则将视频信号中的下一帧待编码的帧图像作为当前帧图像,并返回执行步骤②,否则,无线视频传感器中的AVS编码器结束编码。
地址 315040 浙江省宁波市科技园区院士路创业大厦603室