CN109685731B - 一种基于sse4指令集加快图片渐变速度的方法 - Google Patents

一种基于sse4指令集加快图片渐变速度的方法 Download PDF

Info

Publication number
CN109685731B
CN109685731B CN201811526128.6A CN201811526128A CN109685731B CN 109685731 B CN109685731 B CN 109685731B CN 201811526128 A CN201811526128 A CN 201811526128A CN 109685731 B CN109685731 B CN 109685731B
Authority
CN
China
Prior art keywords
picture
java
dimensional array
sse4
instruction set
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811526128.6A
Other languages
English (en)
Other versions
CN109685731A (zh
Inventor
李烨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur General Software Co Ltd
Original Assignee
Inspur General Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur General Software Co Ltd filed Critical Inspur General Software Co Ltd
Priority to CN201811526128.6A priority Critical patent/CN109685731B/zh
Publication of CN109685731A publication Critical patent/CN109685731A/zh
Application granted granted Critical
Publication of CN109685731B publication Critical patent/CN109685731B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Studio Circuits (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本发明公开一种基于SSE4指令集加快图片渐变速度的方法,涉及图片处理技术领域,Java利用BufferedImage对象获得图片像素信息,再调用C++的SSE4指令集加快分析计算图片像素信息,Java根据图片像素信息的分析计算结果,进行图片的刷新,实现图片渐变加速;利用本发明方法将Java调用SSE4指令集,加快分析计算图片像素信息,实现图片渐变加速,并且可进行可视化处理过程,具有推广意义。

Description

一种基于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_pixel
fade因子从1逐渐变为0的过程中,产生一系列中间图像,实现了由A图片渐变到B图片的过程,
具体计算过程为:将像素信息的数据中每一个RGB和透明度中的byte信息位解压缩存放在16位的SSE4指令数据中,与一个从0到255逐渐增1的byte位相乘,将这8个16位SSE4指令数据并行从左向右移动8位,进行紧缩,计算了低64位中的数据,即计算了2个整型int类型的数据,继续计算直至完成,如此不仅不会造成数据的溢出及异常,还以SSE4指令集寄存器的右移方法代替了乘法,使运行速度有了较大提高,
判断存储图片2的像素信息的一维数组长度为奇数,除与像素信息的一维数组长度为偶数时相同外,还需要单独分析计算剩余的一个像素;
再利用C++生成动态连接库,将生成的dll文件放在Java中,将计算结果返回给java的BufferedImage对象,java通过对JPanel的重绘技术,进行图片的刷新,实现图片2渐变到图片1的加速。
在上述实施例中,利用BufferedImage对象将图片像素信息存储在int类型的一维数组中,主要java代码如下:
在上述实施例中,将计算结果返回给java的BufferedImage对象,主要java代码如下:
在上述实施例中,可以循环显示图片2渐变为图片1的中间图片,主要java代码如下:
使用SSE4指令集,通过分析计算过程,主要代码如下:
以上实施例中,利用java运行流程为:
在命令行中编译该java文件,生成MyFrame.class;
使用javah MyFrame命令,生成MyFrame.h头文件;
把MyFrame.h头文件导入建立的C++工作空间的头文件类库中,实现头文件中的JNIEXPORT jintArray JNICALL;
Java_com_inspur_MyFrame_showPicture(JNIEnv*,jobject,jintArray,jintArray,jint)方法。
参考附图1-5,对使用SSE4指令和不使用SSE4指令中进行比较,使用现有java编写的图片渐变切换时间是32167ms,使用本发明方法的图片渐变切换时间是31168ms,像素为1920*1200的图片使用SSE4指令可以优化大约1秒左右,如上图所示,数据差异非常可观,本发明方法还可应用在浮点运算、3D运算、视频处理、音频处理等诸多多媒体领域。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

Claims (2)

1.一种基于SSE4指令集加快图片渐变速度的方法,其特征是Java利用BufferedImage对象将图片像素信息存储在int类型的一维数组中,每个图片像素信息包括三个颜色分量和透明度,三个颜色分量分别为R、G和B,1个int类型存储一个图片像素信息,
Java利用JNI调用C++使用的SSE4的指令集:将128位型SSE4指令集寄存器初始化并置为0,将SSE4指令中的128位数据分成4个32位的数据,将4个32位数据分成8个16位数据,
Java利用JNI调用C++的SSE4指令集加快分析计算一维数组,获得一维数组的指针和长度变量,其中判断一维数组的长度变量是奇数还是偶数,若为偶数则将两个32位整数每8位一组,128位型SSE4指令集寄存器利用加权平均算法进行SSE4指令中的数据与一维数组中图片像素信息的数据的分析计算:将图片像素信息的数据中每一个RGB和透明度中的byte信息位解压缩存放在16位的SSE4指令数据中,与一个从0到255逐渐增1的byte位相乘,将8个16位SSE4指令数据并行从左向右移动8位,进行紧缩,直至计算完成;若为奇数则先将一维数组的长度变量分配为偶数部分加一个剩余像素,按照一维数组的长度变量为偶数时的方式计算偶数部分,再计算一个剩余像素;
利用C++生成动态连接库,将生成的dll文件放在Java中,将分析计算结果返回给Java的BufferedImage对象,Java通过对JPanel的重绘技术,进行图片的刷新,实现图片渐变加速。
2.一种基于SSE4指令集加快图片渐变速度的装置,其特征是通过Java利用BufferedImage对象将图片像素信息存储在int类型的一维数组中,每个图片像素信息包括三个颜色分量和透明度,三个颜色分量分别为R、G和B,1个int类型存储一个图片像素信息,
通过Java利用JNI调用C++使用的SSE4的指令集:将128位型SSE4指令集寄存器初始化并置为0,将SSE4指令中的128位数据分成4个32位的数据,将4个32位数据分成8个16位数据,
Java利用JNI调用C++的SSE4指令集加快分析计算一维数组,获得一维数组的指针和长度变量,其中判断一维数组的长度变量是奇数还是偶数,若为偶数则将两个32位整数每8位一组,128位型SSE4指令集寄存器利用加权平均算法进行SSE4指令中的数据与一维数组中图片像素信息的数据的分析计算:将图片像素信息的数据中每一个RGB和透明度中的byte信息位解压缩存放在16位的SSE4指令数据中,与一个从0到255逐渐增1的byte位相乘,将8个16位SSE4指令数据并行从左向右移动8位,进行紧缩,直至计算完成;若为奇数则先将一维数组的长度变量分配为偶数部分加一个剩余像素,按照一维数组的长度变量为偶数时的方式计算偶数部分,再计算一个剩余像素;
利用C++生成动态连接库,将生成的dll文件放在Java中,将分析计算结果返回给Java的BufferedImage对象,Java通过对JPanel的重绘技术,进行图片的刷新,实现图片渐变加速。
CN201811526128.6A 2018-12-13 2018-12-13 一种基于sse4指令集加快图片渐变速度的方法 Active CN109685731B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811526128.6A CN109685731B (zh) 2018-12-13 2018-12-13 一种基于sse4指令集加快图片渐变速度的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811526128.6A CN109685731B (zh) 2018-12-13 2018-12-13 一种基于sse4指令集加快图片渐变速度的方法

Publications (2)

Publication Number Publication Date
CN109685731A CN109685731A (zh) 2019-04-26
CN109685731B true CN109685731B (zh) 2023-07-18

Family

ID=66186745

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811526128.6A Active CN109685731B (zh) 2018-12-13 2018-12-13 一种基于sse4指令集加快图片渐变速度的方法

Country Status (1)

Country Link
CN (1) CN109685731B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425787A (zh) * 2013-08-26 2013-12-04 中国人民解放军国防科学技术大学 一种渐进最优的三角网格重复顶点快速去除方法
CN104952038A (zh) * 2015-06-05 2015-09-30 北京大恒图像视觉有限公司 一种基于sse2指令集的图像插值方法
CN104991759A (zh) * 2015-07-28 2015-10-21 成都腾悦科技有限公司 一种可变指令集微处理器及其实现方法
CN105681813A (zh) * 2014-11-19 2016-06-15 Tcl集团股份有限公司 一种基于Android系统的图片处理方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425787A (zh) * 2013-08-26 2013-12-04 中国人民解放军国防科学技术大学 一种渐进最优的三角网格重复顶点快速去除方法
CN105681813A (zh) * 2014-11-19 2016-06-15 Tcl集团股份有限公司 一种基于Android系统的图片处理方法及系统
CN104952038A (zh) * 2015-06-05 2015-09-30 北京大恒图像视觉有限公司 一种基于sse2指令集的图像插值方法
CN104991759A (zh) * 2015-07-28 2015-10-21 成都腾悦科技有限公司 一种可变指令集微处理器及其实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"SSE图像算法优化系列十三:超高速BoxBlur算法的实现和优化(Opencv的速度的五倍)";Imageshop;《https://www.cnblogs.com/Imageshop/p/8302990.html》;20180120;第1-9页 *

Also Published As

Publication number Publication date
CN109685731A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
AU2524700A (en) Method and apparatus for antialiased imaging of graphical objects
JPH02289097A (ja) 画像表示データ処理装置
CN103440612A (zh) 一种gpu虚拟化中图像处理方法和装置
CN107526504B (zh) 图像显示的方法及装置、终端及存储介质
JP3526976B2 (ja) プロセッサおよびデータ処理装置
US9355428B2 (en) Method and apparatus for data processing using graphic processing unit
CN109725701B (zh) 显示面板和装置、图像处理方法和装置、虚拟现实系统
WO2001041049A1 (en) System and method for rapid computer image processing with color look-up table
CN106373514B (zh) 显示系统与驱动方法
CN109685731B (zh) 一种基于sse4指令集加快图片渐变速度的方法
CN114429513A (zh) 可见元素的确定方法和装置、存储介质及电子设备
US10628958B2 (en) Frame rendering apparatus, method and non-transitory computer readable storage medium
CN113596581A (zh) 一种图像格式转换方法、装置、计算机设备和存储介质
CN114255153A (zh) 一种超高清图像混合处理方法和装置
WO2023193664A1 (zh) 图像处理方法、装置及电子设备
CN103034975A (zh) 图像处理方法及装置
CN104318509A (zh) 一种基于gpu的大批量目标高速标绘方法
CN115394249B (zh) Oled显示面板驱动方法、oled显示面板驱动装置、电子设备和计算机存储介质
CN116630510A (zh) 一种有关圆锥渐变纹理的生成方法、设备及介质
US20130322749A1 (en) Method of compressing a block-based binary image
CN114463400A (zh) 一种基于纹理对象分割的纹理采样方法与系统
CN111127323A (zh) 一种基于fpga的图像缩小方法
CN108805846B (zh) 二值图像处理优化的方法及其系统
US20080154999A1 (en) Compressed Floating Point Representation Of Points On Monotonic Curves Which Can Be Specified By High Order Equations
WO2018126485A1 (zh) 并行图像色彩增强方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant