• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于C++AMP的計算機圖像視頻處理

      2018-05-28 01:24:21馬明棟
      計算機技術與發(fā)展 2018年5期
      關鍵詞:鄰域圖像處理算子

      蘇 錦,馬明棟

      (南京郵電大學 通信與信息工程學院,江蘇 南京 210003)

      0 引 言

      現(xiàn)今,計算機技術飛速發(fā)展,數(shù)字圖像處理技術也隨之快速發(fā)展,因此人們對數(shù)字圖像處理的要求越來越高。如現(xiàn)在的智能手機不單單僅只是靠處理器的性能作為賣點,更加尋求在拍照方面的提升,清晰的圖片以及更高的分辨率能夠提供更好的體驗。圖像并行技術融合了數(shù)字圖像處理和并行計算兩個方面的特性[1]。計算機圖像處理通過目前非常流行的并行技術和數(shù)字圖像處理實現(xiàn)并行化,不僅能夠處理大規(guī)模的數(shù)據(jù),并且在處理速度上也大大提升。這點在圖像處理中的作用尤為顯著,在圖像處理的過程中提升了不少速度,節(jié)省了很多時間,并且對于邊緣的提取也很有成效[2]。

      目前,國內在計算機并行計算技術研究方面頗有成效,在很多對性能要求很高的并行計算應用方面都取得了一定的成果。使用比較多的并行技術有三種,除了CPU并行技術和GPU并行技術外,用到最多的是異構平臺CPU+GPU,它結合了前兩種的優(yōu)勢。這三種技術都有自己獨特的優(yōu)勢,可以根據(jù)需求使用。

      計算機圖像視頻的處理在各領域應用廣泛。視頻監(jiān)控在生活中無處不在,無論是道路監(jiān)控還是其他方面的視頻監(jiān)控都需運用計算機圖像處理技術,但是對于監(jiān)控視頻圖像,大多在數(shù)據(jù)處理上很欠缺,大部分監(jiān)控視頻的分析處理都是由人工完成的。如在小區(qū)安全監(jiān)控方面,當有偷竊安全事故發(fā)生時,往往需要花大量時間來翻看近段時間的監(jiān)控視頻,加上視頻的畫質非常模糊,獲取到有用的信息非常困難,這給案件的處理造成了極大的不便。因此獲取高質量以及快速的視頻監(jiān)控是非常急需的。

      在當前視頻圖像處理的基礎上,基于C++AMP并行處理對傳統(tǒng)Canny算法進行改進,使得在圖像邊緣處理、圖像的連續(xù)性以及圖像處理的速度方面獲得一定的提升。

      1 C++AMP基礎概念

      C++AMP作為一種新的GPU并行計算技術,是對C++的一種擴展,模板類型是在進行并行時所需的。為了降低并行軟件在開發(fā)上的難度,且避免在開發(fā)過程中的一些安全問題,C++AMP的開發(fā)者提供了類型安全的泛型,保證在使用時不會出現(xiàn)錯誤的數(shù)據(jù)類型。

      C++AMP作為并行庫和語言的擴展,可以在程序中實現(xiàn)異構計算。通過使用C++AMP創(chuàng)建不會過時以及可移植的應用程序,可以讓那些適合并行計算的程序的運行速度顯著提高。

      如果GPU獲取處理數(shù)據(jù)以及獲取輸出結果的時間比GPU節(jié)省的時間更長,那么將會使程序變得非常復雜??梢允褂霉ぞ邅慝@取GPU性能,保證在GPU處理大量數(shù)據(jù)時獲取實時性能。使用開發(fā)工具Visual Studio中的一些新功能有助于研究它的性能[3]。

      C++AMP編寫的可執(zhí)行程序可以在各種計算機上運行,它還有一個非常重要的特征就是不會過時,可以將用它編寫的程序部署在云端,供其他計算機使用。C++AMP中的GPGPU編程可以使開發(fā)者獲得很多益處。它是通過GPU和CPU的向量處理單元,利用異構計算的一種方法。隨著不斷地發(fā)展,其規(guī)模越來越大,應用越來越廣泛。

      C++AMP經(jīng)歷了CPU并行的發(fā)展過程,現(xiàn)在已經(jīng)是CPU+GPU的異構并行階段[4]。C++AMP和Visual Studio作為主流開發(fā)人員所需要的工具、庫和框架,使得異構計算變得更加容易[5]?;谶@些,在圖像處理方面會有極大的提高,以后人們就不會再面對長達幾十甚至上百個小時的監(jiān)控視頻發(fā)呆,而是直接分析計算機給出的數(shù)據(jù),當前畫面中有多少人、都是誰、誰的動作可疑等??傊悄鼙O(jiān)控將會迅速發(fā)展。

      2 傳統(tǒng)Canny算子

      在圖像處理的過程中,濾除噪聲是非常重要的一步。圖像噪聲很容易影響圖像的邊緣檢測結果,為了使得到的圖像更加平滑,可以先對圖像進行高斯濾波,然后再進行卷積,這樣得到的圖像相對更加平滑[6]。

      傳統(tǒng)的Canny算法是利用二維高斯函數(shù)的一階導數(shù)來實現(xiàn)平滑處理,設二維高斯函數(shù)為:

      (1)

      梯度向量為:

      (2)

      (3)

      (4)

      然后將圖像f(x,y)分別與得到的兩個濾波器卷積,從而得到圖像I(x,y),且

      (5)

      (6)

      上式中,k為一個常量;σ為一個決定高斯濾波器寬度的分布參量。相比σ小的濾波器信噪比低;比σ大的濾波器雖然精度相對低一點,但是它的信噪比高,得到的圖像會更加平滑。

      梯度的方向和幅值可以用有限差分計算,一階差分卷積為:

      (7)

      φ1(m,n)=f(m,n)*H1(m,n)

      (8)

      φ2(m,n)=f(m,n)*H2(m,n)

      (9)

      (10)

      (11)

      邊緣檢測點的位置只有當沿θφ方向兩個相鄰像素點的梯度幅值小于等于φ(m,n)時,才有可能是該位置[7]。

      雙閾值算法使用高、低兩個閾值檢測與連接邊緣,分割得到兩個閾值邊緣圖像T1(i,j)和T2(i,j),因此得到的圖像邊緣信息是正確的。為了保證T1(i,j)中在圖像上沒有間斷,雙閾值算法需要把邊緣連接成完整的輪廓,遇到輪廓端點時,為了讓輪廓上的邊緣連接起來,該算法就在由低閾值得到的邊緣圖像T2(i,j)的8鄰域位置尋找。然后利用遞歸算法在T2(i,j)中尋找邊緣,直到T1(i,j)中的輪廓形成一個完整的圖像為止[8]。

      3 Canny算子優(yōu)化及其并行化

      3.1 Canny算法優(yōu)化

      對于傳統(tǒng)Canny算法,為了求圖像梯度幅值,可以通過2×2鄰域內的有限差分來計算。但是這種方法對噪音的要求很高,只要有一點檢測出來的邊緣效果就很差。改進的Canny算法可以很好地解決這個問題。首先采用3×3鄰域代替2×2鄰域,然后在x方向、y方向、45°方向和135°方向計算一階偏導的差分,利用差分結果計算圖像的梯度幅值[9]。這種方式可以準確地定位邊緣信息,得到非常好的處理效果,避免噪聲帶來的影響。

      x方向的偏導數(shù)為:

      Fx(x,y)=I(x+1,y)-I(x-1,y)

      (12)

      y方向的偏導數(shù)為:

      Fy(x,y)=I(x,y+1)-I(x,y-1)

      (13)

      45°方向的偏導數(shù)為:

      F45°(x,y)=I(x-1,y+1)-I(x+1,y-1)

      (14)

      135°方向的偏導數(shù)為:

      F135°(x,y)=I(x+1,y+1)-I(x-1,y-1)

      (15)

      水平方向的差分為:

      Ex(x,y)=Fx(x,y)+[F45°(x,y)+F135°(x,y)]/2

      (16)

      垂直方向的差分為:

      Ey(x,y)=Fy(x,y)+[F45°(x,y)-F135°(x,y)]/2

      (17)

      像素的梯度幅值表示如下:

      M(x,y)=[Fx(x,y)2+Fy(x,y)2+

      (18)

      梯度方向為:

      (19)

      傳統(tǒng)的邊緣檢測檢測到的邊緣信息比較模糊,可能會看到一個假的邊緣。Canny算法采用3×3大小的鄰域,沿梯度方向使用8方向的鄰域對梯度幅值陣列M[x,y]中的所有像素插值,邊緣點就是幅度的極大值點[10]。

      3.2 C++AMP處理流程

      現(xiàn)今比較流行的有CUDA、OpenCL以及C++AMP[11]。在眾多并行算法中,C++AMP有很好的移植性,可以將寫好的并行算法移植到不同的硬件平臺下,而且代碼不會過時,因此可以被更多的程序開發(fā)人員使用。

      文中采用的Canny邊緣檢測算法具有非常好的并行性,具有邊緣梯度方向和邊緣強度的信息,能檢測出更多的邊緣信息,并與周邊的邊緣信息明顯地隔離開,可以很好地使用C++AMP進行并行化[12]。

      為了實現(xiàn)圖像的并行運算,在C++AMP平臺下進行操作。實驗過程用的是并行流水線,通過異步代理庫和PPL來實現(xiàn)[13]。它可以同時處理4幅圖像,以并發(fā)序列的方式將各個流水線階段作為獨立的并發(fā)代理運行。

      處理流程如圖1所示。

      圖1 流水線處理流程

      3.3 并行化Canny算子優(yōu)化

      傳統(tǒng)的Canny算子由于其單純采用高斯濾波器進行濾波,導致去噪和邊緣細節(jié)的不穩(wěn)定,容易造成高頻邊緣丟失[14]。以前在CPU上運行時,速度受限,采用四方檢測使圖像漏掉較多細節(jié),導致邊緣不清晰,而且CPU上串行執(zhí)行的算法速度較慢[15]。

      針對上述傳統(tǒng)算子的缺陷,利用基于C++AMP的改進Canny算子。在GPU上綜合使用高斯濾波和圖像直方圖,避免高頻邊緣丟失,采用3×3鄰域代替2×2鄰域可以很好地抑制噪聲,準確定位邊緣信息。使用C++AMP編程模型,將Canny算子中可并行化處理的部分放在GPU上進行并行化處理,能夠合理分配GPU的存儲空間,減少重復計算點元[16]。為了最大程度地發(fā)揮C++AMP利用GPU處理的能力,利用GPU來控制性能相異的多GPU協(xié)作,還可以利用CPU對數(shù)據(jù)進行預處理核后處理。

      3.4 C++AMP的并行化具體實現(xiàn)

      3.4.1 C++AMP環(huán)境搭建

      (1)文中主要在Microsoft Windows7系統(tǒng)環(huán)境下進行并行運算。

      (2)安裝Microsoft Visual Studio 2013,它自帶所需的DirectX SDK。

      (3)為了看到GPU計算帶來的性能提升,DirectX 11驅動程序的顯卡也是必不可少的。

      實驗環(huán)境配置如下:

      CPU:Intel(R) Core(TM) i3-2 310 M CPU@ 2.10 GHz;

      GPU:NVIDIA GeForce GT 520 M 1 GB;

      操作系統(tǒng):64位操作系統(tǒng),基于x64的處理器;

      內存(RAM):6.0 GB。

      3.4.2 實現(xiàn)過程

      利用C++AMP在GPU上使用Canny算子優(yōu)化處理圖像,算法在CPU和GPU之間有數(shù)據(jù)傳遞的I/O操作,主要對圖像的邊緣部分進行處理,僅在CPU上執(zhí)行分割圖像和判斷大小的這些必要的串行時長操作,大部分可并行化的循環(huán)、迭代操作在GPU的工作組中執(zhí)行[17]。GPU端處理圖像比CPU端多了在加速器上復制圖像數(shù)據(jù)和轉換圖像數(shù)據(jù)這兩個步驟。

      (1)在Microsoft Visual Studio 2013運行C++AMP程序,從輸入源文件夾中選擇圖片,點擊處理圖像。應用程序以ARGB32格式加載圖像文件和視頻幀格式;

      (2)點擊運行按鈕,程序會創(chuàng)建對應的文件讀取的實例和一個新的圖像代理來處理圖像或視頻幀序列,然后調用start()方法進行處理;

      (3)先創(chuàng)建存儲輸入、輸出圖像和原始圖像的存儲區(qū)域,然后將數(shù)據(jù)復制到GPU中;

      (4)配置流水線,把圖像送入流水線中,使用消息塊連接縮放器、圖像處理器和顯示代理,也會同時連接取消消息源以便隨時取消執(zhí)行;

      (5)啟動流水線代理,在迭代過程中反復簡化顏色,然后執(zhí)行Canny邊緣檢測算法;

      (6)將GPU上的數(shù)據(jù)移回destFrame位圖中的像素數(shù)據(jù);

      (7)流水線等待所有代理完成工作,發(fā)出結束信號,通知關閉流水線;

      (8)輸出C++AMP處理過后的圖片,以及各階段處理的時間。

      4 實驗結果與分析

      為了對比并行運算與串行運算的運算時間及圖片效果,選取6幅不同分辨率的圖像進行實驗。圖2~4分別為分辨率535×610的原始圖像,Canny算子串行圖像,改進后的并行算法圖像[18]。根據(jù)結果可知,使用串行算法獲得圖像的對比度較低,邊緣位置較少,且偽邊緣較多。改進后并行化的圖像邊緣細且圖像對比度增加,邊緣信息更多,圖像細節(jié)更清晰,人物特征更明顯,更有利于人物視頻圖像的判別。

      圖2 原始圖片

      圖3 Canny算子生成的串行圖片

      圖4 改進并行算法生成的圖像

      如表1所示,分別對6幅分辨率不同的圖片進行串行化和在C++AMP中CPU+GPU模式下的并行化處理。串行和并行算法都計算了圖像加載、處理和顯示總的時間,然后計算了加速比。從數(shù)據(jù)可以看出,隨著圖像分辨率的增加,串行所用時間相比于并行所用時間的加速比越來越大,加速效果明顯,圖像的分辨率越大,GPU并行化算法的效果越明顯。在視頻監(jiān)控中,現(xiàn)在的監(jiān)控設備越來越先進,視頻的分辨率也越來越清晰,使用并行算法可以更加快速地處理視頻圖像,而且處理效果更好,邊緣信息更清晰,圖像顯示更好,為用戶帶來了便利,省去了大量時間。

      表1 圖片串行化和改進后的并行化處理時間

      5 結束語

      針對視頻圖像領域中存在的問題,提出了改進的Canny算子,并且基于C++AMP實現(xiàn)了改進的Canny算法的并行處理,不僅提高了圖像處理效果,使得邊緣信息更多、更明顯,而且加快了處理速度。

      C++AMP在并行處理上高速且高效,由于C++AMP的可擴展性使得C++AMP作為一種新的異構并行技術得以快速發(fā)展[19]。C++AMP是一種新的具有集成優(yōu)勢的并行化技術,而基于C++AMP的圖像并行化技術對于圖像處理的速度以及效率都有很大的優(yōu)勢。C++AMP在圖像處理中應用廣泛,也可以在其他需要并行的地方使用。隨著C++AMP技術的不斷成熟與改進,C++AMP在并行計算領域會占據(jù)更重要的地位[20]。

      參考文獻:

      [1] 胡 瓊,秦 磊,黃慶明.基于視覺的人體動作識別綜述[J].計算機學報,2013,36(12):2512-2524.

      [2] 董榮勝.《九校聯(lián)盟(C9)計算機基礎教學發(fā)展戰(zhàn)略聯(lián)合聲明》呼喚教育的轉型[J].中國大學教學,2010(10):14-15.

      [3] 陳冠誠.C++AMP異構并行編程解析[J].程序員,2012(4):104-106.

      [4] 肖 漢.基于CPU+GPU的影像匹配高效能異構并行計算研究[D].武漢:武漢大學,2011.

      [5] 丁 鵬,陳利學,龔 捷,等.GPU通用計算研究[J].計算機與現(xiàn)代化,2010(1):12-15.

      [6] 陳宏希.基于邊緣保持平滑濾波的Canny算子邊緣檢測[J].蘭州交通大學學報,2006,25(1):86-90.

      [7] 唐志文.淺析數(shù)字圖像處理技術的研究現(xiàn)狀及其發(fā)展方向[J].硅谷,2010(5):30.

      [8] 吳學明,李燦平.邊緣檢測算法在不同分辨率圖像中的性能研究[J].計算機測量與控制,2006,14(2):166-169.

      [9] 王 蘭,吳 謹.一種改進的Canny邊緣檢測算法[J].微計算機信息,2010,26(2):198-199.

      [10] LIANG L R,LOONEY C G.Competitive fuzzy edge detection[J].Applied Soft Computing,2003,3(2):123-137.

      [11] PELLEGRINO F A,VANZELLA W,TORRE V.Edge detection revisited[J].IEEE Transactions on Systems,Man and Cybernetics,2004,34(3):1500-1518.

      [12] 王 蓉,高立群,柴玉華,等.綜合Canny法與小波變換的邊緣檢測方法[J].東北大學學報:自然科學版,2005,26(12):1131-1133.

      [13] 朱仲濤,張 鈸,張再興.圖像關于邊緣提取算子的微分不變性[J].計算機學報,1999,22(9):903-910.

      [14] 姚 平.CUDA平臺上的CPU/GPU異步計算模式[D].合肥:中國科學技術大學,2010.

      [15] SANDERS J.GPU高性能編程CUDA實戰(zhàn)[M].聶雪軍,譯.北京:機械工業(yè)出版社,2011.

      [16] COOK S.A developer’s guide to parallel computing with GPUs[M].[s.l.]:Morgan Kaufmann,2012.

      [17] 宗露艷,吳 陳.一種改進的Canny算子邊緣檢測算法[J].現(xiàn)代電子技術,2011,34(4):104-106.

      [18] 張煥龍,胡士強,楊國勝.基于外觀模型學習的視頻目標跟蹤方法綜述[J].計算機研究與發(fā)展,2015,52(1):177-190.

      [19] GOMEZ-LUNA J,GONZALEZ-LINARES J M,BENAVIDES J I,et al.An optimized approach to histogram computation on GPU[J].Machine Vision and Applications,2013,24(5):899-908.

      [20] DESTREMPES F,MIGNOTTE M.A statistical model for contours in image[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2004,26(5):626-638.

      猜你喜歡
      鄰域圖像處理算子
      擬微分算子在Hp(ω)上的有界性
      各向異性次Laplace算子和擬p-次Laplace算子的Picone恒等式及其應用
      稀疏圖平方圖的染色數(shù)上界
      一類Markov模算子半群與相應的算子值Dirichlet型刻畫
      機器學習在圖像處理中的應用
      電子制作(2018年18期)2018-11-14 01:48:20
      基于鄰域競賽的多目標優(yōu)化算法
      自動化學報(2018年7期)2018-08-20 02:59:04
      模糊圖像處理,刑事偵查利器
      圖像處理技術的實戰(zhàn)應用
      Roper-Suffridge延拓算子與Loewner鏈
      關于-型鄰域空間
      康保县| 泊头市| 江油市| 东源县| 绥化市| 新沂市| 韶关市| 修水县| 呼玛县| 北安市| 东海县| 读书| 宁海县| 腾冲县| 天镇县| 本溪| 元阳县| 平罗县| 财经| 湄潭县| 门头沟区| 岫岩| 和平县| 济源市| 遂平县| 宝应县| 江都市| 措勤县| 桃江县| 苍梧县| 教育| 南靖县| 磐石市| 富宁县| 广南县| 江孜县| 肇庆市| 泾川县| 汉沽区| 霞浦县| 民县|