CN116418932A - 一种视频帧内插方法及装置 - Google Patents

一种视频帧内插方法及装置 Download PDF

Info

Publication number
CN116418932A
CN116418932A CN202111650327.XA CN202111650327A CN116418932A CN 116418932 A CN116418932 A CN 116418932A CN 202111650327 A CN202111650327 A CN 202111650327A CN 116418932 A CN116418932 A CN 116418932A
Authority
CN
China
Prior art keywords
pixel
motion vector
value
mask
moment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111650327.XA
Other languages
English (en)
Inventor
陈加忠
王晟
代敏
胡康康
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111650327.XA priority Critical patent/CN116418932A/zh
Publication of CN116418932A publication Critical patent/CN116418932A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0135Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving interpolation processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0135Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving interpolation processes
    • H04N7/014Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving interpolation processes involving the use of motion vectors

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Television Systems (AREA)

Abstract

本发明公开了一种视频帧内插方法及装置。其中方法为:获取第一时刻的第一视频帧和第二时刻的第二视频帧;根据第一运动矢量图或第二运动矢量图,生成第三时刻对应的第一掩膜,并根据第三运动矢量图对所述第一视频帧进行运动补偿,以及根据第四运动矢量图对所述第二视频帧进行运动补偿,获得更为准确的第一参考帧、第二参考帧,以及根据所述第一掩膜中的所述非保护区域,对所述第一参考帧和所述第二参考帧进行图像融合,得到所述第三时刻的第三视频帧,从而共同参考了第一视频帧和第二视频帧,且根据所述第一掩膜中的所述非保护区域进行图像融合,从而保证了视频帧内插的质量。

Description

一种视频帧内插方法及装置
技术领域
本申请涉及图像处理领域,尤其涉及一种视频帧内插方法及装置。
背景技术
当前为了更流畅的用户体验,手机、智慧屏电视的屏幕刷新频率越来越高,以手机为例,当前60赫兹(Hz)已经是主流,有一些领先的厂商推出了90Hz甚至120Hz的屏幕。然而,视频帧率的发展却跟不上屏幕刷新频率,常见的视频帧率为24FPS、30FPS、60FPS,与屏幕的刷新频率之间有差距。因此,目前常采用视频帧内插(video frame interpolation,VFI)技术,VFI技术指在两个连续的原始视频帧中间新生成一个或者多个中间视频帧的技术,VFI技术可以用来提升视频帧的帧率,使之与屏幕刷新频率匹配。
为此,如何保证视频帧内插的视频帧质量,是一个亟待解决的问题。
发明内容
本申请提供一种视频帧内插方法及装置,用于保证视频帧内插的视频帧质量。
第一方面,本申请提供一种视频帧内插方法。该方法可以由本申请提供的视频帧内插装置执行,该视频帧内插装置可以为本申请提供的电子设备,该方法包括:
获取第一时刻的第一视频帧和第二时刻的第二视频帧;根据第一运动矢量图或第二运动矢量图,生成第三时刻对应的第一掩膜,所述第一掩膜包括非保护区域;所述第一运动矢量图为所述第一时刻到所述第二时刻的运动矢量图,所述第二运动矢量图为所述第二时刻到所述第一时刻的运动矢量图,所述第三时刻位于所述第一时刻与所述第二时刻之间;根据第三运动矢量图对所述第一视频帧进行运动补偿,得到所述第三时刻的第一参考帧,以及根据第四运动矢量图对所述第二视频帧进行运动补偿,得到所述第三时刻的第二参考帧,所述第三运动矢量图为所述第三时刻到所述第一时刻的运动矢量图,所述第四运动矢量图为所述第三时刻到所述第二时刻的运动矢量图;根据所述第一掩膜中的所述非保护区域,对所述第一参考帧和所述第二参考帧进行图像融合,得到所述第三时刻的第三视频帧。
上述方式下,获取了第一视频帧和第二视频帧之后,根据第一运动矢量图或第二运动矢量图,生成第三时刻对应的第一掩膜,进一步根据第三运动矢量图对所述第一视频帧进行运动补偿,得到所述第三时刻的第一参考帧,以及根据第四运动矢量图对所述第二视频帧进行运动补偿,得到所述第三时刻的第二参考帧,从而获得更为准确的第一参考帧、第二参考帧,从而共同参考了第一视频帧和第二视频帧,且根据所述第一掩膜中的所述非保护区域进行图像融合,得到所述第三时刻的第三视频帧,从而保证了视频帧内插的质量。
一种可能的设计中,所述第一掩膜中的所述非保护区域中,每个像素对应第一权重值和第二权重值;所述根据所述第一掩膜中的所述非保护区域,对所述第一参考帧和所述第二参考帧进行图像融合,包括:
根据所述非保护区域中的第一像素的位置,获取所述第一参考帧中相应位置的第二像素和所述第二参考帧中相应位置的第三像素;根据所述第一像素对应的第一权重值对所述第二像素的像素值进行加权运算,得到第一运算结果;根据所述第一像素对应的第二权重值对所述第三像素的像素值进行加权运算,得到第二运算结果;将所述第一运算结果和所述第二运算结果的和,确定为所述第三视频帧中相应位置的像素的像素值。
上述方式下,通过第一像素对应的第一权重值以及第二权重值,结合第二像素的像素值以及第三像素的像素值,得到第三视频帧中相应位置的像素的像素值,从而任一像素值均参考了第一视频帧和第二视频帧中相应像素的像素值,且根据非保护区域进行图像融合,从而保证了视频帧内插的质量。
一种可能的设计中,所述根据所述第一运动矢量图,生成所述第三时刻对应的第一掩膜,包括:
根据所述第一运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第二掩膜;对所述第二掩膜执行至少一次迭代操作;所述迭代操作包括对所述第二掩膜进行均值模糊处理、二值化处理;对所述迭代操作后的第二掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
上述方式下,通过至少一次迭代操作可以对第二掩膜进行降噪,且可以更加明确第一视频帧至第三视频帧的像素运动程度,从而可以得到更为准确的第一掩膜。
一种可能的设计中,所述根据所述第二运动矢量图,生成所述第三时刻对应的第一掩膜,包括:
根据所述第二运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第三掩膜;对所述第三掩膜执行至少一次迭代操作;所述迭代操作包括对所述第三掩膜进行均值模糊处理、二值化处理;对所述迭代操作后的第三掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
上述方式下,通过至少一次迭代操作可以对第三掩膜进行降噪,且可以更加明确第二视频帧至第三视频帧的像素运动程度,从而可以得到更为准确的第一掩膜。
一种可能的设计中,所述方法还包括:
根据所述第一视频帧和所述第二视频帧,生成所述第一时刻到所述第二时刻的第一运动矢量图;根据所述第一运动矢量图中第四像素的坐标和运动矢量值,确定所述第四像素在所述第三时刻的坐标,所述第四像素为所述第一运动矢量图中的任意一个像素;获取与所述第四像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第四像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;若所述第三运动矢量图中的第五像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第五像素的运动矢量值。
上述方式下,可以确定所述第四像素在所述第三时刻的坐标,并根据运动位移对相邻的至少一个像素的进行赋值,从而可以根据彼此相邻的像素的运动矢量值进行相互印证,得到更为准确的运动矢量值。
一种可能的设计中,所述根据所述第三运动矢量图对所述第一视频帧进行运动补偿,得到所述第三时刻的第一参考帧之前,还包括:
根据所述第三运动矢量图,生成所述第三时刻对应的第四掩膜;根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素;根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
上述方式中,可以通过第四掩膜筛选出满足修补条件的像素,从而通过对这一部分满足修补条件的像素进行更新即可得到更为准确的第四掩膜。
一种可能的设计中,所述根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素,包括:
选取所述第四掩膜中符合第一修补条件的第六像素,所述第一修补条件包括像素不存在有效运动矢量值;
所述根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新,包括:
以所述第六像素为起点,在所述第四掩膜中搜索得到与所述第六像素对应的第一像素集合,所述第一像素集合中的像素为与所述第六像素在至少一个方向上最近的像素,且存在运动矢量值;获取所述第三运动矢量图中与所述第六像素对应的第七像素,以及与所述第一像素集合对应的第二像素集合;根据所述第二像素集合中的像素与所述第七像素的距离,以及所述第二像素集合中的像素的运动矢量值,确定所述第七像素的运动矢量值。
上述方式中,通过第一像素集合对应的第二像素集合,可以得到第七像素在至少一个方向上最近的像素的运动矢量值,从而通过第七像素临近像素的距离和第七像素临近像素的运动矢量值,从而可以更为准确地修补像素的运动矢量值。
一种可能的设计中,所述根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素,包括:
选取所述第四掩膜中的符合第二修补条件的第八像素,所述第二修补条件包括所述第八像素的值指示所述第八像素在所述第三运动矢量图中对应的第九像素不存在运动矢量值,且在第一方向上与所述第九像素相邻的至少一个像素存在运动矢量值;
所述根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新,包括:
获取所述第三运动矢量图中与所述第八像素对应的所述第九像素;根据在所述第一方向上与所述第九像素相邻的至少一个像素的运动矢量值,确定所述第九像素的运动矢量值。
上述方式中,通过第一方向上与第九像素相邻的至少一个像素的运动矢量值,直接确定第九像素的运动矢量值,从而提升了修补像素的运动矢量值的效率。
一种可能的设计中,所述方法还包括:
根据所述第一视频帧和所述第二视频帧,生成所述第二时刻到所述第一时刻的第二运动矢量图;根据所述第二运动矢量图中第十像素的坐标和运动矢量值,确定所述第十像素在所述第三时刻的坐标,所述第十像素为所述第二运动矢量图中的任意一个像素;获取与所述第十像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第十像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;若所述第四运动矢量图中的第十一像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第十一像素的运动矢量值。
上述方式中,可以确定所述第十像素在所述第三时刻的坐标,并根据运动位移对相邻的至少一个像素的进行赋值,从而可以根据彼此相邻的像素的运动矢量值进行相互印证,得到更为准确的运动矢量值。
一种可能的设计中,所述根据所述第四运动矢量图对所述第二视频帧进行运动补偿,得到所述第三时刻的第二参考帧之前,还包括:
根据所述第四运动矢量图,生成所述第三时刻对应的第五掩膜;根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素;根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
上述方式中,可以通过第五掩膜筛选出满足修补条件的像素,从而通过对这一部分满足修补条件的像素进行更新即可得到更为准确的第五掩膜。
一种可能的设计中,所述根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素,包括:
选取所述第五掩膜中符合第三修补条件的第十二像素,所述第三修补条件包括像素不存在有效运动矢量值;
所述根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新,包括:
以所述第十二像素为起点,在所述第五掩膜中搜索得到与所述第十二像素对应的第三像素集合,所述第三像素集合中的像素为与所述第十二像素在至少一个方向上最近的像素,且存在运动矢量值;获取所述第四运动矢量图中与所述第十二像素对应的第十三像素,以及与所述第三像素集合对应的第四像素集合;根据所述第四像素集合中的像素与所述第十三像素的距离,以及所述第四像素集合中的像素的运动矢量值,确定所述第十三像素的运动矢量值。
上述方式中,通过第三像素集合对应的第四像素集合,可以得到第十二像素在至少一个方向上最近的像素的运动矢量值,从而通过第十二像素临近像素的距离和第十二像素临近像素的运动矢量值,从而可以更为准确地修补像素的运动矢量值。
一种可能的设计中,所述根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素,包括:
选取所述第五掩膜中的符合第四修补条件的第十四像素,所述第四修补条件包括所述第十四像素的值指示所述第十四像素在所述第四运动矢量图中对应的第十五像素不存在运动矢量值,且在第二方向上与所述第十五像素相邻的至少一个像素存在运动矢量值;
所述根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新,包括:
获取所述第四运动矢量图中与所述第十四像素对应的所述第十五像素;根据在所述第二方向上与所述第十四像素相邻的至少一个像素的运动矢量值,确定所述第十四像素的运动矢量值。
上述方式中,通过第二方向上与第十四像素相邻的至少一个像素的运动矢量值,直接确定第十四像素的运动矢量值,从而提升了修补像素的运动矢量值的效率。
第二方面,本申请提供一种视频帧内插装置,包括:
获取模块,用于获取第一时刻的第一视频帧和第二时刻的第二视频帧;
生成模块,用于根据第一运动矢量图或第二运动矢量图,生成第三时刻对应的第一掩膜,所述第一掩膜包括非保护区域;所述第一运动矢量图为所述第一时刻到所述第二时刻的运动矢量图,所述第二运动矢量图为所述第二时刻到所述第一时刻的运动矢量图,所述第三时刻位于所述第一时刻与所述第二时刻之间;
处理模块,用于根据第三运动矢量图对所述第一视频帧进行运动补偿,得到所述第三时刻的第一参考帧,以及根据第四运动矢量图对所述第二视频帧进行运动补偿,得到所述第三时刻的第二参考帧,所述第三运动矢量图为所述第三时刻到所述第一时刻的运动矢量图,所述第四运动矢量图为所述第三时刻到所述第二时刻的运动矢量图;以及
用于根据所述第一掩膜中的所述非保护区域,对所述第一参考帧和所述第二参考帧进行图像融合,得到所述第三时刻的第三视频帧。
一种可能的设计中,所述第一掩膜中的所述非保护区域中,每个像素对应第一权重值和第二权重值;所述处理模块具体用于:
根据所述非保护区域中的第一像素的位置,获取所述第一参考帧中相应位置的第二像素和所述第二参考帧中相应位置的第三像素;所述第一像素为所述非保护区域中任一像素;根据所述第一像素对应的第一权重值对所述第二像素的像素值进行加权运算,得到第一运算结果;根据所述第一像素对应的第二权重值对所述第三像素的像素值进行加权运算,得到第二运算结果;将所述第一运算结果和所述第二运算结果的和,确定为所述第三视频帧中相应位置的像素的像素值。
一种可能的设计中,若所述第一掩膜是根据所述第一运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第一权重值,所述第二权重值等于1减去所述第一权重值;或者若所述第一掩膜是根据所述第二运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第二权重值,所述第一权重值等于1减去所述第二权重值。
一种可能的设计中,所述生成模块具体用于:
根据所述第一运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第二掩膜;对所述第二掩膜执行至少一次迭代操作;所述迭代操作包括对所述第二掩膜进行均值模糊处理、二值化处理;对所述迭代操作后的第二掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
一种可能的设计中,所述生成模块具体用于:
根据所述第二运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第三掩膜;对所述第三掩膜执行至少一次迭代操作;所述迭代操作包括对所述第三掩膜进行均值模糊处理、二值化处理;对所述迭代操作后的第三掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
一种可能的设计中,所述生成模块还用于:
根据所述第一视频帧和所述第二视频帧,生成所述第一时刻到所述第二时刻的第一运动矢量图;根据所述第一运动矢量图中第四像素的坐标和运动矢量值,确定所述第四像素在所述第三时刻的坐标,所述第四像素为所述第一运动矢量图中的任意一个像素;获取与所述第四像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第四像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;若所述第三运动矢量图中的第五像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第五像素的运动矢量值。
一种可能的设计中,所述生成模块还用于:
根据所述第三运动矢量图,生成所述第三时刻对应的第四掩膜;根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素;根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
一种可能的设计中,所述生成模块具体用于:
选取所述第四掩膜中符合第一修补条件的第六像素,所述第一修补条件包括像素不存在有效运动矢量值;以所述第六像素为起点,在所述第四掩膜中搜索得到与所述第六像素对应的第一像素集合,所述第一像素集合中的像素为与所述第六像素在至少一个方向上最近的像素,且存在运动矢量值;获取所述第三运动矢量图中与所述第六像素对应的第七像素,以及与所述第一像素集合对应的第二像素集合;根据所述第二像素集合中的像素与所述第七像素的距离,以及所述第二像素集合中的像素的运动矢量值,确定所述第七像素的运动矢量值。
一种可能的设计中,所述生成模块具体用于:
选取所述第四掩膜中的符合第二修补条件的第八像素,所述第二修补条件包括所述第八像素的值指示所述第八像素在所述第三运动矢量图中对应的第九像素不存在运动矢量值,且在第一方向上与所述第九像素相邻的至少一个像素存在运动矢量值;获取所述第三运动矢量图中与所述第八像素对应的所述第九像素;根据在所述第一方向上与所述第九像素相邻的至少一个像素的运动矢量值,确定所述第九像素的运动矢量值。
一种可能的设计中,所述生成模块还用于:
根据所述第一视频帧和所述第二视频帧,生成所述第二时刻到所述第一时刻的第二运动矢量图;根据所述第二运动矢量图中第十像素的坐标和运动矢量值,确定所述第十像素在所述第三时刻的坐标,所述第十像素为所述第二运动矢量图中的任意一个像素;获取与所述第十像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第十像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;若所述第四运动矢量图中的第十一像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第十一像素的运动矢量值。
一种可能的设计中,所述生成模块还用于:
根据所述第四运动矢量图,生成所述第三时刻对应的第五掩膜;根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素;根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
一种可能的设计中,所述生成模块具体用于:
选取所述第五掩膜中符合第三修补条件的第十二像素,所述第三修补条件包括像素不存在有效运动矢量值;以所述第十二像素为起点,在所述第五掩膜中搜索得到与所述第十二像素对应的第三像素集合,所述第三像素集合中的像素为与所述第十二像素在至少一个方向上最近的像素,且存在运动矢量值;获取所述第四运动矢量图中与所述第十二像素对应的第十三像素,以及与所述第三像素集合对应的第四像素集合;根据所述第四像素集合中的像素与所述第十三像素的距离,以及所述第四像素集合中的像素的运动矢量值,确定所述第十三像素的运动矢量值。
一种可能的设计中,所述生成模块具体用于:
选取所述第五掩膜中的符合第四修补条件的第十四像素,所述第四修补条件包括所述第十四像素的值指示所述第十四像素在所述第四运动矢量图中对应的第十五像素不存在运动矢量值,且在第二方向上与所述第十五像素相邻的至少一个像素存在运动矢量值;获取所述第四运动矢量图中与所述第十四像素对应的所述第十五像素;根据在所述第二方向上与所述第十四像素相邻的至少一个像素的运动矢量值,确定所述第十四像素的运动矢量值。
第三方面,提供一种电子设备,所述电子设备包括:一个或多个处理器;一个或多个存储器;其中,所述一个或多个存储器存储有一个或多个计算机指令,当所述一个或多个计算机指令被所述一个或多个处理器执行时,使得所述电子设备执行如上述第一方面中任一项所述的方法。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机指令,当计算机指令在计算机上运行时,使得所述计算机执行如上述第一方面中任一项所述的方法。
以上第二方面到第四方面的有益效果,请参见第一方面的有益效果,不重复赘述。
附图说明
图1为本申请实施例提供的一种视频帧内插方法可应用的***架构示意图;
图2为本申请实施例提供的一种视频帧内插方法可应用的***架构示意图中视频帧内插模块的示意图;
图3为本申请实施例提供的一种视频帧内插方法可实现的视频帧显示方法的步骤流程图;
图4为本申请实施例提供的一种视频帧内插方法的步骤流程图;
图5为本申请实施例提供的一种视频帧内插方法中生成第一掩膜的步骤流程图;
图6为本申请实施例提供的一种视频帧内插方法可实现的视频帧显示方法的步骤流程图;
图7为本申请实施例提供的一种视频帧内插装置的结构示意图;
图8为本申请实施例提供的一种电子设备结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请实施例中,“一个或多个”是指一个或两个以上(包含两个);“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例中的术语多个”是指两个或两个以上,鉴于此,本申请实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个。例如,包括A、B和C中的至少一个,那么包括的可以是A、B、C,A和B,A和C,B和C,或A和B和C。同理,对于“至少一种”等描述的理解,也是类似的。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
为了便于理解,对本申请实施例涉及的术语进行解释说明,该术语的解释说明也作为对本申请实施例发明内容的一部分。
应用场景
本申请提供一种视频帧内插方法,该方法可以应用于图1示出的***架构。应理解,图1示出的***架构仅为一个示例,在一些其它例子中,可以具有比图1中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。图1示出的***架构可以由任意能显示视频的设备实现,如终端设备,在此不作限定。
图1示出的***架构可以包括图形处理器(graphics processing unit,GPU)101、中央处理器(central processing unit,CPU)102、视频处理芯片103、图形渲染引擎104、视频帧内插模块105和显示屏106。具体可以如下:
GPU101,用于运行图形渲染引擎104或视频帧内插模块105。
CPU102,用于运行图形渲染引擎104或视频帧内插模块105。
需要说明的是,GPU101和CPU102中可以仅有一个部件在图1示出的***架构中,也可以均有。举例来说,在GPU101和CPU102均有的情形下,可以采用混合使用的方式运行图形渲染引擎104或视频帧内插模块105,由于GPU101的优点是并行处理性能较强,能够同时处理视频帧中的较多像素,可以通过GPU101运行图形渲染引擎104,而CPU102的优点是运行速度较快,那么可以由CPU102运行视频帧内插模块105。
视频处理芯片103,用于输出视频帧流至视频帧内插模块105。
图形渲染引擎104,用于输出视频帧流至视频帧内插模块105。
需要说明的是,视频处理芯片103和图形渲染引擎104虽然都是输出视频帧,但方式可能并不相同。视频处理芯片103的输入可以是视频帧,对视频帧进行预处理(如降噪)后,输出预处理后的视频帧;图形渲染引擎104的输入可以是非视频数据(如渲染模型等),通过渲染,生成视频帧。
在一些情形下,视频处理芯片103和图形渲染引擎104可以不全部包括。举例来说,在视频通话场景下,并不需要进行图形渲染,视频处理芯片103可以直接获取摄像头拍摄的视频帧,并输出至视频帧内插模块105,那么***架构中可以不包括图形渲染引擎104。
视频帧内插模块105,用于基于视频处理芯片103或图形渲染引擎104输出的视频帧流(包括至少两个视频帧),根据视频帧内插算法,生成内插的视频帧。举例来说,可以根据输入的第一时刻的第一视频帧和第二时刻的第二视频帧,生成第三时刻的第三视频帧,第三时刻位于第一时刻和第二时刻之间。视频帧内插模块105具体可以为***软件或者应用软件。
显示屏106,用于显示视频帧。当视频帧内插模块105生成了内插的视频帧时,显示屏106会收到视频处理芯片103或图形渲染引擎104输入的原视频帧流以及新生成的内插的视频帧,并进行显示。
其中,图1中视频内插模块105具体可以包括各子模块,可以如图2所示。显然,图2示出的各子模块仅为一个示例,在一些其它示例中,可以具有比图2中所示出的更多的或者更少的子模块,图中所示出的各子模块具体可以由运行视频内插模块105的软件中相应的程序代码实现,每个子模块可以通过调用软件中相应函数的程序代码来实现该模块的功能,各子模块的功能具体可以如下:
输入帧检测模块201,用于检测输入的第一视频帧与第二视频帧是否内容相同、帧尺寸是否一致。
其中,两个视频帧的内容是否一致指第一视频帧与第二视频帧的画面内容是否相同,如可以通过对比两个视频帧的像素值是否大于预设比例(如99%)来进行判断,如果两个视频帧的内容一致,显然并不需要通过视频帧内插得到仍然一致的视频帧,直接取其中一个视频帧即可;当两个视频帧尺寸不一致时,如第一视频帧为横屏的视频帧,第二视频帧为竖屏的视频帧,也不能进行视频帧内插。
场景切换检测模块202,用于检测输入的第一视频帧与第二视频帧是否存在场景切换。
其中,场景切换可以采用现有技术中的光流法等技术检测,当两个视频帧存在场景切换时,视频帧的内容差别过大,也不能进行视频帧内插。
运动矢量图模块203,用于根据输入的第一视频帧与第二视频帧,获取运动矢量图,以及对运动矢量图进行修补。需要说明的是,本申请实施例中,运动矢量(motionvector,MV)表示像素运动的方向和距离。运动矢量图用于描述待处理的视频帧中各像素对应运动矢量。举例来说,运动矢量图可以为与待处理的视频帧的大小一样的图,也可以为一个待处理的视频帧中各像素对应的矩阵。一些情形下,运动矢量图可能出现部分区域的像素没有运动矢量值的现象(可以称为缝隙、空洞),因此可以对含有缝隙、空洞的运动矢量图进行修补,使得这些区域的像素也有运动矢量。
运动补偿模块204,用于根据运动矢量图,对输入的第一视频帧、第二视频帧进行运动补偿(motion compensation,MC),获得待内插的第一参考帧和第二参考帧。
掩膜生成模块205:用于生成掩膜(Mask),掩膜用于对待处理的视频帧(全部或局部)进行遮挡,被遮挡的区域可以称为保护区域。掩膜可以控制待处理的视频帧的区域或处理过程,通过掩膜可以对图像的各部分进行分别处理。需要说明的是,本申请中提供了一种融合掩膜(MergeMask),可以不仅用于表示像素是否被遮挡,还可以表征两个视频帧融合时与两个视频帧中相应像素的相似性,如通过掩膜中像素的取值来表征两个视频帧融合的权重值。
两帧融合模块206,根据融合掩膜,对第一参考帧和第二参考帧进行两帧融合,获得内插的第三视频帧。
图1示出的***架构所实现的视频帧内插方法,可以实现如图3示出的视频帧显示方法。具体步骤如下:
步骤301:视频处理芯片103或者图形渲染引擎104将视频帧输出到视频内插算法模块105。
步骤302:视频内插算法模块105接收并缓存该视频帧,作为目标视频帧,并确定目标视频帧是否为视频帧流的首个视频帧,若是,则执行步骤303,否则,执行步骤304。
步骤303:视频内插算法模块105将目标视频帧输出至显示屏106进行显示。
步骤304:视频内插算法模块105根据目标视频帧与前驱视频帧,得到内插的视频帧。
前驱视频帧指视频处理芯片103或者图形渲染引擎104收到目标视频帧之前相邻的视频帧。
步骤305:视频内插算法模块105将内插的视频帧输出至显示屏106进行显示。
若内插的视频帧的帧数大于目标帧数,则返回步骤304执行,否则,执行步骤306。举例来说,目标视频帧不为视频帧流的首个视频帧,该视频帧的前一视频帧对应T时刻,该视频帧的对应T+1时刻,其中,“T+1”中的“1”指1个选定单位时长,为输入的视频帧之间的间隔时长,如5毫秒(ms)、10ms等,“T+X”中的“+”指T时刻之后的X个选定单位时长的时刻,X为小数时,表示相对于1个选定单位时长相应比例的时刻。
内插的视频帧可以为一帧或多帧,举例来说,若仅有一帧内插的视频帧,那么该内插的视频帧可以对应T+0.5时刻;若有内插的三帧视频帧,那么内插的三帧视频帧可以分别对应T+0.25时刻,T+0.5时刻,T+0.75时刻,如选定单位时长为10ms,那么T+0.25时刻为T时刻之后2.5ms的时刻,T+0.5时刻为T时刻之后5.0ms的时刻,T+0.75时刻为T时刻之后7.5ms的时刻。那么内插的三帧视频帧的情况下,步骤304~步骤305重复执行三次,即,内插T+0.25时刻的视频帧并显示,内插T+0.5时刻的视频帧并显示,内插T+0.75时刻的视频帧并显示。
步骤306:视频内插算法模块105将目标视频帧输出至显示屏106进行显示。
步骤307:视频内插算法模块105将目标视频帧更新为前驱视频帧。
步骤307之后,可以返回重新执行步骤301,等待获取新的目标视频帧。
需要说明的是,图3示出的视频帧显示方法中,可以通过视频帧内插使得视频帧率适用屏幕刷新率,能实现这个目的较为关键的步骤便是步骤304。下面结合图4,详细描述本申请提供的一种视频帧内插方法。
如图4所示,本申请提供的一种视频帧内插方法的步骤可以如下:
步骤401:获取第一时刻的第一视频帧和第二时刻的第二视频帧。
其中,第一时刻与第二时刻为一前一后的关系,第一时刻还是第二时刻在前并不影响视频帧内插的结果,可以设第一时刻位于第二时刻之前,且第一视频帧可以和第二视频帧的尺寸相同。
步骤402:根据第一运动矢量图或第二运动矢量图,生成第三时刻对应的第一掩膜。
其中,所述第一掩膜包括非保护区域,所述第一运动矢量图为所述第一时刻到所述第二时刻的运动矢量图,所述第二运动矢量图为所述第二时刻到所述第一时刻的运动矢量图,所述第三时刻位于所述第一时刻与所述第二时刻之间。
步骤403:根据第三运动矢量图对所述第一视频帧进行运动补偿,得到所述第三时刻的第一参考帧,以及根据第四运动矢量图对所述第二视频帧进行运动补偿,得到所述第三时刻的第二参考帧。
其中,所述第三运动矢量图为所述第三时刻到所述第一时刻的运动矢量图,所述第四运动矢量图为所述第三时刻到所述第二时刻的运动矢量图。
步骤404:根据所述第一掩膜中的非保护区域,对所述第一参考帧和所述第二参考帧进行图像融合,得到所述第三时刻的第三视频帧。
需要说明的是,所述第一掩膜可以全部是非保护区域,也可以包括保护区域和非保护区域。当第一掩膜全部是非保护区域时,可以通过各像素的像素值来指示如何进行视频帧图像融合。当第一掩膜包括保护区域和非保护区域时,保护区域可以用于指示第一视频帧和第二视频帧中不参与视频帧图像融合的像素区域,可以为第一视频帧和第二视频帧中像素未运动的像素区域。显然,第一时刻到第二时刻期间,由于保护区域内的像素未运动,那么也无需对保护区域进行图像融合,直接复制第一视频帧或第二视频帧在保护区域内相应的像素值均可。而非保护区域指示出了第一时刻到第二时刻期间发生变化的像素区域,可以为第一视频帧和第二视频帧中像素发生运动的像素区域,那么便需要结合第一视频帧与第二视频帧进行视频帧图像融合,估算第三视频帧的保护区域内相应的像素值。
可以做以下定义:第一时刻为T时刻,第一时刻的第一视频帧为F0,第二时刻为T+1时刻,第二时刻的第二视频帧为F1,第一时刻与第二时刻中间的第三时刻为t,t∈(0,1),区间(0,1)中的“1”表示1个选定单位时长,“∈”表示集合语言的“属于”,第三时刻为T+t时刻,第三时刻的第三视频帧为Ft,如可以取t=0.5;第一运动矢量图为Flow01,第二运动矢量图为Flow10,第三运动矢量图为Flowt0,第四运动矢量图为Flowt1,第一掩膜(可以称为融合掩膜)为MergeMask。结合上述定义,详细描述本申请提供的一种视频帧内插方法的具体实现方式:
步骤402的一种可能的实现方式中,可以根据所述第一运动矢量图,生成所述第三时刻对应的第一掩膜,具体可以如下:
根据所述第一运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第二掩膜;对所述第二掩膜执行至少一次迭代操作;所述迭代操作包括对所述第二掩膜进行均值模糊处理、二值化处理;对所述迭代操作后的第二掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
举例来说,第二掩膜中像素的默认像素值为第一预设值,针对所述各像素中任一像素,得到该像素在第三时刻的坐标后,则将该像素在第二掩膜中对应像素的像素值设置为第二预设值,表示第二掩膜中对应的像素存在有效的运动矢量值。
迭代操作可以为先对第二掩膜进行均值模糊处理,再进行二值化处理。由于均值模糊处理可以使得,二值化处理更加明确。
经过反复的迭代操作后,以及进行腐蚀处理、均值模糊处理后,可以通过第一掩膜将第三时刻各像素与第一视频帧或第二视频帧中对应像素的接近程度体现出来,可以根据第一掩膜中各像素的像素值设置在步骤404中融合时权重值。
上述实现方式的步骤可以如图5所示,图5示出的步骤仅为上述实现方式的实例,还可以通过其他步骤实现上述实现方式,在此不作限定。
步骤501:生成第二掩膜。
第二掩膜的尺寸可以第一视频帧F0以及第二视频帧F1一致,也与第一运动矢量图Flow01的尺寸一致。第二掩膜每个像素的像素值,可以表示第三时刻t是否有像素运动到达该像素的坐标,第一预设值(如取0)表示没有像素运动到达该像素的坐标,第二预设值(如取1)表示有像素运动到该像素的坐标。可以初始化第二掩膜每个像素的像素值为0,表示没有像素运动到该像素的坐标。然后,对于Flow01上的每一个像素的运动矢量值,若该像素的坐标为(x,y),其运动矢量值为(u,v),那么该像素在第三时刻t所到达的位置的坐标(xt,yt)通过以下公式计算获得,然后将第二掩膜在该位置(xt,yt)的像素值设置为1。
xt=round(x+u*t)
yt=round(y+v*t)
其中,round表示四舍五入取整。
步骤502:对第二掩膜做均值模糊处理。
均值模糊(blur)算法中的参数包括窗口大小等,这些参数的取值不做限定。
步骤503:对均值模糊处理后的进行二值化处理。
二值化(threshold)算法的参数包括二值化阈值,该阈值的取值不做限定。
显然,步骤502以及步骤503为迭代操作的步骤。
步骤504:确定迭代操作的执行次数是否大于或等于预设次数。
若是,则执行步骤505;否则,执行步骤502。
步骤505:对迭代操作后的第二掩膜进行腐蚀处理。
其中,腐蚀(erode)算法包括窗口大小等参数,这些参数的取值不做限定。
步骤506:对腐蚀处理后的第二掩膜进行均值模糊处理,获得第一掩膜。
均值模糊算法的参数中窗口大小可以设置与步骤505中腐蚀算法的窗口大小一致。
本申请提供的视频帧内插方法可以直接基于GPU和CPU运行,实现视频帧内插。本申请提供的视频帧内插方法中,可以根据第一运动矢量图和第二运动矢量图生成第一掩膜,从而为生成内插的视频帧提供了基础。
步骤402的另一种可能的实现方式中,可以根据所述第二运动矢量图,生成所述第三时刻对应的第一掩膜,具体可以如下:
根据所述第二运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第三掩膜;对所述第三掩膜执行至少一次迭代操作;所述迭代操作包括对所述第三掩膜进行均值模糊处理、二值化处理;对所述迭代操作后的第三掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
上述根据第二运动矢量图生成第一掩膜的实现方式,可以参照根据第一运动矢量图生成第一掩膜的描述,并且,上述实现方式也有与步骤501~步骤506类似的实现步骤,也可以参照步骤501~步骤506的描述,在此不再赘述。
本申请提供的一种视频帧内插方法中,第一运动矢量图、第二运动矢量图、第三运动矢量图和第四运动矢量图中每个矢量图中像素上的数值可以包含2个分量,分别表示该像素在水平方向和竖直方向上的运动幅度。其中,第一运动矢量图和第二运动矢量图可以直接由第一视频帧和第二视频帧采用光流法、块匹配法等现有技术直接获取。
第三运动矢量图生成的一种实现方式可以如下:
根据所述第一视频帧和所述第二视频帧,生成所述第一时刻到所述第二时刻的第一运动矢量图;根据所述第一运动矢量图中第四像素的坐标和运动矢量值,确定所述第四像素在所述第三时刻的坐标,所述第四像素为所述第一运动矢量图中的任意一个像素;获取与所述第四像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第四像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;若所述第三运动矢量图中的第五像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第五像素的运动矢量值。
举例来说,第一运动矢量图(Flow01)中第四像素的坐标为(x,y),第四像素的运动矢量值为(u,v),那么第四像素在第三时刻t的坐标(xt,yt)可以通过以下公式计算获得:
xt=x+u*t;
yt=y+v*t;
其中,xt表示第四像素在第三时刻t的水平坐标,yt表示第四像素在第三时刻t的竖直坐标,u表示第四像素从第一时刻到第三时刻在水平方向上的位移,v表示第四像素从第一时刻到第三时刻在竖直方向上的位移,“*”表示乘法运算。
需要说明的是,由于运动矢量的数值可能不是整数,因此xt,yt可能也不是整数,第四像素在所述第三时刻的坐标相邻的至少一个像素可以为(xt,yt)周围的整数位置的像素,如(xt,yt)上下左右相邻的4个像素,那么在上述4个像素的运动矢量值都赋值(即设置)为(-u*t,-v*t)。需要说明的是,本次赋值是基于坐标(xt,yt)对(xt,yt)周围的整数位置的像素的运动矢量值进行的一次赋值,当第一运动矢量图中的像素都遍历完毕时,第三运动矢量图(Flowt0)中可能有一些像素的运动矢量值被多次设置,那么针对所述第三运动矢量图中的第五像素,第五像素为所述第三运动矢量图中的任一像素,若第五像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第五像素的运动矢量值,若第五像素的运动矢量仅被设置一次,那么便将唯一被设置一次的运动矢量值确定为所述第五像素的运动矢量值,第五像素的运动矢量也可能未被设置,那么第五像素便是后续需要修补运动矢量的像素。
上述第三运动矢量图生成的实现方式仅为一种示例,还可以有多种实现方式,举例来说,可以获取与所述第四像素在所述第三时刻的坐标的近似像素,近似像素的坐标可以为第四像素在所述第三时刻的坐标的取整,根据第一运动矢量图中第四像素坐标的相邻坐标的运动位移设置近似像素的运动矢量值,如将第四像素坐标左边的相邻坐标的运动位移的相反数,作为近似像素的运动矢量值。
需要说明的是,在步骤403之前,还可以生成第三时刻对应的第四掩膜,并根据第四掩膜对第三运动矢量图进行修补,一种可能的实现方式如下:
根据所述第三运动矢量图,生成所述第三时刻对应的第四掩膜;根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素;根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
举例来说,将第四掩膜被设置了有效运动矢量值(可以理解成不为0的运动矢量值)的像素值设置为第二预设值,也可以将第四掩膜被设置了运动矢量值像素的坐标的像素值设置为第二预设值或第三预设值。第四掩膜可以设置第一预设值为默认值,如第一预设值为0,表示该像素无有效的运动矢量值,第二预设值为1,表示该像素存在有效的运动矢量值,可以选取第四掩膜中像素值为第一预设值的像素进行修补,也可以选取第四掩膜中像素值为第一预设值的像素以及相邻的像素进行修补,可以根据具体的场景灵活实现,在此不作限定。
根据第四掩膜对第三运动矢量图进行修补的一种实现方式可以如下:
选取所述第四掩膜中符合第一修补条件的第六像素,以所述第六像素为起点,在所述第四掩膜中搜索得到与所述第六像素对应的第一像素集合,获取所述第三运动矢量图中与所述第六像素对应的第七像素,以及与所述第一像素集合对应的第二像素集合;根据所述第二像素集合中的像素与所述第七像素的距离,以及所述第二像素集合中的像素的运动矢量值,确定所述第七像素的运动矢量值。
其中,所述第一修补条件包括像素不存在有效运动矢量值(可以理解为非0的运动矢量值),所述第一像素集合中的像素为与所述第六像素在至少一个方向上最近的像素,且存在运动矢量值。
举例来说,第四掩膜为FlowMask0,遍历FlowMask0的任一像素,若该像素的像素值为1,表示该像素在第三运动矢量图(Flowt0)中对应像素已存在运动矢量值,该像素不需要修补;若该像素为符合的像素值为0,表示该像素在第三运动矢量图(Flowt0)中对应像素不存在有效的运动矢量值,则该像素为第六像素。
第一修补条件还可以包括该像素是否需要参与第一参考帧和所述第二参考帧的图像融合,可以根据第一掩膜,判断该像素是否需要参与第一参考帧和所述第二参考帧的图像融合,如第一掩膜中指示该像素的参与融合的权重值为0,那么便不会参与第一参考帧和所述第二参考帧的图像融合,也没必要对该像素进行修补。
接下来以第六像素为起点,往上、下、左、右四个方向分别进行搜索,直到找到在上、下、左、右各个方向上相应像素值为1的像素(可称为有效像素)或者到达第四掩膜边界的像素时停止搜索,得到的像素集合便是第一像素集合。
第六像素在第三运动矢量图中对应第七像素,第一像素集合在第三运动矢量图中对应第二像素集合。那么可以按照以下方式计算得到第七像素的运动矢量值:
第七像素与第二像素集合中左边的有效像素的距离为nLeft个像素,变量left=1表示往左边搜索到了有效像素,该有效像素在Flowt0上获取到的运动矢量值为(uLeft,vLeft),如果往左边搜索没有找到有效像素,那么可以设nLeft=1,left=0;第七像素与第二像素集合中右边的有效像素的距离为nRight个像素,变量right=1表示往右边搜索到了有效像素,该有效像素在Flowt0上获取到的运动矢量值为(uRight,vRight),如果往右边搜索没有找到有效像素,那么可以设nRight=1,right=0;第七像素与第二像素集合中下边的有效像素的距离为nBottom个像素,变量bottom=1表示往下边搜索到了有效像素,该有效像素在Flowt0上获取到的运动矢量值为(uBottom,vBottom),如果往下边搜索没有找到有效像素,那么可以设nBottom=1,bottom=0;第七像素与第二像素集合中上边的有效像素的距离为nTop个像素,变量top=1表示往上边搜索到了有效像素,该有效像素在Flowt0上获取到的运动矢量值为(uTop,vTop),如果往上边搜索没有找到有效像素,那么可以设nTop=1,top=0。
那么,第七像素的运动矢量之和(uSum,vSum)通过下面的公式计算获得:
Figure BDA0003446678320000151
Figure BDA0003446678320000152
第七像素的系数之和cSum可以通过以下的公式计算获得,如果计算出来的cSum数值为0,则将cSum设置为非零值(比如1、2等):
Figure BDA0003446678320000153
第七像素的运动矢量数值(u,v)通过下面的公式计算获得:
Figure BDA0003446678320000154
Figure BDA0003446678320000155
并且将FlowMask0在第六像素的像素值赋值为1,表征第六像素对应的第七像素存在有效的运动矢量值。
根据第四掩膜对第三运动矢量图进行修补的实现方式还可以有多种,另一种实现方式可以如下:
选取所述第四掩膜中的符合第二修补条件的第八像素,获取所述第三运动矢量图中与所述第八像素对应的所述第九像素;根据在所述第一方向上与所述第九像素相邻的至少一个像素的运动矢量值,确定所述第九像素的运动矢量值。
其中,所述第二修补条件包括所述第八像素的值指示所述第八像素在所述第三运动矢量图中对应的第九像素不存在运动矢量值,且在第一方向上与所述第九像素相邻的至少一个像素存在运动矢量值。
举例来说,遍历第四掩膜FlowMask0的任一像素,若该像素在所述第三运动矢量图(Flowt0)中对应的像素不存在运动矢量值,且第一方向如(左右相邻或者上下相邻)的像素均存在运动矢量值,则该像素为第八像素,以左右相邻的像素为例,可以将第九像素在左右相邻的像素的运动矢量值的平均值,作为第九像素的运动矢量值,并将第八像素的像素值赋值为1,表征第八像素对应的第九像素存在有效的运动矢量值。通过第四掩膜可以减少运动矢量图修补的工作量,仅对需要修补的区域进行修补。
上述根据第四掩膜对第三运动矢量图进行修补的两种实现方式可以择一执行,也可以结合执行,在此不作限定。
相应地,第四运动矢量图生成的一种实现方式可以如下:
根据所述第一视频帧和所述第二视频帧,生成所述第二时刻到所述第一时刻的第二运动矢量图;根据所述第二运动矢量图中第十像素的坐标和运动矢量值,确定所述第十像素在所述第三时刻的坐标,所述第十像素为所述第二运动矢量图中的任意一个像素;获取与所述第十像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第十像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;若所述第四运动矢量图中的第十一像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第十一像素的运动矢量值。
第四运动矢量图生成的具体实现方式可以参照第三运动矢量图的生成方式,在此不再重复描述。
需要说明的是,在步骤403之前,还可以生成第三时刻对应的第五掩膜,并根据第五掩膜对第四运动矢量图进行修补,一种可能的实现方式如下:
根据所述第四运动矢量图,生成所述第三时刻对应的第五掩膜;根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素;根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
上述实现方式与第四掩膜的相应步骤类似,可以参照第四掩膜的生成以及对第三运动矢量图的修补,在此不再赘述。
根据第四掩膜对第三运动矢量图进行修补的一种实现方式可以如下:
选取所述第五掩膜中符合第三修补条件的第十二像素;以所述第十二像素为起点,在所述第五掩膜中搜索得到与所述第十二像素对应的第三像素集合;获取所述第四运动矢量图中与所述第十二像素对应的第十三像素,以及与所述第三像素集合对应的第四像素集合;根据所述第四像素集合中的像素与所述第十三像素的距离,以及所述第四像素集合中的像素的运动矢量值,确定所述第十三像素的运动矢量值。
其中,所述第三修补条件包括像素不存在有效运动矢量值,所述第三像素集合中的像素为与所述第十二像素在至少一个方向上最近的像素,且存在运动矢量值。
根据第四掩膜对第三运动矢量图进行修补的实现方式还可以有多种,另一种实现方式可以如下:
选取所述第五掩膜中的符合第四修补条件的第十四像素,获取所述第四运动矢量图中与所述第十四像素对应的所述第十五像素;根据在所述第二方向上与所述第十四像素相邻的至少一个像素的运动矢量值,确定所述第十四像素的运动矢量值。
其中,所述第四修补条件包括所述第十四像素的值指示所述第十四像素在所述第四运动矢量图中对应的第十五像素不存在运动矢量值,且在第二方向上与所述第十五像素相邻的至少一个像素存在运动矢量值。
上述根据第五掩膜对第四运动矢量图进行修补的两种实现方式可以择一执行,也可以结合执行,在此不作限定,具体实现方式可以参照第四掩膜对第三运动矢量图进行修补的步骤,在此不再赘述。
本申请提供的视频帧内插方法中,通过对第三运动矢量图和第四运动矢量图的修补,为视频帧的运动补偿提供了基础,视频帧的运动补偿可以为步骤403描述的过程。
步骤403的执行过程可以如下:
举例来说,根据第三运动矢量图Flowt0,对第一视频帧F0进行运动补偿,得到第三时刻t对应的第一参考帧Warp0;根据第四运动矢量图Flowt0,对第二视频帧F1进行运动补偿,得到第三时刻t对应的第二参考帧Warp1
针对第一掩膜(MergeMask)的非保护区域中任意的第一像素,设第一像素的坐标为(x,y),那么第一像素在第一参考帧中对应第二像素Pt0的坐标为(x,y),以及第一像素在第二参考帧中对应第三像素Pt1的坐标为(x,y)。若第二像素在Flowt0中对应的运动矢量值为(u0,v0),那么Pt0的像素值便等于F0(x+u0,y+v0),F0(x+u0,y+v0)表示F0在(x+u0,y+v0)处的像素值,若第三像素在Flowt1中对应的运动矢量值为(u1,v1),那么Pt1的像素值便等于F1(x+u1,y+v1),F1(x+u1,y+v1)表示F1在(x+u1,y+v1)处的像素值。
需要说明的是,由于运动矢量值不一定是整数,因此(x+u0,y+v0)或者(x+u1,y+v1)可能也不是整数。那么此时可以采用(x+u0,y+v0)或者(x+u1,y+v1)最近的整数坐标的邻居像素的数值(最近邻居法),还可以采用双线性插值、双三次插值的方法利用(x+u0,y+v0)或者(x+u1,y+v1)周围整数坐标(如周围上下左右4个坐标)的像素计算获得。
在对视频帧进行运动补偿后,便可以对所述第一参考帧和所述第二参考帧进行图像融合,具体过程可以如下:
在一种可能的实现方式中,第一掩膜中的所述非保护区域中,每个像素对应第一权重值和第二权重值;步骤404的具体步骤可以如下:
根据所述非保护区域中的第一像素的位置,获取所述第一参考帧中相应位置的第二像素和所述第二参考帧中相应位置的第三像素;根据所述第一像素对应的第一权重值对所述第二像素的像素值进行加权运算,得到第一运算结果;根据所述第一像素对应的第二权重值对所述第三像素的像素值进行加权运算,得到第二运算结果;将所述第一运算结果和所述第二运算结果的和,确定为所述第三视频帧中相应位置的像素的像素值。
由此可见,可以根据第一掩膜对第一参考帧和第二参考帧进行图像融合,从而可以弥补单独参考帧的准确度。
需要说明的是,第一权重值和第二权重值的设置方式可以有多种,如预先对第一权重值和第二权重值进行设置,还可以按照如下方式进行设置:
若所述第一掩膜是根据所述第一运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第一权重值,所述第二权重值等于1减去所述第一权重值;或者,若所述第一掩膜是根据所述第二运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第二权重值,所述第一权重值等于1减去所述第二权重值。
以所述第一掩膜是根据所述第一运动矢量图生成为例,显然,第一掩膜中第一像素的像素值为1时,说明第一像素在第一参考帧中对应第二像素是有效的,可以直接采用第二像素的像素值作为第三视频帧中相应位置像素的像素值,如果第一像素的像素值为0时,说明第一像素在第一视频帧中对应的第二像素是无效的,那么第二像素的像素值必然会误差更大,可以采用第二视频帧中对应的第三像素的像素值作为第三视频帧中相应位置的像素的像素值,而第一像素的像素值大于0且小于1时,就根据第二像素的像素值、第二像素的权重值、第三像素的像素值和第三像素的权重值进行融合。
举例来说,若MergeMask是根据Flow01生成的,那么MergeMask每个像素的像素值表示的是第一权重值;反之,如果MergeMask是根据Flow10生成的,那么MergeMask每个像素的像素值表示的是第二权重值,设定第三视频帧Ft上某一个坐标的像素值为Pt,Warp0在同样坐标的像素值为P0,Warp1在同样坐标的像素值为P1,MergeMask在同样坐标的像素值为a,a∈[0.0,1.0]。
若MergeMask是根据Flow01生成的,那么Pt通过以下公式计算获得:
Pt=P0*a+P1*(1.0-a);
若MergeMask是根据Flow10生成的,那么Pt通过以下公式计算获得:
Pt=P0*(1.0-a)+P1*a。
从而得到Pt,对于有多个颜色分量的像素值,颜色分量的计算可以参照上述公式。
综上所述,当步骤401~404的视频帧内插方法应用于视频帧显示时,视频帧显示方法的流程可以如图6所示。
步骤601:获取第一时刻的第一视频帧、第二时刻的第二视频帧和第三时刻。
步骤602:确定第一视频帧和第二视频帧是否符合内插条件。
如内插条件可以为第一视频帧和第二视频帧的尺寸以及场景均一致,且第一视频帧和第二视频帧内容不相同。
若是,执行步骤603;否则,执行步骤609。
步骤603:获取第一运动矢量图和第二运动矢量图。
步骤604:生成第三时刻的第一掩膜。
步骤605:根据第一运动矢量图和第二运动矢量图,生成第三运动矢量图和第四掩膜,以及第四运动矢量图和第五掩膜。
步骤606:根据第一掩膜、第四掩膜对第三运动矢量图进行修补,更新第三运动矢量图;根据第一掩膜、第五掩膜对第四运动矢量图进行修补,更新第四运动矢量图。
步骤607:根据第三运动矢量图对第一视频帧做运动补偿,获得第一参考帧;根据第四运动矢量图对第二视频帧做运动补偿,获得第二参考帧。
步骤608:根据第一掩膜,对第一参考帧和第二参考帧进行图像融合,获得第三视频帧并输出。
步骤609:输出第一视频帧或第二视频帧。
如图7所示,本申请提供一种视频帧内插装置,包括:
获取模块701,用于获取第一时刻的第一视频帧和第二时刻的第二视频帧;
生成模块702,用于根据第一运动矢量图或第二运动矢量图,生成第三时刻对应的第一掩膜,所述第一掩膜包括非保护区域;所述第一运动矢量图为所述第一时刻到所述第二时刻的运动矢量图,所述第二运动矢量图为所述第二时刻到所述第一时刻的运动矢量图,所述第三时刻位于所述第一时刻与所述第二时刻之间;
处理模块703,用于根据所述第三运动矢量图对所述第一视频帧进行运动补偿,得到所述第三时刻的第一参考帧,以及根据所述第四运动矢量图对所述第二视频帧进行运动补偿,得到所述第三时刻的第二参考帧,所述第三运动矢量图为所述第三时刻到所述第一时刻的运动矢量图,所述第四运动矢量图为所述第三时刻到所述第二时刻的运动矢量图;以及
用于根据所述第一掩膜中的所述非保护区域,对所述第一参考帧和所述第二参考帧进行图像融合,得到所述第三时刻的第三视频帧。
一种可能的设计中,所述第一掩膜中的所述非保护区域中,每个像素对应第一权重值和第二权重值;所述处理模块703具体用于:
根据所述非保护区域中的第一像素的位置,获取所述第一参考帧中相应位置的第二像素和所述第二参考帧中相应位置的第三像素;所述第一像素为所述非保护区域中任一像素;根据所述第一像素对应的第一权重值对所述第二像素的像素值进行加权运算,得到第一运算结果;根据所述第一像素对应的第二权重值对所述第三像素的像素值进行加权运算,得到第二运算结果;将所述第一运算结果和所述第二运算结果的和,确定为所述第三视频帧中相应位置的像素的像素值。
一种可能的设计中,若所述第一掩膜是根据所述第一运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第一权重值,所述第二权重值等于1减去所述第一权重值;或者若所述第一掩膜是根据所述第二运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第二权重值,所述第一权重值等于1减去所述第二权重值。
一种可能的设计中,所述生成模块702具体用于:
根据所述第一运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第二掩膜;对所述第二掩膜执行至少一次迭代操作;所述迭代操作包括对所述第二掩膜进行均值模糊处理、二值化处理;对所述迭代操作后的第二掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
一种可能的设计中,所述生成模块702具体用于:
根据所述第二运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第三掩膜;对所述第三掩膜执行至少一次迭代操作;所述迭代操作包括对所述第三掩膜进行均值模糊处理、二值化处理;对所述迭代操作后的第三掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
一种可能的设计中,所述生成模块702还用于:
根据所述第一视频帧和所述第二视频帧,生成所述第一时刻到所述第二时刻的第一运动矢量图;根据所述第一运动矢量图中第四像素的坐标和运动矢量值,确定所述第四像素在所述第三时刻的坐标,所述第四像素为所述第一运动矢量图中的任意一个像素;获取与所述第四像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第四像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;若所述第三运动矢量图中的第五像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第五像素的运动矢量值。
一种可能的设计中,所述生成模块702还用于:
根据所述第三运动矢量图,生成所述第三时刻对应的第四掩膜;根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素;根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
一种可能的设计中,所述生成模块702具体用于:
选取所述第四掩膜中符合第一修补条件的第六像素,所述第一修补条件包括像素不存在有效运动矢量值;以所述第六像素为起点,在所述第四掩膜中搜索得到与所述第六像素对应的第一像素集合,所述第一像素集合中的像素为与所述第六像素在至少一个方向上最近的像素,且存在运动矢量值;获取所述第三运动矢量图中与所述第六像素对应的第七像素,以及与所述第一像素集合对应的第二像素集合;根据所述第二像素集合中的像素与所述第七像素的距离,以及所述第二像素集合中的像素的运动矢量值,确定所述第七像素的运动矢量值。
一种可能的设计中,所述生成模块702具体用于:
选取所述第四掩膜中的符合第二修补条件的第八像素,所述第二修补条件包括所述第八像素的值指示所述第八像素在所述第三运动矢量图中对应的第九像素不存在运动矢量值,且在第一方向上与所述第九像素相邻的至少一个像素存在运动矢量值;获取所述第三运动矢量图中与所述第八像素对应的所述第九像素;根据在所述第一方向上与所述第九像素相邻的至少一个像素的运动矢量值,确定所述第九像素的运动矢量值。
一种可能的设计中,所述生成模块702还用于:
根据所述第一视频帧和所述第二视频帧,生成所述第二时刻到所述第一时刻的第二运动矢量图;根据所述第二运动矢量图中第十像素的坐标和运动矢量值,确定所述第十像素在所述第三时刻的坐标,所述第十像素为所述第二运动矢量图中的任意一个像素;获取与所述第十像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第十像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;若所述第四运动矢量图中的第十一像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第十一像素的运动矢量值。
一种可能的设计中,所述生成模块702还用于:
根据所述第四运动矢量图,生成所述第三时刻对应的第五掩膜;根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素;根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
一种可能的设计中,所述生成模块702具体用于:
选取所述第五掩膜中符合第三修补条件的第十二像素,所述第三修补条件包括像素不存在有效运动矢量值;以所述第十二像素为起点,在所述第五掩膜中搜索得到与所述第十二像素对应的第三像素集合,所述第三像素集合中的像素为与所述第十二像素在至少一个方向上最近的像素,且存在运动矢量值;获取所述第四运动矢量图中与所述第十二像素对应的第十三像素,以及与所述第三像素集合对应的第四像素集合;根据所述第四像素集合中的像素与所述第十三像素的距离,以及所述第四像素集合中的像素的运动矢量值,确定所述第十三像素的运动矢量值。
一种可能的设计中,所述生成模块702具体用于:
选取所述第五掩膜中的符合第四修补条件的第十四像素,所述第四修补条件包括所述第十四像素的值指示所述第十四像素在所述第四运动矢量图中对应的第十五像素不存在运动矢量值,且在第二方向上与所述第十五像素相邻的至少一个像素存在运动矢量值;获取所述第四运动矢量图中与所述第十四像素对应的所述第十五像素;根据在所述第二方向上与所述第十四像素相邻的至少一个像素的运动矢量值,确定所述第十四像素的运动矢量值。
本申请实施例还提供一种电子设备,该电子设备可以具有如图8所示的结构,该电子设备可以是计算机设备,也可以是能够支持计算机设备实现上述方法的芯片或芯片***。
如图8所示的电子设备可以包括至少一个处理器801,所述至少一个处理器801用于与存储器耦合,读取并执行所述存储器中的指令以实现本申请实施例提供的视频帧内插的步骤。可选的,该电子设备还可以包括通信接口802,用于支持该电子设备进行信令或者数据的接收或发送。电子设备中的通信接口802,可用于实现与其他电子设备的进行交互。处理器801可用于实现电子设备执行视频帧内插的步骤。可选的,该电子设备通还可以包括存储器803,其中存储有计算机指令,存储器803可以与处理器801和/或通信接口802耦合,用于支持处理器801调用存储器803中的计算机指令以实现视频帧内插的步骤;另外,存储器803还可以用于存储本申请方法实施例所涉及的数据,例如,用于存储支持通信接口802实现交互所必须的数据、指令,和/或,用于存储电子设备执行本申请实施例所述方法所必须的配置信息。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,这些计算机指令被计算机调用执行时,可以使得计算机完成上述方法实施例、方法实施例的任意一种可能的设计中所涉及的方法。本申请实施例中,对计算机可读存储介质不做限定,例如,可以是RAM(random-access memory,随机存取存储器)、ROM(read-only memory,只读存储器)等。
本申请还提供一种芯片,该芯片可以包括处理器以及接口电路,用于完成上述方法实施例、方法实施例的任意一种可能的实现方式中所涉及的方法,其中,“耦合”是指两个部件彼此直接或间接地结合,这种结合可以是固定的或可移动性的。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机指令的形式实现。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本申请实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于终端设备中。可选地,处理器和存储媒介也可以设置于终端设备中的不同的部件中。
这些计算机指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (28)

1.一种视频帧内插方法,其特征在于,包括:
获取第一时刻的第一视频帧和第二时刻的第二视频帧;
根据第一运动矢量图或第二运动矢量图,生成第三时刻对应的第一掩膜,所述第一掩膜包括非保护区域;所述第一运动矢量图为所述第一时刻到所述第二时刻的运动矢量图,所述第二运动矢量图为所述第二时刻到所述第一时刻的运动矢量图,所述第三时刻位于所述第一时刻与所述第二时刻之间;
根据第三运动矢量图对所述第一视频帧进行运动补偿,得到所述第三时刻的第一参考帧,以及根据第四运动矢量图对所述第二视频帧进行运动补偿,得到所述第三时刻的第二参考帧,所述第三运动矢量图为所述第三时刻到所述第一时刻的运动矢量图,所述第四运动矢量图为所述第三时刻到所述第二时刻的运动矢量图;
根据所述第一掩膜中的所述非保护区域,对所述第一参考帧和所述第二参考帧进行图像融合,得到所述第三时刻的第三视频帧。
2.如权利要求1所述的方法,其特征在于,所述第一掩膜中的所述非保护区域中,每个像素对应第一权重值和第二权重值;
所述根据所述第一掩膜中的所述非保护区域,对所述第一参考帧和所述第二参考帧进行图像融合,包括:
根据所述非保护区域中的第一像素的位置,获取所述第一参考帧中相应位置的第二像素和所述第二参考帧中相应位置的第三像素;所述第一像素为所述非保护区域中任一像素;
根据所述第一像素对应的第一权重值对所述第二像素的像素值进行加权运算,得到第一运算结果;
根据所述第一像素对应的第二权重值对所述第三像素的像素值进行加权运算,得到第二运算结果;
将所述第一运算结果和所述第二运算结果的和,确定为所述第三视频帧中相应位置的像素的像素值。
3.如权利要求2所述的方法,其特征在于:
若所述第一掩膜是根据所述第一运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第一权重值,所述第二权重值等于1减去所述第一权重值;或者
若所述第一掩膜是根据所述第二运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第二权重值,所述第一权重值等于1减去所述第二权重值。
4.如权利要求1-3任一项所述的方法,其特征在于,所述根据第一运动矢量图,生成所述第三时刻对应的第一掩膜,包括:
根据所述第一运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第二掩膜;
对所述第二掩膜执行至少一次迭代操作;所述迭代操作包括对所述第二掩膜进行均值模糊处理、二值化处理;
对所述迭代操作后的第二掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
5.如权利要求1-3任一项所述的方法,其特征在于,所述根据第二运动矢量图,生成所述第三时刻对应的第一掩膜,包括:
根据所述第二运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第三掩膜;
对所述第三掩膜执行至少一次迭代操作;所述迭代操作包括对所述第三掩膜进行均值模糊处理、二值化处理;
对所述迭代操作后的第三掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
6.如权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
根据所述第一视频帧和所述第二视频帧,生成所述第一时刻到所述第二时刻的所述第一运动矢量图;
根据所述第一运动矢量图中第四像素的坐标和运动矢量值,确定所述第四像素在所述第三时刻的坐标,所述第四像素为所述第一运动矢量图中的任意一个像素;
获取与所述第四像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第四像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;
若所述第三运动矢量图中的第五像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第五像素的运动矢量值。
7.如权利要求1-6任一项所述的方法,其特征在于,所述根据第三运动矢量图对所述第一视频帧进行运动补偿,得到所述第三时刻的第一参考帧之前,还包括:
根据所述第三运动矢量图,生成所述第三时刻对应的第四掩膜;
根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素;
根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
8.如权利要求7所述的方法,其特征在于:
所述根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素,包括:
选取所述第四掩膜中符合第一修补条件的第六像素,所述第一修补条件包括像素不存在有效运动矢量值;
所述根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新,包括:
以所述第六像素为起点,在所述第四掩膜中搜索得到与所述第六像素对应的第一像素集合,所述第一像素集合中的像素为与所述第六像素在至少一个方向上最近的像素,且存在运动矢量值;
获取所述第三运动矢量图中与所述第六像素对应的第七像素,以及与所述第一像素集合对应的第二像素集合;
根据所述第二像素集合中的像素与所述第七像素的距离,以及所述第二像素集合中的像素的运动矢量值,确定所述第七像素的运动矢量值。
9.如权利要求7或8所述的方法,其特征在于:
所述根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素,包括:
选取所述第四掩膜中的符合第二修补条件的第八像素,所述第二修补条件包括所述第八像素的值指示所述第八像素在所述第三运动矢量图中对应的第九像素不存在运动矢量值,且在第一方向上与所述第九像素相邻的至少一个像素存在运动矢量值;
所述根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新,包括:
获取所述第三运动矢量图中与所述第八像素对应的所述第九像素;
根据在所述第一方向上与所述第九像素相邻的至少一个像素的运动矢量值,确定所述第九像素的运动矢量值。
10.如权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
根据所述第一视频帧和所述第二视频帧,生成所述第二时刻到所述第一时刻的所述第二运动矢量图;
根据所述第二运动矢量图中第十像素的坐标和运动矢量值,确定所述第十像素在所述第三时刻的坐标,所述第十像素为所述第二运动矢量图中的任意一个像素;
获取与所述第十像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第十像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;
若所述第四运动矢量图中的第十一像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第十一像素的运动矢量值。
11.如权利要求1-5、10任一项所述的方法,其特征在于,所述根据第四运动矢量图对所述第二视频帧进行运动补偿,得到所述第三时刻的第二参考帧之前,还包括:
根据所述第四运动矢量图,生成所述第三时刻对应的第五掩膜;
根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素;
根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
12.如权利要求11所述的方法,其特征在于:
所述根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素,包括:
选取所述第五掩膜中符合第三修补条件的第十二像素,所述第三修补条件包括像素不存在有效运动矢量值;
所述根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新,包括:
以所述第十二像素为起点,在所述第五掩膜中搜索得到与所述第十二像素对应的第三像素集合,所述第三像素集合中的像素为与所述第十二像素在至少一个方向上最近的像素,且存在运动矢量值;
获取所述第四运动矢量图中与所述第十二像素对应的第十三像素,以及与所述第三像素集合对应的第四像素集合;
根据所述第四像素集合中的像素与所述第十三像素的距离,以及所述第四像素集合中的像素的运动矢量值,确定所述第十三像素的运动矢量值。
13.如权利要求11或12所述的方法,其特征在于:
所述根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素,包括:
选取所述第五掩膜中的符合第四修补条件的第十四像素,所述第四修补条件包括所述第十四像素的值指示所述第十四像素在所述第四运动矢量图中对应的第十五像素不存在运动矢量值,且在第二方向上与所述第十五像素相邻的至少一个像素存在运动矢量值;
所述根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新,包括:
获取所述第四运动矢量图中与所述第十四像素对应的所述第十五像素;
根据在所述第二方向上与所述第十四像素相邻的至少一个像素的运动矢量值,确定所述第十四像素的运动矢量值。
14.一种视频帧内插装置,其特征在于,包括:
获取模块,用于获取第一时刻的第一视频帧和第二时刻的第二视频帧;
生成模块,用于根据第一运动矢量图或第二运动矢量图,生成第三时刻对应的第一掩膜,所述第一掩膜包括非保护区域;所述第一运动矢量图为所述第一时刻到所述第二时刻的运动矢量图,所述第二运动矢量图为所述第二时刻到所述第一时刻的运动矢量图,所述第三时刻位于所述第一时刻与所述第二时刻之间;
处理模块,用于根据第三运动矢量图对所述第一视频帧进行运动补偿,得到所述第三时刻的第一参考帧,以及根据第四运动矢量图对所述第二视频帧进行运动补偿,得到所述第三时刻的第二参考帧,所述第三运动矢量图为所述第三时刻到所述第一时刻的运动矢量图,所述第四运动矢量图为所述第三时刻到所述第二时刻的运动矢量图;以及
用于根据所述第一掩膜中的所述非保护区域,对所述第一参考帧和所述第二参考帧进行图像融合,得到所述第三时刻的第三视频帧。
15.如权利要求14所述的装置,其特征在于,所述第一掩膜中的所述非保护区域中,每个像素对应第一权重值和第二权重值;所述处理模块具体用于:
根据所述非保护区域中的第一像素的位置,获取所述第一参考帧中相应位置的第二像素和所述第二参考帧中相应位置的第三像素;所述第一像素为所述非保护区域中任一像素;
根据所述第一像素对应的第一权重值对所述第二像素的像素值进行加权运算,得到第一运算结果;
根据所述第一像素对应的第二权重值对所述第三像素的像素值进行加权运算,得到第二运算结果;
将所述第一运算结果和所述第二运算结果的和,确定为所述第三视频帧中相应位置的像素的像素值。
16.如权利要求15所述的装置,其特征在于:
若所述第一掩膜是根据所述第一运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第一权重值,所述第二权重值等于1减去所述第一权重值;或者
若所述第一掩膜是根据所述第二运动矢量图生成的,则所述第一掩膜中的所述第一像素的像素值用于指示所述第二权重值,所述第一权重值等于1减去所述第二权重值。
17.如权利要求14-16任一项所述的装置,其特征在于,所述生成模块具体用于:
根据所述第一运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第二掩膜;
对所述第二掩膜执行至少一次迭代操作;所述迭代操作包括对所述第二掩膜进行均值模糊处理、二值化处理;
对所述迭代操作后的第二掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
18.如权利要求14-16任一项所述的装置,其特征在于,所述生成模块具体用于:
根据所述第二运动矢量图中各像素的坐标和运动矢量值,分别确定所述各像素在所述第三时刻的坐标,并根据所述各像素在所述第三时刻的坐标,生成所述第三时刻对应的第三掩膜;
对所述第三掩膜执行至少一次迭代操作;所述迭代操作包括对所述第三掩膜进行均值模糊处理、二值化处理;
对所述迭代操作后的第三掩膜进行腐蚀处理、均值模糊处理,得到所述第三时刻对应的所述第一掩膜。
19.如权利要求14-18任一项所述的装置,其特征在于,所述生成模块还用于:
根据所述第一视频帧和所述第二视频帧,生成所述第一时刻到所述第二时刻的所述第一运动矢量图;
根据所述第一运动矢量图中第四像素的坐标和运动矢量值,确定所述第四像素在所述第三时刻的坐标,所述第四像素为所述第一运动矢量图中的任意一个像素;
获取与所述第四像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第四像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;
若所述第三运动矢量图中的第五像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第五像素的运动矢量值。
20.如权利要求14-19任一项所述的装置,其特征在于,所述生成模块还用于:
根据所述第三运动矢量图,生成所述第三时刻对应的第四掩膜;
根据所述第四掩膜,选取所述第三运动矢量图中满足修补条件的像素;
根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
21.如权利要求20所述的装置,其特征在于,所述生成模块具体用于:
选取所述第四掩膜中符合第一修补条件的第六像素,所述第一修补条件包括像素不存在有效运动矢量值;
以所述第六像素为起点,在所述第四掩膜中搜索得到与所述第六像素对应的第一像素集合,所述第一像素集合中的像素为与所述第六像素在至少一个方向上最近的像素,且存在运动矢量值;
获取所述第三运动矢量图中与所述第六像素对应的第七像素,以及与所述第一像素集合对应的第二像素集合;
根据所述第二像素集合中的像素与所述第七像素的距离,以及所述第二像素集合中的像素的运动矢量值,确定所述第七像素的运动矢量值。
22.如权利要求20或21所述的装置,其特征在于,所述生成模块具体用于:
选取所述第四掩膜中的符合第二修补条件的第八像素,所述第二修补条件包括所述第八像素的值指示所述第八像素在所述第三运动矢量图中对应的第九像素不存在运动矢量值,且在第一方向上与所述第九像素相邻的至少一个像素存在运动矢量值;
获取所述第三运动矢量图中与所述第八像素对应的所述第九像素;
根据在所述第一方向上与所述第九像素相邻的至少一个像素的运动矢量值,确定所述第九像素的运动矢量值。
23.如权利要求14-18任一项所述的装置,其特征在于,所述生成模块还用于:
根据所述第一视频帧和所述第二视频帧,生成所述第二时刻到所述第一时刻的所述第二运动矢量图;
根据所述第二运动矢量图中第十像素的坐标和运动矢量值,确定所述第十像素在所述第三时刻的坐标,所述第十像素为所述第二运动矢量图中的任意一个像素;
获取与所述第十像素在所述第三时刻的坐标相邻的至少一个像素,并根据所述第十像素从所述第一时刻到所述第三时刻的运动位移设置所述至少一个像素的运动矢量值;
若所述第四运动矢量图中的第十一像素的运动矢量值被多次设置,则将所述多次设置的运动矢量值的平均值确定为所述第十一像素的运动矢量值。
24.如权利要求14-18、23任一项所述的装置,其特征在于,所述生成模块还用于:
根据所述第四运动矢量图,生成所述第三时刻对应的第五掩膜;
根据所述第五掩膜,选取所述第四运动矢量图中满足修补条件的像素;
根据与所述满足修补条件的像素相关联的至少一个像素的运动矢量值,对所述满足修补条件的像素的运动矢量值进行更新。
25.如权利要求24所述的装置,其特征在于,所述生成模块具体用于:
选取所述第五掩膜中符合第三修补条件的第十二像素,所述第三修补条件包括像素不存在有效运动矢量值;
以所述第十二像素为起点,在所述第五掩膜中搜索得到与所述第十二像素对应的第三像素集合,所述第三像素集合中的像素为与所述第十二像素在至少一个方向上最近的像素,且存在运动矢量值;
获取所述第四运动矢量图中与所述第十二像素对应的第十三像素,以及与所述第三像素集合对应的第四像素集合;
根据所述第四像素集合中的像素与所述第十三像素的距离,以及所述第四像素集合中的像素的运动矢量值,确定所述第十三像素的运动矢量值。
26.如权利要求24或25所述的装置,其特征在于,所述生成模块具体用于:
选取所述第五掩膜中的符合第四修补条件的第十四像素,所述第四修补条件包括所述第十四像素的值指示所述第十四像素在所述第四运动矢量图中对应的第十五像素不存在运动矢量值,且在第二方向上与所述第十五像素相邻的至少一个像素存在运动矢量值;
获取所述第四运动矢量图中与所述第十四像素对应的所述第十五像素;
根据在所述第二方向上与所述第十四像素相邻的至少一个像素的运动矢量值,确定所述第十四像素的运动矢量值。
27.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器;一个或多个存储器;其中,所述一个或多个存储器存储有一个或多个计算机指令,当所述一个或多个计算机指令被所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1至13任一项所述的方法。
28.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行如权利要求1至13任一项所述的方法。
CN202111650327.XA 2021-12-30 2021-12-30 一种视频帧内插方法及装置 Pending CN116418932A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111650327.XA CN116418932A (zh) 2021-12-30 2021-12-30 一种视频帧内插方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111650327.XA CN116418932A (zh) 2021-12-30 2021-12-30 一种视频帧内插方法及装置

Publications (1)

Publication Number Publication Date
CN116418932A true CN116418932A (zh) 2023-07-11

Family

ID=87054935

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111650327.XA Pending CN116418932A (zh) 2021-12-30 2021-12-30 一种视频帧内插方法及装置

Country Status (1)

Country Link
CN (1) CN116418932A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117793479A (zh) * 2023-12-26 2024-03-29 北京中科大洋科技发展股份有限公司 一种平滑过渡视频掩膜快速生成方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117793479A (zh) * 2023-12-26 2024-03-29 北京中科大洋科技发展股份有限公司 一种平滑过渡视频掩膜快速生成方法
CN117793479B (zh) * 2023-12-26 2024-05-14 北京中科大洋科技发展股份有限公司 一种平滑过渡视频掩膜快速生成方法

Similar Documents

Publication Publication Date Title
CN111557016B (zh) 用于生成包括模拟的运动模糊的图像的方法和设备
CN108833785B (zh) 多视角图像的融合方法、装置、计算机设备和存储介质
CN110622497A (zh) 具备具有不同焦距的相机的设备及实现相机的方法
WO2021115136A1 (zh) 视频图像的防抖方法、装置、电子设备和存储介质
US11538175B2 (en) Method and apparatus for detecting subject, electronic device, and computer readable storage medium
WO2022170824A1 (zh) 图像拼接的处理方法、装置、电子***和设备、可读介质
US10735769B2 (en) Local motion compensated temporal noise reduction with sub-frame latency
WO2021179826A1 (zh) 图像处理方法及相关产品
CN111062881A (zh) 图像处理方法及装置、存储介质、电子设备
CN109658427B (zh) 图像处理方法及装置
CN113556464B (zh) 拍摄方法、装置及电子设备
CN106251348B (zh) 一种面向深度相机的自适应多线索融合背景减除方法
CN109903315B (zh) 用于光流预测的方法、装置、设备以及可读存储介质
WO2023273868A1 (zh) 图像降噪方法、装置、终端、存储介质
CN113034348A (zh) 图像处理方法、装置、存储介质及设备
CN102685371B (zh) 基于多分辨率块匹配和pi控制的数字视频稳像方法
CN112308797A (zh) 角点检测方法、装置、电子设备及可读存储介质
CN112215877A (zh) 图像处理方法和装置、电子设备、可读存储介质
CN116134483A (zh) 时空再循环网络
JP6857224B2 (ja) 画像内の乱流の影響を減少させるシステム及び方法
CN111191619B (zh) 车道线虚线段的检测方法、装置、设备和可读存储介质
CN116418932A (zh) 一种视频帧内插方法及装置
CN111726526B (zh) 一种图像处理方法、装置、电子设备和存储介质
JP2014052855A (ja) 画像処理装置、その制御方法、および制御プログラム
CN114782280A (zh) 图像处理方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination