一种基于定点像素数据的图像Alpha混合方法
技术领域
本发明涉及计算机图形处理领域,具体涉及一种基于定点像素数据的图像Alpha混合方法。
背景技术
Alpha混合单元是GPU(Graphics Processing Unit)完成图像混合功能的关键模块,处于图形渲染管线的末端,承担着前景像素与背景像素混合的作用。单一的Alpha混合方式会带来生硬的视觉体验,针对不同的绘制场景,GPU采用多样的混合方式以还原现实世界的视见关系,从而提高绘制场景的真实性。近年来,随着半导体工艺的进步和计算机图形学的发展,计算机合成图像的质量得到了极大提高,图像的混合方式对场景真实性的影响更加突出。
现有图像混合方法中的混合方式采用混合软件-操作系统-CPU的处理流程,操作系统的延迟以及CPU较慢的处理速度都会降低混合速度。此外,现有图像混合方法中硬件混合方式一般只采用乘加混合方式,混合方式单一,不能满足特定图像的混合。
发明内容
本发明的目的是解决现有图像混合方法存在速度慢、混合方式少的技术问题,提供了一种基于定点像素数据的图像Alpha混合方法。
本发明的技术方案是:
一种基于定点像素数据的图像Alpha混合方法,包括以下步骤:
1)获取定点源颜色FX_Cs、定点目标颜色FX_Cd以及颜色常量;
2)对定点源颜色与定点目标颜色通道缩减;
3)对FX_Ad取反,结果为~FX_Ad,选择FX_As与~FX_Ad中较小的值作为N,N=Min(FX_As,~FX_Ad),FX_Ad为定点目标颜色的Alpha值,FX_As为定点源颜色的Alpha值;
4)获取定点源因子FX_S和定点目标因子FX_D;
从通道缩减后的定点源颜色、通道缩减后的定点目标颜色、步骤3)的N值、颜色常量以及常数0中的一项作为定点源因子;
从通道缩减后的定点源颜色、通道缩减后的定点目标颜色、步骤3)的N值、颜色常量以及常数0中的一项作为定点目标因子;
5)对定点源颜色、定点目标颜色、定点源因子和定点目标因子进行处理,获得定点像素混合结果;
6)定点像素混合结果通道缩减并输出。
上述步骤2)与步骤3)可调换顺序执行或同时执行。
进一步地,步骤5)具体为,
5.1)将定点源颜色与定点源因子相乘,定点目标颜色与定点目标因子相乘,公式为FX_Cs×FX_S,FX_Cd×FX_D;
5.2)将步骤5.1)中的乘法值相加作为定点像素混合结果,公式为FX_Cs×FX_S+FX_Cd×FX_D。
或者,
5.1)将定点源颜色与定点源因子相乘,定点目标因子取反后与定点目标颜色相乘,公式为FX_Cs×FX_S,FX_Cd×(~FX_D);
5.2)将步骤5.1)中的乘法值相加作为定点像素混合结果,公式为FX_Cs×FX_S+FX_Cd×(~FX_D)。
或者,
5.1)定点源因子取反后与定点源颜色相乘,定点目标因子与定点目标颜色相乘,公式为FX_Cs×(~FX_S),FX_Cd×FX_D;
5.2)将步骤5.1)中的乘法值相加作为定点像素混合结果,公式为FX_Cs×(~FX_S)+FX_Cd×FX_D。
进一步地,步骤5)执行完成后还可进行下列操作,
最大值混合:比较定点目标颜色与步骤5)中定点像素混合结果的大小,选择较大的值作为定点像素混合结果。
或者,最小值混合:比较定点目标颜色与步骤5)中定点像素混合结果的大小,选择较小的值作为定点像素混合结果。
进一步地,步骤4)中还包括Alpha扩展操作,获取定点源因子和定点目标因子后,将(As,Bs,Gs,Rs)替换为(As,As,As,As);(Ad,Bd,Gd,Rd)替换为(Ad,Ad,Ad,Ad);其中,As、Bs、Gs、Rs分别为定点源因子的Alpha值、蓝色值、绿色值和红色值,Ad、Bd、Gd、Rd分别为定点目标因子的Alpha值、蓝色值、绿色值和红色值。
进一步地,步骤3)中的定点源颜色Alpha值,具体采用外部输入的Alpha值或常数1。
进一步地,步骤3)中的定点目标颜色的Alpha值,具体采用外部输入的Alpha值。
本发明与现有技术相比,具有以下技术效果:
1.相同的混合方式下,本发明与现有软件图像混合技术相比,混合速度呈指数倍提高。
2.本发明在支持现有混合方式的基础上,增加了最大值混合与最小值混合两种混合方式,减少了冗余图像的混合。
3.本发明减少了混合流程,提高了混合速度,实现了乘加混合、减色混合、逆向减色混合、最大值混合以及最小值混合五种混合方式,解决了混合方式少的问题。
4.本发明提出专用图像Alpha混合方法,可将此方法设置在处理芯片上,所以可采用硬件方式实现,解决了图像混合速度慢,混合方式少的问题。
附图说明
图1为本发明定点像素数据处理流程图。
具体实施方式
以下结合附图和具体实施例对本发明的内容作进一步详细描述:
本发明支持Alpha混合方法支持五种混合模式,如表1所示。
表1混合模式类型表
源因子与目标因子支持5种数据选择,如表2所示。
表2混合因子支持的数据类型
一种基于定点像素数据的图像Alpha混合方法,包括以下步骤:
1)获取定点源颜色、定点目标颜色以及颜色常量等像素信息,进行数据传递;
2)定点源颜色与定点目标颜色通道缩减;
当输出数据格式为1位时,则保留颜色数据的最高位,并将最高位扩展为8位(以最高位填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以高2位填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以高3位填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以最高位填充扩展位);当输出数据格式为8位时,不进行通道缩减;
3)对FX_Ad取反,结果为~FX_Ad,选择FX_As与~FX_Ad较小的值作为下一步骤数据选择的一种选项,公式为Min(FX_As,~FX_Ad),FX_As为定点源颜色的Alpha值,FX_Ad为定点目标颜色的Alpha值,定点源颜色Alpha值的选择:当需要图像完全不透明时,选择常数1,当图像具有半透明属性时,选择外部输入Alpha值;
4)在通道缩减后的定点源颜色、通道缩减后的定点目标颜色、步骤3)处理的结果、颜色常量以及常数0中进行混合因子数据选择,得到定点源因子和定点目标因子;
步骤4)中还可包括Alpha扩展操作,得到定点源因子和定点目标因子后,将(As,Bs,Gs,Rs)替换为(As,As,As,As);(Ad,Bd,Gd,Rd)替换为(Ad,Ad,Ad,Ad),其中As,Bs,Gs,Rs分别为定点源因子的Alpha值、蓝色值、绿色值和红色值,Ad,Bd,Gd,Rd分别为定点目标因子的Alpha值、蓝色值、绿色值和红色值;
5)对定点源颜色、定点目标颜色、定点源因子和定点目标因子进行处理,获得定点像素混合结果;
上述步骤5)执行完成后还可进行下列操作之一,
最大值混合:比较定点目标颜色与步骤5)结果的大小,选择较大的值作为像素混合结果;
或者最小值混合:比较定点目标颜色与步骤5)结果的大小,选择较小的值作为像素混合结果;
6)定点像素混合结果通道缩减并输出;
当输出数据格式为1位时,则保留定点像素混合结果的最高位,并将结果扩展为8位(以0填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以0填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以0填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以0填充扩展位);当输出数据格式为8位时,不进行通道缩减。
上述步骤2)与步骤3)可调换顺序执行或同时执行。
实施例1
定点乘加混合方式包括以下步骤:
1)获取源颜色、目标颜色以及颜色常量等像素信息并进行数据传递;
2)定点源颜色与定点目标颜色通道缩减;
当输出数据格式为1位时,则保留颜色数据的最高位,并将最高位扩展为8位(以最高位填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以高2位填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以高3位填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以最高位填充扩展位);当输出数据格式为8位时,不进行通道缩减;
3)对FX_Ad取反,结果为~FX_Ad,选择FX_As与~FX_Ad较小的值作为下一步数据选择的一种选项,公式为N=Min(FX_As,~FX_Ad),FX_As为定点源颜色的Alpha值,FX_Ad为定点目标颜色的Alpha值;
4)在通道缩减后的定点源颜色、通道缩减后的定点目标颜色、步骤3)处理的结果、颜色常量以及常数0中进行混合因子数据选择,得到定点源因子和定点目标因子;
5)进行定点源颜色与定点源因子相乘,定点目标颜色与定点目标因子相乘,公式分别为FX_Cs×FX_S,FX_Cd×FX_D,将上述乘法结果相加作为定点像素混合结果,公式为FX_Cs×FX_S+FX_Cd×FX_D;
6)定点像素混合结果通道缩减并输出;
当输出数据格式为1位时,则保留定点像素混合结果的最高位,并将结果扩展为8位(以0填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以0填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以0填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以0填充扩展位);当输出数据格式为8位时,不进行通道缩减。
实施例2
定点减色混合方式包括以下步骤:
1)获取源颜色、目标颜色以及颜色常量等像素信息并进行数据传递;
2)定点源颜色与定点目标颜色通道缩减;
当输出数据格式为1位时,则保留颜色数据的最高位,并将最高位扩展为8位(以最高位填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以高2位填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以高3位填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以最高位填充扩展位);当输出数据格式为8位时,不进行通道缩减;
3)对FX_Ad取反,结果为~FX_Ad,选择FX_As与~FX_Ad较小的值作为下一步数据选择的一种选项,公式为Min(FX_As,~FX_Ad),FX_As为定点源颜色的Alpha值,FX_Ad为定点目标颜色的Alpha值;
4)在通道缩减后的定点源颜色、通道缩减后的定点目标颜色、步骤3)处理的结果、颜色常量以及常数0中进行混合因子数据选择,得到定点源因子和定点目标因子;
5)进行定点源颜色与定点源因子相乘,定点目标因子取反后与定点目标颜色相乘,公式分别为FX_Cs×FX_S,FX_Cd×(~FX_D);将上述乘法结果相加作为定点像素混合结果,公式为FX_Cs×FX_S+FX_Cd×(~FX_D);
6)定点像素混合结果通道缩减并输出;
当输出数据格式为1位时,则保留定点像素混合结果的最高位,并将结果扩展为8位(以0填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以0填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以0填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以0填充扩展位);当输出数据格式为8位时,不进行通道缩减。
实施例3
定点逆向减色混合方式包括以下步骤:
1)接收源颜色、目标颜色以及颜色常量等像素信息并进行数据传递;
2)定点源颜色与定点目标颜色通道缩减;
当输出数据格式为1位时,则保留颜色数据的最高位,并将最高位扩展为8位(以最高位填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以高2位填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以高3位填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以最高位填充扩展位);当输出数据格式为8位时,不进行通道缩减;
3)对FX_Ad取反,结果为~FX_Ad,选择FX_As与~FX_Ad较小的值作为下一步数据选择的一种选项,公式为Min(FX_As,~FX_Ad),FX_As为定点源颜色的Alpha值,FX_Ad为定点目标颜色的Alpha值;
4)在通道缩减后的定点源颜色、通道缩减后的定点目标颜色、步骤3)处理的结果、颜色常量以及常数0中进行混合因子数据选择,得到定点源因子和定点目标因子;
5)进行定点源因子取反后与定点源颜色相乘,定点目标颜色与定点目标因子相乘,公式分别为FX_Cs×(~FX_S),FX_Cd×FX_D,将上述乘法结果相加,公式为FX_Cs×(~FX_S)+FX_Cd×FX_D;
6)定点像素混合结果通道缩减并输出;
当输出数据格式为1位时,则保留定点像素混合结果的最高位,并将结果扩展为8位(以0填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以0填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以0填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以0填充扩展位);当输出数据格式为8位时,不进行通道缩减。
实施例4
定点最小值混合方式执行以下步骤:
1)接收源颜色、目标颜色以及颜色常量等像素信息并进行数据传递;
2)定点源颜色与定点目标颜色通道缩减;
当输出数据格式为1位时,则保留颜色数据的最高位,并将最高位扩展为8位(以最高位填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以高2位填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以高3位填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以最高位填充扩展位);当输出数据格式为8位时,不进行通道缩减;
3)对FX_Ad取反,结果为~FX_Ad,选择FX_As与~FX_Ad较小的值作为下一步数据选择的一种选项,公式为Min(FX_As,~FX_Ad),FX_As为定点源颜色的Alpha值,FX_Ad为定点目标颜色的Alpha值;
4)在通道缩减后的定点源颜色、通道缩减后的定点目标颜色、步骤3)处理的结果、颜色常量以及常数0中进行混合因子数据选择,得到定点源因子和定点目标因子;
5)进行定点源颜色与定点源因子相乘,定点目标颜色与定点目标因子相乘,公式分别为FX_Cs×FX_S,FX_Cd×FX_D,将上述乘法结果相加作为定点像素混合结果,公式为FX_Cs×FX_S+FX_Cd×FX_D;
6)比较定点目标颜色FX_Cd与步骤5)结果的大小,选择较小的值作为像素混合结果,公式为min(FX_Cd,FX_Cs×FX_S+FX_Cd×FX_D);
7)定点像素混合结果通道缩减并输出;
当输出数据格式为1位时,则保留定点像素混合结果的最高位,并将结果扩展为8位(以0填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以0填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以0填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以0填充扩展位);当输出数据格式为8位时,不进行通道缩减。
实施例5
定点最大值混合方式执行以下步骤:
1)接收源颜色、目标颜色以及颜色常量等像素信息并进行数据传递;
2)定点源颜色与定点目标颜色通道缩减;
当输出数据格式为1位时,则保留颜色数据的最高位,并将最高位扩展为8位(以最高位填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以高2位填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以高3位填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以最高位填充扩展位);当输出数据格式为8位时,不进行通道缩减;
3)对FX_Ad取反,结果为~FX_Ad,选择FX_As与~FX_Ad较小的值作为下一步数据选择的一种选项,公式为Min(FX_As,~FX_Ad),FX_As为定点源颜色的Alpha值,FX_Ad为定点目标颜色的Alpha值;
4)在通道缩减后的定点源颜色、通道缩减后的定点目标颜色、步骤3)处理的结果、颜色常量以及常数0中进行混合因子数据选择,得到定点源因子和定点目标因子;
5)进行定点源颜色与定点源因子相乘,定点目标颜色与定点目标因子相乘。公式分别为FX_Cs×FX_S,FX_Cd×FX_D,将上述乘法结果相加作为定点像素混合结果,公式为FX_Cs×FX_S+FX_Cd×FX_D;
6)比较定点目标颜色FX_Cd与步骤5)结果的大小,选择较大的值作为像素混合结果,公式为max(FX_Cd,FX_Cs×FX_S+FX_Cd×FX_D);
7)定点像素混合结果通道缩减并输出;
当输出数据格式为1位时,则保留定点像素混合结果的最高位,并将结果扩展为8位(以0填充扩展位);当输出数据格式为2位时,则保留颜色数据的高2位,并将高2位扩展为8位(以0填充扩展位);当输出数据格式为3位时,则保留颜色数据的高3位,并将高3位扩展为8位(以0填充扩展位);依此类推,输出数据格式为7位时,则保留颜色数据的高7位,并将高7位扩展为8位(以0填充扩展位);当输出数据格式为8位时,不进行通道缩减。