一种计算机油画的生成方法和系统
技术领域
本发明涉及图像处理技术,尤其涉及一种计算机油画的生成方法和系统。
背景技术
油画是图像风格化的一种, 现实中的油画的是一种强调所描绘景物的层次感和笔触纹理效果,具有极强表现力和丰富色彩变化的艺术表现形式。手工创作油画要求作者具有一定的美术功底和艺术创作能力,因此计算机模拟生成油画具有重要的应用和娱乐价值。但现在计算机油画的生成方法都过于复杂冗余,实现效率不够高。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述计算机油画的生成方法都过于复杂冗余,实现效率不够高的缺陷,提供一种计算机油画的生成方法,方法简单,且实现效率高。
本发明解决其技术问题所采用的技术方案是:构造一种计算机油画的生成方法,包括:
A.接收待处理的源图像,并判断所述源图像是彩色图还是灰度图,若是彩色图,则执行步骤B;若是灰度图,则执行步骤C;
B.将彩色图转换为灰度图;
C.在所述灰度图上以栅格方式取采样点,并对所述采样点做随机偏移;
D.基于所述采样点的灰度值,使用水平方向的边缘算子和垂直方向的边缘算子计算所述采样点处的梯度;
E.根据所计算的梯度计算笔划方向;
F.以所述采样点为中心取3*3邻域内像素为一个窗口,使用45°方向的边缘算子和135°方向的边缘算子计算所述窗口内的边缘强度;
G.根据所述边缘强度确定笔划半径;
H.将该采样点在所述源图像上对应处的像素值作为当前笔刷的像素值;
I.根据所述笔划方向、笔划半径和当前笔刷的像素值对采样点进行绘制。
在本发明所述的计算机油画的生成方法中,在所述步骤B中,根据下面的公式将彩色图转换为灰度图:
Y1 = 0.299*R + 0.587*G + 0.114*B
其中,Y1为灰度图的当前像素点的灰度值,R、G、B分别为彩色图的当前像素点的红、绿、蓝通道的颜色值。
在本发明所述的计算机油画的生成方法中,在所述步骤B中,根据下面的公式将彩色图转换为灰度图:
Y2= (29 * B + 150 * G+ 76 * R + 255) /256 ;或者 Y2= (29 * B + 150 * G+ 76 * R + 255) >>8
其中,Y2为灰度图的当前像素点的灰度值,R、G、B分别为彩色图的当前像素点的红、绿、蓝通道的颜色值,>>8表示右移8位。
在本发明所述的计算机油画的生成方法中,所述步骤C包括:
C1.将所述灰度图划分成多个栅格,且每个栅格包括7*7个像素点;
C2.取每个栅格的顶点作为采样点;
C3.在1~3的取值范围间产生一个随机值,所述采样点在X方向上的位置偏移量为所产生的随机值的三倍,所述采样点在Y方向上的位置偏移量为所产生的随机值;
C4.将所述采样点在X方向上的位置和在Y方向上的位置分别加上所述X方向上的位置偏移量和在Y方向上的位置偏移量。
在本发明所述的计算机油画的生成方法中,所述步骤D包括:
D1.将水平方向的边缘算子与所述采样点在灰度图上的灰度值做矩阵相乘,得到水平方向的边缘强度;
D2.将垂直方向的边缘算子与所述采样点在灰度图上的灰度值做矩阵相乘,得到垂直方向的边缘强度;
D3.根据所述采样点的水平方向的边缘强度和垂直方向的边缘强度,计算所述采样点处的梯度。
在本发明所述的计算机油画的生成方法中,在所述步骤E中,所述梯度的垂直方向即为所述笔划方向。
在本发明所述的计算机油画的生成方法中,在所述步骤F中,根据下面的公式计算窗口内的边缘强度:
其中,E1为45°方向的边缘算子,E2为135°方向的边缘算子,I(x,y)为窗口内的像素点,e(x,y)为窗口内的边缘强度。
在本发明所述的计算机油画的生成方法中,在所述步骤G中,根据预先存储的边缘强度和半径的对应关系表,通过查表的方式确定笔划半径。
在本发明所述的计算机油画的生成方法中,为每个位置设置一绘制标记,所述绘制标记用于标识对应位置是否绘制完成;
在步骤I之后,所述生成方法还包括:
J.更改所述绘制标记。
本发明还构造一种计算机油画的生成系统,包括:
接收及判断模块,用于接收待处理的源图像,并判断所述源图像是彩色图还是灰度图;
灰度图生成模块,用于将彩色图转换为灰度图;
随机偏移模块,用于在所述灰度图上以栅格方式取采样点,并对所述采样点做随机偏移;
梯度计算模块,用于基于所述采样点的灰度值,使用水平方向的边缘算子和垂直方向的边缘算子计算所述采样点处的梯度;
笔划方向计算模块,用于根据所计算的梯度计算笔划方向;
边缘强度计算模块,用于以所述采样点为中心取3*3邻域内像素为一个窗口,使用45°方向的边缘算子和135°方向的边缘算子计算所述窗口内的边缘强度;
笔划半径确定模块,用于根据所述边缘强度确定笔划半径;
像素值确定模块,用于将该采样点在所述源图像上对应处的像素值作为当前笔刷的像素值;
绘制模块,用于根据所述笔划方向、笔划半径和当前笔刷的像素值对采样点进行绘制。
实施本发明的技术方案,使得在使用计算机生成油画时,方法简单,且实现效率高。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明计算机油画的生成方法实施例一的流程图;
图2是图1中步骤S3优选实施例的流程图;
图3是图1中步骤S4优选实施例的流程图;
图4是本发明计算机油画的生成系统实施例一的逻辑图。
具体实施方式
如图1所示,在本发明计算机油画的生成方法实施例一的流程图中,该生成方法包括:
S1.接收待处理的源图像,并判断所述源图像是彩色图还是灰度图,若是彩色图,则执行步骤S2;若是灰度图,则执行步骤S3;
S2.将彩色图转换为灰度图;
S3.在所述灰度图上以栅格方式取采样点,并对所述采样点做随机偏移;
S4.基于所述采样点的灰度值,使用水平方向的边缘算子和垂直方向的边缘算子计算所述采样点处的梯度;
S5.根据所计算的梯度计算笔划方向;
S6.以所述采样点为中心取3*3邻域内像素为一个窗口,使用45°方向的边缘算子和135°方向的边缘算子计算所述窗口内的边缘强度;
S7.根据所述边缘强度确定笔划半径;
S8.将该采样点在所述源图像上对应处的像素值作为当前笔刷的像素值,在该步骤中,需说明的是,若源图像是彩色图,则该采样点对应处的像素值为RGB值,若源图像是灰度图,则该采样点对应处的像素值为灰度值;
S9.根据所述笔划方向、笔划半径和当前笔刷的像素值对采样点进行绘制。
应当说明的是,步骤S3~S9仅是对一个采样点进行的处理,本领域技术人员应能理解,在实际操作中,需对所有的采样点进行相同的处理,在此不做赘述。另外,该实施例中的步骤顺序仅作解释说明,并不用于限定本发明的保护范围,在其它实施例中,步骤S4~S5、步骤S6~S7和步骤S8的顺序可互换,也可同时执行。
实施上述实施例的技术方案,方法简单,且实现效率高。下面将具体说明每个步骤的实现方式。
在步骤S2中,可根据下面的公式将彩色图转换为灰度图:
Y1 = 0.299*R + 0.587*G + 0.114*B
其中,Y1为灰度图的当前像素点的灰度值,R、G、B分别为彩色图的当前像素点的红、绿、蓝通道的颜色值。在此应当说明的是,本申请中的图像处理都是逐个像素进行的。
优选地,为了实现在计算机上的快速运算,可将所得到的灰度图的当前像素点的灰度值的公式改写为:
Y2= (29 * B + 150 * G+ 76 * R + 255) /256 ;或者 Y2= (29 * B + 150 * G+ 76 * R + 255) >>8
其中,>>8表示按位向右移8位,计算结果等同于除以256;Y2为灰度图的当前像素点的灰度值,R、G、B分别为彩色图的当前像素点的红、绿、蓝通道的颜色值。
在步骤S3中,结合图2,步骤S3可具体包括:
S31.将所述灰度图划分成多个栅格,且每个栅格包括7*7个像素点;
S32.取每个栅格的顶点作为采样点;
S33.在1~3的取值范围间产生一个随机值,所述采样点在X方向上的位置偏移量为所产生的随机值的三倍,所述采样点在Y方向上的位置偏移量为所产生的随机值,需说明的是,X方向上的位置偏移量和Y方向上的位置偏移量可根据下面的公式来计算:
Offset_x = 3 * (Rand()%3)
Offset_y = Rand()%3
其中,Offset_x为X方向上的位置偏移量;Offset_y为Y方向上的位置偏移量;Rand()%3表示产生随机变量除以3所得的余数,也即为,在1~3的取值范围间的一个随机值;
S34.将所述采样点在X方向上的位置和在Y方向上的位置分别加上所述X方向上的位置偏移量和在Y方向上的位置偏移量。
在步骤S4中,结合图3,步骤S4可具体包括以下步骤:
S41.将水平方向的边缘算子与所述采样点在灰度图上的灰度值做矩阵相乘,得到水平方向的边缘强度;
S42.将垂直方向的边缘算子与所述采样点在灰度图上的灰度值做矩阵相乘,得到垂直方向的边缘强度,需说明的是,在步骤S41、S42中,水平方向的边缘算子Sx和水平方向的边缘算子Sy均为3*3的Sobel算子,且
S43.根据所述采样点的水平方向的边缘强度和垂直方向的边缘强度,计算所述采样点处的梯度。
在所述步骤S6中,可根据下面的公式计算窗口内的边缘强度:
其中,E1为45°方向的边缘算子,E2为135°方向的边缘算子,I(x,y)为窗口内的像素点,e(x,y)为窗口内的边缘强度。
在步骤S7中,可预先存储的边缘强度和半径的对应关系表,边缘强度和半径之间存在线性关系。在确定笔划半径时,通过查表的方式确定笔划半径。
另外,在一个优选实施例中,为每个位置设置一绘制标记,所述绘制标记用于标识对应位置是否绘制完成,在步骤S9之后,该生成方法还包括:更改对应位置的绘制标记。这样,可防止同一层中笔划重叠。
在图4所示的本发明计算机油画的生成系统实施例一的逻辑图中,该生成系统包括:
接收及判断模块01,用于接收待处理的源图像,并判断所述源图像是彩色图还是灰度图;
灰度图生成模块02,用于将彩色图转换为灰度图;
随机偏移模块03,用于在所述灰度图上以栅格方式取采样点,并对所述采样点做随机偏移;
梯度计算模块04,用于基于所述采样点的灰度值,使用水平方向的边缘算子和垂直方向的边缘算子计算所述采样点处的梯度;
笔划方向计算模块05,用于根据所计算的梯度计算笔划方向;
边缘强度计算模块06,用于以所述采样点为中心开一个3*3的窗口,使用45°方向的边缘算子和135°方向的边缘算子计算所述窗口内的边缘强度;
笔划半径确定模块07,用于根据所述边缘强度确定笔划半径;
像素值确定模块08,用于将该采样点在所述源图像上对应处的像素值作为当前笔刷的像素值;
绘制模块09,用于根据所述笔划方向、笔划半径和当前笔刷的像素值对采样点进行绘制。
在一个优选实施例中,该生成系统还可包括:绘制标记模块,用于在绘制完成后,更改对应位置的绘制标记。
应当说明的是,所有生成方法中的优选方案均可运用到对应的生成系统中,在此不做赘述。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。