基于OpenCL的GPU加速分片雙邊濾波方法
【專利摘要】本發明提出了一種基于OpenCL的GPU加速分片雙邊濾波方法,用于解決現有分片雙邊濾波方法中存在的濾波效率低和通用性差的技術問題,實現步驟是:1.搭建異構架構;2.主機端讀取原始圖像到主機內存中,為處理后圖像分配主機內存;3.主機端生成空域高斯模板;4.主機端創建緩存對象;5.寫內核函數;6.主機端設置內核參數;7.主機端設置內核入列所需參數;8.主機端入列內核函數;9.設備端計算值域高斯模板;10.設備端歸一化加權平均計算,將處理后圖像數據寫入對應緩存對象;11.獲取處理后圖像數據。本發明濾波效率高,通用性強,可實現對高分辨率圖像的實時處理。
【專利說明】
基于OpenCL的GPU加速分片雙邊濾波方法
技術領域
[0001 ]本發明設及數字信號處理及異構計算技術領域,設及一種分片雙邊濾波方法,具 體設及一種基于化en化的GPU加速分片雙邊濾波方法,可用于高分辨率數字圖像的實時空 間域濾波。
【背景技術】
[0002] 高分辨率數字圖像能夠提供豐富的場景細節信息,因而成為當今醫學影像、遙感 遙測W及多媒體通信等應用領域的迫切需求。然而數字圖像在其形成和傳輸的過程中很容 易受到噪聲的污染,運種帶有噪聲的數字圖像不利于對圖像進行分析,如何有效的濾除噪 聲并最大限度地保留原始圖像的信息是數字圖像處理領域的重要研究課題之一。
[0003] 在高斯濾波、中值濾波、均值濾波和雙邊濾波運些傳統的濾波方法,其中高斯濾 波、中值濾波和均值濾波都能夠有效去除圖像中的噪聲,但運些方法不能保護圖像的邊緣 信息,雙邊濾波方法在考慮了距離權值的基礎上又增加了亮度權值,雙邊濾波方法能夠有 效去除噪聲且對圖像的邊緣信息進行了一定程度的保護。Shimodaira H.在IEEE International Conference on Image Processing.2013:868-871 上發表了 ('Patch-based bilateral filteriAlgorithms and performance"的論文,文中提出了一種分片雙邊濾波 算法,與傳統雙邊濾波方法相比,在計算值域高斯模板時是通過度量待濾波像素鄰域塊與 捜索窗內其它像素鄰域塊的結構相似度獲取亮度權值,運種方法能夠有效去除噪聲并很好 的保護了圖像的邊緣信息。但是,該算法計算復雜度較高,無法應用在高分辨率圖像的實時 處理任務中。此外,現有分片雙邊濾波方法只能運行在單一架構CPU上,不能在異構架構上 運行,通用性差。
[0004] Open化(Open Computing Language)是第一個面向異構系統通用目的并行編程的 標準,也是一個統一的編程環境,適用于多核屯、處理器(CPU)、圖形處理器(GPU)和現場可編 程邏輯器件(FPGA)等并行處理器。與傳統單一架構相比,異構架構能夠更好的實現高性能 并行計算,在大數據挖掘,機器學習和科學計算等領域有廣闊的前景。圖像處理中包含大量 可W并行執行的浮點矩陣運算,可W將GPU的高度并行浮點計算能力與CPU的復雜邏輯處理 與任務調度能力相結合來對圖像處理進行加速。OpenCL良好的跨平臺性也可W使程序運行 在不同的平臺上,增強了代碼的可移植性與通用性。
【發明內容】
[0005] 本發明的目的在于克服上述現有技術存在的缺陷,提供了一種基于化en化的GPU 加速分片雙邊濾波方法,通過化en化標準下針對GPU多PE單元的計算作業劃分和調度,W及 存儲分配優化,完成算法在異構架構下的并行加速,用于解決現有分片雙邊濾波方法中存 在的濾波效率低和通用性差的技術問題。
[0006] 為實現上述目的,本發明采取的技術方案包括如下步驟:
[0007] 步驟1,在主機端通過通用CPU,選擇異構計算平臺和其對應的計算設備,在該異構 計算平臺上創建上下文,并在該上下文中創建命令隊列,得到異構架構。
[000引步驟2,輸入原始圖像,主機端讀取該原始圖像數據到主機內存中,同時為處理后 的圖像數據分配主機內存。
[0009] 步驟3,主機端利用高斯函數生成空域高斯模板,并將該模板存儲在主機內存中。
[0010] 步驟4,主機端在步驟1得到的上下文中創建多個緩存對象,分別用于設備端存儲 原始圖像、處理后圖像和空域高斯模板,通過所述命令隊列將原始圖像和空域高斯模板寫 入對應的緩存對象。
[0011] 步驟5,利用化en化標準,對分片雙邊濾波算法進行并行化編程,將并行化后的分 片雙邊濾波算法寫成內核函數。
[0012] 步驟6,在主機端將原始圖像的寬度和高度、空域高斯模板半徑和多個緩存對象設 置為內核函數的參數。
[0013] 步驟7,在主機端設置內核函數入列所需的維度數、每個維度上的工作項數和每個 工作組處理的工作項數。
[0014] 步驟8,主機端根據步驟7設置的參數,入列內核函數。
[0015] 步驟9,設備端根據主機端生成的空域高斯模板確定捜索窗大小,捜索窗內的基于 結構相似度進行計算的亮度權值作為值域高斯模板。
[0016] 步驟10,設備端將原始圖像對應的緩存對象中的數據、空域高斯模板和值域高斯 模板進行歸一化加權平均計算,得到處理后的圖像數據,并將該圖像數據寫入其對應的緩 存對象。
[0017] 步驟11,主機端讀取處理后圖像對應的緩存對象,得到處理后的圖像數據,并將該 圖像數據寫到主機內存。
[0018] 本發明與現有技術相比,具有W下優點:
[0019] 1、本發明由于對分片雙邊濾波方法進行了 GHJ加速,與現有技術中對分片雙邊濾 波方法在單一架構CPU下計算相比,GPU對分片雙邊濾波方法進行了并行計算,且GPU對浮點 的計算能力要遠遠高于CPU對浮點的計算能力,在保持分片雙邊濾波方法去噪能力不變的 情況下,大幅提高了分片雙邊濾波方法的計算速度。
[0020] 2、本發明由于采用了基于化en化的并行編程標準對分片雙邊濾波方法進行并行 化編程,與現有技術相比,本發明可W實現分片雙邊濾波方法在不同異構平臺下都可W運 行,增強了代碼的可移植性與通用性。
【附圖說明】
[0021] 圖1是本發明的流程框圖;
[0022] 圖2是本發明及現有技術的濾波效果圖。
【具體實施方式】
[0023] W下結合附圖和具體實施例,對本發明作進一步描述。
[0024] 參照圖1,本發明包括W下步驟:
[0025] 步驟1,計算平臺和其對應的計算設備,可W采用AMD異構開發平臺和其對應的AMD GPU、或NVIDIA異構開發平臺和對應的NVIDIA GPU、或AMD異構開發平臺和對應的CPU,由于 實驗主機安裝的計算設備是AMD R9 270X GPU,本實施例采用AMD異構開發平臺和其對應的 AMD R9 270X GPU,在AMD異構開發平臺上創建上下文和命令隊列,得到異構架構。
[0026] 步驟2,選取8位的灰度圖像作為原始圖像,主機端讀取該原始圖像數據到主機內 存中,同時為處理后的8位灰度圖像數據分配主機內存。
[0027] 步驟3,主機端利用高斯函數生成空域高斯模板,空域高斯模板與具體的像素值無 關,只與像素的相對位置有關,對于所有像素點的計算,空域高斯模板都是固定的,所W在 主機端生成空域高斯模板,高斯公式為:
[002引
(1)
[0029] 其中,(x〇,y日)為圖像像素點的坐標,(x,y)為空域高斯模板對應的坐標,口^為空域 高斯模板的方差。
[0030] 本實施例中設置空域高斯模板大小為7 X 7,空域高斯模板的方差0^為10,將得到 的高斯模板存儲在主機內存中。
[0031] 步驟4,主機端在上下文中創建多個緩存對象,分別用于設備端存儲原始8位灰度 圖像、處理后8位灰度圖像和空域高斯模板,原始8位灰度圖像和空域高斯模板對應的緩存 對象創建為只讀緩存對象,處理后8位灰度圖像對應的緩存對象創建為只寫緩存對象,通過 所述命令隊列將原始8位灰度圖像和空域高斯模板寫入對應的緩存對象。
[0032] 步驟5,利用化en化標準,對分片雙邊濾波算法進行并行化編程,將并行化后的分 片雙邊濾波算法寫成內核函數。
[0033] 步驟6,在主機端將原始8位灰度圖像的寬度和高度、空域高斯模板半徑和多個緩 存對象設置為內核函數的參數,其中原始8位灰度圖像和處理后8位灰度圖像對應的緩存對 象參數設置在設備的全局內存中,空域高斯模板對應的緩存對象參數設置在設備的常量內 存中,原始8位灰度圖像的寬度和高度、空域高斯模板半徑對應的參數設置在設備的私有內 存中。
[0034] 步驟7,在主機端設定內核函數入列所需的維度數為2,每個維度上的工作項數分 別為原始8位灰度圖像的寬度和高度上的像素數,每個工作組處理的工作項數設置為16X 16。
[0035] 步驟8,主機端通過命令隊列入列內核函數。
[0036] 步驟9,設備端根據主機端生成的空域高斯模板確定的捜索窗大小為7X7,捜索窗 內的基于結構相似度進行計算的亮度權值作為值域高斯模板,其公式為:
[0037] (2)
[0038] 其中,I (X,y)為圖像像素點坐標所述的(X,y)處的灰度值,(化+1) X (2p+l)分片鄰 域大小,(i,j)為片內像素點相對于片中屯、點(X,y)的坐標偏移。
[0039] 本實施例中設置分片鄰域(2p+l) X (2p+l)的大小為3 X 3,對捜索窗內的(X,y)的3 X3鄰域片與中屯、像素(xo,yo)的3X3鄰域片做結構相似度計算,將計算結果作為值域高斯 模板。
[0040] 步驟10,設備端將原始圖像對應的緩存對象中的數據、空域高斯模板和值域高斯
[0041] 嫌 模板進行歸一化加權平均計算,其公式為:
[0042] .'4)
[0043] 其中J(xo,yo)為分片雙邊濾波處理后的坐標為(xo,yo)的像素值,w(xo,yo)為捜索 窗,K(xo,yo)為歸一化因子。
[0044] -個像素的計算在一個工作項下進行,多個工作項同時執行實現并行計算,得到 處理后的圖像數據J(xo,yo),并將該圖像數據寫入其對應的緩存對象。
[0045] 步驟11,主機端讀取處理后圖像對應的緩存對象,得到處理后的圖像數據,并將該 圖像數據寫到主機內存。
[0046] W下結合附圖和具體實施例,對本發明的技術效果作進一步詳細描述:
[0047] 1.實驗環境:
[004引異構平臺為AMD異構開發平臺,其中主機端通用CPU為Intel Xeon E5410 CPU,計 算設備GPU為AMD R9 270X GPU,軟件環境為Visual SUidio 2013和AMD APP SDK v2.9,操 作系統為Windows 7。
[0049] 2.實驗內容:
[0050] 對輸入的高分辨率8位灰度噪聲圖像分別用傳統分片雙邊濾波方法和本發明方法 進行濾波操作,分別對不同圖像噪聲水平和濾波速度進行評定,其結果分別如圖2和表1所 /J、- O
[0051 ]參照圖2,圖2(a)為原始噪聲圖像,其PSNR為20.3643dB,圖2(b)為傳統分片雙邊濾 波方法去噪后的效果圖,其PSNR為27.0669dB,圖2(C)為本發明方法去噪后的效果圖,其 PSNR為27.0669dB。
[0052] 由圖2可W看出,本發明方法與傳統分片雙邊濾波方法去噪性能相同。
[0053] 表1給出了本發明方法與傳統分片雙邊濾波方法的計算時間,分片大小均為3X3, 捜索窗大小為5 X 5和7 X 7。
[0054] 表1不同分片雙邊濾波方法的計算時間(單位:ms)
[0化5]
[0056]由表中數據可W看出,本發明所提出的基于化en化的GPU加速分片雙邊濾波方法 能實現對高分辨率圖像的實時處理,且相對傳統分片雙邊濾波方法獲得了非常顯著的加速 效果。
【主權項】
1. 一種基于OpenCL的GPU加速分片雙邊濾波方法,其特征在于包括以下步驟: (1) 、在主機端通過通用CPU,選擇異構計算平臺和其對應的計算設備,在該異構計算平 臺上創建上下文,并在該上下文中創建命令隊列,得到異構架構; (2) 、輸入原始圖像,主機端讀取該原始圖像數據到主機內存中,同時為處理后的圖像 數據分配主機內存; (3 )、主機端利用高斯函數生成空域高斯模板,并將該模板存儲在主機內存中; (4) 、主機端在步驟(1)得到的上下文中創建多個緩存對象,分別用于設備端存儲原始 圖像、處理后圖像和空域高斯模板,通過所述命令隊列將原始圖像和空域高斯模板寫入對 應的緩存對象; (5) 、利用OpenCL標準,對分片雙邊濾波算法進行并行化編程,將并行化后的分片雙邊 濾波算法寫成內核函數; (6) 、在主機端將原始圖像的寬度和高度、空域高斯模板半徑和多個緩存對象設置為內 核函數的參數; (7) 、在主機端設置內核函數入列所需的維度數、每個維度上的工作項數和每個工作組 處理的工作項數; (8 )、主機端根據步驟(7)設置的參數,入列內核函數; (9 )、設備端根據主機端生成的空域高斯模板確定搜索窗大小,搜索窗內的基于結構相 似度進行計算的亮度權值作為值域高斯模板; (10) 、設備端將原始圖像對應的緩存對象中的數據、空域高斯模板和值域高斯模板進 行歸一化加權平均計算,得到處理后的圖像數據,并將該圖像數據寫入其對應的緩存對象; (11) 、主機端讀取處理后圖像對應的緩存對象,得到處理后的圖像數據,并將該圖像數 據寫到主機內存。2. 根據權利要求1所述的基于OpenCL的GPU加速分片雙邊濾波方法,其特征在于:步驟 (3) 中所述的高斯函數,其表示為:其中,(xq,y〇)為圖像像素點的坐標,(X,y)為空域高斯模板對應的坐標,σ〖為空域高斯 模板的方差。3. 根據權利要求1所述的基于OpenCL的GPU加速分片雙邊濾波方法,其特征在于:步驟 (4) 中所述的多個緩存對象,其中原始圖像和空域高斯模板對應的緩存對象均設定為只讀 緩存對象,處理后圖像對應緩存對象設定為只寫緩存對象。4. 根據權利要求1所述的基于OpenCL的GPU加速分片雙邊濾波方法,其特征在于:步驟 (6)中所述的內核函數的參數,其中原始圖像和處理后圖像對應的緩存對象參數設置在設 備的全局內存中,空域高斯模板對應的緩存對象參數設置在設備的常量內存中,原始圖像 的寬度和高度、空域高斯模板半徑對應的參數設置在設備的私有內存中。5. 根據權利要求1所述的基于OpenCL的GPU加速分片雙邊濾波方法,其特征在于:步驟 (9)中所述的基于結構相似度進行計算,其公式為:其中,I(x,y)為圖像像素點坐標所述的(x,y)處的灰度值,(2p+l)X(2p+l)分片鄰域大 小,(i,j)為片內像素點相對于片中心點(X,y)的坐標偏移。6.根據權利要求1所述的基于OpenCL的GPU加速分片雙邊濾波方法,其特征在于:步驟 (10)中所述的歸一化加權平均計算,其公式為:其中J(XQ,yQ)為分片雙邊濾波處理后的坐標為(XQ,yQ)的像素值,w( XQ,yQ)為搜索窗,K (x〇,y〇)為歸一化因子。
【文檔編號】G06T5/00GK105957028SQ201610260467
【公開日】2016年9月21日
【申請日】2016年4月25日
【發明人】賴睿, 李吉昌, 楊銀堂, 秦翰林, 周慧鑫, 王炳健
【申請人】西安電子科技大學