本發(fā)明實(shí)施例涉及圖像處理
技術(shù)領(lǐng)域:
:,特別是涉及一種png圖像的解碼方法、裝置及系統(tǒng)。
背景技術(shù):
::隨著圖像處理技術(shù)及計(jì)算機(jī)技術(shù)的快速發(fā)展,png(portablenetworkgraphicformat,流式網(wǎng)絡(luò)圖形格式)圖像作為一種針對(duì)位圖的新型的圖像文件存儲(chǔ)格式誕生,增加了gif文件格式所不具備的一些特性,其目的是企圖替代gif和tiff文件格式的圖像。隨著手機(jī)、平板、數(shù)碼相機(jī)等圖像采集設(shè)備的發(fā)展,用戶對(duì)圖像像素規(guī)模的提升,導(dǎo)致互聯(lián)網(wǎng)上圖像數(shù)據(jù)規(guī)模呈指數(shù)級(jí)增長(zhǎng),為了減少圖像數(shù)據(jù)規(guī)模的增長(zhǎng),png無損壓縮圖像格式在互聯(lián)網(wǎng)中得到了廣泛的應(yīng)用和普及,越來越多的應(yīng)用采用了png圖像格式作為圖像素材。目前,在數(shù)據(jù)中心對(duì)png圖像進(jìn)行解碼時(shí),一般通過調(diào)用png解碼庫(kù)實(shí)現(xiàn),即利用libpng庫(kù)從png圖像文件中解碼得到rgba格式像素?cái)?shù)據(jù),為進(jìn)一步的圖像像素?cái)?shù)據(jù)編碼做準(zhǔn)備,而png解碼庫(kù)是采用c語言實(shí)現(xiàn),在通用處理器上串行執(zhí)行,導(dǎo)致圖像文件解碼的性能受限,尤其是近年來圖像分辨率的不斷增大,用戶對(duì)圖像解碼性能的要求越來越高,現(xiàn)有技術(shù)中png圖像解碼方法已經(jīng)無法滿足用戶的需求。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例的目的是提供一種png圖像的解碼方法、裝置及系統(tǒng),加快了png圖像解碼的速度,提升了png圖像解碼性能。為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供以下技術(shù)方案:本發(fā)明實(shí)施例一方面提供了一種png圖像的解碼方法,包括:采用c語言對(duì)png圖像的文件格式進(jìn)行解析,以獲取所述png圖像的原始數(shù)據(jù);調(diào)用opencl語言通過寫緩存的方式,將所述原始數(shù)據(jù)發(fā)送至fpga板卡的內(nèi)存中;發(fā)送解碼所述png圖像的原始數(shù)據(jù)的啟動(dòng)指令至所述fpga板卡,所述fpga板卡的解碼算法硬件電路采用所述opencl語言描述實(shí)現(xiàn),根據(jù)預(yù)設(shè)的解碼算法對(duì)所述原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮;調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡的內(nèi)存中讀取解壓縮后的圖像數(shù)據(jù),以完成對(duì)所述png圖像的解碼??蛇x的,所述fpga板卡的解碼算法硬件電路采用所述opencl語言描述實(shí)現(xiàn),根據(jù)預(yù)設(shè)的解碼算法對(duì)所述原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮為:所述fpga板卡的解碼算法硬件電路采用所述opencl語言實(shí)現(xiàn)的huffman解碼算法,根據(jù)所述原始數(shù)據(jù)中的huffman碼表對(duì)所述原始數(shù)據(jù)進(jìn)行huffman解碼,并根據(jù)所述opencl語言描述的lz77解壓縮算法硬件電路對(duì)huffman解碼后的數(shù)據(jù)進(jìn)行解壓縮。可選的,所述將所述原始數(shù)據(jù)發(fā)送至fpga板卡的內(nèi)存中為:將所述原始數(shù)據(jù)發(fā)送至fpga板卡的ddr內(nèi)存中,并進(jìn)行存儲(chǔ)。可選的,所述調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡的內(nèi)存中讀取解壓縮后的圖像數(shù)據(jù)包括:判斷所述fpga板卡是否完成對(duì)所述png圖像解碼;當(dāng)判定所述fpga板卡完成對(duì)所述png圖像解碼時(shí),調(diào)用所述opencl語言通過讀緩存,從所述fpga板卡的內(nèi)存中讀取解壓縮后的數(shù)據(jù)??蛇x的,所述調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡的內(nèi)存中讀取解壓縮后的圖像數(shù)據(jù)包括:當(dāng)接收到所述fpga板卡反饋的獲取解碼圖像的指令后,調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡的內(nèi)存中讀取解壓縮后的數(shù)據(jù)??蛇x的,所述根據(jù)預(yù)設(shè)的解碼算法對(duì)所述原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮包括:采用所述opencl語言中的制導(dǎo)語句、根據(jù)預(yù)設(shè)的解碼算法對(duì)所述原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮,以實(shí)現(xiàn)循環(huán)展開、循環(huán)流水的操作??蛇x的,所述根據(jù)c語言對(duì)png圖像的文件格式進(jìn)行解析,以獲取所述png圖像的原始數(shù)據(jù)包括:利用c語言從所述png圖像的中讀取文件標(biāo)志信息以及關(guān)鍵數(shù)據(jù)塊信息;當(dāng)根據(jù)所述文件標(biāo)志信息判定所述png圖像為標(biāo)準(zhǔn)的png圖像時(shí),從所述關(guān)鍵數(shù)據(jù)塊信息中獲取idat圖像數(shù)據(jù)塊,作為所述png圖像待解碼以及待解壓縮的的原始數(shù)據(jù)??蛇x的,所述調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡讀取解壓縮后的數(shù)據(jù)包括:調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡ddr內(nèi)存中讀取rgba格式的數(shù)據(jù)流。本發(fā)明實(shí)施例另一方面提供了一種png圖像的解碼裝置,包括:數(shù)據(jù)獲取模塊,用于采用c語言對(duì)png圖像的文件格式進(jìn)行解析,以獲取所述png圖像的原始數(shù)據(jù);調(diào)用fpga板卡解碼模塊,用于調(diào)用opencl語言通過寫緩存的方式,將所述原始數(shù)據(jù)發(fā)送至fpga板卡的內(nèi)存中;發(fā)送解碼所述png圖像的原始數(shù)據(jù)的啟動(dòng)指令至所述fpga板卡,所述fpga板卡的解碼算法硬件電路采用所述opencl語言描述實(shí)現(xiàn),根據(jù)預(yù)設(shè)的解碼算法對(duì)所述原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮;獲取解碼圖像模塊,用于調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡的內(nèi)存中讀取解壓縮后的圖像數(shù)據(jù),以完成對(duì)所述png圖像的解碼。本發(fā)明實(shí)施例還提供了一種png圖像的解碼系統(tǒng),包括處理器以及fpga板卡,所述處理器通過pci-e接口與所述fpga板卡相連;其中,所述處理器包括如前所述的png圖像的解碼裝置;所述fpga板卡用于對(duì)png圖像進(jìn)行解碼。本發(fā)明實(shí)施例提供了一種png圖像的解碼方法,主機(jī)端cpu利用c語言通過對(duì)png圖像的文件格式進(jìn)行解析獲取png圖像的原始數(shù)據(jù);然后調(diào)用opencl語言將所述原始數(shù)據(jù)以寫緩存的方式寫至fpga板卡;fpga板卡接收到主機(jī)端的解碼指令后,采用opencl語言,根據(jù)預(yù)設(shè)的解碼算法對(duì)原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮;最后主機(jī)端cpu調(diào)用opencl語言從通過fpga板卡中,以讀緩存的方式讀取解壓縮后的數(shù)據(jù),從而獲取解碼后的png圖像。本申請(qǐng)?zhí)峁┑募夹g(shù)方案的優(yōu)點(diǎn)在于,將fpga板卡與主機(jī)端cpu組成異構(gòu)平臺(tái),利用fpga板卡的并行流水方式對(duì)png圖像進(jìn)行解碼,有效的避免了傳統(tǒng)cpu串行方式進(jìn)行解碼的繁瑣形式,大大的縮減了圖像解碼時(shí)間,提高了圖像解碼的吞吐率性能,提高了整體png圖像解碼的速率以及性能,有利于提高開發(fā)效率。此外,本發(fā)明實(shí)施例還針對(duì)png圖像的解碼方法提供了相應(yīng)的實(shí)現(xiàn)裝置及系統(tǒng),進(jìn)一步使得所述方法更具有實(shí)用性,所述裝置及系統(tǒng)具有相應(yīng)的優(yōu)點(diǎn)。附圖說明為了更清楚的說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的一種png圖像的解碼方法的流程示意圖;圖2為本發(fā)明實(shí)施例提供的png圖像的解碼裝置的一種具體實(shí)施方式結(jié)構(gòu)圖;圖3為本發(fā)明實(shí)施例提供的png圖像的解碼系統(tǒng)的一種具體實(shí)施方式結(jié)構(gòu)圖。具體實(shí)施方式為了使本
技術(shù)領(lǐng)域:
:的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本申請(qǐng)的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”“第四”等是用于區(qū)別不同的對(duì)象,而不是用于描述特定的順序。此外術(shù)語“包括”和“具有”以及他們?nèi)魏巫冃?,意圖在于覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備沒有限定于已列出的步驟或單元,而是可包括沒有列出的步驟或單元。本申請(qǐng)的發(fā)明人經(jīng)過研究發(fā)現(xiàn),隨著圖像分辨率的不斷增大,以及用戶對(duì)圖像解碼性能的要求越來越高,現(xiàn)有的png圖像進(jìn)行解碼方法急需改善,提升解碼性能。fpga(field-programmablegatearray,現(xiàn)場(chǎng)可編程門陣列),它是在pal、gal、cpld等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物,是一種新型的異構(gòu)計(jì)算平臺(tái)加速器件,由可編程的邏輯塊和互聯(lián)網(wǎng)絡(luò)組成,可在不同邏輯下執(zhí)行多個(gè)線程,實(shí)現(xiàn)流水線并行處理,具有較強(qiáng)的并行處理能力。fpga在大數(shù)據(jù)處理領(lǐng)域具有諸多優(yōu)勢(shì),如采用流水線方式實(shí)現(xiàn)并行計(jì)算、低功耗、動(dòng)態(tài)可重構(gòu)等。異構(gòu)計(jì)算是指使用不同類型指令集和體系架構(gòu)的計(jì)算單元組成系統(tǒng)的計(jì)算方式,能夠根據(jù)每一個(gè)計(jì)算子系統(tǒng)的結(jié)構(gòu)特點(diǎn)為其分配不同的計(jì)算任務(wù),常見的計(jì)算單元有中央處理器cpu、圖形處理器gpu、數(shù)字信號(hào)處理dsp、專用集成電路asic、fpga等。比如cpu和gpu之間的“協(xié)同計(jì)算、彼此加速”,從而突破cpu發(fā)展的瓶頸。這種模式可提高服務(wù)器的計(jì)算性能、能效比和計(jì)算實(shí)時(shí)性。fpga可作為硬件加速協(xié)處理器來提升圖像編解碼算法的性能,但是針對(duì)fpga硬件加速系統(tǒng),傳統(tǒng)上是采用vhdl/verilog等rtl硬件描述語言進(jìn)行設(shè)計(jì),具有很高的設(shè)計(jì)復(fù)雜度,往往導(dǎo)致較長(zhǎng)的開發(fā)周期。隨著技術(shù)的發(fā)展,opencl作為一種開放式計(jì)算高級(jí)編程語言,采用的算法調(diào)試模式代替了傳統(tǒng)硬件描述語言對(duì)fpga進(jìn)行編譯開發(fā),有效的解決了傳統(tǒng)上fpga硬件加速電路設(shè)計(jì)所存在的較高復(fù)雜度問題。opencl可直接寫入fpga進(jìn)行程序驗(yàn)證,為fpga廣泛應(yīng)用于通用計(jì)算領(lǐng)域進(jìn)行快速開發(fā)提供了便利的保證。鑒于此,本申請(qǐng)通過將fpga板卡與cpu結(jié)合為異構(gòu)平臺(tái),主機(jī)端cpu利用c語言通過對(duì)png圖像的文件格式進(jìn)行解析獲取png圖像的原始數(shù)據(jù);然后調(diào)用opencl語言將所述原始數(shù)據(jù)以寫緩存的方式寫至fpga板卡;fpga板卡接收到主機(jī)端的解碼指令后,采用opencl語言,根據(jù)預(yù)設(shè)的解碼算法對(duì)原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮;最后主機(jī)端cpu調(diào)用opencl語言從通過fpga板卡中,以讀緩存的方式讀取解壓縮后的數(shù)據(jù),從而獲取解碼后的png圖像。在介紹了本發(fā)明實(shí)施例的技術(shù)方案后,下面詳細(xì)的說明本申請(qǐng)的各種非限制性實(shí)施方式。首先請(qǐng)參見圖1,圖1為本發(fā)明實(shí)施例提供的一種png圖像的解碼方法的流程示意圖,本發(fā)明實(shí)施例可包括以下內(nèi)容:s101:采用c語言對(duì)png圖像的文件格式進(jìn)行解析,以獲取所述png圖像的原始數(shù)據(jù)。主機(jī)端cpu獲取待解碼png圖像,采用c語言對(duì)png圖像的文件格式進(jìn)行解析,包括從png圖像中讀取文件標(biāo)志信息、關(guān)鍵數(shù)據(jù)塊信息、輔助數(shù)據(jù)塊等內(nèi)容,通過分析文件標(biāo)志的判斷是否為標(biāo)準(zhǔn)png圖像文件。一種優(yōu)選方式下,當(dāng)文件標(biāo)志顯示當(dāng)前圖像不為標(biāo)準(zhǔn)png圖像文件時(shí),可將其先轉(zhuǎn)化為標(biāo)準(zhǔn)的pnc圖像。關(guān)鍵數(shù)據(jù)塊信息中包含分析文件頭數(shù)據(jù)塊、調(diào)色板數(shù)據(jù)塊及idat圖像數(shù)據(jù)塊,當(dāng)根據(jù)所述文件標(biāo)志信息判定png圖像為標(biāo)準(zhǔn)的png圖像時(shí),可從關(guān)鍵數(shù)據(jù)塊信息中獲取idat圖像數(shù)據(jù)塊,作為png圖像的原始數(shù)據(jù)。s102:調(diào)用opencl語言通過寫緩存的方式,將所述原始數(shù)據(jù)發(fā)送至fpga板卡的內(nèi)存中。利用opencl語言的寫緩存的方法,將png圖像的原始數(shù)據(jù)可通過pcie接口傳到fpga板卡上的ddr內(nèi)存中,并進(jìn)行存儲(chǔ)。當(dāng)然,也可放于fpga板卡上的其他地方,這均不影響本申請(qǐng)的實(shí)現(xiàn)??蓪ng圖像的數(shù)據(jù)保存至fpga板卡的ddr內(nèi)存上,在發(fā)生斷電或者其他設(shè)備壞掉的情況下,避免重新進(jìn)行寫入數(shù)據(jù)以及數(shù)據(jù)的丟失,有利于提高整個(gè)系統(tǒng)的穩(wěn)定性以及效率。fpga板卡與主機(jī)端cpu可通過pci-e接口連接,opencl語言提供了封裝好的pci-e接口驅(qū)動(dòng)程序,與現(xiàn)有技術(shù)相比,有效的避免了對(duì)pcie通信驅(qū)動(dòng)的開發(fā),降低了系統(tǒng)的開發(fā)難度。s103:發(fā)送解碼所述png圖像的原始數(shù)據(jù)的啟動(dòng)指令至所述fpga板卡,所述fpga板卡的解碼算法硬件電路采用所述opencl語言描述實(shí)現(xiàn),根據(jù)預(yù)設(shè)的解碼算法對(duì)所述原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮。fpga板卡包括fpga芯片以及內(nèi)存,fpga芯片包括實(shí)現(xiàn)解碼算法的硬件電路以及處理指令等。fpga板卡接收到主機(jī)端cpu發(fā)送的對(duì)png圖像進(jìn)行解碼的啟動(dòng)指令后,利用opencl語言調(diào)用fpga芯片上的解碼算法硬件電路對(duì)png圖像進(jìn)行解碼。解碼算法可為huffman解碼算法,即根據(jù)所述原始數(shù)據(jù)中的huffman碼表對(duì)所述原始數(shù)據(jù)進(jìn)行huffman解碼。當(dāng)然,也可為其他解碼算法,本申請(qǐng)對(duì)此不做任何限定。對(duì)png圖像的解碼過程,具體可為:fpga芯片先從fpga板卡的內(nèi)存中讀取png圖像的原始數(shù)據(jù),利用opencl調(diào)用png圖像解碼算法的huffman解碼kernel,即對(duì)png圖像文件中的idat原始數(shù)據(jù)進(jìn)行解碼??刹捎胊lterasdkforopencl工具進(jìn)行綜合,自動(dòng)生成可在fpga板卡執(zhí)行的硬件比特流文件。在opencl實(shí)現(xiàn)huffman解碼時(shí),可通過充分的循環(huán)展開、循環(huán)流水等制導(dǎo)語句指令,實(shí)現(xiàn)高效并行流水的huffman解碼。在對(duì)png圖像進(jìn)行解碼后,可利用openclopencl語言描述的lz77解壓縮算法硬件電路解壓縮kernel對(duì)huffman解碼后的圖像數(shù)據(jù)進(jìn)行解壓縮。在實(shí)現(xiàn)時(shí),通過對(duì)opencl實(shí)現(xiàn)的循環(huán)程序進(jìn)行循環(huán)展開、循環(huán)流水優(yōu)化,提高lz77解壓縮性能。在解壓縮完成之后,fpga芯片將解壓縮后的數(shù)據(jù)寫入至fpga板卡的內(nèi)存中。在采用opencl對(duì)png圖像進(jìn)行解碼過程中,可采用制導(dǎo)語句pragmaunroll進(jìn)行循環(huán)展開優(yōu)化控制,同時(shí)消除循環(huán)相關(guān)的訪存依賴關(guān)系,提高kernel中循環(huán)程序流水執(zhí)行的效率。當(dāng)然,也可采用其他制導(dǎo)語句,這均不影響本申請(qǐng)的實(shí)現(xiàn)。s104:調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡的內(nèi)存中讀取解壓縮后的圖像數(shù)據(jù),以完成對(duì)所述png圖像的解碼。由于fpga板卡對(duì)png圖像進(jìn)行解碼需要一定的時(shí)間,主機(jī)端cpu可一直發(fā)送一個(gè)獲取解碼后的png圖像的指令,也可通過下述方式進(jìn)行:判斷所述fpga板卡是否完成對(duì)所述png圖像解碼;當(dāng)判定所述fpga板卡完成對(duì)所述png圖像解碼時(shí),調(diào)用所述opencl語言通過讀緩存,從所述fpga板卡的內(nèi)存中讀取解壓縮后的數(shù)據(jù)。或者:當(dāng)接收到所述fpga板卡反饋的獲取解碼圖像的指令后,調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡的內(nèi)存中讀取解壓縮后的數(shù)據(jù)。當(dāng)然,也可通過其他方式來觸發(fā)主機(jī)端cpu到fpga板卡的內(nèi)存中讀取解碼后的數(shù)據(jù)。解碼后的png圖像數(shù)據(jù)可為rgba格式數(shù)據(jù)流,每一個(gè)像素?cái)?shù)據(jù)用32位整型表示,r(red)、g(green)、b(blue)、a(alpha)四種顏色數(shù)據(jù)分別占用其中的8位。故,主機(jī)端cpu從fpga板卡讀取的png圖像可為rgba格式的數(shù)據(jù)流。在本發(fā)明實(shí)施例提供的技術(shù)方案中,將fpga板卡與主機(jī)端cpu組成異構(gòu)平臺(tái),利用fpga板卡的并行流水方式對(duì)png圖像進(jìn)行解碼,有效的避免了傳統(tǒng)cpu串行方式進(jìn)行解碼的繁瑣形式,大大的縮減了圖像解碼時(shí)間,提高了圖像解碼的吞吐率性能,提高了整體png圖像解碼的速率以及性能,有利于提高開發(fā)效率本發(fā)明實(shí)施例還針對(duì)png圖像的解碼方法提供了相應(yīng)的實(shí)現(xiàn)裝置,進(jìn)一步使得所述方法更具有實(shí)用性。下面對(duì)本發(fā)明實(shí)施例提供的png圖像的解碼裝置進(jìn)行介紹,下文描述的png圖像的解碼裝置與上文描述的png圖像的解碼方法可相互對(duì)應(yīng)參照。參見圖2,圖2為本發(fā)明實(shí)施例提供的png圖像的解碼裝置在一種具體實(shí)施方式下的結(jié)構(gòu)圖,該裝置可包括:數(shù)據(jù)獲取模塊201,用于采用c語言對(duì)png圖像的文件格式進(jìn)行解析,以獲取所述png圖像的原始數(shù)據(jù)。調(diào)用fpga板卡解碼模塊202,用于調(diào)用opencl語言通過寫緩存的方式,將所述原始數(shù)據(jù)發(fā)送至fpga板卡的內(nèi)存中;發(fā)送解碼所述png圖像的原始數(shù)據(jù)的啟動(dòng)指令至所述fpga板卡,所述fpga板卡的解碼算法硬件電路采用所述opencl語言描述實(shí)現(xiàn),根據(jù)預(yù)設(shè)的解碼算法對(duì)所述原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮。獲取解碼圖像模塊203,用于調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡的內(nèi)存中讀取解壓縮后的圖像數(shù)據(jù),以完成對(duì)所述png圖像的解碼??蛇x的,在本實(shí)施例的一些實(shí)施方式中,所述調(diào)用fpga板卡解碼模塊202可為所述fpga板卡采用所述opencl語言,根據(jù)png圖像解碼算法的huffman對(duì)所述原始數(shù)據(jù)進(jìn)行解碼,并根據(jù)lz77對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮的模塊。調(diào)用fpga板卡解碼模塊202還可為將所述原始數(shù)據(jù)發(fā)送至fpga板卡的ddr內(nèi)存中,并進(jìn)行存儲(chǔ)。在另外一些實(shí)施方式中,調(diào)用fpga板卡解碼模塊202還可為采用所述opencl語言中的制導(dǎo)語句、根據(jù)據(jù)預(yù)設(shè)的解碼算法對(duì)所述原始數(shù)據(jù)進(jìn)行解碼,并對(duì)解碼后的數(shù)據(jù)進(jìn)行解壓縮,以實(shí)現(xiàn)循環(huán)展開、循環(huán)流水的操作的模塊??蛇x的,在本實(shí)施例的另一些實(shí)施方式中,所述獲取解碼圖像模塊203可為判斷所述fpga板卡是否完成對(duì)所述png圖像解碼;當(dāng)判定所述fpga板卡完成對(duì)所述png圖像解碼時(shí),調(diào)用所述opencl語言通過讀緩存,從所述fpga板卡的內(nèi)存中讀取解壓縮后的數(shù)據(jù)的模塊。所述獲取解碼圖像模塊203還可為當(dāng)接收到所述fpga板卡反饋的獲取解碼圖像的指令后,調(diào)用所述opencl語言通過讀緩存的方式,從所述fpga板卡的內(nèi)存中讀取解壓縮后的數(shù)據(jù)的模塊。在本實(shí)施例的其他一些實(shí)施方式中,所述數(shù)據(jù)獲取模塊201可為利用c語言從所述png圖像的中讀取文件標(biāo)志信息以及關(guān)鍵數(shù)據(jù)塊信息;當(dāng)根據(jù)所述文件標(biāo)志信息判定所述png圖像為標(biāo)準(zhǔn)的png圖像時(shí),從所述關(guān)鍵數(shù)據(jù)塊信息中獲取idat圖像數(shù)據(jù)塊,作為所述png圖像待解碼以及待解壓縮的模塊。本發(fā)明實(shí)施例所述png圖像的解碼裝置的各功能模塊的功能可根據(jù)上述方法實(shí)施例中的方法具體實(shí)現(xiàn),其具體實(shí)現(xiàn)過程可以參照上述方法實(shí)施例的相關(guān)描述,此處不再贅述。由上可知,本發(fā)明實(shí)施例將fpga板卡與主機(jī)端cpu組成異構(gòu)平臺(tái),利用fpga板卡的并行流水方式對(duì)png圖像進(jìn)行解碼,有效的避免了傳統(tǒng)cpu串行方式進(jìn)行解碼的繁瑣形式,大大的縮減了圖像解碼時(shí)間,提高了圖像解碼的吞吐率性能,提高了整體png圖像解碼的速率以及性能,有利于提高開發(fā)效率。本發(fā)明實(shí)施例還提供了一種png圖像的解碼系統(tǒng),參見圖3,可包括:處理器301以及fpga板卡302,所述處理器301通過pci-e接口與所述fpga板卡302相連;其中,所述處理器301包括如前任意一個(gè)實(shí)施例所述的png圖像的解碼裝置;所述fpga板卡302用于對(duì)png圖像進(jìn)行解碼。當(dāng)然,主機(jī)端的處理器301還可通過其他接口與fpga板卡302相連,進(jìn)行互相通信。本發(fā)明實(shí)施例所述png圖像的解碼系統(tǒng)的各功能模塊的功能可根據(jù)上述方法實(shí)施例中的方法具體實(shí)現(xiàn),其具體實(shí)現(xiàn)過程可以參照上述方法實(shí)施例的相關(guān)描述,此處不再贅述。由上可知,本發(fā)明實(shí)施例將fpga板卡與主機(jī)端cpu組成異構(gòu)平臺(tái),利用fpga板卡的并行流水方式對(duì)png圖像進(jìn)行解碼,有效的避免了傳統(tǒng)cpu串行方式進(jìn)行解碼的繁瑣形式,大大的縮減了圖像解碼時(shí)間,提高了圖像解碼的吞吐率性能,提高了整體png圖像解碼的速率以及性能,有利于提高開發(fā)效率。本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說明即可。專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(ram)、內(nèi)存、只讀存儲(chǔ)器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動(dòng)磁盤、cd-rom、或
技術(shù)領(lǐng)域:
:內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。以上對(duì)本發(fā)明所提供的一種png圖像的解碼方法、裝置及系統(tǒng)進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本
技術(shù)領(lǐng)域:
:的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12