一种图片自动上色方法以及系统与流程

文档序号:11408896阅读:467来源:国知局
一种图片自动上色方法以及系统与流程

本发明涉及图像处理领域,尤其涉及一种应用于网站的图片自动上色方法以及系统。



背景技术:

网站上经常需要向用户展示一些图片,但这些图片全部是黑白的,如果直接放到网页上,将会对网站造成不协调的视觉问题。为了满足网站美观需求,增加网站对用户的吸引力,需要把黑白图片按照网站的设计风格上色变成彩色背景白色前景图片。

目前的通常做法是使用photoshop等图片处理软件先把黑白图片上色后再上传到网站进行展示。此种方案的主要缺点是:使用photoshop进行图片上色需要专业的美工专业人员,每一张图片都需要美工手工上色,人力成本比较大,处理速度比较慢,而且不能够在线实时对图片进行上色。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种图片自动上色方法以及系统。

本发明解决其技术问题所采用的技术方案是:构造一种图片自动上色方法,用于对网站中的图片进行上色,包括:

s100、将待上色图像文件原始的二进制数据转化为第一rgb数据;

s200、将第一rgb数据转化为第一hsb数据,将待上色的图像文件所需要上色的底色的rgb值转化为hsb值;

s300、基于第一hsb数据和底色的hsb值计算得到第二hsb数据;

s400、将第二hsb数据转化为第二rgb数据;

s500、将第二rgb数据转化得到待上色图像文件上色后的二进制数据。

在本发明所述的图片自动上色方法中,二进制数据为一维数组;rgb数据、hsb数据分别为二维数组,二维数组中的每一个值表示一个像素的rgb值或者hsb值;二进制数据与rgb数据之间的转化、rgb数据与hsb数据之间的转化采用jdk中提供的函数执行。

在本发明所述的图片自动上色方法中,步骤s300中所述的基于第一hsb数据和底色的hsb值计算得到第二hsb数据包括:

针对第一hsb数据中的每个像素的hsb值中的色相值,分别基于公式h2=h0计算得到作为第二hsb数据中的相应像素的hsb值中的色相值;

针对第一hsb数据中的每个像素的hsb值中的饱和度值,分别基于公式s2=s0*b1计算得到作为第二hsb数据中的相应像素的hsb值中的饱和度值;

针对第一hsb数据中的每个像素的hsb值中的亮度值,分别基于公式b2=b0+(1-b1)*(1-b0)计算得到作为第二hsb数据中的相应像素的hsb值中的亮度值;

其中,h0、s0、b0分别表示底色的色相值、饱和度值、亮度值,h1、b1分别表示第一hsb数据中的一个像素的hsb值中的色相值、亮度值,h2、s2、b2分别表示第二hsb数据中的一个像素的色相值、饱和度值、亮度值。

在本发明所述的图片自动上色方法中,

所述步骤s100之前包括:接收输入的待上色图像文件原始的二进制数据以及底色的rgb值。

所述步骤s500之后包括:将上色后的二进制数据输出。

基于同一发明构思,本发明还公开了一种图片自动上色系统,用于对网站中的图片进行上色,包括:

二进制-rgb转化单元,用于将待上色图像文件原始的二进制数据转化为第一rgb数据;

rgb-hsb转化单元,用于将第一rgb数据转化为第一hsb数据,将待上色的图像文件所需要上色的底色的rgb值转化为hsb值;

上色处理单元,用于基于第一hsb数据和底色的hsb值计算得到第二hsb数据;

hsb-rgb转化单元,用于将第二hsb数据转化为第二rgb数据;

rgb-二进制转化单元,用于将第二rgb数据转化得到待上色图像文件上色后的二进制数据。

在本发明所述的图片自动上色系统中,二进制数据为一维数组;rgb数据、hsb数据分别为二维数组,二维数组中的每一个值表示一个像素的rgb值或者hsb值;二进制数据与rgb数据之间的转化、rgb数据与hsb数据之间的转化采用jdk中提供的函数执行。

在本发明所述的图片自动上色系统中,所述上色处理单元包括:

色相值计算单元,针对第一hsb数据中的每个像素的hsb值中的色相值,分别基于公式h2=h0计算得到作为第二hsb数据中的相应像素的hsb值中的色相值;

饱和度值计算单元,针对第一hsb数据中的每个像素的hsb值中的饱和度值,分别基于公式s2=s0*b1计算得到作为第二hsb数据中的相应像素的hsb值中的饱和度值;

亮度值计算单元,针对第一hsb数据中的每个像素的hsb值中的亮度值,分别基于公式b2=b0+(1-b1)*(1-b0)计算得到作为第二hsb数据中的相应像素的hsb值中的亮度值;

其中,h0、s0、b0分别表示底色的色相值、饱和度值、亮度值,h1、b1分别表示第一hsb数据中的一个像素的hsb值中的色相值、亮度值,h2、s2、b2分别表示第二hsb数据中的一个像素的色相值、饱和度值、亮度值。

在本发明所述的图片自动上色系统中,系统还包括:

参数接收单元,用于接收输入的待上色图像文件原始的二进制数据以及底色的rgb值。

结果输出单元,用于将上色后的二进制数据输出。

实施本发明的图片自动上色方法以及系统,具有以下有益效果:

1)能够减少美工人员投入,有效节省网站建设成本;

2)可以实时收录新图片,并实时在线进行图片上色;

3)转换质量一致性高,避免由于人工疏忽而导致错误图片;

4)能够与java语言开发的网站无缝结合,不需要增加任何其他组件。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图:

图1是本发明的图片自动上色方法的流程图;

图2是本发明的实施例一的流程图;

图3是本发明的实施例二的模块图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的典型实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

本说明书中使用的“第一”、“第二”等包含序数的术语可用于说明各种构成要素,但是这些构成要素不受这些术语的限定。使用这些术语的目的仅在于将一个构成要素区别于其他构成要素。例如,在不脱离本发明的权利范围的前提下,第一构成要素可被命名为第二构成要素,类似地,第二构成要素也可以被命名为第一构成要素。

参考图1,本发明总的思路是:s100、将待上色图像文件原始的二进制数据转化为第一rgb数据;s200、将第一rgb数据转化为第一hsb数据,将待上色的图像文件所需要上色的底色的rgb值转化为hsb值;s300、基于第一hsb数据和底色的hsb值计算得到第二hsb数据;s400、将第二hsb数据转化为第二rgb数据;s500、将第二rgb数据转化得到待上色图像文件上色后的二进制数据。

为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

实施例一

参考图2,是本发明的实施例一的流程图。考虑到现在的网站有超过20%是使用java语言开发,因此如果能够直接使用java语言对图片进行处理,将会极大程度地简化网站图片的处理步骤,可以更方便地将此功能整合到其他的功能中去。因此,本实施例中采用纯java语言实现。

本实施例中,二进制数据与rgb数据之间的转化、rgb数据与hsb数据之间的转化采用jdk中提供的函数执行。二进制数据为一维数组;rgb数据、hsb数据分别为二维数组,二维数组中的每一个值表示一个像素的rgb值或者hsb值,例如a[1][1]表示图片中第一行第一列的像素的rgb值。

具体的,本实施例的方法包括:

s0、接收输入的待上色图像文件原始的二进制数组以及底色的rgb值;

优选的,可以将整个方法以java语言的一个函数实现。例如,该步骤可以通过调用函数实现,待上色图像文件原始的二进制数组、底色的rgb值通过该函数的两个参数传递。

s1、将待上色图像文件原始的二进制数组转化为第一rgb数组;此处的转化可以通过jdk提供的函数imageio.read()函数实现。

s2、将第一rgb数组转化为第一hsb数组,将待上色的图像文件所需要上色的底色的rgb值转化为hsb值;此处的转化可以通过jdk提供的color.rgbtohsb()函数实现。

s3、基于第一hsb数组和底色的hsb值计算得到第二hsb数组,该步骤具体包括:

针对第一hsb数据中的每个像素的hsb值中的色相值,分别基于公式h2=h0计算得到作为第二hsb数据中的相应像素的hsb值中的色相值;

针对第一hsb数据中的每个像素的hsb值中的饱和度值,分别基于公式s2=s0*b1计算得到作为第二hsb数据中的相应像素的hsb值中的饱和度值;

针对第一hsb数据中的每个像素的hsb值中的亮度值,分别基于公式b2=b0+(1-b1)*(1-b0)计算得到作为第二hsb数据中的相应像素的hsb值中的亮度值;

其中,h0、s0、b0分别表示底色的色相值、饱和度值、亮度值,h1、b1分别表示第一hsb数据中的一个像素的hsb值中的色相值、亮度值,h2、s2、b2分别表示第二hsb数据中的一个像素的色相值、饱和度值、亮度值。

可见本发明对图片的原有底色没有限制,不仅适用于黑白图像的上色,还适用于其他已有底色的图片的重新上色。

s4、将第二hsb数组转化为第二rgb数组;此处的转化可以通过jdk提供的color.hsbtorgb()函数实现。

s5、将第二rgb数组转化得到待上色图像文件上色后的二进制数组。此处的转化可以通过jdk提供的函数imageio.write()函数实现。

s6、将上色后的二进制数组输出。

可见,本实施例能够减少美工人员投入,有效节省网站建设成本;可以实时收录新图片,并实时在线进行图片上色;转换质量一致性高,避免由于人工疏忽而导致错误图片。能够与java语言开发的网站无缝结合,不需要增加任何其他组件。

实施例二

基于同一发明构思,本发明还公开了一种图片自动上色系统,用于对网站中的图片进行上色,参考图3,是本发明的实施例二的模块图,本实施例的系统包括:

参数接收单元100,用于接收输入的待上色图像文件原始的二进制数据以及底色的rgb值。

二进制-rgb转化单元200,用于将待上色图像文件原始的二进制数据转化为第一rgb数据;

rgb-hsb转化单元300,用于将第一rgb数据转化为第一hsb数据,将待上色的图像文件所需要上色的底色的rgb值转化为hsb值;

上色处理单元400,用于基于第一hsb数据和底色的hsb值计算得到第二hsb数据;

hsb-rgb转化单元500,用于将第二hsb数据转化为第二rgb数据;

rgb-二进制转化单元600,用于将第二rgb数据转化得到待上色图像文件上色后的二进制数据。

结果输出单元700,用于将上色后的二进制数据输出。

其中,二进制数据为一维数组;rgb数据、hsb数据分别为二维数组,二维数组中的每一个值表示一个像素的rgb值或者hsb值,例如a[1][1]表示图片中第一行第一列的像素的rgb值;二进制数据与rgb数据之间的转化、rgb数据与hsb数据之间的转化采用jdk中提供的函数执行。

具体的,所述上色处理单元400包括:

色相值计算单元410,针对第一hsb数据中的每个像素的hsb值中的色相值,分别基于公式h2=h0计算得到作为第二hsb数据中的相应像素的hsb值中的色相值;

饱和度值计算单元420,针对第一hsb数据中的每个像素的hsb值中的饱和度值,分别基于公式s2=s0*b1计算得到作为第二hsb数据中的相应像素的hsb值中的饱和度值;

亮度值计算单元430,针对第一hsb数据中的每个像素的hsb值中的亮度值,分别基于公式b2=b0+(1-b1)*(1-b0)计算得到作为第二hsb数据中的相应像素的hsb值中的亮度值;

其中,h0、s0、b0分别表示底色的色相值、饱和度值、亮度值,h1、b1分别表示第一hsb数据中的一个像素的hsb值中的色相值、亮度值,h2、s2、b2分别表示第二hsb数据中的一个像素的色相值、饱和度值、亮度值。

综上所述,实施本发明的图片自动上色方法以及系统,具有以下有益效果:1)能够减少美工人员投入,有效节省网站建设成本;2)可以实时收录新图片,并实时在线进行图片上色;3)转换质量一致性高,避免由于人工疏忽而导致错误图片;4)能够与java语言开发的网站无缝结合,不需要增加任何其他组件。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1