邵欣明
【摘 要】在計算機(jī)技術(shù)的快速發(fā)展過程中,人們需要對各種復(fù)雜的圖像進(jìn)行處理,圖像處理的方法呈現(xiàn)出多樣化和復(fù)雜化的特點,人們對CPU的性能要求也在逐漸提高,傳統(tǒng)的CPU圖像處理方法已經(jīng)不能滿足目前人們的實際需求。對一種高效快捷的圖像處理方法進(jìn)行研究,在充分利用GPU并行處理能力的基礎(chǔ)上,采用G++語言來完成相應(yīng)的圖像計算,其中的圖像處理并行算法主要包括彩色負(fù)片處理算法、透明合并處理算法等,并且與GPU實現(xiàn)相同效果的性能進(jìn)行相互對比,以此來證明基于GPU的圖像處理并行算法的高效性。
【Abstract】In the process of computer technology rapidly develop, people need to deal with all kinds of complex images. Image processing method presents diversity and complex characteristics, and the remind for CPU capability is higher, the traditional CPU image processing already can not satisfy the needs of people at present. In this paper, it research a high efficiency and fast image processing method. It makes full use of GPU parallel processing ability, using G++ language to complete the corresponding images. The image parallel processing algorithm method main contain the color negative film processing algorithms, transparent merging processing algorithms and so on, and comparing the performance of achieving the same effect with the GPU, to prove the efficiency of parallel image processing algorithm. based on GPU .
【關(guān)鍵詞】GPU;圖像處理;并行算法
【Keywords】GPU; image process; parallel algorithm
【中圖分類號】TP301. 6 【文獻(xiàn)標(biāo)志碼】A 【文章編號】1673-1069(2017)03-0071-02
1 引言
在目前業(yè)務(wù)逐漸復(fù)雜的情況下,人們需要進(jìn)行各種形式的圖像處理,其處理形式主要包括對數(shù)字圖形進(jìn)行模糊、銳化和合并并根據(jù)人們的實際需求將原始圖形轉(zhuǎn)化成人們所需要的圖形。人們對應(yīng)用系統(tǒng)圖形方面處理質(zhì)量要求越來越高,雖然CPU的整體運(yùn)行速度無法滿足人們的實際需求,這就需要利用GPU的快速計算能力,將其應(yīng)用到圖形計算當(dāng)中,以此來形成相應(yīng)的通用計算,并且能夠通過C++語言解決和處理復(fù)雜問題。
2 基于GPU圖像處理的相關(guān)技術(shù)
GPU技術(shù)。在計算機(jī)發(fā)展的過程中,人們對圖像處理的要求還沒有那么復(fù)雜,其中圖像的運(yùn)行和相關(guān)的計算方法都比較簡單,所以說不用借助相應(yīng)的硬件處理設(shè)備來對圖像進(jìn)行編輯處理,只需要借助GPU強(qiáng)大的計算能力就能夠?qū)D形進(jìn)行處理。但是隨著社會的不斷進(jìn)步和計算機(jī)技術(shù)的不斷發(fā)展,人們需要更快的運(yùn)算速度來進(jìn)行更高質(zhì)量的圖像處理,這就促使GPU運(yùn)算技術(shù)產(chǎn)生并不斷發(fā)展。從目前來看,CPU一般指的是中央處理器,是一種超大規(guī)模的集成電路,其主要功能是對計算機(jī)的指令進(jìn)行解釋,并對相應(yīng)的計算機(jī)軟件數(shù)據(jù)進(jìn)行處理,而對數(shù)字進(jìn)行處理就主要依靠GPU來進(jìn)行,通過指令來產(chǎn)生相應(yīng)的操作控制信號,以此來進(jìn)行相應(yīng)的圖像處理。而GPU主要指的是圖形處理器,也可以被稱為視覺處理器,其主要功能是將計算機(jī)系統(tǒng)所需要的現(xiàn)實信息進(jìn)行轉(zhuǎn)換驅(qū)動,并且向顯示器提供相應(yīng)的掃描信號,來對顯示器的顯示進(jìn)行正確控制,另外,圖形處理器也是顯卡的處理器,是顯卡中較為重要的一部分,與CPU相比來說,兩者具有一定的相似之處,而GPU主要是執(zhí)行復(fù)雜的數(shù)學(xué)計算和幾何計算,也就是說如果CPU想要畫一個圖形,只需要結(jié)合想要圖形的實際坐標(biāo)和特征,來產(chǎn)生相應(yīng)的信號,而GPU就能夠?qū)υ搱D形的所有像素進(jìn)行計算并且集成,并且在顯示器的指定位置上畫出相應(yīng)的圖形,并且對CPU進(jìn)行圖形完成的通知,等待后續(xù)的命令[1]。
CUDA。從上述可以知道,GPU主要是對圖形進(jìn)行編輯和處理,但是在計算機(jī)的眾多應(yīng)用領(lǐng)域當(dāng)中,GPU仍舊不能發(fā)揮出其具體功能,其主要是由于API的編程較為復(fù)雜,同時由于GPU內(nèi)部的內(nèi)存量較小,不能支持較大的程序規(guī)模,另外GPU的編程靈活性較差,這就使GPU無法發(fā)揮出其主要功能。為了對上述問題進(jìn)行解決,廠商N(yùn)VIDIA推出了一種運(yùn)算平臺,也就是CUDA,這種運(yùn)算平臺能夠并行計算架構(gòu),使GPU能夠?qū)ο鄬^為復(fù)雜的問題進(jìn)行解決,目前的CUDA已經(jīng)能夠支持C++語言的實際運(yùn)行,這也就意味著GPU能夠發(fā)揮出更為重要的作用。
數(shù)字圖形處理算法。數(shù)字圖像處理是根據(jù)實際的需求,來對圖像進(jìn)行相應(yīng)的運(yùn)算和設(shè)計,對數(shù)字圖像進(jìn)行處理主要目的體現(xiàn)以下方面:一是提高圖像的整體視覺效果和質(zhì)量;二是對圖像中所包含的信息和資源進(jìn)行提取和處理,三是對數(shù)字圖像的格式和信息進(jìn)行變化處理,以此來保證數(shù)字圖像數(shù)據(jù)的安全快速傳遞[2]。
3 基于GPU的數(shù)字圖像處理并行算法
3.1 高斯模糊算法并行化
高斯模糊也被稱為高斯平滑,目前屬于一種在各種圖像處理軟件中進(jìn)行廣泛使用的處理效果,對其進(jìn)行應(yīng)用的主要目的是減少圖像噪聲和降低細(xì)節(jié)層次,高斯模糊當(dāng)中的模糊,可以被看成周邊像素的平均值。高斯模糊算法并行化在串聯(lián)的程序結(jié)構(gòu)當(dāng)中無法進(jìn)行靈活變換,為了能夠?qū)PU中的硬件多線程資料進(jìn)行最大程度的利用,就需要按照CUDA多線程架構(gòu)處理的思想來對程序進(jìn)行重構(gòu)。在利用GPU對圖像進(jìn)行高斯模糊變化的過程中,其主要前提是水平方向上的一維高斯矩陣變換和垂直方向上的一維高斯矩陣變換是不相關(guān)的,換個說法是可以對其進(jìn)行分開處理,針對某一方向的處理,各個像素之間的處理也是不相關(guān)的,結(jié)合這樣的特性,可以利用GPU中的多線程并行將像素的處理任務(wù)分為不同的模塊,并且使GPU的線程來對其進(jìn)行計算?;贑UDA的高斯模糊處理,首先是需要對需要處理的原始圖形進(jìn)行讀入,然后將圖像中的像素在水平和垂直方向中進(jìn)行分塊,使GPU的線程塊能夠?qū)@些模塊進(jìn)行分開處理,在進(jìn)行處理之后,將處理之后的結(jié)果進(jìn)行合并,這樣就達(dá)到了想要的原始圖像高斯模糊效果。在這樣的過程中,需要根據(jù)實際的不同需求,來提供相應(yīng)的函數(shù),使GPU中的線程塊能夠?qū)Σ煌臄?shù)據(jù)進(jìn)行不同的處理和操作,這也就是高斯模糊算法在CUDA基礎(chǔ)上來進(jìn)行圖像處理的[3]。
3.2 彩色附頁處理算法并行化
對于彩色附頁的處理來說,屬于一種特別耗費時間的圖像處理過程,因為這種數(shù)字圖像處理方法要求將整個圖像中的每一個像素點都進(jìn)行處理,但是從數(shù)字處理的角度來看彩色附頁處理,其整體處理流程較為簡單,首先是需要對圖像進(jìn)行處理,然后根據(jù)圖像格式的不同來放入內(nèi)存,并且對圖像的所有像素點進(jìn)行讀取,對其中的r、g、b值進(jìn)行取出,用255減去所取出的值,得出處理過后的數(shù)值,最后利用這些數(shù)值,就能夠形成所需要的負(fù)片圖像。在進(jìn)行負(fù)片處理的過程中可以看出,針對圖像中的每一個像素點的處理都是相對獨立的,也就是說在對某一像素點進(jìn)行處理的過程中,其中各種數(shù)值的取值是與其他像素值不相關(guān)的,針對這樣的獨立性特點,可以在圖像處理的過程中,充分利用GPU多線程并行處理的優(yōu)勢,對所需要處理圖像中進(jìn)行一定程度的分割,然后對所分割圖像中的所有像素點進(jìn)行處理,最后進(jìn)行統(tǒng)一的合并,就能夠得出所需要的圖像[4]。在對圖像中各個像素點進(jìn)行處理的過程中,需要注意這樣像素點之間的運(yùn)算必須保證相互獨立,如果出現(xiàn)像素點不獨立的情況,那么就需要在程序中編寫大量的控制代碼,而這樣的控制代碼的運(yùn)行方式與GPU的處理方式不相匹配,不能達(dá)到最好的圖像處理效果。
3.3 透明合并處理算法并行化
圖像的透明合并處理也就是說需要實現(xiàn)圖像的一種半透明效果,從這種處理方式的數(shù)學(xué)公式和函數(shù)當(dāng)中可以看出,圖像的透明合并處理并不復(fù)雜,并且能夠在一定程度上實現(xiàn)各種形式的半透明效果,其中主要包括火光、煙霧和陰影等。在利用GPU多線程處理器來對圖像進(jìn)行透明合并處理的過程中,首先需要對兩幅圖像的位置進(jìn)行確定,并且根據(jù)圖像的實際大小,來對混合處理的范圍進(jìn)行確定,并且將所需要處理的范圍進(jìn)行分割,然后利用GPU的多線程處理器,來對所分割的單元進(jìn)行處理,最后進(jìn)行統(tǒng)一合并,來完成圖像的透明化處理[5]。在對圖像進(jìn)行透明合并處理的過程中,不存在較為復(fù)雜的邏輯控制,也就是說對于不同的處理對象,其處理流程和方式都是保持一致的,而不同處理對象之間并不存在相應(yīng)的聯(lián)系。
4 結(jié)語
通過對以上算法的介紹可以發(fā)現(xiàn),在利用CUDA編程框架,在基于GPU多線程處理器對圖像進(jìn)行處理的方式,具有較快的速度和較高的成像效果。
【參考文獻(xiàn)】
【1】翟優(yōu),曾巒,熊偉.基于不變特征描述符實現(xiàn)星點匹配[J].光學(xué)精密工程,2012(11):56-57.
【2】陳慶奎,王海峰,那麗春,等.圖形處理器通用計算的研究綜述[J].黑龍江大學(xué)自然科學(xué)學(xué)報,2012(05):23-24.
【3】Giorgia Zucchelli.使用MATLAB輕松享受GPU的強(qiáng)大功能[J].電子設(shè)計技術(shù),2012(03):44-45.
【4】劉紹波,劉明貴,張國華.基于CUDA的加速MATLAB計算研究[J].計算機(jī)應(yīng)用研究,2010(06):46-47.
【5】宋曉麗,王慶.基于GPGPU的數(shù)字圖像并行化預(yù)處理[J].計算機(jī)測量與控制,2009(06):77-78.