具体实施方式
为了更加清楚地了解本发明的技术方案,下面结合附图对本发明进行详细介绍。本发明的实施例具有示例性的作用,本领域技术人员在本发明实施例基础上做出的无实质性的改进,都应属于本发明的保护范围。
如图2所示的图像填充方法,其包括以下步骤:
S101:将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值。
在进行图像填充之前,且获取所述第一图像、第二图像后,若所述第一图像、第二图像的存储格式不是I420,需将其转化为I420。所述第二图像的Y分量值原始存储区域,是指在将所述第一图像填充到所述第二图像之前,已经存储所述第二图像中所有像素点的Y分量值、且将所述第一图像填充到所述第二图像之后存储所述第一图像中所有像素点的Y分量值和第二图像中部分像素点的Y分量值的存储区域。
在将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值之前,还包括确定所述第二图像中被所述第一图像填充的具体区域。所述对应像素点的Y分量值,是指所述第二图像中被填充的具体区域上的像素点的Y分量值。
所述第一图像的所有像素点的Y分量值,是按照预定的排列顺序覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值。所述预定的排列顺序可以是所述第一图像的所有像素点的Y分量值原来的排列顺序,也可以是根据需要进行调整过的排列顺序。
S102:将所述第一图像的所有像素点的U分量值覆盖所述第二图像的U分量值原始存储区域中的对应像素点的U分量值。
所述第二图像的U分量值原始存储区域,是指在将所述第一图像填充到所述第二图像之前,已经存储所述第二图像中所有像素点的U分量值、且将所述第一图像填充到所述第二图像之后存储所述第一图像中所有像素点的U分量值和第二图像中部分像素点的U分量值的存储区域。
在将第一图像的所有像素点的U分量值覆盖第二图像的U分量值原始存储区域中的对应像素点的U分量值之前,还包括确定所述第二图像中被所述第一图像填充的具体区域。所述对应像素点的U分量值,是指所述第二图像中被填充的具体区域上的像素点的U分量值。
所述第一图像的所有像素点的U分量值,是按照预定的排列顺序覆盖第二图像的U分量值原始存储区域中的对应像素点的U分量值。所述预定的排列顺序可以是所述第一图像的所有像素点的U分量值原来的排列顺序,也可以是根据需要进行调整过的排列顺序。
S103:将所述第一图像的所有像素点的V分量值覆盖所述第二图像的V分量值原始存储区域中的对应像素点的V分量值。
所述第二图像的V分量值原始存储区域,是指在将所述第一图像填充到所述第二图像之前,已经存储所述第二图像中所有像素点的V分量值、且将所述第一图像填充到所述第二图像之后存储所述第一图像中所有像素点的V分量值和第二图像中部分像素点的V分量值的存储区域。
在将第一图像的所有像素点的V分量值覆盖第二图像的V分量值原始存储区域中的对应像素点的V分量值之前,还包括确定所述第二图像中被所述第一图像填充的具体区域。所述对应像素点的V分量值,是指所述第二图像中被填充的具体区域上的像素点的V分量值。
所述第一图像的所有像素点的V分量值,是按照预定的排列顺序覆盖第二图像的V分量值原始存储区域中的对应像素点的V分量值。所述预定的排列顺序可以是所述第一图像的所有像素点的V分量值原来的排列顺序,也可以是根据需要进行调整过的排列顺序。
本发明实施例的图像填充方法只是示例性说明,实际过程中步骤S101、S102、S103的顺序是可以调换的。
本发明实施例中的图像填充方法,采取的是将第一图像的所有像素点的Y分量值、U分量值和V分量值分别覆盖第二图像的Y分量值、U分量值和V分量值,具体可以是:将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值之后,再将所述第一图像的所有像素点的U分量值覆盖所述第二图像的U分量值原始存储区域中的对应像素点的U分量值,最后,将所述第一图像的所有像素点的V分量值覆盖所述第二图像的V分量值原始存储区域中的对应像素点的V分量值。当然,Y分量值、U分量值、V分量值覆盖的先后顺序可以调换。即通过该方法,可将第一图像中每个像素点Y分量值、U分量值和V分量值存储到第二图像的相应存储区域中,完成将第一图像的填充到第二图像的相应位置中,其不需要逐个像素地进行确定、查询、存储等步骤,流程简单、实用,可以很大程度地提高图像填充的效率。
基于图2所示的图像填充方法,优选的是,假设所述第一图像的像素为E1行、F1列,所述第二图像的像素为E2行、F2列,其中1≤E1≤E2、1≤F1≤F2,且E1、E2、F1、F2均为正整数;所述将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值,包括:
S201:确定所述第一图像的第一行像素的第一个像素点在所述第二图像上的位置为第i行、第j列,其中1≤i≤E2-E1+1、1≤j≤F2-F1+1;
S202:将所述第一图像的第k行像素的F1个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中对应的第i+k-1行像素中的F1个像素点的Y分量值,且覆盖的起始像素点为第i+k-1行、第j列,终止像素点为第i+k-1行、第j+F1-1列;其中1≤k≤E1,且k为正整数。
本发明实施例中的E1、E2、F1、F2、i、j、k均为正整数。所述确定所述第一图像的第一行像素的第一个像素点在所述第二图像上的位置为第i行、第j列之后,若第一图像不进行旋转,通常是可以确定所述第二图像中被所述第一图像填充的具体区域。本发明实施例中第一图像不进行旋转。
本发明实施例中,所述将所述第一图像的第k行像素的F1个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中对应的第i+k-1行像素中的F1个像素点的Y分量值,是按照第一图像中第k行像素的F1个像素点的排列顺序与第二图像中Y分量值原始存储区域中对应的第i+k-1行像素中的F1个像素点的Y分量值的排列顺序进行覆盖。若第一图像的像素E1为4行、F1为4列,第二图像的像素E2为10行、F2为8列,且第一图像的第一行像素的4个像素点的排列顺序为第1像素点、第2像素点、第3像素点、第4像素点,第二图像的第五行的8个像素点的排列顺序为第1′像素点、第2′像素点、第3′像素点、第4′像素点、第5′像素点、第6′像素点、第7′像素点、第8′像素点,如果确定第一图像的第一行像素的第一个像素点在第二图像上的位置为第i为5行、第j为2列,则将第一图像的第一行像素的4个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中对应的第5行像素中的4个像素点的Y分量值,是按照第一图像中第一行像素的4个像素点的排列顺序与第二图像中Y分量值原始存储区域中对应的第五行像素中的4个像素点的Y分量值的排列顺序进行覆盖,即是将第一图像的第一行像素的4个像素点的Y分量值按照第1像素点、第2像素点、第3像素点、第4像素点的顺序覆盖第二图像中Y分量值原始存储区域中对应的第五行像素中的第2′像素点、第3′像素点、第4′像素点、第5′像素点的Y分量值。
本发明实施例中,所述确定所述第一图像的第一行像素的第一个像素点在所述第二图像上的位置为第i行、第j列之后;首先将所述第一图像的第一行像素的F1个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中对应的第i行像素中的F1个像素点的Y分量值,且覆盖的起始像素点为第i行、第j列,终止像素点为第i行、第j+F1-1列;然后,将所述第一图像的第二行像素的F1个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中的对应的第i+1行像素中的F1个像素点的Y分量值,且覆盖的起始像素点为第i+1行、第j列,终止像素点为第i+1行、第j+F1-1列;之后,将所述第一图像的第三行像素的F1个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中对应的第i+2行像素中的F1个像素点的Y分量值,且覆盖的起始像素点为第i+2行、第j列,终止像素点为第i+2行、第j+F1-1列;以此类推,直到将所述第一图像的第E1行像素的F1个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中的对应的第i+E1-1行像素中的F1个像素点的Y分量值,且覆盖的起始像素点为第i+E1-1行、第j列,终止像素点为第i+E1-1行、第j+F1-1列。
具体地,若第一图像的像素E1为4行、F1为4列,第二图像的像素E2为10行、F1为8列,且第一图像的第一行像素的第一个像素点在所述第二图像上的位置第i为5行、第j为2列。首先,将所述第一图像的第一行像素的4个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中对应的第5行像素中的4个像素点的Y分量值,且覆盖的起始像素点为第5行、第2列,终止像素点为第5行、第5列;然后,将所述第一图像的第二行像素的4个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中的对应的第6行像素中的4个像素点的Y分量值,且覆盖的起始像素点为第6行、第2列,终止像素点为第6行、第5列;之后,将所述第一图像的第三行像素的4个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中对应的第7行像素中的4个像素点的Y分量值,且覆盖的起始像素点为第7行、第2列,终止像素点为第7行、第5列;最后,将所述第一图像的第四行像素的4个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中对应的第8行像素中的4个像素点的Y分量值,且覆盖的起始像素点为第8行、第2列,终止像素点为第8行、第5列。
本发明实施例的图像填充方法,可以将第一图像的像素点的Y分量值以行为单位覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值,直到将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值,其不需要逐个像素地进行确定、查询、存储等步骤,流程更简单、实用,可以很大程度地提高图像填充的效率。
基于图2所示的图像填充方法,如图3所示,所述将所述第一图像的所有像素点的U分量值覆盖所述第二图像的U分量值原始存储区域中的对应像素点的U分量值,包括:
S301:配置第一图像的U分量值新存储区域,使该第一图像的U分量值新存储区域的可用区域的大小不小于该第一图像的所有像素点的Y分量值所占用的存储区域,并将该第一图像的每相邻四个像素点对应的一个U分量值扩展成相应的四个U分量值,使该扩展后的U分量值与所述第一图像的像素点一一对应,然后,将该扩展后的U分量值存储到该第一图像的U分量值新存储区域中。
所述配置第一图像的U分量值新存储区域,可以是新创建的存储区域,也可以是将现有的存储区域进行扩展之后的存储区域,目的是使该第一图像的U分量值新存储区域的可用区域的大小不小于该第一图像的所有像素点的Y分量值所占用的存储区域,以便于将扩展后的U分量值存储到该第一图像的U分量值新存储区域中。
所述将该第一图像的每相邻四个像素点对应的一个U分量值扩展成相应的四个U分量值,一般扩展后的每个U分量值和扩展之前的U分量值大小相同。例如:若U1表示①、②、⑤、⑥四个像素点共用的U分量值,则经扩展后得到4个U1,分别与①、②、⑤、⑥四个像素点一一对应。
所述将该扩展后的U分量值存储到该第一图像的U分量值新存储区域中之后,该第一图像的U分量值新存储区域中的U分量值的数目与该第一图像的像素点的数目相同。
S302:配置第二图像的U分量值新存储区域,使该第二图像的U分量值新存储区域的可用区域的大小不小于该第二图像的所有像素点的Y分量值所占用的存储区域,并将该第二图像的每相邻四个像素点对应的一个U分量值扩展成相应的四个U分量值,使该扩展后的U分量值与所述第二图像的像素点一一对应,然后,将该扩展后的U分量值存储到该第二图像的U分量值新存储区域中。
所述配置第二图像的U分量值新存储区域,可以是新创建的存储区域,也可以是将现有的存储区域进行扩展之后的存储区域,目的是使该第二图像的U分量值新存储区域的可用区域的大小不小于该第二图像的所有像素点的Y分量值所占用的存储区域,以便于将扩展后的U分量值存储到该第二图像的U分量值新存储区域中。
所述将该第二图像的每相邻四个像素点对应的一个U分量值扩展成相应的四个U分量值,一般扩展后的每个U分量值和扩展之前的U分量值大小相同。
所述将该扩展后的U分量值存储到该第二图像的U分量值新存储区域中之后,该第二图像的U分量值新存储区域中的U分量值的数目与该第二图像的像素点的数目相同。
S303:将所述第一图像扩展后的所有像素点的U分量值覆盖所述第二图像的U分量值新存储区域中对应像素点的已扩展的U分量值。
因为扩展后的U分量值与Y分量值一样,与像素点是一一对应的。因此,可以利用上述的将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值的方法,将所述第一图像扩展后的所有像素点的U分量值覆盖所述第二图像的U分量值新存储区域中对应像素点的已扩展的U分量值。
S304:把第二图像的U分量值新存储区域中的所有像素点的U分量值按照第二图像的像素点的排列状况,将每相邻四个像素点的U分量值取一个平均值,得到一组新U分量值。
所述平均值可以是算数平均值或者是加权平均值,根据不同需求进行选择。
S305:将该组新U分量值覆盖所述第二图像的U分量值原始存储区域中对应像素点的U分量值。
例如:第一图像的像素E
1为4行、F
1为4列,且第一图像的像素点分别为①②③④⑤⑥⑦⑧⑨⑩
U
1表示①、②、⑤、⑥四个像素点共用的U分量值,U
2表示③、④、⑦、⑧四个像素点共用的U分量值,U
3表示⑨、⑩、
四个像素点共用的U分量值,U
4表示
四个像素点共用的U分量值。第二图像的像素E
2为4行、F
2为4列,且第二图像的像素点分别为①′②′③′④′⑤′⑥′⑦′⑧′⑨′⑩′
U
1′表示①′、②′、⑤′、⑥′四个像素点共用的U分量值,U
2′表示③′、④′、⑦′、⑧′四个像素点共用的U分量值,U
3′表示⑨′、⑩′、
四个像素点共用的U分量值,U
4′表示
四个像素点共用的U分量值。
将扩展后的U分量值存储到第一图像的U分量值新存储区域中之后,第一图像的U分量值新存储区域中的U分量值存储为:U1 U1 U2 U2 U1 U1 U2 U2 U3 U3 U4 U4 U3 U3 U4 U4。将扩展后的U分量值存储到第二图像的U分量值新存储区域中之后,第二图像的U分量值新存储区域中的U分量值存储为:U1′ U1′ U2′ U2′ U1′ U1′ U2′ U2′ U3′ U3′ U4′ U4′ U3′ U3′U4′ U4′。
将第一图像扩展后的所有像素点的U分量值覆盖第二图像的U分量值新存储区域中对应像素点的已扩展的U分量值之后,第二图像的U分量值新存储区域中的U分量值存储为:U1 U1 U2 U2 U1 U1 U2 U2 U3 U3 U4 U4 U3 U3 U4 U4。
把第二图像的U分量值新存储区域中的所有像素点的U分量值按照第二图像的像素点的排列状况,将每相邻四个像素点的U分量值取一个算术平均值,得到一组新U分量值为U1U2U3U4。
将该组新U分量值覆盖所述第二图像的U分量值原始存储区域中对应像素点的U分量值之后,所述第二图像的U分量值原始存储区域中对应像素点的U分量值为U1U2U3U4。即完成了将所述第一图像的所有像素点的U分量值覆盖所述第二图像的U分量值原始存储区域中的对应像素点的U分量值。
本发明实施例中的图像填充方法,通过配置第一图像的U分量值新存储区域和第二图像的U分量值新存储区域,可以将第一图像扩展后的所有像素点的U分量值以行为单位覆盖第二图像的U分量值新存储区域中对应像素点的已扩展的U分量值,并提取一组新U分量值,进而可以将该组新U分量值覆盖第二图像的U分量值原始存储区域中对应像素点的U分量值,即可将第一图像的所有像素点的U分量值覆盖第二图像的U分量值原始存储区域中的对应像素点的U分量值。该方法流程更简单、实用,可以很大程度地提高图像填充的效率。
基于图2所示的图像填充方法,如图4所示,所述将所述第一图像的所有像素点的V分量值覆盖所述第二图像的V分量值原始存储区域中的对应像素点的V分量值,包括:
S401:配置第一图像的V分量值新存储区域,使该第一图像的V分量值新存储区域的可用区域的大小不小于该第一图像的所有像素点的Y分量值所占用的存储区域,并将该第一图像的每相邻四个像素点对应的一个V分量值扩展成相应的四个V分量值,使该扩展后的V分量值与所述第一图像的像素点一一对应,然后,将该扩展后的V分量值存储到该第一图像的V分量值新存储区域中。
所述配置第一图像的V分量值新存储区域,可以是新创建的存储区域,也可以是将现有的存储区域进行扩展之后的存储区域,目的是使该第一图像的V分量值新存储区域的可用区域的大小不小于该第一图像的所有像素点的Y分量值所占用的存储区域,以便于将扩展后的V分量值存储到该第一图像的V分量值新存储区域中。
所述将该第一图像的每相邻四个像素点对应的一个V分量值扩展成相应的四个V分量值,一般扩展后的每个V分量值和扩展之前的V分量值大小相同。例如:若V1表示①、②、⑤、⑥四个像素点共用的V分量值,则经扩展后得到4个V1,分别与①、②、⑤、⑥四个像素点一一对应。
所述将该扩展后的V分量值存储到该第一图像的V分量值新存储区域中之后,该第一图像的V分量值新存储区域中的V分量值的数目与该第一图像的像素点的数目相同。
S402:配置第二图像的V分量值新存储区域,使该第二图像的V分量值新存储区域的可用区域的大小不小于该第二图像的所有像素点的Y分量值所占用的存储区域,并将该第二图像的每相邻四个像素点对应的一个V分量值扩展成相应的四个V分量值,使该扩展后的V分量值与所述第二图像的像素点一一对应,然后,将该扩展后的V分量值存储到该第二图像的V分量值新存储区域中。
所述配置第二图像的V分量值新存储区域,可以是新创建的存储区域,也可以是将现有的存储区域进行扩展之后的存储区域,目的是使该第二图像的V分量值新存储区域的可用区域的大小不小于该第二图像的所有像素点的Y分量值所占用的存储区域,以便于将扩展后的V分量值存储到该第二图像的V分量值新存储区域中。
所述将该第二图像的每相邻四个像素点对应的一个V分量值扩展成相应的四个V分量值,一般扩展后的每个V分量值和扩展之前的V分量值大小相同。
所述将该扩展后的V分量值存储到该第二图像的V分量值新存储区域中之后,该第二图像的V分量值新存储区域中的V分量值的数目与该第二图像的像素点的数目相同。
S403:将所述第一图像扩展后的所有像素点的V分量值覆盖所述第二图像的V分量值新存储区域中对应像素点的已扩展的V分量值。
因为扩展后的V分量值与Y分量值一样,与像素点是一一对应的。因此,可以利用上述的将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值的方法,将所述第一图像扩展后的所有像素点的V分量值覆盖所述第二图像的V分量值新存储区域中对应像素点的已扩展的V分量值。
S404:把第二图像的V分量值新存储区域中的所有像素点的V分量值按照第二图像的像素点的排列情况,将每相邻四个像素点的V分量值取一个平均值,得到一组新V分量值。
所述平均值可以是算数平均值或者是加权平均,根据不同需求进行选择。
S405:将该组新V分量值覆盖所述第二图像的V分量值原始存储区域中对应像素点的V分量值。
本发明实施例中的图像填充方法,通过配置第一图像的V分量值新存储区域和第二图像的V分量值新存储区域,可以将第一图像扩展后的所有像素点的V分量值以行为单位覆盖第二图像的V分量值新存储区域中对应像素点的已扩展的V分量值,并提取一组新V分量值,进而可以将该组新V分量值覆盖第二图像的V分量值原始存储区域中对应像素点的V分量值,即可将第一图像的所有像素点的V分量值覆盖第二图像的V分量值原始存储区域中的对应像素点的V分量值。该方法流程更简单、实用,可以很大程度地提高图像填充的效率。
基于图2所示的图像填充方法,较佳的是,所述将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值之前,还包括:根据所述第一图像的原始图像以及所述第二图像,缩放所述第一图像的原始图像,得到第一缩放图像;且所述缩放所述第一图像的原始图像,包括:
假设所述第一图像的原始图像的宽为A、高为B,所述第二图像的宽为C、高为D;
如果A:B≥C:D,则将所述第一图像缩放为宽为C、高为C*B/A的第一缩放图像;
如果A:B≤C:D,则将所述第一图像缩放为宽为D*A/B、高为D的第一缩放图像。
所述缩放包括扩大和缩小。本发明实施例中的图像填充方法,通过对第一图像的原始图像的缩放,可以使第一图像保持图像比例地填充到第二图像中,且又能最大程度地填满第二图像。
作为本发明的图像填充方法的一种应用,如图5所示的多方实时视频拼接录制方法,其包括以下步骤:
S501:根据多方视频源的数量创建对应数量的子图像,并设定每个子图像的形状和像素值。
为了使所有子图像的大小一致、对称美观,通常将每个子图像的形状和像素值设定相同。子图像的形状和像素值具体是多少,可以根据视频源发送过来的视频图像的形状和像素值进行设定,原则是子图像的形状和像素值越接近视频源发送的视频图像越好,这样在将实时视频图像填充到子图像里后子图像空白的区域会比较小。
S502:根据已创建的子图像的数量以及每个子图像的形状和像素值创建对应的合成图像,所述合成图像的像素值大于或等于已创建的全部子图像的像素值之和。
所述合成图像的像素值通常是等于已创建的全部子图像的像素值之和,且所述合成图像的形状通常是已创建的全部子图像可以以某种方式组合而成的形状。这样,可以将已创建的子图像直接填充到所述合成图像中相应的区域中,既可以完成全部子图像的拼接,又使合成图像没有多余的空白区域。
S503:接收所述多方视频源发送的实时视频图像。
S504:把每个实时视频图像利用本发明实施例中所述的图像填充方法分别填充到对应的子图像中。
填充后的子图像就是包含相应实时视频图像的实时视频子图像。每个视频源均可以实时发送一系列的实时视频图像,经过图像填充,就可以得到与每个视频源相对应的一系列的实时视频子图像。
S505:把填充有实时视频图像的每个子图像利用本发明实施例中所述的图像填充方法分别填充到所述合成图像中。
在合成图像中预先设定每个实时视频源对应的实时视频子图像的位置,然后利用本发明实施例中的图像填充方法,将每个实时视频子图像分别填充到合成图像中对应的位置。通过连续将与每个视频源相对应的一系列的实时视频子图像分别填充到合成图像中对应的位置,就可以完成多方实时视频的拼接录制。
所述把每个实时视频图像利用本发明实施例中所述的图像填充方法分别填充到对应的子图像中之前,通常还包括根据每个实时视频图像的原始图像以及对应的子图像,缩放实时视频图像的原始图像,得到相应的实时视频图像的缩放图像;且所述缩放实时视频图像的原始图像,包括:
假设实时视频图像的原始图像宽为A、高为B,与其对应的子图像的宽为C、高为D;
如果A:B≥C:D,则将该实时视频图像的原始图像缩放为宽为C、高为C*B/A的实时视频图像的缩放图像;
如果A:B≤C:D,则将该实时视频图像的原始图像缩放为宽为D*A/B、高为D的实时视频图像的缩放图像。
通过将实时视频图像的原始图像缩放为相应的缩放图像,然后将缩放图像填充到对应的子图像,再将被填充的子图像填充到合成图像的相应位置中。即可以把任意多方的视频图像保持图像比例地投射到一个由若干个大小相同的子图像组成的图像矩阵中,每方的视频图像都可占据一个大小相同的区域,使合成后的图像具有对称性,合成效果较为美观。
如图6所示的图像填充系统,其包括:
Y分量值覆盖模块,用于将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值;
U分量值覆盖模块,用于将所述第一图像的所有像素点的U分量值覆盖所述第二图像的U分量值原始存储区域中的对应像素点的U分量值;
V分量值覆盖模块,用于将所述第一图像的所有像素点的V分量值覆盖所述第二图像的V分量值原始存储区域中的对应像素点的V分量值。
本发明实施例中的图像填充系统,可用于实现上述的图像填充方法,其采取Y分量值覆盖模块、U分量值覆盖模块、V分量值覆盖模块,可以将第一图像的所有像素点的Y分量值、U分量值和V分量值分别覆盖第二图像的Y分量值、U分量值和V分量值。具体可以是:将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值之后,再将所述第一图像的所有像素点的U分量值覆盖所述第二图像的U分量值原始存储区域中的对应像素点的U分量值,最后,将所述第一图像的所有像素点的V分量值覆盖所述第二图像的V分量值原始存储区域中的对应像素点的V分量值。当然,Y分量值、U分量值、V分量值覆盖的先后顺序可以调换。即通过该系统,可将第一图像中每个像素点Y分量值、U分量值和V分量值存储到第二图像的相应存储区域中,完成将第一图像的填充到第二图像的相应位置中,其不需要逐个像素地进行确定、查询、存储等步骤,流程简单、实用,可以很大程度地提高图像填充的效率。
基于图6所示的图像填充系统,优选的是,假设所述第一图像的像素为E1行、F1列,所述第二图像的像素为E2行、F2列,其中1≤E1≤E2、1≤F1≤F2,且E1、E2、F1、F2均为正整数;所述Y分量值覆盖模块包括:
位置确定单元,用于确定所述第一图像的第一行像素的第一个像素点在所述第二图像上的位置为第i行、第j列,其中1≤i≤E2-E1+1、1≤j≤F2-F1+1;
Y分量值行覆盖单元,用于将所述第一图像的第k行像素的F1个像素点的Y分量值按照顺序覆盖第二图像中Y分量值原始存储区域中对应的第i+k-1行像素中的F1个像素点的Y分量值,且覆盖的起始像素点为第i+k-1行、第j列,终止像素点为第i+k-1行、第j+F1-1列;其中1≤k≤E1,且k为正整数。
本发明实施例的图像填充系统,可以将第一图像的像素点的Y分量值以行为单位覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值,直到将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值,其不需要逐个像素地进行确定、查询、存储等步骤,流程更简单、实用,可以很大程度地提高图像填充的效率。
基于图6所示的图像填充系统,如图7所示,所述U分量值覆盖模块包括:
第一U分量值扩展单元,用于配置第一图像的U分量值新存储区域,使该第一图像的U分量值新存储区域的可用区域的大小不小于该第一图像的所有像素点的Y分量值所占用的存储区域,并将该第一图像的每相邻四个像素点对应的一个U分量值扩展成相应的四个U分量值,使该扩展后的U分量值与所述第一图像的像素点一一对应,然后,将该扩展后的U分量值存储到该第一图像的U分量值新存储区域中;
第二U分量值扩展单元,用于配置第二图像的U分量值新存储区域,使该第二图像的U分量值新存储区域的可用区域的大小不小于该第二图像的所有像素点的Y分量值所占用的存储区域,并将该第二图像的每相邻四个像素点对应的一个U分量值扩展成相应的四个U分量值,使该扩展后的U分量值与所述第二图像的像素点一一对应,然后,将该扩展后的U分量值存储到该第二图像的U分量值新存储区域中;
第一U分量值覆盖单元,用于将所述第一图像扩展后的所有像素点的U分量值覆盖所述第二图像的U分量值新存储区域中对应像素点的已扩展的U分量值;
U分量值平均单元,用于把第二图像的U分量值新存储区域中的所有像素点的U分量值按照第二图像的像素点的排列状况,将每相邻四个像素点的U分量值取一个平均值,得到一组新U分量值;
第二U分量值覆盖单元,用于将该组新U分量值覆盖所述第二图像的U分量值原始存储区域中对应像素点的U分量值。
本发明实施例中的图像填充系统,通过配置第一图像的U分量值新存储区域和第二图像的U分量值新存储区域,可以将第一图像扩展后的所有像素点的U分量值以行为单位覆盖第二图像的U分量值新存储区域中对应像素点的已扩展的U分量值,并提取一组新U分量值,进而可以将该组新U分量值覆盖第二图像的U分量值原始存储区域中对应像素点的U分量值,即可将第一图像的所有像素点的U分量值覆盖第二图像的U分量值原始存储区域中的对应像素点的U分量值。该系统更简单、实用,可以很大程度地提高图像填充的效率。
基于图6所示的图像填充系统,如图8所示,所述V分量值覆盖模块包括:
第一V分量值扩展单元,用于配置第一图像的V分量值新存储区域,使该第一图像的V分量值新存储区域的可用区域的大小不小于该第一图像的所有像素点的Y分量值所占用的存储区域,并将该第一图像的每相邻四个像素点对应的一个V分量值扩展成相应的四个V分量值,使该扩展后的V分量值与所述第一图像的像素点一一对应,然后,将该扩展后的V分量值存储到该第一图像的V分量值新存储区域中;
第二V分量值扩展单元,用于配置第二图像的V分量值新存储区域,使该第二图像的V分量值新存储区域的可用区域的大小不小于该第二图像的所有像素点的Y分量值所占用的存储区域,并将该第二图像的每相邻四个像素点对应的一个V分量值扩展成相应的四个V分量值,使该扩展后的V分量值与所述第二图像的像素点一一对应,然后,将该扩展后的V分量值存储到该第二图像的V分量值新存储区域中;
第一V分量值覆盖单元,用于将所述第一图像扩展后的所有像素点的V分量值覆盖所述第二图像的V分量值新存储区域中对应像素点的已扩展的V分量值;
V分量值平均单元,用于把第二图像的V分量值新存储区域中的所有像素点的V分量值按照第二图像的像素点的排列情况,将每相邻四个像素点的V分量值取一个平均值,得到一组新V分量值;
第二V分量值覆盖单元,用于将该组新V分量值覆盖所述第二图像的V分量值原始存储区域中对应像素点的V分量值。
基于图6所示的图像填充系统,较佳的是,其还包括缩放模块,用于将第一图像的所有像素点的Y分量值覆盖第二图像的Y分量值原始存储区域中的对应像素点的Y分量值之前,根据所述第一图像的原始图像以及所述第二图像,缩放所述第一图像的原始图像,得到第一缩放图像;且所述缩放模块包括:
第一缩放单元,用于假设所述第一图像的原始图像的宽为A、高为B,所述第二图像的宽为C、高为D;如果A:B≥C:D,则将所述第一图像缩放为宽为C、高为C*B/A的第一缩放图像;
第二缩放单元,用于假设所述第一图像的原始图像的宽为A、高为B,所述第二图像的宽为C、高为D;如果A:B≤C:D,则将所述第一图像缩放为宽为D*A/B、高为D的第一缩放图像。
本发明实施例中的图像填充系统,通过对第一图像的原始图像的缩放,可以使第一图像保持图像比例地填充到第二图像中,且又能最大程度地填满第二图像。
如图9所示的多方实时视频拼接录制装置,其包括:
第一创建模块,用于根据多方视频源的数量创建对应数量的子图像,并设定每个子图像的形状和像素值;
第二创建模块,用于根据已创建的子图像的数量以及每个子图像的形状和像素值创建对应的合成图像,所述合成图像的像素值大于或等于已创建的全部子图像的像素值之和;
接收模块,用于接收所述多方视频源发送的实时视频图像;
第一填充模块,用于把每个实时视频图像利用本发明实施例中所述的图像填充系统分别填充到对应的子图像中;
第二填充模块,用于把填充有实时视频图像的每个子图像利用本发明实施例中所述的图像填充系统分别填充到所述合成图像中。
以上所述,仅为本发明的实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。