基于cuda及边缘检测的图像插值的制作方法

文档序号:6362950阅读:188来源:国知局
专利名称:基于cuda及边缘检测的图像插值的制作方法
技术领域
本发明涉及一种基于CUDA(Compute Unified Device Architecture,计算机统一架构体系)及边缘检测的图像插值方法,利用CUDA并行技术并以像素为单位处理数据,不降低图像处理复杂度的同时加快了处理速度,提高效率。其中涉及NVIDIA (英伟达)公司的CUDA技术及图像处理过程中提高图像分辨率方法。
背景技术
在数字图像处理领域中,图像插值是一类经常碰到的问题,而且图像插值具有十分重要的实用价值。通过插值可以实现图像的放大显示,提高图像的分辨率。例如,对于侦察卫星,卫星图像的分辨率和清晰度越高,识别军事目标的可能性越大、准确度越高,对军事和国防事业具有重要的意义。而且,放大的高清晰图像一方面提供令人愉悦的图像,另一 方面还提供图像更多的细节,这些细节对识别和分析图像非常重要。但是,由于硬件性能的限制,通过摄像机或者其他视频设备获得的图像往往达不到所需的分辨率,若从硬件上着手改进将需要付出较昂贵的代价,而采用图像插值技术来提高数字图像的分辨率和清晰度,从软件方面进行改进和弥补硬件的不足是很有现实意义和价值的。目前已有许多算法被提出来解决提高图像分辨率问题,线性插值算法便是解决该问题的一种重要方法。常见的线性插值,如双线性或三次样条插值,基于空间不变模型,计算简单,效率高,但是捕捉边缘能力差,得到的HR (high definition,高清)图像边缘模糊并有很多锯齿。为了得到更好的插值效果,人们不断提出新的插值算法,NEDI (New Edge-DirectedInterpolation,新型基于边缘检测的插值)算法就是其中之一。该算法的放大效果要远远好于传统的线性插值,但是相应的复杂程度也远高于传统的线性插值算法。NEDI算法利用协方差的自适应插值方法可以用来调节插值过程使得它能满足任何方向上的边缘。它能用低分辨率图像的协方差和高分辨率图像的协方差具有几何对偶性的特点实现高分辨率图像重建。该方法是一种新的非迭代方向自适应插值算法,由Xin Li和Orchard提出,其基本思想是先计算原始图像各像素点的局部协方差系数,再利用原始图像与待插值图像协方差间的几何对偶性来计算待插值图像中需要插入的像素点的值。NEDI算法虽然实现了方向自适应性,提高放大图像的质量,但计算复杂度很高,不能在实际的实时图像处理中得到广泛的应用。GPGPU (通用计算图形处理单元)编程是软件开发中最热门的最有前途的趋势之一。通过编写专门在目前的高端3D图形卡中的大规模并行流处理器上运行的代码,程序员能够加快一系列算法,并且并不局限于在高性能计算应用程序中。最流行的GPGPU(GeneralPurpose Computation on the GPU,通用图形处理器)架构是NVIDIA公司开发的CUDA技术。CUDA是利用GPGPU进行并行运算应用开发的一套C语言编程平台,通过它可以利用特定显卡的高性能运算能力进行一些大规模高性能计算,有效提升计算机系统的使用效率。它使用C语言为基础,可以直接以大多数人熟悉的C语言,写出在显示芯片上执行的程序,而不需要去学习特定的显示芯片的指令或是特殊的结构。由于CUDA特别的编程模型及存储数据方法,使得大量而复杂的同类运算可以由线程同时处理,使得用户能够以更短的时间完成图像视频处理并让CPU得以解放出来处理一般性日常任务。总而言之,基于边缘检测的图像插值算法的复杂度高而处理实时性差,如果可以用CUDA技术的并行处理数据功能解决,不仅可以提高重建高分辨率图像实时性,作为一个创新点对实时的图像处理有很高的实用价值,而且对利用CUDA技术降低图像处理中其它算法的复杂度也有很好借鉴作用
发明内容
为解决基于边缘检测的图像插值算法因高复杂度而产生的处理时间增加问题,本发明的目的在于提供一种基于CUDA及边缘检测的图像插值方法,利用CUDA并行技术处理图像数据在不改变处理图像质量同时减少处理时间、实现对图像的实时处理。为达到上述目的,本发明的构思如下
I、首先需要求取图像的灰度域。处理图像一般选择YUV色彩空间而不是RGB色彩空间,因为RGB是三个独立的色彩空间,每一个色彩空间都不能完全反映图片的边缘特性,而对于Y代表亮度信号,U、V代表色度信号的YUV信号来说,像素的Y空间分量可以完全的反映出一副图像的边缘,Y空间的协方差可以包含一副图像的边缘信息,只需计算出灰度信息Y的协方差,即可得到RGB空间的协方差,不仅降低计算复杂度,而且使得传输时也只需要传输Y信号即可。所以,将图像由RGB格式转换为YUV格式再进行处理。2、要进行线程的划分,即把图像的循环执行改为并行处理。实验用GPU协处理器为GTX 260+的处理器,总共有24个SM,根据CUDA编程模型中提到的GPU所能包含的线程块、线程数量,以及线程块所能包含的数量,得出本GPU所能供分配的线程块最多为192,最少应该为48个、最多能供分配的线程数为18432。对图像进行分块,然后利用多线程并行计算各个块的协方差以及插值,提高运行效率,减少处理图像所用时间。3、用分块方法在CUDA上实现并行计算,合理的利用CUDA技术提供的各个存储器,将纹理存储器、共享存储器、全局存储器全部合理利用,将存取时间降到最小,从而使处理速度得到提升,本专利中用纹理存储器来存储原始的图像数据,用共享存储器存储在插值过程中产生的对角像素的元素。4、对块边界差值点进行检错处理。由第2点提出的用分块方法处理一幅图像,在处理结束整合为一幅图片时势必会由于块的边界像素值在插值算法中的缺失,造成边界处理效果不理想。在合成为一幅图像时,会在块边界产生边界效应,影响整幅图像的效果。所以这里提出对上述求出的插值点,尤其是块边界插值点进行检错处理,防止因为分块并行而出现的块效应。根据上述发明构思,本发明采用下述技术方案
一种基于CUDA及边缘检测的图像插值实现方法,其特征在于操作步骤如下
1)把原始图像从RGB转换为YUV空间;
2)把转换后的图片像素读入设备内存的纹理存储器,并进行对角像素协方差求取以及插值;
3)对角像素信息放入本地存储器中;4)进行右边和下边像素的协方差求取以及插值;
5)插值保护检测。所述步骤I)把原始图像从RGB转换为YUV空间是读入像素数据至内存并进行图像灰度域的转换,此转换在CPU上实现,转换公式为
Y= 0.299R + 0.537G + 0.114B。所述步骤2)把转换后的图片像素读入设备的纹理存储器,并进行对角像素协方差求取以及插值是利用CUDA平台进行多线程并行处理,主机CPU调用一个多核API使插值算法在GPU上并行处理,将图像分为N块,每个块大小为2 X 3,即6个像素值,每个线程处理一个块;讲图像像素全部读入纹理存储器,进行线程分配,每个线程中处理六个像素;用
^2μ,2κ = 像素插值出Am+Um+I像素
所述步骤3)对角像素信息放入本地存储器中、将步骤2)中每个块产生的ik+1A+1信息存储到本块的共享存储器中,这样可以使同一个块中的所有线程共享读取,需要把边界处外扩4行的iL+i2H+1的像素数据也读入本块中,因为在第二步边界处求和^ 2is,2 +l 时需要其他块在步骤2)所求得的 ^+ι2κ+1。所述步骤4)进行右边和下边像素的协方差求取以及插值是利用纹理存储器和共享存储器中的图像信息按步骤2的原理插值出r2jH+Us和Γ2Κι2β+1的估计像素^s+Us和
Λ
1 2w,2s+l ο所述步骤5)插值保护检测为对步骤2产生出来的iL+Us+1进行如下判断然后求得最终的Ζ2! +1>!+1
右 ^2k+U*+1 — ^2(*+Jt),2(s+1)则 ^2*β+12*+1 = 11 皿 ^2(μ+ΛΡ(κ+Ι);
若 ^ +l,2s+l —maX则 ^2w+l2 +l = maX ^2(M+fcJ,2(a+i);
若 γ[> fmn ^(^+^(η+ι)._
.M+U*+l I <mgK ] (Μ+Α;ι2(κ+|)^2m+L2 +1 ^!w+L2 +l
步骤4)做同样原理的选择。本发明的有益效果是基于CUDA实现NEDI算法,不仅保持了效果好的插值算法的图像质量,而且运算速率相比于CPU下执行速率加快了一百多倍,实现简单、硬件要求低。对后续视频处理方面做CUDA加速运算,提高效率做了很好的前序工作。


图I是具体实施方式
的流程 图2是插值实现详细过程示意 图3是像素数据向量排列及插值点插值方向示意图;图4是测试插值算法结果对比图;其中(A)为bi-cubic插值,(B)为NEDI插值。
具体实施例方式本发明的一个优选实施例结合附图详述如下参照图I,本基于CUDA及边缘检测的图像插值方法,操作步骤如下本实施例用图像大小为320X240像素的一幅RGB格式彩色图像。步骤I.把原始图像从RGB转为YUV空间。此步骤在CPU上实现,转换公式见式(1 )。
权利要求
1.一种基于CUDA及边缘检测的图像插值方法,其特征在于操作步骤如下 把原始图像从RGB转换为YUV空间; 把转换后的图片像素读入设备内存的纹理存储器,并进行对角像素协方差求取以及插值; 对角像素信息放入本地存储器中; 进行右边和下边像素的协方差求取以及插值; 插值保护检测。
2.根据权利要求I所述的基于CUDA及边缘检测的图像插值方法,其特征在于所述步骤I)把原始图像从RGB转换为YUV空间是读入像素数据至内存并进行图像灰度域的转换,此转换在CPU上实现,转换公式为X = 0.299R + 0.587G + 0.114B。
3.根据权利要求I所述的基于CUDA及边缘检测的图像插值方法,其特征在于所述步骤2)把转换后的图片像素读入设备的纹理存储器,并进行对角像素协方差求取以及插值是利用CUDA平台进行多线程并行处理,主机CPU调用一个多核API使插值算法在GPU上并行处理,将图像分为多块,每个块大小为2X3,即6个像素值,每个线程处理一个块;将图像像素全部读入纹理存储器,进行线程分配,每个线程中处理六个像素;用4
4.根据权利要求I所述的基于CUDA及边缘检测的图像插值方法,其特征在于所述步骤3)对角像素信息放入本地存储器中、将步骤2)中每个块产生的ik+UK+1信息存储到本块的共享存储器中,这样可以使同一个块中的所有线程共享读取iL+UK+I ,需要把边界处外扩4行的iL+W +I的像素数据也读入本块中,因为在第二步边界处求和时需要其他块在步骤2)所求得的。
5.根据权利要求I所述的基于CUDA及边缘检测的图像插值方法,其特征在于所述步骤4)进行右边和下边像素的协方差求取以及插值是利用纹理存储器和共享存储器中的图像信息按步骤2)的原理插值出r2M+Ws和r2lH,2s+1的估计像素和尾_+1。
6.根据权利要求I所述的基于CUDA及边缘检测的图像插值方法,其特征在于所述步骤5)插值保护检测为对步骤2产生出来的i^+Ws+1进行如下判断然后求得最终的&+1^+1
全文摘要
本发明设计一种基于CUDA及边缘检测的图像插值方法。高质量的图像或者视频缩放必然伴随着高复杂度的计算,基于CUDA技术即利用多线程在GPU(GraphicsProcessingUnit,图形处理器)上同时进行像素处理便可以减少计算的复杂度,同时加快执行速度,减小CPU(CentralProcessingUnit,中央处理器)的功耗,提高整体执行效率。通过CUDA技术实现插值算法,满足了对图像的实时处理,为以后CUDA技术处理复杂度较高图像算法、模块奠定了很好的基础。
文档编号G06T5/00GK102622723SQ20121000698
公开日2012年8月1日 申请日期2012年1月11日 优先权日2011年5月25日
发明者刘婷, 杨胜齐, 程荣辉, 陈学伟 申请人:上海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1