首页> 中国专利> 一种基于边界跟踪和伪彩着色的手机动漫人物创作方法

一种基于边界跟踪和伪彩着色的手机动漫人物创作方法

摘要

本发明公开了一种基于边界跟踪和伪彩着色的手机动漫人物创作方法,包括以下步骤:1)对原图像实施自动边界跟踪并在边界处做出标记;2)对部分边界进行手工的辅助划定;3)将边界内区域从原图中剥离出来;4)将剥离出来的图像粘贴到目标图像中;5)伪彩着色。本发明使用简单实用的数字图像处理算法,注意减少数据量和提高CPU运行效率,使受制约于手机屏幕尺寸和手机计算能力的手机动漫作品具有低廉的创作成本和快速的运行效果。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-08-22

    授权

    授权

  • 2011-06-15

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

    实质审查的生效

  • 2011-04-27

    公开

    公开

说明书

技术领域

本发明属于数字图像处理技术领域,特别涉及一种基于边界跟踪和伪彩着色的手机动漫人物创作方法。

技术背景

我国手机动漫产品目前主要包括动漫彩信、四格手机漫画、动画短片和回合制手机游戏等。它们兼有文化产品和信息产品的双重特性:作为文化产品无疑需要遵循社会主义文化产品的普遍原则,但又不宜直白说教,而要寓教于乐;而作为信息产品则希望尽可能地引入先进的计算机技术,以期在提高产品质量的同时提高其生产效率。

这类产品还具有不同于影视动漫音像作品的三大显著特点:首先,它是一种“碎片式”的娱乐产品,它不需要大段连片的时间,这恰好满足了现代都市人由于生活节奏快、工作压力大,希望丰富文化生活但没有连续的闲暇时间的现实需求。其次,这类产品的受众主要包括学生、时尚青年、白领等三十五岁以下人群,他们追求新鲜、刺激,乐于亲自动手,通过易学易用的工具改变自身形象,更乐于善意地搞怪他人,含盖本专利的动漫服务器,将能使他们获得亲自创作的愉悦。第三,手机视频等产品对手机的处理器、内存、色彩分辨、屏幕大小、电池电量等硬件环境存在较高要求,而目前市场上能流畅支持视频的手机并不多,而且价格偏高。固然,随着3G的推广和手机的技术升级,终端的问题必将会解决,但是如果现在就有短小精悍、生动活泼的动漫彩信面世,在降低了对手机终端的性能要求的同时,将会争得更多手机用户的垂青。

手机动画或手机彩信不同于常规意义下的“正派”影视作品;这类手机作品是以切入日常生活的方式流转、播映的,非常需要借助轻喜剧元素来“开窗透气”,借真真假假的人物造型来调剂气氛,这才符合“碎片式娱乐”的心情。基于上述考虑我们提出本发明,即以边界跟踪和伪彩着色技术为基础,以本人(或熟人)的照片为素材,用计算机自动、低廉、高效地制作,也可以由手机用户在自己的手机上进行DIY操作,创造出一批短小精悍、生动活泼的数字动漫新作,以实现本人与心目中的偶像相伴,在亲友间流传这一令人羡慕的合影,或是披挂上侠客、神仙的服饰,穿梭于无线的时空之中。

当然,我们无意排斥完全真实的数字彩色画面作为手机通讯的重要资讯,但是我们认为不同年龄、不同层次、处于不同时间段的手机用户,也需要亦庄亦谐、不同风格的电子资讯,给手机用户自身带来更自由、阳光、快乐的享受。为了满足人民大众日益丰富的需求,有必要设计一种手机动漫人物创作方法。我们尚未发现有与本发明相似的、在手机上运行的、基于边界跟踪和伪彩着色的手机动漫人物创作的报道。

发明内容

本发明所要解决的技术问题是提供了一种基于边界跟踪和伪彩着色的手机动漫人物创作方法,该方法数据量小,易于实施,适于在手机上运行。

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

一种基于边界跟踪和伪彩着色的手机动漫人物创作方法,包括以下步骤:

步骤一:对原图像实施自动边界跟踪并在边界处做出标记;

步骤二:将边界内区域从原图中剥离出来;

步骤三:将剥离出来的图像粘贴到目标图像中;

步骤四:伪彩着色,手机动漫人物创作完成。

步骤一具体包括以下步骤:

步骤A:建立三个临时文件:

建立一个Tmp文件,存放原图像各像素点的灰度值g(x,y);灰度值g(x,y)对应的具体的值为:I=0.3B+0.59G+0.11R,其中R、G、B为原图像像点的像素的三个分量;

建立一个Tag文件,存放原图像各像素点的标记t(x,y),以备后续基于标记的边界追踪,并预先将所有像素点均打上标记为255,即标记为白点;

建立一个灰度直方图数组A,该灰度直方图数组A的大小为256,用于记录不同灰度值分别所拥有的像素点数;

步骤B、根据灰度直方图数组A计算最佳灰度门限值Th

统计直方图中像素的个数,记作Sum,即

Sum=Σi=0255Ai;

其中数组元素Ai表示灰度为i时的图像点数;

在灰度直方图数组中依次选取中间值:t=1,t=2,......,t=254;

对应每一个中间值t,计算0~t灰度段的均值和产生的概率以及t+1~255灰度段的均值和概率;

其中0~t灰度段的均值记作Mt0,概率记作Wt0,则Mt0和Wt0分别为:

Mt0=Σi=0tiAiΣi=0tAi,Wt0=Σi=0tAiSum;

而t+1~255灰度段的均值记作Mt1,概率记作Wt1,则Mt1和Wt1分别为:

Mt1=Σi=t+1255iAiΣi=t+1255Ai,Wt1=Σi=t+1255AiSum;

比较两灰度段的方差,当两灰度段的方差达到最大时,这时的t值为根据灰度直方图所计算获得的最佳灰度门限值Th,即先计算t为1~254间任意值时的方差

t=Wt0Wt1(Mt1-Mt0)2;

再求取方差为最大时的t值,即

Th=t1whent=max(t),t=1,2,...254;

用Tmp文件遍历全图,当图像中某点的灰度值小于最佳灰度门限值Th时,即g(x,y)<Th时,在Tag文件中将相应点(x,y)标记为0,即设相应的t(x,y)=0,表示(x,y)对应的点为黑点;

再次遍历全图,当发现某一黑点的周围存在至少一个白点时,说明该黑点位于黑白相交的轮廓上,则将该点在原图的拷贝上标记为边界点;

最后,将全部边界点的连线为作为边界线,边界线用于后续的图像剥离。

步骤二的具体步骤为:用已经划定边界线的原图的拷贝上进行剥离操作,第一阶段为测定封闭区域,包括如下步骤:

步骤1、自上而下逐行扫描,如遇到某行有边界点,记录该行为顶部;转步骤2;

步骤2:向下逐行扫描,如有边界点转步骤2a,否则转步骤3;

步骤2a:自左向右扫描,找出该行左边界点,存放于左边界点数组中;

步骤2b:找出该行右边界点,存放于右边界点数组中;转步骤3;

步骤3:记录该行为底部,因为该行中已经没有边界点了;结束;

第二阶段为获取封闭区域,具体步骤为:

将顶部以上各行清空为白色;将左右边界点以外的区域清为白色;将底部以下各行清空为白色;

以顶部、底部、最左边界点和最右边界点作为上下左右边界移动图像,形成仅包含封闭区域的图像。

步骤三具体包括以下步骤:

步骤1:在目标图像中人工圈定上下左右四界;

步骤2:将所述的仅包含封闭区域的图像缩放到和目标图像中圈定的上下左右四界相同的尺寸;

步骤3:将所述的仅包含封闭区域的图像覆盖目标图像相应区域,即

h(x,y)=nulla(x,y)=null,b(x,y)=nulla(x,y)a(x,y)null,b(x,y)=nullb(x,y)a(x,y)=null,b(x,y)nulla(x,y)a(x,y)null,b(x,y)null;

其含义为当a(x,y)非空时,b(x,y)被a(x,y)覆盖,其中a(x,y)为所述的仅包含封闭区域的图像中(x,y)处的像素值,b(x,y)为目标图像中(x,y)处的像素值。

步骤四具体包括以下步骤:

步骤1:由用户在图像中选择计划将其扩展成为一片连通区域的某一点作为原始种子点;原始种子是一个;

步骤2:建立一个堆栈,将步骤1所选的原始种子压入堆栈;

步骤3:从堆栈中弹出一个种子,依次检查种子周围8个像素点的灰度值,如其中某点与种子的灰度差小于门限值T,则将该点作为新种子点予以标记并压入堆栈,,转步骤4;反之说明无新种子点,也转步骤4;;

步骤4:检测堆栈是否为空,如堆栈非空则从堆栈中弹出一个点,转步骤3;如堆栈为空则转步骤5;

步骤5:对所有已做出标记的新种子点着色。

在步骤1和步骤2之间还设有一个手工辅助划定边界的步骤;具体方法为:对某些边界不分明的图像,或企图剥离的形体并不在图像的边界上的情况,采用手动方式用直线或曲线在原图的拷贝上划定边界。

因为尚无人想到可以在手机上以本人(或熟人)的照片为素材、进行DIY操作来创作手机动漫人物;特别是考虑到手机相对于台式计算机远为薄弱(仅相当于本世纪初期的台式机)的计算能力,也往往使人却步。为了针对手机这一特殊的平台实现DIY图像操作,在设计上采用了以下一系列措施,特别是减少应用程序的内存需求:

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

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

C.尽量减少应用程序总内存需求。主要措施有:①少使用对象类型,换用标量类型(scalar type)。因为标量类型比对象类型占用更少的内存;②尽量少声明对象。因为当声明一个对象时,系统要在运行堆上分配空间,所以应该在应用程序即将使用该对象时再分配它,而不是程序启动时全部进行分配。而且,一旦程序不再需要该对象,就将对该对象的引用均赋值为null。③按精度需要使用数据类型。只要有可能就应该用boolean,byte,short等数据类型代替int。这种细节对台式机程序影响甚微,但对手机将会带产生积少成多的影响。④尽量重用。让多个引用在程序生存周期中的不同时间使用同一个对象。例如重用某些大型数组、重用可利用已分配的运行时存储器,使用“惰性”实例化。虽然这不符合软件工程原则,但却适合手机这种能力很弱的计算设备的现实情况。⑤避免在循环内创建对象。⑥经常检查存储器使用情况。相关的方法有:freeMemory和totalMemory。自行处理OutMemoryError错误。应当保证应用程序在内存溢出时,有一个预定的退出例程对此进行管理,而不留给操作系统。⑦及时释放资源。对文件、网络连接等等资源,当不再需要使用时,切莫占着不放。应当自己执行必要的清除操作,而不要依靠垃圾收集器或宿主环境。⑧多使用局部变量。在台式机应用中,开发人员习惯设定较多的类数据成员,而较少使用局部变量。但类数据成员实际上是类内的“全局变量”,是需要频繁的数据调度、堆栈操作支持,实际上是消耗CPU计算来支持的。通过局部变量赋值,消除访问类的数据成员的额外步骤,可以减少应用程序的CPU处理量。这样虽然失去了将数据封装在类中所带来的好处,但是,对于在手机这种微小型计算设备上运行、需要大量数据的应用程序来说,其处理速度是需要首先考虑的。

本发明的有益效果:

本发明使用简单实用的数字图像处理算法,注意减少数据量和提高CPU运行效率,使受制约于手机屏幕尺寸和手机计算能力的手机动漫作品能够以低廉的创作成本和快速的运行效果,为不同年龄、不同层次、处于不同时间段的手机用户,提供亦庄亦谐的、不同风格的电子资讯,给手机用户的生活带来更多姿色和欢乐。特别要指出:本发明目的之一要是在手机这种软硬件资源远远弱于计算机的平台上实现DIY图像操作,所以在设计上采取上述一系列针对性措施是完全必要的。

附图说明

图1为原图及经过本发明方法处理过的图像;【图1(a)和图1(b)分别为原图;图1(c)为对原图1(a)实施边界跟踪并在边界处做出标记后的图像;图1(d)为对部分边界进行手工的辅助划定;图1(e)为将边界内区域从原图中剥离出来的结果;图1(f)为将剥离出来的图像粘贴到目标图像;图1(g)为进行伪彩着色的结果】

图2本发明方法的流程图。

具体实施方式

以下将结合图和具体实施过程对本发明做进一步详细说明。

实施例1

一、对原图像A实施边界跟踪并在边界处做出标记(见图1(c)):

1、建立三个临时文件:

a、建立一个Tmp文件,存放原图像各像素点的灰度值g(x,y)。灰度值计算公式为:I=0.3B+0.59G+0.11R,其中R、G、B为原图像像点的像素的三个分量;

b、建立一个Tag文件,存放原图像各像素点的标记t(x,y),以实现基于标记(tag)的边界追踪,并预先将所有像素点均打上标记为255(“白”);

c、建立一个灰度直方图数组A(其大小为256),记录不同灰度值所拥有的像素点数;

2、根据灰度直方图数组A计算最佳灰度门限值Th

a、统计直方图中像素的个数,记作Sum,即

Sum=Σi=0255Ai---(1)

其中数组元素Ai的取值为:灰度为i时的图像点数

b、在灰度直方图数组中依次选取中间值:t=1,t=2,......,t=254;

c、依次计算0~t灰度段的均值和产生的概率以及t+1~255灰度段的均值和概率。

其中0~t灰度段的均值记作Mt0,概率记作Wt0,则Mt0和Wt0分别为:

Mt0=Σi=0tiAiΣi=0tAi,Wt0=Σi=0tAiSum---(2)

而t+1~255灰度段的均值记作Mt1,概率记作Wt1,则Mt1和Wt1分别为:

Mt1=Σi=t+1255iAiΣi=t+1255Ai,Wt1=Σi=t+1255AiSum---(3)

d、比较两灰度段的方差,当两灰度段的方差达到最大时,这时的t值为根据灰度直方图所计算获得的最佳灰度门限值Th。即先计算t为1~254间任意值时的方差

t=Wt0Wt1(M1-M0)2---(4)

再求取方差为最大时的t值,即

Th=t,whent=max(t),t=1,2,...254---(5)

3、用Tmp文件遍历全图,当图像中某点的灰度值小于最佳灰度门限值Th时(即g(x,y)<Th时,在Tag文件中将相应点(x,y)标记为0(“黑”),即设相应的t(x,y)=0。

4、再次遍历全图,当发现某一“黑”点的周围存在至少一个“白”点时(说明该“黑”点位于黑白相交的轮廓上),将该点在原图的拷贝上标记为“边界点”。

5、全部“边界点”的连线为边界线(用于后续的图像剥离)。

二、对部分边界进行手工的辅助划定(见图1(d))。

针对本发明所进行的实验表明:对某些边界不分明的图像,或企图剥离的形体并不在图像的边界上,则需要辅助的手工操作(用直线或曲线),在原图的拷贝上划定边界。前者例如在白色背景下拍摄的照片,在脸颊和背景处往往很难获得清晰的边界;后者例如穿着深色外套的人物脸谱,虽然有很好的边界,但出于创作需要不希望将项链包括进来,可能会要求将边界设在项链之上。【对于许多图像,可能用不着这一步,因此,这一步可以作为备选。】

三、将边界内区域从原图中剥离出来(见图1(e))。

用已经划定边界线的原图的拷贝上进行剥离操作,第一阶段为测定封闭区域,包括如下步骤:

步骤1、自上而下逐行扫描,如遇到某行有边界点,记录该行为顶部;转步骤2;

步骤2:向下逐行扫描,如有边界点转步骤2a,否则转步骤3;

步骤2a:自左向右扫描,找出该行左边界点,存放于左边界点数组中;

步骤2b:找出该行右边界点,存放于右边界点数组中;转步骤3;

步骤3:记录该行为底部,因为该行中已经没有边界点了。转步骤4;

步骤4:结束。

第二阶段为获取封闭区域,包括如下步骤:

步骤1:将顶部以上各行清空为白色;

步骤2:将左右边界点以外的区域清为白色;

步骤3:将底部以下各行清空为白色;

步骤4:以顶部、底部、最左边界点和最右边界点作为上下左右边界移动图像,形成仅包含封闭区域的图像(因为图像已经移除原图中上下左右边界外无用区域故较原图稍小。)

四、将剥离出来的图像粘贴到目标图像中(见图1(f))。

步骤1:在目标图像中人工圈定上下左右四界(例如选择脸部的外轮廓);

步骤2:将上述E图缩放到和目标图像上下左右四界相同的尺寸;

步骤3:将仅包含封闭区域的图像覆盖B图相应区域,即

h(x,y)=nulla(x,y)=null,b(x,y)=nulla(x,y)a(x,y)null,b(x,y)=nullb(x,y)a(x,y)=null,b(x,y)nulla(x,y)a(x,y)null,b(x,y)null---(4)

意为当a(x,y)非空时,b(x,y)被a(x,y)覆盖。

步骤2所采用的缩放算法为:设图像X轴方向的缩放比为kx,Y轴方向的缩放比为ky,缩放后输出图像(x,y)点的像素值g(x,y)对应于原图中座标为(u,v)的像素值f(u,v),即

g(x,y)=f(u,v)                                (5)

x=u×kxu=xkx

y=v×kyv=yky

在此我们采用了双线性插值法。从式(5)可见,通常u和v为带小数的数值,双线性插值法完成(5)式中(x,y)点到(u,v)的映射。f(u,v)的上下左右4角点示于图3。

若令a=u-[u],b=v-[v],其中[u]表示对u取整数,[v]表示对v取整数,则g(x,y)的取值由如下公式计算:

g(x,y)=f(u,v)=bt1+(1-b)t2                    (6)

其中,

t1=af([u]+1,[v]+1)+(1-a)f([u],[v]+1);

t2=af([u]+1,[v])+(1-a)f([u],[v])。

五、伪彩着色(见图1(g)),伪彩着色有点像舞台上的追光,是为了使图像有一种异样的新鲜感。例如菩萨出场时从舞台底部打出一片红光,使菩萨的脸部、衣服、…都罩上一片红光。

基于区域生长的伪彩着色过程为:

步骤1:由用户在图像中选择某一点作为原始种子点(通常,将原始种子选在打算要扩展连通成为一片区域的中间的某点);原始种子是一个。

步骤2:建立一个堆栈,将步骤1所选的原始种子压入堆栈;

步骤3:从堆栈中弹出一个种子,依次检查种子周围8个像素点的灰度值,如其中某点与种子的灰度差小于门限值T,则形成新种子点予以标记并压入堆栈,转步骤4;反之说明无新种子点,也转步骤4;所述的门限值T取值的范围为0~255(希望伪彩着色区域的大小和门限值成正比,由用户在程序中选定,一般地可选40~60);

步骤4:如堆栈非空则从堆栈中弹出一个点,转步骤3;如堆栈为空则转步骤5;

步骤5:对所有已做出标记的新种子点着色。所着颜色也由用户在程序中可选。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号