一种基于联合特征的MIV沉浸式视频率失真优化方法
- 国知局
- 2024-08-02 14:29:42
本发明涉及视频编码领域,尤其涉及一种基于联合特征的miv沉浸式视频率失真优化方法。
背景技术:
1、随着采集、交互与显示等技术的发展,作为新一代视频媒体技术的沉浸式视频逐渐成为研究热点。沉浸式视频支持用户以6自由度(degrees of freedom, dof)地观看三维场景,给用户带来身临其境之感。为此,沉浸式视频需要包含场景的三维信息,场景的数据形式包含多视点加深度图视频,光场与点云数据等,形式复杂,数据量庞大,传输、存储面临严峻考验。运动图像专家组(moving picture experts group ,mpeg)因此针对沉浸式视频提出了新的编码标准miv(mpeg immersive video)。miv主要以多视点加深度图视频(multi-view plus depth map video,mvd)作为信号源,通过基于视点渲染的方式压缩多视点间的冗余,得到多视点数据的紧凑表示形式图集(atlas),图集再通过2d视频编码器压缩时空冗余得到二进制码流。
2、视频编码的目标是在保证视频质量的前提下尽量降低视频码流消耗的比特,然而编码输出的码率与重建视频质量之间是相互制约与矛盾的。视频编码中的率失真优化是基于率失真理论寻找最优的编码参数值,达到码率与质量之间平衡,是提高编码器性能的主要方法之一。率失真优化过程可以表述为在不超过限定码率的条件下,使重建视频的失真最小。在miv的pack模式中,纹理图集与深度图集被封装在同一帧中,现有视频编码器的率失真过程缺少对于深度特性与纹理特性的联合考虑,导致率失真性能不佳。
技术实现思路
1、本发明的目的在于解决现有技术中由于缺少联合考虑深度特性与纹理特性而导致率失真性能不佳的问题。
2、本发明解决其技术问题所采用的技术方案是:提供一种基于联合特征的miv沉浸式视频率失真优化方法,包括以下步骤:
3、s1,在miv编码平台以pack模式编码沉浸式视频序列时,计算像素的几何失真权重;
4、s2,编码沉浸式视频pack图集时,帧内划分纹理区域与深度区域,并提取纹理区域的纹理复杂度特征、纹理区域的边缘特征和深度区域的边缘特征;对纹理区域的边缘特征和深度区域的边缘特征进行自适应融合,得到融合边缘特征;
5、s3,使用纹理复杂度特征、融合边缘特征以及几何失真权重计算得到纹理区域的失真度量缩放因子与深度区域的失真度量缩放因子;
6、s4,根据纹理区域的失真度量缩放因子计算纹理区域的新拉格朗日乘子,根据深度区域的失真度量缩放因子计算深度区域的新拉格朗日乘子,使用新拉格朗日乘子实现沉浸式视频的率失真优化。
7、优选的,所述s1包括以下步骤:
8、根据相机类型计算像素的归一化三维坐标;
9、根据归一化三维坐标计算像素所对应的世界坐标,表示为:
10、;
11、其中,表示像素的深度值,表示旋转矩阵,表示相机的空间位置向量;
12、计算像素的局部邻域内的个样本点所组成的平面,表示为:
13、;
14、其中,,,为该平面常系数参数,通过最小二乘法计算得到,表示为:
15、;
16、其中,表示像素的局部邻域内第j个样本点的世界坐标;
17、计算像素所对应的法向量,表示为:
18、;
19、根据像素的法向量计算像素的几何失真权重,表示为:
20、。
21、优选的,所述根据相机类型计算像素的归一化三维坐标,包括:
22、当相机为透视相机时,像素的归一化坐标为:
23、;
24、其中,表示图像坐标系下像素的横坐标与纵坐标,,表示图像坐标系下投影焦点的水平分量和垂直分量,表示图像坐标系下主点的水平分量和垂直分量;
25、当相机为erp类型的全景相机时,像素的归一化坐标为:
26、;
27、;
28、其中,和分别表示图像的宽度和高度,和分别表示erp投影所对应极角的最小值和最大值,和分别表示erp投影所对应的方位角的最小值和最大值,和分别表示投影平面像素的水平和垂直坐标;
29、当相机为正交投影时,像素的归一化坐标为:
30、;
31、其中,表示图像坐标系下像素的横坐标与纵坐标。
32、优选的,所述s2包括以下步骤:
33、根据输入的纹理区域的起始坐标与区域大小以及深度区域的起始坐标与区域大小,将当前编码帧划分为纹理区域与深度区域;
34、使用多方向的gabor滤波器提取纹理区域的纹理复杂度特征,所述多方向的gabor滤波器为2d-gabor滤波器,表示为:
35、<mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mi>g</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><msub><mrow /><mrow><mstyle displaystyle="true" mathcolor="#000000"><mi>θ</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>,</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>f</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>,</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>γ</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>,</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>η</mi></mstyle></mrow></msub></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>(</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>x</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>,</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>y</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>)</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>=</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mfrac><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mi>f</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><msup><mrow /><mstyle displaystyle="true" mathcolor="#000000"><mn>2</mn></mstyle></msup></mstyle></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mi>π</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>γ</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>η</mi></mstyle></mstyle></mfrac></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>e</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>x</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>p</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mo>{</mo><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mi>−</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>f</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><msup><mrow /><mstyle displaystyle="true" mathcolor="#000000"><mn>2</mn></mstyle></msup></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mo>[</mo><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mo>(</mo><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mfrac><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mi>x</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>′</mi></mstyle></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mi>γ</mi></mstyle></mstyle></mfrac></mstyle></mstyle><mo>)</mo></mstyle><mstyle displaystyle="true" mathcolor="#000000"><msup><mrow /><mstyle displaystyle="true" mathcolor="#000000"><mn>2</mn></mstyle></msup></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mo>+</mo></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mo>(</mo><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mfrac><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mi>y</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>′</mi></mstyle></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mi>η</mi></mstyle></mstyle></mfrac></mstyle></mstyle><mo>)</mo></mstyle><mstyle displaystyle="true" mathcolor="#000000"><msup><mrow /><mstyle displaystyle="true" mathcolor="#000000"><mn>2</mn></mstyle></msup></mstyle></mstyle><mo>]</mo></mstyle></mstyle><mo>}</mo></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>e</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>x</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>p</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mo>{</mo><mstyle displaystyle="true" mathcolor="#000000"><mstyle displaystyle="true" mathcolor="#000000"><mi>i</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mn>2</mn></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>π</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>f</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>x</mi></mstyle><mstyle displaystyle="true" mathcolor="#000000"><mi>′</mi></mstyle></mstyle><mo>}</mo></mstyle></mstyle>;
36、;
37、;
38、其中,为滤波器的中心频率,为滤波器的方向角度,和分别为两个方向上高斯函数包络线的标准差,和表示像素的横坐标与纵坐标,和表示和转换后的中间坐标值;
39、使用整体嵌套边缘检测网络hed网络分别提取纹理区域的边缘特征与深度区域的边缘特征,自适应融合纹理区域的边缘特征与深度区域的边缘特征,得到融合边缘特征。
40、优选的,所述使用多方向的gabor滤波器提取纹理区域的纹理复杂度特征,包括以下步骤:
41、获取输入图像的gabor特征图,表示为:
42、;
43、;
44、;
45、其中,和表示2d-gabor滤波器根据欧拉公式分解的两个子滤波器,表示为:
46、;
47、;
48、计算纹理区域的复杂度,表示为:
49、;
50、;
51、;
52、其中,h表示纹理区域的高度,w表示纹理区域的宽度;为滤波器的个数,每个滤波器具有不同的中心频率以及方向角度,和分别表示两个方向上高斯函数包络线的标准差;表示特征图的均值,表示特征图的标准差。
53、优选的,所述自适应融合纹理区域的边缘特征与深度区域的边缘特征,表示为:
54、;
55、;
56、其中,表示边缘响应一致性系数,表示一致性度量函数,up表示上采样函数。
57、优选的,所述s3包括以下步骤:
58、计算纹理区域每一个cu的失真度量缩放因子,表示为:
59、;
60、其中,和为正权重系数,负责调节特征的影响权重,为当前cu的纹理复杂度,为当前cu的融合边缘特征图的均值,表示有效像素占用比率,由该cu中的有效像素除以总像素数得到,表示有效像素比例阈值;
61、计算深度区域每一个cu的失真度量缩放因子,表示为:
62、;
63、其中,、和均表示正权重系数,负责调节特征的影响权重,为当前cu所有像素对应的几何失真权重均值。
64、优选的,所述s4计算的新拉格朗日乘子,表示为:
65、;
66、;
67、其中,为纹理区域的原始拉格朗日乘子,为深度区域的原始拉格朗日乘子。
68、本发明具有如下有益效果:
69、(1)本发明在编码pack图集时通过建立联合特征,改变原始率失真模型中的拉格朗日因子,使率失真代价的计算更为合理;相比现有miv编码沉浸式视频使用的2d视频编码器(缺少对pack图集中纹理区域与深度区域的综合考虑),可以获得更好的渲染质量与编码码率的率失真性能。
70、(2)本发明针对人类视觉系统特性,根据纹理区域的纹理复杂度、纹理区域与深度区域的融合边缘特征以及cu的有效像素占比,在率失真过程中对不同区域得到不同的失真度量缩放因子,建立基于纹理复杂度特征与融合边缘特征组成的联合特征的率失真优化模型,提高沉浸式视频的感知编码性能。
71、以下结合附图及实施例对本发明作进一步详细说明,但本发明不局限于实施例。
本文地址:https://www.jishuxx.com/zhuanli/20240801/243000.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表