CN103888771A - 基于gpgpu技术的并行视频图像处理方法 - Google Patents
基于gpgpu技术的并行视频图像处理方法 Download PDFInfo
- Publication number
- CN103888771A CN103888771A CN201310744006.5A CN201310744006A CN103888771A CN 103888771 A CN103888771 A CN 103888771A CN 201310744006 A CN201310744006 A CN 201310744006A CN 103888771 A CN103888771 A CN 103888771A
- Authority
- CN
- China
- Prior art keywords
- video
- image processing
- opencl
- method based
- processing method
- 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.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开一种基于GPGPU技术的并行视频图像处理方法。该方法包括:1)从磁盘读取压缩的视频,获得视频帧;2)直接在GPU上对视频解码;3)利用步骤2)所得到的解码后的一帧视频图像,使用OpenCL进行图像处理,其中基于OpenCL的视频处理图像方法是使用GPU超多并发线程对图像每个象素并行处理的;4)并骤3)中对单一视频处理可以利用OpenCL事件机制扩展到对多个视频上处理;5)利用步骤3)或步骤4)中得到处理后的视频帧,通过OpenGL与OpenCL协同工作方式将视频帧数据输出显示到屏幕。本方法是视频处理的一种全新方法,即基于异构计算方式的全新视频处理方法,本方法具有效效率高,功耗低及跨平台等优势。
Description
技术领域
本发明涉及数字多媒体技术、数字图像处理技术及GPU并行开发技术领域,具体涉及一种基于GPGPU技术的并行视频图像处理方法。
背景技术
近年来无论在高性能计算、桌面或嵌入式设备,我们身边出现了越来越多拥有并行硬件的设备,如多核cpu及gpu。另外,人们发现gpu拥有强大的数据处理能力,gpu除了处理渲染任务外,还可以完成通用计算,即所谓的GPGPU(General-purpose computing on graphics processing units,基于GPU的通用计算)。利用CPU强大的计算及逻辑控制能力以及利用GPU大规模并行数据处理能力,即CPU+GPU异构计算模式,可以为各种计算任务带来性能和成本的极大改善。随着OpenCL的推出,我们将迎来异构计算的时代。OpenCL作为异构计算开放性的统一标准框架,为开发人员有效地利用设备异构计算能力提供了条件。OpenCL自推出后,被广泛应用在各种科学计算如如汽车碰撞安全分析,地震海啸模拟、生物医药、音视频编解码等领域,各种应用获得了几倍到几百倍的加速比。
视频处理是目前多媒体处理技术热门研究领域之一。视频处理主要分为视频解码及图像处理两部分,本发明方法输入的是一段视频流,通过使用OpenCL对视频内容进行一些图像处理操作,输出结果是另一段可实时播放的视频流。本方法可以扩展成对一段视频流进行多种处理或对多个视频流进行融合输出单个视频流。
发明内容
本发明目的是提供一种利用OpenCL进行高效视频处理的方法。在考察各种不同的方式来完成本方案时候,性能是本发明的核心目标。视频流的输出速度是测试本技术方案的基准,目标是让它能高效处理视频图像后再次实时播放。
为了实现发明的目的,本发明采用的技术方案如下:
在这里,输入的视频是以压缩的形式存储在计算机中的。从磁盘读取了输入数据之后,RGB格式的视频帧会用于进行一些图像处理操作和制作输出结果。视频文件必须被解码,以从压缩的视频中获得我们需要的RGB格式。
现结合附图1说明本技术方案。为了最大限度地提高性能,本方案使用多线程方式处理,主线程的工作主要是获取视频帧,视频帧的解码使用解码线程处理,解码框架依赖回调函数,回调函数在解码帧准备好之后被调用,从而支持异步解码请求。解码后的视频数据将使用OpenCL处理,并在处理后的视频图像帧返回给主线程,最后输出视频。
本方案使用视频解码硬件的方式将压缩视频数据流直接传输到GPU设备上,在那里进行解码,然后将解压缩的视频写入GPU内存。为了在OpenCL中使用解压缩后的视频帧,需要将视频帧映射到OpenCL的内存空间。因为不同的API使用不同的方式来管理内存,所以即使用视频帧已经在GPU内存里面了,也需要这么做。
在本技术方案中充分发挥特定功能解码硬件的优势,从而避免使用各种复杂的方式来访问解码帧内存,本方案使用OpenVideo Decode API。这个API支持从OpenCL访问解码视频帧。API是这样编写的:它操作一个类似于OpenCL的、从单独API域申请的、平台独立的上下文。
在使用OpenVideo Decode API之前,需要检测设备和视频的格式,确认它们是否兼容。接着,创建一个OpenCL上下文,然后在OpenVideo中将OpenCL上下文传递给OVDecodeCreateSession()函数来创建一个解码会话。在完成了建立OpenCL和OpenVideo通信链接之后,接下来就是在主解码循环中使用OpenVideo的解码功能。为了内在访问同步,应用程序首先使用OVDecodeAqurieObject()函数从Open Video Decode获得内存对象,这样解码视频可以写入到这块内存里面。为了进行解码,OVDecodePicture()函数被用来传递压缩视频流,该函数根据解码参数读取解析码流。创建解析的码流需要对压缩视频格式有详细的了解;因此,我们用一个第三方库来完成这个任务。解码完成之后,内存对象从OpenVideo释放,从而OpenCL运行时可以从它的域 里面获取这个对象,并且能对已解码的帧进行访问。最终,当这些操作完成之后,内存对象将释放。我们重复迭代这个循环(内存访问同步,解码,访问已经解码的视频)直到视频处理完成。
下面介绍如何使用OpenCL来处理视频图像。这里首先讨论如何使用OpenCL处理单一的视频帧。OpenCL访问图像数据的一个有效方法是使用image对象,image不仅更加容易访问二维和三维数据,也支持将数据存储成各种不同格式工,同时对这些数据取样的能力。视频图像处理包括各种各样的效果处理,比如去噪声处理、光照明暗处理、去隔行、缩放、去振铃效应等应用,这里的图像处理不限定某一种图像处理,以下以使光照明暗处理为例说明OpenCL进行帧图像的处理过程。内核函数中参数使用read_only image2d_t in代表输入视频帧,使用write_only image_2d_t out代表输出的视频帧,设置workitem大小为图像的大小,因此每个线程可以处理一个像素点。在内核中,使用read_imagef()函数对每一个像素返回一个float4类型的数,然后使用write_imagef()函数输出像素之前,执行亮度修正操作。
对于多个视频处理的情况,可以使用OpenCL命令队列模型来进行调度,使用事件来获取每一个入队任务的信息。这些事件使命令之间建立起一种顺序依赖关系。可能存在一种情况,即一个图像处理需要两个或多个视频流作为输入,因此在组合新的图像处理之前必须保证这些视频流都已经处理完。OpenCL运行时利用事件可以处理顺序依赖。
在处理的最后一个环节的目标是将处理好的视频通过屏幕显示给用户。一般而言,将一个处理好的视频帧显示只需要简单地将数据拷贝到与屏幕交互的缓存帧中。考虑到可移植性,本发明方案使用OpenGL作为输入,OpenGL的输出视频被移动到一个双缓存的纹理当中。纹理在一个四边形中进行渲染,从输出窗口顶部开始输出,大小和输出窗口大小一致。OpenCL提供一个在OpenCL和OpenGL之间共享内存对象的可扩展选项。因为内存对象共享模型是在上下文中定义的,在创建上下文的时候需要用参数描述哪一个是在OpenGL上下文被用来支持共享。一旦使用OpenGL共享创建了OpenCL上下文,OpenCL就可以使用OpenGL中的texture来创建自己的image对象,实现 内存共享。
上述技术方案可以看出,本发明充分利用了GPU强大通用计算能力,利用其大规模并行数据处理特性有效地加速了视频帧图像处理的效率,达到了显著提高视频图像处理及降低CPU功耗效果以及具有跨平台、可移植性等优点。
以上对本发明实施例所提供的一种基于GPGPU技术的并行视频图像处理方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,附图1显示了本发明方案视频图像处理结构及流程图,对于每一个输入的视频创建一个单独的工作线程进行解码,而计算线程则承担调用OpenCL进行图像处理工作,主线则负责获取视频帧,与解码及计算线程交互,并将视频输出到屏幕。显而易见地,下面的附图仅仅是本发明的一个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这个附图获得其它的解决结构流程图。
附图2是本发明方案视频图像处理的流程图。
Claims (4)
1.一种基于GPGPU技术的并行视频图像处理方法,其特征在于:
输入的视频是以压缩的形式存储计算机中的。从磁盘读取了输入数据之后,RGB格式的视频帧会用于进行一些图像处理操作和制作输出结果。视频文件必须被解码,以从压缩的视频中获得所需要的RGB格式。
2.根据权利要求1所述的一种基于GPGPU技术的并行视频图像处理方法,其特征在于:
使用多线程方式在GPU上进行解码视频。很多现代GPU拥有针对确定格式视频进行解码的特定功能部件。设计此功能旨在利用专业硬件解码相对于通用计算的高效性,并因此减少了CPU(或GPU)的功耗。另一方面为了提高性能,对每一个输入的解码视频都创建一个工作线程,并进行异步解码。
3.根据权利要求2所述的,一种基于GPGPU技术的并行视频图像处理方法,其特征在于:
对输入的每一视频帧图像,有别于传统方式使用CPU处理图像,本方法使用GPU超多线程并发处理图像数据,即基于OpenCL利用GPGPU技术对视频帧图像进行处理。
4.根据权利要求3所述的一种基于GPGPU技术的并行视频图像处理方法,其特征在于:
将处理好的视频帧数据,使用OpenGL将视频输出至屏幕。将里使用OpenGL输出视频是充分考虑到可移植性问题,方法是通过OpenCL与OpenGL之间共享内存对象,达到视频帧数据高效共享访问的效果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310744006.5A CN103888771A (zh) | 2013-12-30 | 2013-12-30 | 基于gpgpu技术的并行视频图像处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310744006.5A CN103888771A (zh) | 2013-12-30 | 2013-12-30 | 基于gpgpu技术的并行视频图像处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103888771A true CN103888771A (zh) | 2014-06-25 |
Family
ID=50957461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310744006.5A Pending CN103888771A (zh) | 2013-12-30 | 2013-12-30 | 基于gpgpu技术的并行视频图像处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103888771A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104125466A (zh) * | 2014-07-10 | 2014-10-29 | 中山大学 | 一种基于gpu的hevc并行解码方法 |
CN104714850A (zh) * | 2015-03-02 | 2015-06-17 | 心医国际数字医疗系统(大连)有限公司 | 一种基于opencl的异构共同计算均衡方法 |
CN104796670A (zh) * | 2015-04-23 | 2015-07-22 | 安徽省道一电子科技有限公司 | 基于流水线架构的跨平台多路实时视频处理系统架构 |
CN105163127A (zh) * | 2015-09-07 | 2015-12-16 | 浙江宇视科技有限公司 | 视频分析方法及装置 |
CN105827976A (zh) * | 2016-04-26 | 2016-08-03 | 北京博瑞空间科技发展有限公司 | 基于gpu的视频采集与处理装置及系统 |
CN106251291A (zh) * | 2016-07-28 | 2016-12-21 | 武汉斗鱼网络科技有限公司 | 利用OpenGL与OpenCL协作实现图像缩放的方法及系统 |
CN107770631A (zh) * | 2017-10-31 | 2018-03-06 | 长光卫星技术有限公司 | 适用于大面阵米级高分辨率卫星的视频影像智能处理系统 |
CN107920253A (zh) * | 2017-10-31 | 2018-04-17 | 北京赛思信安技术股份有限公司 | 一种基于gpu的视频处理方法 |
CN108419125A (zh) * | 2018-03-08 | 2018-08-17 | 弘成科技发展有限公司 | 多媒体课堂移动端的远程控制方法 |
CN108492242A (zh) * | 2018-04-17 | 2018-09-04 | 长沙景美集成电路设计有限公司 | 基于gpgpu中的2d桌面混合操作的实现 |
CN108563519A (zh) * | 2018-04-17 | 2018-09-21 | 长沙景美集成电路设计有限公司 | 基于gpgpu中的2d桌面块拷贝填充操作的实现 |
CN113946373A (zh) * | 2021-10-11 | 2022-01-18 | 成都中科合迅科技有限公司 | 一种基于负载均衡的虚拟现实多个视频流渲染方法 |
CN116248884A (zh) * | 2023-05-12 | 2023-06-09 | 北京麟卓信息科技有限公司 | 一种基于会话复用的多路视频解码方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894051A (zh) * | 2010-07-29 | 2010-11-24 | 中国科学技术大学 | 基于主辅数据结构的cpu-gpu合作计算方法 |
CN101908035A (zh) * | 2010-07-30 | 2010-12-08 | 北京华傲精创科技开发有限公司 | 视频编解码方法、gpu及其与cpu的交互方法及系统 |
US20120185671A1 (en) * | 2011-01-14 | 2012-07-19 | Qualcomm Incorporated | Computational resource pipelining in general purpose graphics processing unit |
CN102799416A (zh) * | 2012-07-16 | 2012-11-28 | 中国人民解放军国防科学技术大学 | 面向gpu的细粒度并行应用映射方法 |
-
2013
- 2013-12-30 CN CN201310744006.5A patent/CN103888771A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894051A (zh) * | 2010-07-29 | 2010-11-24 | 中国科学技术大学 | 基于主辅数据结构的cpu-gpu合作计算方法 |
CN101908035A (zh) * | 2010-07-30 | 2010-12-08 | 北京华傲精创科技开发有限公司 | 视频编解码方法、gpu及其与cpu的交互方法及系统 |
US20120185671A1 (en) * | 2011-01-14 | 2012-07-19 | Qualcomm Incorporated | Computational resource pipelining in general purpose graphics processing unit |
CN102799416A (zh) * | 2012-07-16 | 2012-11-28 | 中国人民解放军国防科学技术大学 | 面向gpu的细粒度并行应用映射方法 |
Non-Patent Citations (1)
Title |
---|
ZHUXIAOJIAN2: "AMD Accelerated Parallel Processing TECHNOLOGY OpenVideo Decode(OVD)API", 《豆丁网》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104125466A (zh) * | 2014-07-10 | 2014-10-29 | 中山大学 | 一种基于gpu的hevc并行解码方法 |
CN104125466B (zh) * | 2014-07-10 | 2017-10-10 | 中山大学 | 一种基于gpu的hevc并行解码方法 |
CN104714850A (zh) * | 2015-03-02 | 2015-06-17 | 心医国际数字医疗系统(大连)有限公司 | 一种基于opencl的异构共同计算均衡方法 |
CN104714850B (zh) * | 2015-03-02 | 2016-03-30 | 心医国际数字医疗系统(大连)有限公司 | 一种基于opencl的异构共同计算均衡方法 |
CN104796670A (zh) * | 2015-04-23 | 2015-07-22 | 安徽省道一电子科技有限公司 | 基于流水线架构的跨平台多路实时视频处理系统架构 |
CN105163127A (zh) * | 2015-09-07 | 2015-12-16 | 浙江宇视科技有限公司 | 视频分析方法及装置 |
CN105163127B (zh) * | 2015-09-07 | 2018-06-05 | 浙江宇视科技有限公司 | 视频分析方法及装置 |
CN105827976A (zh) * | 2016-04-26 | 2016-08-03 | 北京博瑞空间科技发展有限公司 | 基于gpu的视频采集与处理装置及系统 |
CN106251291A (zh) * | 2016-07-28 | 2016-12-21 | 武汉斗鱼网络科技有限公司 | 利用OpenGL与OpenCL协作实现图像缩放的方法及系统 |
WO2018018941A1 (zh) * | 2016-07-28 | 2018-02-01 | 武汉斗鱼网络科技有限公司 | 利用OpenGL与OpenCL协作实现图像缩放的方法及系统 |
CN107920253A (zh) * | 2017-10-31 | 2018-04-17 | 北京赛思信安技术股份有限公司 | 一种基于gpu的视频处理方法 |
CN107770631A (zh) * | 2017-10-31 | 2018-03-06 | 长光卫星技术有限公司 | 适用于大面阵米级高分辨率卫星的视频影像智能处理系统 |
CN108419125A (zh) * | 2018-03-08 | 2018-08-17 | 弘成科技发展有限公司 | 多媒体课堂移动端的远程控制方法 |
CN108492242A (zh) * | 2018-04-17 | 2018-09-04 | 长沙景美集成电路设计有限公司 | 基于gpgpu中的2d桌面混合操作的实现 |
CN108563519A (zh) * | 2018-04-17 | 2018-09-21 | 长沙景美集成电路设计有限公司 | 基于gpgpu中的2d桌面块拷贝填充操作的实现 |
CN108492242B (zh) * | 2018-04-17 | 2023-04-14 | 长沙景美集成电路设计有限公司 | 基于gpgpu中的2d桌面混合操作的实现 |
CN108563519B (zh) * | 2018-04-17 | 2023-06-09 | 长沙景美集成电路设计有限公司 | 基于gpgpu中的2d桌面块拷贝填充操作的实现 |
CN113946373A (zh) * | 2021-10-11 | 2022-01-18 | 成都中科合迅科技有限公司 | 一种基于负载均衡的虚拟现实多个视频流渲染方法 |
CN113946373B (zh) * | 2021-10-11 | 2023-06-09 | 成都中科合迅科技有限公司 | 一种基于负载均衡的虚拟现实多个视频流渲染方法 |
CN116248884A (zh) * | 2023-05-12 | 2023-06-09 | 北京麟卓信息科技有限公司 | 一种基于会话复用的多路视频解码方法 |
CN116248884B (zh) * | 2023-05-12 | 2023-06-30 | 北京麟卓信息科技有限公司 | 一种基于会话复用的多路视频解码方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103888771A (zh) | 基于gpgpu技术的并行视频图像处理方法 | |
US10783698B2 (en) | Point cloud operations | |
US10719447B2 (en) | Cache and compression interoperability in a graphics processor pipeline | |
US10929950B2 (en) | Method and apparatus for multi format lossless compression | |
US20190197420A1 (en) | Compression for deep learning in case of sparse values mapped to non-zero value | |
TWI614685B (zh) | 用於在虛擬執行環境中有效率地處理圖形的系統 | |
KR101558069B1 (ko) | 범용 그래픽스 프로세싱 유닛에서의 컴퓨테이션 리소스 파이프라이닝 | |
US10269326B2 (en) | Method and apparatus for color buffer compression | |
TWI733808B (zh) | 用於虛擬實境和多視角系統之交錯光柵化和像素著色的架構 | |
US11393131B2 (en) | Smart compression/decompression schemes for efficiency and superior results | |
US10403024B2 (en) | Optimizing for rendering with clear color | |
JP2021149944A (ja) | レイトレーシングパイプラインをスロットリングするための装置及び方法 | |
US10089964B2 (en) | Graphics processor logic for encoding increasing or decreasing values | |
JP2021149943A (ja) | レイトラバーサルハードウェアにおいてボックスクエリを実行するための装置及び方法 | |
US9959590B2 (en) | System and method of caching for pixel synchronization-based graphics techniques | |
CA2585157A1 (en) | Video processing | |
KR20230027098A (ko) | 델타 트리플릿 지수 압축 | |
CN107004252B (zh) | 用于在处理浮点值时实现功率节省技术的装置与方法 | |
CN109983533A (zh) | 用于固定颜色及图案子帧的提取减少 | |
US20230146073A1 (en) | Combined denoising and upscaling network with importance sampling in a graphics environment | |
KR101736041B1 (ko) | 임베디드 cpu-gpu 분산처리를 이용한 영상처리 고속화 방법 | |
Deng et al. | GPU-based real-time decoding technique for high-definition videos | |
US20230146005A1 (en) | Augmenting temporal anti-aliasing with a neural network for history validation | |
US10387991B2 (en) | Method and apparatus for frame buffer compression | |
KR20230130157A (ko) | 인트라-웨이브 텍스처 루핑 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140625 |
|
WD01 | Invention patent application deemed withdrawn after publication |