CN116405708A - 用人工智能视频帧分割处理视频帧像素数据的方法和装置 - Google Patents

用人工智能视频帧分割处理视频帧像素数据的方法和装置 Download PDF

Info

Publication number
CN116405708A
CN116405708A CN202211460572.9A CN202211460572A CN116405708A CN 116405708 A CN116405708 A CN 116405708A CN 202211460572 A CN202211460572 A CN 202211460572A CN 116405708 A CN116405708 A CN 116405708A
Authority
CN
China
Prior art keywords
data
video
region
background
circuit
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
CN202211460572.9A
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN116405708A publication Critical patent/CN116405708A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234318Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into objects, e.g. MPEG-4 objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/194Segmentation; Edge detection involving foreground-background segmentation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234327Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44008Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/141Systems for two-way working between two video terminals, e.g. videophone
    • H04N7/147Communication arrangements, e.g. identifying the communication as a video-communication, intermediate storage of the signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本公开涉及用人工智能视频帧分割处理视频帧像素数据的方法和装置。所公开的示例包括视频帧分割器电路,来生成第一视频帧像素数据的分割数据,该分割数据包括与前景区域和背景区域相对应的元数据,前景区域对应于第一视频帧像素数据。所公开的示例还包括视频编码器电路,来基于分割数据生成第一前景限界区域和第一背景限界区域,确定第一视频帧像素数据的第一虚拟瓦片,第一虚拟瓦片位于第一前景限界区域中,将第一虚拟瓦片编码成视频数据比特流,而不对第一背景限界区域编码,并且经由网络传输视频数据比特流。

Description

用人工智能视频帧分割处理视频帧像素数据的方法和装置
技术领域
本公开概括而言涉及计算机,更具体而言,涉及使用人工智能视频帧分割来处理视频帧像素数据的方法和装置。
背景技术
诸如膝上型电脑或移动设备之类的电子用户设备包括相机,以捕捉图像。该相机可在视频呼叫期间被使用,其中该设备的用户的图像被传输到其他用户设备。
发明内容
根据本公开的一方面,提供了一种对视频帧像素数据编码的装置,包括:接口电路,用于对视频帧像素数据编码;以及处理器电路,其包括以下各项中的一个或多个:中央处理单元、图形处理单元或者数字信号处理器中的至少一者,所述中央处理单元、所述图形处理单元或者所述数字信号处理器中的至少一者具有:控制电路,用于控制数据在所述处理器电路内的移动;算术和逻辑电路,用于执行与指令相对应的一个或多个第一操作;以及一个或多个寄存器,用于存储所述一个或多个第一操作的结果,所述指令在所述装置中;现场可编程门阵列(FPGA),所述FPGA包括逻辑门电路、多个可配置互连、以及存储电路,所述逻辑门电路和互连用于执行一个或多个第二操作,所述存储电路用于存储所述一个或多个第二操作的结果;或者专用集成电路(ASIC),其包括逻辑门电路来执行一个或多个第三操作;所述处理器电路用于执行所述第一操作、所述第二操作或者所述第三操作中的至少一者,以实例化:视频帧分割器电路,用于生成第一视频帧像素数据的分割数据,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;以及视频编码器电路,用于:基于所述分割数据生成第一前景限界区域和第一背景限界区域;确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中;将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;并且提供所述视频数据比特流来经由网络传输。
根据本公开的一方面,提供了至少一个包括指令的计算机可读存储介质,所述指令当被执行时,使得处理器电路至少执行以下操作:生成第一视频帧像素数据的分割数据,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;基于所述分割数据生成第一前景限界区域和第一背景限界区域;确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中;将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;并且提供所述视频数据比特流来经由网络传输。
根据本公开的一方面,提供了一种装置,包括:用于生成第一视频帧像素数据的分割数据的装置,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;以及用于对所述第一视频帧像素数据的第一虚拟瓦片编码的装置,其中,所述第一虚拟瓦片编码装置用于:基于所述分割数据生成第一前景限界区域和第一背景限界区域;确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中;并且将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;以及用于经由网络传输所述视频数据比特流的装置。
根据本公开的一方面,提供了一种方法,包括:通过利用处理器执行指令,来生成第一视频帧像素数据的分割数据,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;通过利用所述处理器执行指令,来基于所述分割数据生成第一前景限界区域和第一背景限界区域;通过利用所述处理器执行指令,来确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中;通过利用所述处理器执行指令,来将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;并且通过利用所述处理器执行指令,来经由网络传输所述视频数据比特流。
附图说明
图1是示出了在视频会议期间对视频帧进行分割和编码的先前流程的过程流程图。
图2是示出了在视频会议期间解码和显示视频帧的先前过程的流程图。
图3图示了示例用户设备,其被构造为根据本公开的教导,使用人工智能视频帧分割在端到端视频会议中通信。
图4是图3的用户设备的视频帧分割器电路和视频编码器电路的示例实现方式的框图。
图5是图3的用户设备的视频解码器电路和视频显示控制器电路的示例实现方式的框图。
图6图示了示例缓冲池,其中读取和写入操作由图3和图5的视频解码器电路和视频显示控制器电路在不同时间执行。
图7是根据本公开的教导,由图3和图5的示例视频解码器电路在低功率模式中解码并且被显示在用户设备上的视频帧的示例表示。
图8是代表了示例机器可读指令和/或操作的流程图,这些指令和/或操作可由示例处理器电路执行和/或实例化,以实现图3和/或图4的视频帧分割器电路和视频编码器电路来分割、编码和传输视频帧。
图9是代表了示例机器可读指令和/或操作的流程图,这些指令和/或操作可由示例处理器电路执行和/或实例化,以实现图3和/或图5的视频解码器电路和视频显示控制器电路来解码、渲染和显示视频帧。
图10是代表了示例机器可读指令和/或操作的流程图,这些指令和/或操作可由示例处理器电路执行和/或实例化,以实现图3、图5和/或图6的视频解码器电路和视频显示控制器电路在缓冲池中的读取和写入操作,以解码、存储和/或更新缓冲池中的帧内数据。
图11是包括处理器电路的示例处理平台的框图,该处理器电路被构造成执行图8、图9和图10的示例机器可读指令,以实现图3-图5的用户设备,来根据本公开的教导实现人工智能视频帧分割。
图12是图11的处理器电路的示例实现方式的框图。
图13是图11的处理器电路的另一示例实现方式的框图。
图14是示例软件分发平台(例如,一个或多个服务器)的框图,用于将软件(例如,与图8、图9和/或图10的示例机器可读指令相对应的软件)分发到与最终用户和/或消费者(例如,用于许可、销售和/或使用)、零售商(例如,用于销售、再销售、许可和/或分许可)和/或原始设备制造商(OEM)(例如,用于包括在要被分发到例如零售商和/或诸如直接购买客户之类的其他最终用户的产品中)相关联的客户端设备。
一般而言,相同的标号将在各幅图和伴随的书面描述的各处被用于指代相同或相似的部件。附图不是按比例的。相反,在附图中可放大层或区域的厚度。虽然附图中示出了具有清晰线条和边界的层和区域,但这些线条和/或边界中的一些或者全部可能是理想化的。在现实中,边界和/或线条可能是难以察觉的、混合的、和/或不规则的。
除非另有具体声明,否则本文使用诸如“第一”、“第二”、“第三”等等之类的描述语,而不输入或以其他方式指示出任何优先权、物理顺序、在列表中的排列和/或以任何方式排序的含义,而只是用作标签和/或任意名称来区分元素,以便易于理解所公开的示例。在一些示例中,描述语“第一”在详细描述中可用于提及某一元素,而同一元素在权利要求中可以用不同的描述语来提及,例如“第二”或“第三”。在这种情况下,应当理解,这种描述语仅仅用于明确地识别那些元素,这些元素例如可能在其他情况下共享同一名称。
如本文所使用的,“大致”和“大约”指的是由于制造容差和/或其他现实世界不完美而可能不确切的尺寸。如本文所使用的,“基本上实时”指的是以近乎瞬时的方式发生,承认现实世界中可能存在计算时间、传输等等方面的延迟。从而,除非另有指明,否则“基本上实时”指的是实时+/-1秒。
如本文所使用的,短语“与……通信”——包括其变体——涵盖了直接通信和/或通过一个或多个中间组件进行的间接通信,而不要求直接物理(例如,有线)通信和/或不断的通信,而是还包括按周期性间隔、排定的间隔、非周期性间隔和/或一次性事件的选择性通信。
如本文所使用的,“处理器电路”被定义为包括(i)一个或多个专用电气电路,其被构造为执行(一个或多个)特定的操作,并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电气硬件),和/或(ii)一个或多个通用的基于半导体的电气电路,其被用指令编程以执行特定操作,并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电气硬件)。处理器电路的示例包括编程的微处理器、可实例化指令的现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器单元(Central Processor Unit,CPU)、图形处理器单元(Graphics Processor Unit,GPU)、数字信号处理器(Digital Signal Processor,DSP)、XPU、或者微控制器和集成电路,例如专用集成电路(Application Specific Integrated Circuit,ASIC)。例如,XPU可以由异构计算系统实现,该计算系统包括多种类型的处理器电路(例如,一个或多个FPGA、一个或多个CPU、一个或多个GPU、一个或多个DSP,等等,和/或这些的组合)以及(一个或多个)应用编程接口(application programming interface,API),这些API可以将(一个或多个)计算任务指派给该多种类型的处理电路中最适于执行该(一个或多个)计算任务的任何一个(或多个)。
具体实施方式
在诸如膝上型电脑、平板设备或者智能电话之类的包括相机的电子用户设备中,用户设备可包括用户应用,例如视频会议应用。在例如视频会议期间,用户设备的相机(例如,内置视频相机、作为输入设备的附件的单独相机,等等)生成用户的图像。用户设备对图像进行编码,并且经由网络通信将其传输给作为参与视频会议的视频会议设备操作的一个或多个其他用户设备(例如,笔记本电脑、平板设备、智能电话,等等)。一个或多个视频会议设备中的每一者也包括相机。在视频会议期间,一个或多个视频会议设备的相机生成视频会议设备各自用户的图像。一个或多个视频会议设备对图像进行编码并且经由网络通信将图像传输给用户设备。用户设备对从(一个或多个)其他视频会议设备接收到的图像进行解码并且显示在用户设备的显示屏幕上。
对由用户设备的相机生成的图像进行编码可以使用用户设备的大量处理功率。在一些示例中,处理功率的很大一部分与存储器带宽使用有关,它采用了消耗功率的存储器资源,例如双数据速率输入/输出(double data rate input/output,DDRIO)和存储器控制器功率。例如,在先前的视频会议编码管线中,整个视频帧(例如,1920乘1080像素分辨率的图像)可能被从存储器(例如,动态随机访问存储器、静态随机访问存储器,等等)中读取和/或向其写入若干次(例如,七次或者更多次)。在一些示例中,视频会议应用使用高帧速率(例如,60帧每秒)。在一些示例中,视频编码器使用符合标准的编码方案或技术(例如,高级视频编码(Advanced Video Coding,AVC)、高效率视频编码(High Efficiency VideoCoding,HEVC),等等),这些方案或技术可以促进运动补偿和/或运动估计技术来高效地压缩视频数据。运动估计是一种检测与视频序列的(一个或多个)视频帧中的对象(例如,视频会议应用的用户)和/或相机(例如,静态或者动态背景)相对应的运动模式的技术。可以使用一种算法来实现运动补偿,该算法基于部分处理的帧(例如,先前和/或双向帧)以及一个或多个完全处理的帧(例如,参考帧)来预测(一个或多个)对象的运动和/或相机运动。当使用只有一个参考帧的符合标准的示例方案来处理视频会议流时,视频会议应用可以使用大量的存储器带宽(例如,每秒90兆字节(Megabytes per second,MBps))来处理(例如,编码)以每秒30帧生成的视频帧数据。下面的示例公式1可以用来计算视频会议应用用来处理/编码视频会议流的示例存储器带宽的量。
(公式1)存储器带宽=1920*1080*1.5*30=93,312,000字节在上面的公式1中,1920和1080是帧中的像素的宽度和高度,1.5是常数值,指的是具有4:2:0色度子采样的YUV颜色空间,并且30是每秒生成的帧数目。
此外,在用户设备处对从视频会议设备接收的图像进行解码可以使用与存储器带宽有关的大量处理功率。例如,在已知的视频会议解码和显示管线中,整个视频帧(例如,1920乘1080像素分辨率的图像)可能被从存储器(例如,动态随机访问存储器、静态随机访问存储器,等等)中读取和/或向其写入若干次(例如,四次或者更多次)。在一些示例中,视频会议可包括多个(例如,16个)参与者,这样,用户设备从多个(例如,15个)视频会议设备接收图像。因此,对于整个视频帧从存储器读取和/或写入到存储器的数目被乘以额外参与者的数目(例如,视频会议设备的数目)。此外,由于用于视频会议的高帧速率(例如,每秒30帧)和用于解码的符合标准(例如,AVC、HEVC,等等)的运动补偿技术,视频会议应用可以使用大量的存储器带宽(例如,每秒1.5千兆字节(GBps))来处理(例如,解码)、降尺度、标示和/或显示视频会议会话中的16个参与者的解码视频帧。下面的示例公式2可以用来计算视频会议应用用来处理/解码(一个或多个)视频会议流的示例存储器带宽的量。
(公式2)存储器带宽=1920*1080*1.5*30*16=1,492,992,000字节在上面的公式2中,1920和1080是帧中的像素的宽度和高度,1.5是常数值,指的是具有4:2:0色度子采样的YUV颜色空间,30是每秒生成的帧数目,并且16是在视频会议会话中被解码来显示的视频流的数目。
在一些示例中,由用户设备的相机或者(一个或多个)视频会议设备的(一个或多个)相机生成的图像的前景部分包括相关信息,例如对用户的描述。在一些示例中,图像的背景部分包括图像的用户后面的相对于先前帧基本没有变化的不那么相关信息(例如,房间、墙壁,等等)。在一些示例中,图像的前景部分是视频帧中的像素的矩形区域,其包括用户和一些背景部分。在一些示例中,矩形前景区域和前景区域内部和外部的一个或多个矩形背景区域由人工神经网络(artificial neural network,ANN)检测。示例ANN还可以被训练或编程以生成在(一个或多个)前景区域和(一个或多个)背景区域中检测到的像素的元数据,该元数据可被示例视频编码器电路用于将视频帧分割为(一个或多个)前景限界区域和(一个或多个)背景限界区域。在一些示例中,用户设备的或者(一个或多个)视频会议设备的视频编码器电路确定视频帧图像数据的虚拟瓦片,该虚拟瓦片包括(一个或多个)前景限界区域的不与(一个或多个)背景限界区域重叠的部分。从而,示例视频编码器电路可以基于从人工神经网络接收到的分割数据,确定视频帧的主要包括视频会议的用户的像素数据。
本文公开的示例省略了从和/或向存储器读取和/或写入图像的背景部分,以减少视频会议期间的处理时间、存储器带宽使用和功率消耗。本文公开的示例包括视频编码器电路,以处理(例如,编码)由用户设备的相机捕捉的视频帧图像的虚拟瓦片,以减少视频会议期间的存储器带宽。此外,本文公开的示例包括视频解码器电路,以处理(例如,解码)视频会议期间从其他用户设备接收的数据比特流的虚拟瓦片,以减少存储器带宽。
图1图示了用于在视频会议期间使用对视频序列的视频帧进行分割和编码的先前技术对视频帧编码的示例过程100。在图1中,一个或多个相机捕捉视频帧,并且将视频帧像素数据发送到视频编码器和降尺度器。降尺度器对(一个或多个)视频帧进行子采样,并且基于人工智能的分割方案处理(一个或多个)视频帧,以识别(一个或多个)视频帧的(一个或多个)前景和背景区域。识别出的(一个或多个)视频帧的(一个或多个)背景区域被虚拟背景所替换和/或被模糊掉。视频编码器使用标准视频压缩编解码器(例如,H.264高级视频编码(AVC)、H.265高效率视频编码(HEVC),等等)和运动估计对修改后的(一个或多个)视频帧进行编码。视频编码器将帧划分为多个块(例如,宏块、编码树单元,等等),并且块匹配算法可被用于比较当前视频帧的宏块与视频序列中的附近(例如,先前)视频帧中的相应块和相邻宏块。还创建运动向量,它模拟了宏块从一个位置到另一个位置的运动。对于帧内数据(即,参考帧数据),视频编码器使用块匹配算法对帧中的一些(例如,全部和/或部分)块进行编码,以对具有相似空间信息的相邻块进行组合、压缩、合并,等等。在一些示例中,对于帧内数据没有运动向量,而改为使用空间信息来有效地压缩信息。对于帧间数据(即,预测性帧数据),有显著变化的块被编码,而相对于附近的帧保持不变的像素数据不被编码。在一些示例中,视频编码器计算(一个或多个)宏块运动并且将(一个或多个)宏块运动作为(一个或多个)运动向量标示。对于整个视频帧执行压缩技术,例如运动估计和块匹配,可能涉及例如在1920x1080像素帧上的8x8大小的32400个块。对于视频序列中的视频帧在这么多的块上运行处理,对于处理器而言可能是密集的。将处理转移到云计算配置会添加视频会议的延时,这将降低视频会议的质量,导致用户体验不佳。对每帧处理(例如,编码)这么多块,会在视频编码器和存储器之间产生大量的流量,从而限制了计算系统的存储器带宽。
图2图示了用于在视频会议期间使用对视频序列的视频帧进行解码和显示的先前技术对视频帧解码的示例过程200。在图2中,视频解码器接收由视频编码器设备经由网络发送的数据的比特流。该比特流随着时间的推移被用标准视频编解码器(例如,H.264高级视频编码(AVC)、H.265高效率视频编码(HEVC),等等)和运动估计过程解码成视频序列的视频帧。视频序列中的经解码的视频帧被降尺度并且组构成网格(例如,2x2帧),以适合于用于实现视频会议应用的用户设备的显示屏幕。与图1的视频编码器一样,视频解码器对于编码的帧内数据和帧间数据的全帧像素数据执行处理(例如,解码)操作。视频解码器对包括编码的全视频帧像素数据(例如,帧内数据)或者视频解码器用于运动估计和/或块匹配的像素数据的编码块(例如,宏块、编码树单元,等等)的比特流数据进行解码。使用这些系统、装置和方法对帧内数据和帧间数据进行解码是一项计算密集型的任务,并且因为重复的从存储器读取和向存储器写入而消耗了大量的存储器带宽。
图3是根据本公开的教导构建的示例系统300的框图。在示例图3中,系统300包括经由网络304与一个或多个其他用户设备306通信的用户设备302,以在视频会议期间使用人工智能视频帧分割来处理(例如,编码和解码)视频帧像素数据。图3的示例用户设备302和/或(一个或多个)示例用户设备306可以通过诸如中央处理单元之类的处理器电路308执行指令来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。额外地或者替代地,图3的示例用户设备302和/或(一个或多个)示例用户设备306可以由被构造为执行与指令相对应的操作的ASIC或FPGA来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。应当理解,图3的一些或所有电路可以在相同或不同时间被实例化。一些或所有电路可以例如在在硬件上同时执行和/或在硬件上串行执行的一个或多个线程中被实例化。此外,在一些示例中,图3的一些或所有电路可以由在微处理器上执行的一个或多个虚拟机和/或容器来实现。
图3中图示出的示例系统300包括根据本公开的教导构建的示例用户设备302,用于处理(例如,编码和/或解码)与视频会议相关联的视频序列中的视频图像。示例用户设备302可以是个人计算设备,例如膝上型电脑、桌面型计算机、电子平板设备、智能电话,等等。图3中图示出的示例系统300示出了示例用户设备302的细节,其可以与(一个或多个)用户设备306基本相似或者相同。虽然图3中图示了一个示例用户设备306,但多个远程和/或本地用户设备306可以经由网络304连接到用户设备302。
图3的示例用户设备302包括处理器电路308。示例用户设备302的处理器电路308是基于半导体的硬件逻辑设备。硬件处理器电路308可以实现本地用户设备302的中央处理器单元(CPU),可包括任意数目的核心,并且可以例如由可从
Figure BDA0003955223920000101
公司购得的处理器来实现。示例用户设备302包括一个或多个存储设备310,例如非易失性存储器(例如,闪存)。示例用户设备302包括(一个或多个)用户输入设备312、(一个或多个)用户输出设备314、以及示例动态随机访问存储器(dynamic random access memory,DRAM)316。虽然用户设备302包括DRAM 316,但这种类型的随机访问存储器可以被其他类型的易失性存储器(例如,静态随机访问存储器)所替代和/或补充。示例用户设备302还包括总线317,以通信地耦合用户设备302的组件。
用户设备302的示例处理器电路308实例化和/或执行示例电路,包括例如视频编码器电路318、视频帧分割器电路320、视频解码器电路322、视频显示控制器电路324、以及复制器电路326。示例处理器电路308还执行示例机器可读指令(例如,软件),包括例如安装在用户设备302上的(一个或多个)用户应用328,例如视频会议应用330。(一个或多个)示例用户应用328被存储在(一个或多个)存储设备310中。用户设备302的(一个或多个)示例用户输入设备312包括一个或多个相机332,以在(一个或多个)视频会议期间生成用户和周围区域的视频图像。
用户设备302的(一个或多个)示例输出设备314包括显示屏幕334。在一些示例中,显示屏幕334包括触摸面板,它使得用户能够通过用手写笔和/或用户的一个或多个手指或者手触摸显示屏幕334来与显示屏幕334上呈现的数据交互。额外地或者替代地,用户可以经由(一个或多个)用户输入设备312,例如(一个或多个)相机332、键盘、鼠标、触摸板等等,与显示屏幕334上呈现的数据交互。
示例用户设备302包括接口电路336,以经由网络304向其他系统和/或设备(例如,(一个或多个)用户设备306)发送(例如,传输)和/或接收数据(例如,视频比特流数据)。示例接口电路336可以使用互联网协议(例如,互联网语音协议、视频会议协议,等等)与其他设备(例如,(一个或多个)用户设备306)通信以促进(一个或多个)视频会议会话。在一些示例中,接口电路336同步传入和传出的数据,以使得被编码为示例比特流数据的(一个或多个)示例视频帧被以正确的顺序处理。
图3中图示的用户设备302的示例处理器电路308包括示例视频编码器电路318。在例如视频会议期间,视频编码器电路318可以处理(例如,执行图像处理、编码,等等)所生成的视频帧图像数据,并且经由网络304向(一个或多个)用户设备306传输经编码的比特流。示例视频编码器电路318可以基于由示例视频帧分割器电路320生成的分割数据来确定视频帧像素数据的(一个或多个)前景限界区域和(一个或多个)背景限界区域。示例视频编码器电路318还可以基于(一个或多个)前景和背景限界区域确定虚拟瓦片。在本文公开的示例中,(一个或多个)虚拟瓦片是指视频帧的(一个或多个)像素数据区域,该(一个或多个)像素数据区域被包括在(一个或多个)前景限界区域中,但不被包括在(一个或多个)背景限界区域中。示例视频编码器电路318可以处理(例如,视频编码)(一个或多个)虚拟瓦片,基于(一个或多个)前景限界区域和(一个或多个)背景限界区域写入注释区域补充增强信息(annotated regions supplemental enhancement information,ARSEI)消息,将(一个或多个)虚拟瓦片编码为(一个或多个)数据比特流,并且经由网络304将(一个或多个)比特流传输到一个或多个用户设备306。
图3中图示的用户设备302的示例处理器电路308包括视频帧分割器电路320。在一些示例中,视频帧分割器电路320可以从(一个或多个)相机332接收视频帧像素数据,并且对图像进行降尺度以处理比全分辨率图像更少的像素。在一些示例中,视频帧分割器电路320是人工神经网络,它被训练成基于(一个或多个)前景检测模型和(一个或多个)背景检测模型来将像素数据分割成分割掩码。示例视频帧分割器电路320可以生成分割数据,其指示出位于视频帧的(一个或多个)前景区域和(一个或多个)背景区域中的像素数据。
图3中图示的用户设备302的示例处理器电路308包括视频解码器电路322。在一些示例中,视频解码器电路322从一个或多个用户设备306接收比特流数据和注释区域补充增强信息(ARSEI)消息。示例视频解码器电路322可以使用视频编码标准(例如,AVC、HEVC,等等)将比特流解码为视频帧像素数据。在一些示例中,解码的图像数据包括编码的虚拟瓦片和/或编码的全帧视频图像。示例视频解码器电路322可以读取ARSEI消息并且使用ARSEI消息来确定哪些像素数据与(一个或多个)前景区域和(一个或多个)背景区域相关联,哪些像素数据被包括在(一个或多个)虚拟瓦片中,和/或(一个或多个)虚拟瓦片在视频帧中的放置位置(例如,相对于帧的左上角)。在一些示例中,视频解码器电路322将比特流数据存储在DRAM 316中,以便在以后的时间(例如,存储之后1秒)取得来解码。
图3中图示的用户设备302的示例处理器电路308包括视频显示控制器电路324。在一些示例中,视频显示控制器电路324是集成电路,它被包括作为视频信号生成器的一部分或者作为处理器电路308上的独立结构。示例视频显示控制器电路324可以基于从视频解码器电路322接收的像素数据(例如,像素数据的(一个或多个)虚拟瓦片)生成视频信号。由视频显示控制器电路324生成的示例视频信号被发送到显示屏幕334的(一个或多个)栅极扫描驱动器和/或(一个或多个)显示驱动器,以使得显示屏幕334的像素和/或子像素基于生成的视频信号显示像素信息。
图3中图示的用户设备302的示例处理器电路308包括复制器电路326。在一些示例中,复制器电路326可以在存储器(例如,DRAM 316)内生成视频帧图像的拷贝。在一些示例中,视频解码器电路322可以从比特流中解码出初始全帧视频图像。示例初始视频帧可以被视频解码器电路322用作帧内数据(例如,参考帧数据),用于结合视频编码标准(例如,H.264AVC、H.265HVEC,等等)进行运动估计,以便从视频帧数据的流中高效地解码(一个或多个)虚拟瓦片。在一些示例中,复制器电路326可以在存储在易失性存储器(例如,DRAM316)上的存储器缓冲器中生成帧内数据的多个拷贝。示例视频解码器电路322和示例视频显示控制器电路324可以在视频会议期间从存储器缓冲器读取和/或向其写入,以便视频解码器电路322和视频显示控制器电路324都不等待对方完成过程。
在本文公开的示例中,术语“帧内数据”用于描述这样的(一个或多个)视频帧:对于这样的视频帧,该(一个或多个)视频帧的像素数据被使用压缩算法(例如,块匹配算法)编码为(一个或多个)数据比特流。在本文公开的示例中,术语“帧间数据”用于描述这样的(一个或多个)视频帧:对于这样的视频帧,变化的像素数据(例如,运动中的像素和/或对象、(一个或多个)前景区域、(一个或多个)前景限界区域,等等,有时被称为重要像素数据或者与当前帧编码相关的像素数据)被编码到(一个或多个)数据比特流中,带有关联的运动向量,并且未变化的像素数据(例如,静态和/或静止的像素和/或对象、(一个或多个)背景区域、(一个或多个)背景限界区域,等等,有时被称为不重要的像素数据或者与当前帧编码无关的像素数据)被编码以关联的运动向量(0,0)。在一些示例中,对于变化的像素数据和未变化的像素数据编码运动向量。在这样的示例中,运动估计对于变化的像素数据发生,以存储器带宽为代价,运动估计对于未变化的像素数据不发生,并且对于未变化的像素数据(例如,(一个或多个)背景区域、(一个或多个)背景限界区域,等等)的运动向量写入(0,0)。编码技术的这种示例可以减少存储器带宽,是符合标准的,并且可以用一些(例如,所有和/或少于所有)标准视频编码硬件来进行解码。例如,使用运动补偿的编解码器可以将来自帧内数据的像素数据插入到已被指派了(0,0)的(一个或多个)运动向量(例如,被丢弃,被忽略,等等)的帧间数据的区域中。一些示例帧间数据可以参考视频数据序列中的先前帧(例如,“P帧”),以填补具有(一个或多个)(0,0)运动向量的数据区域(例如,被丢弃的区域,被忽略的区域,等等)。其他示例帧间数据可以参考视频数据序列中的先前帧和未来帧(例如,双向或者“B帧”),以填补具有(一个或多个)(0,0)运动向量的数据区域(例如,被丢弃的区域,被忽略的区域,等等)。在一些情况中,帧间数据可以直接参考帧内数据,或者帧间数据可以参考已经重建的帧的其他帧间数据。
图4是包括图3的示例用户设备302的示例系统400的框图,用于将视频的图像编码成比特流。在示例图4中,用户设备302被构造为根据本公开的教导,确定与视频帧相对应的分割数据,基于分割数据确定(一个或多个)前景限界区域和(一个或多个)背景限界区域,基于限界区域确定和编码视频帧的虚拟瓦片,写入具有指示出(一个或多个)前景限界区域和(一个或多个)背景限界区域的字段代码标签的ARSEI消息,并且传输经编码的比特流和ARSEI消息。图4的示例用户设备302可以通过诸如中央处理器单元之类的处理器电路308执行指令来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。额外地或者替代地,图4的用户设备302可以由被构造为执行与指令相对应的操作的ASIC或FPGA来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。应当理解,图4的一些或所有电路可以在相同或不同时间被实例化。一些或所有电路可以例如在在硬件上同时执行和/或在硬件上串行执行的一个或多个线程中被实例化。此外,在一些示例中,图4的一些或所有电路可以由在微处理器上执行的一个或多个虚拟机和/或容器来实现。
在一些示例中,(一个或多个)用户设备302包括视频帧分割器电路320,如图4所示。示例视频帧分割器电路320包括视频预处理器电路402、前景检测器电路404、背景检测器电路406、以及分割数据确定器电路408。示例用户设备302还包括模型数据库410和模板数据库412。示例模型数据库410为由视频帧分割器电路320实现的人工神经网络存储前景检测模型414和背景检测模型416。示例模板数据库412存储虚拟背景模板418,用户可以选择这些模板来用于在视频会议期间替换视频帧的(一个或多个)背景区域。
在图4中图示的示例中,视频预处理器电路402对(一个或多个)相机332输出的视频流信号进行采样。在一些示例中,视频预处理器电路402对视频流信号进行降采样和/或降低其帧速率。示例视频预处理器电路402生成经处理的(一个或多个)视频帧作为采样的结果。经处理的(一个或多个)视频帧可以被存储在示例模型数据库410中。在一些示例中,视频帧分割器电路320包括模型数据库410。在其他示例中,模型数据库410位于视频帧分割器电路320的外部,在视频帧分割器电路320可访问的位置,如图4所示。
示例前景检测器电路404检测经处理的视频帧的(一个或多个)前景区域中的像素数据。在本文公开的示例中,前景区域是视频帧的一部分(例如,矩形区域),该部分包括用户和视频帧的一些背景部分。在一些示例中,(一个或多个)相机332在(一个或多个)相同视频帧中捕捉用户设备302的多于一个用户的(一个或多个)视频图像。在这样的示例中,前景检测器电路404检测与(一个或多个)视频帧中的用户的数目相对应的前景区域的数目。
在图4中图示的示例中,前景检测器电路404执行一个或多个神经网络模型来检测各个经处理的视频帧的(一个或多个)前景区域中的像素数据。例如,图4的示例前景检测器电路404执行一个或多个前景检测模型414以检测(一个或多个)视频帧的(一个或多个)区域(例如,(一个或多个)矩形区域)中的像素数据,该(一个或多个)区域包括(一个或多个)用户和(一个或多个)视频帧的(一个或多个)背景区域的一部分。在一些示例中,(一个或多个)前景检测模型414是作为神经网络训练的结果生成的。在图4的示例中,(一个或多个)前景检测模型414被存储在模型数据库410中。
示例背景检测器电路406检测经处理的视频帧的(一个或多个)背景区域中的像素数据。在本文公开的示例中,背景区域是视频帧的一个或多个部分,这些部分包括用户不在其中的视频帧的静态和/或背景区域。在图4的示例中,背景检测器电路406执行一个或多个神经网络模型以检测各个经预处理的视频帧的(一个或多个)背景区域中的像素数据。例如,图4的示例背景检测器电路406执行一个或多个背景检测模型416以检测(一个或多个)视频帧中的不包括(一个或多个)视频帧中的(一个或多个)用户的(一个或多个)区域中的像素数据。从而,示例背景检测器电路406识别(一个或多个)视频帧的(一个或多个)部分,这些部分包括与(一个或多个)用户后面的区域相对应的像素数据。在一些示例中,背景检测器电路406检测(一个或多个)背景区域中与(一个或多个)前景区域重叠的像素数据。在一些示例中,(一个或多个)背景检测模型416是作为神经网络训练的结果生成的。在图4的示例中,(一个或多个)背景检测模型416被存储在模型数据库410中。
示例分割数据确定器电路408确定与由前景检测器电路404和背景检测器电路406检测到的(一个或多个)前景区域和(一个或多个)背景区域中的像素数据相对应的分割数据(例如,元数据)。示例前景检测器电路404和示例背景检测器电路406分别将处于(一个或多个)前景区域和(一个或多个)背景区域的像素数据发送到分割数据确定器电路408。在一些示例中,分割数据确定器电路408对与像素数据在视频帧中所处的(一个或多个)区域相对应的像素数据应用(一个或多个)分割掩码。在这样的示例中,分割掩码识别、标记、指示等等发送到视频编码器电路318的像素数据属于哪个(哪些)区域(例如,前景或者背景)。
图4中图示的用户设备302的示例视频编码器电路318基于由分割数据确定器电路408生成的分割数据确定(一个或多个)前景限界区域和(一个或多个)背景限界区域。在图4中示出了在示例视频会议期间描绘关联的本地用户设备302的用户的示例视频帧图像420。示例视频帧图像420被示出来以视频帧图像420中的实线和虚线的形式表示由视频编码器电路318确定的元数据(例如,(一个或多个)前景限界区域422和(一个或多个)背景限界区域424)。示例前景限界区域422在示例视频帧420中被图示为包围用户设备302的用户的实线矩形。示例背景限界区域424在示例视频帧420中被图示为围绕视频帧的不包括用户设备302的用户的部分的虚线矩形。
在一些示例中,视频编码器电路318可以确定与由分割数据指示的(一个或多个)前景区域相对应的像素数据适合于400像素乘400像素的限界区域(例如,矩形限界框)内,该限界区域的左上角位于像素(480,0)(例如,相对于视频帧的左上角的原点),并且该限界区域属于“前景”类型(例如,前景限界区域422)。在一些示例中,视频编码器电路318可以确定与由分割数据指示的(一个或多个)背景区域相对应的像素数据适合于100像素乘300像素的限界区域(例如,背景限界框)内,该限界区域的左上角位于像素(480,0)(例如,相对于视频帧的左上角的原点),并且该限界区域属于“背景”标签和/或类型(例如,背景限界区域424)。在这些示例中,背景限界区域424是与前景限界区域422重叠的。在一些示例中,多个背景限界区域424可以由视频编码器电路318检测到,这些背景限界区域与前景限界区域422重叠。在本文公开的示例中,视频帧中(一个或多个)背景限界区域424不与(一个或多个)前景限界区域422重叠的(一个或多个)区域被称为虚拟瓦片。
在图4的图示示例中,视频编码器电路318通过解析(一个或多个)前景限界区域422和(一个或多个)背景限界区域424并且确定两个或更多个限界区域中的哪些区域不重叠来确定虚拟瓦片。在一些示例中,虚拟瓦片包括表示用户设备302的用户的视频帧像素数据。虽然在示例视频帧图像420中图示了四个示例背景限界区域424,但是可以由视频编码器电路318确定不同大小的更多背景限界区域以细化虚拟瓦片,以使得虚拟瓦片包含比示例视频帧图像420中所示出的更少的背景区域像素。在一些示例中,视频编码器电路318确定(一个或多个)虚拟瓦片中的像素数据和/或块(例如,宏块、编码树单元,等等)的运动向量。示例运动向量被写入到比特流中,并且对应于以比特形式压缩的像素数据和/或块(例如,宏块,编码树单元,等等)。在一些示例中,视频编码器电路318为不被包括在(一个或多个)虚拟瓦片中的像素数据和/或像素数据块(例如,宏块、编码树单元,等等)写入(0,0)的运动向量。
在一些示例中,视频编码器电路318从用户设备302的DRAM 316读取和/或向其写入。示例视频编码器电路318可将从视频帧分割器电路320接收的视频帧像素数据的像素数据存储在DRAM 316中,以便未来处理。在一些示例中,为了相对于处理和/或传输全帧像素数据减少所消耗的存储器带宽,视频编码器电路318可以读取和/或写入(一个或多个)虚拟瓦片中的像素数据以处理(例如,编码)和/或传输排除(一个或多个)虚拟瓦片之外的像素数据。例如,(一个或多个)虚拟瓦片中的像素数据可包括整个视频帧像素数据的三分之一,视频帧像素数据可能具有1920x1080像素的分辨率,并且视频帧像素数据可能是以每秒30帧的帧速率生成的。在这样的示例中,如果视频编码器电路318只对视频帧像素数据的(一个或多个)虚拟瓦片进行编码,则示例用户设备302(图3和图4)可以节省60MBps的存储器带宽。在一些示例中,视频编码器电路318从DRAM316读取虚拟瓦片数据,对虚拟瓦片的像素数据进行编码,并且写入包括字段代码(例如,“标签”字段代码)的ARSEI消息,这些字段代码识别出哪些像素在(一个或多个)前景限界区域中,以及哪些像素在(一个或多个)背景限界区域中。在一些示例中,ARSEI消息包括大小数据(例如,像素宽度和像素高度)、位置数据(例如,视频帧中的左上角(x,y)坐标)、或者与(一个或多个)前景限界区域和(一个或多个)背景限界区域相对应的标签数据(例如,前景和/或背景)。示例视频编码器电路318向示例接口电路336提供比特流和/或(一个或多个)ARSEI消息以便传输。示例接口电路336可以经由网络304使用一种或多种协议(例如,语音互联网协议)将比特流和ARSEI消息传输到一个或多个用户设备306。
在一些示例中,用户设备302的用户选择虚拟背景来替换由视频编码器电路318确定的(一个或多个)背景限界区域。由用户选择的示例虚拟背景可以是拍摄的图像、计算机生成的图像、纯色、颜色的图案,等等。在一些示例中,用户选择的背景替换是(一个或多个)相机332捕捉的(一个或多个)视频帧中的背景的模糊版本,或者是先前提到的(一个或多个)虚拟背景选择的模糊版本。在一些示例中,由用户选择的虚拟背景的标识符被写入到(一个或多个)补充增强信息(supplemental enhancement information,SEI)消息的字段代码中。在这样的示例中,(一个或多个)SEI消息可以被(一个或多个)用户设备306的视频解码器电路322读取并且用于用由(一个或多个)SEI消息指示的虚拟背景替换(一个或多个)背景限界区域,如果相同的虚拟背景被可用地存储在(一个或多个)用户设备306上的数据库中的话。示例视频编码器电路318向示例接口电路336提供(一个或多个)SEI消息以便传输。在一些示例中,接口电路336经由网络304将(一个或多个)SEI消息与关联的比特流和(一个或多个)ARSEI消息发送(例如,传输)到(一个或多个)用户设备306。
在一些示例中,用户从存储在模板数据库412中的虚拟背景模板418的数据存储中选择替换背景。在一些情况中,视频编码器电路318包括模板数据库412。在其他示例中,模板数据库412位于视频编码器电路318的外部,在视频编码器电路318可访问的位置,如图4所示。在一些示例中,模型数据库410和模板数据库412是在同一数据库中实现的。
图5是包括如图3中所示的用来对视频比特流解码的示例用户设备306的示例系统500的框图。例如,系统500被构造为基于(一个或多个)ARSEI消息确定编码的视频帧数据的(一个或多个)前景限界区域和(一个或多个)背景限界区域,确定视频帧像素数据的虚拟瓦片,从比特流解码出视频帧的(一个或多个)虚拟瓦片的相关部分,从和/或向存储器缓冲器读取和/或写入帧内数据和帧间数据,并且生成经解码的视频帧的视频信号来用于显示。图5的示例用户设备306可以通过诸如中央处理器单元之类的处理器电路308执行指令来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。额外地或者替代地,图5的示例用户设备306可以由被构造为执行与指令相对应的操作的ASIC或FPGA来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。应当理解,图5的一些或所有电路可以在相同或不同时间被实例化。一些或所有电路可以例如在在硬件上同时执行和/或在硬件上串行执行的一个或多个线程中被实例化。此外,在一些示例中,图5的一些或所有电路可以由在微处理器上执行的一个或多个虚拟机和/或容器来实现。
在一些示例中,用户设备306包括视频解码器电路322、DRAM 316、视频显示控制器电路324、复制器电路326、显示屏幕334、以及接口电路336,如图3所示。图5中图示的示例用户设备306也可包括与图3中的用户设备302中图示的那些相同和/或功能上等同的电路、存储器、设备,等等,以在编码阶段期间将视频的图像编码到比特流中。类似地,示例用户设备302可包括与图5中的用户设备306中图示的那些相同和/或功能上等同的电路、存储器、设备,等等,以在解码阶段期间对比特流解码。图5中图示的示例系统500表示用户设备306从图3和/或4中图示的示例系统300和/或400的示例用户设备302和/或多个用户设备302(例如,15个用户设备和/或任何其他数目的用户设备)接收编码的比特流数据和(一个或多个)ARSEI消息。
在一些示例中,图5中图示的DRAM 316包括缓冲池502,该缓冲池存储帧内数据和帧间数据(例如,更新后的帧内数据)的动态缓冲。图5中图示的示例视频显示控制器电路324包括视频后处理器电路504,用于对经解码的(一个或多个)视频帧进行降尺度和组构以形成由显示屏幕334显示的(一个或多个)视频帧的网格。示例用户设备306还包括数据库506,它包括虚拟背景模板508,该模板可以全部或部分地与存储在(一个或多个)用户设备302上的虚拟背景模板418相匹配。
图5中图示的示例接口电路336从(一个或多个)用户设备302接收数据的(一个或多个)比特流和(一个或多个)ARSEI消息。在一些示例中,接口电路336从用户设备302接收与(一个或多个)比特流相关联的(一个或多个)SEI消息。(一个或多个)示例SEI消息包括指示出由(一个或多个)用户设备302的用户选择的(一个或多个)虚拟背景模板的字段代码。示例接口电路336向图5的示例视频解码器电路322提供比特流、(一个或多个)ARSEI消息和/或(一个或多个)SEI消息。
在一些示例中,视频解码器电路322基于与(一个或多个)ARSEI消息相关联的大小数据、位置数据和标签数据来确定比特流的(一个或多个)前景限界区域(例如,图4的前景限界区域422)和(一个或多个)背景限界区域(例如,图4的背景限界区域424)。视频解码器电路322通过确定(一个或多个)前景限界区域的哪些编码像素数据不与(一个或多个)背景限界区域的编码像素数据重叠来确定编码视频帧像素数据的(一个或多个)虚拟瓦片。然后,视频解码器电路322可以从比特流中解码(一个或多个)虚拟瓦片,同时丢弃与(一个或多个)虚拟瓦片外的像素数据相对应的比特流数据。例如,(一个或多个)虚拟瓦片的编码像素数据可包括整个编码视频帧像素数据的三分之一,编码视频帧像素数据可具有1920x1080像素的分辨率,视频帧像素数据可被以每秒30帧的帧速率显示,并且编码视频帧像素数据的十六个不同的比特流可以被示例用户设备306同时接收(例如,在+/-1毫秒内)。在这样的示例中,如果视频解码器电路318对编码视频帧像素数据的16个比特流的虚拟瓦片解码,则示例用户设备306(图3-图5)可以节省1GBps的存储器带宽。在一些示例中,视频解码器电路322对具有非零运动向量的比特流数据解码并且丢弃具有(0,0)运动向量的比特流数据。在这样的示例中,比特流数据被解析,而不是(一个或多个)ARSEI消息,这导致更大的处理功率和存储器带宽使用。
图5的示例视频解码器电路322对传入的比特流数据的(一个或多个)虚拟瓦片进行解码。在一些示例中,从比特流解码的初始视频帧的(一个或多个)虚拟瓦片被用(一个或多个)用户设备302的用户选择的虚拟背景来重建。在一些情况中,得到解码和重建的初始视频帧被称为帧内数据(例如,参考帧数据)。在本文公开的示例中,术语“初始”视频帧是指从传入的编码视频帧像素数据的新比特流解码的第一个视频帧。
在一些示例中,用于重建帧内数据的虚拟背景是由视频解码器电路322接收的示例SEI消息中编码的标签字段确定的。在一些示例中,视频解码器电路322从存储在模板数据库506中的虚拟背景模板508的数据存储中读取虚拟背景。在一些示例中,视频解码器电路322包括模板数据库506。在其他示例中,模板数据库506位于视频解码器电路322的外部,在视频解码器电路322可访问的位置,如图5所示。在一些示例中,由用户设备302的用户选择的虚拟背景在模板数据库506中不可用。在这样的示例中,比特流可包括虚拟背景模板的编码帧,用于存储在模板数据库506或者一些其他存储位置中。
示例视频解码器电路322对从发送自(一个或多个)用户设备302的比特流中解码的初始视频帧像素数据的(一个或多个)虚拟瓦片进行解码。示例视频解码器电路322重建帧内数据,包括初始解码的(一个或多个)虚拟瓦片和选定的虚拟背景。示例视频解码器电路322将帧内数据存储在缓冲池502中。示例复制器电路326在缓冲池502中制作帧内数据的多个拷贝。在一些示例中,复制器电路326被集成在处理器电路308上。在其他示例中,复制器电路326形成于包括DRAM 316的同一集成电路上。在其他示例中,DRAM 316包括实现创建被保存在存储器和/或缓冲池502中的数据的拷贝的功能的电路。
示例用户设备306包括视频显示控制器电路324,其从缓冲池502中读取视频帧图像数据。示例视频显示控制器电路324也可以将视频帧像素数据写回到缓冲池502中。在一些示例中,视频解码器电路322和视频显示控制器电路324同时和/或在基本相似的时间(例如,在+/-1毫秒内)向缓冲池502写入和从其读取帧内数据和/或经修改的帧内数据的拷贝。下面描述对视频解码器电路322和视频显示控制器电路324从缓冲池502读取和向其写入的处理顺序的更详细的说明。
在一些示例中,视频显示控制器电路324生成与从缓冲池502取回的像素数据相对应的视频信号。示例视频显示控制器电路324包括视频后处理器电路504,以对存储在缓冲池502中的(一个或多个)视频帧进行采样。在一些示例中,视频后处理器电路504对视频帧像素数据进行下采样和/或降低其帧速率。视频后处理器电路504生成(一个或多个)经处理的视频帧作为采样的结果。在一些示例中,视频后处理器电路504将(一个或多个)经处理的视频帧组构成视频帧的网格(例如,4帧乘4帧),如示例显示网格510中所示。组构的视频帧像素数据的网格被发送到示例显示屏幕334,以根据从示例视频后处理器电路504发送的像素数据经由像素和子像素发出光。
图6示出了示例时间线600,在此期间,视频帧被从图5中图示的位于DRAM 316中的缓冲池502读取并且被写入到其中。图6中图示的示例时间线600示出了缓冲池502在三个不同的时间实例(t0、t1和t2)的三种不同状态(602、604和606)。在一些示例中,实例t0、t1和t2之间的时间差取决于视频会议应用的视频帧速率(例如,实例之间的+/-30毫秒)。DRAM 316的示例状态602图示了视频解码器电路322在时间t0将帧内数据608存储在缓冲池502中。在基本相似的时间(例如,+/-10毫秒),复制器电路326(图3和图5)生成示例帧内数据608的拷贝,并且视频显示控制器电路324从缓冲池502读取示例帧内数据608的实例。
图6中图示的DRAM 316的示例状态604显示了视频解码器电路322在时间t1更新缓冲池502中的帧内数据608的拷贝。在示例状态604,视频解码器电路322用当前解码的视频帧的虚拟瓦片替换帧内数据608的虚拟瓦片,以在缓冲池502中创建帧间数据608a。在本文公开的示例中,帧间数据是指依赖于另一帧(比如帧内数据(例如,参考帧数据))来进行运动估计的帧数据。示例帧间数据可以通过更新帧内数据的或者已经存储在缓冲池502中的帧间数据的(一个或多个)虚拟瓦片而生成。在基本相似的时间(例如,+/-10毫秒),视频显示控制器电路324在与帧内数据608相对应的视频信号被生成并且发送到显示屏幕334之后,将帧内数据608写回到缓冲池502中(图3和图5)。
图6中图示的DRAM 316的示例状态606显示了视频解码器电路322在时间t2更新缓冲池502队列中的下一帧数据(例如,帧内数据608的拷贝或者帧间数据(例如,帧间数据608a))。在示例状态606,视频解码器电路322用当前解码视频帧的虚拟瓦片替换缓冲池502队列中的下一帧数据的(一个或多个)虚拟瓦片,以在缓冲池502中创建帧间数据608b。在基本相似的时间(例如,+/-10毫秒),视频显示控制器电路324从缓冲池502中读取先前更新的示例帧间数据608a。
在图6中未示出的下一个时间状态中,示例视频解码器电路322被构造为用(一个或多个)当前解码的虚拟瓦片更新缓冲池502中的下一个排队的帧数据,并且视频显示控制器电路324被构造为将示例帧间数据608a写回到缓冲池502中以进行后续更新。图6中图示的示例时间线600一直持续直到视频会议结束为止,或者直到将帧数据传输到示例视频解码器电路322的用户设备302(图3-图5)改变所选择的虚拟背景模板为止。如果示例用户设备302在视频会议期间选择新的虚拟背景,则由视频解码器电路322生成新的帧内数据,并且示例过程600在新的初始时间实例t0处重新开始。
图7图示了在图3和图5中图示的示例用户设备306的两种不同操作模式中的视频帧网格输出显示的示例表示700。图7中图示了示例标准视频帧输出702,以示出使用示例系统300和/或示例系统500的显示视频帧的示例网格。图7中图示了示例低功率视频帧输出704,以示出当示例用户设备302和/或示例用户设备306以等于或低于代表有限剩余电池电力(例如,低电池电力或者临界低电池电力)的阈值电池电力(例如,10%电池寿命)操作时显示的视频帧的示例网格。在一些示例中,低功率模式将导致视频帧图像的显示,其中虚拟背景模板用白色背景替换。
在一些示例中,图3、图4和/或图5的用户设备302在电池电力处于或低于低功率阈值(例如,10%电池电力)的情况下操作。在这种情况下,示例视频编码器电路318编码与降尺度的视频帧相对应的视频帧像素数据。在一些示例中,视频编码器电路318生成与(一个或多个)前景限界区域中的视频帧数据而不是全帧数据相对应的比特流数据和(一个或多个)ARSEI消息。在这样的示例中,视频编码器电路318不生成与不是也在(一个或多个)前景限界区域的(一个或多个)背景限界区域有关的比特流。编码的比特流和关联的(一个或多个)ARSEI消息仍然是参考全帧图像大小来处理的。例如,虚拟瓦片仍将被显示在帧中,其放置与标准功率模式中的放置相同,但具有白色背景。在一些低功率模式示例中,视频编码器电路318不生成指出将在视频帧显示中使用的虚拟背景的(一个或多个)SEI消息。在低功率模式中操作视频编码器电路318可以节省存储器带宽和处理功率,因为生成和传输的(一个或多个)ARSEI消息与(一个或多个)前景限界区域而不是全视频帧相关联。
在一些示例中,图3、图4和/或图5的用户设备306在电池电力处于或低于示例低功率阈值的情况下操作。在这种情况下,示例视频解码器电路322不生成具有由示例用户设备302的用户选择的虚拟背景的帧内数据。相反,帧内数据是由解码的(一个或多个)虚拟瓦片与白色背景构成的。由于在低功率节省模式和/或标准模式中发送的(一个或多个)ARSEI消息包括相对于全帧的像素位置数据,所以低功率模式的(一个或多个)示例虚拟瓦片被放置在与标准模式的(一个或多个)虚拟瓦片相同的像素坐标处。在低功率模式中操作示例视频解码器电路322节省了存储器带宽和处理功率,因为视频解码器电路322不在每个解码实例中为全帧解析(一个或多个)ARSEI消息,视频解码器电路322不构建具有虚拟背景的帧内数据,并且视频解码器电路322在更新缓冲池502中的帧内数据和/或帧间数据时不参考示例虚拟背景模板508。
在一些示例中,该装置包括用于对视频编码的装置。例如,用于对视频编码的装置可以由视频编码器电路318实现。在一些示例中,视频编码器电路318可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,视频编码器电路318可以通过图12的示例通用处理器电路1200执行例如由至少图8的块810-824实现的机器可执行指令来实例化。在一些示例中,视频编码器电路318可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,视频编码器电路318可以由硬件、软件和/或固件的任何其他组合来实例化。例如,视频编码器电路318可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,该装置包括用于确定(一个或多个)视频帧的分割数据的装置。例如,用于确定(一个或多个)视频帧的分割数据的装置可以由视频帧分割器电路320实现。在一些示例中,视频帧分割器电路320可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,视频帧分割器电路320可以通过图12的示例通用处理器电路1200执行例如由至少图8的块802-808实现的机器可执行指令来实例化。在一些示例中,视频帧分割器电路320可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,视频帧分割器电路320可以由硬件、软件和/或固件的任何其他组合来实例化。例如,视频帧分割器电路320可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,该装置包括用于对视频数据(例如,比特流)解码的装置。例如,用于对视频数据解码的装置可以由视频解码器电路322实现。在一些示例中,视频解码器电路322可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,视频解码器电路322可以通过图12的示例通用处理器电路1200执行例如由至少图9的块902-914和926和图10的块1002-1006和1010-1014实现的机器可执行指令来实例化。在一些示例中,视频解码器电路322可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,视频解码器电路322可以由硬件、软件和/或固件的任何其他组合来实例化。例如,视频解码器电路322可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,该装置包括用于生成与解码的视频帧数据相对应的视频信号的装置。例如,用于生成视频信号的装置可以由视频显示控制器电路324实现。在一些示例中,视频显示控制器电路324可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,视频显示控制器电路324可以通过图12的示例通用处理器电路1200执行例如由至少图9的块916、922和924实现的机器可执行指令来实例化。在一些示例中,视频显示控制器电路324可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,视频显示控制器电路324可以由硬件、软件和/或固件的任何其他组合来实例化。例如,视频显示控制器电路324可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,该装置包括用于在缓冲池中复制帧内数据的装置。例如,用于复制帧内数据的装置可以由复制器电路326实现。在一些示例中,复制器电路326可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,复制器电路326可以通过图12的示例通用处理器电路1200执行例如由至少图10的块1008实现的机器可执行指令来实例化。在一些示例中,复制器电路326可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,复制器电路326可以由硬件、软件和/或固件的任何其他组合来实例化。例如,复制器电路326可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,该装置包括用于对捕捉的视频帧像素数据进行降尺度的装置。例如,用于降尺度的装置可以由视频预处理器电路402实现。在一些示例中,视频预处理器电路402可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,视频预处理器电路402可以通过图12的示例通用处理器电路1200执行例如由至少图8的块802和804实现的机器可执行指令来实例化。在一些示例中,视频预处理器电路402可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,视频预处理器电路402可以由硬件、软件和/或固件的任何其他组合来实例化。例如,视频预处理器电路402可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,该装置包括用于检测视频帧像素数据的(一个或多个)前景部分的装置。例如,用于检测视频帧像素数据的(一个或多个)前景部分的装置可以由前景检测器电路404实现。在一些示例中,前景检测器电路404可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,前景检测器电路404可以通过图12的示例通用处理器电路1200执行例如由至少图8的块806实现的机器可执行指令来实例化。在一些示例中,前景检测器电路404可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,前景检测器电路404可以由硬件、软件和/或固件的任何其他组合来实例化。例如,前景检测器电路404可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,该装置包括用于检测视频帧像素数据的(一个或多个)背景部分的装置。例如,用于检测视频帧像素数据的(一个或多个)背景部分的装置可以由背景检测器电路406实现。在一些示例中,背景检测器电路406可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,背景检测器电路406可以通过图12的示例通用处理器电路1200执行例如由至少图8的块806实现的机器可执行指令来实例化。在一些示例中,背景检测器电路406可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,背景检测器电路406可以由硬件、软件和/或固件的任何其他组合来实例化。例如,背景检测器电路406可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,该装置包括用于基于视频帧像素数据的(一个或多个)前景部分和(一个或多个)背景部分生成分割数据的装置。例如,用于生成分割数据的装置可以由分割数据确定器电路408实现。在一些示例中,分割数据确定器电路408可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,分割数据确定器电路408可以通过图12的示例通用处理器电路1200执行例如由至少图8的块808实现的机器可执行指令来实例化。在一些示例中,分割数据确定器电路408可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,分割数据确定器电路408可以由硬件、软件和/或固件的任何其他组合来实例化。例如,分割数据确定器电路408可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,该装置包括用于对解码的视频帧像素数据进行降尺度和组构的装置。例如,用于降尺度和组构的装置可以由视频后处理器电路504实现。在一些示例中,视频后处理器电路504可以由处理器电路来实例化,例如图11的示例处理器电路1112。例如,视频后处理器电路504可以通过图12的示例通用处理器电路1200执行例如由至少图9的块918和920实现的机器可执行指令来实例化。在一些示例中,视频后处理器电路504可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图13的ASIC或FPGA电路1300来实现。额外地或者替代地,视频后处理器电路504可以由硬件、软件和/或固件的任何其他组合来实例化。例如,视频后处理器电路504可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
虽然在图4和/或图5中图示了实现图3的用户设备302和/或(一个或多个)用户设备306的示例方式,但图4和/或图5中图示的元件、过程和/或设备中的一个或多个可被组合、划分、重安排、省略、消除、和/或以任何其他方式来实现。另外,示例视频编码器电路318、示例视频帧分割器电路320、示例视频解码器电路322、示例视频显示控制器电路324、示例复制器电路326、示例视频预处理器电路402、示例前景检测器电路404、示例背景检测器电路406、示例分割数据确定器电路408、示例视频后处理器电路504,和/或更概括而言,图3的示例用户设备302和/或(一个或多个)示例用户设备306,可以由硬件单独实现,或者由硬件与软件和/或固件相结合来实现。从而,例如,示例视频编码器电路318、示例视频帧分割器电路320、示例视频解码器电路322、示例视频显示控制器电路324、示例复制器电路326、示例视频预处理器电路402、示例前景检测器电路404、示例背景检测器电路406、示例分割数据确定器电路408、示例视频后处理器电路504和/或更概括而言图3的示例用户设备302和/或(一个或多个)示例用户设备306中的任何一者,可以由处理器电路、(一个或多个)模拟电路、(一个或多个)数字电路、(一个或多个)逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程微控制器、(一个或多个)图形处理单元(GPU)、(一个或多个)数字信号处理器(DSP)、(一个或多个)专用集成电路(ASIC)、(一个或多个)可编程逻辑器件(programmable logic device,PLD)和/或(一个或多个)现场可编程逻辑器件(fieldprogrammable logic device,FPLD)(例如现场可编程门阵列(FPGA))来实现。此外,图3的示例用户设备302和/或(一个或多个)示例用户设备306可包括除了图4和/或图5中所示的那些以外或者取代图4和/或图5中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备的任一者或所有。
代表用于实现图3的用户设备302和/或(一个或多个)用户设备306的示例硬件逻辑电路、机器可读指令、硬件实现状态机和/或其任意组合的流程图在图8、图9和图10中示出。机器可读指令可以是供处理器电路执行的一个或多个可执行程序或者可执行程序的(一个或多个)部分,所述处理器电路例如是下文联系图11论述的示例处理器平台1100中所示的处理器电路1112和/或下文联系图12和/或图13论述的示例处理器电路。该(一个或多个)程序可以体现在存储于一个或多个非暂态计算机可读存储介质上的软件中,所述介质例如是致密盘(compact disk,CD)、软盘、硬盘驱动器(hard disk drive,HDD)、固态驱动器(solid-state drive,SSD)、数字多功能盘(digital versatile disk,DVD)、蓝光盘、易失性存储器(例如,任何类型的随机访问存储器(Random Access Memory,RAM),等等)或者非易失性存储器(例如,电可擦除可编程只读存储器(electrically erasable programmableread-only memory,EEPROM)、闪存、HDD、SSD,等等),与位于一个或多个硬件设备中的处理器电路相关联,但该(一个或多个)程序的整体和/或其一部分或者也可以由除了处理器电路以外的一个或多个硬件设备执行和/或体现在固件或专用硬件中。机器可读指令可以分布在多个硬件设备上和/或由两个或更多个硬件设备(例如,服务器和客户端硬件设备)执行。例如,客户端硬件设备可以由端点客户端硬件设备(例如,与用户相关联的硬件设备)或中间客户端硬件设备(例如,可促进服务器和端点客户端硬件设备之间的通信的无线电接入网络(radio access network,RAN)网关)实现。类似地,非暂态计算机可读存储介质可包括位于一个或多个硬件设备中的一个或多个介质。另外,虽然是参考图8、图9和图10中图示的流程图来描述(一个或多个)示例程序的,但可替代地使用实现示例用户设备302和/或(一个或多个)示例用户设备306的许多其他方法。例如,块的执行顺序可被改变,和/或描述的块中的一些可被改变、消除或者组合。额外地或者替代地,任何或所有块可由被构造为执行相应的操作而不执行软件或固件的一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现。处理器电路可以分布在不同的网络位置中和/或在单个机器中的一个或多个硬件设备(例如,单核处理器(例如,单核中央处理器单元(CPU))、多核处理器(例如,多核CPU),等等)、分布在服务器机架的多个服务器上的多个处理器、分布在一个或多个服务器机架上的多个处理器、位于同一封装中(例如,同一集成电路(IC)封装或者两个或更多个单独的外壳中,等等)的CPU和/或FPGA的本地。
可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等等中的一种或多种格式来存储本文描述的机器可读指令。本文描述的机器可读指令可被存储为可被利用来创建、制造和/或产生机器可执行指令的数据或数据结构(例如,存储为指令的部分、代码、代码的表示,等等)。例如,机器可读指令可被分段并被存储在位于网络或者网络集合的相同或不同位置的一个或多个存储设备和/或计算设备(例如,服务器)上(例如,在云中,在边缘设备中,等等)。机器可读指令可要求安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重指派、编译等等中的一个或多个,以便使得它们可被计算设备和/或其他机器直接可读、可解释和/或可执行。例如,机器可读指令可被存储为多个部分,这些部分被单独压缩、加密和/或存储在分开的计算设备上,其中这些部分当被解密、解压缩和/或组合时,形成实现可一起形成例如本文所述那种的程序的一个或多个操作的一组机器可执行指令。
在另一示例中,机器可读指令可被存储在如下状态中:在该状态中,它们可被处理器电路读取,但要求添加库(例如,动态链接库(dynamic link library,DLL))、软件开发套件(software development kit,SDK)、应用编程接口(application programminginterface,API)等等,以便在特定的计算设备或其他设备上执行这些机器可读指令。在另一示例中,在机器可读指令和/或相应的(一个或多个)程序可被全部或部分执行之前,机器可读指令可能需要被配置(例如,存储设置、输入数据、记录网络地址,等等)。从而,本文使用的机器可读介质可包括机器可读指令和/或(一个或多个)程序,无论这些机器可读指令和/或(一个或多个)程序在被存储时或以其他方式在休息或在途时的特定格式或状态如何。
本文描述的机器可读指令可以由任何过去、当前或者未来的指令语言、脚本语言、编程语言等等来表示。例如,可以利用以下语言中的任何一种来表示机器可读指令:C、C++、Java、C#、Perl、Python、JavaScript、超本文标记语言(HyperText Markup Language,HTML)、结构化查询语言(Structured Query Language,SQL)、Swift,等等。
如上所述,可利用存储在一个或多个非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图8、图9和图10的示例操作,所述介质例如是光存储设备、磁存储设备、HDD、闪存、只读存储器(read-only memory,ROM)、CD、DVD、缓存、任何类型的RAM、寄存器、和/或其中信息可被存储任何持续时间(例如,存储较长时间段、永久存储、短暂存储、用于临时缓冲、和/或用于信息的缓存)的任何其他存储设备或存储盘。如本文所使用的,术语非暂态计算机可读介质和非暂态计算机可读存储介质被明确定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号和排除传输介质。
“包括”和“包含”(以及其所有形式和时态)在本文中被用作开端式术语。从而,每当权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、具有,等等)作为前序部分或者在任何种类的权利要求记载中使用时,要理解,额外的元素、术语等等可存在,而不落在相应权利要求或记载的范围之外。如本文所使用的,当短语“至少”在例如权利要求的前序部分中被用作过渡术语时,它是开端的,与术语“包括”和“包含”是开端的方式一样。术语“和/或”当例如被以比如A、B和/或C这样的形式使用时,指的是A、B、C的任意组合或子集,例如(1)A单独,
(2)B单独,(3)C单独,(4)A与B,(5)A与C,(6)B与C,或者(7)A与B以及与C。就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“A和B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。类似地,就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“A或B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“A和B中的至少一者”打算指包括以下各项中的任何一者的实现方式:
(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。类似地,就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“A或B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。
如本文所使用的,单数指代(例如,“一”、“第一”、“第二”,等等)并不排除多数。如本文所使用的,术语“一”对象指的是一个或多个该对象。术语“一”、“一个或多个”和“至少一个”在本文中是可互换使用的。此外,虽然是单独列出的,但多个手段、元素或方法动作可由例如同一实体或对象来实现。此外,虽然个体特征可被包括在不同的示例或权利要求中,但它们可能可被组合,并且包括在不同的示例或权利要求中并不暗示着特征的组合是不可行的和/或不是有利的。
图8是代表了示例机器可读指令和/或示例操作800的流程图,这些示例机器可读指令和/或示例操作800可由用户设备(例如,图3-图5的用户设备302)的处理器电路执行和/或实例化,用来确定(一个或多个)视频帧的(一个或多个)虚拟瓦片并且将其编码为(一个或多个)比特流以传输到一个或多个其他用户设备(例如,图3-图5的(一个或多个)用户设备306)。图8的机器可读指令和/或操作800开始于块802,在该块处,示例视频预处理器电路402(图4)接收视频帧像素数据。例如,视频帧像素数据可以来自由用户设备302的(一个或多个)相机332生成的视频流。
在块804,示例视频预处理器电路402对所接收的视频帧像素数据进行降尺度或降采样(例如,降低其分辨率和/或降低其帧速率)。例如,视频预处理器电路402对视频帧像素数据进行降尺度,以便进一步的处理和分析可以由其他电路和/或(一个或多个)设备在化简的数据集而不是全分辨率帧上执行。
在块806,示例前景检测器电路404(图4)实现第一经训练的神经网络,以检测处于视频帧的(一个或多个)前景部分(例如,定义图4的前景限界区域422的矩形区域,其包围了用户和某个(某些)背景部分)的像素数据。同样在块806,示例背景检测器电路406(图4)实现第二经训练的神经网络以检测处于视频帧的(一个或多个)背景部分(例如,包括视频帧的不包括用户的像素的图4的背景限界区域424)的像素数据。
在块808,示例分割数据确定器电路408基于(一个或多个)前景部分和(一个或多个)背景部分生成分割数据。例如,分割数据对应于在块806中检测到的被包括在视频帧的(一个或多个)前景部分(例如,前景限界区域422)和(一个或多个)背景部分(例如,背景限界区域424)的像素数据。如果在(一个或多个)前景部分中检测到像素数据,则示例分割数据确定器电路408将该像素数据标记为前景。如果在(一个或多个)背景部分中检测到像素数据,则示例分割数据确定器电路408将该像素数据标记为背景。例如,分割数据确定器电路408可以通过与像素数据中表示的像素或像素组相关联地存储值(例如,表示前景或背景的值)来标记像素数据。
在块810,示例视频编码器电路318(图3和图4)基于分割数据确定(一个或多个)视频帧的(一个或多个)前景限界区域和(一个或多个)背景限界区域。(一个或多个)前景限界区域(例如,(一个或多个)前景限界区域422)和(一个或多个)背景限界区域(例如,(一个或多个)背景限界区域424)包括视频帧的一个或多个矩形区域,这些矩阵区域由元数据(例如,(一个或多个)区域的左上角像素的像素坐标、(一个或多个)区域的像素宽度和高度、以及(一个或多个)区域的标签(前景或背景))识别。
在块812,示例视频编码器电路318确定视频帧像素数据的(一个或多个)虚拟瓦片。例如,视频编码器电路318确定(一个或多个)虚拟瓦片为(一个或多个)视频帧中的像素数据的集合,该集合被包括在(一个或多个)前景限界区域中,但不被包括在(一个或多个)背景限界区域中。换句话说,(一个或多个)虚拟瓦片是视频帧的如下(一个或多个)部分:其中,背景限界区域424不与前景限界区域422重叠。
在块814,示例视频编码器电路318解析视频帧像素数据以确定像素数据是否被包括在(一个或多个)虚拟瓦片中。如果像素数据被包括在(一个或多个)虚拟瓦片中,则控制进行到块816,在该块处,示例视频编码器电路318将(一个或多个)虚拟瓦片的像素数据和/或块(例如,宏块、编码树单元,等等)编码为视频数据比特流。如果像素数据不被包括在(一个或多个)虚拟瓦片中,则控制进行到块818,在该块处,示例视频编码器电路318跳过(例如,不编码)像素数据并且将(0,0)的运动向量写入到与像素数据的该像素和/或块(例如,宏块、编码树单元,等等)相关联的(一个或多个)注释区域补充增强信息(ARSEI)消息和/或(一个或多个)补充增强信息(SEI)消息。
在块820,示例视频编码器电路318基于(一个或多个)限界区域生成(一个或多个)ARSEI消息。例如,视频编码器电路318生成(一个或多个)ARSEI消息以包括与编码帧数据的比特流相对应的(一个或多个)前景限界区域(例如,前景限界区域422)和(一个或多个)背景限界区域(例如,背景限界区域424)的元数据(例如,位置、大小和标签)。
在块822,示例视频编码器电路318基于所选择的虚拟背景生成(一个或多个)SEI消息。例如,视频编码器电路318生成一个或多个SEI消息,其中包含指示出由发送方用户设备(例如,图3-图5的用户设备302)选择的虚拟背景模板和/或模糊背景的标签字段代码。
在块824,示例视频编码器电路318经由网络304将与视频流的视频帧像素数据相关联的比特流数据、(一个或多个)ARSEI消息和/或(一个或多个)SEI消息发送或传输到单独的(一个或多个)用户设备306。图8的示例指令和/或操作结束。
图9是代表了示例机器可读指令和/或示例操作900的流程图,这些示例机器可读指令和/或示例操作900可由用户设备(例如,图3-图5的用户设备306)的处理器电路执行和/或实例化,用来确定(一个或多个)数据比特流的(一个或多个)虚拟瓦片并且将其编码到(一个或多个)视频帧中以便显示。图9的机器可读指令和/或操作900开始于块902,在该块处,示例视频解码器电路322(图3和图5)接收由(一个或多个)用户设备302(图3-图5)发送的与视频流的视频帧像素数据相关联的比特流数据、(一个或多个)ARSEI消息和/或(一个或多个)SEI消息。
在块904,示例视频解码器电路322基于接收到的ARSEI消息确定编码的视频帧像素数据的(一个或多个)前景限界区域和(一个或多个)背景限界区域。例如,视频解码器电路322确定哪些比特流数据对应于(一个或多个)前景限界区域(例如,图4的前景限界区域422)以及哪些比特流数据对应于(一个或多个)背景限界区域(例如,图4的背景限界区域424)。
在块906,示例视频解码器电路322基于(一个或多个)前景限界区域和(一个或多个)背景限界区域确定编码的视频帧像素数据的(一个或多个)虚拟瓦片。例如,视频解码器电路322基于与前景限界区域422而非背景限界区域424相对应的比特流数据的部分来确定(一个或多个)虚拟瓦片。
在块908,示例视频解码器电路322确定所接收的比特流数据是否被包括在(一个或多个)虚拟瓦片中。换句话说,示例视频解码器电路322确定编码的像素数据在比特流数据被解码之后是否将位于(一个或多个)视频帧的(一个或多个)虚拟瓦片中。如果示例视频解码器电路322在块908处确定比特流数据被包括在(一个或多个)虚拟瓦片中,则控制进行到块910,在该块处,视频解码器电路322对比特流数据解码。如果相反,示例视频解码器电路322在块908处确定比特流数据不被包括在(一个或多个)虚拟瓦片中,则控制前进到块912,在该块处,视频解码器电路322不对比特流数据解码。
在块914,示例视频解码器电路322生成和/或更新图5中所示的动态随机访问存储器(DRAM)316的缓冲池502。示例视频解码器电路322通过对由初始解码的(一个或多个)虚拟瓦片和所选择的虚拟背景模板构成的帧内数据(例如,参考帧数据)解码来生成缓冲池502。示例视频解码器电路322将帧内数据存储在DRAM 316的缓冲池502中,在那里它被复制,填充缓冲池。额外地或者替代地,示例视频解码器电路322用最近解码的(一个或多个)虚拟瓦片替换缓冲池502的下一个排队的帧(例如,帧内数据和/或帧间数据)的(一个或多个)虚拟瓦片。下文联系图10更详细描述可用于实现块914的示例指令和/或操作。
在块916,示例视频显示控制器电路324(图3和图5)从缓冲池502读取帧内数据和/或帧间数据。例如,视频显示控制器电路324基于视频序列中的(一个或多个)视频帧的索引顺序从缓冲池502读取视频帧像素数据。
在块918,示例视频后处理器电路504(图5)对从缓冲池502读取的视频帧像素数据进行降尺度(即,降低其分辨率)。例如,视频后处理器电路504对从一个或多个用户设备(例如,图3-图5的(一个或多个)用户设备302)接收的(一个或多个)视频帧(例如,图6的视频帧608)进行降尺度,以使得相应的帧可以适合于与经由网络304(图3-图5)连接到视频会议应用的用户设备的数目相对应的帧网格(例如,被示为图7的标准视频帧输出702的帧网格)内。
在块920,示例视频后处理器电路504将降尺度的(一个或多个)视频帧组构成视频帧像素数据的网格。例如,视频后处理器电路504可以将(一个或多个)视频帧组构成网格(例如,被示为图7的标准视频帧输出702的帧网格)以显示在显示屏幕334(图3和图5)上。或者,在只有两个参与者加入了视频会议会话的示例中,视频后处理器电路504执行块920的指令,以在显示屏幕334上将参与者的视频帧显示为单个帧,而不是多帧网格。
在块922,示例视频显示控制器电路324基于从缓冲池502读取的视频帧数据来生成视频信号。以这种方式,示例视频显示控制器电路324可以将视频信号数据发送到显示屏幕334以在显示屏幕334上渲染视频帧数据。
在块924,示例视频显示控制器电路324将视频帧像素数据作为帧内数据或者帧间数据写回到缓冲池502中。例如,视频显示控制器电路324在为同一像素数据生成视频信号之后,将视频帧像素数据写入在缓冲池502中。块924的指令或操作被显示控制器电路324用于补充缓冲池502,确保了存储在缓冲池502中的视频帧的数目在视频会议会话期间保持一致。例如,如果显示控制器电路324没有补充缓冲池502,那么视频解码器电路322将不得不等待显示控制器电路324渲染该帧,或者显示控制器电路324将不得不等待视频解码器电路322解码该帧。通过在视频会议会话期间保持存储在示例缓冲池502中的视频帧的数目一致,解码和/或渲染视频帧的时间少于如果示例缓冲池502没有维持足够的视频帧数据存储所需的时间。
在块926,示例视频解码器电路322确定是否经由网络304从(一个或多个)用户设备302接收到更多的比特流数据。如果视频解码器电路322在块926处确定接收到更多的比特流数据,则控制返回到块904,在该块处,视频解码器电路322基于也接收到的(一个或多个)ARSEI消息确定编码的帧数据的(一个或多个)前景限界区域和(一个或多个)背景限界区域。如果视频解码器电路322在块926处确定没有接收到更多的比特流数据,则图9的示例指令或操作结束。
图10是代表了示例机器可读指令和/或示例操作914的流程图,这些示例机器可读指令和/或示例操作914可由处理器电路执行和/或实例化,用来生成和/或更新DRAM 316的缓冲池502(图5和图6),以存储多个经处理(例如,解码)的和/或显示的帧内数据和/或帧间数据。下面描述的机器可读指令和/或操作914可用于实现图9的块914。
图10的机器可读指令和/或操作914开始于块1002,在该块处,视频解码器电路322(图3和图5)确定视频帧像素数据是否对应于从比特流数据解码的第一帧。例如,视频解码器电路322确定视频帧像素数据是否对应于(一个或多个)发送方用户设备302为视频会议捕捉的视频序列的第一视频帧。
如果视频解码器电路322在块1002处确定视频帧像素数据对应于比特流的第一视频帧,则控制前进到块1004。在块1004,视频解码器电路322生成帧内数据。例如,视频解码器电路322通过对(一个或多个)虚拟瓦片解码并且在(一个或多个)背景限界区域中添加虚拟背景像素来生成帧内数据。在一些示例中,示例视频解码器电路322对帧内数据的(一个或多个)虚拟瓦片解码,并且基于在与(一个或多个)虚拟瓦片像素数据相对应的ARSEI消息中包括的像素坐标将其定位在虚拟背景模板的前面。
在块1006,示例视频解码器电路322将构建的帧内数据存储在缓冲池502中。例如,示例视频解码器电路322将帧内数据存储在缓冲池502中作为参考帧,以用作基准帧来用于对帧间数据中的虚拟瓦片像素数据进行运动估计。
在块1008,示例复制器电路326(图3和图5)生成帧内数据的多个拷贝以填充缓冲池502。示例缓冲池502包括视频解码器电路322可以向其写入和/或修改以及视频显示控制器电路324可以从其读取和/或向其写入的有限数目的存储空间或容量。示例视频解码器电路322可以通过用随后解码的视频帧(例如,帧间数据)的(一个或多个)虚拟瓦片替换帧间数据的(一个或多个)虚拟瓦片来修改存储的(一个或多个)视频帧(例如,帧内数据和/或帧间数据)。
返回到块1002,如果视频解码器电路322确定视频帧像素数据不对应于比特流的第一视频帧,则控制前进到块1010。在块1010,视频解码器电路322确定比特流的SEI消息中指示的虚拟背景模板选择是否与先前解码的视频帧像素数据的虚拟背景模板相同。如果当前解码的视频帧的虚拟背景模板与先前解码的视频帧的虚拟背景模板不相同,则控制进行到块1004。
然而,如果视频解码器电路322在块1010处确定当前解码的视频帧的虚拟背景模板与先前解码的视频帧的虚拟背景模板相同,则控制前进到块1012,在该块处,视频解码器电路322在视频帧中组构(一个或多个)虚拟瓦片像素数据。例如,视频解码器电路322根据(例如,为了重建)所捕捉的视频来组构和安排视频帧中的(一个或多个)虚拟瓦片像素数据。
在块1014,示例视频解码器电路322用缓冲池502中的下一个排队的视频帧(例如,帧内数据和/或帧间数据)的(一个或多个)虚拟瓦片来替换当前解码的视频帧的(一个或多个)虚拟瓦片。从高级别的角度来看,示例视频解码器电路322去除下一个排队的视频帧的(一个或多个)虚拟瓦片,只留下虚拟背景模板,然后视频解码器电路322插入在块1012处组构的(一个或多个)当前虚拟瓦片。由于(一个或多个)当前虚拟瓦片是相对于与下一个排队的(一个或多个)虚拟瓦片相同的视频帧而组构和正确定位的,所以在缓冲池502中的视频帧之间有平滑的过渡。图10的示例指令或操作结束,并且控制返回到调用函数或进程,例如由图9的示例指令或操作实现的函数或进程。
图11是被构造来执行和/或实例化图8、图9和图10的机器可读指令和/或操作以实现图3-图5的用户设备302和/或(一个或多个)用户设备306的示例处理器平台1100的框图。处理器平台1100可以例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(personaldigital assistant,PDA)、互联网家电、游戏机、个人视频记录器、机顶盒、耳机(例如,增强现实(augmented reality,AR)耳机、虚拟现实(virtual reality,VR)耳机,等等)或其他可穿戴设备、或者任何其他类型的计算设备。
图示示例的处理器平台1100包括处理器电路1112。图示示例的处理器电路1112是硬件。例如,处理器电路1112可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、FPGA、微处理器、CPU、GPU、DSP和/或微控制器来实现。处理器电路1112可以由一个或多个基于半导体(例如,基于硅)的器件来实现。在此示例中,处理器电路1112实现了示例视频编码器电路318、示例视频帧分割器电路320、示例视频解码器电路322、示例视频显示控制器电路324、示例复制器电路326、示例视频预处理器电路402、示例前景检测器电路404、示例背景检测器电路406、示例分割数据确定器电路408、和/或示例视频后处理器电路504。
图示示例的处理器电路1112包括本地存储器1113(例如,缓存、寄存器,等等)。图示示例的处理器电路1112通过总线1118与包括易失性存储器1114和非易失性存储器1116的主存储器进行通信。易失性存储器1114可由同步动态随机访问存储器(SynchronousDynamic Random Access Memory,SDRAM)、动态随机访问存储器(Dynamic Random AccessMemory,DRAM)、
Figure BDA0003955223920000421
动态随机访问存储器(/>
Figure BDA0003955223920000423
Dynamic Random AccessMemory,/>
Figure BDA0003955223920000422
)和/或任何其他类型的RAM设备实现。在一些示例中,易失性存储器1114可用于实现图3-图6的DRAM 316以及图5和图6的示例缓冲池502。非易失性存储器1116可以由闪存和/或任何其他期望类型的存储器设备实现。在一些示例中,非易失性存储器1116可用于实现模型数据库410(图4)、模板数据库412(图4)和/或模板数据库506(图5)。对图示示例的主存储器1114、1116的访问受存储器控制器1117控制。
图示示例的处理器平台1100还包括接口电路1120。接口电路1120可以根据任何类型的接口标准由硬件实现,例如以太网接口、通用串行总线(universal serial bus,USB)接口、
Figure BDA0003955223920000424
接口、近场通信(near field communication,NFC)接口、外围组件互连(Peripheral Component Interconnect,PCI)接口、和/或外围组件互连快速(PeripheralComponent Interconnect Express,PCIe)接口。
在图示示例中,一个或多个输入设备1122连接到接口电路1120。(一个或多个)输入设备1122允许用户向处理器电路1112中输入数据和/或命令。(一个或多个)输入设备1122可以由例如相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球和/或isopoint设备来实现。在图示的示例中,(一个或多个)输入设备1122实现了图3和图4的(一个或多个)相机332。
一个或多个输出设备1124也连接到图示示例的接口电路1120。(一个或多个)输出设备1124可以例如由显示设备(例如,发光二极管(light emitting diode,LED)、有机发光二极管(organic light emitting diode,OLED)、液晶显示器(liquid crystal display,LCD)、阴极射线管(cathode ray tube,CRT)显示器、就地切换(in-place switching,IPS)显示器、触摸屏,等等)、触觉输出设备、打印机和/或扬声器实现。图示示例的接口电路1120从而通常包括图形驱动器卡、图形驱动器芯片和/或图形处理器电路,比如GPU。在图示的示例中,(一个或多个)输出设备1124实现了图3和图5的显示屏幕334。
图示示例的接口电路1120还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口,来促进通过网络1126与外部机器(例如,任何种类的计算设备)的数据交换。通信可通过例如以太网连接、数字订户线(digitalsubscriber line,DSL)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统、光学连接等等进行。
图示示例的处理器平台1100还包括一个或多个大容量存储设备1128来存储软件和/或数据。这种大容量存储设备1128的示例包括磁存储设备、光存储设备、软盘驱动器、HDD、CD、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disk,RAID)系统、固态存储设备(比如闪存设备和/或SSD)、以及DVD驱动器。在一些示例中,大容量存储设备1128可用于实现模型数据库410(图4)、模板数据库412(图4)和/或模板数据库506(图5)。
可由图8、图9和图10的机器可读指令实现的机器可执行指令1132可被存储在大容量存储设备1128中、易失性存储器1114中、非易失性存储器1116中、和/或诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
图12是图11的处理器电路1112的示例实现方式的框图。在这个示例中,图11的处理器电路1112由通用微处理器1200实现。通用微处理器电路1200执行图8、图9和图10的流程图的机器可读指令的一些或全部,以有效地将图3、图4和图5的电路实例化为逻辑电路,来执行与这些机器可读指令相对应的操作。在一些这样的示例中,图3、图4和图5的电路是由微处理器1200的硬件电路结合指令来实例化的。例如,微处理器1200可以实现多核硬件电路,例如CPU、DSP、GPU、XPU,等等。虽然它可包括任意数目的示例核心1202(例如,1个核心),但此示例的微处理器1200是包括N个核心的多核半导体设备。微处理器1200的核心1202可以独立操作,或者可以合作来执行机器可读指令。例如,与固件程序、嵌入式软件程序或软件程序相对应的机器代码可被核心1202之一执行,或者可被核心1202中的多个核心在相同或不同时间执行。在一些示例中,与固件程序、嵌入式软件程序或软件程序相对应的机器代码被分割成线程并且被核心1202中的两个或更多个并行执行。该软件程序可以对应于图8、图9和图10的流程图所表示的机器可读指令和/或操作的一部分或全部。
核心1202可以通过第一示例总线1204进行通信。在一些示例中,第一总线1204可以实现通信总线,以实现与核心1202中的一个(或多个)相关联的通信。例如,第一总线1204可以实现集成电路间(Inter-Integrated Circuit,I2C)总线、串行外围接口(SerialPeripheral Interface,SPI)总线、PCI总线或者PCIe总线中的至少一者。额外地或者替代地,第一总线1204可以实现任何其他类型的计算或电气总线。核心1202可以通过示例接口电路1206从一个或多个外部设备获得数据、指令和/或信号。核心1202可以通过接口电路1206向一个或多个外部设备输出数据、指令和/或信号。虽然此示例的核心1202包括示例本地存储器1220(例如,可被分割成L1数据缓存和L1指令缓存的第1级(L1)缓存),但微处理器1200也包括可由核心共享的示例共享存储器1210(例如,第2级(L2缓存)),用于高速访问数据和/或指令。可以通过向共享存储器1210写入和/或从共享存储器1210读取来传送(例如,共享)数据和/或指令。每个核心1202的本地存储器1220和共享存储器1210可以是包括多级缓存存储器和主存储器(例如,图11的主存储器1114、1116)的存储设备的层次体系的一部分。通常,该层次体系中的较高级别的存储器与较低级别的存储器相比表现出更低的访问时间并且具有更小的存储容量。缓存层次体系的各种级别的变化由缓存一致性策略来管理(例如,协调)。
每个核心1202可被称为CPU、DSP、GPU,等等,或者任何其他类型的硬件电路。每个核心1202包括控制单元电路1214、算术和逻辑(arithmetic and logic,AL)电路(有时称为ALU)1216、多个寄存器1218、L1缓存1220、以及第二示例总线1222。其他结构也可以存在。例如,每个核心1202可包括向量单元电路、单指令多数据(single instruction multipledata,SIMD)单元电路、加载/存储单元(load/store unit,LSU)电路、分支/跳转单元电路、浮点单元(floating-point unit,FPU)电路,等等。控制单元电路1214包括被构造为控制(例如,协调)相应核心1202内的数据移动的基于半导体的电路。AL电路1216包括基于半导体的电路,其被构造为对相应核心1202内的数据执行一个或多个数学和/或逻辑操作。一些示例中的AL电路1216执行基于整数的操作。在其他示例中,AL电路1216也执行浮点操作。在另外一些示例中,AL电路1216可包括执行基于整数的操作的第一AL电路和执行浮点操作的第二AL电路。在一些示例中,AL电路1216可被称为算术逻辑单元(Arithmetic Logic Unit,ALU)。寄存器1218是基于半导体的结构,用来存储数据和/或指令,例如由相应核心1202的AL电路1216执行的一个或多个操作的结果。例如,寄存器1218可包括(一个或多个)向量寄存器、(一个或多个)SIMD寄存器、(一个或多个)通用寄存器、(一个或多个)标志寄存器、(一个或多个)片段寄存器、(一个或多个)机器专用寄存器、(一个或多个)指令指针寄存器、(一个或多个)控制寄存器、(一个或多个)调试寄存器、(一个或多个)存储器管理寄存器、(一个或多个)机器检查寄存器,等等。寄存器1218可以如图12所示被安排为库组。或者,寄存器1218可以按任何其他安排、格式或结构被组织,包括分布在整个核心1202中以缩短访问时间。第二总线1222可以实现I2C总线、SPI总线、PCI总线或PCIe总线中的至少一者。
每个核心1202和/或更概括而言微处理器1200可包括作为以上所示出和描述的附加和/或替代的结构。例如,可以存在一个或多个时钟电路、一个或多个电力供应源、一个或多个电力门、一个或多个缓存归属代理(cache home agent,CHA)、一个或多个聚合/通用网挡(converged/common mesh stop,CMS)、一个或多个移位器(例如,(一个或多个)桶形移位器)和/或其他电路。微处理器1200是半导体设备,它被制造为包括许多相互连接的晶体管,以便在一个或多个封装中包含的一个或多个集成电路(IC)中实现上述的结构。处理器电路可包括一个或多个加速器和/或与一个或多个加速器合作。在一些示例中,加速器由逻辑电路实现,以比通用处理器更快速和/或高效地执行某些任务。加速器的示例包括ASIC和FPGA,例如本文论述的那些。GPU或其他可编程设备也可以是加速器。加速器可以在处理器电路的板上,在与处理器电路相同的芯片封装中,和/或在与处理器电路分开的一个或多个封装中。
图13是图11的处理器电路1112的另一示例实现方式的框图。在这个示例中,处理器电路1112由FPGA电路1300实现。例如,FPGA电路1300可用于例如执行否则可通过图12的示例微处理器1200执行相应的机器可读指令而执行的操作。然而,一旦被配置,FPGA电路1300就用硬件来实例化机器可读指令,从而,执行操作的速度经常比执行相应软件的通用微处理器的执行速度更快。
更具体而言,与上文描述的图12的微处理器1200(它是通用设备,可以被编程来执行图8、图9和图10的流程图所表示的机器可读指令的一些或全部,但其互连和逻辑电路一旦被制造出来就固定了)相比,图13的示例的FPGA电路1300包括互连和逻辑电路,这些互连和逻辑电路可以在制造之后以不同方式被配置和/或互连,以实例化例如由图8、图9和图10的流程图表示的机器可读指令的一些或全部。具体地,FPGA 1300可以被认为是逻辑门、互连和开关的阵列。开关可以被编程以改变逻辑门被互连所互连的方式,有效地形成一个或多个专用的逻辑电路(除非和直到FPGA电路1300被重编程为止)。配置的逻辑电路使得逻辑门能够以不同方式合作,以对输入电路接收的数据执行不同的操作。这些操作可以对应于图8、图9和图10的流程图所表示的软件的一些或全部。因此,FPGA电路1300可被构造为有效地将图8、图9和图10的流程图的机器可读指令的一些或全部实例化为专用逻辑电路,来以类似于ASIC的专用方式执行与这些软件指令相对应的操作。因此,FPGA电路1300执行与图8、图9和图10的机器可读指令的一些或全部相对应的操作的速度可以比通用微处理器执行这些指令的速度更快。
在图13的示例中,FPGA电路1300被构造为由最终用户通过硬件描述语言(hardware description language,HDL)(例如Verilog)进行编程(和/或一次或多次重编程)。图13的FPGA电路1300包括示例输入/输出(I/O)电路1302,以从示例配置电路1304和/或外部硬件(例如,外部硬件电路)1306获得和/或向其输出数据。例如,配置电路1304可以实现接口电路,该接口电路可以获得机器可读指令,以配置FPGA电路1300,或者其(一个或多个)部分。在一些这样的示例中,配置电路1304可以从用户、机器(例如,可以实现人工智能/机器学习(Artificial Intelligence/Machine Learning,AI/ML)模型以生成指令的硬件电路(例如,编程的或专用的电路))等等获得机器可读指令。在一些示例中,外部硬件1306可以实现图12的微处理器1200。FPGA电路1300还包括示例逻辑门电路1308的阵列、多个示例可配置互连1310、以及示例存储电路1312。逻辑门电路1308和互连1310可被配置为实例化与图8、图9和图10的机器可读指令中的至少一些相对应的一个或多个操作,和/或其他期望的操作。图13所示的逻辑门电路1308是按组或按块制造的。每个块包括基于半导体的电气结构,这些结构可被配置成逻辑电路。在一些示例中,电气结构包括为逻辑电路提供基本构建块的逻辑门(例如,与门、或门、或非门,等等)。在每个逻辑门电路1308内存在可电控的开关(例如,晶体管),以便能够配置电气结构和/或逻辑门,来形成电路以执行期望的操作。逻辑门电路1308可包括其他电气结构,例如查找表(look-up table,LUT)、寄存器(例如,触发器或锁存器)、多路复用器,等等。
图示示例的互连1310是导电通路、迹线、通孔之类的,其可包括可电控开关(例如,晶体管),其状态可通过编程(例如,使用HDL指令语言)被改变,以激活或停用一个或多个逻辑门电路1308之间的一个或多个连接,以编程期望的逻辑电路。
图示示例的存储电路1312被构造为存储由相应逻辑门执行的一个或多个操作的(一个或多个)结果。存储电路1312可以由寄存器之类的实现。在图示示例中,存储电路1312分布在逻辑门电路1308之间,以促进访问并且提高执行速度。
图13的示例FPGA电路1300还包括示例专用操作电路1314。在这个示例中,专用操作电路1314包括专用电路1316,该专用电路可被调用来实现常用功能,以避免需要在现场对这些功能进行编程。这种专用电路1316的示例包括存储器(例如,DRAM)控制器电路、PCIe控制器电路、时钟电路、收发器电路、存储器、以及乘法器-累加器电路。其他类型的专用电路也可存在。在一些示例中,FPGA电路1300还可包括示例通用可编程电路1318,例如示例CPU 1320和/或示例DSP 1322。其他通用可编程电路1318可以额外地或者替代地存在,例如GPU、XPU,等等,它们可被编程以执行其他操作。
虽然图12和图13图示了图11的处理器电路1112的两个示例实现方式,但也设想了许多其他方法。例如,如上所述,现代FPGA电路可包括板载CPU,例如图13的一个或多个示例CPU 1320。因此,图11的处理器电路1112可以额外地通过组合图12的示例微处理器1200和图13的示例FPGA电路1300来实现。在一些这样的混合示例中,由图8、图9和图10的流程图表示的机器可读指令的第一部分可以由图12的一个或多个核心1202执行,由图8、图9和图10的流程图表示的机器可读指令的第二部分可以由图13的FPGA电路1300执行,并且/或者由图8、图9和图10的流程图表示的机器可读指令的第三部分可以由ASIC执行。应当理解,图3、图4和图5的一些或所有电路可以在相同或不同时间被实例化。一些或所有电路可以例如在同时和/或串行执行的一个或多个线程中被实例化。此外,在一些示例中,图3、图4和图5的一些或所有电路可以在微处理器上执行的一个或多个虚拟机和/或容器内实现。
在一些示例中,图11的处理器电路1112可以在一个或多个封装中。例如,图12的处理器电路1200和/或图13的FPGA电路1300可以在一个或多个封装中。在一些示例中,XPU可以由图11的处理器电路1112实现,该处理器电路可以在一个或多个封装中。例如,XPU可包括封装中的CPU、另一个封装中的DSP、另外一个封装中的GPU、以及另一个封装中的FPGA。
图14中图示了一个框图,该框图图示了示例软件分发平台1405,用来将诸如图11的示例机器可读指令1132之类的软件分发到由第三方拥有和/或操作的硬件设备。示例软件分发平台1405可由能够存储软件并且将其传输到其他计算设备的任何计算机服务器、数据设施、云服务等等实现。第三方可以是拥有和/或操作该软件分发平台1405的实体的客户。例如,拥有和/或操作软件分发平台1405的实体可以是软件(例如图11的示例机器可读指令1132)的开发者、销售者和/或许可人。第三方可以是购买和/或许可该软件以供使用和/或再销售和/或分许可的消费者、用户、零售商、OEM,等等。在图示示例中,软件分发平台1405包括一个或多个服务器和一个或多个存储设备。存储设备存储机器可读指令1132,这些指令可对应于如上所述的图8、图9和图10的示例机器可读指令800、900和914。示例软件分发平台1405的一个或多个服务器与网络1410通信,该网络可对应于互联网和/或上述的示例网络304中的任何一者中的任何一个或多个。在一些示例中,作为商业交易的一部分,一个或多个服务器响应将软件传输给请求方的请求。对软件的交付、销售和/或许可的支付可由软件分发平台的一个或多个服务器处理和/或由第三方支付实体来处理。这些服务器使得购买者和/或许可人能够从软件分发平台1405下载机器可读指令1132。例如,可与图8、图9和图10的示例机器可读指令800、900和914相对应的软件可被下载到示例处理器平台1100,该平台要执行机器可读指令1132以实现图3、图4和/或图5的用户设备302和/或(一个或多个)用户设备306。在一些示例中,软件分发平台1405的一个或多个服务器周期性地提供、传输和/或强制更新软件(例如,图11的示例机器可读指令1132),以确保改进、补丁、更新等等被分发并且在最终用户设备处被应用于软件。
从上述内容将会明白,已公开了示例系统、方法、装置和制品,其将在(一个或多个)视频会议会话期间生成的视频帧像素数据分割成(一个或多个)前景限界区域和(一个或多个)背景限界区域,以确定视频帧像素数据的(一个或多个)虚拟瓦片(例如,视频帧像素数据的包括(一个或多个)视频会议会话的(一个或多个)主体的(一个或多个)部分)。所公开的系统、方法、装置和制品通过以下操作来改善使用计算设备的效率:在用户设备上编码(例如,处理)(一个或多个)虚拟瓦片,经由网络传输(例如,发送)编码的(一个或多个)虚拟瓦片,并且在一个或多个其他用户设备上解码(例如,处理)(一个或多个)虚拟瓦片,而不处理和/或发送视频帧像素数据的不被包括在(一个或多个)虚拟瓦片中的部分,从而减少存储器访问和/或减少处理周期的使用。所公开的系统、方法、装置和制品因此指向诸如计算机或其他电子和/或机械设备之类的机器的操作的一个或多个改进。
本文公开了示例方法、装置、系统和制品,来将在(一个或多个)视频会议会话期间生成的视频帧像素数据分割成(一个或多个)前景限界区域和(一个或多个)背景限界区域,确定视频帧像素数据的(一个或多个)虚拟瓦片(例如,视频帧像素数据的包括(一个或多个)视频会议会话的(一个或多个)主体的(一个或多个)部分),并且处理视频帧像素数据的(一个或多个)虚拟瓦片。进一步示例及其组合包括以下项:
示例1包括一种对视频帧像素数据编码的装置,该装置包括:接口电路,用于对视频帧像素数据编码;以及处理器电路,该处理器电路包括以下各项中的一个或多个:中央处理单元、图形处理单元或者数字信号处理器中的至少一者,所述中央处理单元、所述图形处理单元或者所述数字信号处理器中的至少一者具有:控制电路,用于控制数据在所述处理器电路内的移动;算术和逻辑电路,用于执行与指令相对应的一个或多个第一操作;以及一个或多个寄存器,用于存储所述一个或多个第一操作的结果,所述指令在所述装置中;现场可编程门阵列(FPGA),所述FPGA包括逻辑门电路、多个可配置互连、以及存储电路,所述逻辑门电路和互连用于执行一个或多个第二操作,所述存储电路用于存储所述一个或多个第二操作的结果;或者专用集成电路(ASIC),其包括逻辑门电路来执行一个或多个第三操作,所述处理器电路用于执行所述第一操作、所述第二操作或者所述第三操作中的至少一者,以实例化:视频帧分割器电路,用于生成第一视频帧像素数据的分割数据,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;以及视频编码器电路,用于基于所述分割数据生成第一前景限界区域和第一背景限界区域,确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中,将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码,并且提供所述视频数据比特流来经由网络传输。
示例2包括如示例1所述的装置,其中,所述视频编码器电路用于生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和所述第一背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者。
示例3包括如示例1所述的装置,其中,所述处理器电路用于执行所述第一操作、所述第二操作或者所述第三操作中的至少一者,以实例化视频解码器电路和视频显示控制器电路,所述视频解码器电路用于基于经由所述网络接收的注释区域补充增强信息(ARSEI)消息来创建第二前景限界区域和第二背景限界区域,确定第二视频帧像素数据的第二虚拟瓦片,所述第二虚拟瓦片位于所述第二前景限界区域中,并且对所述第二虚拟瓦片解码,所述视频显示控制器电路用于生成与所述第二虚拟瓦片和虚拟背景相对应的视频数据,所述第二虚拟瓦片和所述虚拟背景将被显示在屏幕上。
示例4包括如示例3所述的装置,其中,所述视频解码器电路用于将经解码的第二虚拟瓦片存储在第二存储器中的缓冲池中。
示例5包括如示例1所述的装置,其中,所述视频编码器电路用于生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和第三背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者,所述第三背景限界区域对应于所述背景区域的一部分,该部分与所述前景区域的一部分重叠。
示例6包括至少一个包括指令的非暂态计算机可读存储介质,所述指令当被执行时,使得处理器电路至少生成第一视频帧像素数据的分割数据,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据,基于所述分割数据生成第一前景限界区域和第一背景限界区域,确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中,将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码,并且提供所述视频数据比特流来经由网络传输。
示例7包括如示例6所述的计算机可读存储介质,其中,所述指令当被执行时,使得所述处理器电路生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和所述第一背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者。
示例8包括如示例6所述的计算机可读存储介质,其中,所述指令当被执行时,使得所述处理器电路基于从第二视频编码器电路接收的注释区域补充增强信息(ARSEI)消息来创建第二前景限界区域和第二背景限界区域,确定第二视频帧像素数据的第二虚拟瓦片,所述第二虚拟瓦片位于所述第二前景限界区域中,对所述第二虚拟瓦片解码,并且生成与所述第二虚拟瓦片和虚拟背景相对应的视频信号,所述第二虚拟瓦片和所述虚拟背景将被显示在屏幕上。
示例9包括如示例8所述的计算机可读存储介质,其中,所述指令当被执行时,使得所述处理器电路将经解码的第二虚拟瓦片存储在第二存储器中的缓冲池中。
示例10包括如示例6所述的计算机可读存储介质,其中,所述指令当被执行时,使得所述处理器电路生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和第三背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者,所述第三背景限界区域对应于所述背景区域的一部分,该部分与所述前景区域的一部分重叠。
示例11包括一种装置,该装置包括:用于生成第一视频帧像素数据的分割数据的装置,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;以及用于对所述第一视频帧像素数据的第一虚拟瓦片编码的装置,其中,所述第一虚拟瓦片编码装置用于基于所述分割数据生成第一前景限界区域和第一背景限界区域,确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中,并且将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;以及用于经由网络传输所述视频数据比特流的装置。
示例12包括如示例11所述的装置,其中,所述第一虚拟瓦片编码装置用于生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和所述第一背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者。
示例13包括如示例11所述的装置,其中,所述分割数据生成装置用于基于从第二视频编码器电路接收的注释区域补充增强信息(ARSEI)消息来创建第二前景限界区域和第二背景限界区域,确定第二视频帧像素数据的第二虚拟瓦片,所述第二虚拟瓦片位于所述第二前景限界区域中,并且对所述第二虚拟瓦片解码,并且所述装置还包括用于生成与所述第二虚拟瓦片和虚拟背景相对应的视频信号的装置,所述第二虚拟瓦片和所述虚拟背景将被显示在显示屏幕上。
示例14包括如示例13所述的装置,其中,所述分割数据生成装置用于将经解码的第二虚拟瓦片存储在第二存储器中的缓冲池中。
示例15包括如示例11所述的装置,其中,所述第一虚拟瓦片编码装置用于生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和第三背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者,所述第三背景限界区域对应于所述背景区域的一部分,该部分与所述前景区域的一部分重叠。
示例16包括一种方法,该方法包括:通过利用处理器执行指令,来生成第一视频帧像素数据的分割数据,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;通过利用所述处理器执行指令,来基于所述分割数据生成第一前景限界区域和第一背景限界区域;通过利用所述处理器执行指令,来确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中;通过利用所述处理器执行指令,来将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;并且通过利用所述处理器执行指令,来经由网络传输所述视频数据比特流。
示例17包括如示例16所述的方法,其中,所述第一前景限界区域和所述第一背景限界区域的生成包括生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和所述第一背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者。
示例18包括如示例16所述的方法,其中,所述第一视频帧像素数据的分割数据的生成包括基于从第二视频编码器电路接收的注释区域补充增强信息(ARSEI)消息来创建第二前景限界区域和第二背景限界区域,确定第二视频帧像素数据的第二虚拟瓦片,所述第二虚拟瓦片位于所述第二前景限界区域中,对所述第二虚拟瓦片解码,并且生成与所述第二虚拟瓦片和虚拟背景相对应的视频信号,所述第二虚拟瓦片和所述虚拟背景将被显示在显示屏幕上。
示例19包括如示例18所述的方法,其中,所述第一视频帧像素数据的分割数据的生成包括将经解码的第二虚拟瓦片存储在第二存储器中的缓冲池中。
示例20包括如示例16所述的方法,其中,所述第一前景限界区域和所述第一背景限界区域的生成包括生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和第三背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者,所述第三背景限界区域对应于所述背景区域的一部分,该部分与所述前景区域的一部分重叠。
特此通过这个引用将所附权利要求并入到这个具体实施方式部分中。虽然本文公开了某些示例系统、方法、装置和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖了公平地落在本专利的权利要求的范围内的所有系统、方法、装置和制品。

Claims (20)

1.一种对视频帧像素数据编码的装置,包括:
接口电路,用于对视频帧像素数据编码;以及
处理器电路,其包括以下各项中的一个或多个:
中央处理单元、图形处理单元或者数字信号处理器中的至少一者,所述中央处理单元、所述图形处理单元或者所述数字信号处理器中的至少一者具有:控制电路,用于控制数据在所述处理器电路内的移动;算术和逻辑电路,用于执行与指令相对应的一个或多个第一操作;以及一个或多个寄存器,用于存储所述一个或多个第一操作的结果,所述指令在所述装置中;
现场可编程门阵列(FPGA),所述FPGA包括逻辑门电路、多个可配置互连、以及存储电路,所述逻辑门电路和互连用于执行一个或多个第二操作,所述存储电路用于存储所述一个或多个第二操作的结果;或者
专用集成电路(ASIC),其包括逻辑门电路来执行一个或多个第三操作;
所述处理器电路用于执行所述第一操作、所述第二操作或者所述第三操作中的至少一者,以实例化:
视频帧分割器电路,用于生成第一视频帧像素数据的分割数据,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;以及
视频编码器电路,用于:
基于所述分割数据生成第一前景限界区域和第一背景限界区域;
确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中;
将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;并且
提供所述视频数据比特流来经由网络传输。
2.如权利要求1所述的装置,其中,所述视频编码器电路用于生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和所述第一背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者。
3.如权利要求1或2所述的装置,其中,所述处理器电路用于执行所述第一操作、所述第二操作或者所述第三操作中的至少一者,以实例化视频解码器电路和视频显示控制器电路,所述视频解码器电路用于:
基于经由所述网络接收的注释区域补充增强信息(ARSEI)消息来创建第二前景限界区域和第二背景限界区域;
确定第二视频帧像素数据的第二虚拟瓦片,所述第二虚拟瓦片位于所述第二前景限界区域中;并且
对所述第二虚拟瓦片解码;
所述视频显示控制器电路用于生成与所述第二虚拟瓦片和虚拟背景相对应的视频数据,所述第二虚拟瓦片和所述虚拟背景将被显示在屏幕上。
4.如权利要求3所述的装置,其中,所述视频解码器电路用于将经解码的第二虚拟瓦片存储在第二存储器中的缓冲池中。
5.如权利要求1所述的装置,其中,所述视频编码器电路用于生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和第三背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者,所述第三背景限界区域对应于所述背景区域的一部分,该部分与所述前景区域的一部分重叠。
6.至少一个包括指令的计算机可读存储介质,所述指令当被执行时,使得处理器电路至少执行以下操作:
生成第一视频帧像素数据的分割数据,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;
基于所述分割数据生成第一前景限界区域和第一背景限界区域;
确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中;
将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;并且
提供所述视频数据比特流来经由网络传输。
7.如权利要求6所述的计算机可读存储介质,其中,所述指令当被执行时,使得所述处理器电路生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和所述第一背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者。
8.如权利要求6或7所述的计算机可读存储介质,其中,所述指令当被执行时,使得所述处理器电路执行以下操作:
基于从第二视频编码器电路接收的注释区域补充增强信息(ARSEI)消息来创建第二前景限界区域和第二背景限界区域;
确定第二视频帧像素数据的第二虚拟瓦片,所述第二虚拟瓦片位于所述第二前景限界区域中;
对所述第二虚拟瓦片解码;并且
生成与所述第二虚拟瓦片和虚拟背景相对应的视频信号,所述第二虚拟瓦片和所述虚拟背景将被显示在屏幕上。
9.如权利要求8所述的计算机可读存储介质,其中,所述指令当被执行时,使得所述处理器电路将经解码的第二虚拟瓦片存储在第二存储器中的缓冲池中。
10.如权利要求6所述的计算机可读存储介质,其中,所述指令当被执行时,使得所述处理器电路生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和第三背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者,所述第三背景限界区域对应于所述背景区域的一部分,该部分与所述前景区域的一部分重叠。
11.一种装置,包括:
用于生成第一视频帧像素数据的分割数据的装置,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;以及
用于对所述第一视频帧像素数据的第一虚拟瓦片编码的装置,其中,所述第一虚拟瓦片编码装置用于:
基于所述分割数据生成第一前景限界区域和第一背景限界区域;
确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中;并且
将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;以及
用于经由网络传输所述视频数据比特流的装置。
12.如权利要求11所述的装置,其中,所述第一虚拟瓦片编码装置用于生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和所述第一背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者。
13.如权利要求11所述的装置,其中,所述分割数据生成装置用于:
基于从第二视频编码器电路接收的注释区域补充增强信息(ARSEI)消息来创建第二前景限界区域和第二背景限界区域;
确定第二视频帧像素数据的第二虚拟瓦片,所述第二虚拟瓦片位于所述第二前景限界区域中;并且
对所述第二虚拟瓦片解码;并且
所述装置还包括用于生成与所述第二虚拟瓦片和虚拟背景相对应的视频信号的装置,所述第二虚拟瓦片和所述虚拟背景将被显示在显示屏幕上。
14.如权利要求13所述的装置,其中,所述分割数据生成装置用于将经解码的第二虚拟瓦片存储在第二存储器中的缓冲池中。
15.如权利要求11所述的装置,其中,所述第一虚拟瓦片编码装置用于生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和第三背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者,所述第三背景限界区域对应于所述背景区域的一部分,该部分与所述前景区域的一部分重叠。
16.一种方法,包括:
通过利用处理器执行指令,来生成第一视频帧像素数据的分割数据,所述分割数据包括与前景区域和背景区域相对应的元数据,所述前景区域对应于所述第一视频帧像素数据;
通过利用所述处理器执行指令,来基于所述分割数据生成第一前景限界区域和第一背景限界区域;
通过利用所述处理器执行指令,来确定所述第一视频帧像素数据的第一虚拟瓦片,所述第一虚拟瓦片位于所述第一前景限界区域中;
通过利用所述处理器执行指令,来将所述第一虚拟瓦片编码成视频数据比特流,而不对所述第一背景限界区域编码;并且
通过利用所述处理器执行指令,来经由网络传输所述视频数据比特流。
17.如权利要求16所述的方法,其中,所述第一前景限界区域和所述第一背景限界区域的生成包括生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和所述第一背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者。
18.如权利要求16或17所述的方法,其中,所述第一视频帧像素数据的分割数据的生成包括:
基于从第二视频编码器电路接收的注释区域补充增强信息(ARSEI)消息来创建第二前景限界区域和第二背景限界区域;
确定第二视频帧像素数据的第二虚拟瓦片,所述第二虚拟瓦片位于所述第二前景限界区域中;
对所述第二虚拟瓦片解码;并且
生成与所述第二虚拟瓦片和虚拟背景相对应的视频信号,所述第二虚拟瓦片和所述虚拟背景将被显示在显示屏幕上。
19.如权利要求18所述的方法,其中,所述第一视频帧像素数据的分割数据的生成包括将经解码的第二虚拟瓦片存储在第二存储器中的缓冲池中。
20.如权利要求16所述的方法,其中,所述第一前景限界区域和所述第一背景限界区域的生成包括生成注释区域补充增强信息消息,所述注释区域补充增强信息消息包括与所述第一前景限界区域和第三背景限界区域相对应的大小数据、位置数据或标签数据中的至少一者,所述第三背景限界区域对应于所述背景区域的一部分,该部分与所述前景区域的一部分重叠。
CN202211460572.9A 2021-12-17 2022-11-17 用人工智能视频帧分割处理视频帧像素数据的方法和装置 Pending CN116405708A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/555,119 US20220109838A1 (en) 2021-12-17 2021-12-17 Methods and apparatus to process video frame pixel data using artificial intelligence video frame segmentation
US17/555,119 2021-12-17

Publications (1)

Publication Number Publication Date
CN116405708A true CN116405708A (zh) 2023-07-07

Family

ID=80931853

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211460572.9A Pending CN116405708A (zh) 2021-12-17 2022-11-17 用人工智能视频帧分割处理视频帧像素数据的方法和装置

Country Status (4)

Country Link
US (1) US20220109838A1 (zh)
EP (1) EP4199505A1 (zh)
KR (1) KR20230092739A (zh)
CN (1) CN116405708A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115695889A (zh) * 2022-09-30 2023-02-03 聚好看科技股份有限公司 显示设备及悬浮窗显示方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100516638B1 (ko) * 2001-09-26 2005-09-22 엘지전자 주식회사 화상 통신 시스템
KR100643454B1 (ko) * 2001-11-17 2006-11-10 엘지전자 주식회사 영상 데이터 전송 제어방법
EP1701546A4 (en) * 2004-04-23 2010-09-15 Sumitomo Electric Industries CODING METHOD AND DECODING METHOD FOR MOVABLE IMAGE DATA, FINAL DEVICE FOR CARRYING OUT THE METHOD AND BIDIRECTIONAL INTERACTIVE SYSTEM
US7676081B2 (en) * 2005-06-17 2010-03-09 Microsoft Corporation Image segmentation of foreground from background layers
WO2021248349A1 (en) * 2020-06-10 2021-12-16 Plantronics, Inc. Combining high-quality foreground with enhanced low-quality background

Also Published As

Publication number Publication date
KR20230092739A (ko) 2023-06-26
EP4199505A1 (en) 2023-06-21
US20220109838A1 (en) 2022-04-07

Similar Documents

Publication Publication Date Title
US10719447B2 (en) Cache and compression interoperability in a graphics processor pipeline
US20160364828A1 (en) Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices
US10192281B2 (en) Graphics command parsing mechanism
US8838680B1 (en) Buffer objects for web-based configurable pipeline media processing
US10338953B2 (en) Facilitating execution-aware hybrid preemption for execution of tasks in computing environments
US11550632B2 (en) Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment
US20170154403A1 (en) Triple buffered constant buffers for efficient processing of graphics data at computing devices
US10282804B2 (en) Facilitating configuration of computing engines based on runtime workload measurements at computing devices
CN113368492A (zh) 渲染的方法、装置
US11088907B2 (en) System characterization and configuration distribution for facilitating improved performance at computing devices
EP4199505A1 (en) Methods and apparatus to process video frame pixel data using artificial intelligence video frame segmentation
US11023998B2 (en) Apparatus and method for shared resource partitioning through credit management
EP3284058A1 (en) Supporting multi-level nesting of command buffers in graphics command streams at computing devices
US10002405B2 (en) Smart optimization of unused graphics buffer memory in computing environments
CN104956671A (zh) 视频帧重建
US9734597B2 (en) Interpolated minimum-maximum compression/decompression for efficient processing of graphics data at computing devices
US9881352B2 (en) Facilitating efficient graphics commands processing for bundled states at computing devices
US20220012005A1 (en) Apparatus, computer-readable medium, and method for high-throughput screen sharing
US20220014740A1 (en) Methods and apparatus to perform dirty region reads and writes to reduce memory bandwidth usage
US20240107031A1 (en) Methods and apparatus to utilize cache in dynamic image encoding
US20220329835A1 (en) Methods and apparatus to implement predictor prefetching in video encoding
WO2023056574A1 (en) Methods and apparatus to reduce latency during viewport switching in immersive video
WO2017160385A1 (en) Fast access and use of common data values relating to applications in parallel computing environments
CN117501686A (zh) 用于针对分布式源和客户端应用实现可缩放视频编码的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication