国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于GPU的多尺度Retinex圖像增強算法實現(xiàn)

2017-06-28 15:09李輝解維浩劉壽生蓋穎穎
山東科學 2017年3期
關鍵詞:圖像增強線程尺度

李輝,解維浩,劉壽生,蓋穎穎

(山東省科學院海洋儀器儀表研究所,山東 青島 266001)

?

基于GPU的多尺度Retinex圖像增強算法實現(xiàn)

李輝,解維浩,劉壽生,蓋穎穎

(山東省科學院海洋儀器儀表研究所,山東 青島 266001)

為提高多尺度Retinex算法的實時性,本文提出了基于GPU的多尺度Retinex圖像增強算法,通過對算法進行數(shù)據(jù)分析和并行性挖掘,將高斯濾波、卷積和對數(shù)差分等計算量非常耗時的模塊放到GPU中,利用大規(guī)模并行線程處理來提高效率。在GeForce GTX 480和CUDA 5.5中進行實驗,結果表明該算法能顯著提高計算速度,且隨著圖像分辨率的增加,最大加速比達160倍。

圖像增強;多尺度Retinex;GPU;CUDA;并行計算

圖像增強是指通過一定的技術有選擇地突出圖像中感興趣的特征,抑制或掩蓋某些不需要的特征,從而增強圖像中的有用信息,改善圖像的視覺效果。圖像增強的方法主要有兩大類:頻率域法和空間域法,常見的增強技術主要有直方圖均衡化、小波變換以及同態(tài)濾波等[1-3]。由于這些方法在應用中的局限性,使得增強效果有限。直方圖均衡化會合并灰度值出現(xiàn)概率較小的像素,導致圖像細節(jié)丟失而使局部模糊;小波變換缺乏平移不變性,會產(chǎn)生Gibbs失真效果,且對于亮度不足或非均勻的圖像處理效果一般;同態(tài)濾波缺乏自適應性,并且前提是假設光照均勻,對于存在暗區(qū)和高光區(qū)的夜間圖像處理效果差。

多尺度Retinex算法同時保持圖像的高保真度和對圖像的動態(tài)范圍進行壓縮,增強效果好。該算法采用卷積進行大量運算來實現(xiàn)動態(tài)范圍壓縮和顏色/亮度再現(xiàn),但由于算法的卷積、對數(shù)差分等操作計算數(shù)據(jù)量大、處理時間長,很難在對實時性要求較高的視頻實時處理等場合中應用。因此,必須有效減少該算法的處理時間,以滿足更多實時性應用場景的需求。

近年來,圖形處理器(graphics processing unit,GPU)被應用于大規(guī)模計算,其多線程以及多核心處理器特別適用于數(shù)據(jù)的并行化計算[4]。CUDA(compute unified device architecture)架構使用SIMT(single-instruction-thread, multi-thread)模型,是一個可以用來實現(xiàn)細粒度的并行性的軟件平臺,利用CUDA編寫的程序靈活而高效。本文提出了一種基于GPU CUDA的多尺度Retinex算法,該算法利用大規(guī)模并行線程和GPU的異構存儲器層次結構來提高算法的執(zhí)行效率。

1 Retinex理論與多尺度Retinex圖像增強算法

Retinex算法的產(chǎn)生與發(fā)展是基于Land[5]提出的顏色恒常知覺的計算理論,其構成是retina(視網(wǎng)膜)和cortex(皮層)。Retinex是消除環(huán)境光干擾的一種有效方法,并且已經(jīng)被用來作為一個預處理步驟應用在許多圖像和視頻應用中,如視頻壓縮、高動態(tài)范圍成像以及人臉識別等。Retinex是一種非線性機制,可以通過模擬人類顏色感知來實現(xiàn)顏色的恒常性,可以適應不同的光線條件并提高感知的圖像的視覺質量。Land首次提出了一個人類視覺感知的亮度和顏色模型,Retinex模型[6]是以照度反射成像模型為基礎的,相比反射光,照射光的變化更為平滑,因此可以使用低通濾波對輸入圖像進行模糊運算來估計;反射光的計算則通過輸入圖像與平滑圖像的相除來進行。

Retinex理論[7]的基本思想是通過去除或降低亮度圖像的影響,保留物體的反射圖像特征。根據(jù)Land提出的Retinex模型,將一幅圖像定義為L(x,y):

(1)

式中,E(x,y)表示亮度圖像,R(x,y)是指物體的反射圖像,與照射光無關,它包含了物體的細節(jié)特征。

Retinex算法分為單尺度Retinex(single-scale retinex, SSR)、多尺度Retinex(multi-scale retinex, MSR)和帶彩色恢復的多尺度Retinex算法(multi-scale retinex with color restoration, MSRCR)。本文采用多尺度Retinex圖像增強算法,設原始圖像為I(x,y),反射圖像為R(x,y),F(xiàn)(x,y)為低通卷積函數(shù),W為權值,該算法可用下式描述:

(2)

其中,*表示卷積運算,環(huán)境函數(shù)F(x,y)可以表示為:

(3)

即高斯濾波函數(shù),其中K是常量值,該值是通過實驗來確定的。

基于多尺度Retinex理論,設置每個尺度的權值為1/3,通過在原圖像中去除亮度圖像即光源亮度的影響,得到對物體反射光線顏色的本質描述,以增強夜間圖像。

2 基于GPU CUDA的MSR并行實現(xiàn)

2.1 CUDA簡介

CUDA是由NVIDIA[8]提出的通用并行計算架構,該架構通過利用GPU的處理能力,可大幅提升計算性能。

在GPU CUDA硬件體系結構中,一個GPU內有許多SM(streaming multiprocessor),類似CPU的核,一個SM配備若干個SP(streaming processor)。SP,即CUDA核,是CUDA最基本的處理單元,具體的指令和任務都是在SP上處理的。GPU進行并行計算,也就是多個SP的并行處理。

GPU中的每個SM都支持數(shù)以百計的線程并行執(zhí)行,并且每個GPU都包含了很多的SM,所以GPU支持成百上千的線程并行執(zhí)行。當一個CUDA核(Kernel)啟動后,線程(Thread)會被分配到這些SM中執(zhí)行。大量的線程可能會被分配到不同的SM,同一個線程塊(Block)中的所有線程在同一個SM中并行執(zhí)行。每個線程擁有自己的程序計數(shù)器和狀態(tài)寄存器,并且用該線程自己的數(shù)據(jù)執(zhí)行指令,這就是所謂的SIMT[9]。

2.2 CUDA線程模型

GPU中的線程是以網(wǎng)格(Grid)的方式進行組織的,每個網(wǎng)格包含若干個線程塊,而每個線程塊由若干個線程組成,線程是CUDA中的基本執(zhí)行單元,線程塊的結構可以是一維、二維或三維。同一線程塊中的線程具有相同的指令地址,不僅能夠并行執(zhí)行,而且能夠通過共享存儲器(Shared Memory)和柵欄(Barrier)實現(xiàn)塊內通信。如圖1所示為CUDA內存訪問模型。

使用CUDA進行編寫的代碼既適用于主機處理器(CPU),也適用于設備處理器(GPU)[10]。主機處理器負責派生出運行在GPU設備處理器上的多線程任務(CUDA稱其為內核程序),當這些任務有足夠的并行度時,隨著GPU中SM的增加,程序的運算速度就會提升。圖2所示為CUDA線程模型。

圖1 CUDA內存訪問模型Fig.1 CUDA memory access model

圖2 CUDA線程模型Fig.2 CUDA thread model

2.3 CUDA編程模型

由于多尺度Retinex算法在對輸入圖像進行處理時,圖像的R、G、B分量在進行高斯濾波、卷積和對數(shù)空間差分等操作時是單獨計算的,各數(shù)據(jù)之間相互獨立,符合CUDA的SIMT特性,因此可以進行高性能并行處理。

在進行CUDA編程時,通常將程序分為兩個部分:主機(Host)端和設備(Device)端[11-12]。Host端是指在CPU上執(zhí)行的部分,是串行代碼;而Device端則是在GPU上執(zhí)行的部分,是并行代碼。Device端的程序又稱為"Kernel",Kernel產(chǎn)生的所有線程成為Grid。在CUDA中,Host和Device有不同的內存空間。

基于CUDA架構編寫的程序在主機端和設備端協(xié)同進行,其中主機端是指在CPU上執(zhí)行的部分,是串行代碼;而設備端則是在GPU上執(zhí)行的部分,是并行代碼。在實現(xiàn)MSR算法的CUDA編程時,應盡可能增加數(shù)據(jù)的并行化,減少主機端和設備端的數(shù)據(jù)相互拷貝,從而充分發(fā)揮GPU的運算優(yōu)勢。因此,本文中輸入圖像數(shù)據(jù)的讀取、主機端與設備端內存空間的分配與回收以及主機端與設備端的數(shù)據(jù)傳輸均在主機端處理。其余整個算法的執(zhí)行流程均在設備端執(zhí)行,主要有高斯濾波、圖像邊緣擴展、卷積和對數(shù)空間差分4個內核函數(shù)。

2.4 MSR并行實現(xiàn)

為了提高并行化執(zhí)行效率,該算法為每個像素單獨分配一個線程進行處理,并采用Shared Memory緩存卷積算子。由于CUDA的Warp大小都是32,為了充分利用每一個Thread的計算能力,每個線程塊中的線程數(shù)目最好是32的倍數(shù)。本文采用一維分配的方式,為每個線程塊分配了256個線程,并根據(jù)圖像的維度確定線程塊的數(shù)量。其中,高斯濾波確定線程塊時依賴于卷積模板窗口的大小,經(jīng)過實驗測試,本文取卷積模板窗口大小為11,因此線程塊取值確定如下:

gridSize1= (11*11+256-1)/256 。

在CUDA核中執(zhí)行的高斯濾波函數(shù)為:

generateGaussFactor_kernel<<>> 。

圖3 Retinex算法流程圖Fig.3 Flow chart of Retinex algorithm

邊緣擴展運算中,擴展后的圖像高度和寬度設置如下:

height_padding = ImgHeight + 2*(int)(11/2);

width_padding = ImgWidth+ 2*(int)(11/2);

因此,線程塊取值確定如下:

gridSize2=((height_padding*width_padding+256-1)/256) 。

在CUDA核中執(zhí)行的邊緣擴展函數(shù)為:

paddingImage_kernel<<>> 。

卷積計算及對數(shù)差分運算中,線程塊取值確定如下:

gridSize3= (ImgHeight*ImgWidth+256-1)/256

在CUDA核中執(zhí)行的卷積函數(shù)和對數(shù)差分函數(shù)為:

convolution2D_kernel<<>> ,

logMix<<>>> 。

整個算法的流程如圖3所示。

3 實驗仿真與分析

本次實驗采用GeForce GTX 480[13]以及CUDA5.5進行性能測試,其中CPU為2.66 GHz、2.67 GHz的酷睿雙核,GeForce GTX 480則有480個SP,1 536 M的顯存容量,計算能力為2.02TFLOPs。本次實驗中,我們選取夜間圖像以及逆光圖像進行了增強效果測試,同時選取不同圖像分辨率的圖像,對256×256到2 048×2 048的M×M的圖像進行了計算速度的測試,并與相應的CPU算法的執(zhí)行速度進行了比較。

本次實驗總共采集了400張圖像進行了測試,其中200張夜間圖像,200張逆光圖像,MSR算法的CPU實現(xiàn)與GPU實現(xiàn)的圖像增強效果如圖4所示。

實驗結果顯示,該算法改善了圖像的視覺效果,增強效果明顯。圖4中a,d為兩張原始圖像,其中a圖像為夜間圖像,由于夜間圖像的對比度和信噪比都比較低,導致圖像的視覺效果較差;d圖像為逆光圖像,在高對比度下導致圖像偏暗,可視化效果差。b,e為CPU實現(xiàn)的多尺度Retinex算法增強后的圖像,c,f為GPU實現(xiàn)的多尺度Retinex算法增強后的圖像。增強后整個圖像的可見性增強,亮度和對比度得到提升,細節(jié)部分更加突出,且具有很好的保真度。其中,該算法基于CPU與GPU的實現(xiàn)在增強效果上表現(xiàn)一致,但在算法的處理速度上得到了明顯的提升。

圖4 Retinex算法增強效果圖Fig.4 Images of Retinex algorithm enhanced

為對算法的計算速度進行測試,本實驗采用了Intel VTune。通過多次測試不同尺寸圖像的計算速度,進而取平均值的方式得到算法最終的處理速度,如表1、表2所示。

表1 不同圖像分辨率總計算時間對比

表2 不同圖像分辨率卷積計算時間對比

表1表示不同圖像分辨率下,CPU和GPU實現(xiàn)的總計算時間的對比;表2表示不同圖像分辨率下,CPU和GPU實現(xiàn)的卷積計算時間的對比。通過表1、表2可以看出,該算法的瓶頸部分主要為卷積計算,并且當圖像分辨率為2 048×2 048時,CPU總計算時間為18 065.62 ms,而卷積的CPU計算時間高達15 476.57 ms。該算法經(jīng)過GPU加速后,總計算時間僅為113.26 ms,加速比達160倍;卷積部分的計算時間僅為108.72 ms,加速比達142倍,加速效果非常明顯。由此我們可以看出,與CPU方式相比,本文提出的基于GPU的多尺度Retinex算法的計算速度得到了明顯的提升,并且隨著圖像尺寸的增大,該算法在計算速度上的優(yōu)勢更加明顯。

4 結 語

多尺度Retinex算法在圖像增強處理中具有銳化、色彩恒常、顏色高保真度和高動態(tài)范圍壓縮等特性,特別是在處理夜間、云霧等視覺效果較差的圖像時,具有明顯的增強效果。但由于其計算方法較為復雜,計算數(shù)據(jù)量較大,導致算法的實時性效果差。本文通過對輸入圖像數(shù)據(jù)進行并行性分析與挖掘,將算法中的時間瓶頸部分,如高斯濾波、卷積和對數(shù)差分等放到GPU CUDA內核中進行處理,既保證了增強效果,又使得處理速度得到了明顯的提升,從而較好地實現(xiàn)了該算法的實時性。后續(xù)將通過改進該算法以進一步對其效果和性能進行優(yōu)化,同時將該算法的GPU實時處理編程模式引入到更多的圖像處理算法(如去霧、視頻摘要等)中,并進一步應用到智能視頻的實時處理中。

[1]尹士暢,喻松林.基于小波變換和直方圖均衡的紅外圖像增強[J].激光與紅外,2013,43(2):225-228.

[2]占必超,吳一全,紀守新.基于平穩(wěn)小波變換和Retinex的紅外圖像增強方法[J].光學學報,2010,30(10):2788-2793.

[3]李慶忠,劉清.基于小波變換的低照度圖像自適應增強算法[J].中國激光,2015,42(2):0209001.

[4]WANG Y K, HUANG W B. A CUDA-enabled parallel algorithm for accelerating retinex [J]. Journal of Real-Time Image Processing, 2014, 9 (3): 407-425.

[5]LAND E H. Recent advances in Retinex theory [M]// Central and Peripheral Mechanisms of Colour Vision. UK : Palgrave Macmillan,1985: 5-17.

[6]劉瑞劍,低能見度條件下圖像清晰化處理研究[D].太原: 中北大學, 2008.

[7] LEE C H, SHIH J L, LIEN C C, et al. Adaptive multi-scale retinex for image contrast enhancement [M]// Proceedings of the 2013 International Conference on Signal-Image Technology & Internet-Based Systems. Washington, DC, USA: IEEE Computer Society, 2013: 43-50.

[8]NVIDIA .CUDA [EB/OL]. [2016-04-03]. http://www.nvidia.cn/object/cuda-cn.html.

[9]徐元旭, SIMT線程調度模型分析及優(yōu)化[D].哈爾濱: 哈爾濱工業(yè)大學, 2013.

[10]COOK S.CUDA并行程序設計:GPU編程指南[M].北京: 機械工業(yè)出版社,2014: 191-200.

[11] JIAN L H,WANG C,LIU Y, et al. Parallel data mining techniques on Graphics Processing Unit with Compute Unified Device Architecture (CUDA) [J]. The Journal of Supercomputing, 2013, 64 (3): 942-967.

[12] YANG Z Y, ZHU Y T, PU Y. Parallel Image Processing Based on CUDA [M]//Proceedings of the 2008 International Conference on Computer Science and Software Engineering. Washington, DC, USA: IEEE Computer Society, 2008: 198-201.

[13]NVIDA. Geforce GTX 480 Computing Processor Board [EB/OL]. [2016-04-03]. http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-480/specifications.

Realization of multi-scale Retinex image enhancement algorithm based on GPU

LI Hui, XIE Wei-hao, LIU Shou-sheng, GAI Ying-ying

(Institute of Oceanographic Instrumentation, Shandong Academy of Science, Qingdao 266001,China)

∶To improve the real-time performance of the multi-scale Retinex algorithm, a GPU based multi-scale Retinex image enhancement algorithm was proposed in this paper. Through the data analysis and parallel mining of the algorithm, time-consuming modules of the calculation, such as Gauss filter, convolution, and logarithm difference, were implemented in GPU, and the efficiency was improved by using massively parallel processing threads. Experiments were conducted in GeForce GTX 480 and CUDA5.5, and the results showed that the proposed algorithm could significantly improve the computing speed, and with the increasing of the image resolution, the maximum speed up ratio could reach 160 times.

∶image enhancement; multi-scale Retinex; GPU; CUDA; parallel computing

10.3976/j.issn.1002-4026.2017.03.018

2016-08-05

山東省科學院青年科學基金(2014QN032)

李輝(1987—),女,碩士,研究方向為圖形圖像處理、高性能計算。E-mail:lihuihuidou@163.com

TP391.41

A

1002-4026(2017)03-0103-07

猜你喜歡
圖像增強線程尺度
圖像增強技術在超跨聲葉柵紋影試驗中的應用
水下視覺SLAM圖像增強研究
財產(chǎn)的五大尺度和五重應對
基于國產(chǎn)化環(huán)境的線程池模型研究與實現(xiàn)
虛擬內窺鏡圖像增強膝關節(jié)鏡手術導航系統(tǒng)
基于圖像增強的無人機偵察圖像去霧方法
淺談linux多線程協(xié)作
宇宙的尺度
9
么移動中間件線程池并發(fā)機制優(yōu)化改進