ISSN在线(2278 - 8875)打印(2320 - 3765)
Shivang Ghetia1,Nagendra Gajjar2和前腿Gajjar3 |
相关文章Pubmed,谷歌学者 |
访问更多的相关文章国际先进研究期刊》的研究在电子、电子、仪表工程
离散余弦变换(DCT)技术得到频率间隔。应用于图像DCT时,它会给图像的频率隔离,因为它是由直流值和范围的低频值高频率值。DCT图像压缩是非常有用的。消除图像高频值时,它会给高效压缩图像质量的退化为代价的。但是,瓶颈是当2-Dimentional DCT进行CPU,它需要太多的时间,因为非常高阶的计算。为了克服这个问题,图形处理单元(GPU)已经为并行处理打开门。在本文中,我们实现了二维DCT在NVIDIA GPU并行方法使用CUDA(统一计算设备架构)。通过应用在这里提出了二维DCT图像处理算法已经缩小了时间要求和取得速度由97 x因素又包括数据传输时间从CPU、GPU和CPU。所以,并行处理的二维DCT算法在GPU上实现快速和高效的图像处理的目的。
关键字 |
DCT,压缩,CUDA GPU |
介绍 |
强大的计算的必要性正在迅速增加。在进步在计算机的处理能力,需要考虑的第一件事是processorA¢年代操作频率。但它不能指望随着时间不断增加。事实是,不能增加时钟频率以外的一些限制因为各种因素如过热、等,使得并行计算性能增强的唯一选择。由于提高建筑和编译器的复杂性、多核处理器一直挑战工程师。但是公司在视觉领域的计算和图形处理像NVIDIA, AMD欢迎这些挑战并打开新的大门并行计算和高性能计算领域的[9]。 |
授权由NVIDIA CUDA,结合高端C语言由额外的功能,提供了一个接口开发人员和设备之间的数据传输和分配的工作之间的GPU和CPU [8]。它有能力识别、编程、跟踪单个核心计算和并行执行多个任务按用户要求。 |
这对并行处理灵活自然吸引了图像处理领域的研究人员。在图像处理技术中,图像处理需要太多的时间,使系统非实时。研究人员总是试图缩小这个问题。GPU已经推出了新的翅膀来解决这个问题。像NVIDIA公司已经开发出高度称职的硬件和软件提供有效的加快并行处理。这项发明使并行处理领域的革命。利用其强大的技术,优化的图像处理算法可以实现[10]。随着图像处理,图像压缩现在也非常重要。可用不同的压缩算法,可以在GPU上实现快速处理压缩。其中一个最有效的图像压缩算法是离散余弦变换(DCT)。 When DCT is applied on an image, it will segregate its frequency components. As image is in 2-dimentional format, to get complete segregation of an image 2-D DCT must be applied. This paper shows the method for applying 2-D DCT on an image on a GPU. This will reduce the processing time and will give much accurate results. |
并行图像处理和压缩方法 |
随着技术的进步,世界现在是指图像处理作为一个最强大的自动化和监测领域。在使用图像处理之前,必须确保图像应该被处理在可用的时间跨度。这只能使实时系统附近。重要性迅速处理的图像是非常关键的在这些天。另一个瓶颈是,在大多数情况下,一个图像的大小是过高,冗余数据。因此,至关重要的是,压缩算法应该隐含零这样的冗余数据但处理和实现DCT压缩算法对CPU需要太多的时间,使系统非实时。在这个场景中,GPU提供了解决方案满足这样的快速计算。NVIDIA CUDA克服发展需要并行处理[1]。 |
让一个图像的大小m x n处理并根据二维DCT压缩算法在GPU上。实现并行处理方法之前,你必须有知识的组织块大小和数量的线程块在GPU上。图像压缩的算法需要的行数(m)的块和列数(n)为单块内线程的总数[3]。例如,考虑图像的大小4 x 6,如图1所示。BlockIdx块指数会有所不同从0到5和threadIdx(线程索引)会有所不同,从0到3。 |
![]() |
一旦决定大小的块,原始图像数据需要转换成一维格式进行处理的目的。原始数据(图像数据)是使用行主要转化为一维数据格式。一旦手头的一维数据,提出二维DCT算法可以应用。不同部分的实现二维DCT和压缩算法如下: |
a . N点数据转换为2 N点数据 |
现在可用在一维数据格式,它需要N点数据转换为2 N点数据,其中N点数据是每一块的数据。N点数据转化为2 N点数据通过镜面反射(N点数据。这面镜子的成像数据每一块应该是附加到相应的块。这个过程见图2。在这个图中,第一部分是原始数据,后期是镜子成像数据附加到其相应的N点数据。 |
![]() |
b应用2 n点上CUFFT 2 n点数据 |
一旦手头2 n点数据,应用快速傅里叶变换(FFT)。在CUDA, FFT直接可用。NVIDIA已经开发了„cufft。hA¢头文件数据优化FFT。这个CUFFT库非常丰富,它提供了一个选择FFT和逆转FFT [12]。这里使用的数据是在形式的一维。因此,对于一维数据,CUFFT库提供CUFFTPLAN1D。它还提供了CUFFTPLAN2D和CUFFTPLAN3D分别为2 d和3 d数据[12]。CUFFT图书馆的另一个特点是,它提供了不同类型的铸件选项如C2R(复杂的数据真实数据),R2C(真实数据复杂的数据)和C2C(复杂的数据复杂的数据)[12]。申请CUFFT (CUDA FFT),应该通过一些参数。 These parameters are: |
1)在FFT点数,即2 n |
2)批量大小,将相同数量的列的形象 |
3)类型的FFT,将CUFFT_FORWARD转换是需要[6]。 |
c . 2 N点数据转化为N点数据 |
CUFFT数据可用后,2 N点数据应该转换回N点数据。2 n点CUFFT应用数据。在每个2 N点数据,第一个N点数据是重要的和其他N点数据是一个负面的第一个N点数据的镜像。所以,从每个2 N点数据,第一个N点数据是守恒的,剩余的N点数据是被忽视的。现在是由原始数据收集前N点的2 N点数据。这是图3所示。 |
![]() |
d . N的变换点数据转换行主要格式列主要格式 |
上述N点数据现在需要改变了。最初,图像数据在二维形式和2 - D数据转换为一维使用行主要格式。在这一行主要CUFFT格式化数据,并应用上述步骤。下一步是将这一维N-point处理数据转换成列的主要格式进一步处理。N点数据转换成转置N点数据,内核必须写好计算启动线程,这些线程索引[11]。在这里,线程索引从0到总行数会有所不同。每个线程,列数时间迭代。在每一个迭代中,线程索引偏移量添加到迭代索引和行数的乘法。 |
e .转置N点数据转换为2 N点数据和应用CUFFT |
转置N点列主要格式化的数据现在是转化为2 N点数据。这里,程序将N点数据转化为2 N点数据与上一个相同。但现在唯一的区别是,每一块的线程数量等于的行数和总批数等于列数。块大小之间的交换和块的总数是由于列主要格式数据。一旦准备好使用2 n点数据,这个数据是用来应用CUFFT [6]。这里也有必要注意传递参数CUFFTPLAN1D [12]。现在数据列主要格式,批量大小等于透光块大小[6]。点应用FFT也是2 n点。一旦CUFFT_FORWARD应用于这2 n点列主要格式化数据,数据乘以捻系数。在抚弄因子相乘,将2 n点的总数。 For each 2N point data, first N point data is multiplied with its corresponding twiddle factor of 2N point. |
一旦每个前N点数据的每个2 N点数据乘以转动因子,这2 N点数据需要转换回N点进行数据量化和压缩的目的。转换成N点数据从每个2 N点数据,第N个点聚集和放在一起。现在准备好量化和压缩收集数据。如果我们这N点一维数据转换为二维数据,生成一个图像,这将导致图像的频率间隔,类似于图像的DCT。相左一角落里包含一个图像的直流值,从上到下或从左到右,频率增加[13]。样本图像显示频率间隔如图4所示。 |
![]() |
f . N点的量化数据 |
N点数据是需要以特定方式进行扫描。曲折的扫描是用来制造数据的形式将逐步增加频率从左到右[15]。曲折的扫描模式(从0到63)如图5所示。 |
![]() |
为此,内核必须谨慎。线程的总数应该启动取决于两个条件。这些条件的不同部分的循环索引小于宽度的一个形象和部分循环索引大于图像的宽度。循环索引将对角线的总数在曲折的扫描行扫描。在图5中,循环索引会有所不同从0到12,有13对角扫描行。国旗被用于获得扫描线的知道当前状态。For循环索引不到一个图像的宽度, |
国旗= loop_index + 1; |
但for循环索引更大宽度的图像线程索引将会有所不同。它将如下所示: |
国旗=宽度- (loop_index + 1) %(宽度); |
现在是需要检查数据是否在上或下半部三角形一个图像。一旦这是决定,还需要检查是否循环索引是奇数或偶数。因此,将会有四个条件检查,根据上部或下部和奇数还是偶数索引。 |
让,宽度=一个图像的宽度 |
高=高的形象 |
id =线程索引 |
loop-indexing =我= + hight-1宽度 |
![]() |
一旦这个扫描结束后,我们在一维频率分离数据格式。现在这些数据可以用于实现量化算法。压缩的目的,降低扫描一维数据的一部分被忽视和前数据量化使用标准量化表。这将消除高频组件和零冗余。运行长度编码可用于压缩冗余数据[16]。其他压缩技术也可以应用。 |
g .再生的图像 |
现在需要压缩数据生成原始数据。为此,逆量化应用[16]。应用逆量化后,之前的所有内核实现在相反的顺序。它将遵循以下步骤: |
N - N点数据转换成2点 |
——应用CUFFT_INVERSE 2 n点 |
——应用转置后转换成N点数据 |
应用2 n点转换CUFFT_INVERSE |
——应用乘法抚弄因素 |
实现以上内核将生成最初的原始数据图像,但由于量化有点扭曲。但PSNR(峰值信噪比)仍在可接受的范围内。PSNR值主要是定义通过均方误差(MSE) [17]。MSE可以计算, |
![]() |
输出结果和算法的加速 |
图像压缩算法可以实现NVIDIA GPU的CUDA启用。图像的处理,二进制文件的图像是必需的。我们使用Matlab将所需图像介绍二进制文件。一旦生成的二进制文件,这种二进制进口在Visual Studio因为Visual Studio可以利用CUDA工具包运行时[9]。 |
这毕竟GPU处理二进制数据和计算,这些数据写回一个二进制文件,并使用生成的二进制文件,最终的图像可以生成[7]。不同大小的图像测试及其产生的图像也在这里提出。虽然比较该算法与另一个算法进行处理,一个人应该保持处理时间和生成图像的PSNR的眼睛。量化也是一个功能部分。根据压缩需求,不同的压缩算法可以实现在曲折的扫描。结果在这里描述没有任何量化才能知道多少可以生成精确的图像。处理时间以毫秒(ms)。 |
![]() |
当我们把这些数据图表,图6中,它将说明如何高效的使用GPU高计算而不是CPU。图表显示,随着图像大小增加,需要更高的CPU时间但GPU处理同一幅图像将仅几毫秒。 |
![]() |
结论 |
图像处理和压缩成功实现后的DCT算法在GPU,高度等大型图像处理从卫星图像也可以实现。在这种情况下,它是至关重要的,由卫星拍摄的图像处理在卫星和地球上的传播。处理这样的大规模图像更快,GPU并行处理将帮助。压缩算法的实现将有助于减少传输带宽要求处理的数据。这里的结果直接描述处理相比,CPU的速度越快,但唯一的威胁就是将数据从CPU或GPU亦然。研究数据直接喂养到GPU的。 |
这里使用FFT和转换处理的一个图像,小波变换也可以在GPU上实现为处理和压缩的图像。其他方面对GPU处理图像数据处理的准确性具有特殊的功能单位。当数据处理精度和数字小数点后也很重要,GPU计算最佳的目的。的现有技术使用图像处理作为一个手,处理和压缩的图像可以部署在GPU诱人的结果。 |
引用 |
|