CN116018616A - 保持帧中的目标对象的固定大小 - Google Patents
保持帧中的目标对象的固定大小 Download PDFInfo
- Publication number
- CN116018616A CN116018616A CN202180035334.0A CN202180035334A CN116018616A CN 116018616 A CN116018616 A CN 116018616A CN 202180035334 A CN202180035334 A CN 202180035334A CN 116018616 A CN116018616 A CN 116018616A
- Authority
- CN
- China
- Prior art keywords
- frame
- length
- frames
- video
- bounding box
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/098—Distributed learning, e.g. federated learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformation in the plane of the image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformation in the plane of the image
- G06T3/40—Scaling the whole image or part thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/254—Analysis of motion involving subtraction of images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/22—Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition
- G06V10/235—Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition based on user input or interaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/25—Determination of region of interest [ROI] or a volume of interest [VOI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/32—Normalisation of the pattern dimensions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/62—Extraction of image or video features relating to a temporal dimension, e.g. time-based feature extraction; Pattern tracking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
- G06V20/46—Extracting features or characteristics from the video content, e.g. video fingerprints, representative shots or key frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/45—Cameras or camera modules comprising electronic image sensors; Control thereof for generating image signals from two or more image sensors being of different type or operating in different modes, e.g. with a CMOS sensor for moving images in combination with a charge-coupled device [CCD] for still images
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/61—Control of cameras or camera modules based on recognised objects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/617—Upgrading or updating of programs or applications for camera control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/62—Control of parameters via user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/63—Control of cameras or camera modules by using electronic viewfinders
- H04N23/631—Graphical user interfaces [GUI] specially adapted for controlling image capture or setting capture parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/63—Control of cameras or camera modules by using electronic viewfinders
- H04N23/631—Graphical user interfaces [GUI] specially adapted for controlling image capture or setting capture parameters
- H04N23/632—Graphical user interfaces [GUI] specially adapted for controlling image capture or setting capture parameters for displaying or modifying preview images prior to image capturing, e.g. variety of image resolutions or capturing parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
- H04N23/681—Motion detection
- H04N23/6811—Motion detection based on the image signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
- H04N23/682—Vibration or motion blur correction
- H04N23/683—Vibration or motion blur correction performed by a processor, e.g. controlling the readout of an image memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/69—Control of means for changing angle of the field of view, e.g. optical zoom objectives or electronic zooming
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/90—Arrangement of cameras or camera modules, e.g. multiple cameras in TV studios or sports stadiums
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/222—Studio circuitry; Studio devices; Studio equipment
- H04N5/262—Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
- H04N5/2628—Alteration of picture size, shape, position or orientation, e.g. zooming, rotation, rolling, perspective, translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20112—Image segmentation details
- G06T2207/20132—Image cropping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30196—Human being; Person
- G06T2207/30201—Face
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
Abstract
提供了用于处理一个或多个帧的技术。例如,可以在帧序列的第一帧中确定感兴趣区域。第一帧中的感兴趣区域包括在第一帧中具有一定大小的对象。可以裁剪并缩放帧序列中的(在帧序列中的第一帧之后出现的)第二帧的一部分,以使第二帧中的对象具有与第一帧中的对象相同的大小(并且在一些情况下位于相同的位置)。
Description
技术领域
本公开总体上涉及视频分析,并且更具体地涉及用于保持针对(例如,在视频分析中、用于录制视频以及其它用途的)一个或多个帧中的目标对象的一致(例如,固定或几乎固定)大小的技术和系统。
背景技术
许多设备和系统允许通过生成场景的图像(或帧)和/或视频数据(包括多个帧)来捕获该场景。例如,相机或包括相机的计算设备(例如,诸如包括一个或多个相机的移动电话或智能电话之类的移动设备)可以捕获场景的帧序列。在另一示例中,互联网协议相机(IP相机)是一种可以用于监视或其它应用的数码摄像机。与模拟闭路电视(CCTV)相机不同,IP相机可以经由计算机网络和互联网发送和接收数据。
图像和/或视频数据可以被这样的设备和系统(例如,移动设备、IP相机等)捕获和处理,并且可以被输出以供消耗(例如,显示在该设备和/或其它设备上)。在一些情况下,图像和/或视频数据可以被这样的设备和系统捕获,并且输出以供其它设备进行处理和/或消耗。
发明内容
在一些示例中,描述了用于处理图像或视频数据的一个或多个帧以便保持一个或多个帧中的目标对象(也称为感兴趣对象)的固定大小的技术和系统。根据至少一个说明性示例,提供了一个或多个帧的方法。该方法包括:确定帧序列中的第一帧中的感兴趣区域,该第一帧中的感兴趣区域包括在该第一帧中具有一定大小的对象;裁剪该帧序列的第二帧的一部分,该第二帧出现在该帧序列中的第一帧之后;以及基于该第一帧中的对象的大小,来缩放该第二帧的部分。
在另一示例中,提供了一种用于处理一个或多个帧的装置,该装置包括:存储器,该存储器被配置为存储至少一个帧;以及一个或多个处理器,该一个或多个处理器在电路中实现并耦合到该存储器。该一个或多个处理器被配置为并且可以进行以下操作:确定帧序列中的第一帧中的感兴趣区域,该第一帧中的感兴趣区域包括在该第一帧中具有一定大小的对象;裁剪该帧序列的第二帧的一部分,该第二帧出现在该帧序列中的第一帧之后;以及基于该第一帧中的对象的大小,来缩放该第二帧的部分。
在另一示例中,提供了一种具有存储在其上的指令的非暂时性计算机可读介质,该指令在由一个或多个处理器执行时使该一个或多个处理器进行以下操作:确定帧序列中的第一帧中的感兴趣区域,该第一帧中的感兴趣区域包括在该第一帧中具有一定大小的对象;裁剪该帧序列的第二帧的一部分,该第二帧出现在该帧序列中的第一帧之后;以及基于该第一帧中的对象的大小,来缩放该第二帧的部分。
在另一示例中,提供了一种用于处理一个或多个帧的装置。该装置包括:用于确定帧序列中的第一帧中的感兴趣区域的部件,该第一帧中的感兴趣区域包括在该第一帧中具有一定大小的对象;用于裁剪该帧序列的第二帧的一部分的部件,该第二帧出现在该帧序列中的第一帧之后;以及用于基于该第一帧中的对象的大小来缩放该第二帧的部分的部件。
在一些方面中,上述方法、装置和计算机可读介质还包括:接收与该第一帧中的对象的选择相对应的用户输入;以及基于所接收的用户输入,来确定该第一帧中的感兴趣区域。在一些方面中,用户输入包括使用设备的触摸界面而提供的触摸输入。
在一些方面中,上述方法、装置和计算机可读介质还包括:确定针对该第二帧中的对象而确定的对象区域的点;以及在该对象区域的点位于经裁剪和经缩放的部分的中心的情况下,裁剪和缩放该第二帧的部分。
在一些方面中,该对象区域的点是该对象区域的中心点。在一些情况下,对象区域是边界框(或其它边界区域)。中心点可以是边界框(或其它区域)的中心点、对象的中心点(例如,对象的质心或中心点)。
在一些方面中,基于该第一帧中的对象的大小来缩放该第二帧的部分使该第二帧中的对象具有与该第一帧中的对象相同的大小。
在一些方面中,上述方法、装置和计算机可读介质还包括:确定与该第一帧中的对象相关联的第一长度;确定与该第二帧中的对象相关联的第二长度;基于该第一长度和该第二长度之间的比较,来确定缩放因子;以及基于该缩放因子,来缩放该第二帧的部分。
在一些方面中,该第一长度是针对该第一帧中的对象而确定的第一对象区域的长度,并且其中该第二长度是针对该第二帧中的对象而确定的第二对象区域的长度。在一些方面中,该第一对象区域是第一边界框,并且该第一长度是该第一边界框的对角线长度,并且其中该第二对象区域是第二边界框,并且该第二长度是该第二边界框的对角线长度。
在一些方面中,基于该缩放因子来缩放该第二帧的部分使经裁剪和经缩放的部分中的第二对象区域具有与该第一帧中的第一对象区域相同的大小。
在一些方面中,上述方法、装置和计算机可读介质还包括:确定针对该第一帧中的对象而生成的第一对象区域的点;确定针对该第二帧中的对象而生成的第二对象区域的点;使用基于该第一对象区域的点和该第二对象区域的点的平滑函数,来确定用于该对象的移动因子,其中该平滑函数控制该对象在该序列帧的多个帧中的位置的变化;以及基于该移动因子,来裁剪该第二帧的部分。
在一些方面中,该第一对象区域的点是该第一对象区域的中心点,并且其中该第二对象区域的点是该第二对象区域的中心点。
在一些方面中,该平滑函数包括移动函数,该移动函数用于基于对象移动的统计度量来确定相应对象区域的点在该帧序列的多个帧中的每个帧中的位置。
在一些方面中,上述方法、装置和计算机可读介质还包括:确定与该第一帧中的对象相关联的第一长度;确定与该第二帧中的对象相关联的第二长度;基于该第一长度和该第二长度之间的比较并且基于使用该第一长度和该第二长度的平滑函数,来确定用于该对象的缩放因子,其中该平滑函数控制该对象在该帧序列的多个帧中的大小的变化;以及基于缩放因子来缩放第二帧的一部分。
在一些方面中,该平滑函数包括移动函数,该移动函数用于基于对象大小的统计度量来确定与该帧序列的多个帧中的每个帧中的对象相关联的长度。
在一些方面中,该第一长度是针对该第一帧中的对象而生成的第一边界框的长度,并且其中该第二长度是针对该第二帧中的对象而生成的第二边界框的长度。
在一些方面中,该第一长度是该第一边界框的对角线长度,并且其中该第二长度是该第二边界框的对角线长度。
在一些方面中,基于该缩放因子来缩放该第二帧的部分使经裁剪和经缩放的部分中的第二边界框具有与该第一帧中的第一边界框相同的大小。
在一些方面中,该第二帧的部分的裁剪和缩放将该对象保持在该第二帧的中心。
在一些方面中,上述方法、装置和计算机可读介质还包括:检测和跟踪该帧序列的一个或多个帧中的对象。
在一些方面中,该装置包括相机(例如,IP相机)、移动设备(例如,移动电话或所谓的“智能电话”或其它移动设备)、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备、或混合实境(MR)设备)、个人计算机、膝上型计算机、服务器计算机或其它设备。在一些方面中,该装置包括用于捕获一个或多个图像的一个或多个相机。在一些方面中,该装置还包括用于显示一个或多个图像、通知和/或其它可显示数据的显示器。
本发明内容既非意图识别所要求保护的主题的关键或本质特征,也非意图单独用于确定所要求保护的主题的范围。应通过参考本专利的完整说明书的适当部分、任何或全部附图以及每条权利要求来理解主题。
通过参考以下说明书、权利要求和附图,前述内容连同其它特征和实施例将变得更加明显。
附图说明
下面参考以下附图来详细地描述本申请的说明性实施例:
图1是示出根据一些示例的图像捕获和处理系统的示例架构的框图;
图2是示出根据一些示例的包括视频源和视频分析系统的系统的示例的框图;
图3是根据一些示例的处理视频帧的视频分析系统的示例;
图4是示出根据一些示例的斑点(blob)检测系统的示例的框图;
图5是示出根据一些示例的对象跟踪系统的示例的框图;
图6A是示出根据一些示例的基于机器学习的对象检测和跟踪系统的示例的另一图式;
图6B是示出根据一些示例的基于机器学习的对象检测和跟踪系统的上采样组件的示例的图式;
图6C是示出根据一些示例的用于基于机器学习的跟踪系统的主干架构的示例的图式;
图7是示出根据一些示例的基于机器学习的对象分类系统的示例的图式;
图8A是示出根据一些示例的包括帧裁剪和缩放系统的系统的示例的图式;
图8B是示出根据一些示例的帧裁剪和缩放系统的示例的图式;
图8C是示出根据一些示例的帧裁剪和缩放过程的示例的图式;
图9A是示出根据一些示例的帧裁剪和缩放过程的另一示例的流程图;图9B是示出根据一些示例的帧裁剪和缩放过程的另一示例的流程图;
图10A是示出根据一些示例的视频的初始帧的示例的图式;
图10B是示出根据一些示例的在图10A的初始帧之后出现的视频的后续帧的示例的图式;
图11是示出根据一些示例的各种运动模型的示例的图式;
图12是示出根据一些示例的用于执行图像稳定的过程的示例的流程图;
图13A是示出根据一些示例的用于执行自动变焦功能的各方面的过程的示例的图式;
图13B是示出根据一些示例的用于执行自动变焦功能的附加方面的过程的示例的图式;
图13C是示出根据一些示例的用于执行自动变焦功能的各方面的过程的另一示例的图式;
图13D是示出根据一些示例的用于执行自动变焦功能的附加方面的过程的示例的图式;
图14是示出根据一些示例的高斯滤波器平滑函数的示例的图式;
图15是示出根据一些示例的斐波纳契(Fibonacci)滤波器平滑函数的示例的图式;
图16是示出根据一些示例的相机流水线中的变焦过程的示例的图式;
图17是示出根据一些示例的用于相机流水线的变焦延时的示例的图式;
图18是示出根据一些示例的用于处理一个或多个帧的过程的示例的流程图;
图19至图23是示出根据一些示例的使用本文描述的裁剪和缩放技术的模拟的图像;
图24是示出根据一些示例的基于机器学习的对象检测和跟踪系统的示例的图式;
图25是示出根据一些示例的相机镜头切换流水线的示例的流程图;
图26是示出根据一些示例的相机镜头切换过程的示例的流程图;
图27至图36是示出根据一些示例的使用本文描述的相机镜头切换技术的示例的图式;
图37至图41是示出根据一些示例的使用本文描述的相机镜头切换技术的模拟的图像;
图42是示出根据一些示例的深度学习网络的示例的框图;
图43是示出根据一些示例的卷积神经网络的示例的框图;
图44是示出根据一些示例的Cifar-10神经网络的示例的图式;
图45A至图45C是示出根据一些示例的单步(single-shot)对象检测器的示例的图式;
图46A至图46C是示出根据一些示例的你只需看一次(you only look once,YOLO)检测器的示例的图式;
图47是示出用于实现本文描述的某些方面的系统的示例的图式。
具体实施方式
下面提供本公开的某些方面和实施例。这些方面和实施例中的一些可以独立地应用并且它们中的一些可以组合应用,这对于本领域技术人员员来说是显而易见的。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本申请的实施例的透彻理解。然而,显而易见的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不意图是限制性的。
以下描述仅提供示例性实施例,而不意图限制本公开的范围、适用性或配置。相反,对示范性实施例的以下描述将为本领域技术人员提供用于实施示范性实施例的可行描述。应当理解,在不脱离所附权利要求中阐述的本申请的精神和范围的情况下,可以对元素的功能和布置作出各种改变。
图像捕获设备(例如,相机或包括相机的设备)是使用图像传感器来接收光并捕获诸如静止图像或视频帧之类的图像帧的设备。术语“图像”、“图像帧”和“帧”在本文中可互换使用。可以使用各种图像捕获和图像处理设置来配置图像捕获设备的相机。不同设置导致图像具有不同的外观。在捕获一个或多个图像帧之前或期间确定并应用一些相机设置,诸如ISO、曝光时间、光圈大小、光圈值(f/stop)、快门速度、对焦和增益。例如,可以将设置或参数应用于图像传感器以便捕获一个或多个图像帧。其它相机设置可以配置一个或多个图像帧的后处理,诸如对比度、亮度、饱和度、锐度、色阶、曲线或颜色的更改。例如,可以将设置或参数应用于处理器(例如,图像信号处理器或ISP),以便处理由图像传感器所捕获的一个或多个图像帧。
相机可以包括处理器或与处理器进行通信,该处理器(诸如ISP)可以从图像传感器接收一个或多个图像帧并处理一个或多个图像帧。例如,由相机传感器所捕获的原始图像帧可以由ISP进行处理以生成最终图像。在一些示例中,ISP可以使用应用于所捕获的图像帧的多个滤波器或处理块来处理图像帧,诸如去马赛克、增益调整、白平衡调整、颜色平衡或校正、伽玛压缩、色调映射或调整、降噪或噪声滤波、边缘增强、对比度调整、强度调整(诸如变暗或变亮)以及其它。在一些示例中,ISP可以包括可以处理图像帧并输出经处理的图像帧的机器学习系统(例如,一个或多个神经网络和/或其它机器学习组件)。
在各种场景(例如,移动成像、视频分析以及其它用例)中,即使感兴趣区域和/或对象相对于捕获帧序列的一个或多个相机移动,可能仍然期望保持来自帧序列的逐帧的感兴趣区域和/或感兴趣对象(或目标对象)的大小。例如,当在视频捕获场景中对踢足球的人员进行成像时,可能期望在整个视频中保持人员的恒定大小,即使人员相对于相机移动(例如,相对于相机横向地朝向和远离相机等)。在另一示例中,关于视频分析,可能期望在由一个或多个互联网协议(IP)相机系统所捕获的整个视频剪辑中保持被跟踪对象(例如,送货员)的大小。
图像捕获设备具有增加的有效变焦范围。例如,多相机系统可以被设计为允许比单个相机的数字变焦范围更大的变焦范围。然而,当用户尝试录制正在移动的对象(例如,踢足球的人员)的视频并且已经调谐了相机的变焦使得对象在帧中具有期望大小时,该对象的大小比率(对象相对于帧的大小,被称为对象大小与帧的比率)将随着对象移动而动态地变化。随着对象相对于捕获帧序列的一个或多个相机移动,可能难以在帧序列中保持期望的对象大小(例如,当首次启动视频捕获时初始帧中的对象的大小)。例如,对于用户而言,在视频的捕获期间手动地改变对象大小与帧的比例可能是繁琐的。在视频录制期间也可能难以跟踪(例如,自动地跟踪)受试者。
本文描述了用于保持帧序列中的目标对象的固定大小(称为“目标固定大小特征”)的系统、装置、过程(也称为方法)和计算机可读介质(统称为“系统和技术”)。帧序列可以是视频、连续捕获的图像的群组、或其它帧序列。例如,本文描述的系统和技术可以确定第一帧(或初始帧)中的感兴趣区域。在一些情况下,用户可以选择第一帧。例如,在一些示例中,用户可以从视频中选择任何帧作为起点。在一些示例中,系统和技术可以基于用户对感兴趣区域或感兴趣区域中的对象的选择,来确定感兴趣区域。在一些情况下,用户的选择可以基于使用用户界面(例如,设备的触控屏幕、电子绘图工具、基于手势的用户界面、基于语音输入的用户界面、或其它用户界面)而提供的用户输入。在一些示例中,系统和技术可以基于对象检测和/或识别技术来自动地确定感兴趣区域。例如,系统和技术可以检测和/或识别帧中的人,并且可以定义人员周围的感兴趣区域。
在一些情况下,系统和技术可以在确定感兴趣区域时(例如,当提供识别对象或包括对象的感兴趣区域的用户输入时)在第一(或初始)帧中确定对象和/或感兴趣区域的大小。在一些情况下,用户可以提供输入(例如,通过提供捏合输入进行变焦)以定义对象或感兴趣区域的期望大小,或者可以保持对象在第一/初始帧中的大小。在一些情况下,用户可以提供输入,该输入使得设备调整感兴趣区域和/或对象的大小以便定义针对帧序列中的对象的优选大小。当确定感兴趣区域时(例如,在用户选择对象时),系统和技术可以裁剪和缩放(例如,上采样)序列帧中的(在第一帧或初始帧之后出现的)一个或多个后续帧,以便保持对象在每个后续帧中的大小,以匹配对象在第一帧中的大小。在一些情况下,系统和技术可以执行裁剪和缩放操作,以使所选对象保持与该对象在第一帧中相同的大小,并且还可以使该对象在每个帧中保持在特定位置处(例如,在每个帧的中心、在帧中的其中对象位于第一帧中的位置处、或其它位置)。在一些示例中,系统和技术可以利用对象检测和跟踪技术,以便在帧序列中保持对象位置和/或大小不变。
在一些示例中,系统和技术可以将一个或多个平滑函数应用于对象或与包括对象的感兴趣区域相关联的边界框(或其它类型的边界区域)。一个或多个平滑函数可以导致逐渐执行裁剪和缩放,以便最小化帧序列中的对象的逐帧移动和对象的大小重新调整。(一个或多个)平滑函数的应用可以防止由于为了保持对象在每个帧中具有特定大小和/或位于特定位置而执行的裁剪和缩放而使该对象看起来在帧序列中以不自然的(例如,跳跃的)方式移动。在一些实现方式中,平滑函数可以解决位移(在帧内的移动)和/或边界框大小变化(对象大小变化,而不管中心点)。在一些情况下,位移可以相对于对象上的点(例如,中心点)或相对于与包括对象的感兴趣区域相关联的边界框内的点(例如,中心点)。在一些情况下,边界框大小变化可以包括相对于与对象相关联的距离(例如,对象的第一部分与该对象的第二部分之间的距离)或者与对应于包括对象的感兴趣区域的边界框相关联的距离(例如,边界框的对角线距离)。
在一些示例中,系统和技术可以应用于视频回放。在其它示例中,系统和技术可以应用于其它用例。例如,系统和技术可以生成在视频序列的帧中的特定点处(例如,在中心点处)具有恒定(例如,固定或几乎固定,以便观看视频的用户感觉不到大小变化)目标对象大小的视频结果。可以支持多个视频资源。
在一些示例中,设备可以实现一个或多个双相机模式特征。例如,可以通过同时使用设备的两个相机镜头(诸如主相机镜头(例如,长焦镜头)和辅助相机镜头(例如,变焦镜头,诸如广角镜头))来实现双相机模式特征。双相机模式特征的一个示例是“双相机视频录制”特征,其中两个相机镜头同时录制两个视频。然后这两个视频可以被显示、存储、发送给另一设备,和/或以其它方式被使用。使用双相机模式特征(例如,双相机视频录制),设备可以在显示器上同时显示场景的两个透视图(例如,分屏视频)。双相机模式特征的优点可以包括:允许设备捕获场景的宽视野(例如,在场景中具有更多的背景和周围对象),允许设备捕获大规模事件或场景的全景、以及其它优点。
对于使用单个相机捕获的视频(或对于另一帧序列或图像序列),可能会出现关于保持帧序列中的目标对象的固定大小的各种问题。例如,当目标对象移向设备的相机时,设备可能由于初始视频帧的视野的限制而无法执行缩小效果。在另一示例中,当目标对象远离设备的相机进行移动时,基于初始视频帧而生成的放大图像可能是模糊的,可能包括一个或多个视觉伪像和/或可能缺乏清晰度。实现双相机模式特征的设备不包含任何人工智能技术。这样的系统要求终端用户使用视频编辑工具或软件应用程序来手动地编辑图像。
本文中还描述了用于在能够实现上述一个或多个双相机模式特征的设备的镜头或相机之间切换的系统和技术。例如,系统和技术可以在双相机系统中使用相机镜头切换算法,以用于在来自双相机系统的视频的帧序列中保持目标对象的固定大小。在一些情况下,系统和技术可以执行双相机变焦。在一些情况下,这些系统和技术可以提供更详细的对象变焦效果。在一些示例中,系统和技术可以应用于具有用于捕获视频或其它帧序列的两个以上相机的系统或设备。
使用这样的系统和技术,可以生成或录制在视频序列的帧中的特定点处(例如,在中心点处)具有恒定(例如,固定或几乎固定,从而使得观看视频的用户感觉不到大小变化)的目标对象大小的视频。基于变焦的系统和技术可以应用于实时视频录制、用于捕获静止图像(例如,照片)和/或用于其它用例。在一些情况下,用户可以选择感兴趣对象,或者系统可以自动地确定显著对象(感兴趣对象)。如上文描述,还提供了多相机系统支持。
任何类型的图像捕获设备(例如,包括一个或多个相机的移动设备、IP相机、诸如数码相机之类的相机设备和/或其它图像捕获设备)可以应用本文描述的技术。系统和技术可以应用于包括帧或图像的序列的任何类型的内容,诸如预先录制的视频内容、直播视频内容(例如,未预先录制的视频)、或其它内容。
下面将参考附图讨论本文描述的系统和技术的各方面。图1是示出图像捕获和处理系统100的架构的框图。图像捕获和处理系统100包括用于捕获和处理场景的图像(例如,场景110的图像)的各种组件。图像捕获和处理系统100可以捕获独立图像(或照片)和/或可以捕获包括特定序列中的多个图像(或视频帧)的视频。系统100的镜头115面向场景110并接收来自场景110的光。镜头115将光向图像传感器130弯曲。由镜头115接收的光穿过由一个或多个控制机构120控制的光圈,并由图像传感器130进行接收。
一个或多个控制机构120可以基于来自图像传感器130的信息和/或基于来自图像处理器150的信息来控制曝光、对焦和/或变焦。一个或多个控制机构120可以包括多个机构和组件;例如,控制机构120可以包括一个或多个曝光控制机构125A、一个或多个对焦控制机构125B和/或一个或多个变焦控制机构125C。除了所示出的那些以外,一个或多个控制机构120还可以包括附加的控制机构,诸如对模拟增益、闪光灯、HDR,景深和/或其它图像捕获属性进行控制的控制机构。
控制机构120的对焦控制机构125B可以获得对焦设置。在一些示例中,对焦控制机构125B将对焦设置保存在存储器寄存器中。基于对焦设置,对焦控制机构125B可以相对于图像传感器130的位置来调整镜头115的位置。例如,基于对焦设置,对焦控制机构125B可以通过驱动马达或伺服器来移动镜头115更靠近图像传感器130或者远离图像传感器130,由此调整对焦。在一些情况下,系统100中可以包括附加镜头,诸如图像传感器130的每个光电二极管上的一个或多个微镜头,在从镜头115接收到的光到达光电二极管之前,该一个或多个微镜头各自将光弯曲朝向相应的光电二极管。可以经由对比度检测自动对焦(CDAF)、相位检测自动对焦(PDAF)或其某种组合来确定对焦设置。可以使用控制机构120、图像传感器130和/或图像处理器150来确定对焦设置。可以将对焦设置称为图像捕获设置和/或图像处理设置。
控制机构120的曝光控制机构125A可以获得曝光设置。在一些情况下,曝光控制机构125A将曝光设置保存在存储器寄存器中。基于该曝光设置,曝光控制机构125A可以控制光圈的大小(例如,光圈大小或f/stop)、光圈打开的持续时间(例如,曝光时间或快门速度)、图像传感器130的感亮度(例如,ISO速度或胶片速度)、由图像传感器130应用的模拟增益、或其任意组合。曝光设置可以被称为图像捕获设置和/或图像处理设置。
控制机构120的变焦控制机构125C可以获得变焦设置。在一些示例中,缩放控制机构125C将变焦设置存储在存储器寄存器中。基于变焦设置,变焦控制机构125C可以控制包括镜头115和一个或多个附加镜头的镜头元件的总成(镜头总成(lens assembly))的焦距。例如,变焦控制机构125C可以通过驱动一个或多个马达或伺服器以使一个或多个镜头相对于彼此移动,来控制镜头总成的焦距。变焦设置可以被称为图像捕获设置和/或图像处理设置。在一些示例中,镜头总成可以包括等焦面(parfocal)变焦镜头或变焦距(varifocal)变焦镜头。在一些示例中,镜头总成可以包括对焦镜头(其在一些情况下可以是镜头115),该对焦镜头首先从场景110接收光,然后,在光到达图像传感器130之前,光穿过对焦镜头(例如,镜头115)与图像传感器130之间的无焦点变焦系统。在一些情况下,无焦点变焦系统可以包括相等或相似焦距(例如,在阈值差之内)的两个正(例如,会聚、凸)镜头,并且在这两个正镜头之间有一个负(例如,发散、凹)镜头。在一些情况下,变焦控制机构125C移动无焦点变焦系统中的一个或多个镜头,诸如该负镜头以及该正镜头中的一个正镜头或两个正镜头。
图像传感器130包括光电二极管或其它光敏元件的一个或多个阵列。每个光电二极管测量与图像传感器130产生的图像中的特定像素最终对应的光量。在一些情况下,不同的光电二极管可能被滤色器阵列的不同滤色器覆盖,因此可以测量与覆盖光电二极管的滤色器的颜色相匹配的光。可以使用各种滤色器阵列,包括拜耳滤色器阵列、四色滤色器阵列(也称为四拜耳滤色器)和/或其它滤色器阵列。例如,拜耳(Bayer)滤色器阵列包括红色滤色器、蓝色滤色器和绿色滤色器,其中图像的每个像素是基于来自红色滤色器中覆盖的至少一个光电二极管的红光数据、来自蓝色滤色器中覆盖的至少一个光电二极管的蓝光数据、以及来自绿色滤色器中覆盖的至少一个光电二极管的绿光数据而生成的。其它类型的滤色器阵列可以使用黄色、品红色和/或蓝绿色(也称为“翠绿色”)滤色器作为红色、蓝色和/或绿色滤色器的替代或补充。一些图像传感器可能完全没有滤色器,而是可能会在整个像素阵列中使用不同的光电二极管(在一些情况下竖直地堆叠)。整个像素阵列的不同光电二极管可以具有不同的光谱灵敏度曲线,因此响应于不同的光波长。单色图像传感器可能还缺少滤色器,并且因此缺少颜色深度。
在一些情况下,图像传感器130可以替代地或另外包括不透明和/或反射的屏蔽(mask),其在某些时间和/或从某些角度阻挡光到达某些光电二极管或某些光电二极管的部分,这可以用于相位检测自动对焦(PDAF)。图像传感器130还可以包括用于放大由光电二极管输出的模拟信号的模拟增益放大器和/或用于将光电二极管输出(和/或由模拟增益放大器放大的)的模拟信号转换为数字信号的模数转换器(ADC)。在一些情况下,在图像传感器130中可以替代地或另外包括关于一个或多个控制机构120所讨论的某些组件或功能。图像传感器130可以是电荷耦合设备(CCD)传感器、电子-倍增CCD(EMCCD)传感器、有源像素传感器(APS)、互补金属氧化物半导体(CMOS)、N型金属氧化物半导体(NMOS)、混合CCD/CMOS传感器(例如,sCMOS)、或者其某种其它组合。
图像处理器150可以包括一个或多个处理器,诸如一个或多个图像信号处理器(ISP)(包括ISP 154)、一个或多个主机处理器(包括主机处理器152)和/或关于计算系统4700所讨论的任何其它类型的处理器4710中的一个或多个其它类型的处理器。主机处理器152可以是数字信号处理器(DSP)和/或其它类型的处理器。图像处理器150可以将图像帧和/或处理后的图像保存在随机存取存储器(RAM)140/4720、只读存储器(ROM)145/4725、高速缓存4712、系统存储器4715、另一存储设备4730、或者其某种组合中。
在一些实现方式中,图像处理器150是包括主机处理器152和ISP 154的单个集成电路或芯片(例如,被称为片上系统或SoC)。在一些情况下,芯片还可以包括一个或多个输入/输出端口(例如,输入/输出(I/O)端口156)、中央处理单元(CPU)、图形处理单元(GPU)、宽带调制解调器(例如,3G、4G或LTE、5G等)、存储器、连接性组件(例如、蓝牙TM、全球定位系统(GPS)等)、其任何组合和/或其它组件。I/O端口156可以包括根据一个或多个协议或规范的任何合适的输入/输出端口或接口,诸如集成电路间2(I2C)接口、集成电路间3(I3C)界面、串行外围接口(SPI)接口、串行通用输入/输出(GPIO)接口、移动工业处理器接口(MIPI)(诸如MIPI CSI-2物理(PHY)层端口或接口)、高级高性能总线(AHB)总线、其任意组合和/或其它输入/输出端口。在一个说明性示例中,主机处理器152可以使用I2C端口与图像传感器130进行通信,而ISP 154可以使用MIPI端口与图像传感器130进行通信。
图像处理器150的主机处理器152可以使用参数设置(例如,经由诸如I2C、I3C、SPI、GPIO和/或其它接口之类的外部控制接口)来配置图像传感器130。在一个说明性示例中,主机处理器152可以基于来自过去图像帧的曝光控制算法的内部处理结果来更新由图像传感器130所使用的曝光设置。主机处理器152还可以动态地配置ISP 154的内部流水线或模块的参数设置,以匹配来自图像传感器130的一个或多个输入图像帧的设置,使得ISP154正确地处理图像数据。ISP 154的处理(或流水线)块或模块可以包括用于镜头/传感器噪声校正、去马赛克、颜色转换、图像属性的校正或增强/抑制、降噪滤波器、锐化滤波器等的模块。例如,ISP 154的处理块或模块可以执行许多任务,例如,去马赛克、颜色空间转换、图像帧下采样、像素插值、自动曝光(AE)控制、自动增益控制(AGC)、CDAF、PDAF、自动白平衡、图像帧的合并以形成HDR图像、图像识别、对象识别、特征识别、输入的接收、管理输出、管理存储器、或其某种组合。主机处理器152可以配置ISP 154的不同模块的设置。
图像处理设备105B可以包括连接到图像处理器150的各种输入/输出(I/O)设备160。I/O设备160可以包括显示屏幕、键盘、小键盘、触控屏幕、轨迹板、触摸感应表面、打印机、任何其它输出设备4735、任何其它输入设备4745、或其某种组合。在一些情况下,可以通过I/O设备160的物理键盘或小键盘、或者通过I/O设备160的触控屏幕的虚拟键盘或小键盘,将字幕输入到图像处理设备105B中。I/O 160可以包括能够实现系统100与一个或多个外围设备之间有线连接的一个或多个端口、插孔、或其它连接器,系统100可以通过该有线连接从一个或多个外围设备接收数据和/或将数据发送给一个或多个外围设备。I/O 160可以包括一个或多个无线收发器,该一个或多个无线收发器实现系统100与一个或多个外围设备之间的无线连接,系统100可以通过该无线连接从一个或多个外围设备接收数据和/或将数据发送给一个或多个外围设备。外围设备可以包括任何先前讨论的类型的I/O设备160,并且一旦外围设备耦合到端口、插孔、无线收发器或其它有线和/或无线连接器,外围设备本身就可以被认为是I/O设备160。
在一些情况下,图像捕获和处理系统100可以是单个设备。在一些情况下,图像捕获和处理系统100可以是两个或更多个单独的设备,包括图像捕获设备105A(例如,相机)和图像处理设备105B(例如,耦合到相机的计算设备)。在一些实现方式中,图像捕获设备105A和图像处理设备105B可以例如经由一个或多个电线、电缆或其它电连接器和/或经由一个或多个无线收发器无线地耦合在一起。在一些实现方式中,图像捕获设备105A和图像处理设备105B可以彼此断开连接。
如图1中所示,竖直虚线将图1的图像捕获和处理系统100分成两个部分,这两个部分分别表示图像捕获设备105A和图像处理设备105B。图像捕获设备105A包括镜头115、控制机构120和图像传感器130。图像处理设备105B包括图像处理器150(包括ISP 154和主处理器152)、RAM 140、ROM 145和I/O 160。在一些情况下,图像捕获设备105A中示出的某些组件,诸如ISP 154和/或主机处理器152,可以被包括在图像捕获设备105A中。
图像捕获和处理系统100可以包括电子设备(例如,移动或固定电话手机(例如,智能电话、蜂窝电话等)、互联网协议(IP)相机、台式计算机、膝上型计算机、或笔记本计算机、平板计算机、机顶框、电视机、相机、显示设备、数字媒体播放器、视频游戏机、视频流设备、或任何其它合适的电子设备),或者是电子设备的一部分。在一些示例中,图像捕获和处理系统100可以包括用于无线通信(诸如蜂窝网络通信、802.11Wi-Fi通信、无线局域网(WLAN)通信、或其某种组合)的一个或多个无线收发器。在一些实现方式中,图像捕获设备105A和图像处理设备105B可以是不同的设备。例如,图像捕获设备105A可以包括相机设备,并且图像处理设备105B可以包括计算设备,诸如移动手机、台式计算机或其它计算设备。
尽管图像捕获和处理系统100被示出为包括某些组件,但是本领域普通技术人员将会理解,与图1中所示的相比,图像捕获和处理系统100可以包括更多组件。图像捕获和处理系统100的组件可以包括软件、硬件、或者软件与硬件的一种或多种组合。例如,在一些实现方式中,图像捕获和处理系统100的组件可以包括和/或可以使用电子电路或其它电子硬件来实现,该电子电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、GPU、DSP、CPU和/或其它合适的电子电路),和/或可以包括计算机软件、固件或其任何组合,和/或使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。软件和/或固件可以包括存储在计算机可读存储介质上并且可由实现图像捕获的电子设备的一个或多个处理器和处理系统100执行的一个或多个指令。
在一些示例中,图像捕获和处理系统100可以被实现为系统的一部分,其能够用于执行对象检测和/或从视频的帧中跟踪对象。这种系统的一个示例是视频分析系统。对象检测和跟踪是计算机视觉中的广泛应用中的重要组件,诸如监视相机、人机交互以及其它。假设视频帧中的目标对象(或感兴趣对象)的初始化状态(例如,位置和大小),跟踪的目的是估计该目标在后续帧中的状态。对象检测和跟踪系统(例如,视频分析系统)有能力输出补丁(例如,边界框)作为对视频的每个帧的检测和跟踪结果。基于这些补丁,可以应用斑点或对象分类技术(例如,基于神经网络的分类)来确定是否应当将对象分类为某种类型的对象(例如,汽车或人员)。对象检测、识别和跟踪的一项任务是分析视频中的对象的移动和行为。该任务的优点是,视频分析系统可以存取高分辨率(例如,1080p、4K或8K)视频帧,以便有可能存取关于被跟踪对象的更多细节。
通常,视频分析系统可以从视频源获得视频帧的序列,并且可以处理视频序列以执行各种任务。视频源的一个示例可以包括IP相机或其它视频捕获设备。IP相机是一种数码摄像机,能够用于监视、住宅安保和/或其它合适应用。与模拟闭路电视(CCTV)相机不同,IP相机可以经由计算机网络和互联网发送和接收数据。在一些情况下,一个或多个IP相机可以位于场景或环境中,并且能够在捕获场景或环境的视频序列时可以保持静态。
在一些情况下,IP相机系统能够用于双向通信。例如,IP相机可以使用一根或多根网络电缆或使用无线网络来发送数据(例如,音频、视频、元数据等),以允许用户与他们正在观看的内容进行通信。在一个说明性示例中,加油站职员可以使用从IP相机提供的视频数据协助客户如何使用付款泵(例如,通过观看客户在付款泵处的动作)。还可以经由单个网络或多个网络来发送用于平移、倾斜、变焦(PTZ)相机的命令。此外,IP相机系统提供了灵活性和无线功能。例如,IP相机可以提供到网络的轻松连接、可调整的相机位置、以及通过互联网对服务进行远程存取。IP相机系统还提供了分布式智能。例如,利用IP相机,可以将视频分析放置在相机本身中。用IP相机还可以轻松地提供加密和认证。例如,IP相机通过已经针对基于IP的应用而定义的加密和认证方法,来提供安全数据发送。更进一步地,使用IP相机来提高人工成本效率。例如,视频分析可以为某些事件生成警报,这降低了在系统中(基于警报)监视所有相机的人工成本。
视频分析提供了各种任务,范围为从即时检测感兴趣事件到分析预先录制视频以用于在长时段中提取事件、以及许多其它任务。各种调查研究和现实生活经验指示,例如,在监视系统中,即使从一台相机监视图片,操作员通常也不能保持警觉和专注超过20分钟。当要监视两个或更多相机时或者当时间超过一定时间段(例如,20分钟)时,操作员监视视频并对事件进行有效响应的能力大幅降低。视频分析可以自动地分析来自相机的视频序列,并发送关于感兴趣事件的警报。这样,操作员可以在被动模式下监视一个或多个场景。此外,视频分析可以分析大量的录制视频,并能够提取包含感兴趣事件的具体视频片段。
视频分析还提供各种其它特征。例如,视频分析可以通过检测移动对象并跟踪移动对象来作为智能视频运动检测器进行操作。在一些情况下,视频分析可以生成并显示有效对象周围的边界框。视频分析还可以用作入侵检测器、视频计数器(例如,通过对人员、对象、车辆等进行计数)、相机篡改检测器、对象遗留检测器、对象/财产去除检测器、财产保护器、徘徊检测器和/或用作滑移和摔倒检测器。视频分析还可以用于执行各种类型的识别功能,诸如面部检测和识别、车牌识别、对象识别(例如,包、徽标、身体标记等)或其它识别功能。在一些情况下,可以训练视频分析来识别某些对象。视频分析能够执行的另一功能包括为客户指针提供人口统计信息(例如,客户人数、性别、年龄、所花费的时间量、以及其它合适的指标)。视频分析还可以执行视频搜索(例如,提取针对给定区域的基本活动)和视频摘要(例如,关键移动的提取)。在一些情况下,可以由视频分析来执行事件检测,包括对火灾、烟雾、斗殴、人潮形成、或任何其它合适的检测,甚至将视频分析编程或学习检测。检测器可以触发对感兴趣事件的检测,并且可以向中央控制室发送警告或警报,以向用户警告感兴趣事件。
在一些情况下,如本文中更详细描述的,视频分析系统可以生成并检测能够用于执行各种操作(诸如对象跟踪(也称为斑点跟踪)和/或上述其它操作)的前景斑点。对象跟踪器(在一些情况下也称为斑点跟踪器)能够用于使用一个或多个边界区域来跟踪视频序列中的一个或多个对象(或表示对象的点)。边界区域可以包括边界框、边界圆、边界椭圆、或表示对象和/或感兴趣区域的任何其它合适形状的区域。下面参考图2至图5描述具有斑点检测和对象跟踪的示例性视频分析系统的细节。
图2是示出视频分析系统200的示例的框图。视频分析系统200从视频源230接收视频帧202。视频帧202在本文中也可以被称为帧序列。每个帧也可以称为视频图片或图片。视频帧202可以是一个或多个视频序列的一部分。视频源230可以包括图像捕获设备(例如,图像捕获和处理系统100、相机、相机电话、视频电话、或其它合适的捕获设备)、视频存储设备、包含所存储的视频的视频档案、提供视频数据的视频服务器或内容提供商、从视频服务器或内容提供商接收视频的视频馈送界面、用于生成计算机图形视频数据的计算机图形系统、此类源的组合、或其它视频内容源。在一个示例中,视频源230可以包括IP相机或多个IP相机。在说明性示例中,多个IP相机可以位于整个环境中,并且可以将视频帧202提供给视频分析系统200。例如,可以将IP相机放置在环境内的各个视野,以便能够基于所捕获的环境的视频帧202来执行监视。
在一些实施例中,视频分析系统200和视频源230可以是同一计算设备的一部分。在一些实施例中,视频分析系统200和视频源230可以是单独的计算设备的一部分。在一些示例中,一个或多个计算设备可以包括用于无线通信的一个或多个无线收发器。一个或多个计算设备可以包括电子设备,诸如相机(例如,IP相机或其它相机、相机电话、视频电话、或其它合适的捕获设备)、移动或静止的电话手机(例如,智能电话、蜂窝电话等)、台式计算机、膝上型计算机、或笔记本计算机、平板计算机、机顶框、电视机、显示设备、数字媒体播放器、视频游戏机、视频流设备、或任何其它合适的电子设备。
视频分析系统200包括斑点检测系统204和对象跟踪系统206。对象检测和跟踪允许视频分析系统200提供各种端对端特征,诸如上述视频分析特征。例如,智能运动检测和跟踪、入侵检测和其它特征能够直接地使用来自对象检测和跟踪的结果来生成端对端事件。基于对象检测和跟踪的结果,可以大幅简化其它特征,诸如人员、车辆或其它对象计数和分类。斑点检测系统204可以检测视频序列的视频帧(例如,视频帧202)中的一个或多个斑点,并且对象跟踪系统206可以跨视频序列的帧来跟踪一个或多个斑点。对象跟踪系统206可以基于任何类型的对象跟踪算法,诸如基于成本的跟踪、基于机器学习的跟踪、以及其它。
如本文中所使用,斑点是指视频帧中的对象的至少一部分(例如,对象的一部分或者整个对象)的前景像素。例如,斑点可以包括构成视频帧中的前景对象的至少一部分的连续像素组。在另一示例中,斑点可以指构成图像数据的帧中的背景对象的至少一部分的连续像素组。斑点也可以被称为对象、对象的一部分、像素的斑点、像素补丁、像素的簇、像素的点、一块像素、一团像素、或指对象或其一部分的一组像素的任何其它术语。在一些示例中,边界区域可以与斑点相关联。在一些示例中,跟踪器还可以由跟踪器边界区域来表示。斑点或跟踪器的边界区域可以包括边界框、边界圆、边界椭圆、或者表示跟踪器和/或点的任何其它适当形状的区域。尽管出于说明性目的在本文中使用边界框来描述了示例,但是也可以使用其它适当形状的边界区域来应用本文描述的技术和系统。与跟踪器和/或斑点相关联的边界框可以具有长方形、正方形或其它合适的形状。在跟踪层中,在不需要知道如何在边界框内以公式表示该斑点的情况下,术语斑点和边界框可以互换使用。
如下面更详细地描述的,可以使用斑点跟踪器来跟踪斑点。斑点跟踪器可以与跟踪器边界框相关联,并且可以分配跟踪器识别符(ID)。在一些示例中,针对当前帧中的斑点跟踪器的边界框可以是与该斑点跟踪器相关联的前一帧中的先前斑点的边界框。例如,当斑点跟踪器(在与前一帧中的先前斑点相关联之后)在前一帧中被更新时,针对斑点跟踪器的更新信息可以包括针对前一帧的跟踪信息以及还有对斑点跟踪器在下一帧(在本例中其是当前帧)中的位置的预测。对当前帧中的斑点跟踪器的位置的预测可以基于斑点在前一帧中的位置。可以针对斑点跟踪器,保持历史或运动模型,包括用于斑点跟踪器的连续帧的各种状态的历史、速度的历史、以及位置的历史,如下面更详细描述的。
在一些示例中,用于斑点跟踪器的运动模型可以确定并保持针对每个帧的斑点跟踪器的两个位置。例如,用于当前帧的斑点跟踪器的第一位置可以包括当前帧中的预测位置。第一位置在本文中称为预测位置。斑点跟踪器在当前帧中的预测位置包括与斑点跟踪器相关联的斑点的前一帧中的位置。因此,与前一帧中的斑点跟踪器相关联的斑点的位置可以用作当前帧中的斑点跟踪器的预测位置。用于当前帧的斑点跟踪器的第二位置可以包括斑点在当前帧中的与当前帧中的跟踪器相关联的位置。第二位置在本文中称为实际位置。相应地,斑点在当前帧中的与斑点跟踪器相关联的位置被用作斑点跟踪器在当前帧中的实际位置。斑点跟踪器在当前帧中的实际位置可以用作斑点跟踪器在下一帧中的预测位置。斑点的位置可以包括斑点的边界框的位置。
斑点跟踪器的速度可以包括斑点跟踪器在连续帧之间的位移。例如,可以确定针对两个连续帧中的斑点跟踪器的两个边界框的中心(或质心)之间的位移。在一个说明性示例中,可以将斑点跟踪器的速度定义为Vt=Ct-Ct-1,其中Ct-Ct-1=(Ctx-Ct-1x,Cty-Ct-1y)。项Ct(Ctx,Cty)表示跟踪器的边界框在当前帧中的中心位置,其中Ctx是边界框的x坐标,而Cty是边界框的y坐标。项Ct-1(Ct-1x,Ct-1y)表示跟踪器的边界框在前一帧中的中心位置(x和y)。在一些实现方式中,还有可能使用四个参数来同时估计x、y、宽度、高度。在一些情况下,因为针对视频帧数据的定时是恒定的或至少没有明显不同的超时(根据帧速率,例如,每秒30帧、每秒60帧、每秒120帧、或其它合适的帧速率),在速度计算中可能不需要时间变量。在一些情况下,可以使用时间常数(根据实时帧速率)和/或可以使用时间戳。
使用斑点检测系统204和对象跟踪系统206,视频分析系统200可以针对视频序列的每个帧或图片执行斑点生成和检测。例如,斑点检测系统204可以执行针对帧的背景减法,并且然后可以检测在帧中的前景像素。使用形态学运算和空间分析从前景像素生成前景斑点。另外,来自先前帧的斑点跟踪器需要与当前帧中的前景斑点相关联,并且还需要被更新。跟踪器与斑点的数据关联以及跟踪器更新两者都可以依赖于成本函数计算。例如,当从当前输入视频帧中检测到斑点时,可以根据成本计算将来自前一帧的斑点跟踪器与检测到的斑点进行关联。然后根据数据关联来更新跟踪器,包括更新跟踪器的状态和位置,使得能够实现对当前帧中的对象进行跟踪。参考图4和图5描述了与斑点检测系统204和对象跟踪系统206有关的更多细节。
图3是在时间t上处理视频帧的视频分析系统(例如,视频分析系统200)的示例。如图3中所示,视频帧A 302A是由斑点检测系统304A进行接收的。斑点检测系统304A生成针对当前帧A 302A的前景斑点308A。在执行斑点检测之后,前景斑点308A可以用于由对象跟踪系统306A进行时间跟踪。对象跟踪系统306A可以计算斑点跟踪器与斑点之间的成本(例如,包括距离、加权距离的成本或其它成本)。对象跟踪系统306A可以使用计算出的成本(例如,使用成本矩阵或其它合适的关联技术)来将执行数据关联以便将斑点跟踪器(例如,基于前一帧或新生成的斑点跟踪器而生成或更新的斑点跟踪器)与斑点308A进行关联或匹配。可以根据数据关联来更新斑点跟踪器,包括跟踪器的位置方面,以生成经更新的斑点跟踪器310A。例如,可以计算和更新针对视频帧A 302A的斑点跟踪器的状态和位置。也可以从当前视频帧A 302A预测下一个视频帧N 302N中的斑点跟踪器的位置。例如,针对下一视频帧N302N的斑点跟踪器的预测位置可以包括当前视频帧A 302A中的斑点跟踪器(及其相关联的点)的位置。一旦生成经更新的斑点跟踪器310A,就可以执行对当前帧A 302A的斑点的跟踪。
当接收到下一视频帧N 302N时,斑点检测系统304N针对帧N 302N生成前景斑点308N。然后,对象跟踪系统306N可以执行对斑点308N的时间跟踪。例如,对象跟踪系统306N获得基于先前视频帧A 302A而更新了的斑点跟踪器310A。然后,对象跟踪系统306N可以计算成本,并且可以使用新计算的成本来将斑点跟踪器310A和点308N进行关联。可以根据数据关联来更新斑点跟踪器310A,以生成经更新的斑点跟踪器310N。
图4是示出斑点检测系统204的示例的框图。斑点检测用于从场景中的全局背景中分割出移动对象。斑点检测系统204包括接收视频帧402的背景减法引擎412。背景减法引擎412可以执行背景减法以检测一个或多个视频帧402中的前景像素。例如,背景减法可以用于从视频序列中的全局背景中分割出移动对象,并且生成前景-背景二进制屏蔽(在本文中被称为前景屏蔽)。在一些示例中,背景减法可以在当前帧或图片与包括场景的背景部分(例如,场景的静态或大部分静态部分)的背景模型之间执行减法。基于背景减法的结果,形态学引擎414和连接分量分析引擎416可以执行前景像素处理,以便对前景像素进行分群为前景斑点,以用于跟踪目的。例如,在减去背景之后,可以应用形态学运算来去除噪声像素以及平滑前景屏蔽。然后,可以应用经连接的组件分析来生成点。然后,可以执行斑点处理,其可以包括进一步滤波出一些斑点,并将一些斑点合并在一起以提供边界框作为用于跟踪的输入。
背景减法引擎412可以使用任何合适的背景减法技术(也称为背景提取)来对(例如,在视频序列中捕获的)场景的背景进行建模。由背景减法引擎412所使用的背景减法方法的一个示例包括:基于不被认为属任何移动区域的先前帧中的相对静态像素,对场景的背景进行建模,作为统计模型。例如,背景减法引擎412可以针对每个像素位置使用高斯分布模型,并且具有均值和方差的参数来对视频序列的帧中的每个像素位置进行建模。特定像素位置处的先前像素的全部值都用于计算针对像素位置的目标高斯模型的均值和方差。当处理在新视频帧中的给定位置处的像素时,将通过该像素位置的当前高斯分布来评估该像素的值。通过比较像素值与指定的高斯模型的均值之间的差,可以将像素分类为前景像素或背景像素。在一个说明性示例中,如果像素值和高斯均值的距离小于方差的三(3)倍,则将该像素分类为背景像素。否则,在该说明性示例中,像素被分类为前景像素。同时,将通过考虑当前像素值,来更新针对像素位置的高斯模型。
背景减法引擎412还可以使用高斯的混合(也称为高斯混合模型(GMM))来执行背景减法。GMM将每个像素建模为混合的高斯模型,并使用在线学习算法来更新模型。每个高斯模型都用均值,标准偏差(如果像素有多个通道,则用协方差矩阵表示)和权重表示。权重表示高斯在过去的历史中发生的概率。
方程式(1)
在方程式(1)中示出了GMM模型的方程式,其中存在K个高斯模型。每个高斯模型具有均值为μ和方差为∑的分布,并具有权重ω。此处,i是对高斯模型的索引,并且t是时间实例。如方程式所示,在处理一帧(在时间t)后,GMM的参数随时间而变化。在GMM或任何其它基于学习的背景减法中,当前像素基于学习速率来影响像素位置的整个模型,该学习速率可以是恒定的或者通常对于每个像素位置而言至少是相同的。基于GMM的背景减法(或其它基于学习的背景减法)适用于针对每个像素的局部变化。因此,一旦移动对象停止,则对于该对象的每个像素位置,相同的像素值继续对其相关联的背景模型有很大的贡献,并且与该对象相关联的区域成为背景。
上面提到的背景减法技术是基于以下假设:相机静止地安装,并且如果任何时候相机移动或相机的取向改变,将需要计算新的背景模型。还有能够基于移动背景来处理前景减法的背景减法方法,包括诸如跟踪关键点、光流、显著性以及其它基于运动估计的方法之类的技术。
背景减法引擎412可以基于背景减法的结果来生成具有前景像素的前景屏蔽。例如,前景屏蔽可以包括二进制图像,该二进制图像包含构成场景中的前景对象(例如,移动对象)的像素和背景的像素。在一些示例中,前景屏蔽的背景(背景像素)可以是纯色,诸如纯白色背景、纯黑色背景或其它纯色。在这些示例中,前景屏蔽的前景像素可以是与用于背景像素的颜色不同的颜色,诸如纯黑色、纯白色或其它纯色。在一个说明性示例中,背景像素可以是黑色(例如,8位灰阶中的像素颜色值0或其它合适的值),而前景像素可以是白色(例如,8位灰阶中的像素颜色值255或其它合适的值)。在另一个说明性示例中,背景像素可以是白色,而前景像素可以是黑色。
使用从背景减法生成的前景屏蔽,形态学引擎414可以执行形态学函数以对前景像素进行滤波。形态学函数可以包括腐蚀和膨胀函数。在一个示例中,可以应用腐蚀函数,随后是一系列的一个或多个膨胀函数。可以应用腐蚀函数来去除对象边界上的像素。例如,形态学引擎414可以将腐蚀函数(例如,滤波器腐蚀FilterErode3×3)应用于当前正在处理的中心像素的3×3滤波器窗口。可以将3×3窗口应用于前景屏蔽中的每个前景像素(作为中心像素)。本领域普通技术人员将理解,可以使用与3×3窗口不同的其它窗口大小。腐蚀函数可以包括腐蚀运算,如果3×3窗口内的前景屏蔽中的当前前景像素(用作中心像素)的相邻像素中的一个或多个相邻像素是背景像素,则腐蚀运算将当前前景像素设置为背景像素。这样的腐蚀运算可以被称为强腐蚀运算或单个邻居腐蚀运算。此处,当前中心像素的相邻像素包括3×3窗口中的八个像素,并且第九像素是当前中心像素。
可以使用膨胀运算来增强前景对象的边界。例如,形态学引擎414可以将膨胀函数(例如,滤波器膨胀FilterDialte3×3)应用于中心像素的3×3滤波器窗口。可以将3×3膨胀窗口应用于前景屏蔽中的每个背景像素(作为中心像素)。本领域普通技术人员将会理解,可以使用与3×3窗口不同的其它窗口大小。膨胀函数可以包括膨胀运算,如果在3×3窗口中的前景屏蔽中的当前背景像素(用作中心像素)的相邻像素中的一个或多个相邻像素是前景像素,则该膨胀运算将当前背景像素设置为前景像素。当前中心像素的相邻像素包括在3×3窗口中的8个像素,并且第九像素是当前中心像素。在一些示例中,可以在应用腐蚀函数之后应用多个膨胀函数。在一个说明性示例中,在将3×3窗口大小的膨胀的三个函数调用发送给连接分量分析引擎416之前,可以将这三个函数调用应用于前景屏蔽。在一些示例中,可以首先应用腐蚀函数以去除噪声像素,并且然后可以应用一系列膨胀函数来细化前景像素。在一个说明性示例中,首先调用具有3×3窗口大小的一个腐蚀函数,并且在将3×3窗口大小的膨胀的三个函数调用发送给连接分量分析引擎416之前,将这三个函数调用应用于前景屏蔽。下面描述有关内容自适应形态学运算的细节。
在执行形态学操作之后,连接分量分析引擎416可以应用连接分量分析以连接相邻前景像素,以便以公式表示连接分量和斑点。在连接分量分析的某些实现方式中,以每个边界框包含连接像素的一个分量的方式返回一组边界框。由连接分量分析引擎416执行的连接分量分析的一个示例被实现如下:
针对前景屏蔽的每个像素{
-如果它是前景像素并且尚未被处理,则适用以下步骤:
-应用FloodFill函数以便将该像素连接到其它前景并生成连接分量
-将连接分量插入到连接分量的列表中。
-将连接分量中的像素标记为正在被处理}
Floodfill(种子填充)函数是一种确定连接到多维阵列(例如,在这种情况下是2-D图像)中的种子节点的区域的算法。该Floodfill函数首先获得在源前景屏蔽的种子位置(例如,前景像素)处的颜色或强度值,并且然后基于4或8连接性找到具有相同(或相似)值的所有相邻像素。例如,在4连接情况下,当前像素的邻居被定义为坐标为(x+d,y)或(x,y+d)的那些像素,其中d等于1或-1,并且(x,y)是当前像素。本领域普通技术人员将会理解,能够使用其它数量的连接。一些对象被分成不同的连接分量,并且将一些对象分为同一连接分量(例如,具有相同或相似值的相邻像素)。可以应用附加处理来进一步处理连接分量以进行分组。最后,根据连接分量,生成包括相邻前景像素的斑点408。在一个示例中,斑点可以由一个连接分量来组成。在另一个示例中,斑点可以包括多个连接分量(例如,当两个或多个斑点合并在一起时)。
斑点处理引擎418可以执行附加处理以进一步处理由连接分量分析引擎416所生成的斑点。在一些示例中,斑点处理引擎418可以生成边界框以表示检测到的斑点和斑点跟踪器。在一些情况下,可以从斑点检测系统204输出点边界框。在一些示例中,可能存在针对连接分量(边界框)的滤波处理。例如,斑点处理引擎418可执行某些斑点的基于内容的滤波。在一些情况下,机器学习方法可以确定当前斑点包含噪声(例如,场景中的树叶)。使用机器学习信息,斑点处理引擎418可以确定当前斑点是噪声斑点,并且可以将其从提供给对象跟踪系统206的结果点中去除。在一些情况下,斑点处理引擎418可以滤波掉低于某个大小阈值的一个或多个小斑点(例如,围绕一个斑点的边界框的面积低于面积阈值)。在一些示例中,可能存在合并过程,以将一些连接分量(表示为边界框)合并到更大的边界框中。例如,斑点处理引擎418可以将靠近的斑点合并成一个大斑点,以消除有太多小斑点可能属一个对象的风险。在一些情况下,即使两个边界框的前景像素完全断开连接,也可以基于某些规则将两个或更多个边界框合并在一起。在一些实施例中,斑点检测系统204不包括斑点处理引擎418,或者在一些情况下不使用斑点处理引擎418。例如,可以将由连接分量分析引擎416所生成的斑点在不进一步处理的情况下输入到对象跟踪系统206,以执行斑点和/或对象跟踪。
在一些实现方式中,可以由斑点处理引擎418执行基于密度的斑点面积修整。例如,当在后滤波之后并且在将斑点输入到跟踪层中之前已经以公式表示了所有斑点时,可以应用基于密度的斑点面积修整。竖直和水平地应用类似的过程。例如,可以首先竖直地然后水平地执行基于密度的斑点面积修整,反之亦然。基于密度的斑点面积修整的目的是,如果列或行仅包含少量的前景像素,则将边界框的列(在竖直过程中)和/或行(在水平过程中)滤波掉。
竖直过程包括计算边界框的每列的前景像素的数量,并将前景像素的数量表示为列密度。然后,从最左边的列开始,对列进行一个接一个的处理。将每个当前列(当前正在处理的列)的列密度与最大列密度(所有列的列密度)进行比较。如果当前列的列密度小于阈值(例如,最大列密度的百分比,诸如10%、20%、30%、50%或其它合适的百分比),则将该列从边界框中去除,并且处理下一列。然而,一旦当前列具有的列密度不小于阈值,该处理就结束,并且不再处理其余的列。然后,可以从最右边的列应用类似处理。本领域普通技术人员将理解,竖直过程可以处理以与最左边的列不同的列开始的列,诸如最右边的列或者边界框中的其它合适的列。
除了边界框的行而不是列被处理之外,水平的基于密度的斑点面积修整处理类似于竖直过程。例如,计算边界框的每一行的前景像素的数量,并将其表示为行密度。然后,从最顶部行开始逐行处理这些行。对于每个当前行(当前正在处理的行),将行密度与最大行密度(所有行的行密度)进行比较。如果当前行的行密度小于阈值(例如,最大行密度的百分比,诸如10%、20%、30%、50%或其它合适的百分比),则将该行从边界框中去除,然后处理下一行。然而,一旦当前行具有的行密度不小于阈值,该处理将结束,并且不再处理其余的行。然后,可以从最底部的行应用类似的处理。本领域普通技术人员将理解,水平处理可以处理以与最顶部行不同的行开始的行,例如,最底部的行或边界框中的其它合适的行。
基于密度的斑点面积修整的目的之一是为了去除阴影。例如,当在一个斑点(边界框)中检测到一个人及其长而细的阴影时,可以应用基于密度的斑点面积修剪。由于阴影面积中的列密度相对较小,因此在应用基于密度的斑点面积修整后可以去除这样的阴影面积。与形态学不同,形态学改变了斑点的厚度(除了从以公式表示斑点中滤波掉一些孤立的前景像素以外),还大致保留边界框的形状,这样的基于密度的斑点面积修整方法可以极大地改变边界框的形状。
一旦检测到斑点并对其进行处理,就可以执行对象跟踪(也称为斑点跟踪)以跟踪所检测到的斑点。在一些示例中,可以使用基于成本的技术来执行跟踪,如关于图5所描述的。在一些示例中,可以使用一个或多个机器学习系统(例如,使用一个或多个基于神经网络的系统)来执行跟踪,如下面进一步描述的。
图5是示出对象跟踪系统206的示例的框图。对斑点/对象跟踪的输入是由斑点检测系统204所生成的斑点508的列表(例如,斑点的边界框)。在一些情况下,向跟踪器分配了唯一的ID,并保留了边界框的历史。视频序列中的对象跟踪可以用于许多应用,包括监视应用以及其它。例如,在许多安全应用中,检测和跟踪同一场景中的多个对象的能力引起了极大的兴趣。当从输入视频帧中检测到斑点(构成对象的至少一部分)时,根据成本计算,需要将来自先前视频帧的斑点跟踪器与输入视频帧中的斑点进行关联。可以基于关联的前景斑点来更新斑点跟踪器。在一些情况下,可以以一系列方式实现对象跟踪中的步骤。
对象跟踪系统206的成本确定引擎512可以从斑点检测系统204中获得当前视频帧的斑点508。成本确定引擎512还可以获得从先前视频帧(例如,视频帧A 302A)更新的斑点跟踪器510A。然后,可以使用成本函数来计算斑点跟踪器510A和斑点508之间的成本。可以使用任何合适的成本函数来计算成本。在一些示例中,成本确定引擎512可以通过计算在跟踪器的质心(例如,针对跟踪器的边界框)与前景斑点的边界框的质心之间的欧几里德(Euclidean)距离,来测量斑点跟踪器与斑点之间的成本。在一个使用2-D视频序列的说明性示例中,这种成本函数的计算如下:
项(tx,ty)和(bx,by)分别是斑点跟踪器和斑点边界框的中心位置。如本文描述,在一些示例中,斑点跟踪器的边界框可以是与先前帧中的斑点跟踪器相关联的斑点的边界框。在一些示例中,可以执行使用在x方向或y方向上的最小距离来计算成本的其它成本函数方法。这样的技术对于某些受控的情况可能是好的,诸如对齐良好的车道传送。在一些示例中,成本函数可以基于斑点跟踪器和斑点的距离,其中取代使用斑点的边界框的中心位置和跟踪器来计算距离,而是考虑边界框的边界,使得当两个边界框几何地重叠时引入负距离。此外,根据两个关联的边界框的大小比率来进一步调整该距离的值。例如,可以基于斑点跟踪器边界框的面积与斑点边界框的面积之比(例如,通过将所确定的距离乘以该比率)来对成本进行加权。
在一些实施例中,针对每个跟踪器和每个斑点之间的每个跟踪器-斑点对,确定成本。例如,如果存在三个跟踪器(包括跟踪器A、跟踪器B和跟踪器C)以及三个斑点(包括斑点A、斑点B和斑点C),则可以确定跟踪器A与斑点A、B和C中的每个点之间的单独的成本,以及在跟踪器B与斑点A、B和C中的每个点之间的单独的成本。在一些示例中,可以将成本以成本矩阵进行布置,该矩阵可以用于数据关联。例如,成本矩阵可以是二维矩阵,其中一维是斑点跟踪器510A,而第二维是斑点508。在跟踪器510A和斑点508之间的每个跟踪器-斑点对或组合包括在成本矩阵中所包括的成本。可以通过识别矩阵中最低成本的跟踪器-斑点对来确定跟踪器510A与斑点508之间的最佳匹配。例如,跟踪器A与斑点A、B和C之间的最低成本用于确定与跟踪器A相关联的斑点。
跟踪器510A和斑点508之间的数据关联以及跟踪器510A的更新可以基于所确定的成本。数据关联引擎514将跟踪器(或跟踪器边界框)与相应斑点(或斑点边界框)进行匹配或向跟踪器(或跟踪器边界框)分配相应斑点(或斑点边界框),反之亦然。例如,如先前描述,数据关联引擎514可以使用最低成本的跟踪器-斑点对将斑点跟踪器510A与斑点508进行关联。另一种将斑点跟踪器与斑点进行关联的技术包括匈牙利(Hungarian)方法,这是一种组合优化算法,其可以在多项式时间内解决此类分配问题并且可以预见后来的原始对偶方法(primal-dual method)。例如,匈牙利方法可以最优化所有斑点跟踪器510A和斑点508上的全局成本,以便使全局成本最小化。可以确定成本矩阵中使全局成本最小化的斑点跟踪器-斑点组合,并将其用作关联。
除了匈牙利方法以外,还有其它稳健的方法可以用于执行斑点与斑点跟踪器之间的数据关联。例如,可以用附加的约束来解决关联问题,以使解决方案对噪声更稳健,同时匹配尽可能多的跟踪器和斑点。不管所使用的关联技术如何,数据关联引擎514都可以依赖于斑点与跟踪器之间的距离。
一旦斑点跟踪器510A与斑点508之间的关联已经完成,斑点跟踪器更新引擎516就可以使用相关联的斑点的信息,以及跟踪器的时间状态,来更新针对当前帧的跟踪器510A的位置的状况(或多个状态)。一旦更新了跟踪器510A,斑点跟踪器更新引擎516就可以使用经更新的跟踪器510N来执行对象跟踪,并且还可以提供经更新的跟踪器510N以用于处理下一帧。
斑点跟踪器的状况或状态可以包括当前帧中的跟踪器的识别位置(或实际位置)以及其在下一帧中的预测位置。前景斑点的位置是由斑点检测系统204进行识别的。然而,如下面更详细地描述的,可能需要基于来自前一帧的信息来预测当前帧中的斑点跟踪器的位置(例如,使用与前一帧中的斑点跟踪器相关联的斑点的位置)。在针对当前帧执行数据关联之后,可以将当前帧中的跟踪器位置识别为其关联的(一个或多个)斑点在当前帧中的位置。跟踪器的位置可以进一步用于更新跟踪器的运动模型并预测其在下一帧中的位置。此外,在一些情况下,可能会有跟踪器暂时丢失(例如,当不再检测到跟踪器正在跟踪的斑点时),在这种情况下,也需要预测这些跟踪器的位置(例如,通过卡尔曼(Kalman)滤波器进行预测)。这些跟踪器暂时未向系统显示。对边界框位置的预测不仅有助于对丢失和/或合并的边界框保持一定程度的跟踪,而且还可以对跟踪器的初始位置进行更准确的估算,从而可以使边界框和跟踪器的关联更加精确。
如上文描述,可以基于来自前一帧的信息来预测当前帧中的斑点跟踪器的位置。一种用于执行跟踪器位置更新的方法是使用卡尔曼滤波器。卡尔曼滤波器是包括两个操作的框架。第一操作是预测跟踪器的状态,而第二操作是使用测量来更正或更新状态。在这种情况下,跟踪器从上一帧来预测(使用斑点跟踪器更新引擎516)其在当前帧中的位置,并且当接收到当前帧时,跟踪器首先使用(一个或多个)斑点的测量(例如,(一个或多个)斑点边界框)来更正其位置状态,然后预测其在下一帧中的位置。例如,斑点跟踪器可以采用卡尔曼滤波器来测量其轨迹以及预测其未来的(一个或多个)位置。卡尔曼滤波器依靠相关联的(一个或多个)斑点的测量来更正针对斑点跟踪器的运动模型并预测对象跟踪器在下一帧中的位置。在一些示例中,如果将斑点跟踪器与当前帧中的斑点进行关联,则该斑点的位置直接用于更正卡尔曼滤波器中的斑点跟踪器的运动模型。在一些示例中,如果斑点跟踪器不与当前帧中的任何斑点进行关联,则将斑点跟踪器在当前帧中的位置识别为其从前一帧预测的位置,这意味着针对斑点跟踪器的运动模型没有被更正并且该预测随着斑点跟踪器的上一个模型(来自前一帧)进行传播。
与跟踪器的位置不同,跟踪器的状况或状态还可以或者替代地包括跟踪器的时间状况或状态。跟踪器的时间状态可以包括:该跟踪器是否是在当前帧之前不存在的新跟踪器,已经存活了一定持续时间并要作为已识别的跟踪器-斑点对输出给视频分析系统的跟踪器的正常状态,与当前帧中的任何前景斑点都不关联或不匹配的跟踪器的丢失状态,在一定数量的连续帧(例如,两个或更多帧、阈值持续时间等)中不与任何斑点相关联的跟踪器的死亡状态,和/或其它合适的时间状态。针对斑点跟踪器可以保持的另一时间状态是跟踪器的持续时间。斑点跟踪器的持续时间包括跟踪器与一个或多个斑点已经关联的帧数(或其它时间测量,诸如时间)。
可能需要其它状态或状况信息来更新跟踪器,这可能需要状态机来用于对象跟踪。给定相关联的(一个或多个)斑点的信息和跟踪器自己的状况历史表,也需要更新状况。状态机收集所有必要的信息并相应地更新状况。可以更新跟踪器的各种状况。例如,与跟踪器的生命状况(例如,新、丢失、死亡或其它合适的生命状况)不同,也可以更新跟踪器的关联置信度和与其它跟踪器的关系。举一个跟踪器关系的示例,当两个对象(例如,人、交通工具、或其它感兴趣对象)相交时,与这两个对象相关联的两个跟踪器将针对某些帧而合并在一起,并且需要记录合并或遮挡状况以用于高级视频分析。
无论所使用的跟踪方法如何,新跟踪器都开始与一帧中的斑点相关联,并且向前移动,新跟踪器可能与跨多个帧的可能移动的斑点相连接。当跟踪器已经连续地与斑点相关联并且已经经过了一段持续时间(阈值持续时间)时,该跟踪器可以被提升为正常跟踪器。例如,阈值持续时间是新斑点跟踪器在转换到正常跟踪器(切换到正常状态)之前必须连续与一个或多个斑点相关联的持续时间。正常跟踪器作为已识别的跟踪器-斑点对进行输出。例如,当跟踪器被提升为正常跟踪器时,将跟踪器-斑点对作为事件以系统级别进行输出(例如,作为被跟踪的对象呈现在显示器上,作为警报输出和/或其它合适的事件)。在一些实现方式中,可以将正常跟踪器(例如,包括正常跟踪器的某些状况数据,用于正常跟踪器的运动模型,或者与正常跟踪器有关的其它信息)输出作为对象元数据的一部分。可以将包括普通跟踪器的元数据从视频分析系统(例如,运行视频分析系统的IP相机)输出到服务器或其它系统存储设备。然后,可以分析元数据以进行事件检测(例如,通过规则解释器)。可以去除(或杀死)未提升为正常跟踪器的跟踪器,之后可以将该跟踪器视为死亡。
如上文描述,在一些实现方式中,可以使用一个或多个机器学习系统(例如,使用一个或多个神经网络)来执行斑点或对象跟踪。在一些情况下,使用机器学习系统进行斑点/对象跟踪可以允许在线可操作性和快速。
图6A是示出包括完全卷积深度神经网络的基于机器学习的对象检测和跟踪系统600的示例的图式。系统600可以执行对象检测、对象跟踪和对象分割。如图6A中所示,到对象检测和跟踪系统600的输入包括一个或多个参考对象图像(称为“示例”,并且在图6A中示出为255*255*3图像,是指具有诸如红、绿和蓝之类的三个颜色通道的255×255图像),以及一个或多个查询图像帧(称为“搜索补丁”,在图6A中示为127*127*3图像)。例如,可以将示例和来自该示例的多个搜索补丁输入到系统600,以便检测、跟踪和分割该示例中的一个或多个对象。
对象检测和跟踪系统600包括ResNet-50神经网络(直到第四阶段的最后卷积层为止)作为系统600的神经网络的主干。为了获得更深层的高空间分辨率,输出路径通过使用具有步幅为1的卷积,将输出步幅减小到8。通过使用膨胀的卷积来增大感受野。例如,在conv4_1的3×3卷积层(图6A中的顶部conv4层)中,步幅可以设置为1,而膨胀率可以设置为2。如图6A中所示,顶部conv4_1层具有的特征映射大小为15*15*1024,而底部conv4_2层具有的特征映射大小为31*31*1024。与初始ResNet-50架构不同,在conv4_1或conv4_2层中没有下采样。
将一个或多个调整层(在图6A中标记为“调整”)添加到主干。在一些情况下,每个调整层可以包括具有256个输出通道的1×1卷积层。两个调整层可以执行深度方面(depth-wise)互相关,以生成特定大小的特征映射(图6A中示出大小17*17)。例如,调整层的输出特征是深度方面互相关,形成大小17×17(具有256个通道)的特征映射。调整层的目的是从较低层网络中(例如,在图像大小17*17中)定位目标对象。例如,调整层可以用于从参考对象图像(示例)和查询图像帧(搜索补丁)中提取特征映射。系统600的第二行的最后一层中的RoW表示候选窗口的响应,该候选窗口是从查询图像帧输入到系统600的目标对象区域。示例和搜索补丁共享从conv_1到conv4_x的网络参数,但不共享调整层的参数。
可以使用优化模块u形结构,其结合了主干的特征映射并执行上采样以获得更好的结果。例如,系统600的顶行中的层执行去卷积,接下来进行上采样(显示为上采样组件U2、U3和U4),其目的是将目标对象位置恢复到更高级别(例如,到图像大小127*127)。U3组件的一个示例是在图6B中示出。U2和U4组件具有与U3组件相似的结构和操作。在sigmoid运算之前的最后一个卷积层(标记为“conv.3*3,1”)用于将特征映射的维度从127*127*4减小到127*127*1。sigmoid函数用于将对象屏蔽的输出进行二值化,这是对象分割结果。对象屏蔽可以包括针对每个像素具有0值或1值的二进制屏蔽。生成对象屏蔽的目的是要有准确的对象边界框。边界框可以包括任何方向的矩形。在一些情况下,对象边界框靠近对象的中心点或质心(例如,关于对象的中心点或质心为中心)。在一些情况下,计分分支可以被包括在系统600中以便基于对象屏蔽来生成计分矩阵。在这些情况下,计分矩阵可以用于精确对象定位。如上文描述,ResNet-50网络的开头四个阶段共享参数,并且输出连接到共享参数的1×1卷积以调整通道*d进行深度方面互相关。关于图6A的主干架构的其它细节是在图6C中示出的。
在一些实现方式中,分类系统可以用于对已经在视频序列的一个或多个视频帧中检测和跟踪的对象进行分类。可以使用不同类型的对象分类应用。在第一个示例分类应用中,使用较低分辨率输入图像为整个输入图像提供类别和置信度。在这样的应用中,对整个图像执行分类。在第二示例分类系统中,使用相对高分辨率的输入图像,并且输出在图像内的多个对象,并且每个对象具有其自己的边界框(或ROI)和经分类的对象类型。第一示例分类应用在本文中被称为“基于图像的分类”,而第二示例分类应用在本文中被称为“基于斑点的分类”。当利用基于神经网络(例如,深度学习)的解决方案时,两种应用的分类精度都可以是高的。
图7是示出基于机器学习的分类系统的示例的图式700。如图所示,基于机器学习的分类(也可以称为基于区域的分类)首先从图像中提取区域建议(例如,斑点)。所提取的区域建议(其可以包括斑点)被馈送给深度学习网络进行分类。深度学习分类网络通常以输入层(图像或斑点)开始,后面是卷积层和池化层(以及其它层)的序列,然后以完全连接层结束。卷积层之后可以是一层经纠正的线性单元(ReLU)激活函数。卷积层、池化层和ReLU层用作可学习的特征提取器,而完全连接层用作分类器。
在一些情况下,当斑点被馈送给深度学习分类网络时,网络中的一个或多个浅层可以学习简单的几何对象,诸如线和/或其它对象,这些简单的几何对象表示要被分类的对象。较深层将学习关于对象的更多抽象的详细特征,例如定义形状的线集合或其它详细特征,然后最终来自较早层的形状集合,该形状集合构成正在被分类的对象(例如,人、车、动物或任何其它对象)的形状。下面参考图42至图46C来描述神经网络的结构和功能的更多细节。
由于基于点的分类需要更少的计算复杂度以及更少的存储器带宽(例如,保持网络结构所需要的存储器),因此可以直接使用它。
各种基于深度学习的检测器可以用于分类或检测在视频帧中的对象。例如,基于Cifar-10网络的检测器可以用于执行基于斑点的分类以对斑点进行分类。在一些情况下,可以训练Cifar-10检测器以仅对人员和车进行分类。基于Cifar-10网络的检测器可以将斑点作为输入,并可以将其分类为具有置信度分数的许多预定义类别之一。下面参考图21描述Cifar-10检测器的更多细节。
另一个基于深度学习的检测器是单步(single-shot)检测器(SSD),它是一种能够应用于多个对象类别的快速单步对象检测器。SSD模型的一个特征是使用多尺度卷积边界框输出,该多尺度卷积边界框输出连接到神经网络的顶部的多个特征映射。这样的表示允许SSD有效地建模各种框形状。已经证实,给定相同的VGG-16基础架构,SSD在精度和速度两个方面均优于其最新的对象检测器。在K.Simonyan和A.Zisserman的“用于大规模图像识别的深度卷积网络(Very deep convolutional networks for large-scale imagerecognition)”,CoRR,abs/1409.1556,2014中更详细描述了SSD深度学习检测器,在此通过引用的方式将其全部内容合并入本文以用于所有目的。下面参考图25A至图25C描述SSD检测器的更多细节。
能够用于检测或分类在视频帧中的对象的基于深度学习的检测器的另一个示例包括“你只需看一次”(YOLO)检测器。YOLO检测器在Titan X上运行时,以40-90帧/秒(fps)处理图像,并且mAP为78.6%(基于VOC 2007)。SSD300型号在Nvidia Titan X上以59fps的速度运行,并且通常可以比当前的YOLO 1更快地执行。YOLO 1最近也已经被其后续产品YOLO 2取代。YOLO深度学习检测器是在J.Redmon,S.Divvala,R.Girshick和A.Farhadi,“你只需看一次:统一的实时对象检测(You only look once:Unified,real-time objectdetection)”,arXiv preprint arXiv:1506.02640,2015中更详细描述的,通过引用的方式将其全文合并入本文以用于所有目的。下面参考图46A至图46C描述了YOLO检测器的更多细节。尽管描述了SSD和YOLO检测器以提供基于深度学习的对象检测器的说明性示例,但本领域的普通技术人员将理解,可以使用任何其它合适的神经网络来执行对象分类。
如上文描述,在许多情况下,当感兴趣区域和/或对象相对于捕获帧序列的一个或多个相机进行移动时,可能期望在帧序列中逐帧保持感兴趣区域和/或感兴趣对象的大小。这样的场景的示例可以包括:当用户向设备提供输入以使得该设备捕获包括感兴趣对象的事件的视频时。例如,该设备可以记录执行舞蹈例程的人的视频,其中当正在捕获视频时,人相对于相机(沿深度方向和横向)进行移动。当人正在相对于相机进行移动时,用户可能期望人在整个视频中保持恒定的大小(并且在一些情况下,在捕获的帧中保持一致的位置)。这种情况的另一个示例是在IP相机正在捕获场景视频时的视频分析中。例如,IP相机可以捕获用户的客厅的视频,其中可能期望保持房间中一个或多个人的大小(并且在一些情况下,在捕获的帧中保持一致的位置),即使一个或多个人远离相机(沿深度方向)进行移动。
当设备正在捕获对象的帧序列(例如,执行舞蹈例程的人的视频)时,该对象可以相对于捕获帧序列的一个或多个相机进行移动。结果,当对象在帧序列的捕获期间正在移动时,该设备可能难以保持期望的对象大小(例如,当首次开始视频捕获时,初始帧中的对象的大小)。例如,用户可能已经调整了相机变焦,以使对象在帧中具有期望的大小。然而,对象的大小比率(对象相对于帧的大小,称为对象大小与帧的比率)将随着对象的移动而动态地变化。用户在视频的捕获期间手动地改变对象大小与帧的比率可能是繁琐的。也可能难以在视频录制期间自动地跟踪对象。
如上文描述,本文描述了用于在帧序列中保持目标对象的固定大小的系统和技术。在一个说明性示例中,可以捕获和显示视频的初始帧或其它帧序列。在一些情况下,用户可以在初始帧中提供用于指示感兴趣对象的用户输入(例如,通过绘制围绕该对象的边界框,选择该对象,放大该对象等)。在一些情况下,在没有用户输入的情况下,能够自动地检测对象。在一些情况下,可以确定对象在初始帧中的大小,并将其用作在初始帧之后的后续视频帧中的对象的参考大小。在一些情况下,针对初始帧中的对象,可以设置边界框。在一些示例中,可以确定中心点坐标(或与边界框或对象相关联的其它点)和边界框的对角线长度(或与边界框或对象相关联的其它长度),并用作针对后续视频帧的参考。
可以初始化并执行对象检测和跟踪,以检测和跟踪后续视频帧中的对象。对于每个后续视频帧,可以确定或记录对象边界框中心点坐标(或与边界框或对象相关联的其它点)和边界框的对角线长度(或与边界框或对象相关联的其它长度)。一旦针对视频的帧获得边界框中心点(或其它点)坐标和对角线长度(或其它长度)的集合,就可以应用平滑函数来平滑在视频的每个帧的边界框对角线长度(以及因此大小)的变化量。在一些情况下,还可以应用平滑函数来平滑视频帧中的边界框中心点的移动轨迹。如本文描述,可以通过将初始视频帧(称为参考帧)中的边界框对角线长度与正在处理的当前帧进行比较,来针对每个帧计算缩放因子。缩放因子可用于缩放或重新调整每个帧的大小。可以基于中心点坐标和缩放因子,来对每个视频帧进行裁剪和缩放。在一些情况下,可以在裁剪和缩放之后,应用视频稳定化。然后可以向输出视频提供对象,该对象保持具有参考大小,并且在一些情况下保持在视频帧中的公共位置处(例如,在每个帧的中心处)。
图8A是示出用于捕获和处理帧或图像的系统的示例的图式。图8A的系统包括:图像传感器801、一个或多个图像处理引擎803、视频处理引擎805、显示处理引擎807、编码引擎809、图像分析引擎811、传感器图像元数据引擎813、以及帧裁剪和缩放系统815。下面参考图8B描述示例性帧裁剪和缩放系统800。
图8A的系统可以包括电子设备或是电子设备的一部分,诸如移动或固定电话手机(例如,智能手机、蜂窝电话等)、IP相机、台式计算机、膝上型计算机或笔记本计算机、平板计算机、机顶框、电视机、相机、显示设备、数字媒体播放器、视频游戏机、视频流设备、或任何其它合适的电子设备。在一些示例中,该系统可以包括用于无线通信的一个或多个无线收发器,诸如蜂窝网络通信、802.11Wi-Fi通信、无线局域网(WLAN)通信、或其某种组合。在一些实现方式中,帧裁剪和缩放系统800可以被实现为图1中所示的图像捕获和处理系统100的一部分。
尽管图8A的系统示出为包括某些组件,但是本领域普通技术人员将理解,该系统可以包括比图8A中所示更多的组件。该系统的组件可以包括软件、硬件、或者软件与硬件的一个或多个组合。例如,在一些实现方式中,组件可以包括和/或可以使用电子电路或其它电子硬件来实现,该电子电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、GPU、DSP、CPU和/或其它合适的电子电路),和/或可以包括计算机软件、固件或其任何组合,和/或使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。软件和/或固件可以包括被存储在计算机可读存储介质上并且可由实现图8A的系统的电子设备的一个或多个处理器执行的一个或多个指令。
图像传感器801可以执行与上面参考图1所描述的图像传感器130类似的操作。例如,图像传感器801可以包括光电二极管或其它光敏元件的一个或多个阵列。每个光电二极管可以测量与由图像传感器130所生成的图像中的特定像素相对应的光量。在一些示例中,一个或多个图像处理引擎803可以包括相机串行接口解码器模块、图像前端、拜耳处理段(例如,可用于快照或预览图像)、图像处理引擎、其任何组合和/或其它组件。
视频处理引擎805可以执行视频编码和/或视频解码操作。在一些情况下,视频处理引擎805包括组合的视频编码器-解码器(也称为“CODEC”)。视频处理引擎805可以执行任何类型的视频译码技术以对视频数据进行编码和/或对经编码的视频数据进行解码。视频译码技术或标准的示例包括通用视频译码(VVC)、高效视频译码(HEVC)、高级视频译码(AVC)、移动图像专家组(MPEG)-2第2部分译码、VP9、开放媒体联盟(AOMedia)视频1(AV1)、以及其它。使用视频译码技术,视频处理引擎805可以执行一种或多种利用视频图像或序列中存在的冗余的预测方法(例如,帧间预测、帧内预测等)。视频编码的目标是将视频数据压缩到使用较低位率的形式,同时避免或最小化视频质量的下降。视频解码的目标是对视频数据进行解压缩,并获得能够用于译码和/或播放视频数据的经编码的视频位流中的任何其它信息。视频处理引擎805输出的视频可以存储在存储器817(例如,经解码的图片缓冲器(DPB)、随机存取存储器(RAM)、一个或多个高速缓存存储器、其任何组合和/或其它存储器)中,和/或可以被输出以用于显示。例如,经解码的视频数据可以存储在存储器817中以用于对其它视频帧进行解码和/或可以显示在显示器819上。
显示处理引擎807可以用于预览图像。例如,显示处理引擎807可以处理、操作和/或输出预览图像,该预览图像具有与相机输出图像相同(或在一些情况下相似)的长宽比,但是具有较低的图像分辨率。预览图像可以在生成实际输出图像之前在系统或包括系统的设备的显示器上显示(作为“预览”)。
图像译码引擎809可以执行图像编码(压缩)和/或图像解码(解压缩)操作。在一些情况下,图像译码引擎809包括组合的图像编码器-解码器(或CODEC)。图像译码809可以执行任何类型的图像译码技术以对图像数据进行编码和/或对经压缩的图像数据进行解码。图像译码技术或标准的示例包括联合图像专家组(JPEG)、标记图像文件格式(TIFF)以及其它。使用图像译码技术,图像译码引擎809可以利用图像数据的视觉感知和统计属性,以便在保真度或质量方面以较低损失来压缩图像。
帧分析引擎811可以对从显示处理引擎807获得或接收的预览帧执行帧或图像分析。例如,帧分析引擎811可以从显示处理引擎807获得或接收预览图像的副本(与相机输出图像相比,该预览图像的副本具有较低的图像分辨率)。帧分析引擎811可以对预览图像执行对象检测和/或跟踪操作,以检测和/或跟踪图像中的一个或多个对象(例如,目标对象)。帧分析引擎811可以确定和输出针对一个或多个被跟踪对象(例如,被跟踪的目标对象)的边界框的大小信息、位置信息和中心点(或其它点)信息。可以将针对一个或多个被跟踪对象的边界框的信息输出给帧裁剪和缩放系统815。
传感器帧元数据引擎813生成并输出最终输出图像。传感器帧(或图像)元数据表示输出图像信息,并且具有与输出图像相同的图像分辨率。
图8B是示出了帧裁剪和缩放系统800的示例的图式,该帧裁剪和缩放系统800可以处理一个或多个帧以在便保持对象在一个或多个帧中的固定大小(并且在一些情况下,保持固定位置)。在一些情况下,帧裁剪和缩放系统800是图8A中所示的系统的帧裁剪和缩放系统815的示例。在一些情况下,帧裁剪和缩放系统800可以与图8A中所示的系统分开。帧裁剪和缩放系统800包括感兴趣区域(ROI)确定引擎804、对象检测和跟踪系统806、帧裁剪引擎808、帧缩放引擎810和平滑引擎812。下面将参考图8C至图41描述裁剪和缩放系统800的操作的示例。在一些示例中,可以基于用户选择的操作来执行图8C的过程820、图9A的过程930、图9B的过程935和/或本文描述的其它过程。例如,设备可以从用户接收用户输入(例如,经由设备的触控屏幕的触摸输入、经由设备的麦克风的语音输入、使用设备的一个或多个相机的手势输入等等),该用户输入指示设备捕获视频并保持对象在视频中的固定大小。基于用户输入,设备可以执行过程820、图9的过程930和/或本文描述的(一个或多个)其它过程。
帧裁剪和缩放系统800可以包括电子设备或是电子设备的一部分,诸如移动或固定电话手机(例如,智能电话、蜂窝电话等)、IP相机、台式计算机、膝上型计算机或笔记本计算机、平板计算机、机顶框、电视机、相机、显示设备、数字媒体播放器、视频游戏机、视频流设备、或任何其它合适的电子设备。在一些情况下,帧裁剪和缩放系统800可以是与图8A的系统相同的设备的一部分。在一些示例中,帧裁剪和缩放系统800可以包括用于无线通信的一个或多个无线收发器,诸如蜂窝网络通信、802.11Wi-Fi通信、无线局域网(WLAN)通信或其某种组合。在一些实现方式中,帧裁剪和缩放系统800可以被实现为图1中所示的图像捕获和处理系统100的一部分。
尽管帧裁剪和缩放系统800被示出为包括某些组件,但是本领域普通技术人员将理解,帧裁剪和缩放系统800可以包括比图8B中所示的更多的组件。帧裁剪和缩放系统800的组件可以包括软件、硬件、或者软件与硬件的一种或多种组合。例如,在一些实现方式中,帧裁剪和缩放系统800的组件可以包括和/或可以使用电子电路或其它电子硬件来实现,该电子电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、GPU、DSP、CPU和/或其它合适的电子电路)和/或可以包括计算机软件、固件或其任何组合和/或使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。软件和/或固件可以包括一个或多个指令,该一个或多个指令存储在计算机可读存储介质上并且可由实现帧裁剪和缩放系统800的电子设备的一个或多个处理器来执行。
帧序列802被输入到帧裁剪和缩放系统800。帧802可以是帧序列的一部分。帧序列可以是视频、一组连续捕获的图像、或其它帧序列。ROI确定引擎804可以基于用户输入和/或自动地确定特定帧中的初始感兴趣区域(ROI)。例如,在图8C的框822处,过程820可以在帧序列的初始帧中(例如,在视频中)执行对象选择。ROI可以由边界框或其它边界区域来表示。在一些实现方式中,当向显示设备输出时,边界区域在帧中是可见的。在一些实现方式中,当向显示设备输出帧时,边界区域可能是(例如,观察者,诸如用户)不可见的。确定初始ROI的帧被称为帧序列的初始帧(或参考帧)。
在一些示例中,ROI确定引擎804(或者帧裁剪和缩放系统800的其它组件)可以从帧序列802确定视频帧,以用作初始帧。在一些情况下,可以选择帧序列802中的第一帧作为初始帧。在一个说明性示例中,例如在实时视频录制中,初始帧可以是基于终端用户提供的输入的视频的第一帧,该输入指示在帧中的对象的期望大小(例如,捏合手势以放大到理想的相机变焦率),然后就可以开始视频录制了。在另一个说明性示例中,诸如在视频回放(例如,先前录制的视频)或基于任何后处理的自动变焦功能中,终端用户可以选择视频的任何帧并可以提供针对帧的输入(例如,捏合输入以变焦)以指示对象的期望大小,这将导致将该帧设置为初始帧。
在一些示例中,可以基于对初始帧的一部分(诸如初始帧中描绘的对象)的用户选择来确定ROI。可以使用包括帧裁剪和缩放系统800的设备或其它设备的任何输入界面来接收用户输入。例如,输入界面可以包括触控屏幕、电子绘图工具、基于手势的用户界面(例如,用于检测手势输入的一个或多个图像传感器)、基于语音输入的用户界面(例如,扬声器和用于识别语音输入的语音识别工具)和/或其它用户界面。在一些示例中,对象选择可以包括在初始帧中显示的对象上的轻击(例如,单击、双击等)、用户围绕对象绘制边界框、用户在触控屏幕界面上提供输入(例如,包括将两个手指合并在一起或分开的捏合)导致界面放大对象、或其它类型的对象选择。在一些情况下,可以为终端用户提供有关如何利用保持目标对象大小在整个视频或其它帧序列中不变的特征的指导。例如,可以向用户显示提示,该提示指示如何选择在整个视频中保持固定的对象。对于视频,用户可以通过(例如,在触控屏幕上)点击视频的初始帧中的对象或围绕该对象绘制边界框,来选择感兴趣对象。基于初始帧的所选择的部分,ROI确定引擎804可以在所选择的部分周围(例如,在所选择的对象周围)定义ROI。ROI指示保持对象在整个视频或其它帧序列中的大小(例如,理想大小)。例如,用户可以放大对象以指示用户期望保持对象在整个视频或其它帧序列中的大小,并且ROI确定引擎804可以用所指示的大小来定义对象周围的ROI。
在一些示例中,可以在初始帧中自动检测(例如,使用对象检测和/或识别)初始帧中的对象,并且ROI确定引擎804可以在检测到的对象周围定义ROI。可以使用对象检测和/或识别技术(例如,面部检测和/或识别算法、特征检测和/或识别算法、边缘检测算法、边界跟踪功能、其任何组合和/或其它对象检测和/或识别技术)来检测对象。上述任何检测和跟踪技术都可以用于自动地检测初始帧中的对象。在一些情况下,特征检测可以用于从初始帧中检测(或定位)对象的特征。基于这些特征,对象检测和/或识别可以检测出对象,并且在一些情况下可以将检测到的对象识别和分类为一种类别或类型的对象。例如,特征识别可以识别场景的区域中的大量边缘和拐角。对象检测可以检测出在该区域中检测出的边缘和拐角都属单个对象。如果执行面部检测,则面部检测可以识别出对象是人脸。对象识别和/或面部识别可以进一步识别与该面部相对应的人的身份。
在一些实现方式中,对象检测和/或识别算法可以基于使用机器学习算法在相同类型的对象和/或特征的图像上训练的机器学习模型,该机器学习模型可以提取图像的特征以及基于算法对模型进行训练来检测和/或分类包含那些特征的对象。例如,机器学习算法可以是神经网络(NN),诸如卷积神经网络(CNN)、时间延迟神经网络(TDNN)、深度前馈神经网络(DFFNN)、递归神经网络(RNN)、自动编码器(AE)、变型AE(VAE)、降噪AE(DAE)、稀疏AE(SAE)、马尔可夫链(MC)、感知器、或其某种组合。机器学习算法可以是监督学习算法、非监督学习算法、半监督学习算法、基于生成对抗网络(GAN)的学习算法、其任意组合、或其它学习技术。
在一些实现方式中,可以使用基于计算机视觉的特征检测和/或识别技术。可以使用不同类型的基于计算机视觉的对象检测算法。在一个说明性示例中,可以使用基于模板匹配的技术来检测图像中的一只或多只手。可以使用各种类型的模板匹配算法。模板匹配算法的一个示例可以执行Haar或类Haar特征提取、积分图像生成、Adaboost训练和级联分类器。这种对象检测技术通过在图像上应用滑动窗口(例如,具有矩形、圆形、三角形或其它形状)来执行检测。积分图像可以被计算为是从图像评估特定区域特征(例如矩形或圆形特征)的图像表示。对于每个当前窗口,可以从上述积分图像计算当前窗口的Haar特征,该积分图像可以是在计算Haar特征之前进行计算的。
可以通过计算对象图像的特定特征区域(例如,积分图像的特定特征区域)内的图像像素的总和来计算Harr特征。例如,在脸上,具有眼睛的区域通常比具有鼻梁或脸颊的区域更暗。Haar特征可以通过学习算法(例如,Adaboost学习算法)进行选择,该学习算法选择最佳特征和/或训练使用这些最佳特征的分类器,并可以用于将窗口分类为面部(或其它对象)窗口或具有级联分类器的非面部窗口。级联分类器包括以级联方式组合的多个分类器,其允许在对类对象区域执行更多计算时快速地丢弃图像的背景区域。使用面部作为外部观察者的身体部分的示例,级联分类器可以将当前窗口分类为面部类别或非面部类别。如果一个分类器将窗口分类为非面部类别,则丢弃该窗口。否则,如果一个分类器将窗口分类为面部类别,则级联布置中的下一个分类器将用于再次测试。直到所有分类器都确定当前窗口是面部(或其它对象)为止,该窗口将被标记为手(或其它对象)的候选。在检测到所有窗口之后,可以使用非最大抑制算法对围绕每个面部的窗口进行分组,以生成一个或多个检测到的面部的最终结果。
返回图8B,ROI确定引擎804可以基于初始图像的所选部分(例如,所选对象)或基于初始图像中的检测到的对象来定义ROI。如上文描述,ROI可以由边界框或其它类型的边界区域来表示。在一些情况下,ROI确定引擎804可以针对适合于ROI中的对象的边界的ROI来生成边界框。例如,针对对象,可以确定最大x坐标(在水平方向上)、最小x坐标、最大y坐标(在竖直方向上)和最小y坐标,并且ROI可以被定义为具有最大x坐标、最小x坐标、最大y坐标和最小y坐标。在一些情况下,可以围绕对象来定义针对ROI的边界框,而不限于ROI中对象的边界。
ROI确定引擎804可以在初始帧中确定对象和/或包括对象的感兴趣区域的大小。对象的大小可以用作参考大小以确定对帧序列802的后续帧进行多少裁剪和缩放。在一些情况下,用户可以调整感兴趣区域和/或对象的大小,以便定义针对帧序列中的对象的优选大小。例如,可以显示第一帧(例如,作为预览图像),并且用户可以调整图像的变焦量以使对象更大(通过放大)或更小(通过缩小)。在这样的示例中,一旦用户完成变焦并且为初始帧确定了最终对象大小,就确定对象和/或包括对象的感兴趣区域的大小,并将其用作参考大小。然后,参考大小可以用于确定对帧序列802中的后续帧进行多少裁剪和缩放。
然后,可以将帧序列802的(在初始帧之后捕获的)后续帧输入到帧裁剪和缩放系统800。将针对初始帧之后的特定后续帧(例如,在初始帧之后出现的第一后续帧)来描述对象检测和跟踪系统806、帧裁剪引擎808、帧缩放引擎810和平滑引擎812的操作。然而,可以对帧序列802中的初始帧之后发生的一些或所有后续帧执行相同或相似的操作。
对象检测和跟踪系统806可以在帧序列的后续帧中检测和跟踪对象。例如,在图8C的框824处,过程820可以执行对象检测和跟踪,以检测和跟踪在帧序列中的对象。在一些示例中,可以使用上面参考图2至图7描述的视频分析系统200执行的技术来检测和跟踪对象。
帧裁剪引擎808可以裁剪后续帧,并且帧缩放引擎810可以缩放后续帧,以使对象的大小在后续帧中保持具有与初始帧中确定的相同大小。例如,在图8C的框826处,过程820可以执行对后续帧的视频帧裁剪和缩放。在一些情况下,可以执行裁剪和缩放以将对象保持具有与初始帧中确定的相同大小,并且还可以将对象保持在每个帧中的特定位置。例如,可以执行裁剪和缩放以将对象保持在每个后续帧的中心处,在每个后续帧中的其中该对象起初在初始帧中的位置处、由用户定义的位置、或者在后续帧内的其它位置。如下面更详细描述的,帧缩放引擎810可以计算针对帧序列802的每个后续帧的缩放因子。在一个使用边界框的对角线长度以用于解释目的的说明性示例中,可以通过比较在初始帧中的边界框的对角线长度和正在处理的当前帧中的边界框的对角线长度来确定缩放因子。在对角线长度之间的比率可以用作缩放因子。缩放因子可以用于缩放每个后续帧,以使当前帧中的对象与初始帧中的对象具有相同的大小。将在下面描述裁切和缩放的细节。
平滑引擎812可以应用一个或多个平滑函数,以便逐步地执行对后续帧的裁剪和缩放,这可以最小化帧到帧的移动以及对帧序列中的对象进行重新调整大小。例如,从帧裁剪引擎808和帧缩放引擎810输出的初始裁剪和缩放可以指示后续帧将被裁剪和缩放一定量。平滑引擎812可以确定经修改的裁剪和缩放量,以便减少后续帧将被修改的量。(一个或多个)平滑函数可以防止由于帧裁剪引擎808和帧缩放引擎810所确定的裁剪和缩放量而导致对象在帧序列802中出现不自然(例如,跳跃)方式的移动。
在一些情况下,裁剪、缩放和平滑可以基于对象上的点(例如,中心点)或与包括对象的ROI相关联的边界框内的点(例如,中心点),和/或可以基于与对象相关联的距离(例如,对象的第一部分和对象的第二部分之间的距离)或者表示包括对象在内的ROI的与边界框相关联的距离(例如,边界框的对角线距离)。例如,可以相对于对象上的点或边界框内的点来执行为了在随后帧中移动或移位对象而执行的修剪量。在另一个示例中,为了使对象更大或更小而执行的缩放量可以是基于与对象相关联的距离(例如,在对象的不同部分之间)或与边界框相关联的距离(例如,边界框的对角线距离)。
帧裁剪和缩放可以随着目标对象大小的实际变化一起进行。平滑引擎812可以输出最终输出帧814(例如,输出视频),其将具有带固定大小的对象(基于为初始帧中的对象而确定的参考大小)的效果,并且在一些情况下在整个帧序列中保持在相同位置中。例如,在图8C的框828处,过程820可以基于上述目标固定大小特征来生成包括针对对象的固定大小和位置效果的输出视频。
图9A和图9B是示出可以由针对视频的帧裁剪和缩放系统800执行的过程930和935的其它示例的流程图。在一些示例中,可以基于由用户选择的操作来执行过程930和/或935。例如,设备可以接收来自用户的用户输入(例如,经由设备的触控屏幕的触摸输入、经由设备的麦克风的语音输入、使用设备的一个或多个相机的手势输入等),该用户输入指示设备捕获视频并保持对象在视频中具有固定大小。基于用户输入,设备可以执行过程930和/或935。
过程930和过程935被描述为针对预录制的视频来执行(在这种情况下,视频的所有帧都可用于处理)。然而,在一些情况下,可以修改过程930和935以处理直播视频。在一些示例中,可以在执行过程935之前执行过程930。例如,可以执行过程930以从帧序列中选择初始视频帧,并设置对象边界框中心点(或其它点)和对象边界框对角线长度(或其它长度)作为参考点。可以执行过程935以裁剪和缩放后续视频帧,以在整个帧序列中保持对象的大小和/或位置。
如图9A中所示,在框931处,过程930包括获得帧序列。帧序列可以是视频、一组连续捕获的图像或其它帧序列。在框932处,过程930包括从帧序列中选择或确定视频帧以用作初始帧(或参考帧)。在一个示例中,可以选择帧序列802中的第一帧作为初始帧。如上文描述,初始帧可以用作用于确定初始ROI的帧。
在框933处,过程930包括:选择具有给定大小(例如,理想大小)的目标对象。如上文描述,可以基于用户输入来选择目标对象(或ROI),或者可以自动检测目标对象(或ROI)。例如,可以基于指示对初始帧的一部分(诸如在初始帧中描绘的对象)的选择的用户输入,来确定对象或ROI。在一个说明性示例中,用户可以捏合以变焦(例如,使用触控屏幕界面上的捏合手势)或提供另一输入,以使显示器放大目标对象。在一些情况下,过程930可以包括:生成针对帧序列(例如,视频)中的初始帧中的目标对象或ROI的边界框。例如,针对对象可以确定ROI,并且可以生成边界框以表示ROI。
在框934处,过程930包括:将边界框中心点和对角线长度设置为参考,以用于帧序列的后续帧(例如,用于对后续帧执行过程935)。尽管本文将边界框中心点和边界框的对角线长度用于说明性目的,但是其它点和长度可以用于执行本文描述的裁剪、缩放、平滑和/或其它操作。在一些示例中,取代边界框的中心点,可以将边界框上的不同点用作参考点,诸如边界框的左上角点。在另一个示例中,边界框中的对象上的点可以用作参考点,诸如对象的中心点。在一些示例中,取代边界框的对角线长度,可以使用在边界框中的对象的两个点之间的长度来确定当前后续帧中的对象的大小。例如,如果对象是人,则可以将人的头顶与人的脚底之间的长度用作长度。
如图9B中所示,在框937处,过程935包括:对帧序列中的位于初始帧后面的每个后续帧(或后续帧的子集)执行对象检测和跟踪,类似于过程820的框824。可以执行对象和跟踪,以便跨视频的每个帧来跟踪该对象。在一些示例中,过程935可以执行坐标变换以将每个后续帧与初始帧进行匹配。例如,可以执行坐标变换以使每个后续帧与初始帧具有相同的大小。在一个说明性示例中,坐标变换可以是放大过程。在另一个说明性示例中,坐标变换可以是缩小过程。
在框938处,过程935包括:确定视频的整个帧序列中的边界框中心点和边界框的对角线长度。例如,基于由对象检测和跟踪系统806执行的对象检测和跟踪,可以针对来自视频的每个帧,获得边界框信息。可以确定每个视频帧中的每个边界框的中心点位置和对角线长度,并将其用作整个视频中的对象移动轨迹和对象大小变化的指示。
例如,可以处理视频的帧序列中的所有帧,以确定每个帧中的每个边界框的中心点和对角线长度。帧裁剪引擎808、帧缩放引擎810和/或平滑引擎812可以使用每个帧中的边界框的中心点和对角线长度来对视频的后续帧(分别地)执行裁剪、缩放和平滑。例如,边界的中心点可以用作确定对象在帧中的位置的参考,并且对角线长度可以用于确定相对于初始帧中的对象的大小的当前后续帧中的对象的大小。尽管本文使用边界框中心点和边界框的对角线长度以用于说明性目的,但在某些实现方式中,其它点和长度可以用于执行裁剪、缩放和平滑。在一些示例中,取代边界框的中心点,可以将边界框上的不同点用作参考点,诸如边界框的左上角点。在另一个示例中,边界框中的对象上的点可以用作参考点,诸如对象的中心点。在一些示例中,取代边界框的对角线长度,可以使用边界框中的对象的两点之间的长度来确定当前后续帧中的对象的大小。例如,如果对象是人,则可以将人的头顶与人的脚底之间的长度用作长度。
框939表示可以由平滑引擎812执行的平滑操作。在框940处,过程935包括:执行边界框中心点轨迹平滑。平滑引擎812可以基于任何合适的平滑算法来执行边界框中心点轨迹平滑。平滑算法的一个示例是基于移动平均算法。可以应用移动平均技术来平滑边界框中心点位置和后续帧中的对角线长度的变化。通常,移动平均用于通过计算完整数据集合的不同子集(例如,视频的不同帧)的平均值来分析时间序列数据(诸如视频)。基于移动平均,可以对数据进行平滑,使得在数据的连续部分之间发生较少的显著变化。
移动平均可以基于滑动窗口,该滑动窗口用于在设定数量的时间段(例如,多个视频帧)上取平均。例如,时间段的数量可以是基于视频的连续帧之间的时间(例如,每秒30帧视频中的33ms)。移动平均可以是前n个数据的均等加权均值。例如,将n个值的序列定义为:
x1,x2,…,xn
然后,针对n个数据点的均等加权的滚动平均将实质上是先前M个数据点的均值,其中M是滑动窗口的大小:
为了计算随后的滚动平均值,可以将新值添加到总和中,并且可以丢弃先前时间段值。可以丢弃先前时间段,因为先前时间段的平均值是可用的,在这种情况下,不需要每次都进行完整求和。后续滚动平均值的计算可以以公式表示如下:
对于系统800根据处理935正在处理的视频的当前帧,可以使用移动平均公式来处理视频的M个视频帧中的一定数量视频帧的边界框中心点的(x,y)坐标位置。例如,在框940处,可以确定M个视频帧的边界框中心点坐标的滚动平均值然后可以将滚动平均值用作当前视频帧中的边界框的中心点位置。
在框941处,过程935包括:执行对边界框对角线长度的大小变化进行平滑。平滑引擎812可以基于任何合适的平滑算法来平滑边界框对角线长度的大小变化。在一些情况下,平滑引擎812可以使用上述的移动平均算法。例如,对于正在处理的视频的当前帧,平滑引擎812可以使用移动平均公式处理来自视频的M个视频帧中的一定数量的视频帧的边界框的对角线长度。例如,在框942处,过程935可以确定M个视频帧的边界框对角线长度的滚动平均值处理935可以将滚动平均值用作当前视频帧中的边界框的对角线长度。
在一些情况下,对于正在处理的视频的当前帧,对象检测和跟踪可能不准确。例如,检测到的对象边界框中心点(或边界框或对象的其它点)的(x,y)坐标位置可能是错误的。计算出的当前帧的边界框中心点坐标的移动(或滚动)平均值可以最小化错误警报(通过最小化错误检测/跟踪的对象边界框位置),并可以在很大程度上保持对象正确移动或跟踪轨迹。例如,计算出的边界框中心点(或边界框或对象的其它点)的移动(或滚动)平均值可能比实际检测到的中心点更准确。移动平均值还可以最小化关于对象大小的错误警报(例如,通过最小化对象的部分或部位之间的错误检测/跟踪的对象边界框对角线长度或错误检测/跟踪的长度)。例如,在给定帧中,计算出的边界框对角线长度的移动(或滚动)平均值可以比实际检测到的对角线长度更准确。
在框942处,过程935包括:基于视频中的初始帧对角线长度和其它帧的平滑后的对角线来计算帧缩放因子。例如,取代使用当前帧中的边界框的实际对角线长度,可以使用由平滑引擎812针对当前帧而确定的经平滑的对角线长度(例如,平均对角线长度)来针对视频的当前帧(并非初始帧)确定缩放因子。在一些情况下,缩放因子可以是缩放率。帧缩放引擎810可以将当前帧中的边界框的经平滑的对角线长度与初始帧中的边界框的对角线长度进行比较,以确定针对当前帧的缩放因子。
在一些示例中,过程935可以包括确定视频资源变化是否已经发生。例如,帧裁剪和缩放系统815可以支持多个视频资源,其中终端用户可以导入多个视频以用于执行自动变焦(裁剪和缩放)操作。为了确定视频资源变化是否已经发生,过程935可以确定是否仍然正在播放当前视频。如果正在播放当前视频,则过程935可以继续至框943。如果确定已经启动了另一视频源,则可以不执行更新操作,在这种情况下,系统可以从该过程的开头(例如,在过程930的框931处开始)重新启动。
在框943处,过程935包括:基于在框939处经平滑的对象边界框中心点位置(例如,针对每个帧而确定的平均中心点位置)和针对帧而确定的帧缩放因子,对视频中的每个帧进行裁剪和缩放。基于裁剪和缩放,生成经裁剪和缩放的后续帧,并且对象在后续帧中具有与初始帧中的对象的大小和位置相同的大小和相同的相对位置。
参考图10A和图10B描述了一个示例。图10A是示出视频的初始帧1002的示例的图式。用户已选择人员作为感兴趣对象。生成边界框1004以表示针对人员的感兴趣区域。边界框1004被示出为具有高度h和宽度w。确定边界框1004的中心点1006的位置(例如,(x,y)坐标位置)和边界框1004的对角线长度1008,并将其用作裁剪和缩放该视频的后续帧的参考,以便保持人员在后续帧中具有恒定的大小和位置。
图10B是示出在视频中的初始帧1002之后出现的后续帧1012的示例的图式。基于对象检测和跟踪,在后续帧1012中,围绕人生成边界框1014。边界框1014具有宽度w-n和高度h-m。边界框10014的宽度w-n小于初始框1002中的边界框1004的宽度w,而边界框1014的高度h-m小于初始帧1002中的边界框1004的高度h。确定中心点1016的位置(例如,(x,y)坐标位置)和边界框1004的对角线长度1008。
在一些示例中,帧裁剪引擎808可以裁剪后续帧1012,使得在后续帧1012中描绘的人保持在帧1012的中间。例如,帧裁剪引擎808可以裁剪后续帧1012以生成裁剪区域1022,使得边界框1014的中心点1016位于裁剪区域1022的中心。在一些示例中,帧裁剪引擎808可以裁剪后续帧1012,使得帧1012中所示的人保持在与人员在初始帧1002中所处位置相同的相对位置处。例如,帧裁剪引擎808可以确定边界框1004的中心点1006相对于在视频的所有帧中共同的初始帧1002中的一点的位置。例如,所有帧中的公共点可以是视频帧中的左上角点(例如,在初始帧1002中的左上角点1007)。图10A中所示的相对距离1009是从初始帧1002中的边界框1004的中心点1006到左上角点1007。帧裁剪引擎808可以裁剪后续帧1012以生成经裁剪区域1022,使得中心点1016位于相对于经裁剪区域1022的左上角点1017的相对位置和距离1029与初始帧1002中的中心点1006相对于左上角点1007的相对位置和距离相同。
帧缩放引擎810可以通过将后续帧1012中的边界框1014的经平滑的对角线长度与初始帧1002中的边界框1004的对角线长度1008进行比较来确定用于缩放经裁剪区域1022的缩放因子(例如,缩放率)。如上文描述,边界框1014的经平滑的对角线长度可以由平滑引擎812来确定。例如,如果边界框1014的实际对角线长度1018的数值为1.5,则可以将边界框1014的经平滑的对角线长度确定为数值1.2(基于如上文描述确定的滚动平均值)。初始帧1002中的边界框1004的对角线长度1008可以是数值3。缩放因子可以被确定为缩放率使用这样的基于对角线长度1008与对角线长度1018的公式,可以确定的缩放率。基于2.5的缩放率,可以将经裁剪区域1022增加2.5倍(增大2.5倍)。
由于裁剪和缩放,生成了经裁剪和缩放的后续帧1032。边界框1034的对角线长度1038与边界框1004的对角线长度1008相同,并且因此在经裁剪和缩放的后续帧1032中描绘的人的大小与在初始帧1002中描绘的人员的大小相同。在一些示例中,边界框1034的中心点1036位于经裁剪和缩放的后续帧1032的中心。在一些示例中,帧1032的中心点1036相对于左上角点1037的位置和距离1039是与初始帧1002中的该中心点1006相对于左上角点1007的位置和距离1009相同的,导致人员在经裁剪和缩放的后续帧1032中被保持在与人员在初始帧1032中的相同位置。因此,在经裁剪和缩放的后续帧1032中描绘的人的大小是与在初始帧1002中描绘的人员的大小相同的,并且被保持位于与整个视频中的其它帧一致的位置。
回到图9B,在框944处的过程935包括执行视频稳定化。可以使用任何合适的视频稳定化技术来稳定视频帧。通常,视频稳定化技术用于通过在视频捕获期间减少设备(例如,移动设备、手持相机、头戴式显示器等)的不必要的震动和抖动,来避免视觉质量损失。视频稳定化减少了震动和抖动,而不会影响移动的对象或故意的相机平移。视频稳定化能够有利于手持成像设备(例如,移动电话),由于这些设备的大小较小因此可能受到抖动的影响很大。不稳定的图像通常是由不期望的手摇晃和故意的相机平移而引起的,其中相机的不期望的位置波动会导致不稳定的图像序列。使用视频稳定技术可以确保即使在非最佳条件下也可以获得高视觉质量和稳定视频片段。
可以执行的视频稳定技术的一个示例是欧几里德变换的快速且鲁棒的二维运动模型,运动模型可以使用该欧几里德变换来解决视频稳定化问题。在欧几里德运动模型中,可以将图像中的正方形转换为具有不同位置、大小和/或旋转的任何其它正方形,以用于移动稳定化(因为在视频的连续帧之间的相机移动通常较小)。图11是示出所应用的运动模型的示例的图式,该运动模型包括初始正方形和相对于初始正方形而应用的各种变换。该变换包括转化、欧几里德、仿射和单应性(Homography)。
图12是示出用于执行图像稳定化的过程1200的示例的流程图。图像稳定过程包括:跟踪两个连续帧之间的一个或多个特征点。被跟踪的特征允许系统估计多个帧之间的运动并对该运动进行补偿。提供包括帧序列的输入帧序列1202,作为对过程1200的输入。输入帧序列1202可以包括输出帧814。在框1204处,过程1200包括使用光流来执行显著点检测。执行显著检测以确定当前帧中的特征点。在框1204处,可以使用任何合适类型的光流技术或算法。在一些情况下,可以在逐个像素的基础上执行光流运动估计。例如,针对当前帧y中的每个像素,运动估计f定义相应像素在前一帧x中的位置。针对每个像素的运动估计f可以包括光流向量,该光流向量指示在多个帧之间的像素的移动。在一些情况下,针对像素的光流向量可以是位移向量(例如,指示水平位移和竖直位移,诸如x位移和y位移),该位移向量示出了像素从第一帧到第二帧的移动。
在一些示例中,可以基于多个帧之间的光流向量的计算来生成光流地图(也称为运动向量地图)。每个光流地图可以包括2D向量场,每个向量是示出点从第一帧到第二帧的移动(例如,指示水平位移和竖直位移,例如x位移和y位移)的位移向量。光流地图可以包括针对帧中的每个像素的光流向量,其中每个向量指示在多个帧之间的像素的移动。例如,可以在相邻帧之间计算密集光流,以生成针对帧中的每个像素的光流向量,该光流向量可以被包括在密集光流地图中。在一些情况下,光流地图可以包括针对帧中的少于全部像素的向量,诸如针对仅属被跟踪的外部观察者的一个或多个部分(例如,外部观察者的眼睛、外部观察者的一只或多只手和/或其它部位)的像素的向量。在一些示例中,可以在相邻帧之间计算Lucas-Kanade光流,以便生成针对帧中的一些或全部像素的光流向量,这些光流向量可以被包括在光流地图中。
如上文描述,可以在帧序列的相邻帧之间(例如,在相邻帧xt和xt-1的集合之间)计算光流向量或光流地图。两个相邻帧可以包括两个直接相邻帧,它们是被连续捕获的帧、或者是在帧序列中相隔一定距离(例如,彼此位于两个帧内、彼此位于三个帧内、或其它合适距离)的两个帧。从帧xt-1到帧xt的光流可以由Oxt-1,xt=dof(xt-1,xt)给出,其中dof是密集光流。可以使用任何合适的光流过程来生成光流地图。在一个说明性示例中,帧xt-1中的像素I(x,y,t)可以在下一帧中移动距离(Δx,Δy)。假设像素相同,并且xt-1帧和下一帧xt之间的强度不变,则可以假定以下方程序:。
I(x,y,t)=I(x+Δx,y+Δy,t+Δt)
通过采用上述方程式右侧的泰勒级数逼近,然后去除公共项并除以Δt,可以得出光流方程式:
fxu+fyv+ft=0,
其中:
使用上面的光流方程式,可以找到图像梯度fx和fy以及沿时间的梯度(表示为ft)。项u和v是的速度或光流I(x,y,t)的x分量和y分量,并且是未知的。在一些情况下,当无法用两个未知变量求解光流方程式时,可能需要一种估计技术。可以使用任何合适的估计技术来估计光流。这样的估计技术的示例包括差分方法(例如,Lucas-Kanade估计、Horn-Schunck估计、Buxton-Buxton估计、或其它合适的差分方法)、相位相关、基于块的方法、或其它合适的估计技术。例如,Lucas-Kanade假设光流(图像像素的位移)较小,并且在像素I的局部邻域中近似恒定,并使用最小二乘法求解针对该邻域中的全部像素的基本光流方程式。
在框1206处,过程1200包括:选择在连续图像中的显著点之间的对应关系。在框1208处,过程1200根据噪声对应关系来执行变换估计。在框1210处,过程1200包括:应用变换逼近和平滑以便生成包括输出帧序列的输出帧序列1212。例如,可以从先前图像帧和当前图像帧中检测关键特征点,并且然后将使用具有一对一的对应关系的特征点。基于所使用的特征点的位置,可以应用基于区域的变换以便将图像内容从前一帧映射到当前图像帧上。
在一些示例中,在图9B的整个过程935之前和之后应用视频帧提取和合并。例如,在一些情况下,系统800的输入和输出可以包括图像帧(而不是视频),在这种情况下,在整个过程之前和之后需要视频帧提取和合并。
在一些示例中,设备(例如,移动电话或智能手机)的固有变焦率和相机镜头切换功能可以用于执行本文描述的一种或多种技术。例如,系统可以输出具有本文描述的目标对象固定大小效果的一个视频。在一些情况下,这种解决方案可以用作实时特征(用于直播视频),并且可以在视频录制期间自动地调整相机变焦率。
在一些示例中,可以使用上述技术中的一种或多种技术和/或使用其它技术来执行自动变焦操作。图13A是示出用于执行自动变焦的各方面的过程1300的示例的图式。例如,过程1300可以将第一帧(或初始帧)中的对象和/或感兴趣区域的边界框的点(例如,中心点)和距离(例如,对角线长度)确定或设置为参考。在一些示例中,过程1300可以基于由用户所选择的自动变焦操作而开始。例如,设备可以接收来自用户的用户输入(例如,经由设备的触控屏幕的触摸输入、经由设备的麦克风的语音输入、使用设备的一个或多个相机的手势输入等),指示设备进入自动变焦模式。基于用户输入,设备可以执行过程1300。在一些示例中,一旦选择了自动变焦操作,设备就可以开始使用对象检测和跟踪系统(例如,图8B的对象检测和跟踪系统806),以便对任何感兴趣的区域或对象执行对象检测和跟踪。
在框1302处,过程1300包括获得帧序列的第一帧(或初始帧)(例如,用户识别对象和/或感兴趣区域所针对的视频的第一视频帧)。在框1304处,过程1300包括:确定第一帧中的目标感兴趣对象。例如,如上文描述,图8B的感兴趣区域(ROI)确定引擎804能够基于用户输入和/或自动地确定第一帧中的ROI。ROI可以对应于目标对象(或感兴趣对象)。ROI和/或目标对象可以由边界框或其它边界区域来表示。在一些示例中,当向显示设备进行输出时,边界框在帧中是可见的。在一些示例中,当向显示设备输出帧时,边界框可能是不可见的。确定初始ROI所处的帧叫做帧序列的初始帧(或参考帧)。
如上文描述,在一些示例中,可以基于对初始帧的一部分(诸如在初始帧中描绘的对象)的用户选择,来确定ROI。例如,用户可以选择将在自动变焦过程中使用的目标对象,以便跨帧序列的多个帧保持具有固定大小(例如,初始帧中的对象的大小)的对象。可以使用设备的任何输入接口(例如,触控屏幕、电子绘图工具、基于手势的用户界面(例如,用于检测手势输入的一个或多个图像传感器)、基于语音输入的用户界面(例如,用于识别语音输入的扬声器和语音识别工具)和/或其它用户界面,来接收用户输入。上面参考图8C和图9描述的任何输入和/或其它输入都可以由用户提供。例如,可以基于在初始帧中显示的对象上的轻击(例如,单击、双击等)、用户围绕该对象绘制边界框、或其它类型的对象选择,来执行对象选择。在一些情况下,可以为终端用户提供有关如何利用在整个视频或其它帧序列中保持目标对象大小不变的特征的指导。例如,可以向用户显示提示,指示如何选择在整个视频中保持固定的对象。对于视频,用户可以通过在视频的初始帧中点击(例如,在触控屏幕上)对象或在围绕该对象绘制边界框,来选择感兴趣对象。基于所选择的初始帧的部分,ROI确定引擎804可以定义围绕所选择的部分(例如,围绕所选择的对象)的ROI。
在一些示例中,可以在初始帧中(例如,使用对象检测和/或识别)自动检测初始帧中的对象,并且ROI确定引擎804可以定义围绕所检测到的对象的ROI。可以使用对象检测和/或识别技术(例如,面部检测和/或识别算法、特征检测和/或识别算法、边缘检测算法、边界跟踪功能、其任何组合和/或其它对象检测和/或识别技术),来检测对象。
在框1306处,过程1300包括:将对象边界框点和距离确定或设置为参考。在一个说明性示例中,该点可以包括边界框的中心点。在一些情况下,也可以使用边界框的其它点,诸如边界框最左上角点或拐角。在另一个示例中,边界框中的对象上的点可以用作参考点,诸如对象的中心点。在另一个说明性示例中,距离可以是边界框的对角线长度(例如,从边界框的左下角点到边界框的右上角点的长度、或者从边界框的右下角点到边界框的左上角点的长度)。在一些示例中,距离可以包括在边界框中的对象的两个点之间的长度。例如,如果对象是人,则可以将人的头顶与人的脚底之间的长度用作长度。
通过设置边界框的对象中心点(或其它点)和对角线长度(或其它距离),过程1300可以初始化目标对象信息,包括对象中心点坐标、对象边界框对角线长度、以及针对对象的当前变焦率。
图13B是示出用于针对在初始帧之后捕获(例如,在帧序列中的初始帧之后发生)的一个或多个后续帧执行自动变焦的附加方面的过程1310的示例的图式。在框1312处,过程1310包括:获得一个或多个后续帧。在一些情况下,可以一次针对来自一个或多个后续帧中的一帧,执行过程1310的单次迭代。在一些情况下,可以一次针对来自一个或多个后续帧中的多个帧,执行过程1310的单次迭代。由处理1310处理的后续帧被称为当前后续帧。
在框1314处,过程1310包括:从显示处理引擎807获得帧。该帧可以被称为分析帧或预览帧。如以上关于图8A所描述的,预览(或分析)帧可以具有与输出帧相同的长宽比,但是具有较低的分辨率(较小的大小)。例如,与当前后续帧的完整输出版本相比,预览帧可以是当前后续帧的较低分辨率版本。帧裁剪和缩放系统(例如,帧裁剪和缩放系统815和/或帧裁剪和缩放系统800)可以将预览帧用于对象检测和跟踪处理。例如,在框1316处,过程1310执行对象检测和/或跟踪,以检测和/或跟踪预览帧(由过程1310所处理的当前后续帧的较低分辨率版本)中的目标对象(从初始帧确定)。如上文描述,帧分析引擎811可以对分析(预览)帧执行对象检测和/或跟踪。
在框1318处,过程1310对预览(分析)帧执行坐标变换。例如,由于预览帧和传感器帧元数据(对应于完整输出帧)具有相同的图像内容,但不同的图像分辨率,因此可以执行坐标变换以使预览帧和完整输出帧具有相同的大小。在一个说明性示例中,坐标变换可以是放大过程。例如,过程1310可以放大预览帧,以使其具有与对应于传感器帧元数据的完整输出帧相同的分辨率。
在框1320处,过程1310基于被跟踪的目标对象信息来确定针对当前后续帧中的目标对象的点(例如,中心点或其它点)和缩放率。被跟踪的目标对象信息包括与从当前后续帧中检测和跟踪的目标对象相关联的信息。被跟踪的对象信息可以包括:检测到的针对目标对象的对象边界框、边界框的位置、以及边界框的中心点(或其它点)。针对目标对象而确定的点可以包括与在初始帧中针对目标对象而确定的点相同的点。例如,如果在框1306处针对初始帧中的目标对象而确定的点是对象或ROI的中心点,则在框1320处针对当前后续帧中的目标对象而确定的点还可以包括对象或ROI的中心点。
在框1322处,过程1310包括:确定或计算针对在框1320处确定的对象点(例如,中心点)的步长值和针对在框1320处确定的缩放率的步长值。在一个说明性示例中,针对该点的x坐标的步长值可以被确定为diff_x=(curr_x-prev_x)/frame_count,其是线性阶跃函数(linear step function)。项frame_count可以是常整数,并且可以被定义为任何合适的数值(例如,数值1、2、3或其它合适的整数)。使用线性阶跃函数,可以将步长计数确定为当前后续帧中的目标对象的中心点与先前帧(例如,在视频的当前后续帧之前的前一帧)中的目标对象的中心点的x坐标之差除以帧数(frame count)。在另一个说明性示例中,针对点的y坐标的步长值可以被确定为diff_y=(curr_y-prev_y)/frame_count,类似于用于x坐标的步长值。在另一个说明性示例中,针对缩放率的步长值可以被确定为diff_zoom=(curr_ratio-prev_ratio)/frame_count。例如,针对缩放率的步长可以被确定为当前后续帧中的目标对象的缩放率与前一帧(例如,在视频的当前后续帧之前的前一帧)中的目标对象的缩放率之差除以帧数。
在框1324处,过程1310包括:从传感器帧元数据引擎813获得传感器帧元数据。如上文描述,传感器帧元数据可以表示输出图像信息,并且具有与输出图像相同的图像分辨率。图像元数据帧具有与预览帧相同的长宽比,但具有更高的分辨率。
在框1326处,过程1310包括:基于(例如,使用上述线性阶跃函数而确定的)步长值,来确定经更新的缩放率和经更新的点(例如,中心点)。步长值是从线性步长计算出的,其中使用线性间隔序列中的步长数量将参数从起始值逐步到停止值。运行的步长数量将始终是输入到步长数量字段中的参数。
在框1328处,过程1310包括基于来自框1320的输出(针对当前后续帧中的对象而确定的对象缩放率和点)以及来自框1326的输出(针对对象的经更新的缩放率和点),来执行缩放率平滑和/或边界框点轨迹平滑操作。例如,平滑引擎812可以通过执行缩放率平滑来确定针对缩放率的平滑值。在另一个示例中,平滑引擎812可以通过执行边界框中心点轨迹平滑来确定针对ROI或对象的中心点的平滑值。如上文描述,缩放率平滑操作平滑了边界框的大小变化(例如,对角线长度的大小变化),从而允许图像中的目标对象的大小逐帧逐渐变化。边界框点轨迹平滑操作允许对象(例如,基于对象的中心点)从帧到帧逐渐移动。
在一些示例中,平滑引擎812可以使用上述移动平均算法来执行缩放率平滑和/或边界框点轨迹平滑操作。在一些示例中,平滑引擎812可以将高斯滤波器函数用于缩放率平滑。图14是示出高斯滤波器平滑函数的示例的图形1400。例如,可以使用具有窗口大小N的高斯滤波器函数,其中N表示可以设置为任何适合值(例如,N=31或其它值)的经验阈值。高斯滤波器平滑函数的说明性示例如下所示(并且窗口大小N显示为window_size):
function f=gaussian(window_size)
sigma=double(window_size)/5;
h=exp(-((1:window_size)-ceil(window_size/2)).^2/(2*sigma^2));
f=h(:)/sum(h)
end
在一些示例中,平滑引擎812可以使用具有窗口大小为M或其它值的中值滤波器函数,以用于缩放率平滑。在一些示例中,平滑引擎812可以使用具有窗口大小M的斐波纳契数列滤波器函数以用于缩放率平滑。M表示可以设置为任何适合值(诸如M=31或其它值)的经验阈值。图15是示出斐波纳契滤波器平滑函数的图形1500。斐波纳契滤波器平滑函数的说明性示例如下所示:
M=windowsize
F0=0,F1=1
FM=FM-1+FM-2
在框1330处,过程1310包括:更新当前后续帧的区域以进行变焦。例如,过程1310可以将该区域作为变焦信息(例如,变焦矩形以进行放大或上采样作为最终输出帧)发送给相机流水线,诸如图像传感器801、包括图像传感器130的图像捕获设备105A、以及一个或多个变焦控制机构125C等。在一个示例中,图像捕获设备105A的一个或多个变焦控制机构125C可以使用变焦信息(用于变焦的区域)来裁剪和缩放所捕获的帧,使得该对象具有期望的变焦级别。下面提供了信息的说明性示例:
curr_ratio+=diff_zoom
curr_x+=diff_x
curr_y+=diff_y
其中curr_ratio是前一帧的变焦率值,而curr_x和curr_y分别是前一帧的中心位置的x坐标和y坐标。diff_zoom、diff_x和diff_y的符号是相机变焦率的步长值和当前帧的中心点位置。
在框1332处,过程1300输出从初始捕获的帧已经裁剪并缩放的帧,从而将目标对象保持在该目标对象位于初始帧中的大小。
在一些示例中,可以基于分析音频来执行自动变焦操作,作为使用上述技术中的一种或多种技术的补充或替代。例如,通过分析与视频相关联的音频数据,系统可以自动地聚焦在发出声音的显著或目标对象上。在一些情况下,音频源会随着相机变焦而自动地放大并集中在显著对象上。在一些示例中,可以去除背景噪声。例如,如果用户在表演期间正在录制人的视频,则随着用户对人员进行放大时,可以增强人的语音(例如,使其更清晰,诸如通过增大音量、消除背景噪声等)。此类技术可用于生成或录制在一个或多个视频帧中的特定点(例如,在中心点)处具有一致目标对象大小的视频。这样的技术可以应用于实时视频录制和/或其它用例中。
图13C和图13D是示出用于基于分析音频来执行自动变焦的各方面的过程1340和1350的示例的图式。参考图13C,在框1342处,过程1340包括:获得第一(或初始)音频-视频源。第一音频-视频源可以包括视频帧以及与该视频帧相关联的音频信息。
在框1344处,过程1340执行视觉处理,以处理第一音频-视频源的视频数据以检测一个或多个候选目标对象。例如,可以在给定帧中检测一个或多个目标对象。视觉处理可以包括:从视频帧中检测一个或多个显著对象(例如,感兴趣的候选对象)。在框1346处,过程1340执行音频处理,以处理第一音频-视频源的音频数据以检测与目标对象相关联的声音。音频处理可以包括音频识别和/或分类,以识别和/或分类与视频帧相关联的音频。在一个说明性示例中,可以使用深度学习神经网络(例如,图42的深度学习网络4200、图43的卷积神经网络4300、或者其它深度神经网络)来执行视觉和音频处理。在这样的示例中,输入是视频(音频-视频源),而神经网络输出是具有被突出显示的发出声音的至少一个对象的图像。
在框1347处,过程1340包括:基于音频处理,确定所检测到的候选对象(基于视觉处理而检测到)是否正在发出声音。如果确定候选对象正在发出声音,则类似于图13A中的过程1300的框1306,在框1348处的过程1340可以包括:将对象边界框点和距离确定或设置为参考。在一个说明性示例中,点可以包括边界框的中心点,距离可以是边界框的对角线长度(例如,从边界框的左下角点到边界框的右上角点的长度,或者从边界框的右下角点到边界框的左上角点的长度)。如上文描述,可以使用其它点和/或距离。如果在框1347处确定候选目标对象没有发出声音,则可以针对下一个候选目标对象是否正在发出声音,对该对象进行分析。类似于参考图13A所描述的,通过设置边界框的点(例如,对象中心点)和距离(例如,对角线长度),过程1340可以初始化目标对象信息,包括对象中心点坐标、对象边界框对角线长度、以及针对该对象的当前变焦率。
参考图13D,过程1350类似于图13B的过程1320,并且还包括音频处理操作(在框1352、框1354、框1356、框1358和框1360处)。图13D中的具有与图13B中的相似数字的框是在上面参考图13B进行描述的。在框1352处,过程1350包括:执行音频三维(3D)定位。3D声音本地化是指一种用于在3D空间中定位声音的来源的声学技术。源位置可以通过入射声波的方向(例如,水平和竖直角度)以及源与传感器之间的距离来确定。一旦执行音频3D复位位,过程1350进行到框1332以输出经裁剪和缩放的帧,如上面参考图13B所描述的。
在框1354处,过程1300包括:获得后续音频。后续音频可以是与在框1312处获得的一个或多个后续帧相关联的音频。在框1356处,过程1300包括通过放大音频源并放大其声音来进行更新。
在框1358处,过程1300包括:执行背景噪声降低。例如,音频背景噪声(诸如纸张嘎吱声、键盘打字、风扇噪声、犬吠声和其它噪声)会降低音频信号的听觉感知。音频背景噪声消除可以帮助消除干扰性噪声、滤除干扰性噪声,以便创建更好的音频体验。在框1360处,过程1300包括输出与在框1332处输出的帧相关联的音频。
图16是示出相机流水线(例如,图像传感器801、包括图像传感器130的图像捕获设备105A、以及一个或多个变焦控制机构125C等)中的变焦过程的图式。如图所示,图像捕获设备可以流式(例如,默认)输出具有1.0x变焦率(指零或无变焦)的输出帧。在具有1.0x变焦率的帧1602中示出了感兴趣的变焦区域(ROI)1604(也称为裁剪矩形或变焦矩形)。例如,如上文描述,图8B的ROI确定引擎804可以基于用户输入和/或自动地确定特定帧中的初始感兴趣区域(ROI)。在一个说明性示例中,用户可以提供定义变焦ROI 1604的用户输入,包括矩形位置和大小。如图所示,从帧1602裁剪变焦ROI 1604。一旦从帧1602裁剪,针对输出流对变焦ROI 1604进行放大或上采样(示出为经放大的帧1606)。
图17是示出针对变焦请求具有七(7)帧延时的相机流水线的变焦延时的图式。图17中所示的示例表示七(7)帧的帧延时,其中将在七个帧之后应用在给定帧中进行变焦请求。例如,针对基于图17的帧1做出的针对1.1x变焦的请求1702,稍后在帧8处将应用相应的变焦调整。如图所示,帧8具有变焦量1.1。可以每一帧调整变焦增量。例如,可以基于帧2做出1.2x变焦的请求1704,并且将在7个帧之后的帧9处应用相应的变焦调整(显示具有变焦量1.2)。可以基于帧4做出针对1.8x变焦的请求1706,然后将在7个帧之后的帧11处应用相应的变焦调整(显示具有变焦量1.8)。
通过使用上述帧裁剪和缩放技术来实现若干优点。例如,裁剪和缩放技术实现为视频系统(例如,移动设备、视频分析系统等)中的目标对象提供固定大小的特征。实现裁剪和缩放技术的系统可以实现良好性能,并且可以部署在任何类型的设备中,诸如移动设备、IP相机等。
图18是示出使用本文中所描述的技术来处理一个或多个帧的过程1800的示例的流程图。在框1802处,过程1800包括:确定帧序列的第一帧中的感兴趣区域。第一帧中的感兴趣区域包括在第一帧中具有一定大小的对象。如上文描述,可以基于用户输入或者可以自动地确定感兴趣区域。在一些示例中,过程1800包括:接收与第一帧中的对象的选择相对应的用户输入,以及基于接收到的用户输入来确定第一帧中的感兴趣区域。在一些方面中,用户输入包括:使用设备的触摸界面而提供的触摸输入(例如,选择对象、围绕对象绘制形状等)。如本文描述,用户输入可以包括其它类型的用户输入。
在框1804处,过程1800包括:对帧序列中的第二帧的一部分进行裁剪,第二帧出现在帧序列中的第一帧之后。在框1806处,过程1800包括:基于第一帧中的对象的大小来缩放第二帧的该部分。例如,基于第一帧中的对象的大小来缩放第二帧的该部分导致第二帧中的对象具有与该对象在第一帧中相同的大小。在一些示例中,对第二帧的部分的裁剪和缩放将对象保持在第二帧的中心。在一些情况下,过程1800包括:检测和跟踪在帧序列的一个或多个帧中的对象。
在一些示例中,过程1800包括:确定为第二帧中的对象而确定的对象区域的点,并且在对象区域的点位于经裁剪和缩放部分的中心的情况下来对第二帧的该部分进行裁剪和缩放。在一些情况下,对象区域的点是对象区域的中心点。在一些情况下,对象区域是边界框(或其它边界区域)。在一些情况下,中心点是边界框(或其它区域)的中心点。在一些情况下,中心点是对象的中心点(例如,对象的质心或中心点)。可以通过执行对象分割(例如,使用图6A中所示的系统600)来找到中心点。
在一些方面中,过程1800包括:确定与第一帧中的对象相关联的第一长度,以及确定与第二帧中的对象相关联的第二长度。过程1800可以包括:基于第一长度和第二长度之间的比较来确定缩放因子,以及基于缩放因子来缩放第二帧的该部分。在一些情况下,基于缩放因子来缩放第二帧的该部分导致经裁剪和缩放的部分中的第二对象区域具有与第一帧中的第一对象区域相同的大小。在一些示例中,第一长度是针对第一帧中的对象而确定的第一对象区域的长度,并且第二长度是针对第二帧中的对象而确定的第二对象区域的长度。在一些情况下,第一对象区域是第一边界框(或其它边界区域),而第二对象区域是第二边界框(或其它边界区域)。第一长度可以是第一边界框的对角线长度(或其它长度),而第二长度可以是第二边界框的对角线长度(或其它长度)。在一些情况下,第一长度可以是第一帧中的对象的点之间的长度,而第二长度可以是第二帧中的对象的多个点之间的长度。
在一些方面中,过程1800包括:确定针对第一帧中的对象而生成的第一对象区域的点,以及确定针对第二帧中的对象而生成的第二对象区域的点。在一些实现方式中,第一对象区域的点是第一对象区域的中心点(例如,第一帧中的对象的中心点、或者第一边界框的中心点),而第二对象区域的点是第二对象区域的中心点(例如,第二帧中的对象的中心点、或第二边界框的中心点)。过程1800可以包括:基于使用第一对象区域的点和第二对象区域的点的平滑函数来确定针对对象的移动因子。平滑函数可以控制帧序列中的多个帧中的对象的位置变化。例如,平滑函数可以控制对象的位置变化,以使对象的位置在帧序列中的多个帧中逐渐变化(例如,使得该变化不超过阈值位置变化,诸如5个像素、10个像素、或其它阈值位置变化)。在一些示例中,平滑函数包括移动函数(例如,移动平均函数或其它移动函数),该移动函数用于基于对象移动的统计度量(例如,平均值、均值、标准偏差、方差、或其它统计测量)来确定帧序列的多个帧中的每个帧中的相应对象区域的点的位置。在一个说明性示例中,平滑函数包括移动平均函数,该移动平均函数用于确定在多个帧中的每个帧中的相应对象区域的点的平均位置。例如,如上文描述,移动平均可以减少或消除错误警报(例如,通过最小化错误检测/跟踪的对象边界框位置)。过程1800可以包括:基于移动因子,来裁剪第二帧的该部分。
在一些示例中,过程1800包括:确定与第一帧中的对象相关联的第一长度,以及确定与第二帧中的对象相关联的第二长度。在一些示例中,第一长度是针对第一帧中的对象而生成的第一边界框的长度,并且其中第二长度是针对第二帧中的对象而生成的第二边界框的长度。在一些情况下,第一长度是第一边界框的对角线长度,并且其中第二长度是第二边界框的对角线长度。过程1800可以包括:基于第一长度和第二长度之间的比较以及基于使用第一长度和第二长度的平滑函数来确定针对对象的缩放因子。平滑函数可以控制帧序列中的多个帧中对象的大小变化。例如,平滑函数可以控制对象的大小变化,以使对象的大小在帧序列的多个帧中逐渐变化(例如,使得该变化不超过阈值大小变化,例如,按照不大于5%、10%、20%、或其它阈值大小变化)。在一些情况下,平滑函数包括:用于基于对象大小的统计度量(例如,平均值、均值、标准偏差、方差或其它统计测量)来确定与帧序列的多个帧中的每个帧中的对象相关联的长度的移动函数(例如,移动平均函数、或其它移动函数)。在一个说明性示例中,平滑函数包括移动平均函数,该移动平均函数用于确定与多个帧中的每个帧中的对象相关联的平均长度。例如,如上文描述,移动平均可以减少或消除错误警报(例如,通过最小化错误检测/跟踪的对象边界框对角线长度或者在对象的多个部分之间的错误检测/跟踪的长度)。过程1800可以包括:基于缩放因子,来缩放第二帧的该部分。在一些方面中,基于缩放因子来缩放第二帧的该部分使得经裁剪和缩放的部分中的第二边界框具有与第一帧中的第一边界框相同的大小。
图19、图20、图21、图22、图23示出了在四个视频片段上进行的模拟。视频片段都包含分辨率720p和1080p,并且都以每秒30帧(fps)的速度被捕获。图19至图23中的每个示例是放大效果的说明性示例(其中对帧进行裁剪以及上采样或放大,类似于图10A和图10B的示例)。如图19中所示,“初始帧0”是来自视频的第一帧,“初始帧X”是在视频录制期间的当前帧。为了实现放大效果,帧裁剪和缩放系统800将从初始帧X裁剪区域,并且然后将该区域上采样到初始帧大小。
如上文描述,设备可以包括用于执行一个或多个双相机模式特征的多个相机和/或镜头(例如,双相机镜头系统中的两个相机)。例如,设备的双相机镜头(例如,包括后部双相机镜头或其它双相机镜头的手机或智能手机)可以用于同时录制多个视频(例如,两个视频),这可以被称为“双相机视频录制”特征。在一些情况下,设备的双相机镜头的主相机镜头(例如,长焦镜头)可以捕获(和/或录制)第一视频,而双相机镜头的辅相机镜头(例如,变焦镜头,诸如广角镜头)可以捕获(和/或录制)第二视频。在一些情况下,第二视频可以用于执行上述帧裁剪和缩放技术,以在视频期间保持目标对象的大小固定。在一些情况下(例如,处理由ISP输出并且在显示或存储之前的图像),这种解决方案可以用作视频后处理特征。
在一些情况下,可以通过同时使用设备的两个相机镜头,诸如设备的主相机镜头(例如,长焦镜头)和辅相机镜头(例如,变焦镜头),来实现双相机模式特征。上面提到的双相机视频录制特征允许两个相机镜头同时录制两个视频。例如,设备可以使用广角镜头和标准镜头来录制单独的视频。在一些情况下,设备可以使用三个、四个甚至更多个相机镜头来同时录制视频。然后,视频可以被显示(例如,同时显示)、被存储、被发送给另一设备和/或以其它方式被使用。例如,使用双相机模式特征(例如,双相机视频录制),设备可以在显示器上一次显示场景的两个透视图(例如,分屏视频)。通过双相机模式特征提供了各种优点,诸如允许设备捕获场景的广角视野(例如,在场景中有更多的背景和周围对象),允许设备捕获大规模事件或场景的全景等。
在一些情况下,可以使用多个相机模块和镜头来执行变焦功能。例如,与主相机和/或镜头(例如,其可以具有1.0x相机变焦率)相比,可以将辅相机镜头设置为更远的变焦级别(例如,2.0x相机变焦率)。
关于在帧序列中保持目标对象的固定大小,可能出现各种问题。在一个示例中,当目标对象朝向设备的相机移动时,设备可能无法执行缩小效果。该问题可能是由于来自初始视频帧的视野的限制而引起的。例如,在帧中可能没有足够的空间来缩小以保持目标对象的大小(例如,导致在经缩放的帧周围出现黑色空间)。在另一示例中,当目标对象远离设备的相机时,基于初始视频帧而生成的放大图像可能有不良质量,诸如变模糊,包括一个或多个视觉伪像、缺乏清晰度等。此外,实现双相机模式特征的设备不包含任何人工智能技术。这样的系统要求终端用户使用视频编辑工具或软件应用程序来手动编辑图像。
如上文描述,本文描述了用于在可以实现上述一个或多个双相机模式特征的设备的多个相机或镜头之间切换的系统和技术。尽管本文中参考双相机系统或两个相机系统描述了系统和技术,但是可以将系统和技术应用于具有多于两个相机的系统(例如,当使用三个相机、四个相机或其它数量的相机来捕获图片或视频时)。在一些情况下,本文描述的系统和技术可以在双相机系统中使用相机镜头切换算法,以便针对在使用双相机系统所捕获的视频帧序列中保持目标对象的固定大小。在一些示例中,系统和技术可以执行双相机变焦,这可以用于提供更加详细的对象变焦效果。
如上文描述,对象检测和跟踪系统(例如,对象检测和跟踪系统806)可以在一帧或多帧中检测和/或跟踪对象。对象检测和跟踪系统可以将任何合适的对象检测和跟踪技术用于本文描述的多相机(例如,双相机)实现方式,诸如上述那些实现方式。在一些情况下,如上文描述,可以基于用户输入或自动地识别感兴趣区域(ROI)或目标对象。
在一些示例中,对象检测和跟踪系统可以通过使用机器学习对象检测和跟踪系统执行用于双相机视频分析的对象匹配,来检测和/或跟踪帧中的对象。例如,对象检测和跟踪系统可以从一个或多个输入帧中提取感兴趣点。感兴趣点可以包括:帧中的从不同的光照条件和视点来看是稳定且可重复的二维(2D)位置。感兴趣点也可以被称为关键点或标志点(例如,人脸上的面部标志点)。机器学习系统的一个示例是卷积神经网络(CNN)。在一些情况下,对于使用帧或图像作为输入的各种任务,CNN可能优于手工设计的表示。例如,CNN可以用于预测2D关键点或标志点以用于各种任务,诸如对象检测和/或跟踪。
图24是示出基于机器学习的对象检测和跟踪系统2400的示例的图式。在一些情况下,系统2400使用自我训练来自我监督(而不是使用人工监督来定义实际训练图像中的感兴趣点)。并且,通过具有点特征匹配的点对应关系来进行对象跟踪。在一些情况下,使用了真实图像或帧中感兴趣点的伪地面真实位置的大数据集合,该大数据集合可以由系统2400本身预先配置或预先设置,而不是大规模的人工注释工作。
系统2400包括全卷积神经网络架构。在一些示例中,系统2400接收一个或多个全大小图像作为输入并且对其进行操作。例如,如图24中所示,可以将包括图像2402和图像2404的图像对输入到系统(例如,在训练期间和/或在推理期间)。在一些情况下,系统2400(使用全大小图像作为输入)在单个前向通路中产生伴随有固定长度描述符的感兴趣点检测。系统2400的神经网络模型包括单个共享的编码器2406(显示为具有四个卷积层,但是可以包括更多或更少的层),以处理和减小输入图像的维度。在编码器之后,神经网络架构分为学习特定于任务的权重的两个解码器头部。例如,训练第一解码器头部2408以用于感兴趣点检测,并且训练第二解码器头部2410以用于生成感兴趣点描述(被称为描述符)。查找兴趣点的任务可以包括检测和描述(例如,分别由解码器头部2408和2410执行)。检测是对图像或帧中感兴趣点的定位,并且描述说明了每个检测到的点(例如,具有向量)。系统2400的总体目标是有效和高效地找到特性和稳定的视觉特征。
在一些示例中,系统2400可以使输入图像中的像素的每个区域(例如,每个8×8像素区域)弯曲。该区域可以被认为是弯曲之后的一个像素,在这种情况下,像素的每个区域都可以由具有64个通道的特征地图中的一个特定像素来表示,后面跟一个垃圾箱通道。如果在特定的8×8区域中没有检测到任何感兴趣点(例如,关键点),则垃圾箱可以具有高激活度。如果在8×8区域中检测到关键点,则其它64个通道可以通过softmax架构,以便在8×8区域中找到关键点。在一些情况下,系统2400可以在单次前向通路中计算2D感兴趣点位置和描述符,并且可以使用Titan X图形处理单元(GPU)在480×640图像上以每秒70帧(fps)运行。
图25是示出相机镜头切换流水线2500的示例的流程图。流水线2500是双相机镜头切换逻辑的示例。图25中所指的第一镜头是设备(例如,基于用户输入)用作用于捕获视频的主镜头的镜头和/或相机。在一些情况下,第一镜头可以是长焦镜头,而图25中所指的第二镜头可以是广角镜头。在一些情况下,第一镜头可以是广角镜头,而第二镜头可以是长焦镜头。任何其它类型的镜头可以用于第一镜头和第二镜头。
在框2502处,目标固定大小特征可以从第一镜头开始(例如,如果用户选择长焦镜头作为主镜头来录制视频,则为长焦镜头)。当满足某些条件时(如下文描述),流水线2500的框2504和框2508可以将主镜头从第一镜头(例如,长焦镜头)切换到第二镜头(例如,广角镜头),以用于执行目标固定大小功能。在这种情况下,第二镜头可以用于捕获一个或多个主视频帧。当满足某些条件时(如下文描述),流水线2500的框2506和框2510可以将主镜头从第二镜头(例如,广角镜头)切换回第一镜头(例如,长焦镜头),以执行目标固定大小特征。在这种情况下,第一镜头可以用于捕获任何主视频帧。
可以用于执行相机镜头切换的算法(称为算法1A)的示例如下(使用长焦(远摄)镜头作为第一镜头的示例,并且使用广角镜头作为第二镜头的示例):
基于来自第一帧或初始帧的中心点的目标对象边界框中心x和y位移来初始化disp_xy
将done_by_tele初始化为真,将tele_lens_ratio初始化为1.0
初始化针对长焦镜头和广角镜头的相机zooming_ratio值
当项done_by_tele为真(例如,被赋值1)时,长焦镜头用于执行目标固定大小特征。zooming_ratio是上述缩放(或变焦)率,并且用于确定将来自输入帧的ROI或对象放大多少。
在一些情况下,上述相机镜头切换算法可以继续如下操作(被称为算法1B):
对于输入视频帧的每次迭代
#选项1)首先,第一视频帧,从长焦镜头开始
#选项2)保持使用长焦镜头
#选项3)从广角镜头切换到长焦镜头
如果tele_zooming_ratio 1.0
基于tele_zooming_ratio来重新调整对象bbox宽度和高度
重新定位对象位置
如果对象bbox宽度或高度位于图像之外
#切换到广角镜头
done_by_tele==假
跳过
处理视频帧裁剪和重新调整大小
更新disp_xy位移
done_by_tele=真
设置wide_lens_tirnes_ratio=1.0
否则
done_by_tele=假
#选项1)保持使用广角镜头
#选项2)从长焦镜头切换到广角镜头
如果done_by_tele==假
如果先前迭代是通过长焦镜头来完成的
更新广角镜头倍率
如果wide_lens_times_ratio*wide_zooming_ratio 1.0
如果disp_xy!=0且
更新disp_xy位移
处理视频帧裁剪和重新调整大小
否则
保持原始视频帧,而不裁剪和重新调整大小
图26是示出相机镜头切换过程2600的示例的流程图。在框2602处,对于包括使用第一相机镜头捕获的帧的主视频,过程2600可以从使用第一镜头捕获的视频执行视频帧选择(例如,长焦相机镜头)。例如,用户可以选择一个视频帧作为第一帧,该第一帧将用作用于执行目标固定大小特征的起点。例如,如上文描述,第一帧可以用于定义ROI和/或目标对象大小、点(例如,边界框的中心点)、以及距离(例如,边界框的对角线长度)。在框2603处,过程2600可以使用第二相机镜头(例如,广角相机镜头)从正在捕获或录制的视频中确定或定位相应的视频帧。在一个说明性示例中,来自第一相机镜头和第二相机镜头的视频帧可以具有附图标记,该附图标记可以对应于关于那些帧的输出时间。过程2600(在框2603处)可以使用帧的附图标记来确定对应的视频帧。第一相机镜头在图26中示出为长焦镜头(本文也称为“远摄镜头”),而第二镜头在图26中示出为广角相机镜头。然而,本领域普通技术人员将理解,第一镜头和第二镜头可以是任何其它合适的镜头。
在框2604处,过程2600包括:选择和/或绘制针对第一视频帧中的目标对象的边界框(或其它边界区域)。例如,用户可以通过提供用户输入(例如,点击在触控屏幕显示器上显示的帧中的目标对象、围绕目标对象绘制边界框、或者通过提供任何其它合适类型的输入)从第一视频帧中选择目标对象(例如,在一些情况下是单个对象或多个对象)。在另一示例中,可以使用上述技术来自动地确定目标对象(例如,通过对象检测和跟踪系统806)。
在框2605处,过程2600在使用在框2603确定的第二镜头捕获的视频的相应视频帧中确定或找到相同的目标对象。在一些情况下,为了从使用第二镜头捕获的视频中找到相同的目标,过程2600可以(例如,使用对象检测和跟踪系统806)从使用第一镜头捕获的视频中确定目标对象的近似位置。然后,过程2600可以应用对象匹配算法(例如,使用来自图24的系统2400)以在使用第二镜头捕获的视频中定位目标对象,该目标可以与边界框和信息相关联。
在框2606处,过程2600可以执行对象检测和跟踪。在一些情况下,对象检测和跟踪可以类似于上面参考图8B至图13B描述的对象检测和跟踪。例如,对象检测和跟踪系统806可以并行地自动检测和跟踪两个视频(由第一镜头捕获的视频和由第二镜头捕获的视频)中的对象。在框2608处,过程2600(例如,通过对象检测和跟踪系统806)确定或捕获针对跨两个视频的帧的目标对象而确定的边界框的点(例如,中心点)的坐标和距离(例如,对角线长度)。在一些情况下,可以存储点(例如,中心点)和距离(例如,对角线长度),以供过程2600稍后使用。
在框2610处,过程2600应用平滑函数。例如,如上文描述,平滑引擎812可以应用平滑函数以便对帧缩放率(或重新调整大小率)进行平滑。可以通过将所选择的第一视频帧中的目标对象边界框对角线长度(或其它距离)与当前帧中的目标对象边界框对角线长度(或其它距离)进行比较,来计算缩放率或变焦率。如上文描述,在一些情况下,平滑函数可以包括移动平均函数。例如,平滑函数可以用于确定与帧序列的多个帧中的每个帧中的对象相关联的平均长度。
在框2612处,过程2600可以确定是否将要执行相机镜头切换。例如,过程2600可以使用上面提供的相机镜头切换算法(例如,算法1A和/或算法1B)来确定是使用来自第一镜头(例如,长焦镜头)还是来自第二镜头(例如,广角镜头)的视频帧。在框2614处,过程2600可以执行帧裁剪和缩放(或变焦)。例如,帧缩放引擎810可以基于对象边界框点坐标(例如,中心点坐标)以及缩放率或重新调整大小率,来对目标对象的ROI(例如,边界框)进行上采样(或放大)。在框2616处,过程2600执行视频稳定化,诸如使用上面参考图12描述的图像稳定化技术。在框2618处,过程2600输出从初始捕获帧已经裁剪并缩放的帧,从而将目标对象保持在该目标对象在初始或第一帧中的大小。
在一些情况下,如上文描述,可以将本文描述的相机镜头切换系统和技术应用或扩展到一次录制多个图像和/或视频的其它多相机系统(例如,包括三个相机、四个相机、五个相机的相机系统)。
在一些示例中,移动步长算法可以用于获得平滑效果。在一些情况下,可以使用上述使用移动步长值的技术(例如,如参考图13B所描述的)。提供了如下移动步长算法的说明性示例:
(1)操作1:在输出帧中将目标对象坐标center_xy初始化为(w/2,h/2),其中w是输出帧宽度,而h是输出帧高度
(2)操作2:当镜头被保持为长焦镜头(例如,如下述图32和图33所示)或镜头被保持为广角镜头(例如,如所描述的图34、图35和图36所示)时,更新center_xy
(3)操作3:当操作2的情况发生变化(从长焦镜头切换为广角镜头,或从广角镜头切换为长焦镜头)时,将目标对象坐标更新为(center_xy[1]±moving_step,center_xy[2]±moving_step),并且将该目标对象坐标应用于输出帧
(4)操作4:从操作3开始,通过move_step来更新center_xy,以便更接近(w/2,h/2)
(5)操作5:重复操作3和操作4,直到center_xy=(w/2,h/2)为止
图27至图36是示出使用上述相机镜头切换技术的示例的图式。使用长焦相机镜头(示出为“长焦帧”)作为(例如,由用户)所选择的镜头为主镜头的示例并且广角镜头(示出为“广角帧”)作为辅镜头的示例,来描述图27至图36的示例。
图27是示出镜头选择的示例的图式。例如,在当前长焦帧2704(示出为长焦帧N)中的目标对象的大小小于参考长焦帧2702中的目标对象的大小时,该设备或系统可以确定(例如,在图26的框2612处)使用长焦镜头帧2704来生成输出帧结果。图28是示出镜头选择的示例的另一图式。例如,在当前长焦帧2804(示出为长焦帧M)中的目标对象的大小大于参考长焦帧2802中的对象的大小时,该设备或系统可以确定使用广角镜头帧2806(示出为广角帧M以指示广角帧M和长焦帧M是相对于相机从相同角度同时捕获的),以生成输出帧结果。图29是示出镜头选择的示例的另一图式。例如,在当前广角帧2904(示出为广角帧P)中的目标对象的大小大于参考广角帧2902中的对象的大小时,该设备或系统可以确定使用当前广角帧2904来生成输出帧结果。
图30是示出从长焦镜头切换到广角镜头的示例的图式。例如,如果输出帧N是由长焦帧N生成的,并且当前长焦帧3004(示为长焦帧N+1)中的目标对象的大小大于参考长焦帧3002中的对象的大小,该设备或系统可以切换到广角帧3006(示出为广角帧N+1)以生成输出帧3008。
图31是示出从长焦镜头切换为广角镜头的示例的另一图式。例如,如果输出帧N是由长焦帧N来生成的,并且在当前长焦帧3104(示出为长焦帧N+1)中的目标的位置位于帧边界附近(例如,在这种情况下,在缩放或变焦之后,该对象并不位于帧的中心),该设备或系统可以从长焦帧切换到广角帧以生成输出帧3108。在一些情况下,该设备或系统可以通过以下方式来确定对象是否位于帧边界附近:确定目标对象的点(例如,对象的边界框的中心点)是否位于边界的阈值距离内,诸如在10个像素内、在20像素内或在其它距离内。即使当前长焦帧3104中的目标对象的大小小于该目标对象在参考长焦帧3102中的大小,当对象靠近边界时,仍然可以执行从当前长焦帧3104(使用长焦镜头来捕获)到广角帧3106(使用广角镜头来捕获)的切换。
图32是示出从广角镜头切换为长焦镜头的示例的图式。例如,如果输出帧N是由广角帧N生成的,如果当前广角帧3206(示出为广角帧N+1)中的目标对象的大小小于该对象在参考长焦帧3202中的大小,并且在放大之后目标对象的位置位于图像边界内,则该设备或系统可以从当前广角帧3206切换到当前长焦帧3204(示出为长焦帧N+1),以生成输出帧3208。
再次参考图32,提供了保持使用长焦镜头的示例。例如,如果输出帧N是由长焦帧N生成的,如果当前长焦帧3204中的目标对象的大小(长焦帧N+1)小于该目标对象在参考长焦帧3202中的大小,并且在放大之后目标对象的位置位于图像边界内,则该设备或系统可以继续使用长焦帧3204来生成输出帧3208。
图33是示出保持使用长焦镜头的另一示例的图式。例如,如果当前长焦帧3304(长焦帧N)中的目标对象的大小小于该目标对象在参考长焦帧3302中的大小,从当前长焦帧3304(示出为长焦帧N)开始3302,对象的位置位于帧边界附近(例如,目标对象的中心点或目标对象的边界框位于边界的阈值距离内),并且在阈值时间段内还没有发生相机镜头切换(例如,在一定数量的帧内、在一定时间量内和/或在其它时间段内还没有发生相机镜头切换),则该设备或系统可以继续使用长焦帧3304来生成输出帧3308。
图34是示出保持使用广角镜头的示例的图式。例如,如果当前广角帧3408中的目标对象的大小(示出为广角帧N)小于该目标对象在参考广角帧3404中的大小并且当前长焦帧3406(示出为长焦帧N)中的对象大小大于参考长焦帧3402中的对象大小,则该设备或系统可以继续使用当前广角帧3408来生成输出帧3410。
图35是示出保持使用广角镜头的另一示例的图式。例如,如果当前广角帧3506(示为广角帧M)中的目标对象的大小大于参考广角帧3502中的目标对象的大小,则该设备或系统可以继续使用当前广角帧3506来生成输出帧3510。
图36是示出保持使用广角镜头的另一示例的图式。例如,如果输出帧N是由广角帧N生成的,并且当前长焦帧3604(示为长焦帧N+1)中的目标对象的位置位于帧边界附近(例如,目标对象的中心点或目标对象的边界框位于边界的阈值距离内),在这种情况下,帧可能无法被缩放或变焦以获得输出帧,该设备或系统可以继续使用当前广角镜头帧3606(示为广角镜头N+1)以生成输出帧3608。即使当前长焦帧3604中的目标对象的大小小于参考长焦帧3602中的目标对象的大小,当对象位于边界附近时,该设备或系统可以继续使用当前广角镜头帧3606来生成输出帧3608。
图37至图41是示出使用本文描述的相机镜头切换系统和技术的模拟的图像。例如,为了同时模拟双相机视频录制,使用了移动电话(例如,智能电话)上的两个后置相机,包括长焦相机镜头和广角相机镜头。从双相机镜头,手动地对齐双录制的视频起点和终点。模拟结果中使用的测试样本视频具有1080P分辨率,其中每秒30帧(fps)。如上文描述,终端用户可以从长焦镜头视频帧中选择目标对象(例如,使用显示视频帧的触控屏幕)。
图37示出了来自长焦镜头的起始或初始视频帧(图37的左侧)和来自广角镜头的起始或初始视频帧(图37的右侧)。图38示出了来自长焦镜头的结束视频帧(图38的左侧)和来自广角镜头的结束视频帧(图38的右侧)。图39示出了在时间点n应用于长焦镜头视频帧的目标固定大小特征(图39的左侧),以及在从长焦镜头切换到广角镜头之后,在时间点n+1应用于广角镜头视频帧的目标固定大小特征(图39的右侧)。图40示出了在时间点m(图40的左侧)应用于广角镜头视频帧上的目标固定大小特征,以及在从广角镜头切换到长焦镜头之后,在时间点m+1应用于长焦镜头视频帧上的目标固定大小特征(图40的右侧)。图41示出了在时间点p应用于长焦镜头视频帧上的目标固定大小特征(图41的左侧),以及在从长焦镜头切换到广角镜头之后,在时间点p+1处应用于广角镜头视频帧上的目标固定大小特征(图41的右侧)。
本文描述的镜头切换系统和技术提供了各种优点。例如,镜头切换系统和技术使得上述目标定位大小特征能够用于多录制视频场景中(例如,在使用两个相机镜头的双录制视频中),同时获得高质量的结果。
在一些示例中,本文中描述的过程(例如,过程820、过程930、过程1200、过程1300、过程1310、过程1800、过程2500、过程2600和/或本文描述的其它过程)可以由计算设备或装置来执行。在一个示例中,一个或多个过程可以由图1的图像捕获和处理系统100来执行。在另一示例中,一个或多个过程可以由图8B的帧裁剪和缩放系统800来执行。在另一示例中,一个或多个过程可以由图47中所示的计算系统4700来执行。例如,具有图47中所示的计算系统4700的计算设备可以包括:帧裁剪和缩放系统800的组件,并且可以实现图8C的过程820、图9A的过程930、图9B的过程935、图13A的过程1300、图13B的过程1310、图18的过程1800和/或本文描述的其它过程的操作。
计算设备可以包括任何合适的设备,诸如移动设备(例如,移动电话)、台式计算设备、平板计算设备、可穿戴设备(例如,VR头戴式耳机、AR头戴式耳机、AR眼镜、网络连接的手表或智能手表、或其它可穿戴设备)、服务器计算机、无人驾驶交通工具、或无人驾驶交通工具的计算设备、机器人设备、电视机和/或具有执行本文描述过程(包括过程820、过程930、过程935、过程1800和/或本文描述的其它过程)的资源能力的任何其它计算设备。在一些情况下,计算设备或装置可以包括各种组件,诸如一个或多个输入设备、一个或多个输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机、一个或多个相机、一个或多个传感器和/或被配置为执行本文描述的过程的步骤的(一个或多个)其它组件。在一些示例中,计算设备可以包括显示器、被配置为通信和/或接收数据的网络接口、其任何组合和/或(一个或多个)其它组件。网络接口可以被配置为通信和/或接收基于互联网协议(IP)的数据或其它类型的数据。
计算设备的组件可以在电路系统中实现。例如,组件可以包括和/或可以使用电子电路或其它电子硬件来实现,该电子电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)和/或其它合适的电子电路),和/或可以包括计算机软件、固件或其任何组合,和/或使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。
将过程820、过程930、过程1200、过程1300、过程1310、过程1800、过程2500、过程2600示为逻辑流程图,其操作表示可以以硬件、计算机指令或其组合来实现的一系列操作。在计算机指令的上下文中,该操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当一个或多个处理器执行该计算机可执行指令时执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被理解为限制,并且可以以任何顺序和/或并行地组合任意数量的操作以实现该过程。
另外,过程820、过程930、过程1200、过程1300、过程1310、过程1800、过程2500、过程2600和/或本文描述的其它过程可以在被配置有可执行指令的一个或多个计算机系统的控制下执行并且可以作为通过硬件或其组合在一个或多个处理器上共同执行的程序代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用)进行实现。如上文描述,程序代码可以例如以包括由一个或多个处理器可执行的多个指令的计算机程序的形式存储在计算机可读或机器可读存储介质上。计算机可读或机器可读存储介质可以是非暂时性的。
如上文描述,本公开的各个方面可以使用机器学习系统,诸如对象跟踪、对象分类等。图42是能够用于实现上述基于机器学习的对象跟踪和/或分类的深度学习神经网络4200的示意性示例。输入层4220包括输入数据。在一个说明性示例中,输入层4220可包含表示输入视频帧的像素的数据。神经网络4200包括多个隐藏层4222a、4222b至4222n。隐藏层4222a、4222b至4222n包括“n”个隐藏层,其中“n”是大于或等于1的整数。可以使隐藏层的数量包括对于给定应用而言所需要的尽可能多的层。神经网络4200还包括输出层4224,其提供由隐藏层4222a、4222b至4222n执行的过程产生的输出。在一个说明性示例中,输出层4224可以提供对输入视频帧中的对象的分类。该分类可以包括识别对象(例如,人、狗、猫或其它对象)的类型的类别。
神经网络4200是互连节点的多层神经网络。每个节点可以表示一条信息。与节点相关联的信息是在不同层之间共享,并且随着信息被处理,每一层保留信息。在一些情况下,神经网络4200可以包括前馈网络,在这种情况下,不存在反馈连接,其中网络的输出被反馈回其自身中。在一些情况下,神经网络4200可以包括递归神经网络,该递归神经网络可以具有允许在读取输入时跨节点携带信息的循环。
可以通过各个层之间的节点到节点互连,在多个节点之间交换信息。输入层4220的节点可以激活第一隐藏层4222a中的节点集合。例如,如图所示,输入层4220的每个输入节点连接到第一隐藏层4222a的每个节点。第一隐藏层4222a的节点可以通过将激活函数应用于输入节点信息来变换每个输入节点的信息。然后可以将从变换推导出的信息传递给并可以激活下一个隐藏层4222b的节点,该节点可以执行其自己的指定功能。示例性功能包括卷积、上采样、数据转换和/或任何其它合适的功能。然后,隐藏层4222b的输出可以激活下一个隐藏层的节点,等等。最后一个隐藏层4222n的输出可以激活输出层4224的一个或多个节点,在该一个或多个节点处提供输出。在一些情况下,尽管神经网络4200中的节点(例如,节点4226)被示出为具有多条输出线,但是一个节点具有单个输出,并且示出为从一个节点输出的所有线都表示相同的输出值。
在一些情况下,每个节点或多个节点之间的互连可以具有权重,该权重是从神经网络4200的训练推导出的参数集合。一旦神经网络4200被训练,则其可以被称为经训练的神经网络,其可以用于对一个或多个对象进行分类。例如,节点之间的互连可以表示所学习的关于互连节点的信息。互连可以具有能够被调谐的可调数字权重(例如,基于训练数据集合),从而允许神经网络4200适应于输入并且能够随着处理越来越多的数据而学习。
神经网络4200被预训练为使用不同的隐藏层4222a、4222b到4222n来处理来自输入层4220中的数据的特征,以便通过输出层4224来提供输出。在其中神经网络4200用于识别图像中的对象的示例中,可以使用包括图像和标签两者的训练数据来训练神经网络4200。例如,可以将训练图像输入到网络中,其中每个训练图像具有标签,该标签指示每个图像中的一个或多个对象的类别(基本上,向网络指示对象是什么以及它们具有什么特征)。在一个说明性示例中,训练图像可以包括数字2的图像,在这种情况下,针对该图像的标签可以是[0 0 1 0 0 0 0 0 0 0]。
在一些情况下,神经网络4200可以使用被称为后向传播的训练过程来调整节点的权重。后向传播可以包括前向通路、损失函数、后向通路和权重更新。针对一个训练迭代,执行前向通路、损失函数、后向通路和参数更新。针对每个训练图像集合的某个数量的迭代,可以重复该过程,直到对神经网络4200进行了足够好的训练,从而可以精确地调整各层的权重。
对于识别图像中的对象的示例,前向通路可以包括使训练图像通过神经网络4200。在训练神经网络4200之前,起初对权重进行随机化。图像可以包括例如表示图像的像素的数字阵列。阵列中的每个数字可以包括从0到255的值,该值描述在阵列中该位置处的像素强度。在一个示例中,阵列可以包括具有28行和28列的像素和3种颜色分量(诸如红、绿和蓝、或者亮度分量和两个色度分量等)的28×28×3数字阵列。
针对神经网络4200的第一训练迭代,输出将可能包括由于在初始化时随机选择权重而没有向任何特定类别给予偏好的值。例如,如果输出是具有对象包括不同类别的概率的向量,则针对不同类别中的每个类别的概率值可以相等或至少非常相似(例如,针对10个可能的类别,每个类别可以具有概率值0.1)。在初始权重的情况下,神经网络4200无法确定低级特征,并且因此无法准确确定对象的分类可以是什么。损失函数可以用于分析输出中的错误。可以使用任何合适的损失函数定义。损失函数的一个示例包括均方误差(MSE)。MSE被定义为其计算实际答案减去预测(输出)答案的平方的一半之和。损失可以被设置为等于Etotal的值。
对于第一训练图像,损失(或误差)将是高的,因为实际值将与预测的输出有很大区别。训练的目的是使损失量最小化,以使预测的输出与训练标签相同。神经网络4200可以通过确定哪些输入(权重)对网络的损失影响最大,来执行后向通路,并且能够调整权重以使损失减小并最终最小化。
可以计算损耗相对于权重的导数(表示为dL/dW,其中W是特定层处的权重),以确定对网络的损失影响最大的权重。在计算导数之后,可以通过更新滤波器的所有权重,来执行权重更新。例如,可以更新权重,以使它们在梯度的相反方向上变化。权重更新可以表示为其中w表示权重,wi表示初始权重,η表示学习速率。可以将学习速率设置为任何合适的值,其中高学习速率包括较大的权重更新,而较低值指示较小的权重更新。
神经网络4200可以包括任何合适的深度网络。一个示例包括卷积神经网络(CNN),它包括输入层和输出层,并且在输入层与输出层之间有多个隐藏层。CNN的隐藏层包括一系列卷积、非线性、池化(用于下采样)和完全连接层。神经网络4200可以包括与CNN不同的任何其它深度网络,诸如自动编码器、深度信念网(DBN)、递归神经网络(RNN)等等。
图43是卷积神经网络(CNN)4300的说明性示例。CNN 4300的输入层4320包括表示图像的数据。例如,数据可以包括表示图像的像素的数字阵列,其中该阵列中的每个数字包括从0到255的值,该值描述了在阵列中的位置处的像素强度。使用来自上面的先前示例,阵列可以包括28×28×3数字阵列,具有28行和28列像素以及3个颜色分量(例如,红、绿和蓝,或者亮度分量和两个色度分量等等)。图像可以通过卷积隐藏层4322a、任选的非线性激活层、池化隐藏层4322b和完全连接的隐藏层4322c,以便在输出层4324处得到输出。尽管在图43中示出了各个隐藏层中的仅一个隐藏层,但是本领域普通技术人员将理解,CNN 4300中可以包括多个卷积隐藏层、非线性层、池化隐藏层和/或完全连接层。如先前描述,输出可以指示单个类别的对象,或者可以包括最佳描述图像中的对象的类别的概率。
CNN 4300的第一层是卷积隐藏层4322a。卷积隐藏层4322a分析输入层4320的图像数据。卷积隐藏层4322a的每个节点连接到输入图像的被称为感受野的节点(像素)区域。卷积隐藏层4322a可以被认为是一个或多个滤波器(每个滤波器对应于不同的激活或特征地图),其中滤波器的每个卷积迭代是卷积隐藏层4322a的节点或神经元。例如,滤波器在每次卷积迭代处覆盖的输入图像的区域将是用于该滤波器的感受野。在一个说明性示例中,如果输入图像包括28×28阵列,并且每个滤波器(以及相应感受野)是5×5阵列,则在卷积隐藏层4322a中将有24×24个节点。在节点与针对该节点的感受野之间的每个连接学习权重以及在一些情况下学习总体偏差,使得每个节点学习分析输入图像中的其特定的局部感受野。隐藏层4322a的每个节点将具有相同的权重和偏差(称为共享权重和共享偏差)。例如,滤波器具有权重(数字)阵列以及与输入相同的深度。对于视频帧示例,滤波器将具有深度3(根据输入图像的3个颜色分量)。滤波器阵列的说明性示例大小是5×5×3,对应于节点的感受野的大小。
卷积隐藏层4322a的卷积性质是由于卷积层的每个节点应用于其对应的感受野。例如,卷积隐藏层4322a的滤波器可以在输入图像阵列的左上角开始,并且可以围绕输入图像进行卷积。如上文描述,滤波器的每个卷积迭代可以被认为是卷积隐藏层4322a的节点或神经元。在每次卷积迭代处,将滤波器的值乘以图像的初始像素值的相应数量(例如,5×5滤波器阵列与输入图像阵列的左上角处的5×5输入像素值相乘)。来自每个卷积迭代的乘法可以相加在一起,以获得针对该迭代或节点的总和。接下来,根据卷积隐藏层4322a中的下一节点的感受野,在输入图像中的下一个位置处继续该过程。例如,滤波器可以按照步长量(被称为步幅)移动到下一感受野。步幅可以设置为1或其它合适的量。例如,如果步幅设置为1,则在每次卷积迭代处,滤波器将向右移动1个像素。在输入量的每个唯一位置中处理滤波器会产生一个数字,该数字表示针对该位置的滤波器结果,从而为卷积隐藏层4322a的每个节点确定总和值。
从输入层到卷积隐藏层4322a的映射被称为激活地图(或特征地图)。激活地图包括针对每个节点的值,其表示在输入量的每个位置处的滤波器结果。激活地图可以包括阵列,该阵列包括由输入量上的滤波器的每次迭代产生的各种总和值。例如,如果将5×5滤波器应用于28×28输入图像的每个像素(步幅为1),则激活地图将包括24×24阵列。卷积隐藏层4322a可以包括多个激活地图,以便识别图像中的多个特征。图43中所示的示例包括三个激活地图。使用三个激活地图,卷积隐藏层4322a可以检测三种不同类型的特征,并且在整个图像上可检测出每个特征。
在一些示例中,可以在卷积隐藏层4322a之后应用非线性隐藏层。非线性层可以用于将非线性引入到已经计算线性运算的系统中。非线性层的一个说明性示例是经调整的线性单元(ReLU)层。ReLU层可以将函数f(x)=max(0,x)应用于输入量中的所有值,这会将所有负激活变为0。因此,ReLU可以增加网络4300的非线性属性,而不会影响卷积隐藏层4322a的感受野。
可以在卷积隐藏层4322a之后(以及在使用时在非线性隐藏层之后)应用池化隐藏层4322b。池化隐藏层4322b用于简化来自卷积隐藏层4322a的输出中的信息。例如,池化隐藏层4322b可以获得从卷积隐藏层4322a输出的每个激活地图,并使用池化功能来生成浓缩的激活地图(或特征地图)。最大池化是由池化隐藏层执行的功能的一个示例。池化隐藏层4322a使用其它形式的池化功能,诸如平均池化功能、L2-范数池化功能、或其它合适的池化功能。将池化功能(例如,最大池化滤波器、L2-范数滤波器或其它合适的池化滤波器)应用于卷积隐藏层4322a中包括的每个激活地图。在图43所示的示例中,三个池化滤波器用于卷积隐藏层4322a中的三个激活地图。
在一些示例中,可以通过向从卷积隐藏层4322a输出的激活地图应用具有步幅(例如,等于滤波器的大小,诸如步幅为2)的最大池化滤波器(例如,具有一定大小2×2)来使用最大池化。来自最大池化滤波器的输出包括该滤波器围绕的每个子区域中的最大值。使用2×2滤波器为例,池化层中的每个单元能够总结在前一层中的2×2个节点的区域(其中每个节点是激活地图中的一个值)。例如,激活地图中的4个值(节点)将在滤波器的每次迭代时由2×2最大池化滤波器进行分析,其中来自4个值中的最大值作为“最大值”输出。如果将这样的最大池化滤波器应用于来自具有24×24节点的维度的卷积隐藏层4322a的激活滤波器,则来自池化隐藏层4322b的输出将是12×12节点的阵列。
在一些示例中,也可以使用L2-范数池化滤波器。L2-范数池化滤波器包括:计算激活地图的2×2区域(或其它合适区域)中的数值的平方和的平方根(而不是如在最大池化中那样计算最大值),并将计算出的值用作输出。
直观地,池化功能(例如,最大池化、L2-范数池化、或其它池化功能)确定是否在图像区域的任何位置找到给定特征,以及丢弃精确位置信息。可以在不影响特征检测的结果的情况下完成该操作,因为一旦已经找到一个特征,该特征的确切位置就不如其相对于其它特征的大致位置那么重要。最大池化(以及其它池化方法)提供了如下益处:经池化的特征少得多,从而减少了CNN 4300的后续层所需要的参数的数量。
网络中的最后连接层是完全连接层,其将每个节点从池化隐藏层4322b连接到输出层4324中的每个输出节点。使用上面的示例,输入层包括对输入图像的像素强度进行编码的28×28个节点,基于将(针对滤波器的)5×5局部感受野应用到3个激活地图,卷积隐藏层4322a包括3×24×24个隐藏特征节点,并且基于最大池化滤波器应用于跨3个特征地图中的每个特征地图的2×2区域,池化隐藏层4322b包括3×12×12个隐藏特征节点的层。扩展该示例,输出层4324可以包括10个输出节点。在这样的示例中,3×12×12池化隐藏层4322b的每个节点连接到输出层4324的每个节点。
完全连接层4322c可以获得先前的池化隐藏层4322b的输出(其应当表示高级特征的激活地图),并确定与特定类别最相关的特征。例如,完全连接层4322c层可以确定与特定类别最强相关的高级特征,并且可以包括针对高级特征的权重(节点)。可以在完全连接层4322c的权重和池化隐藏层4322b的权重之间计算乘积,以获得针对不同类别的概率。例如,如果CNN 4300用于预测视频帧中的对象是人,则在激活地图中将存在高数值,该高数值表示人的高级特征(例如,有两条腿、在对象的顶部有脸、在脸的左上方和右上方有两只眼睛、在脸的中部有鼻子,在脸部的底部有嘴巴和/或关于人的其它特征)。
在一些示例中,来自输出层4324的输出可以包括M维向量(在先前示例中,M=10),其中M可以包括:当将图像中的对象进行分类时,程序必须从中选择的类别的数量。也可以提供其它示例性输出。N维向量中的每个数字可以表示对象属某个类别的概率。在一个说明性示例中,如果表示10个不同类别的对象的10维输出向量是[0 0 0.05 0.8 0 0.15 0 0 00],则该向量指示图像是第三类对象(例如,狗)的概率是5%,图像是第四类对象(例如,人)的概率是80%,图像是第六类对象(例如,袋鼠)的概率为15%。针对一个类别的概率可以被认为是该对象属该类别的一部分的置信水平。
各种对象检测器可以用于执行对象检测和/或分类。一个示例包括基于Cifar-10神经网络的检测器。图44是示出Cifar-10神经网络4400的示例的图式。在一些情况下,可以训练Cifar-10神经网络以便仅对人和汽车进行分类。如图所示,Cifar-10神经网络4400包括各种卷积层(Conv1层4402、Conv2/Relu2层4408、以及Conv3/Relu3层4414)、多个池化层(Pool1/Relu1层4404、Pool2层4410和Pool3层4416),并且在其中混合了经调整的线性单元层。还提供了归一化层(normalization layer)Norm 1 4406和Norm 2 4412。最后一层是ip1层4418。
能够用于对图像中的对象进行检测和/或分类的另一基于深度学习的检测器包括SSD检测器,它是一种能够应用于多个对象类型或类别的快速单步对象检测器。SSD模型使用附着到神经网络的顶部的多个特征地图的多尺度卷积边界框输出。这样的表示允许SSD有效地建模各种框形状。图45A包括图像,而图45B和图45C包括示出SSD检测器(具有VGG深度网络基础模型)如何操作的图式。例如,SSD将对象与不同长宽比的默认框进行匹配(在图45B和图45C中显示为虚线矩形)。特征图的每个元素有与之相关联的许多默认框。具有大于阈值(例如,0.4、0.5、0.6或其它合适阈值)的地面真实框的并集上的交集的任何默认框被视为关于对象的匹配。例如,8×8框中的两个(在图45B中以蓝色示出)与猫相匹配,而4×4框之一(在图45C中以红色示出)与狗相匹配。SSD具有多个特征地图,并且每个特征地图负责不同尺度的对象,允许其识别跨大范围尺度的对象。例如,图45B的8×8特征地图中的框小于图45C的4×4特征地图中的框。在一个说明性示例中,SSD检测器能够总共具有6个特征地图。
对于每个单元中的每个默认框,SSD神经网络输出长度为c的概率向量,其中c是类别的编号,表示包含每个类别的对象的框的概率。在一些情况下,包括背景类别,该背景类别指示在框中没有对象。SSD网络还输出(对于每个单元中的每个默认框的)具有四个条目的偏移向量,该四个条目包含使默认框与基础对象的边界框相匹配所需要的预测偏移。向量是以(cx,cy,w,h)的格式给出的,其中cx表示中心x,cy表示中心y,w表示宽度偏移,并且h表示高度偏移。只有当默认框中确实包含对象时,向量才有意义。对于图45A中所示的图像,除了三个匹配的框(两个针对猫,一个针对狗)之外,所有概率标签都将指示背景类别。
另一种能够用于对图像中的对象进行检测和/或分类的基于深度学习的检测器包括“你只需看一次”(YOLO)检测器,它是对SSD对象检测系统的替代。图46A包括图像,而图46B和图46C包括示出YOLO检测器如何操作的图式。YOLO检测器可以将单个神经网络应用于完整图像。如图所示,YOLO网络将图像划分为多个区域,并预测针对每个区域的边界框和概率。这些边界框是由经预测的概率进行加权。例如,如图46A中所示,YOLO检测器将图像分成13×13单元的网格。每个单元负责预测5个边界框。提供了置信度分数,该置信度分数指示如何确定经预测的边界框实际上包围对象。该分数不包括对可能位于框中的对象的分类,但是指示框的形状是否合适。经预测的边界框是在图46B中示出的。具有较高置信度分数的框具有较粗的边框。
每个单元还预测针对每个边界框的类别。例如,提供了在所有可能类别上的概率分布。可以检测到任何数量的类别,诸如自行车、狗、猫、人、汽车或其它合适的对象类别。针对边界框的置信度分数和类别预测被组合为最终分数,该最终分数指示边界框包含特定类型的对象的概率。例如,在图46B中的图像的左侧上具有粗边界的黄色框85%确信它包含对象类别“狗”。有169个网格单元(13×13),并且每个单元预测5个边界框,形成总共4645个边界框。许多边界框将具有非常低的分数,在这种情况下,仅保留最终分数高于阈值(例如,高于30%概率、40%概率、50%概率、或其它合适阈值)的框。图46C示出了具有最终预测边界框和类别的图像,包括狗、自行车和汽车。如图所示,从所生成的总共4645个边界框中,只有图46C中所示的三个边界框被保留,因为它们具有最佳的最终分数。
图47是示出用于实施本技术的某些方面的系统的示例的图式。具体地,图47示出了计算系统4700的示例,该计算系统可以是例如构成内部计算系统、远程计算系统、相机、或其任何组件的任何计算设备,其中该系统的组件使用连接4705彼此进行通信。连接4705可以是使用总线的物理连接,或者是诸如在芯片组架构中进入处理器4710的直接连接。连接4705也可以是虚拟连接、联网连接或逻辑连接。
在一些实施例中,计算系统4700是分布式系统,其中本公开所描述的功能可以分布在数据中心、多个数据中心、对等网络等中。在一些实施例中,所描述的系统组件中的一者或多者表示许多这样的组件,其各自都执行描述该组件的部分或全部功能。在一些实施例中,该组件可以是物理或虚拟装置。
示例性系统4700包括至少一个处理单元(CPU或处理器)4710和连接4705,该连接将包括系统存储器4715(诸如只读存储器(ROM)4720和随机存取存储器(RAM)4725)的各种系统组件耦合到处理器4710。计算系统4700可以包括与处理器4710直接连接、紧密接近或集成为处理器的一部分的高速存储器的高速缓存4712。
处理器4710可以包括任何通用处理器以及被配置为控制处理器4710的硬件服务或软件服务(诸如存储在存储装置4730中的服务4732、4734和4736)以及其中将软件指令并入实际的处理器设计中的专用处理器。处理器4710本质上可以是完全独立的计算系统,其包含多个核或处理器、总线、存储器控制器、高速缓存等。多核处理器可以是对称的或不对称的。
为了实现用户交互,计算系统4700包括一个输入设备4745,它可以表示任意数量的输入机构,诸如用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等。计算系统4700还可以包括输出设备4735,其可以是许多输出机构中的一者或多者。在一些情况下,多模态系统可以使得用户能够提供多种类型的输入/输出以与计算系统4700进行通信。计算系统4700可以包括通信接口4740,其通常可以控制和管理用户输入和系统输出。通信接口可以使用有线和/或无线收发器来执行或促进接收和/或发送有线或无线通信,包括充分利用以下各项的有线或无线通信:音频插孔/插头、麦克风插孔/插头、通用串行总线(USB)端口/插头、端口/插头、以太网端口/插头、光纤端口/插头、专永有线端口/插头、无线信号传递、低功耗(BLE)无线信号传递、无线信号传递、射频识别(RFID)无线信号传递、近场通信(NFC)无线信号传递、专用短程通信(DSRC)无线信号传递、802.11Wi-Fi无线信号传递、无线局域网(WLAN)信号传递、可见光通信(VLC)、微波存取全球互通(WiMAX)、红外(IR)通信无线信号传递、公共交换电话网(PSTN)信号传递、综合业务数字网络(ISDN)信号传递、3G/4G/5G/LTE蜂窝数据网络无线信号传递、自组织网络信号传递、无线电波信号传递、微波信号传递、红外信号传递、可见光信号传递、紫外光信号传递、沿着电磁频谱的无线信号传递、或其某种组合。通信接口4740还可以包括一个或多个全球导航卫星系统(GNSS)接收器或收发器,其用于基于从与一个或多个GNSS系统相关联的一个或多个卫星接收到的一个或多个信号来确定计算系统4700的位置。GNSS系统包括但不限于美国全球定位系统(GPS)、俄罗斯全球导航卫星系统(GLONASS)、中国北斗导航卫星系统(BDS)和欧洲伽利略全球GNSS。对于在任何特定硬件装置上进行操作没有限制,因此,此处的基本功能在被开发时可以轻松替换为改进的硬件或固件装置。
存储设备4730可以是非易失性和/或非暂时性和/或计算机可读存储设备并且可以是硬盘或其它类型的计算机可读介质,其可以存储可由计算机访问的数据,该计算机可读介质诸如框式磁带、闪存卡、固态存储器设备、数字多功能磁盘、磁带框、软盘、软磁盘、硬盘、磁带、磁条/磁片、任何其它磁性存储介质、闪存、忆阻器存储器、任何其它固态存储器、光盘只读存储器(CD-ROM)光盘、可擦写光盘(CD)光盘、数码影碟(DVD)光盘、蓝光光盘(BDD)光盘、全息光盘、另一种光学介质、安全数字(SD)卡、微型安全数字(microSD)卡、卡、智能卡芯片、EMV芯片、用户身份模块(SIM)卡、迷你/微型/纳米/微微SIM卡、另一集成电路(IC)芯片/卡、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存EPROM(FLASHEPROM)、高速缓冲存储器(L1/L2/L3/L4/L5/L#)、电阻式随机存取存储器(RRAM/ReRAM)、相变存储器(PCM)、自旋转移扭矩RAM(STT-RAM)、另一存储器芯片或磁带框,和/或其组合。
存储装置4730可以包括软件服务、服务器、服务等,当定义这种软件的代码由处理器4710执行时使系统执行功能。在一些实施例中,执行特定功能的硬件服务可以包括存储在计算机可读介质中的软件组件与必要的硬件组件(诸如处理器4710、连接4705、输出装置4735等)的结合以执行功能。
如本文中所使用的术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光存储设备以及能够存储、包含或携带指令和/或数据的各种其它介质。计算机可读介质可以包括其中可以存储数据并且不包括无线地或通过有线连接传播的载波和/或瞬态电子信号的非暂时性介质。非暂时性介质的示例可以包括但不限于磁盘或磁带、诸如压缩光盘(CD)或数字通用磁盘(DVD)等光存储介质、闪存、存储器或存储器设备。计算机可读介质在其上可以存储代码和/或机器可执行指令,它们可以表示程序、函数、子程序、程序、例程、子例程、模块、软件包、类别,或者指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以使用任何合适的方式来传递、转发或发送,这些方式包括存储器共享、消息传递、令牌传递、网络发送等。
在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含位流等的有线或无线信号。然而,在提及时,非暂时性计算机可读存储介质明确排除诸如能量、载波信号、电磁波和信号本身等介质。
在以上描述中提供了具体细节以提供对本文提供的实施例和示例的透彻理解。然而,本领域一般技术人员将理解,可以在没有这些具体细节的情况下实践这些实施例。为了解释清楚,在某些情况下,本技术可以被表示为包括个别功能块,该功能块包括包含以软件或硬件和软件的组合体现的方法中的设备、设备组件、步骤或例程的功能块。可以使用除了图中所示和/或本文描述的那些之外的附加组件。例如,电路、系统、网络、过程和其它组件可以以框图形式示出为组件,以免在不必要的细节中混淆实施例。在其它情况下,可以在没有不必要的细节的情况下示出公知电路、过程、算法、结构和技术以免混淆实施例。
上文可以将各个实施例描述为过程或方法,该过程或方法被描绘为流程图、流程图、数据流图、结构图或框图。尽管流程图可以将操作描述为循序过程,但是许多操作可并行或同时执行。另外,可以重新布置操作顺序。过程在其操作完成时终止,但是可能具有图中未包括的附加步骤。过程可以对应方法、函数、程序、子例程、子程序等。当过程对应于函数时,它的终止可以对应于函数返回到调用函数或主函数。
可以使用存储在计算机可读介质中或可从计算机可读介质中获得的计算机可执行指令来实施根据上述示例的过程和方法。此类指令可以包括例如导致或以其它方式配置通用计算机、专用计算机或处理设备以执行特定功能或功能组的指令和数据。可以通过网络访问所使用的计算机资源的部分。计算机可执行指令可以是例如二进制文件、中间格式指令(诸如汇编语言)、固件、源代码等。可以用于存储指令、所使用的信息和/或在根据所描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘、光盘、闪存、设置有非易失性存储器的USB设备、联网存储设备等等。
实施根据这些公开内容的过程和方法的设备可以包括硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合,并且可以采用多种形式因素中的任何一种。当以软件、固件、中间件或微代码实施时,用于执行必要任务(例如,计算机程序产品)的程序代码或代码段可以存储在计算机可读或机器可读介质中。处理器可以执行必要的任务。外观尺寸的典型示例包括膝上型计算机、智能手机、移动电话、平板设备或其它小外观尺寸的个人计算机、个人数字助理、机架式设备、独立设备等等。本文描述的功能也可以体现在外围设备或扩展卡中。通过进一步的示例,这种功能性还可以在于单个芯片中执行的不同芯片或不同过程之间的电路板上实施。
指令、用于传达此类指令的介质、用于执行它们的计算资源以及用于支持此类计算资源的其它结构是用于提供本公开中描述的功能的示例性部件。
在前面的描述中,参考本申请的具体实施例描述了本申请的各方面,但是本领域技术人员将认识到本申请不限于此。因此,尽管本文已经详细描述了本申请的说明性实施例,但是应当理解,可以其它方式不同地实施和采用创造性概念,并且所附权利要求意图被解释为包括除了受现有技术的限制的变形之外的这种变型。上述申请的各种特征和方面可以单独或联合使用。此外,在不脱离本说明书的更广泛的精神和范围的情况下,实施例可以在超出本文描述的那些环境和应用的任何数量的环境和应用中使用。因此,说明书和附图被认为是说明性的而不是限制性的。出于说明目的,按特定顺序描述了方法。应当理解,在替代实施例中,可以以与所描述的顺序不同的顺序来执行该方法。
本领域一般技术人员将理解,在不脱离本说明书的范围的情况下,本文使用的小于(“<”)和大于(“>”)符号或术语分别可以被替换为小于或等于(“”)和大于或等于(“”)符号。
在组件被描述为“被配置为”执行某些操作的情况下,此类配置可以例如通过设计电子电路或其它硬件来执行操作、通过对可编程电子电路(例如,微处理器,或其它合适的电子电路)进行编程以执行操作或其任何组合来实现。
短语“耦合到”是指直接或间接地物理连接到另一个组件的任何组件,和/或与另一个组件直接或间接通信(例如,通过有线或无线连接和/或其它合适的通信接口连接到另一组件)的任何组件。
叙述集合中的“至少一者”和/或集合中的“一者或多者”的权利要求语言或其它语言指示该集合的一个成员或该集合的多个成员(以任何组合)满足权利要求。例如,叙述“A和B中的至少一者”或“A或B中的至少一者”的权利要求语言表示A、B或A和B。在另一个示例中,叙述“A、B和C中的至少一者”或“A、B或C中的至少一者”的权利要求语言表示A、B、C,或A和B,或A和C,或B和C,或A和B和C。集合中的“至少一者”和/或集合中的“一者或多者”不将该集合限制为该集合中列出的项目。例如,叙述“A和B中的至少一者”或“A或B中的至少一者”的权利要求语言可以表示A、B或A和B,并且可以另外包括未在A和B的集合中列出的项目。
结合本文公开的实施例描述的各种说明性逻辑块、模块、电路和算法步骤可以被实施为电子硬件、计算机软件、固件或其组合。为了清楚地示出硬件和软件的这种可互换性,上面已经对各种说明性组件、框、模块、电路和步骤在其功能方面进行了总体描述。将这种功能性实施为硬件还是软件取决于强加于整个系统的特定应用和设计约束。技术人员可以针对每个特定应用以不同方式实施所描述的功能性,但是这种实施决策不应被解释为导致脱离本申请的范围。
本文描述的技术也可以在电子硬件、计算机软件、固件或其任何组合中实施。此类技术可以在多种设备中的任一种中实施,该设备诸如通用计算机、无线通信设备手持机或具有多种用途的集成电路设备,该多种用途包括在无线通信设备手持机和其它设备中的应用。被描述为模块或组件的任何特征可以一起在集成逻辑设备中实施,或者作为离散但可互操作的逻辑设备分开实施。如果以软件实施,则该技术可以至少部分地通过包括程序代码的计算机可读数据存储介质来实施,该程序代码包括在被执行时执行上述方法中的一者或多者的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括包装材料。计算机可读介质可以包括存储器或数据存储介质,诸如随机存取存储器(RAM),诸如同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁性或光学数据存储介质等。另外或替代地,该技术可以至少部分地由计算机可读通信介质(诸如传播信号或波)来实现,该计算机可读通信介质以指令或数据结构的形式携带或传送代码,并且可以由计算机或其它处理器来访问、读取和/或执行。
程序代码可以由处理器执行,该处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路系统。此类处理器可以被配置为执行本公开中描述的任何技术。通用处理器可以是微处理器;但是替代地,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可以被实施为计算设备的组合,例如,DSP与微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核或者任何其它这样的配置。因此,如本文所使用的术语“处理器”可以指代任何前述结构、前述结构的任何组合、或适用于实施本文描述的技术的任何其它结构或装置。
本公开的说明书方面包括:
方面1:一种处理一个或多个帧的方法,所述方法包括:确定帧序列中的第一帧中的感兴趣区域,所述第一帧中的所述感兴趣区域包括在所述第一帧中具有一定大小的对象;裁剪所述帧序列的第二帧的一部分,所述第二帧出现在所述帧序列中的所述第一帧之后;以及基于所述第一帧中的对象的所述大小,来缩放所述第二帧的所述部分。
方面2:根据方面1所述的方法,其还包括:接收与对所述第一帧中的对象的选择相对应的用户输入;以及基于所接收的用户输入,来确定所述第一帧中的所述感兴趣区域。
方面3:根据方面2所述的方法,其中所述用户输入包括使用设备的触摸界面而提供的触摸输入。
方面4:根据方面1至3中的任一项所述的方法,其还包括:确定针对所述第二帧中的对象而确定的对象区域的点;以及在所述对象区域的所述点位于经裁剪和经缩放的部分的中心的情况下,裁剪和缩放所述第二帧的所述部分。
方面5:根据方面4所述的方法,其中所述对象区域的所述点是所述对象区域的中心点。
方面6:根据方面1至5中任一项所述的方法,其中基于所述第一帧中的对象的所述大小来缩放所述第二帧的所述部分使得所述第二帧中的对象具有与所述第一帧中的对象相同的大小。
方面7:根据方面1至6中任一项所述的方法,其还包括:确定与所述第一帧中的对象相关联的第一长度;确定与所述第二帧中的对象相关联的第二长度;基于所述第一长度和所述第二长度之间的比较,来确定缩放因子;以及基于所述缩放因子,来缩放所述第二帧的所述部分。
方面8:根据方面7所述的方法,其中所述第一长度是针对所述第一帧中的对象而确定的第一对象区域的长度,并且其中所述第二长度是针对所述第二帧中的对象而确定的第二对象区域的长度。
方面9:根据方面8所述的方法,其中所述第一对象区域是第一边界框,并且所述第一长度是所述第一边界框的对角线长度,并且其中所述第二对象区域是第二边界框,并且所述第二长度是所述第二边界框的对角线长度。
方面10:根据方面8或9中任一项所述的方法,其中基于所述缩放因子来缩放所述第二帧的所述部分使经裁剪和经缩放的部分中的所述第二对象区域具有与所述第一帧中的所述第一对象区域相同的大小。
方面11:根据方面1至10中任一项所述的方法,其还包括:确定针对所述第一帧中的对象而生成的第一对象区域的点;确定针对所述第二帧中的对象而生成的第二对象区域的点;基于使用所述第一对象区域的点和所述第二对象区域的点的平滑函数,来确定用于所述对象的移动因子,其中所述平滑函数控制所述对象在所述序列帧的多个帧中的位置的变化;以及基于所述移动因子,来裁剪所述第二帧的所述部分。
方面12:根据方面11所述的方法,其中所述第一对象区域的点是所述第一对象区域的中心点,并且其中所述第二对象区域的点是所述第二对象区域的中心点。
方面13:根据方面11或12中任一项所述的方法,其中所述平滑函数包括移动函数,所述移动函数用于基于对象移动的统计度量来确定相应对象区域的点在所述帧序列的多个帧中的每个帧中的位置。
方面14:根据方面1至13中任一项所述的方法,其还包括:确定与所述第一帧中的对象相关联的第一长度;确定与所述第二帧中的对象相关联的第二长度;基于所述第一长度和所述第二长度之间的比较并且基于使用所述第一长度和所述第二长度的平滑函数,来确定用于所述对象的缩放因子,其中所述平滑函数控制所述对象在所述帧序列的多个帧中的大小的变化;以及基于所述缩放因子,来缩放所述第二帧的所述部分。
方面15:根据方面14所述的方法,其中所述平滑函数包括移动函数,所述移动函数用于基于对象大小的统计度量来确定与所述帧序列的多个帧中的每个帧中的所述对象相关联的长度。
方面16:根据方面14或15中任一项所述的方法,其中所述第一长度是针对所述第一帧中的对象而生成的第一边界框的长度,并且其中所述第二长度是针对所述第二帧中的对象而生成的第二边界框的长度。
方面17:根据方面16所述的方法,其中所述第一长度是所述第一边界框的对角线长度,并且其中所述第二长度是所述第二边界框的对角线长度。
方面18:根据方面16或17中任一项所述的方法,其中基于所述缩放因子来缩放所述第二帧的所述部分使经裁剪和经缩放的部分中的所述第二边界框具有与所述第一帧中的所述第一边界框相同的大小。
方面19:根据方面1至18中的任一项所述的方法,其中对所述第二帧的所述部分进行的所述裁剪和缩放将所述对象保持在所述第二帧的中心。
方面20:根据方面1至19中任一项所述的方法,其还包括:检测和跟踪所述帧序列的一个或多个帧中的所述对象。
方面21:一种用于处理一个或多个帧所述的装置,包括:存储器,所述存储器被配置为存储至少一个帧;以及处理器,所述处理器在电路中实现并被配置为:确定帧序列中的第一帧中的感兴趣区域,所述第一帧中的所述感兴趣区域包括在所述第一帧中具有一定大小的对象;裁剪所述帧序列的第二帧的一部分,所述第二帧出现在所述帧序列中的所述第一帧之后;以及缩放所述第二帧的所述部分以便在所述第二帧中保持所述对象的所述大小。
方面22:根据方面21所述的装置,其中所述处理器被配置为:接收与对所述第一帧中的对象的选择相对应的用户输入;以及基于所接收的用户输入,来确定所述第一帧中的所述感兴趣区域。
方面23:根据方面22所述的装置,其中所述用户输入包括使用设备的触摸界面而提供的触摸输入。
方面24:根据方面21至23中的任一项所述的装置,其中所述处理器被配置为:确定针对所述第二帧中的对象而确定的对象区域的点;以及在所述对象区域的所述点位于经裁剪和经缩放的部分的中心的情况下,裁剪和缩放所述第二帧的所述部分。
方面25:根据方面24所述的装置,其中所述对象区域的所述点是所述对象区域的中心点。
方面26:根据方面21至25中任一项所述的装置,其中基于所述第一帧中的对象的所述大小来缩放所述第二帧的所述部分使得所述第二帧中的对象具有与所述第一帧中的对象相同的大小。
方面27:根据方面21至26中任一项所述的装置,其中所述处理器被配置为:确定与所述第一帧中的对象相关联的第一长度;确定与所述第二帧中的对象相关联的第二长度;基于所述第一长度和所述第二长度之间的比较,来确定缩放因子;以及基于所述缩放因子,来缩放所述第二帧的所述部分。
方面28:根据方面27所述的装置,其中所述第一长度是针对所述第一帧中的对象而确定的第一对象区域的长度,并且其中所述第二长度是针对所述第二帧中的对象而确定的第二对象区域的长度。
方面29:根据方面28所述的装置,其中所述第一对象区域是第一边界框,并且所述第一长度是所述第一边界框的对角线长度,并且其中所述第二对象区域是第二边界框,并且所述第二长度是所述第二边界框的对角线长度。
方面30:根据方面28或29中任一项所述的装置,其中基于所述缩放因子来缩放所述第二帧的所述部分使经裁剪和经缩放的部分中的所述第二对象区域具有与所述第一帧中的所述第一对象区域相同的大小。
方面31:根据方面21至30中任一项所述的装置,其中所述处理器被配置为:确定针对所述第一帧中的对象而生成的第一对象区域的点;确定针对所述第二帧中的对象而生成的第二对象区域的点;基于使用所述第一对象区域的点和所述第二对象区域的点的平滑函数,来确定用于所述对象的移动因子,其中所述平滑函数控制所述对象在所述序列帧的多个帧中的位置的变化;以及基于所述移动因子,来裁剪所述第二帧的所述部分。
方面32:根据方面31所述的装置,其中所述第一对象区域的点是所述第一对象区域的中心点,并且其中所述第二对象区域的点是所述第二对象区域的中心点。
方面33:根据方面31或32中任一项所述的装置,其中所述平滑函数包括移动平均函数,所述移动平均函数用于相应对象区域的点在所述帧序列的多个帧中的每个帧中的平均位置。
方面34:根据方面21至33中任一项所述的装置,其中所述处理器被配置为:确定与所述第一帧中的对象相关联的第一长度;确定与所述第二帧中的对象相关联的第二长度;基于所述第一长度和所述第二长度之间的比较并且基于使用所述第一长度和所述第二长度的平滑函数,来确定用于所述对象的缩放因子,其中所述平滑函数控制所述对象的大小在所述帧序列的多个帧中逐步地变化;以及基于所述缩放因子,来缩放所述第二帧的所述部分。
方面35:根据方面34所述的装置,其中所述平滑函数包括移动平均函数,所述移动平均函数用于确定与所述帧序列的多个帧中的每个帧中的所述对象相关联的平均长度。
方面36:根据方面34或35中任一项所述的装置,其中所述第一长度是针对所述第一帧中的对象而生成的第一边界框的长度,并且其中所述第二长度是针对所述第二帧中的对象而生成的第二边界框的长度。
方面37:根据方面36所述的装置,其中所述第一长度是所述第一边界框的对角线长度,并且其中所述第二长度是所述第二边界框的对角线长度。
方面38:根据方面34至37中任一项所述的装置,其中基于所述缩放因子来缩放所述第二帧的所述部分使经裁剪和经缩放的部分中的所述第二边界框具有与所述第一帧中的所述第一边界框相同的大小。
方面39:根据方面21至38中任一项所述的装置,其中对所述第二帧的所述部分进行的所述裁剪和缩放将所述对象保持在所述第二帧的中心。
方面40:根据方面21至39中任一项所述的装置,其中所述处理器被配置为:检测和跟踪所述帧序列的一个或多个帧中的所述对象。
方面41:根据方面21至40中任一项所述的装置,其中所述装置包括移动设备,所述移动设备具有用于捕获所述至少一个帧的相机。
方面42:根据方面21至41中任一项所述的装置,还包括显示器,所述显示器用于显示一个或多个图像。
方面43:一种计算机可读介质,其上存储有指令,所述指令在由处理器执行时执行根据方面1至40所述的任何操作。
方面44:一种装置,其包括用于执行方面1至40所述的任何操作的部件。
Claims (42)
1.一种处理一个或多个帧的方法,所述方法包括:
确定帧序列中的第一帧中的感兴趣区域,所述第一帧中的所述感兴趣区域包括在所述第一帧中具有一定大小的对象;
裁剪所述帧序列的第二帧的一部分,所述第二帧出现在所述帧序列中的所述第一帧之后;以及
基于所述第一帧中的所述对象的所述大小,来缩放所述第二帧的所述部分。
2.根据权利要求1所述的方法,其还包括:
接收与对所述第一帧中的所述对象的选择相对应的用户输入;以及
基于所接收的用户输入,来确定所述第一帧中的所述感兴趣区域。
3.根据权利要求2所述的方法,其中所述用户输入包括使用设备的触摸界面而提供的触摸输入。
4.根据权利要求1所述的方法,其还包括:
确定针对所述第二帧中的所述对象而确定的对象区域的点;以及
在所述对象区域的所述点位于经裁剪和经缩放的部分的中心的情况下,裁剪和缩放所述第二帧的所述部分。
5.根据权利要求4所述的方法,其中所述对象区域的所述点是所述对象区域的中心点。
6.根据权利要求1所述的方法,其中基于所述第一帧中的所述对象的所述大小来缩放所述第二帧的所述部分使所述第二帧中的所述对象具有与所述第一帧中的所述对象相同的大小。
7.根据权利要求1所述的方法,其还包括:
确定与所述第一帧中的所述对象相关联的第一长度;
确定与所述第二帧中的所述对象相关联的第二长度;
基于所述第一长度和所述第二长度之间的比较,来确定缩放因子;以及
基于所述缩放因子,来缩放所述第二帧的所述部分。
8.根据权利要求7所述的方法,其中所述第一长度是针对所述第一帧中的所述对象而确定的第一对象区域的长度,并且其中所述第二长度是针对所述第二帧中的所述对象而确定的第二对象区域的长度。
9.根据权利要求8所述的方法,其中所述第一对象区域是第一边界框,并且所述第一长度是所述第一边界框的对角线长度,并且其中所述第二对象区域是第二边界框,并且所述第二长度是所述第二边界框的对角线长度。
10.根据权利要求8所述的方法,其中基于所述缩放因子来缩放所述第二帧的所述部分使经裁剪和经缩放的部分中的所述第二对象区域具有与所述第一帧中的所述第一对象区域相同的大小。
11.根据权利要求1所述的方法,其还包括:
确定针对所述第一帧中的所述对象而生成的第一对象区域的点;
确定针对所述第二帧中的所述对象而生成的第二对象区域的点;
基于使用所述第一对象区域的所述点和所述第二对象区域的所述点的平滑函数,来确定用于所述对象的移动因子,其中所述平滑函数控制所述对象在所述序列帧的多个帧中的位置的变化;以及
基于所述移动因子,来裁剪所述第二帧的所述部分。
12.根据权利要求11所述的方法,其中所述第一对象区域的所述点是所述第一对象区域的中心点,并且其中所述第二对象区域的所述点是所述第二对象区域的中心点。
13.根据权利要求11所述的方法,其中所述平滑函数包括移动函数,所述移动函数用于基于对象移动的统计度量来确定相应对象区域的所述点在所述帧序列的所述多个帧中的每个帧中的位置。
14.根据权利要求1所述的方法,其还包括:
确定与所述第一帧中的所述对象相关联的第一长度;
确定与所述第二帧中的所述对象相关联的第二长度;
基于所述第一长度和所述第二长度之间的比较并且基于使用所述第一长度和所述第二长度的平滑函数,来确定用于所述对象的缩放因子,其中所述平滑函数控制所述对象在所述帧序列的多个帧中的大小的变化;以及
基于所述缩放因子,来缩放所述第二帧的所述部分。
15.根据权利要求14所述的方法,其中所述平滑函数包括移动函数,所述移动函数用于基于对象大小的统计度量来确定与所述帧序列的所述多个帧中的每个帧中的所述对象相关联的长度。
16.根据权利要求14所述的方法,其中所述第一长度是针对所述第一帧中的所述对象而生成的第一边界框的长度,并且其中所述第二长度是针对所述第二帧中的所述对象而生成的第二边界框的长度。
17.根据权利要求16所述的方法,其中所述第一长度是所述第一边界框的对角线长度,并且其中所述第二长度是所述第二边界框的对角线长度。
18.根据权利要求16所述的方法,其中基于所述缩放因子来缩放所述第二帧的所述部分使经裁剪和经缩放的部分中的所述第二边界框具有与所述第一帧中的所述第一边界框相同的大小。
19.根据权利要求1所述的方法,其中对所述第二帧的所述部分进行的所述裁剪和缩放将所述对象保持在所述第二帧的中心。
20.根据权利要求1所述的方法,其还包括:
检测和跟踪所述帧序列的一个或多个帧中的所述对象。
21.一种用于处理一个或多个帧的装置,其包括:
存储器,所述存储器被配置为存储至少一个帧;以及
处理器,所述处理器在电路中实现并被配置为:
确定帧序列中的第一帧中的感兴趣区域,所述第一帧中的所述感兴趣区域包括在所述第一帧中具有一定大小的对象;
裁剪所述帧序列的第二帧的一部分,所述第二帧出现在所述帧序列中的所述第一帧之后;以及
基于所述第一帧中的所述对象的所述大小,来缩放所述第二帧的所述部分。
22.根据权利要求21所述的装置,其中所述处理器被配置为:
接收与对所述第一帧中的所述对象的选择相对应的用户输入;以及
基于所接收的用户输入,来确定所述第一帧中的所述感兴趣区域。
23.根据权利要求22所述的装置,其中所述用户输入包括使用设备的触摸界面而提供的触摸输入。
24.根据权利要求21所述的装置,其中所述处理器被配置为:
确定针对所述第二帧中的所述对象而确定的对象区域的点;以及
在所述对象区域的所述点位于经裁剪和经缩放的部分的中心的情况下,裁剪和缩放所述第二帧的所述部分。
25.根据权利要求24所述的装置,其中所述对象区域的所述点是所述对象区域的中心点。
26.根据权利要求21所述的装置,其中基于所述第一帧中的所述对象的所述大小来缩放所述第二帧的所述部分使所述第二帧中的所述对象具有与所述第一帧中的所述对象相同的大小。
27.根据权利要求21所述的装置,其中所述处理器被配置为:
确定与所述第一帧中的所述对象相关联的第一长度;
确定与所述第二帧中的所述对象相关联的第二长度;
基于所述第一长度和所述第二长度之间的比较,来确定缩放因子;以及
基于所述缩放因子,来缩放所述第二帧的所述部分。
28.根据权利要求27所述的装置,其中所述第一长度是针对所述第一帧中的所述对象而确定的第一对象区域的长度,并且其中所述第二长度是针对所述第二帧中的所述对象而确定的第二对象区域的长度。
29.根据权利要求28所述的装置,其中所述第一对象区域是第一边界框,并且所述第一长度是所述第一边界框的对角线长度,并且其中所述第二对象区域是第二边界框,并且所述第二长度是所述第二边界框的对角线长度。
30.根据权利要求28所述的装置,其中基于所述缩放因子来缩放所述第二帧的所述部分使经裁剪和经缩放的部分中的所述第二对象区域具有与所述第一帧中的所述第一对象区域相同的大小。
31.根据权利要求21所述的装置,其中所述处理器被配置为:
确定针对所述第一帧中的所述对象而生成的第一对象区域的点;
确定针对所述第二帧中的所述对象而生成的第二对象区域的点;
基于使用所述第一对象区域的所述点和所述第二对象区域的所述点的平滑函数来确定用于所述对象的移动因子,其中所述平滑函数控制所述对象在所述序列帧的多个帧中的位置的变化;以及
基于所述移动因子,来裁剪所述第二帧的所述部分。
32.根据权利要求31所述的装置,其中所述第一对象区域的所述点是所述第一对象区域的中心点,并且其中所述第二对象区域的所述点是所述第二对象区域的中心点。
33.根据权利要求31所述的装置,其中所述平滑函数包括移动函数,所述移动函数用于基于对象移动的统计度量来确定相应对象区域的所述点在所述帧序列的所述多个帧中的每个帧中的位置。
34.根据权利要求21所述的装置,其中所述处理器被配置为:
确定与所述第一帧中的所述对象相关联的第一长度;
确定与所述第二帧中的所述对象相关联的第二长度;
基于所述第一长度和所述第二长度之间的比较并且基于使用所述第一长度和所述第二长度的平滑函数,来确定用于所述对象的缩放因子,其中所述平滑函数控制所述对象的大小在所述帧序列的多个帧中的变化;以及
基于所述缩放因子,来缩放所述第二帧的所述部分。
35.根据权利要求34所述的装置,其中所述平滑函数包括移动函数,所述移动函数用于基于对象大小的统计度量来确定与所述帧序列的所述多个帧中的每个帧中的所述对象相关联的长度。
36.根据权利要求34所述的装置,其中所述第一长度是针对所述第一帧中的所述对象而生成的第一边界框的长度,并且其中所述第二长度是针对所述第二帧中的所述对象而生成的第二边界框的长度。
37.根据权利要求36所述的装置,其中所述第一长度是所述第一边界框的对角线长度,并且其中所述第二长度是所述第二边界框的对角线长度。
38.根据权利要求36所述的装置,其中基于所述缩放因子来缩放所述第二帧的所述部分使经裁剪和经缩放的部分中的所述第二边界框具有与所述第一帧中的所述第一边界框相同的大小。
39.根据权利要求21所述的装置,其中对所述第二帧的所述部分进行的所述裁剪和缩放将所述对象保持在所述第二帧的中心。
40.根据权利要求21所述的装置,其中所述处理器被配置为:
检测和跟踪所述帧序列的一个或多个帧中的所述对象。
41.根据权利要求21所述的装置,其中所述装置包括移动设备,所述移动设备具有用于捕获所述至少一个帧的相机。
42.根据权利要求21所述的装置,其还包括:
显示器,所述显示器用于显示一个或多个图像。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063027744P | 2020-05-20 | 2020-05-20 | |
US63/027,744 | 2020-05-20 | ||
US202063070714P | 2020-08-26 | 2020-08-26 | |
US63/070,714 | 2020-08-26 | ||
US17/239,300 | 2021-04-23 | ||
US17/239,300 US11809998B2 (en) | 2020-05-20 | 2021-04-23 | Maintaining fixed sizes for target objects in frames |
PCT/US2021/029070 WO2021236296A1 (en) | 2020-05-20 | 2021-04-26 | Maintaining fixed sizes for target objects in frames |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116018616A true CN116018616A (zh) | 2023-04-25 |
Family
ID=78608115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180035334.0A Pending CN116018616A (zh) | 2020-05-20 | 2021-04-26 | 保持帧中的目标对象的固定大小 |
Country Status (8)
Country | Link |
---|---|
US (2) | US11809998B2 (zh) |
EP (1) | EP4154511A1 (zh) |
JP (1) | JP2023526207A (zh) |
KR (1) | KR20230013243A (zh) |
CN (1) | CN116018616A (zh) |
BR (1) | BR112022022705A2 (zh) |
TW (1) | TW202201944A (zh) |
WO (1) | WO2021236296A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115240471A (zh) * | 2022-08-09 | 2022-10-25 | 东揽(南京)智能科技有限公司 | 一种基于图像采集的智慧厂区避撞预警方法和系统 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7311310B2 (ja) * | 2018-10-18 | 2023-07-19 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 情報処理装置、情報処理方法及びプログラム |
KR102021441B1 (ko) * | 2019-05-17 | 2019-11-04 | 정태웅 | 인공지능을 이용한 영상 기반의 실시간 침입 감지 방법 및 감시카메라 |
US11494935B2 (en) * | 2019-10-17 | 2022-11-08 | Objectvideo Labs, Llc | Scaled human video tracking |
US10902551B1 (en) * | 2019-12-17 | 2021-01-26 | X Development Llc | True positive transplant |
JP7440332B2 (ja) * | 2020-04-21 | 2024-02-28 | 株式会社日立製作所 | 事象解析システムおよび事象解析方法 |
US11730427B2 (en) * | 2020-10-30 | 2023-08-22 | Biospectal Sa | Systems and methods for autocorrelation based assessment of PPG signal quality |
CN112508773B (zh) * | 2020-11-20 | 2024-02-09 | 小米科技(武汉)有限公司 | 图像处理方法及装置、电子设备、存储介质 |
CN113012194B (zh) * | 2020-12-25 | 2024-04-09 | 深圳市铂岩科技有限公司 | 目标追踪方法、装置、介质和设备 |
US11399198B1 (en) * | 2021-03-01 | 2022-07-26 | Qualcomm Incorporated | Learned B-frame compression |
US11790565B2 (en) * | 2021-03-04 | 2023-10-17 | Snap Inc. | Compressing image-to-image models with average smoothing |
US11094042B1 (en) * | 2021-03-12 | 2021-08-17 | Flyreel, Inc. | Face detection and blurring methods and systems |
TWI767714B (zh) * | 2021-05-19 | 2022-06-11 | 華碩電腦股份有限公司 | 電子裝置以及其影像擷取器的控制方法 |
US20220374428A1 (en) * | 2021-05-24 | 2022-11-24 | Nvidia Corporation | Simulation query engine in autonomous machine applications |
US11715495B2 (en) | 2021-05-26 | 2023-08-01 | Flawless Holdings Limited | Modification of objects in film |
US11398255B1 (en) * | 2021-05-26 | 2022-07-26 | Flawless Holdings Limited | Modification of objects in film |
US11978149B2 (en) * | 2021-06-21 | 2024-05-07 | The Weather Company, Llc | UV map using weight painting |
JP2023003033A (ja) * | 2021-06-23 | 2023-01-11 | キヤノン株式会社 | 電子機器および電子機器の制御方法 |
US11823430B2 (en) * | 2021-07-16 | 2023-11-21 | Arm Limited | Video data processing |
US11816909B2 (en) * | 2021-08-04 | 2023-11-14 | Abbyy Development Inc. | Document clusterization using neural networks |
US20230154139A1 (en) * | 2021-11-16 | 2023-05-18 | Salesforce.Com, Inc. | Systems and methods for contrastive pretraining with video tracking supervision |
CN114222065B (zh) * | 2021-12-20 | 2024-03-08 | 北京奕斯伟计算技术股份有限公司 | 图像处理方法、装置、电子设备、存储介质及程序产品 |
US20230206613A1 (en) * | 2021-12-23 | 2023-06-29 | Qualcomm Incorporated | Apparatus and methods for object detection using machine learning processes |
JP7449519B2 (ja) | 2021-12-30 | 2024-03-14 | 17Live株式会社 | 映像処理のためのシステム、方法、及びコンピュータ可読媒体 |
WO2023136418A1 (en) * | 2022-01-13 | 2023-07-20 | Samsung Electronics Co., Ltd. | Method and electronic device for automatically generating region of interest centric image |
US11671714B1 (en) | 2022-01-24 | 2023-06-06 | Qualcomm Incorporated | Motion based exposure control |
WO2023163799A1 (en) * | 2022-02-23 | 2023-08-31 | Qualcomm Incorporated | Foveated sensing |
CN114786064A (zh) * | 2022-03-14 | 2022-07-22 | 深圳市景阳信息技术有限公司 | 一种回放视频的方法、装置、电子设备及存储介质 |
TWI812086B (zh) * | 2022-03-18 | 2023-08-11 | 力晶積成電子製造股份有限公司 | 光學鄰近修正模型的產生方法 |
FR3137517A1 (fr) * | 2022-06-29 | 2024-01-05 | Sagemcom Broadband | Procede de selection de portions d’images dans un flux video et systeme executant le procede. |
WO2024076733A1 (en) * | 2022-10-06 | 2024-04-11 | Op Solutions, Llc | Systems and methods for frame and region transformations with superresolution |
US11830159B1 (en) | 2022-12-08 | 2023-11-28 | Flawless Holding Limited | Generative films |
CN116095347B (zh) * | 2023-03-09 | 2023-07-11 | 中节能(临沂)环保能源有限公司 | 基于视频分析的建筑工程安全施工方法及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9240056B2 (en) * | 2008-04-02 | 2016-01-19 | Microsoft Technology Licensing, Llc | Video retargeting |
US9025051B2 (en) | 2013-02-28 | 2015-05-05 | Nokia Technologies Oy | Method and apparatus for automatically rendering dolly zoom effect |
EP2797308A3 (en) * | 2013-04-22 | 2015-01-07 | Technologies Humanware Inc | Live panning system and method |
JP2015228113A (ja) | 2014-05-30 | 2015-12-17 | キヤノン株式会社 | 画像処理装置および画像処理方法 |
US9781350B2 (en) | 2015-09-28 | 2017-10-03 | Qualcomm Incorporated | Systems and methods for performing automatic zoom |
JP6735583B2 (ja) * | 2016-03-17 | 2020-08-05 | キヤノン株式会社 | ズーム制御装置、撮像装置及びそれらの制御方法、プログラム並びに記憶媒体 |
JP7009142B2 (ja) | 2017-09-28 | 2022-01-25 | キヤノン株式会社 | 撮像装置および画像処理方法 |
WO2020047745A1 (zh) | 2018-09-04 | 2020-03-12 | 深圳市大疆创新科技有限公司 | 拍摄控制方法、装置、设备及存储介质 |
CN111083380B (zh) | 2019-12-31 | 2021-06-11 | 维沃移动通信有限公司 | 一种视频处理方法、电子设备及存储介质 |
-
2021
- 2021-04-23 US US17/239,300 patent/US11809998B2/en active Active
- 2021-04-26 KR KR1020227039656A patent/KR20230013243A/ko active Search and Examination
- 2021-04-26 TW TW110114950A patent/TW202201944A/zh unknown
- 2021-04-26 CN CN202180035334.0A patent/CN116018616A/zh active Pending
- 2021-04-26 BR BR112022022705A patent/BR112022022705A2/pt unknown
- 2021-04-26 JP JP2022568468A patent/JP2023526207A/ja active Pending
- 2021-04-26 WO PCT/US2021/029070 patent/WO2021236296A1/en unknown
- 2021-04-26 EP EP21725917.5A patent/EP4154511A1/en active Pending
-
2023
- 2023-09-27 US US18/476,078 patent/US20240028904A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115240471A (zh) * | 2022-08-09 | 2022-10-25 | 东揽(南京)智能科技有限公司 | 一种基于图像采集的智慧厂区避撞预警方法和系统 |
CN115240471B (zh) * | 2022-08-09 | 2024-03-01 | 东揽(南京)智能科技有限公司 | 一种基于图像采集的智慧厂区避撞预警方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20240028904A1 (en) | 2024-01-25 |
TW202201944A (zh) | 2022-01-01 |
WO2021236296A1 (en) | 2021-11-25 |
EP4154511A1 (en) | 2023-03-29 |
WO2021236296A9 (en) | 2022-04-28 |
BR112022022705A2 (pt) | 2023-03-28 |
JP2023526207A (ja) | 2023-06-21 |
US20210365707A1 (en) | 2021-11-25 |
US11809998B2 (en) | 2023-11-07 |
KR20230013243A (ko) | 2023-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809998B2 (en) | Maintaining fixed sizes for target objects in frames | |
Tsakanikas et al. | Video surveillance systems-current status and future trends | |
US10609284B2 (en) | Controlling generation of hyperlapse from wide-angled, panoramic videos | |
US10339386B2 (en) | Unusual event detection in wide-angle video (based on moving object trajectories) | |
US20190304102A1 (en) | Memory efficient blob based object classification in video analytics | |
WO2019218824A1 (zh) | 一种移动轨迹获取方法及其设备、存储介质、终端 | |
Walia et al. | Recent advances on multicue object tracking: a survey | |
WO2018052547A1 (en) | An automatic scene calibration method for video analytics | |
US20100202663A1 (en) | System and method for adaptively defining a region of interest for motion analysis in digital video | |
CN116324878A (zh) | 针对图像效果的分割 | |
US8798369B2 (en) | Apparatus and method for estimating the number of objects included in an image | |
US11869241B2 (en) | Person-of-interest centric timelapse video with AI input on home security camera to protect privacy | |
JP6924064B2 (ja) | 画像処理装置およびその制御方法、ならびに撮像装置 | |
US20230127009A1 (en) | Joint objects image signal processing in temporal domain | |
WO2023086694A1 (en) | Image modification techniques | |
Mohatta et al. | Robust hand gestural interaction for smartphone based AR/VR applications | |
US20240007760A1 (en) | Low-power fusion for negative shutter lag capture | |
CN116824641B (zh) | 姿态分类方法、装置、设备和计算机存储介质 | |
Ahn et al. | Implement of an automated unmanned recording system for tracking objects on mobile phones by image processing method | |
WO2023146698A1 (en) | Multi-sensor imaging color correction | |
Zhang et al. | Semantic saliency driven camera control for personal remote collaboration | |
CN116721141A (zh) | 自适应面部深度图生成 | |
Kilaru | Multiple Distortions Identification in Camera Systems |
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 |