具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
参阅图1所示,是本发明较佳实施例提供的目标对象调整***的运行环境图。
本实施例中,目标对象调整***30运行于计算机装置100中。本实施例中,计算机装置100包括,但不限于,存储器31、处理器32、拍摄设备33。
本实施例中,计算机装置100可以通过有线或者无线通讯方式与服务器200通讯连接。所述服务器200可以为云服务器。所述计算机装置100可以为个人电脑、服务器等设备。所述目标对象调整***30可以对视频/图像中的目标对象的位置和大小进行调整,并将调整后的视频/图像直接发送到客户端(图中未示出),或者通过所述服务器200发送到客户端。在一个实施例中,所述服务器200存储了各种数据,例如存储了抠图参数如颜色、亮度等相关数据。
在一个实施例中,所述拍摄设备33可以内置于所述计算机装置100内,或者外接于该计算机装置100,例如,所述拍摄设备33可以是网络摄像头,与所述计算机装置100有线或者无线通讯连接。
本领域技术人员应该了解,图1示出的计算机装置的结构并不构成本发明实施例的限定,所述计算机装置100还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。例如,所述计算机装置100还可以包括显示屏。
在一些实施例中,所述计算机装置100包括一种能够按照事先设定或存储的计算机可读指令,自动进行数值计算和/或信息处理的终端,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。
需要说明的是,所述计算机装置100仅为举例,其他现有的或今后可能出现的计算机装置如可适应于本发明,也应包含在本发明的保护范围以内,并以引用方式包含于此。
在一些实施例中,所述存储器31用于存储程序代码和各种数据,例如安装在所述计算机装置100中的目标对象调整***30,并在计算机装置100的运行过程中实现高速、自动地完成程序或数据的存取。所述存储器31包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、一次可编程只读存储器(One-timeProgrammable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者任何其他能够用于携带或存储数据的非易失性的可读存储介质。
在一些实施例中,所述至少一个处理器32可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述至少一个处理器32是所述计算机装置100的控制核心(Control Unit),利用各种接口和线路连接整个计算机装置100的各个部件,通过运行或执行存储在所述存储器31内的程序或者模块,以及调用存储在所述存储器31内的数据,以执行计算机装置100的各种功能和处理数据,例如对视频/图像中的目标对象的位置和大小进行调整功能(详见下文中对图3的描述)。
尽管未示出,所述计算机装置100还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器32逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述计算机装置100还可以包括电热元件、多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
在一些实施例中,所述目标对象调整***30可以包括多个由程序代码段所组成的功能模块。所述目标对象调整***30中的各个程序段的程序代码可以存储于存储器(例如计算机装置100的存储器31)中,并由至少一个处理器(例如处理器32)所执行,以实现对视频/图像中的目标对象的位置和大小进行调整功能(详见下文中对图3的描述)。
参见图2所示,本实施例中,所述目标对象调整***30根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:获取模块301、执行模块302。本发明所称的模块是指一种能够被至少一个处理器(例如处理器32)所执行并且能够完成固定功能的一系列计算机可读指令段,其存储在存储器(例如计算机装置100的存储器31)中。在本实施例中,关于各模块的功能将在后续的实施例中详述。
本实施例中,以软件功能模块的形式实现的集成的单元,可以存储在一个非易失性可读取存储介质中。上述软件功能模块包括至少一个计算机可读指令,使得一台计算机装置或处理器(processor)通过执行该至少一个计算机可读指令实现本发明各个实施例的方法的部分,例如图3所示的对视频/图像中的目标对象的位置和大小进行调整的方法。
在进一步的实施例中,结合图1,所述至少一个处理器32可执行所述计算机装置100的操作***以及安装的各类应用程序(如所述的目标对象调整***30)、程序代码等。
在进一步的实施例中,所述存储器31中存储有程序代码,且所述至少一个处理器32可调用所述存储器31中存储的程序代码以执行相关的功能。例如,图1中所述目标对象调整***30的各个模块是存储在所述存储器31中的程序代码,并由所述至少一个处理器32所执行,从而实现所述各个模块的功能以达到对视频/图像中的目标对象的位置和大小进行调整的目的(详见下文中对图3的描述)。
在本发明的一个实施例中,所述存储器31存储一个或多个计算机可读指令,所述一个或多个计算机可读指令被所述至少一个处理器32所执行以实现对视频/图像中的目标对象的位置和大小进行调整的目的。具体地,所述至少一个处理器32对上述计算机可读指令的具体实现方法详见下文中对图3的描述。
参阅图3所示,为本发明较佳实施例提供的目标对象调整方法的流程图。
在本实施例中,所述目标对象调整方法可以应用于计算机装置100中,对于需要目标对象调整计算机装置100,可以直接在计算机装置100上集成本发明的方法所提供的用于目标对象调整功能,或者以软件开发工具包(Software Development Kit,SDK)的形式运行在计算机装置100上。
如图3所示,所述目标对象调整方法具体包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
步骤S1、获取模块301利用拍摄设备33实时拍摄目标对象的影像,并从所述拍摄的影像中,确定所述目标对象所对应的每个像素点的RGB数据(为便于清楚简单说明本发明,这里将所述目标对象所对应的像素点称为“目标像素点”)。所述获取模块301还对所拍摄的影像作抠像处理获得抠像图像。
本实施例以老师远程授课为例,获取模块301可以利用拍摄设备33实时拍摄老师授课的场景获得实景影像。在这里,老师也即是所述目标对象。
本实实施例中,所述抠像处理也即是根据影像中的抠像参数创建透明度区域。在一个实施例中,所述抠图参数包括,但不限于,颜色、亮度。即所述获取模块301可以根据所述抠图参数对拍摄的影像作抠像处理来获取所述抠像图像。
本实施中,所述抠像图像为黑白图像。举例而言,参阅图4所示,获得包括目标对象2的抠像图像3。
在一个实施例中,获取模块301可以按照预设的频率从服务器200获取所述抠图参数。
在一个实施例中,获取模块301将从服务器200所获取的抠图参数与本地存储的抠图参数进行比较。若从服务器200所获取的抠图参数与本地存储的抠图参数不一致,获取模块301调整所述频率,并更新本地存储的抠图参数为当前从所述服务器200所获取的抠图参数。
在一个实施例中,当从所述服务器200所获取的抠图参数与本地存储的抠图参数不一致时,获取模块301调高所述频率。例如,调整频率后,获取模块301每间隔1分钟获取一次所述抠图参数。
在其他实施例中,所述获取模块301也可以响应用户的输入来设置所述抠图参数,并根据所设置的所述抠图参数来对所述实景影像作抠图处理。
步骤S2、执行模块302基于所述目标对象所对应的每个目标像素点的RGB数据以及所述抠像图像创建一个面片模型。
本实施例中,所述基于所述目标对象所对应的每个目标像素点的RGB数据以及所述抠像图像创建一个面片模型包括:
根据所述抠像图像的宽高比例创建一个矩形模型;
在所述矩形模型中映射所述抠像图像中的所述目标对象以及所述目标对象所对应的每个目标像素点的RGB数据,将作了所述映射的矩形模型作为所述面片模型。由此,在所述矩形模型中所述目标对象所对应的像素点具有了颜色通道值以及阿尔法通道值。
在一个实施例中,所述面片模型的宽高比例与所述抠像图像的宽高比例一致。本实施例中,所述矩形模型可以是指矩形图形。
本实施例中,所述执行模块302首先为所述矩形模型设置一个高度(为矩形模型设置高度也即是为所述面片模型设置高度);根据所述矩形模型的高度以及所述抠像图像的宽高比例计算所述矩形模型的宽度;然后基于所计算获得的宽度以及所设置的高度来创建所述矩形模型。
举例而言,参阅图5所示,以所述执行模块302设定了所述面片模型4的高度CD为1米为例,那么该面片模型4的宽度C’C即为1米*(1920/1080)=1.7778米。
本实施例中,执行模块302还可以通过将所述抠像图像中每个像素的Alpha通道的数值与预设值(例如0.95)的比较,确定出所述目标对象在所述抠像图像中所对应的四个目标坐标点P1、P2、P3、P4,并基于该四个目标坐标点确定出所述目标对象在所述抠像图像中所对应的矩形边框。
具体地,该四个目标坐标点由所述目标对象在所述抠像图像中所对应的最大X坐标Xmax、最小X坐标Xmin、最大Y坐标Ymax,以及最小Y坐标Ymin所构成,也即是P1(Xmin,Ymin),P2(Xmax,Ymin),P3(Xmin,Ymax),P4(Xmax,Ymax)。
需要说明的是,由于一个像素的Alpha通道的数值为0时则表示所述像素是完全透明的;若一个像素的Alpha通道的数值为1,则表示所述像素是完全不透明的;若一个像素的Alpha通道的数值在0到1之间,则表示所述像素是半透明的。因此,本实施例中,执行模块302可以通过将所述抠像图像中每个像素的Alpha通道的数值与预设值的比较来确定出所述目标对象在所述抠像图像中所对应的所有坐标点,然后从所述目标对象在所述抠像图像中所对应的所有坐标点中确定出所述四个目标坐标点。
例如,参阅图5所示,以所述抠像图像3的像素宽度Width=1920,像素高Height=1080为例,即所述抠像图像的像素点总数为1920*1080。执行模块302通过将所述抠像图像3中每个像素的Alpha通道的数值与预设值(例如0.95)的比较确定出所述目标对象2在所述抠像图像3中所对应的所述四个目标坐标点P1、P2、P3、P4。例如确定出所述目标对象2在所述抠像图像3中所对应的最大X坐标Xmax=1058、最小X坐标Xmin=863、最大Y坐标Ymax=915,以及最小Y坐标Ymin=162。执行模块302还可以基于该四个目标坐标点P1、P2、P3、P4确定出所述目标对象2在所述抠像图像3中所对应的矩形边框20。需要说明的是,由于所述面片模型4的宽高比例与所述抠像图像的宽高比例一致,因此,所述执行模块302一旦确定了所述目标对象2在所述抠像图像3中所对应的四个目标坐标点P1、P2、P3、P4的坐标,也就可以确定所述面片模型4中所述目标对象2所对应的矩形边框20的四个位置点A’、A、B’、B的坐标。也即是位置点A’的坐标同于目标坐标点P1;位置点A的坐标同于目标坐标点P2;位置点B’的坐标同于目标坐标点P3;位置点B的坐标同于目标坐标点P4。
步骤S3、执行模块302基于所述面片模型以及所述目标对象的实际高度计算一个缩放比例ScaleY。
需要说明的是,所述缩放比例ScaleY也即是要把面片模型的中目标对象的高度调整到该目标对象的实际高度时,对该面片模型所要执行的缩放比例。
换句话来讲,所述缩放比例ScaleY也即是要将图5所示的面片模型4中的目标对象2的高度AB调整到该目标对象2的实际高度例如1.7米时,对该面片模型4所要执行的一个缩放比例。
参阅图7所示,假设执行模块302根据该缩放比例ScaleY对面片模型4执行了缩放后,需要获得面片模型5。在该面片模型5中,该目标对象2的高度为该目标对象2的实际高度即EF=1.7米。
本实施例中,所述基于所述面片模型以及所述目标对象的实际高度计算一个缩放比例ScaleY包括(a1)-(a2):
(a1)确定所述目标对象在所述抠像图像中所对应的最大Y坐标Ymax,以及最小Y坐标Ymin。
如前面所述,执行模块302可以通过将所述抠像图像中每个像素的Alpha通道的数值与预设值的比较,确定出所述目标对象在所述抠像图像中所对应的所述四个目标坐标点。由此可以确定出所述目标对象在所述抠像图像中所对应的最大Y坐标Ymax,以及最小Y坐标Ymin。
(a2)根据所述目标对象的实际高度、所述抠像图像的高度Height、所述最大Y坐标Ymax,以及最小Y坐标Ymin计算获得所述缩放比例ScaleY。
本实施例中,执行模块302预先存储了所述目标对象的实际高度。为清楚说明本发明,本实施例以所述目标对象的实际高度为1.7米为例。
举例而言,请结合图5和图7所示,假设面片模型4的高度CD=1米;目标对象2的实际高度为1.7米即EF=1.7米;那么CD/AB=Height/(Ymax-Ymin);
ScaleY=GH/CD;
GH/EF=CD/AB;
GH=(1080/(Ymax-Ymin))*EF;
GH=(1080/(915-162))*1.7=2.438;
ScaleY=2.438/1=2.438。即得到缩放比例ScaleY为2.438。
步骤S4、执行模块302根据所述缩放比例ScaleY调整所述面片模型,使得所述目标对象在所述面片模型中的高度等于所述目标对象的实际高度。
本实施例中,执行模块302基于所述缩放比例ScaleY等比例缩放所述面片模型,使得所述目标对象在所述面片模型中的高度等于所述目标对象的实际高度。
例如,参阅图7所示,所述执行模块302基于所述缩放比例ScaleY等比例缩放所述面片模型4后获得面片模型5。
步骤S5、执行模块302基于调整后的所述面片模型调整所述目标对象的位置。
本实施例中,所述基于调整后的所述面片模型调整所述目标对象的位置包括(b1)-(b4):
(b1)从调整后的所述面片模型中设定所述目标对象的起始站点。
(b2)从调整后的所述面片模型中为所述目标对象设定目标站点。
本实施例中,所述目标对象的起始站点为第一坐标点与第二坐标点之间的连线的中点,其中,所述第一坐标点所对应的X坐标为所述最小X坐标Xmin,该第一坐标点所对应的Y坐标为所述最大Y坐标Ymax;所述第二坐标点所对应的X坐标为所述最大X坐标Xmax,该第二坐标点所对应的Y坐标为所述最大Y坐标Ymax;所述目标站点为调整后的所述面片模型的下边缘的中点。
举例而言,参阅图8所示,目标对象2在面片模型5中所对应的矩形边框的四个坐标点为E’,E,F’,F。由于所述面片模型5是执行模块302基于所述缩放比例ScaleY等比例缩放所述面片模型4所获得,且所述面片模型4的宽高比例与所述抠像图像的宽高比例一致,因此,所述面片模型5的图片像素长宽也仍然为Width=1920;height=1080;该目标对象2在面片模型5中所对应的矩形边框的四个坐标点E’,E,F’,F的坐标分别与所述目标对象2在所述抠像图像3中所对应的四个目标坐标点P1,P2,P3,P4的坐标一致,即该目标对象2在面片模型5中所对应的矩形边框的四个坐标点分别为E’(Xmin,Ymin),E(Xmax,Ymin),F’(Xmin,Ymax),F(Xmax,Ymax)。
因此,执行模块302可以设定坐标点F’与坐标点F之间的连线的中点I作为所述目标对象的起始站点;以及设定调整后的面片模型5的下边缘的中点T作为所述目标对象的目标站点。
(b3)计算所述目标对象从所述起始站点移动到所述目标站点的插值。
(b4)根据所述插值TransformI移动调整后的所述面片模型。
具体地,执行模块302可以按照如下方式来计算坐标点I移动到坐标点T的插值TransformI。TransformI包括TransformI.Z(即在Z轴方向上所要移动的距离)、TransformI.X(即在X轴方向上所要移动的距离)、TransformI.Y(即在Y轴方向上所要移动的距离)。
其中,由于坐标点T的z轴和坐标点A的z轴一致,因此,TransformI.Z=T.Z;即无需计算TransformI.Z。TransformI.X=JT两点的距离;TransformI.Y=IJ两点的距离。
其中,IJ/HG=(Height-Ymax)/Height;
IJ=((1080-915)/1080)*2.438;
IJ=0.3724米;
JT=HH’-(HJ+TH’);
HJ=(Xmax-Xmin)/2+Xmin;
TH’=Width/2;
HH’=ScaleY*1.7778;
JT/HH’=(Width-((Xmax-Xmin)/2+Xmin+Width/2))/Width;
JT=((1920-((1058-863)/2+863+1920/2))/1920)*2.438*1.7778;
JT=-0.0011米。
由此执行模块302计算获得TransformI的数值。执行模块302即可根据TransformI的数值移动所述面片模型5。例如首先沿Y轴移动IJ=0.3724米;然后沿X轴移动JT=-0.0011米,由此实现对目标对象2的位置的调整,将所述目标对象2的位置调整到影像的居中位置。
根据本案上述方法步骤,可以看出本案通过一个抠像好的图像把目标对象调整设置到合理大小,然后放到场景理想的位置如居中位置。由此当在实际应用场景中例如对老师授课直播时,不会因为目标对象即授课老师的脚步在拍摄设备33的画面中移动而导致授课老师的位置在虚拟环节中脱节如脚步悬空等问题。此外,本案还可以自动调节目标对象即授课老师的位置居中。
需要说明的是,在本发明所提供的几个实施例中,应该理解到,所揭露的非易失性可读存储介质,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。