首页> 中国专利> 一种基于礼花效果模拟的手机背景图像创作方法

一种基于礼花效果模拟的手机背景图像创作方法

摘要

本发明公开了一种基于礼花效果模拟的手机背景图像创作方法,其特征在于,包括以下步骤:步骤1:基于轨迹样板形成模拟礼花图像;所述的轨迹样板为3个:放射直线、S1和S2;分别称使用轨迹样板放射线、S1和S2形成的轨迹为放射线、S1线和S2线,可以选择3个轨迹样板的至少一种;步骤2:将模拟礼花图像叠加到原有的夜景图像中,形成具有礼花效果的手机背景图像。该基于礼花效果模拟的手机背景图像创作方法,灵活性好,数据量小,易于实施,适于在手机上运行。

著录项

  • 公开/公告号CN103116899A

    专利类型发明专利

  • 公开/公告日2013-05-22

    原文格式PDF

  • 申请/专利权人 拓维信息系统股份有限公司;

    申请/专利号CN201310040840.6

  • 申请日2013-02-01

  • 分类号G06T11/00;

  • 代理机构长沙市融智专利事务所;

  • 代理人黄美成

  • 地址 410205 湖南省长沙市岳麓区桐梓坡西路289号

  • 入库时间 2024-02-19 18:53:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-11-18

    授权

    授权

  • 2013-06-19

    实质审查的生效 IPC(主分类):G06T11/00 申请日:20130201

    实质审查的生效

  • 2013-05-22

    公开

    公开

说明书

技术领域

本发明涉及一种基于礼花效果模拟的手机背景图像创作方法。

背景技术

根据实践统计,一部动漫作品中用于背景制作的时间至少占到五分之一甚 至达到百分之三十,有鉴于此,借由计算机制作绚丽、繁复的背景,配合以手工 的人物绘制,能提高动漫作品的制作效率,实现动漫创制周期的大大缩短。

借助手机开发平台,开发出一些适合手机应用的动漫作品,如作为手机屏 保,或作为游戏背景灯,将有助于开发手机的潜力,拓展手机的应用,也给手机 用户带来更佳的视觉享受。

在解析几何中有一个重要的分支——平面曲线方程,包括外摆线、内摆线、 心脏线、箕舌线、蔓叶线,以及笛卡几叶线(数学家笛卡儿研究花瓣和叶形设计 的数学方程)、卡西尼卵形线(天文学家卡西尼研究行星轨迹的数学方程)、阿基 米德螺线(阿基米德发明螺旋扬水器的曲线)等等,它们都是早年的数学家为阐 明某种几何形迹所设计的数学表述。本发明首创了两种数学函数曲线方程(图 1),用于模拟礼花飞行时所遗留的轨迹,服务于手机动漫背景制作之中。

发明内容

本发明所要解决的技术问题是提供一种基于礼花效果模拟的手机背景图像 创作方法,该基于礼花效果模拟的手机背景图像创作方法,灵活性好,数据量小, 易于实施,适于在手机上运行。

发明的技术解决方案如下:

一种基于礼花效果模拟的手机背景图像创作方法,包括以下步骤:

步骤1:基于轨迹样板形成模拟礼花图像;

所述的轨迹样板为3个:放射直线、S1和S2;分别称使用轨迹样板放射线、 S1和S2形成的轨迹为放射线、S1线和S2线,可以选择3个轨迹样板的至少一 种;

轨迹样板S1的表达式为:

【公式中的平方,指整个三角函数 的平方,并非角度φ的平方】

轨迹样板S2的表达式为:

其中下标x和y分别表示轨迹上某点的x分量和y分量;ρ为当前点M点 与起始点MO点的直线距离,MO点的坐标为(x0,y0);为直线与OX轴 沿逆时针方向的夹角;

步骤2:将模拟礼花图像叠加到原有的夜景图像中,形成具有礼花效果的手 机背景图像。

基于放射线及S1线形成所述的模拟礼花图像。

其步骤为:

步骤1、计算用户选定的样板色(colorSample)所对应的红绿蓝(RGB) 颜色值;

步骤2、引入随机函数建立起点、长度、角度均不相同的放射状直线;

步骤3、在每一条放射状直线尾端建立起S1线;

A、在S1线制作中引入带有随机参量r的层次数floors,floors=2+r, r取0~2之间的整数;

B、通过如下步骤得到不同层次数的S1线轨迹:

步骤B1:计算:alpha=3.1416/180;

步骤B2:以j为变量自0至层次数floors,以k为变量自0至1,以kk 为变量自0至9,以i为变量自50至80,遍历地进行如下计算:

fai=i*alpha;

t=sin(fai)/cos(2*fai);

tt=(1-t*t)/(1+t*t);【从fai、t、tt、b直到都仅仅是 求x(在数学公式中它就是S1x)的中间过程,因为数学公式 相当复杂,所以为了程序的可读性,必须分成几 步展开,以完成S1x的计算)】

b=radius*tt*(j/floors);radius即步骤2中的长度【在 数学方程中习惯性地将半径表示为ρ,而在程序中只能直观地表示为 radius】

x=x0+b+k;

y=y0-(t*b)+kk;

其中x,y分别是始于M0点在某一非零时刻后移动到达位置的横坐标和纵 坐标;

fai对应轨迹样板S1的表达式中的k和kk用于控制轨迹的粗细, i控制S1线的轨迹分布范围;i,j,k,kk均为整数;【注明:每一条s1线 都有自己的起点M0,即放射线的尾端点。】

步骤B3:对S1线的轨迹点(x,y)用红绿蓝(RGB)颜色值着色。

基于S2线并改变照度形成所述的模拟礼花图像。

其步骤为:

步骤1)、计算alpha=3.1416/180;

步骤2)、计算用户选定的样板色(colorSample)对应的Y,Cr,Cb值;

Y=(257*red+504*green+98*blue)/1000+16;

Cr=(439*red-368*green-71*b1ue)/1000+128;

Cb=(-148*red-291*green+439*blue)/1000+128;式中的 red、green、blue分别为所述样板色的红、绿、蓝分量;

步骤3).以k为变量自0至3,以kk为变量自0至2,以j为变量自radius 至0,以i为变量自0至1450,遍历地进行如下计算:

fai=i*alpha;

x=x0+j*sin((5.0/4.0)*fai)*cos(fai)+k;

y=y0+j*sin((5.0/4.0)*fai)*sin(fai)+kk;

randY=Y+lumen/(1+rand()%10);

步骤4).以(x,y)为模拟礼花的轨迹点用randY,Cr,Cb对它们 着色:

蓝色输出=(1.164*(randY-16)+2.017*(Cb-128));

绿色输出=(1.164*(randY-16)-0.813*(Cr-128)-0.392*(Cb -128));

红色输出=(1.164*(randY-16)+1.596*(Cr-128));

照度lumen的取值范围为-5至5。

在步骤1中,在已经形成的模拟礼花图像中再生成新的模拟礼花图像;已 经形成的模拟礼花图像和新的模拟礼花图像记为第一模拟图像和第二模拟礼 花图像;

在步骤2中,将第一模拟图像和第二模拟礼花图像叠加到原有的夜景图像 中,形成具有礼花效果的手机背景图像;

生成第二模拟礼花图像指以随机数改变模拟光迹的起点、长度、斜率、颜 色,生成多条向上的直线光迹(以模拟焰火从地面射向空中的光迹,形象地将该 光迹命名为“火流星”);

其步骤为:

步骤1).计算alpha=3.1416/180;

步骤2).计算用户选定的样板色(colorSample)对应的Y,Cr,Cb值:

Y=(257*red+504*green+98*blue)/1000+16;

Cr=(439*red-368*green-71*blue)/1000+128;

Cb=(-148*red-291*green+439*blue)/1000+128;

步骤3).对每一条直线光迹遍历地进行如下计算:

Step3a:

randY=Y-(Y/4)+rand(Y/4);

randCr=Cr-(Cr/4)+rand(Cr/4);

randCb=Cb-(Cb/4)+rand(Cb/4);

x0=ingW*3/5-rand(imgW*2/5);

y0=ingH/2-rand(imgH/2);

fromArc=90+rand(180);

randLength=Radius*5+rand(Radius2/3);

randY,randCr,randCb分别为由Y,Cr,Cb产生的随机颜色参数, imgW、imgH分别为原有的夜景图像的宽度和高度,(x0,y0)为随机的直 线光迹的初始位置,fromArc为随机的直线光迹的上射角度,randLength 为随机的直线光迹的长度;

Step3b.以ii为变量自0至5,以j为变量自0至randLength,获 得直线光迹的上各点的座标:

x=x0+cos((fromArc+ii)×alpha)×j;

y=y0+sin((fromArc+ii)×alpha)×j;

Step3c.对于不同的ii参数,随机计算用于着色的nowY取代前面的 randY,以实现同一直线光迹在不同段有不同颜色。

nowY=randY-(j-Radius)/3;

Step3d.对各座标点(x,y)着色

蓝色输出值=(1.164*(nowY-16)+2.017*(randCb-128));

绿色输出值=(1.164*(nowY-16)-0.813*(randCr-128)-0.392* (randCb-128));

红色输出值=(1.164*(nowY-16)+1.596*(randCr-128))。

为了针对手机这一特殊的平台实现贴合动漫作品主题的DIY图像操作,在 设计上采用了以下一系列措施,特别是减少应用程序的内存需求:

A.应用程序越简单越好。我们尽可能将每个组件制作成Midlet,将所用 到的多个Midlet封装在一个Midlet包中,这使手机的程序管理器可以更节约 地管理Midlet和Midlet所使用的资源。

B.应用程序越小越好。删除应用程序中暂时用不上的组件,尽量减少不 必要的信息,以减少整个程序的体积。当在无线网上下载应用程序时,较小的 应用程序将大大缩短下载时间,并能与设备上其他应用程序兼容(而不是排他) 地运行。

C.尽量减少应用程序总内存需求。主要措施有:

①少使用对象类型,换用标量类型(scalar type)。因为标量类型比对象 类型占用更少的内存;

②尽量少声明对象。因为当声明一个对象时,系统要在运行堆上分配空 间,所以应该在应用程序即将使用该对象时再分配它,而不是程序启动时全部 进行分配。而且,一旦程序不再需要该对象,就将对该对象的引用均赋值为 null。

③按精度需要使用数据类型。只要有可能就应该用boolean,byte,short 等数据类型代替int。这种细节对台式机程序影响甚微,但对手机将会带产生 积少成多的影响。

④尽量重用。让多个引用在程序生存周期中的不同时间使用同一个对象。 例如重用某些大型数组、重用可利用已分配的运行时存储器,使用“惰性”实 例化。虽然这不符合软件工程原则,但却适合手机这种能力很弱的计算设备的 现实情况。

⑤避免在循环内创建对象。

⑥经常检查存储器使用情况。相关的方法有:freeMemory和 totalMemory。自行处理OutMemoryError错误。应当保证应用程序在内存溢出 时,有一个预定的退出例程对此进行管理,而不留给操作系统。

⑦及时释放资源。对文件、网络连接等等资源,当不再需要使用时,切 莫占着不放。应当自己执行必要的清除操作,而不要依靠垃圾收集器或宿主环 境。

⑧多使用局部变量。在台式机应用中,开发人员习惯设定较多的类数据 成员,而较少使用局部变量。但类数据成员实际上是类内的“全局变量”,是 需要频繁的数据调度、堆栈操作支持,实际上是消耗CPU计算来支持的。通过 局部变量赋值,消除访问类的数据成员的额外步骤,可以减少应用程序的CPU 处理量。这样虽然失去了将数据封装在类中所带来的好处,但是,对于在手机 这种微小型计算设备上运行、需要大量数据的应用程序来说,其处理速度是需 要首先考虑的。

有益效果:

本发明的基于礼花效果模拟的手机背景图像创作方法,采用自创的S1线、 S2线模拟礼花,再结合传统的放射线和直线,并引入了随机函数,能很好地模 拟礼花的种种效果,从而构造出炫美纷呈的夜空景象。

另外,采用本发明的基于礼花效果模拟的手机背景图像创作方法,能灵活 地惟妙惟肖地构造出绚丽多彩的模拟礼花效果,给人以赏心悦目的视觉体验,而 且让手机使用者能美化手机上的夜景图片,给用户进行DIY图像创造性提供平 台,从而扩展了手机的图像处理功能。

本发明使用简单实用的数字图像处理算法,注意减少数据量和提高CPU运 行效率,使受制约于手机屏幕尺寸和手机计算能力的手机动漫作品能够以低廉的 创作成本和快速的运行效果,满足用户良好的视觉观感。特别要指出:本发明目 的之一要是在手机这种软硬件资源远远弱于计算机的平台上实现DIY图像操作, 所以在设计上采取上述一系列针对性措施是完全必要的。

附图说明

图1不同轨迹模板效果示例【图a为模板S轨迹图,图b为层次数为2 的S1模板轨迹图,图c为S2模板轨迹图】

图2本发明的创作效果图(图a和b为原图片,图c-i为在原图片中叠 加模拟礼花图像后的效果图)

图3本发明的流程图

具体实施方式

以下将结合附图和具体实施例对本发明做进一步详细说明:

本专利核心算法的基础是轨迹模板设计,分别由下列定义1和定义2给出:

定义1.在二维xoy平面下,ox为横轴,oy为纵轴;平面中任意一点M 可表示为M(x,y),其中x为该点的横座标,y为该点的纵座标。进而,可将x, y表示成:

x=x0+dx    (1)

y=y0+dy    (2)

其中x,y是始于x0,y0的M点在某一非零时刻后移动到达的位置;dx,dy 分别表示x,y方向的增量。

定义2.记一种轨迹模板为S,它用以制定某一点M在在二维xoy平面下 复杂的运动轨迹,形成某种(规则或不规则)的曲线。轨迹模板S由Sx和Sy 两个分支组成,它们分别制定M点在横轴与纵轴方向由M0点移动到当前位置 的轨迹,从而有:

其中ρ为M点与M0点的距离,即为直线与ox 轴逆时针夹角;工程中,可以设定的起始和终止值以限定M点轨迹的运行范围, 分别记作和

不难想象,当Sx和Sx分别采用正弦和余弦函数(Sin和Cos),ρ为某一 非负固定值,和时,其轨迹是第4象限缺失的四分之三个 圆。参见图1之(a)。

本专利中我们设计了模拟“风摆柳枝”的曲线样板参见图1之(b),和模拟“杨絮飞舞”的曲线样板参见图1之(c)。

其中S1的两个分支为:

S2的两个分支为:

实施实例

一、步骤一.制作可选的非规则形状模板;

柳叶是一种非规则的宽窄不匀、分枝不同的植物叶瓣。

为模拟随风飘舞的柳叶,采用3个13行30列的Mask矩阵,分别 模拟单枝柳叶、双枝柳叶和三枝柳叶的基本形状。【这是一种拟形的二值 矩阵,即柳叶对应的点位取值为1,空白为0】

在不同的随机函数作用下,柳叶的主轴可以旋转,大小可以缩放, 当将它们连接在由轨迹模板S1所形成的,不同长度、不同角度的柳枝上 后,可以呈现一种婀娜多姿、随风飘舞的形态。

二、步骤二.在数字图像夜景上点缀彩色礼花,包含如下具体步骤:

步骤1.设定半径、照度、样板色等参数,和礼花中心点。

1.半径(radius):可选的礼花爆炸后的大小。可选范围为10~30。

2.照度(lumen):影响礼花的观感。可选范围为-5~5。

3.样板色(colorSample):用户可以现场所见即所得地选择样板色,大 致决定礼花的基本色彩。

4.礼花中心(centerPoint):礼花的中心点位置x0,y0

围绕本项申请,我们设计了“风摆柳枝”、“杨絮飞舞”、“火流星”、“七色 光球”、“多彩礼花”、“红梅怒放”、“漫天花雨”、“火花绽开”和“花团锦簇” 等九款形状各异的礼花,用以点缀美丽的夜空。为避免冗长繁复的叙述,在本 申请中将前三款礼花作为实施实例予以展开。

涉及不同的三种算法。其中:

算法1.实现“风摆柳枝”状礼花,参见图2之(d)、(e)

算法设计为:1.建立放射状直线和连接在其尾端由S1模板制作的曲线(简 称S1线),模拟出随风飘荡的“柳枝”;2.通过随机选取的形状模板,制作出单 叶、双叶或三叶的柳叶,连接在S1线尾端;3.根据用户选定的样板色 (colorSample)对它们着色。

步骤(1).根据用户选定的样板色(colorSample)计算出它们相应的红绿 蓝(RGB)颜色值;

步骤(2).引入随机函数建立起点、长度、角度均不相同的放射状直线;

步骤(3).在放射线尾端建立起S1线;

A.在S1线制作中引入随机层次数(floors),层次数=2+随机 数。【随机数选一个0~2这样一个很小的范围,使线条的层次数为2~4层, 以显得有变化,而不是简单划一的2层】

B、通过如下过程得到不同层次数的S1线轨迹。

Step1:计算:alpha=3.1416/180

Step2:以j为变量自0至层次数,以k为变量自0至1,以kk为变 量自0至9,以i为变量自50至80,遍历地进行如下计算:

fai=i*alpha;

t=sin(fai)/cos(2*fai);

tt=(1-t*t)/(1+t*t);

b=radius*tt*(j/floors);

x=x0+b+k;

y=y0-(t*b)+kk;

其中x,y是始于x0,y0的M点在某一非零时刻后移动到达的位置;dx,dy 分别表示x,y方向的增量。

fai=i*alpha中的fai就是公式中的

从上述计算公式可见,层次数用于柳枝的分叉数;k和kk用于柳枝的粗 细,i控制着S1模板的运行范围。

Step3:对S1线的轨迹点x,y用红绿蓝(RGB)颜色值着色;

步骤(4).在每一S1线的尾端,通过随机数选取一种柳叶模板(单枝、双 枝或三枝),制作柳叶,并为之着色。

算法2.实现“杨絮飞舞”状礼花,参见图2之(f)。

算法设计为:以轨迹模板S2为基础,通过改变公式(10)中的照度(lumen, 其取值范围为-5至5),得到“杨絮飞舞”状礼花的不同效果(图2之(f)中 左图取lumen=-2,而右图取lumen=2)。

步骤(1).计算alpha=3.1416/180

步骤(2).根据用户选定的样板色(colorSample)计算出它们相应的 Y,Cr,Cb值;

Y=(257*red+504*green+98*blue)/1000+16;

Cr=(439*red-368*green-71*blue)/1000+128;

Cb=(-148*red-291*green+439*blue)/1000+128;(9)

步骤(3).以k为变量自0至3,以kk为变量自0至2,以j为变量自radius 至0,以i为变量自0至1450,遍历地进行如下计算:

fai=i*alpha;

x=x0+j*sin((5.0/4.0)*fai)*cos(fai)+k;

y=y0+j*sin((5.0/4.0)*fai)*sin(fai)+kk;

randY=Y+lumen/(1+rand()%10)    (10)

rand()%10是取随机数的范围为0~9。

从上述计算公式可见,k和kk用于杨絮的大小,i控制着S2模板的运行 范围,受随机数影响的randY值将改变杨絮的明暗。

步骤(4).以x,Y为“杨絮飞舞”状礼花的轨迹点用randY,Cr,Cb对 它们着色。

蓝色输出=(1.164*(randY-16)+2.017*(Cb-128));

绿色输出=(1.164*(randY-16)-0.813*(Cr-128)-0.392*(Cb -128));

红色输出=(1.164*(randY-16)+1.596*(Cr-128));

算法3.实现“火流星”,参见图2之(g)

算法设计为:以随机数改变火流星的起点、长度、斜率、颜色,实现总体 向上颜色各异的火流星。

步骤(1).计算alpha=3.1416/180;

步骤(2).根据用户选定的样板色(colorSample)计算出它们相应的 Y,Cr,Cb值;

Y=(257*red+504*green+98*blue)/1000+16;

Cr=(439*red-368*green-71*blue)/1000+128;

Cb=(-148*red-291*green+439*blue)/1000+128;

步骤(3).对每一支火流星遍历地进行如下计算:

Step3a;

randY=Y-(Y/4)+rand(Y/4)

randCr=Cr-(Cr/4)+rand(Cr/4)

randCb=Cb-(Cb/4)+rand(Cb/4)

x0=ingW*3/5-rand(imgW*2/5)

y0=ingH/2-rand(imgH/2)

fromArc=90+rand(180)

randLength=Radius*5+rand(Radius2/3)

从上述计算公式可见,randY,randCr,randCb分别为由Y,Cr,Cb 产生的随机颜色参数,imgW,imgH为图像的宽度、高度,x0,y0为随机的 火流星初始位置,fromArc为随机的火流星上射角度,randLength为随机 的火流星长度。

Step3b.以ii为变量自0至5,以j为变量自0至randLength,获 得火流星各点的座标

x=x0+cos((fromArc+ii)×alpha)×j

y=y0+sin((fromArc+ii)×alpha)×j

Step3c.对于不同的ii参数,随机计算用于着色的nowY取代前面的 randY,以实现同一火流星在不同段有不同颜色。

nowY=randY-(j-Radius)/3;

Step3d.对各座标点(x,y)着色

蓝色=(1.164*(nowY-16)+2.017*(randCb-128));

绿色=(1.164*(nowY-16)-0.813*(randCr-128)-0.392*(randCb -128));

红色=(1.164*(nowY-16)+1.596*(randCr-128))。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号