專利名稱:一種獲得像素值的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)及圖像領(lǐng)域,特別是涉及獲得像素值的方法及裝置。
背景技術(shù):
為了減少圖像所占的存儲(chǔ)空間,以及提高碼流的傳輸效率等,圖像的編解碼技術(shù) 得到了廣泛的應(yīng)用?,F(xiàn)有的圖像解碼技術(shù)中,將已解碼的幀作為參考幀,通過(guò)運(yùn)動(dòng)補(bǔ)償?shù)确椒?,根?jù)參 考幀得到當(dāng)前幀的像素點(diǎn)的值。參見圖1所示,每個(gè)方塊表示一個(gè)像素點(diǎn),大寫字母A... U 的值表示參考幀中的相應(yīng)像素點(diǎn)的值,小寫字母aa、bb、cc、dd、ee、ff gg、hh、b、h、i、m、s 的值需要根據(jù)其周圍的像素點(diǎn)的值計(jì)算得到。例如,當(dāng)前幀中某個(gè)像素點(diǎn)的運(yùn)動(dòng)矢量指向 (2,2. 5),即指向像素點(diǎn) b,則 b = round((E-5F+20G+20H-5I+J)/32) ,round 表示取整函數(shù)。 如果計(jì)算像素點(diǎn) h 的值,則 h = round ((A-5C+20G+20M-5R+T)/32)。在解碼過(guò)程中,需要在內(nèi)存中存儲(chǔ)參考幀,在計(jì)算像素點(diǎn)的值時(shí)可能需要從內(nèi)存 中讀取一些數(shù)據(jù)到高速緩存中。例如計(jì)算像素點(diǎn)b的值時(shí),從內(nèi)存中讀取像素點(diǎn)E/F/G/H/ I/J的值到高速緩存。CPU根據(jù)高速緩存中像素點(diǎn)E/F/G/H/I/J的值便可計(jì)算出像素點(diǎn)b 的值。計(jì)算像素點(diǎn)h的值時(shí),由于是以行的形式讀取內(nèi)存,并且高速緩存的存儲(chǔ)空間遠(yuǎn)小于 內(nèi)存,所以可能存在這種情況,一次讀取內(nèi)存中一行像素點(diǎn)的值,第一次將第一行像素點(diǎn)的 值讀到高速緩存,獲得像素點(diǎn)A的值,第二次將第二行像素點(diǎn)的值讀到高速緩存,獲得像素 點(diǎn)C的值,以此類推,需要讀取6次內(nèi)存才能獲得計(jì)算像素點(diǎn)h的值所需要的像素點(diǎn)E/F/G/ H/I/J的值,大大影響解碼效率。在對(duì)一幀圖像解碼中,有差不多一半的操作需要訪問(wèn)豎直 方向的像素點(diǎn),所以高速緩存不命中的情況十分嚴(yán)重。不僅是幀間解碼過(guò)程存在這樣的問(wèn)題,而且宏塊濾波等需要讀取豎直方向像素點(diǎn) 的值的處理過(guò)程均存在這樣的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種獲得像素值的方法及裝置,用于提高獲得像素值的速度?!N獲得像素值的方法,包括以下步驟在內(nèi)存中存儲(chǔ)第一圖像幀和第二圖像幀,其中第二圖像幀中的一行像素點(diǎn)的值與 第一圖像幀中一列像素點(diǎn)的值一一對(duì)應(yīng);當(dāng)需要從第一圖像幀中獲得一行像素點(diǎn)的值時(shí),在存儲(chǔ)的第一圖像幀中讀取該一 行像素點(diǎn)的值;當(dāng)需要從第一圖像幀中獲得一列像素點(diǎn)的值時(shí),在存儲(chǔ)的第二圖像幀中讀取該一 列像素點(diǎn)在第二圖像幀中對(duì)應(yīng)的一行像素點(diǎn)的值。一種用于獲得像素值的裝置,包括內(nèi)存模塊,用于存儲(chǔ)第一圖像幀和第二圖像幀,其中第二圖像幀中的一行像素點(diǎn) 的值與第一圖像幀中一列像素點(diǎn)的值一一對(duì)應(yīng);
讀取模塊,用于當(dāng)需要從第一圖像幀中獲得一行像素點(diǎn)的值時(shí),在存儲(chǔ)的第一圖 像幀中讀取該一行像素點(diǎn)的值;當(dāng)需要從第一圖像幀中獲得一列像素點(diǎn)的值時(shí),在存儲(chǔ)的 第二圖像幀中讀取該一列像素點(diǎn)在第二圖像幀中對(duì)應(yīng)的一行像素點(diǎn)的值。本發(fā)明實(shí)施例在內(nèi)存中保存兩幀圖像,第二圖像幀中的一行像素點(diǎn)的值與第一圖 像幀中一列像素點(diǎn)的值一一對(duì)應(yīng)。當(dāng)需要讀取橫向像素點(diǎn)的值時(shí)從第一圖像幀中獲得,當(dāng) 需要讀取縱向像素點(diǎn)的值時(shí)從第二圖像幀中獲得。這樣基本可以一次從內(nèi)存中獲得所需的 數(shù)據(jù),減少了訪問(wèn)內(nèi)存的次數(shù),也提高了高速緩存的命中率,即提高了獲得像素值的速度, 從而提高了圖像處理的速度。
圖1為現(xiàn)有技術(shù)中圖像幀的示意圖;圖2為本發(fā)明實(shí)施例中獲得像素值的主要方法流程圖;圖3為本發(fā)明實(shí)施例中第一圖像幀的示意圖;圖4為本發(fā)明實(shí)施例中第二圖像幀的示意圖;圖5為本發(fā)明實(shí)施例中圖像處理的詳細(xì)方法流程圖;圖6為本發(fā)明實(shí)施例中裝置的結(jié)構(gòu)圖。
具體實(shí)施例方式本發(fā)明實(shí)施例在內(nèi)存中存儲(chǔ)兩幀圖像,第一圖像幀就是正常的圖像幀,即第一圖 像幀的像素點(diǎn)與客觀的圖像的像素點(diǎn)一致。第二圖像幀是經(jīng)過(guò)對(duì)第一圖像幀處理后得到 的,第二圖像幀中的一行像素點(diǎn)的值與第一圖像幀中一列像素點(diǎn)的值一一對(duì)應(yīng)。這樣,所需 要的像素點(diǎn)的值都以行的形式存儲(chǔ)在內(nèi)存中,方便數(shù)據(jù)的讀取,從而提高了圖像處理的速度。參見圖2,本實(shí)施例中獲得像素值的主要方法流程如下步驟201 在內(nèi)存中存儲(chǔ)第一圖像幀和第二圖像幀,其中第二圖像幀中的一行像 素點(diǎn)的值與第一圖像幀中一列像素點(diǎn)的值一一對(duì)應(yīng)。步驟202 當(dāng)需要從第一圖像幀中獲得一行像素點(diǎn)的值時(shí),在存儲(chǔ)的第一圖像幀 中讀取該一行像素點(diǎn)的值。步驟203 當(dāng)需要從第一圖像幀中獲得一列像素點(diǎn)的值時(shí),在存儲(chǔ)的第二圖像幀 中讀取該一列像素點(diǎn)在第二圖像幀中對(duì)應(yīng)的一行像素點(diǎn)的值。還可以進(jìn)一步對(duì)讀取的像素點(diǎn)的值進(jìn)行處理。第一圖像幀可以是通過(guò)解碼后得到的參考幀,第二圖像幀是對(duì)第一圖像幀處理后 得到的。在解碼的運(yùn)動(dòng)補(bǔ)償處理過(guò)程中,根據(jù)當(dāng)前幀中的運(yùn)動(dòng)矢量確定當(dāng)前幀中的像素點(diǎn) 的值在第一圖像幀中對(duì)應(yīng)的位置。當(dāng)該位置是在上下兩個(gè)像素點(diǎn)之間時(shí),確定該位置所在 列在第二圖像幀對(duì)應(yīng)的行,并從第二圖像幀中讀取該行像素點(diǎn)的值,再根據(jù)讀取的該行像 素點(diǎn)的值計(jì)算出所述位置的值,即當(dāng)前幀中的像素點(diǎn)的值,以實(shí)現(xiàn)對(duì)當(dāng)前幀的解碼?;蛘?,第一圖像幀不是完整的圖像幀,其包括已解碼出的幾行和幾列像素點(diǎn),或者 包括圖像中的一個(gè)或多個(gè)塊。即,第一圖像幀只包括參考像素點(diǎn)。第二圖像幀是對(duì)第一圖像 幀處理后得到的。在解碼的幀內(nèi)預(yù)測(cè)過(guò)程中,需要獲得某個(gè)像素點(diǎn)的值時(shí),可能需要預(yù)先獲得該像素點(diǎn)的縱向相鄰像素點(diǎn)的值或橫向相鄰像素點(diǎn)的值。當(dāng)需要獲得橫向相鄰像素點(diǎn)的 值時(shí),從第一圖像幀中讀取該橫向相鄰像素點(diǎn)的值;當(dāng)需要獲得縱向相鄰像素點(diǎn)的值時(shí),確 定該縱向相鄰像素點(diǎn)在第二圖像幀中對(duì)應(yīng)的行,并從該行中讀取該縱向相鄰像素點(diǎn)的值。 根據(jù)讀取出的相鄰像素點(diǎn)的值預(yù)測(cè)出當(dāng)前像素點(diǎn)的值,實(shí)現(xiàn)對(duì)該當(dāng)前像素點(diǎn)的解碼。然后 將當(dāng)前像素點(diǎn)作為參考像素點(diǎn)存儲(chǔ)到第一圖像幀和第二圖像幀中,以便對(duì)后續(xù)像素點(diǎn)進(jìn)行 解碼?;蛘?,第一圖像幀為解碼后得到的一幀圖像,第二圖像幀是對(duì)第一圖像幀處理后 得到的。由于幀內(nèi)預(yù)測(cè)是基于塊的預(yù)測(cè),所以容易引起塊效應(yīng),即塊與塊之間有較明顯的邊 緣,為了消除塊效應(yīng),需要進(jìn)行宏塊濾波,即縮小邊緣兩邊的像素點(diǎn)的像素差。進(jìn)行宏塊濾 波也需要獲得相鄰像素點(diǎn)的值。如果邊緣是由左右兩個(gè)塊產(chǎn)生的縱向邊緣,則需要獲得該 縱向邊緣兩邊的像素點(diǎn)的值,即獲得橫向相鄰像素點(diǎn)的值,此時(shí)需要確定該橫向相鄰像素 點(diǎn)在第一圖像幀中對(duì)應(yīng)的行,并從第一圖像幀的該行中讀取該橫向相鄰像素點(diǎn)的值。如果 邊緣是由上下兩個(gè)塊產(chǎn)生的橫向邊緣,則需要獲得該橫向邊緣兩邊的像素點(diǎn)的值,即獲得 縱向相鄰像素點(diǎn)的值,此時(shí)需要確定該縱向相鄰像素點(diǎn)在第二圖像幀中對(duì)應(yīng)的行,并從第 二圖像幀的該行中讀取該縱向相鄰像素點(diǎn)的值。通過(guò)以上介紹可知,在圖像處理過(guò)程中需要獲得縱向像素點(diǎn)的值的方案,均可采 用本實(shí)施例。本實(shí)施例中,第二圖像幀中的一行像素點(diǎn)的值與第一圖像幀中一列像素點(diǎn)的值 一一對(duì)應(yīng)。第二圖像幀中行與行之間的順序與第一圖像幀中列與列之間的順序可以不同。 第二圖像幀的一行像素點(diǎn)中像素點(diǎn)的順序與第一圖像幀的一列像素點(diǎn)中像素點(diǎn)的順序也 可以不同。只要獲得第二圖像幀中每行像素點(diǎn)與第一圖像幀中每列像素點(diǎn)的對(duì)應(yīng)關(guān)系即 可。較佳的,第二圖像幀中的第η行對(duì)應(yīng)第一圖像幀中的第η列,且第二圖像幀的一行像素 點(diǎn)中從左到右的像素點(diǎn)一一對(duì)應(yīng)第一圖像幀的一列像素點(diǎn)中從上到下的像素點(diǎn)。參見圖3 和圖4所示,圖3所示的表相當(dāng)于第一圖像幀,每個(gè)單元格表示一個(gè)像素點(diǎn),每個(gè)像素點(diǎn)用 其坐標(biāo)來(lái)標(biāo)識(shí)。圖4所示的表相當(dāng)于第二圖像幀。通過(guò)圖4中像素點(diǎn)的標(biāo)識(shí)與圖3中像素 點(diǎn)的標(biāo)識(shí)的對(duì)應(yīng)關(guān)系可以看出,第一圖像幀的第一列轉(zhuǎn)換成了第二圖像幀中的第一行,第 一圖像幀的第二列轉(zhuǎn)換成了第二圖像幀中的第二行......本實(shí)施例中第二圖像幀是對(duì)第一圖像幀處理后得到的,處理方式有多種,如第一 種方式通過(guò)對(duì)第一圖像幀進(jìn)行翻轉(zhuǎn)和旋轉(zhuǎn)得到第二圖像幀。例如,對(duì)第一圖像幀向上翻轉(zhuǎn) 后再順時(shí)針旋轉(zhuǎn)90度;或者對(duì)第一圖像幀向右翻轉(zhuǎn)后再逆時(shí)針旋轉(zhuǎn)90度等。如第二種方 式將第一圖像幀中像素點(diǎn)作為矩陣的元素,將第一圖像幀中像素點(diǎn)的值作為矩陣的元素 值,對(duì)該矩陣進(jìn)行轉(zhuǎn)置,得到第二圖像幀。第一圖像幀中第η行像素點(diǎn)對(duì)應(yīng)矩陣中第η行元 素,較佳的,矩陣中元素的行列位置關(guān)系與第一圖像幀中像素點(diǎn)的行列位置關(guān)系完全一致。參見圖5,本實(shí)施例中圖像處理的詳細(xì)方法流程如下步驟501 在內(nèi)存中存儲(chǔ)第一圖像幀。步驟502 對(duì)第一圖像幀進(jìn)行處理得到第二圖像幀。步驟503 在內(nèi)存中存儲(chǔ)第二圖像幀。步驟504 確定需要獲得的像素點(diǎn)。步驟505 判斷確定的像素點(diǎn)在第一圖像幀中的位置是縱向的還是橫向的,若是橫向的,則繼續(xù)步驟506,若時(shí)縱向的,則繼續(xù)步驟507。步驟506 從第一圖像幀中獲得確定的像素點(diǎn)的值。步驟507 從第二圖像幀中獲得確定的像素點(diǎn)的值。步驟508 對(duì)讀取的像素點(diǎn)的值進(jìn)行處理。依據(jù)解碼操作對(duì)讀取的像素點(diǎn)的值進(jìn) 行處理;或者,依據(jù)濾波操作對(duì)讀取的像素點(diǎn)的值進(jìn)行處理等。以上是對(duì)圖像處理過(guò)程的介紹,該過(guò)程可由圖像處理裝置實(shí)現(xiàn),下面對(duì)圖像處理 裝置的內(nèi)部結(jié)構(gòu)和功能進(jìn)行介紹。參見圖6,本實(shí)施例中用于獲得像素值的裝置包括內(nèi)存模塊601、讀取模塊602和 處理模塊603。內(nèi)存模塊601用于存儲(chǔ)第一圖像幀和第二圖像幀,其中第二圖像幀中的一行像素 點(diǎn)的值與第一圖像幀中一列像素點(diǎn)的值一一對(duì)應(yīng)。讀取模塊602用于當(dāng)需要從第一圖像幀中獲得一行像素點(diǎn)的值時(shí),在存儲(chǔ)的第一 圖像幀中讀取該一行像素點(diǎn)的值;當(dāng)需要從第一圖像幀中獲得一列像素點(diǎn)的值時(shí),在存儲(chǔ) 的第二圖像幀中讀取該一列像素點(diǎn)在第二圖像幀中對(duì)應(yīng)的一行像素點(diǎn)的值。裝置還包括處理模塊603用于對(duì)讀取的像素點(diǎn)的值進(jìn)行處理。處理模塊603具 體用于依據(jù)解碼操作對(duì)讀取的像素點(diǎn)的值進(jìn)行處理;或者,依據(jù)濾波操作對(duì)讀取的像素點(diǎn) 的值進(jìn)行處理。裝置還包括生成模塊604用于通過(guò)對(duì)第一圖像幀進(jìn)行翻轉(zhuǎn)和旋轉(zhuǎn)得到第二圖像 幀;或者,將第一圖像幀中像素點(diǎn)的值作為矩陣的元素值,并對(duì)該矩陣進(jìn)行轉(zhuǎn)置,得到第二 圖像幀。用于實(shí)現(xiàn)本發(fā)明實(shí)施例的軟件可以存儲(chǔ)于軟盤、硬盤、光盤和閃存等存儲(chǔ)介質(zhì)。本發(fā)明實(shí)施例在內(nèi)存中保存兩幀圖像,第二圖像幀中的一行像素點(diǎn)的值與第一圖 像幀中一列像素點(diǎn)的值一一對(duì)應(yīng)。當(dāng)需要讀取橫向像素點(diǎn)的值時(shí)從第一圖像幀中獲得,當(dāng) 需要讀取縱向像素點(diǎn)的值時(shí)從第二圖像幀中獲得。這樣基本可以一次從內(nèi)存中獲得所需的 數(shù)據(jù),減少了訪問(wèn)內(nèi)存的次數(shù),也提高了高速緩存的命中率,從而提高了圖像處理的速度。 本發(fā)明實(shí)施例提供的技術(shù)方案適用于圖像解碼、濾波等多種場(chǎng)景。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若對(duì)本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范 圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種獲得像素值的方法,其特征在于,包括以下步驟在內(nèi)存中存儲(chǔ)第一圖像幀和第二圖像幀,其中第二圖像幀中的一行像素點(diǎn)的值與第一 圖像幀中一列像素點(diǎn)的值一一對(duì)應(yīng);當(dāng)需要從第一圖像幀中獲得一行像素點(diǎn)的值時(shí),在存儲(chǔ)的第一圖像幀中讀取該一行像 素點(diǎn)的值;當(dāng)需要從第一圖像幀中獲得一列像素點(diǎn)的值時(shí),在存儲(chǔ)的第二圖像幀中讀取該一列像 素點(diǎn)在第二圖像幀中對(duì)應(yīng)的一行像素點(diǎn)的值。
2.如權(quán)利要求1所述的方法,其特征在于,在內(nèi)存中存儲(chǔ)第二圖像幀之前,通過(guò)對(duì)第一 圖像幀進(jìn)行翻轉(zhuǎn)和旋轉(zhuǎn)得到第二圖像幀。
3.如權(quán)利要求1所述的方法,其特征在于,在內(nèi)存中存儲(chǔ)第二圖像幀之前,將第一圖像 幀中像素點(diǎn)的值作為矩陣的元素值,并對(duì)該矩陣進(jìn)行轉(zhuǎn)置,得到第二圖像幀。
4.如權(quán)利要求1所述的方法,其特征在于,第二圖像幀中的一行像素點(diǎn)的值與第一圖 像幀中一列像素點(diǎn)的值一一對(duì)應(yīng)包括第二圖像幀中的第η行對(duì)應(yīng)第一圖像幀中的第η列, 且第二圖像幀的一行像素點(diǎn)中從左到右的像素點(diǎn)一一對(duì)應(yīng)第一圖像幀的一列像素點(diǎn)中從 上到下的像素點(diǎn)。
5.如權(quán)利要求1所述的方法,其特征在于,對(duì)讀取的像素點(diǎn)的值進(jìn)行處理的步驟包括 依據(jù)解碼操作對(duì)讀取的像素點(diǎn)的值進(jìn)行處理;或者,依據(jù)濾波操作對(duì)讀取的像素點(diǎn)的值進(jìn) 行處理。
6.一種用于獲得像素值的裝置,其特征在于,包括內(nèi)存模塊,用于存儲(chǔ)第一圖像幀和第二圖像幀,其中第二圖像幀中的一行像素點(diǎn)的值 與第一圖像幀中一列像素點(diǎn)的值一一對(duì)應(yīng);讀取模塊,用于當(dāng)需要從第一圖像幀中獲得一行像素點(diǎn)的值時(shí),在存儲(chǔ)的第一圖像幀 中讀取該一行像素點(diǎn)的值;當(dāng)需要從第一圖像幀中獲得一列像素點(diǎn)的值時(shí),在存儲(chǔ)的第二 圖像幀中讀取該一列像素點(diǎn)在第二圖像幀中對(duì)應(yīng)的一行像素點(diǎn)的值。
7.如權(quán)利要求6所述的裝置,其特征在于,還包括生成模塊,用于通過(guò)對(duì)第一圖像幀進(jìn)行翻轉(zhuǎn)和旋轉(zhuǎn)得到第二圖像幀;或者,將第一圖像 幀中像素點(diǎn)的值作為矩陣的元素值,并對(duì)該矩陣進(jìn)行轉(zhuǎn)置,得到第二圖像幀。
8.如權(quán)利要求6所述的裝置,其特征在于,第二圖像幀中的一行像素點(diǎn)的值與第一圖 像幀中一列像素點(diǎn)的值一一對(duì)應(yīng)包括第二圖像幀中的第η行對(duì)應(yīng)第一圖像幀中的第η列, 且第二圖像幀的一行像素點(diǎn)中從左到右的像素點(diǎn)一一對(duì)應(yīng)第一圖像幀的一列像素點(diǎn)中從 上到下的像素點(diǎn)。
9.如權(quán)利要求6所述的裝置,其特征在于,還包括處理模塊,用于對(duì)讀取的像素點(diǎn)的 值進(jìn)行處理。
10.如權(quán)利要求9所述的裝置,其特征在于,處理模塊依據(jù)解碼操作對(duì)讀取的像素點(diǎn)的 值進(jìn)行處理;或者,依據(jù)濾波操作對(duì)讀取的像素點(diǎn)的值進(jìn)行處理。
全文摘要
本發(fā)明公開了一種獲得像素值的方法,用于實(shí)現(xiàn)圖像的解碼并提高解碼速度。所述方法包括在內(nèi)存中存儲(chǔ)第一圖像幀和第二圖像幀,其中第二圖像幀中的一行像素點(diǎn)的值與第一圖像幀中一列像素點(diǎn)的值一一對(duì)應(yīng);當(dāng)需要從第一圖像幀中獲得一行像素點(diǎn)的值時(shí),在存儲(chǔ)的第一圖像幀中讀取該一行像素點(diǎn)的值;當(dāng)需要從第一圖像幀中獲得一列像素點(diǎn)的值時(shí),在存儲(chǔ)的第二圖像幀中讀取該一列像素點(diǎn)在第二圖像幀中對(duì)應(yīng)的一行像素點(diǎn)的值。本發(fā)明還公開了用于實(shí)現(xiàn)所述方法的裝置。
文檔編號(hào)H04N5/917GK102098477SQ20091024266
公開日2011年6月15日 申請(qǐng)日期2009年12月14日 優(yōu)先權(quán)日2009年12月14日
發(fā)明者張學(xué)成 申請(qǐng)人:無(wú)錫中星微電子有限公司