一种基于SSE4指令集加快图片渐变速度的方法技术

技术编号:20970200 阅读:49 留言:0更新日期:2019-04-29 17:28
本发明专利技术公开一种基于SSE4指令集加快图片渐变速度的方法,涉及图片处理技术领域,Java利用BufferedImage对象获得图片像素信息,再调用C++的SSE4指令集加快分析计算图片像素信息,Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速;利用本发明专利技术方法将Java调用SSE4指令集,加快分析计算图片像素信息,实现图片渐变加速,并且可进行可视化处理过程,具有推广意义。

A Method of Accelerating Picture Gradual Speed Based on SSE4 Instruction Set

The invention discloses a method for accelerating image gradient based on SSE4 instruction set, which relates to the field of image processing technology. Java obtains image pixel information by using Buffered Image object, then calls the SSE4 instruction set of C++ to accelerate the analysis and calculation of image pixel information. Java refreshes the image according to the analysis and calculation results of image pixel information, and achieves image gradient acceleration by utilizing the original hair. The explicit method calls the SSE4 instruction set in Java to accelerate the analysis and calculation of image pixel information, realize the acceleration of image gradient, and can carry out visual processing, which is of popularization significance.

【技术实现步骤摘要】
一种基于SSE4指令集加快图片渐变速度的方法
本专利技术公开一种加快图片渐变速度的方法,涉及图片处理
,具体地说是一种基于SSE4指令集加快图片渐变速度的方法。
技术介绍
在软件制作的过程中,图片元素必不可少。为插入的素材图像添加淡入和淡出,可以产生若隐若现的效果,从而可以使静态的图像产生动态的效果,使整个软件更加生动、形象。本专利技术提供一种基于SSE4指令集加快图片渐变速度的方法,使用了java语言实现了图片的渐变,并且在java代码环境下使用SSE4指令集加快了图片的融合处理速度,从而解决了在java代码环境下,图片切换过程中,如何在图片切换过程中是切换速度加快的问题。JNI技术,它允许JAVA语言代码和其他语言代码进行交互。
技术实现思路
本专利技术针对现有技术的问题,提供一种基于SSE4指令集加快图片渐变速度的方法,从而加快了图片的渐变效果,提供可视化处理过程,具有一定的推广意义。本专利技术提出的具体方案是:一种基于SSE4指令集加快图片渐变速度的方法:Java利用BufferedImage对象获得图片像素信息,再调用C++的SSE4指令集加快分析计算图片像素信息,Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速。所述的方法中Java利用BufferedImage对象将图片像素信息存储在int类型的一维数组中,再调用C++的SSE4指令集加快分析计算一维数组,将分析计算结果返回给Java的BufferedImage对象,Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速。所述的方法中Java利用JNI对C++进行调用,获得一维数组的指针和长度变量,将SSE4指令集寄存器初始化,利用SSE4指令集寄存器分析计算图片像素信息的一维数组,再利用C++生成动态连接库,将生成的dll文件放在Java中。所述的方法中具体步骤为:Java对C++使用的本地方法进行声明,得到指向图片像素信息的一维数组的指针和一维数组的长度变量,将SSE4指令集寄存器初始化并置为0,将一维数组分组,利用SSE4指令集寄存器进行分析计算,再利用C++生成动态连接库,将生成的dll文件放在Java中。所述的方法中一维数组的长度若为偶数,则一维数组分组后,数据为整型,SSE4指令集寄存器执行整型的分析计算,一维数组的长度若为奇数,则一维数组分组后,SSE4指令集寄存器除分析计算整型外,还单独分析计算剩余奇数像素。在一维数组分组后,SSE4指令集寄存器采用加权平均算法进行SSE4指令中的数据与一维数组中图片像素信息的数据的分析计算。一种基于SSE4指令集加快图片渐变速度的装置,利用Java的BufferedImage对象获得图片像素信息,再利用Java调用C++的SSE4指令集加快分析计算图片像素信息,然后利用Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速。所述的装置中利用Java的BufferedImage对象将图片像素信息存储在int类型的一维数组中,再利用Java调用C++的SSE4指令集加快分析计算一维数组,将分析计算结果返回给Java的BufferedImage对象,然后利用Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速。所述的装置中Java利用JNI对C++进行调用,获得一维数组的指针和长度变量,将SSE4指令集寄存器初始化,利用SSE4指令集寄存器分析计算图片像素信息的一维数组,再利用C++生成动态连接库,将生成的dll文件放在Java中。本专利技术的有益之处是:本专利技术提供一种基于SSE4指令集加快图片渐变速度的方法,Java利用BufferedImage对象获得图片像素信息,再调用C++的SSE4指令集加快分析计算图片像素信息,Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速;利用本专利技术方法将Java调用SSE4指令集,加快分析计算图片像素信息,实现图片渐变加速,并且可进行可视化处理过程,具有推广意义。附图说明图1是实施例1中的图片1;图2是实施例1中的图片2;图3和图4是实施例1中图片2向图片1渐变过程的图片;图5是实施例1中图片2向图片1渐变的最终结果图片;图6是本专利技术方法流程示意图。具体实施方式本专利技术提供一种基于SSE4指令集加快图片渐变速度的方法,Java利用BufferedImage对象获得图片像素信息,再调用C++的SSE4指令集加快分析计算图片像素信息,Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速。同时提供与上述方法相对应的一种基于SSE4指令集加快图片渐变速度的装置,利用Java的BufferedImage对象获得图片像素信息,再利用Java调用C++的SSE4指令集加快分析计算图片像素信息,然后利用Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速。下面结合附图和具体实施例对本专利技术作进一步说明,以使本领域的技术人员可以更好地理解本专利技术并能予以实施,但所举实施例不作为对本专利技术的限定。图像融合是两幅图像的颜色分量对应融合,两幅图像通过加权平均算法进行融合。根据计算公式,在因子逐渐变化的过程中,产生一系列融合的中间图像,实现了由一个图像渐变到另一图像的过程。实施例1利用本专利技术方法和装置,对图片2渐变为图片1进行说明。本专利技术方法中Java利用BufferedImage对象将图片像素信息存储在int类型的一维数组中,图片的每个像素包括三个颜色分量:R(红)、G(绿)、B(蓝)和透明度,1个字节可恰好存储像素信息中R、G、B或者透明度的信息,4个共占32位,与1个int类型所占字节完全相同,即1个int类型可以存储一个像素的信息;Java利用JNI调用C++的SSE4指令集加快分析计算一维数组,获得一维数组的指针和长度变量,数组的长度为像素的宽度乘以像素的高度,其中Java利用JNI调用C++使用的SSE4的指令集,将128位型SSE4指令集寄存器初始化并置为0,SSE4指令中的128位数据,可以分成4个32位的数据,将4个32位数据分成8个16位数据,可由128位型SSE寄存器实现,判断存储图片2的像素信息的一维数组长度为偶数,则执行将两个32位整数每8位一组,128位型SSE4指令集寄存器利用加权平均算法进行SSE4指令中的数据与一维数组中图片像素信息的数据的分析计算,加权平均算法的计算公式为:Result_pixel=A_pixel×fade+B_pixel×(1-fade)变换后得:Result_pixel=(A_pixel-B_pixel)×fade+B_pixelfade因子从1逐渐变为0的过程中,产生一系列中间图像,实现了由A图片渐变到B图片的过程,具体计算过程为:将像素信息的数据中每一个RGB和透明度中的byte信息位解压缩存放在16位的SSE4指令数据中,与一个从0到255逐渐增1的byte位相乘,将这8个16位SSE4指令数据并行从左向右移动8位,进行紧缩,计算了低64位中的数据,即计算了2个整型int类型的数据,继续计算直至完成,如此不仅不会造成数据的溢出及异常,还以SSE4指令集寄存器的右移方法代替了乘法,使运行速度有了较本文档来自技高网...

【技术保护点】
1.一种基于SSE4指令集加快图片渐变速度的方法,其特征是Java利用BufferedImage对象获得图片像素信息,再调用C++的SSE4指令集加快分析计算图片像素信息,Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速。

【技术特征摘要】
1.一种基于SSE4指令集加快图片渐变速度的方法,其特征是Java利用BufferedImage对象获得图片像素信息,再调用C++的SSE4指令集加快分析计算图片像素信息,Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速。2.根据权利要求1所述的方法,其特征是Java利用BufferedImage对象将图片像素信息存储在int类型的一维数组中,再调用C++的SSE4指令集加快分析计算一维数组,将分析计算结果返回给Java的BufferedImage对象,Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速。3.根据权利要求2所述的方法,其特征是Java利用JNI对C++进行调用,获得一维数组的指针和长度变量,将SSE4指令集寄存器初始化,利用SSE4指令集寄存器分析计算图片像素信息的一维数组,再利用C++生成动态连接库,将生成的dll文件放在Java中。4.根据权利要求3所述的方法,其特征是具体步骤为:Java对C++使用的本地方法进行声明,得到指向图片像素信息的一维数组的指针和一维数组的长度变量,将SSE4指令集寄存器初始化并置为0,将一维数组分组,利用SSE4指令集寄存器进行分析计算,再利用C++生成动态连接库,将生成的dll文件放在Java中。5.根据权利要求2-4任一所述的方法,其特征是一维数组的长度若为偶数,则一...

【专利技术属性】
技术研发人员:李烨
申请(专利权)人:浪潮通用软件有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1