本發(fā)明涉及一種圖像處理方法,尤其是一種應(yīng)用于圖像處理的基于雙顯卡的gpu并行計(jì)算方法。
背景技術(shù):
現(xiàn)代gpu提供了頂點(diǎn)處理器和片段處理器兩個(gè)可編程并行處理部件。在利用gpu執(zhí)行圖像處理等通用計(jì)算任務(wù)時(shí),要做的主要工作是把待求解的任務(wù)映射到gpu支持的圖形繪制流水線上。通常的方法是把計(jì)算任務(wù)的輸入數(shù)據(jù)用頂點(diǎn)的位置、顏色、法向量等屬性或者紋理等圖形繪制要素來(lái)表達(dá),而相應(yīng)的處理算法則被分解為一系列的執(zhí)行步驟,并改寫(xiě)為gpu的頂點(diǎn)處理程序或片段處理程序,并調(diào)用片段程序進(jìn)行處理;最后,保存在幀緩存中的繪制結(jié)果就是算法的輸出數(shù)據(jù)。
gpu對(duì)圖像處理的應(yīng)用已經(jīng)十分普遍,但是并沒(méi)有協(xié)調(diào)多張顯卡同步對(duì)單張圖像進(jìn)行處理的應(yīng)用,尤其是對(duì)于高分辨率醫(yī)學(xué)圖像實(shí)時(shí)處理,單顯卡的處理效率有時(shí)無(wú)法滿足圖像的實(shí)時(shí)性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種提高圖像處理的實(shí)時(shí)性和處理效率的方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:
一種應(yīng)用于圖像處理的基于雙顯卡的gpu并行計(jì)算方法,它包括以下步驟:
步驟一:初始化雙顯卡的gpu資源;
步驟二:將圖像內(nèi)存劃分為圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二,圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二在物理空間上連續(xù),設(shè)定圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二的重疊區(qū)域大??;
步驟三:創(chuàng)建并啟動(dòng)兩個(gè)線程,分別調(diào)用兩張顯卡對(duì)應(yīng)的gpu資源,執(zhí)行圖像處理程序,得到圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二各自的處理結(jié)果;
步驟四:丟棄重疊區(qū)域的數(shù)據(jù),合并圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二的處理結(jié)果,完成雙顯卡的gpu對(duì)一張圖像的并發(fā)處理。
進(jìn)一步地,步驟一具體為:
步驟101:安裝gpu運(yùn)行所需的庫(kù)文件;
步驟102:初始化顯卡設(shè)備,在平臺(tái)中尋找gpu資源可以調(diào)用的顯卡;
步驟103:初始化顯卡設(shè)備信息,建立gpu運(yùn)行必需的程序?qū)ο螅?/p>
步驟104:編譯gpu并行程序模塊。
進(jìn)一步地,步驟二中,圖像內(nèi)存劃分方式為:水平分割、縱向分割或斜向分割;水平分割時(shí):
步驟201:將圖像內(nèi)存以水平分割線均勻分割為兩塊;
步驟202:沿水平分割線向上下兩側(cè)分別構(gòu)建大小相等的重疊區(qū)域一和重疊區(qū)域二,重疊區(qū)域一和重疊區(qū)域二的數(shù)據(jù)與底層圖像內(nèi)存的數(shù)據(jù)一致,構(gòu)建圖像數(shù)據(jù)塊一,包括水平分割線上方的部分和重疊區(qū)域二,構(gòu)建圖像數(shù)據(jù)塊二,包括水平分割線下方的部分和重疊區(qū)域一;
步驟203:對(duì)圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二進(jìn)行鄰域計(jì)算,對(duì)圖像數(shù)據(jù)塊一進(jìn)行鄰域計(jì)算時(shí),重疊區(qū)域二只提供數(shù)據(jù),對(duì)圖像數(shù)據(jù)塊二進(jìn)行鄰域計(jì)算時(shí),重疊區(qū)域一只提供數(shù)據(jù)。
進(jìn)一步地,所述的步驟二中縱向分割時(shí):先將圖像轉(zhuǎn)置90°,再按照水平分割處理。
進(jìn)一步地,步驟202中所述的重疊區(qū)域大小是根據(jù)鄰域計(jì)算的大小來(lái)確定的,重疊區(qū)域的大小為鄰域計(jì)算高度的兩倍。
進(jìn)一步地,步驟三具體為:
步驟301:創(chuàng)建并啟動(dòng)兩個(gè)線程,分別調(diào)用兩張顯卡對(duì)應(yīng)的gpu資源。
步驟302:在兩個(gè)線程內(nèi)執(zhí)行圖像處理程序,每個(gè)線程分別對(duì)應(yīng)一個(gè)圖像數(shù)據(jù)塊,使用線程控制接口同步等待兩個(gè)線程完成相應(yīng)的處理,記錄兩張顯卡運(yùn)行時(shí)間較長(zhǎng)者為圖像內(nèi)存處理的時(shí)間。
進(jìn)一步地,步驟四具體為:
步驟401:圖像數(shù)據(jù)塊一丟棄重疊區(qū)域二的數(shù)據(jù),圖像數(shù)據(jù)塊二丟棄重疊區(qū)域一的數(shù)據(jù);
步驟402:合并圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二的處理結(jié)果;
步驟403:釋放gpu資源,輸出處理結(jié)果。
本發(fā)明的有益效果:
本發(fā)明提高了圖像處理的計(jì)算效率,整體效率可以提升70%~80%,對(duì)于目前的主流4k圖像畫(huà)面,雙顯卡的gpu并發(fā)機(jī)制可以大大提高圖像處理的實(shí)時(shí)性,同時(shí)成本上低于同類(lèi)效果的dsp或者fpga硬件設(shè)計(jì),對(duì)于高分辨率圖像的實(shí)時(shí)處理和現(xiàn)實(shí)意義很大,同時(shí)通過(guò)設(shè)定重疊區(qū)域,保證了新的邊緣附近的像素計(jì)算與原圖一致。
附圖說(shuō)明
通過(guò)結(jié)合附圖對(duì)本發(fā)明示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本發(fā)明的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,在本發(fā)明示例性實(shí)施方式中,相同的參考標(biāo)號(hào)通常代表相同部件。
圖1是圖像內(nèi)存水平分割圖。
圖2是圖像內(nèi)存縱向分割圖。
圖3是重疊區(qū)域示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本發(fā)明的優(yōu)選實(shí)施方式。雖然附圖中顯示了本發(fā)明的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本發(fā)明而不應(yīng)被這里闡述的實(shí)施方式所限制。
如圖1-3所示,一種應(yīng)用于圖像處理的基于雙顯卡的gpu并行計(jì)算方法,其特征是它包括以下步驟:
步驟一:初始化雙顯卡的gpu資源,確保設(shè)備的有效性;具體為:安裝gpu運(yùn)行所需的庫(kù)文件;初始化顯卡設(shè)備,在平臺(tái)中尋找gpu資源可以調(diào)用的顯卡;初始化顯卡設(shè)備信息,建立gpu運(yùn)行必需的程序?qū)ο?;編譯gpu并行程序模塊。
步驟二:將圖像內(nèi)存劃分為物理上的連續(xù)的兩塊,設(shè)定兩塊內(nèi)存間的重疊區(qū)域大小,重疊區(qū)域大小是根據(jù)鄰域計(jì)算的大小來(lái)確定的,重疊區(qū)域的大小為鄰域計(jì)算高度的兩倍;具體如圖3所示,兩個(gè)圖像內(nèi)存塊分別是1、陰影區(qū)域、陰影區(qū)域以上部分、陰影區(qū)域以下且與陰影區(qū)域面積相同的部分;2、陰影區(qū)域及陰影區(qū)域以下部分,上下兩塊的計(jì)算考慮是不一樣的:上半部分的計(jì)算不需要進(jìn)入陰影區(qū)域以下且與陰影區(qū)域面積相同的部分,陰影區(qū)域以下且與陰影區(qū)域面積相同的部分只是提供數(shù)據(jù)以完成到中間線的鄰域計(jì)算;下半部分的計(jì)算不進(jìn)入陰影區(qū)域,陰影區(qū)域只是提供數(shù)據(jù)以完成中間線的鄰域計(jì)算。
步驟三:創(chuàng)建并啟動(dòng)兩個(gè)線程,分別調(diào)用兩張顯卡對(duì)應(yīng)的gpu資源,執(zhí)行圖像處理程序,,使用線程控制接口同步等待兩個(gè)線程完成相應(yīng)的處理,記錄兩張顯卡運(yùn)行時(shí)間較長(zhǎng)者為圖像內(nèi)存處理的時(shí)間,得到圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二各自的處理結(jié)果;
步驟四:丟棄重疊區(qū)域的數(shù)據(jù),合并圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二的處理結(jié)果,完成雙顯卡的gpu對(duì)一張圖像的并發(fā)處理。具體為:圖像數(shù)據(jù)塊一丟棄重疊區(qū)域二的數(shù)據(jù),圖像數(shù)據(jù)塊二丟棄重疊區(qū)域一的數(shù)據(jù);合并圖像數(shù)據(jù)塊一和圖像數(shù)據(jù)塊二的處理結(jié)果;釋放gpu資源,輸出處理結(jié)果。
考慮更多顯卡并發(fā)的機(jī)制,與雙顯卡的處理機(jī)制基本一致,一般pc架構(gòu)很難采用多于兩個(gè)顯卡的部署。所以我們以雙顯卡作為多gpu并發(fā)處理的主要結(jié)構(gòu)。
以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說(shuō)明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說(shuō)明的各實(shí)施例的范圍和精神的情況下,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)許多修改和變更都是顯而易見(jiàn)的。