CN105045726B - 一种基于并行计算的图片操作方法及系统 - Google Patents
一种基于并行计算的图片操作方法及系统 Download PDFInfo
- Publication number
- CN105045726B CN105045726B CN201510484636.2A CN201510484636A CN105045726B CN 105045726 B CN105045726 B CN 105045726B CN 201510484636 A CN201510484636 A CN 201510484636A CN 105045726 B CN105045726 B CN 105045726B
- Authority
- CN
- China
- Prior art keywords
- picture
- parallel computation
- buffer area
- output
- pixel
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000006870 function Effects 0.000 claims abstract description 15
- 238000010586 diagram Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 235000015170 shellfish Nutrition 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Landscapes
- Image Processing (AREA)
Abstract
本发明公开一种基于并行计算的图片操作方法及系统,其中,方法包括步骤:A、将统一格式的第一图片和第二图片的数据分别解析到相应的内存块中,第一图片和第二图片的分辨率均为mWidth*mHeight;B、创建与内存块一一对应的输入共享数据缓冲区,将每一内存块中的数据拷贝至对应的输入共享数据缓冲区中;C、创建输出共享数据缓冲区,作为并行计算的输出缓冲区;D、创建mHeight个线程,利用并行计算函数执行并行计算操作;E、将操作结果拷贝至CPU内存中,完成图片数据填充。本发明利用多个线程同时执行并行计算操作,即进行多线程的操作,所以相对于传统的单线程的操作,大大提高了操作效率,提高了开发速度。
Description
技术领域
本发明涉及图片操作领域,尤其涉及一种基于并行计算的图片操作方法及系统。
背景技术
在应用开发过程中,经常会碰到图片的操作,比如用A图片做遮罩模板,用B图片做被遮罩模板,操作后得到的图片是A图片的形状,B图片的内容。
现有技术中,上述图片操作需要用户手动进行合并或者只是CPU进行单线程的操作,其操作效率低,不利于提高开发速度。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种基于并行计算的图片操作方法及系统,旨在解决现有的图片操作效率低的问题。
本发明的技术方案如下:
一种基于并行计算的图片操作方法,其中,包括步骤:
A、将统一格式的第一图片和第二图片的数据分别解析到相应的内存块中,第一图片和第二图片的分辨率均为mWidth*mHeight;
B、创建与内存块一一对应的输入共享数据缓冲区,将每一内存块中的数据拷贝至对应的输入共享数据缓冲区中;
C、创建输出共享数据缓冲区,作为并行计算的输出缓冲区;
D、创建mHeight个线程,利用并行计算函数执行并行计算操作;
E、将操作结果拷贝至CPU内存中,完成图片数据填充。
所述的基于并行计算的图片操作方法,其中,所述步骤B还包括:
拷贝完成后,释放各内存块中的数据。
所述的基于并行计算的图片操作方法,其中,所述步骤D具体包括:
D1、输入第一图片的数据、第二图片的数据、操作行数、单位像素大小至并行计算函数中;
D2、根据操作行数以及单位像素大小,计算出偏移位置;
D3、根据偏移位置和单位像素大小,分别依序从第一图片和第二图片的输入共享数据缓冲区读取一个像素值;
D4、对像素值进行异或操作,若结果为0,则使用透明黑色值初始化输出像素,若结果不为0,则取两个像素值中alpha值不为0的颜色值作为输出像素;
D5、将相应操作行数的输出像素写进输出共享数据缓冲区。
所述的基于并行计算的图片操作方法,其中,所述输出共享数据缓冲区的大小等于第二图片对应的输入共享数据缓冲区。
所述的基于并行计算的图片操作方法,其中,所述步骤E之后还包括:
F、释放掉在并行计算过程中产生的资源。
一种基于并行计算的图片操作系统,其中,包括:
解析模块,用于将统一格式的第一图片和第二图片的数据分别解析到相应的内存块中,第一图片和第二图片的分辨率均为mWidth*mHeight;
输入缓冲区创建模块,用于创建与内存块一一对应的输入共享数据缓冲区,将每一内存块中的数据拷贝至对应的输入共享数据缓冲区中;
输出缓冲区创建模块,用于创建输出共享数据缓冲区,作为并行计算的输出缓冲区;
并行计算模块,用于创建mHeight个线程,利用并行计算函数执行并行计算操作;
填充模块,用于将操作结果拷贝至CPU内存中,完成图片数据填充。
所述的基于并行计算的图片操作系统,其中,所述输入缓冲区创建模块还包括:
释放单元,用于拷贝完成后,释放各内存块中的数据。
所述的基于并行计算的图片操作系统,其中,所述并行计算模块具体包括:
输入单元,用于输入第一图片的数据、第二图片的数据、操作行数、单位像素大小至并行计算函数中;
计算单元,用于根据操作行数以及单位像素大小,计算出偏移位置;
读取单元,用于根据偏移位置和单位像素大小,分别依序从第一图片和第二图片的输入共享数据缓冲区读取一个像素值;
异或操作单元,用于对像素值进行异或操作,若结果为0,则使用透明黑色值初始化输出像素,若结果不为0,则取两个像素值中alpha值不为0的颜色值作为输出像素;
输出单元,用于将相应操作行数的输出像素写进输出共享数据缓冲区。
所述的基于并行计算的图片操作系统,其中,所述输出共享数据缓冲区的大小等于第二图片对应的输入共享数据缓冲区。
所述的基于并行计算的图片操作系统,其中,还包括:
释放模块,用于释放掉在并行计算过程中产生的资源。
有益效果:本发明利用多个线程同时执行并行计算操作,即进行多线程的操作,所以相对于传统的单线程的操作,大大提高了操作效率,提高了开发速度。
附图说明
图1为本发明一种基于并行计算的图片操作方法较佳实施例的流程图。
图2为本发明的方法中多线程并行计算操作的流程图。
图3为图1所示方法中步骤S104的具体流程图。
图4为本发明一种基于并行计算的图片操作系统较佳实施例的结构框图。
图5为图4所示系统中输入缓冲区创建模块的具体结构框图。
具体实施方式
本发明提供一种基于并行计算的图片操作方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1为本发明一种基于并行计算的图片操作方法较佳实施例的流程图,如图所示,其包括步骤:
S101、将统一格式的第一图片和第二图片的数据分别解析到相应的内存块中,第一图片和第二图片的分辨率均为mWidth*mHeight;
S102、创建与内存块一一对应的输入共享数据缓冲区,将每一内存块中的数据拷贝至对应的输入共享数据缓冲区中;
S103、创建输出共享数据缓冲区,作为并行计算的输出缓冲区;
S104、创建mHeight个线程,利用并行计算函数执行并行计算操作;
S105、将操作结果拷贝至CPU内存中,完成图片数据填充。
本发明实施例中,由于创建了多个线程,每个线程都能独立并行执行计算任务,所以相对于传统的单线程操作,大大提高了操作效率,提高了开发速度。
具体来讲,所述步骤S101中,第一图片和第二图片的格式需要统一,且分辨率也需统一,如果第一图片和第二图片的格式和分辨率不统一,则需要将二者格式和分辨率转换为一致。然后将第一图片和第二图片的数据分别解析到内存块mSrcData和mDstData中,第一图片和第二图片的分辨率均为mWidth*mHeight,单个像素大小为mPixSize。
在所述步骤S102中,首先根据内存块mSrcData和mDstData中的数据,利用并行计算语言系统创建两块对应的输入共享数据缓冲区,分别记为smSrcData和smDstData。例如利用OpenCL中利用接口clCreateBuffer创建出一块输入共享数据缓冲区。输入共享数据缓冲区其是供并行计算使用的,其实质是分配一片显存区域,以便于GPU进行并行计算时读入输入数据,并写入输出数据。
在创建输入共享数据缓冲区之后,需要利用并行计算语言系统接口,将mSrcData和mDstData中的数据分别拷贝到smSrcData和smDstData中。
拷贝完成后,即释放mSrcData和mDstData中的数据。
在所述步骤S103中,与步骤S102一样,需要利用并行计算语言系统创建输出共享数据缓冲区outData,作为并行计算的输出缓冲区。所述输出共享数据缓冲区的大小等于第二图片对应的输入共享数据缓冲区smDstData。
所述步骤S104中,利用并行计算模块来创建mHeight个线程,如图2所示,并执行并行计算操作,其中每个线程都各自独立执行并行计算操作。例如OpenCL使用clEnqueueNDRangeKernel函数执行此并行计算操作。
进一步,如图3所示,所述步骤S104具体包括:
S201、输入第一图片的数据、第二图片的数据、操作行数、单位像素大小至并行计算函数中;
并行计算函数所需的四个输入参数如下:
1、第一图片的数据,第一图片的数据可从smSrcData中获取; 2、第二图片的数据,第二图片的数据可从smDstData中获取; 3、操作行数,循环赋予mHeight个线程数值0~mHeight-1,记为nLine; 4、单位像素大小,单位像素大小为mPixSize。一行有mWidth个像素。
S202、根据操作行数以及单位像素大小,计算出偏移位置;
此步骤是根据第三个参数nLine和第四个参数mPixSize计算出偏移位置,偏移位置为nLine*mPixSize* mWidth;
S203、根据偏移位置和单位像素大小,分别依序从第一图片和第二图片的输入共享数据缓冲区读取一个像素值;
根据偏移位置和单位像素大小mPixSize,分别从第一图片和第二图片的输入共享数据缓冲区读取一个像素值,其是按照从0至(mWidth-1)的操作顺序取像素值的,取出的像素值分别记为srcPix和dstPix,分别取出第一图片和第二图片的一个像素值后,执行步骤S204;
S204、对像素值进行异或操作,若结果为0,则使用透明黑色值初始化输出像素,若结果不为0,则取两个像素值中alpha值不为0的颜色值作为输出像素;
先创建输出像素outPix,对srcPix和dstPix的alpha值进行异或操作,如果结果为0,则用透明黑色值初始化outPix;如果结果不为0,输出像素outPix取srcPix和dstPix中alpha值不为0的颜色值;当然本步骤还可使用其他的操作,来对图像像素值进行处理,合成第一图片和第二图片。
S205、将相应操作行数的输出像素写进输出共享数据缓冲区。
根据计算出的偏移位置以及单位像素大小mPixSize,按从0至(mWidth-1)的操作顺序将输出像素写进输出共享数据缓冲区outData,这样按从0至(mWidth-1)的操作顺序循环步骤S203至步骤S205,直至操作完相应操作行数。
在所述步骤S105中,利用并行计算语言系统将输出共享数据缓冲区的结果拷贝到CPU内存中,例如利用OpenCL中的clEnqueueReadBuffer接口进行拷贝,拷贝完成后即完成图片数据填充,最后释放掉在并行计算过程中产生的资源即可。
基于上述方法,本发明还提供一种基于并行计算的图片操作系统较佳实施例,如图4所示,其包括:
解析模块100,用于将统一格式的第一图片和第二图片的数据分别解析到相应的内存块中,第一图片和第二图片的分辨率均为mWidth*mHeight;
输入缓冲区创建模块200,用于创建与内存块一一对应的输入共享数据缓冲区,将每一内存块中的数据拷贝至对应的输入共享数据缓冲区中;
输出缓冲区创建模块300,用于创建输出共享数据缓冲区,作为并行计算的输出缓冲区;
并行计算模块400,用于创建mHeight个线程,利用并行计算函数执行并行计算操作;
填充模块500,用于将操作结果拷贝至CPU内存中,完成图片数据填充。
进一步,所述输入缓冲区创建模块200还包括:
释放单元,用于拷贝完成后,释放各内存块中的数据。
进一步,如图5所示,所述并行计算模块400具体包括:
输入单元410,用于输入第一图片的数据、第二图片的数据、操作行数、单位像素大小至并行计算函数中;
计算单元420,用于根据操作行数以及单位像素大小,计算出偏移位置;
读取单元430,用于根据偏移位置和单位像素大小,分别依序从第一图片和第二图片的输入共享数据缓冲区读取一个像素值;
异或操作单元440,用于对像素值进行异或操作,若结果为0,则使用透明黑色值初始化输出像素,若结果不为0,则取两个像素值中alpha值不为0的颜色值作为输出像素;
输出单元450,用于将相应操作行数的输出像素写进输出共享数据缓冲区。
进一步,所述输出共享数据缓冲区的大小等于第二图片对应的输入共享数据缓冲区。
进一步,所述系统还包括:
释放模块,用于释放掉在并行计算过程中产生的资源。
关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (8)
1.一种基于并行计算的图片操作方法,其特征在于,包括步骤:
A、将统一格式的第一图片和第二图片的数据分别解析到相应的内存块中,第一图片和第二图片的分辨率均为mWidth*mHeight;
B、创建与内存块一一对应的输入共享数据缓冲区,将每一内存块中的数据拷贝至对应的输入共享数据缓冲区中;
C、创建输出共享数据缓冲区,作为并行计算的输出缓冲区;
D、创建mHeight个线程,利用并行计算函数执行并行计算操作;
E、将操作结果拷贝至CPU内存中,完成图片数据填充;
所述步骤D具体包括:
D1、输入第一图片的数据、第二图片的数据、操作行数、单位像素大小至并行计算函数中;
D2、根据操作行数以及单位像素大小,计算出偏移位置;
D3、根据偏移位置和单位像素大小,分别依序从第一图片和第二图片的输入共享数据缓冲区读取一个像素值;
D4、对像素值进行异或操作,若结果为0,则使用透明黑色值初始化输出像素,若结果不为0,则取两个像素值中alpha值不为0的颜色值作为输出像素;
D5、将相应操作行数的输出像素写进输出共享数据缓冲区。
2.根据权利要求1所述的基于并行计算的图片操作方法,其特征在于,所述步骤B还包括:
拷贝完成后,释放各内存块中的数据。
3.根据权利要求1所述的基于并行计算的图片操作方法,其特征在于,所述输出共享数据缓冲区的大小等于第二图片对应的输入共享数据缓冲区的大小。
4.根据权利要求1所述的基于并行计算的图片操作方法,其特征在于,所述步骤E之后还包括:
F、释放掉在并行计算过程中产生的资源。
5.一种基于并行计算的图片操作系统,其特征在于,包括:
解析模块,用于将统一格式的第一图片和第二图片的数据分别解析到相应的内存块中,第一图片和第二图片的分辨率均为mWidth*mHeight;
输入缓冲区创建模块,用于创建与内存块一一对应的输入共享数据缓冲区,将每一内存块中的数据拷贝至对应的输入共享数据缓冲区中;
输出缓冲区创建模块,用于创建输出共享数据缓冲区,作为并行计算的输出缓冲区;
并行计算模块,用于创建mHeight个线程,利用并行计算函数执行并行计算操作;
填充模块,用于将操作结果拷贝至CPU内存中,完成图片数据填充;
所述并行计算模块具体包括:
输入单元,用于输入第一图片的数据、第二图片的数据、操作行数、单位像素大小至并行计算函数中;
计算单元,用于根据操作行数以及单位像素大小,计算出偏移位置;
读取单元,用于根据偏移位置和单位像素大小,分别依序从第一图片和第二图片的输入共享数据缓冲区读取一个像素值;
异或操作单元,用于对像素值进行异或操作,若结果为0,则使用透明黑色值初始化输出像素,若结果不为0,则取两个像素值中alpha值不为0的颜色值作为输出像素;
输出单元,用于将相应操作行数的输出像素写进输出共享数据缓冲区。
6.根据权利要求5所述的基于并行计算的图片操作系统,其特征在于,所述输入缓冲区创建模块还包括:
释放单元,用于拷贝完成后,释放各内存块中的数据。
7.根据权利要求5所述的基于并行计算的图片操作系统,其特征在于,所述输出共享数据缓冲区的大小等于第二图片对应的输入共享数据缓冲区的大小。
8.根据权利要求5所述的基于并行计算的图片操作系统,其特征在于,还包括:
释放模块,用于释放掉在并行计算过程中产生的资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510484636.2A CN105045726B (zh) | 2015-08-10 | 2015-08-10 | 一种基于并行计算的图片操作方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510484636.2A CN105045726B (zh) | 2015-08-10 | 2015-08-10 | 一种基于并行计算的图片操作方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105045726A CN105045726A (zh) | 2015-11-11 |
CN105045726B true CN105045726B (zh) | 2019-10-11 |
Family
ID=54452289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510484636.2A Expired - Fee Related CN105045726B (zh) | 2015-08-10 | 2015-08-10 | 一种基于并行计算的图片操作方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045726B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545165B (zh) * | 2017-08-16 | 2021-10-22 | 惠州Tcl移动通信有限公司 | 一种移动终端及其指纹图片处理方法、及存储介质 |
CN111047498B (zh) * | 2019-11-18 | 2022-12-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向gpu硬件拷贝缓冲区算法的tlm微结构 |
CN110942418B (zh) * | 2019-11-18 | 2023-06-13 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于glCopyPixels的GPU像素复制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101114382A (zh) * | 2006-05-22 | 2008-01-30 | 辉达公司 | 帧缓冲区合并 |
CN103136724A (zh) * | 2011-11-30 | 2013-06-05 | 北大方正集团有限公司 | 加网方法和装置 |
CN103218174A (zh) * | 2013-03-29 | 2013-07-24 | 航天恒星科技有限公司 | 一种用于遥感图像的io双缓存交互多核处理方法 |
CN103903292A (zh) * | 2012-12-27 | 2014-07-02 | 北京新媒传信科技有限公司 | 一种实现头像编辑界面的方法和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080074428A1 (en) * | 2003-11-19 | 2008-03-27 | Reuven Bakalash | Method of rendering pixel-composited images for a graphics-based application running on a computing system embodying a multi-mode parallel graphics rendering system |
US20130242186A1 (en) * | 2012-03-14 | 2013-09-19 | Samsung Electronics Co., Ltd. | Image processing apparatus and control method thereof |
US9454843B2 (en) * | 2013-02-05 | 2016-09-27 | Nvidia Corporation | Modulated and blended anti-aliasing |
-
2015
- 2015-08-10 CN CN201510484636.2A patent/CN105045726B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101114382A (zh) * | 2006-05-22 | 2008-01-30 | 辉达公司 | 帧缓冲区合并 |
CN103136724A (zh) * | 2011-11-30 | 2013-06-05 | 北大方正集团有限公司 | 加网方法和装置 |
CN103903292A (zh) * | 2012-12-27 | 2014-07-02 | 北京新媒传信科技有限公司 | 一种实现头像编辑界面的方法和系统 |
CN103218174A (zh) * | 2013-03-29 | 2013-07-24 | 航天恒星科技有限公司 | 一种用于遥感图像的io双缓存交互多核处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105045726A (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10949944B2 (en) | System and method for unified application programming interface and model | |
EP3420527B1 (en) | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform | |
CN107438861B (zh) | 用于图像生成器的数据片生成器 | |
CN105045726B (zh) | 一种基于并行计算的图片操作方法及系统 | |
CN105303506A (zh) | 一种基于html5的数据并行处理方法及系统 | |
JP6775088B2 (ja) | 画像プロセッサランタイム効率を向上するためのプログラムコード変形 | |
TWI712312B (zh) | 影像處理器輸入輸出單元 | |
CN101908216B (zh) | 一种实现矢量字体的方法及装置 | |
CN101783021B (zh) | 实现gpu运算提高dr图像处理速度的方法 | |
TWI745084B (zh) | 用於影像處理器之巨型輸入/輸出單元 | |
US20160093112A1 (en) | Deep image identifiers | |
CN104240285A (zh) | 利用vtf技术处理cpu大批量数据传入gpu的方法 | |
CN102736552A (zh) | 一种应用于plc开发的梯形图转换为语句表的方法 | |
CN104463803A (zh) | 一种消除图像锯齿的方法及装置 | |
CN104182928A (zh) | 矢量图形快速多边形填充方法 | |
CN115082371B (zh) | 图像融合方法、装置、移动终端设备及可读存储介质 | |
CN102280098B (zh) | 点阵字缩放的方法及系统 | |
CN108572593A (zh) | 跨平台卷积神经网络控制系统及方法、信息数据处理终端 | |
CN103839217A (zh) | 一种水印图片的实现方法 | |
JP6840860B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
CN105068803A (zh) | 人机界面实现方法及装置 | |
CN108776987A (zh) | 一种基于屏幕空间的模型轮廓绘制方法 | |
CN102521879A (zh) | 一种2d转3d的方法 | |
CN111857918A (zh) | 2D桌面PorterDuff实现方法及装置 | |
CN104778471B (zh) | 一种基于gpu的多尺度空间特征提取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20191011 |