GPU 图像并行处理
GPGPU、GPU、CUDA
GPGPU是一種編程模式,采用圖形編程語言,使用GPU進(jìn)行一些圖形計(jì)算。
GPU是顯卡。
CUDA,是一個(gè)利用NVIDIA GPU計(jì)算能力的平臺(tái),是一種并行計(jì)算架構(gòu)。
GPU并行化處理
與CPU相比,GPU具有以下優(yōu)勢(shì):強(qiáng)大的并行處理能力和高效率的數(shù)據(jù)傳輸能力。其中,并行性主要體現(xiàn)了指令級(jí)、數(shù)據(jù)級(jí)和任務(wù)級(jí)三個(gè)層次。高效率的數(shù)據(jù)傳輸主要體現(xiàn)在兩個(gè)方面: GPU與顯存之間的帶寬為:16GB/s;系統(tǒng)內(nèi)存到顯存的帶寬為:4GB/s。
綜上所述,GPU比較適合處理具有下面特性的應(yīng)用程序:1、大數(shù)據(jù)量;2、高并行性;3、低數(shù)據(jù)耦合;4、高計(jì)算密度;5、與CPU交互比較少。
數(shù)字圖像處理的并行化分析
數(shù)字圖像處理算法多種多樣,但從數(shù)據(jù)處理的層面來考慮,可以分為:像素級(jí)處理、特征級(jí)處理和目標(biāo)級(jí)處理三個(gè)層次。
(1)像素級(jí)圖像處理
像素級(jí)處理,即由一幅像素圖像產(chǎn)生另一幅像素圖像,處理數(shù)據(jù)大部分是幾何的、規(guī)則的和局部的。根據(jù)處理過程中的數(shù)據(jù)相關(guān)性,像素級(jí)處理又可進(jìn)一步分為點(diǎn)運(yùn)算、局部運(yùn)算和全局運(yùn)算。
(2)特征級(jí)圖像處理
特征級(jí)處理是在像素圖像產(chǎn)生的一系列特征上進(jìn)行的操作。常用的特征包括:形狀特征、紋理特征、梯度特征和三維特征等,一般采用統(tǒng)一的測(cè)度,如:均值、方差等,來進(jìn)行描述和處理,具有在特征域內(nèi)進(jìn)行并行處理的可能性。但是,由于其特征具有象征意義和非局部特性,在局部區(qū)域并行的基礎(chǔ)上,需要對(duì)總體進(jìn)行處理。利用GPU實(shí)現(xiàn)并行化處理的難度比較大。
(3)目標(biāo)級(jí)圖像處理
目標(biāo)級(jí)處理是對(duì)由一系列特征產(chǎn)生的目標(biāo)進(jìn)行操作。由于目標(biāo)信息具有象征意義和復(fù)雜性,通常是利用相關(guān)知識(shí)進(jìn)行推理,得到對(duì)圖像的描述、理解、解釋以及識(shí)別。由于其數(shù)據(jù)之間相關(guān)性強(qiáng),且算法涉及到較多的知識(shí)和人工干預(yù),并行處理的難度也比較大。
由此可見,整個(gè)圖像處理的結(jié)構(gòu)可以利用一個(gè)金字塔模型來表示。在底層,雖然處理的數(shù)據(jù)量巨大,但由于局部數(shù)據(jù)之間的相關(guān)性小,且較少的涉及知識(shí)推理和人工干預(yù),因此大多數(shù)算法的并行化程度比較高。當(dāng)沿著這個(gè)金字塔結(jié)構(gòu)向高層移動(dòng)時(shí),隨著抽象程度的提高,大量原始數(shù)據(jù)減少,所需的知識(shí)和算法的復(fù)雜性逐層提高,并行化處理的難度也逐漸加大。
由于絕大部分的圖像處理算法是在像素級(jí)進(jìn)行的,且GPU的SIMD并行流式處理在進(jìn)行像素級(jí)的圖像處理時(shí)具有明顯的優(yōu)勢(shì),而特征級(jí)和目標(biāo)級(jí)處理無論是從數(shù)據(jù)的表達(dá)還是從算法自身的實(shí)現(xiàn)來說,都很難實(shí)現(xiàn)GPU并行化。
使用GPU提高OpenCV的圖像處理運(yùn)算速度
OpenCV中提供了GPU模塊,可以用來加速圖像處理的相關(guān)運(yùn)算。OpenCV的GPU模塊是使用CUDA編寫的。
OpenCV中GPU模塊的調(diào)用點(diǎn)擊這里,使用GPU模塊需要開啟WITH_CUDA選項(xiàng)。
OpenCV官方關(guān)于CUDA的說明及范例點(diǎn)擊這里
關(guān)于如何在實(shí)時(shí)圖像處理中使用OpenCV與GPU可以參考這篇文章
總結(jié)
以上是生活随笔為你收集整理的GPU 图像并行处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 概念区分:并行、分布式、集群、云、超算
- 下一篇: 并行计算框架