欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

圖像編碼方法和裝置與流程

文檔序號(hào):12890339閱讀:243來(lái)源:國(guó)知局
圖像編碼方法和裝置與流程

本發(fā)明涉及圖像編碼領(lǐng)域,具體而言,涉及一種圖像編碼方法和裝置。



背景技術(shù):

聯(lián)合圖像專家小組jpeg編碼是一種廣泛使用的無(wú)專利權(quán)的圖像編碼算法,通常的實(shí)現(xiàn)都是使用cpu或者gpu進(jìn)行jpeg編碼。其中,jpeg編碼的步驟包括:1.圖像分塊;2.離散余弦變換(discretecosinetransform,簡(jiǎn)稱dct)變換;3.量化;4.編碼。如圖1所示,先將原始圖象數(shù)據(jù)分成8*8的小塊,然后進(jìn)行dct變換,再通過(guò)量化器根據(jù)量化表對(duì)dct變換之后得到的結(jié)果進(jìn)行量化,然后通過(guò)熵編碼器根據(jù)碼表對(duì)量化之后得到的結(jié)果進(jìn)行編碼,得到最后的壓縮數(shù)據(jù)。現(xiàn)有的技術(shù)通常全部使用cpu進(jìn)行編碼計(jì)算,cpu性能負(fù)載較大,或者,全部使用gpu進(jìn)行編碼,gpu在編碼的時(shí)候,cpu處于空閑狀態(tài)。

針對(duì)相關(guān)技術(shù)中的jpeg圖像編碼方法系統(tǒng)利用效率較低導(dǎo)致編碼效率較低的技術(shù)問(wèn)題,目前尚未提出有效的解決方案。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種圖像編碼方法和裝置,以至少解決相關(guān)技術(shù)中的jpeg圖像編碼方法系統(tǒng)利用效率較低導(dǎo)致編碼效率較低的技術(shù)問(wèn)題。

根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種圖像編碼方法,包括:確定用于將原始圖像編碼為聯(lián)合圖像專家小組jpeg圖像文件的中央處理器cpu和圖像處理器gpu;利用確定的cpu和gpu共同執(zhí)行編碼過(guò)程。

進(jìn)一步地,利用確定的cpu和gpu共同執(zhí)行編碼過(guò)程包括:通過(guò)cpu和gpu分別執(zhí)行編碼過(guò)程的不同子任務(wù),其中,編碼過(guò)程包括多個(gè)子任務(wù)。

進(jìn)一步地,通過(guò)cpu和gpu分別執(zhí)行編碼過(guò)程的不同子任務(wù)包括:通過(guò)cpu對(duì)原始圖像執(zhí)行圖像分塊;調(diào)用gpu的應(yīng)用程序編程接口api將圖像分塊的結(jié)果復(fù)制到gpu的顯存中;通過(guò)gpu執(zhí)行壓縮,進(jìn)而對(duì)壓縮的結(jié)果執(zhí)行量化運(yùn)算;調(diào)用gpu的api將量化運(yùn)算的結(jié)果復(fù)制到主機(jī)內(nèi)存中;通過(guò)cpu對(duì)量化運(yùn)算的結(jié)果執(zhí)行熵編碼,得到j(luò)peg圖像文件。

進(jìn)一步地,通過(guò)cpu對(duì)原始圖像執(zhí)行圖像分塊包括:通過(guò)cpu從主機(jī)內(nèi)存中讀取原始圖像;通過(guò)cpu按照預(yù)設(shè)長(zhǎng)度和預(yù)設(shè)寬度對(duì)原始圖像進(jìn)行分塊,得到多塊圖像;通過(guò)cpu提取每塊圖像中的預(yù)設(shè)參數(shù),得到每塊圖像的參數(shù)矩陣。

進(jìn)一步地,通過(guò)gpu執(zhí)行壓縮,進(jìn)而對(duì)壓縮的結(jié)果執(zhí)行量化運(yùn)算包括:通過(guò)gpu采用浮點(diǎn)float向量類型分別對(duì)每個(gè)參數(shù)矩陣執(zhí)行離散余弦dct變換;通過(guò)gpu利用預(yù)設(shè)量化表分別對(duì)經(jīng)過(guò)dct變換之后的每個(gè)參數(shù)矩陣進(jìn)行量化。

進(jìn)一步地,在通過(guò)gpu利用預(yù)設(shè)量化表分別對(duì)經(jīng)過(guò)dct變換之后的每個(gè)參數(shù)矩陣進(jìn)行量化之前,該方法還包括:通過(guò)cpu生成預(yù)設(shè)量化表;調(diào)用gpu的api將預(yù)設(shè)量化表復(fù)制到gpu的顯存中。

進(jìn)一步地,通過(guò)cpu對(duì)量化運(yùn)算的結(jié)果執(zhí)行熵編碼包括:通過(guò)cpu基于zigzag掃描方式分別對(duì)量化之后的每個(gè)參數(shù)矩陣進(jìn)行掃描,得到多個(gè)數(shù)組;通過(guò)cpu對(duì)多個(gè)數(shù)組進(jìn)行huffman編碼,得到j(luò)peg圖像文件。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種圖像編碼裝置,包括:確定單元,用于確定用于將原始圖像編碼為聯(lián)合圖像專家小組jpeg圖像文件的中央處理器cpu和圖像處理器gpu;執(zhí)行單元,用于利用確定的cpu和gpu共同執(zhí)行編碼過(guò)程。

進(jìn)一步地,執(zhí)行單元進(jìn)一步用于通過(guò)cpu和gpu分別執(zhí)行編碼過(guò)程的不同子任務(wù),其中,編碼過(guò)程包括多個(gè)子任務(wù)。

進(jìn)一步地,執(zhí)行單元包括:第一執(zhí)行模塊,用于通過(guò)cpu對(duì)原始圖像執(zhí)行圖像分塊;第一調(diào)用模塊,用于調(diào)用gpu的應(yīng)用程序編程接口api將圖像分塊的結(jié)果復(fù)制到gpu的顯存中;第二執(zhí)行模塊,用于通過(guò)gpu執(zhí)行壓縮,進(jìn)而對(duì)壓縮的結(jié)果執(zhí)行量化運(yùn)算;第二調(diào)用模塊,用于調(diào)用gpu的api將量化運(yùn)算的結(jié)果復(fù)制到主機(jī)內(nèi)存中;第三執(zhí)行模塊,用于通過(guò)cpu對(duì)量化運(yùn)算的結(jié)果執(zhí)行熵編碼,得到j(luò)peg圖像文件。

進(jìn)一步地,第一執(zhí)行模塊包括:讀取模塊,用于通過(guò)cpu從主機(jī)內(nèi)存中讀取原始圖像;分塊模塊,用于通過(guò)cpu按照預(yù)設(shè)長(zhǎng)度和預(yù)設(shè)寬度對(duì)原始圖像進(jìn)行分塊,得到多塊圖像;提取模塊,用于通過(guò)cpu提取每塊圖像中的預(yù)設(shè)參數(shù),得到每塊圖像的參數(shù)矩陣。

進(jìn)一步地,第二執(zhí)行模塊包括:變換模塊,用于通過(guò)gpu采用浮點(diǎn)float向量類型分別對(duì)每個(gè)參數(shù)矩陣執(zhí)行離散余弦dct變換;量化模塊,用于通過(guò)gpu利用預(yù)設(shè)量化表分別對(duì)經(jīng)過(guò)dct變換之后的每個(gè)參數(shù)矩陣進(jìn)行量化。

進(jìn)一步地,該裝置還包括:生成模塊,用于在通過(guò)gpu利用預(yù)設(shè)量化表分別對(duì)經(jīng)過(guò)dct變換之后的每個(gè)參數(shù)矩陣進(jìn)行量化之前,通過(guò)cpu生成預(yù)設(shè)量化表;第三調(diào)用模塊,用于調(diào)用gpu的api將預(yù)設(shè)量化表復(fù)制到gpu的顯存中。

進(jìn)一步地,第三執(zhí)行模塊包括:掃描模塊,用于通過(guò)cpu基于zigzag掃描方式分別對(duì)量化之后的每個(gè)參數(shù)矩陣進(jìn)行掃描,得到多個(gè)數(shù)組;編碼模塊,用于通過(guò)cpu對(duì)多個(gè)數(shù)組進(jìn)行huffman編碼,得到j(luò)peg圖像文件。

在本發(fā)明實(shí)施例中,通過(guò)確定用于將原始圖像編碼為聯(lián)合圖像專家小組jpeg圖像文件的中央處理器cpu和圖像處理器gpu;利用確定的中央處理器cpu和圖像處理器gpu共同執(zhí)行編碼過(guò)程,解決了相關(guān)技術(shù)中的jpeg圖像編碼方法系統(tǒng)利用效率較低導(dǎo)致編碼效率較低的技術(shù)問(wèn)題,進(jìn)而實(shí)現(xiàn)了能夠提高系統(tǒng)利用效率進(jìn)而提高編碼效率的技術(shù)效果。

附圖說(shuō)明

此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:

圖1是現(xiàn)有技術(shù)的一種圖像編碼方法的流程圖;

圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的圖像編碼方法的流程圖;

圖3是根據(jù)本發(fā)明實(shí)施例的另一種可選的圖像編碼方法的流程圖;

圖4是根據(jù)本發(fā)明實(shí)施例的一種可選的圖像分塊的示意圖;

圖5是根據(jù)本發(fā)明實(shí)施例的一種可選的gpu中存儲(chǔ)的參數(shù)矩陣的示意圖;

圖6是根據(jù)本發(fā)明實(shí)施例的一種可選的量化的示意圖;

圖7是根據(jù)本發(fā)明實(shí)施例的一種可選的zigzag掃描方式的示意圖;

圖8是根據(jù)本發(fā)明實(shí)施例的一種可選的圖像編碼裝置的示意圖。

具體實(shí)施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。

需要說(shuō)明的是,本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。

實(shí)施例1

本申請(qǐng)?zhí)峁┝艘环N圖像編碼方法的實(shí)施例。

圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的圖像編碼方法的流程圖,如圖2所示,該方法包括如下步驟:

步驟s101,確定用于將原始圖像編碼為聯(lián)合圖像專家小組jpeg圖像文件的中央處理器cpu和圖像處理器gpu。

cpu和gpu可以均可以是一個(gè)或多個(gè),在為多個(gè)的情況下,需要在多個(gè)處理器中選擇一個(gè)處理器,在只有一個(gè)cpu或只有一個(gè)gpu的情況下,則直接采用唯一的cpu或gpu進(jìn)行處理器。該步驟可以是通過(guò)cpu確定的,例如,通過(guò)cpu在主機(jī)的內(nèi)存中獲取預(yù)先存儲(chǔ)的處理方式,根據(jù)預(yù)先存儲(chǔ)的內(nèi)容確定編碼所用的cpu和gpu。

步驟s102,利用確定的cpu和gpu共同執(zhí)行編碼過(guò)程。

在確定出用于將原始圖像編碼為聯(lián)合圖像專家小組jpeg圖像文件的中央處理器cpu和圖像處理器gpu之后,利用確定的cpu和gpu共同執(zhí)行編碼過(guò)程。通過(guò)cpu和gpu共同執(zhí)行編碼過(guò)程,可以充分利用系統(tǒng)的效率,并可以對(duì)某個(gè)部分的運(yùn)算選用處理效率較高的處理器(cpu或gpu)進(jìn)行處理。

可選的,可以通過(guò)中央處理器cpu和圖像處理器gpu分別執(zhí)行編碼過(guò)程的不同子任務(wù),其中,編碼過(guò)程包括多個(gè)子任務(wù),或者,也可以將一個(gè)子任務(wù)通過(guò)中央處理器cpu和圖像處理器gpu共同執(zhí)行,中央處理器cpu和圖像處理器gpu執(zhí)行一個(gè)子任務(wù)的不同部分。

可選的,由于jpeg圖像編碼的過(guò)程包括多個(gè)子任務(wù),具體每個(gè)子任務(wù)由哪個(gè)處理器(cpu或gpu)進(jìn)行處理可以是預(yù)先存儲(chǔ)的;也可以是用戶輸入的;也可以是隨機(jī)確定的;也可以是根據(jù)當(dāng)前每個(gè)處理器的狀態(tài)確定的,例如,在處理當(dāng)前子任務(wù)之前,先根據(jù)之前的處理器運(yùn)行狀態(tài)確定處于空閑狀態(tài)的處理器(cpu或gpu),通過(guò)處于空閑狀態(tài)的處理器來(lái)執(zhí)行當(dāng)前的子任務(wù)。

該實(shí)施例通過(guò)確定用于將原始圖像編碼為聯(lián)合圖像專家小組jpeg圖像文件的中央處理器cpu和圖像處理器gpu;利用確定的中央處理器cpu和圖像處理器gpu共同執(zhí)行編碼過(guò)程,解決了相關(guān)技術(shù)中的jpeg圖像編碼方法系統(tǒng)利用效率較低導(dǎo)致編碼效率較低的技術(shù)問(wèn)題,進(jìn)而實(shí)現(xiàn)了能夠提高系統(tǒng)利用效率進(jìn)而提高編碼效率的技術(shù)效果。

可選地,可以通過(guò)分析中央處理器cpu和圖像處理器gpu的優(yōu)缺點(diǎn),將jpeg編碼中的不同子任務(wù)使用中央處理器cpu和圖像處理器gpu進(jìn)行協(xié)同異構(gòu)運(yùn)算,從而在降低中央處理器cpu負(fù)載的同時(shí)加快運(yùn)算速度,不僅能夠發(fā)揮中央處理器cpu和圖像處理器gpu的優(yōu)勢(shì),避免缺點(diǎn),而且可以在圖像處理器gpu進(jìn)行運(yùn)算的同時(shí)中央處理器cpu進(jìn)行運(yùn)算,流水作業(yè),從而提高編碼效率,有效降低中央處理器cpu負(fù)載。

可選地,通過(guò)中央處理器cpu和圖像處理器gpu分別執(zhí)行編碼過(guò)程的不同子任務(wù)包括:通過(guò)中央處理器cpu對(duì)原始圖像執(zhí)行圖像分塊;調(diào)用圖像處理器gpu的應(yīng)用程序編程接口api將圖像分塊的結(jié)果復(fù)制到圖像處理器gpu的顯存中;通過(guò)圖像處理器gpu執(zhí)行壓縮,進(jìn)而對(duì)壓縮的結(jié)果執(zhí)行量化運(yùn)算;調(diào)用圖像處理器gpu的api將量化運(yùn)算的結(jié)果復(fù)制到主機(jī)內(nèi)存中;通過(guò)中央處理器cpu對(duì)量化運(yùn)算的結(jié)果執(zhí)行熵編碼,得到j(luò)peg圖像文件。

可選地,通過(guò)中央處理器cpu對(duì)原始圖像執(zhí)行圖像分塊包括:通過(guò)中央處理器cpu從主機(jī)內(nèi)存中讀取原始圖像;通過(guò)中央處理器cpu按照預(yù)設(shè)長(zhǎng)度和預(yù)設(shè)寬度對(duì)原始圖像進(jìn)行分塊,得到多塊圖像;通過(guò)中央處理器cpu提取每塊圖像中的預(yù)設(shè)參數(shù),得到每塊圖像的參數(shù)矩陣。

可選地,通過(guò)圖像處理器gpu執(zhí)行壓縮,進(jìn)而對(duì)壓縮的結(jié)果執(zhí)行量化運(yùn)算包括:通過(guò)圖像處理器gpu采用浮點(diǎn)float向量類型分別對(duì)每個(gè)參數(shù)矩陣執(zhí)行離散余弦dct變換;通過(guò)圖像處理器gpu利用預(yù)設(shè)量化表分別對(duì)經(jīng)過(guò)dct變換之后的每個(gè)參數(shù)矩陣進(jìn)行量化。

可選地,在通過(guò)圖像處理器gpu利用預(yù)設(shè)量化表分別對(duì)經(jīng)過(guò)dct變換之后的每個(gè)參數(shù)矩陣進(jìn)行量化之前,該方法還包括:通過(guò)中央處理器cpu生成預(yù)設(shè)量化表;調(diào)用圖像處理器gpu的api將預(yù)設(shè)量化表復(fù)制到圖像處理器gpu的顯存中。

可選地,通過(guò)中央處理器cpu對(duì)量化運(yùn)算的結(jié)果執(zhí)行熵編碼包括:通過(guò)中央處理器cpu基于zigzag掃描方式分別對(duì)量化之后的每個(gè)參數(shù)矩陣進(jìn)行掃描,得到多個(gè)數(shù)組;通過(guò)中央處理器cpu對(duì)多個(gè)數(shù)組進(jìn)行huffman編碼,得到j(luò)peg圖像文件。

實(shí)施例2

作為上述實(shí)施例1的一種優(yōu)選實(shí)施例,通過(guò)中央處理器cpu和圖像處理器gpu分別執(zhí)行編碼過(guò)程的不同子任務(wù)。

如圖3所示,是上述優(yōu)選實(shí)施例的一種優(yōu)選的實(shí)施方式,其中,通過(guò)(主機(jī)的)中央處理器cpu和圖像處理器gpu分別執(zhí)行編碼過(guò)程的不同子任務(wù)包括:通過(guò)中央處理器cpu對(duì)原始圖像執(zhí)行圖像分塊;調(diào)用圖像處理器gpu的應(yīng)用程序編程接口api將圖像分塊的結(jié)果復(fù)制(數(shù)據(jù)拷貝)到圖像處理器gpu的顯存中;通過(guò)圖像處理器gpu執(zhí)行壓縮,進(jìn)而對(duì)壓縮的結(jié)果執(zhí)行量化運(yùn)算;調(diào)用圖像處理器gpu的api將量化運(yùn)算的結(jié)果復(fù)制(數(shù)據(jù)拷貝)到主機(jī)內(nèi)存中;通過(guò)中央處理器cpu對(duì)量化運(yùn)算的結(jié)果執(zhí)行熵編碼,得到j(luò)peg圖像文件。

具體而言,通過(guò)中央處理器cpu對(duì)原始圖像執(zhí)行圖像分塊可以包括:通過(guò)中央處理器cpu從主機(jī)內(nèi)存中讀取原始圖像(輸入圖像);通過(guò)中央處理器cpu按照預(yù)設(shè)長(zhǎng)度和預(yù)設(shè)寬度對(duì)原始圖像進(jìn)行分塊,得到多塊圖像;通過(guò)中央處理器cpu提取每塊圖像中的預(yù)設(shè)參數(shù),得到每塊圖像的參數(shù)矩陣。

例如,按照8*8像素的大小對(duì)原始圖像進(jìn)行分塊的情況如圖4所示。中央處理器cpu從主機(jī)內(nèi)存中讀取圖像數(shù)據(jù),將圖像數(shù)據(jù)分成8*8像素的圖像塊。在圖像數(shù)據(jù)的寬、高方向按照8像素進(jìn)行分割,不足8像素的圖像塊,將空白處的像素值采用0值補(bǔ)齊8像素。

圖像中的每個(gè)像素可以包括多個(gè)參數(shù),每個(gè)像素的像素值是多個(gè)參數(shù)的值,例如,以rgb形式存儲(chǔ)的圖像,每個(gè)像素值包括三個(gè)參數(shù)值(r,g,b),分別是r(red,紅色)、g(green,綠色)、b(blue,藍(lán)色)的參數(shù)值,而以hsv模型表示的圖像,每個(gè)像素的值包括(h,s,v)三個(gè)參數(shù)的值,分別為h(hue,色度)、s(saturation,飽和度)、v(value,亮度)。每個(gè)參數(shù)矩陣只包括多個(gè)參數(shù)中的一個(gè)參數(shù),每個(gè)參數(shù)矩陣中的各個(gè)元素的值為圖像塊中對(duì)應(yīng)像素的一個(gè)參數(shù)的值。

圖像分塊的結(jié)果包括多個(gè)參數(shù)矩陣,每塊圖像對(duì)應(yīng)有多個(gè)參數(shù)矩陣,在將圖像分塊的結(jié)果復(fù)制到圖像處理器gpu的顯存中之后,通過(guò)圖像處理器gpu執(zhí)行壓縮,進(jìn)而對(duì)壓縮的結(jié)果執(zhí)行量化運(yùn)算。具體的,壓縮的方式可以是dct變換,在壓縮式,可以通過(guò)圖像處理器gpu采用浮點(diǎn)float向量類型分別對(duì)每個(gè)參數(shù)矩陣執(zhí)行離散余弦dct變換,如圖5所示,每個(gè)參數(shù)矩陣中的各行和各列均采用圖像處理器gpu浮點(diǎn)向量,參數(shù)矩陣中每個(gè)元素的值可以用一個(gè)字節(jié)的長(zhǎng)度表示。dct變換的運(yùn)算采用的是整數(shù)dct的蝶形變換,通過(guò)圖像處理器gpu進(jìn)行運(yùn)算與通過(guò)中央處理器cpu進(jìn)行運(yùn)算的算法大致相同,分別對(duì)參數(shù)矩陣的8行和8列數(shù)據(jù)進(jìn)行運(yùn)算。區(qū)別在于通過(guò)圖像處理器gpu進(jìn)行dct變換時(shí),可以采用圖像處理器gpu的float向量類型來(lái)進(jìn)行數(shù)據(jù)運(yùn)算,加快運(yùn)算速度。

對(duì)每個(gè)參數(shù)矩陣執(zhí)行dct變換之后得到的結(jié)果仍然是大小相同的矩陣,可以稱作dct變換二維數(shù)組,如圖6所示。在執(zhí)行dct變換之后,可以通過(guò)圖像處理器gpu利用預(yù)設(shè)量化表分別對(duì)經(jīng)過(guò)dct變換之后的每個(gè)參數(shù)矩陣進(jìn)行量化。

量化運(yùn)算的過(guò)程是把dct變換運(yùn)算得出的結(jié)果與量化表上對(duì)應(yīng)位置的數(shù)值相乘,如圖6所示,量化表也即量化參數(shù)二維數(shù)組。預(yù)設(shè)量化表是與參數(shù)矩陣的大小相同的矩陣,例如,如圖6所示,參數(shù)矩陣是8*8的二維數(shù)組,量化表也為8*8的二維數(shù)組。預(yù)設(shè)量化表可以是通過(guò)中央處理器cpu準(zhǔn)備的,具體的,在進(jìn)行量化之前,通過(guò)中央處理器cpu生成預(yù)設(shè)量化表,然后調(diào)用圖像處理器gpu的api將預(yù)設(shè)量化表復(fù)制到圖像處理器gpu的顯存中??蛇x的,通過(guò)中央處理器cpu進(jìn)行圖像分塊和準(zhǔn)備量化表的步驟可以是同步進(jìn)行的,在得到圖像分塊的結(jié)果和準(zhǔn)備完量化表之后,調(diào)用圖像處理器gpu的api,將圖像分塊的結(jié)果與量化表拷貝到圖像處理器gpu顯存中。

需要說(shuō)明的是,不同的參數(shù)需要采用不同的量化表進(jìn)行量化,例如,對(duì)于亮度的參數(shù)矩陣,采用用于量化圖像亮度的量化表進(jìn)行量化,對(duì)于色度的參數(shù)矩陣,采用用于量化圖像色度的量化表進(jìn)行量化。

通過(guò)圖像處理器gpu進(jìn)行量化運(yùn)算的優(yōu)勢(shì)在于使用向量來(lái)進(jìn)行乘法運(yùn)算,能夠加快運(yùn)算速度。需要說(shuō)明的是,每個(gè)參數(shù)矩陣可以由一個(gè)圖像處理器gpu核心kernel進(jìn)行處理,圖像處理器gpu包括多個(gè)核心。

通過(guò)中央處理器cpu對(duì)量化運(yùn)算的結(jié)果執(zhí)行熵編碼可以包括:通過(guò)中央處理器cpu基于zigzag掃描方式分別對(duì)量化之后的每個(gè)參數(shù)矩陣進(jìn)行掃描,得到多個(gè)數(shù)組,通過(guò)中央處理器cpu對(duì)多個(gè)數(shù)組進(jìn)行huffman編碼,得到j(luò)peg圖像文件(壓縮數(shù)據(jù))。

dct變換和量化將一個(gè)n*n的二維數(shù)組變換成另一個(gè)n*n的二維數(shù)組,但是內(nèi)存里所有數(shù)據(jù)都是線形存放的,如果一行行的存放這n2個(gè)數(shù)字,每行的結(jié)尾的點(diǎn)和下行開(kāi)始的點(diǎn)就沒(méi)有什么關(guān)系,所以jpeg規(guī)定按圖7中所示的順序依次保存和讀取n2個(gè)dct的系數(shù)值,圖7中為64個(gè)系數(shù),這樣數(shù)列里的相鄰點(diǎn)在圖片上也是相鄰的了。這種數(shù)據(jù)的掃描、保存、讀取方式,是從8*8矩陣的左上角開(kāi)始,按照英文字母z的形狀進(jìn)行掃描的,因而稱之為zigzag掃描排序。

huffman(赫夫曼)編碼的編碼方式為,對(duì)出現(xiàn)概率大的字符分配字符長(zhǎng)度較短的二進(jìn)制編碼,對(duì)出現(xiàn)概率小的字符分配字符長(zhǎng)度較長(zhǎng)的二進(jìn)制編碼,從而使得字符的平均編碼長(zhǎng)度最短。

需要說(shuō)明的是,在附圖的流程圖雖然示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

本申請(qǐng)還提供了一種存儲(chǔ)介質(zhì)的實(shí)施例,該實(shí)施例的存儲(chǔ)介質(zhì)包括存儲(chǔ)的程序,其中,在程序運(yùn)行時(shí)控制存儲(chǔ)介質(zhì)所在設(shè)備執(zhí)行本發(fā)明實(shí)施例的圖像編碼方法。

本申請(qǐng)還提供了一種處理器的實(shí)施例,該實(shí)施例的處理器用于運(yùn)行程序,其中,程序運(yùn)行時(shí)執(zhí)行本發(fā)明實(shí)施例的圖像編碼方法。

實(shí)施例3

本申請(qǐng)還提供了一種圖像編碼裝置的實(shí)施例。

圖8是根據(jù)本發(fā)明實(shí)施例的一種可選的圖像編碼裝置的示意圖,如圖8所示,該裝置包括確定單元10和執(zhí)行單元20。

其中,確定單元用于確定用于將原始圖像編碼為聯(lián)合圖像專家小組jpeg圖像文件的中央處理器cpu和圖像處理器gpu;執(zhí)行單元用于利用確定的cpu和gpu共同執(zhí)行編碼過(guò)程。

該實(shí)施例通過(guò)確定單元,用于確定用于將原始圖像編碼為聯(lián)合圖像專家小組jpeg圖像文件的中央處理器cpu和圖像處理器gpu;執(zhí)行單元,用于利用確定的cpu和gpu共同執(zhí)行編碼過(guò)程,解決了相關(guān)技術(shù)中的jpeg圖像編碼方法系統(tǒng)利用效率較低導(dǎo)致編碼效率較低的技術(shù)問(wèn)題,進(jìn)而實(shí)現(xiàn)了能夠提高系統(tǒng)利用效率進(jìn)而提高編碼效率的技術(shù)效果。

作為一種可選的實(shí)施方式,執(zhí)行單元進(jìn)一步用于通過(guò)中央處理器cpu和圖像處理器gpu分別執(zhí)行編碼過(guò)程的不同子任務(wù),其中,編碼過(guò)程包括多個(gè)子任務(wù)。

作為一種可選的實(shí)施方式,執(zhí)行單元包括:第一執(zhí)行模塊,用于通過(guò)中央處理器cpu對(duì)原始圖像執(zhí)行圖像分塊;第一調(diào)用模塊,用于調(diào)用圖像處理器gpu的應(yīng)用程序編程接口api將圖像分塊的結(jié)果復(fù)制到圖像處理器gpu的顯存中;第二執(zhí)行模塊,用于通過(guò)圖像處理器gpu執(zhí)行壓縮,進(jìn)而對(duì)壓縮的結(jié)果執(zhí)行量化運(yùn)算;第二調(diào)用模塊,用于調(diào)用圖像處理器gpu的api將量化運(yùn)算的結(jié)果復(fù)制到主機(jī)內(nèi)存中;第三執(zhí)行模塊,用于通過(guò)中央處理器cpu對(duì)量化運(yùn)算的結(jié)果執(zhí)行熵編碼,得到j(luò)peg圖像文件。

作為一種可選的實(shí)施方式,第一執(zhí)行模塊包括:讀取模塊,用于通過(guò)中央處理器cpu從主機(jī)內(nèi)存中讀取原始圖像;分塊模塊,用于通過(guò)中央處理器cpu按照預(yù)設(shè)長(zhǎng)度和預(yù)設(shè)寬度對(duì)原始圖像進(jìn)行分塊,得到多塊圖像;提取模塊,用于通過(guò)中央處理器cpu提取每塊圖像中的預(yù)設(shè)參數(shù),得到每塊圖像的參數(shù)矩陣。

作為一種可選的實(shí)施方式,第二執(zhí)行模塊包括:變換模塊,用于通過(guò)圖像處理器gpu采用浮點(diǎn)float向量類型分別對(duì)每個(gè)參數(shù)矩陣執(zhí)行離散余弦dct變換;量化模塊,用于通過(guò)圖像處理器gpu利用預(yù)設(shè)量化表分別對(duì)經(jīng)過(guò)dct變換之后的每個(gè)參數(shù)矩陣進(jìn)行量化。

作為一種可選的實(shí)施方式,該裝置還包括:生成模塊,用于在通過(guò)圖像處理器gpu利用預(yù)設(shè)量化表分別對(duì)經(jīng)過(guò)dct變換之后的每個(gè)參數(shù)矩陣進(jìn)行量化之前,通過(guò)中央處理器cpu生成預(yù)設(shè)量化表;第三調(diào)用模塊,用于調(diào)用圖像處理器gpu的api將預(yù)設(shè)量化表復(fù)制到圖像處理器gpu的顯存中。

作為一種可選的實(shí)施方式,第三執(zhí)行模塊包括:掃描模塊,用于通過(guò)中央處理器cpu基于zigzag掃描方式分別對(duì)量化之后的每個(gè)參數(shù)矩陣進(jìn)行掃描,得到多個(gè)數(shù)組;編碼模塊,用于通過(guò)中央處理器cpu對(duì)多個(gè)數(shù)組進(jìn)行huffman編碼,得到j(luò)peg圖像文件。

上述的裝置可以包括處理器和存儲(chǔ)器,上述單元均可以作為程序單元存儲(chǔ)在存儲(chǔ)器中,由處理器執(zhí)行存儲(chǔ)在存儲(chǔ)器中的上述程序單元來(lái)實(shí)現(xiàn)相應(yīng)的功能。

存儲(chǔ)器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram),存儲(chǔ)器包括至少一個(gè)存儲(chǔ)芯片。

上述本申請(qǐng)實(shí)施例的順序不代表實(shí)施例的優(yōu)劣。

在本申請(qǐng)的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過(guò)其它的方式實(shí)現(xiàn)。

其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。

另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。

以上所述僅是本申請(qǐng)的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本申請(qǐng)?jiān)淼那疤嵯?,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本申請(qǐng)的保護(hù)范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
武鸣县| 张掖市| 姚安县| 庆城县| 夏津县| 莱西市| 凌云县| SHOW| 永城市| 高台县| 即墨市| 航空| 墨江| 西昌市| 兴隆县| 自治县| 聂拉木县| 建瓯市| 藁城市| 兴业县| 浮山县| 来安县| 台南县| 崇仁县| 隆回县| 清远市| 鄂尔多斯市| 齐齐哈尔市| 横山县| 甘孜县| 民丰县| 河南省| 榆中县| 萍乡市| 民和| 搜索| 金坛市| 马山县| 科尔| 桃园县| 雷州市|