專利名稱:圖像在存儲器中的地址映射方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像存儲,尤其涉及視頻圖像數(shù)據(jù)對同步動態(tài)隨機(jī)訪問存儲器(SDRAM)的地址映射方法。
技術(shù)背景隨著人們生活水平的提高,各類多媒體消費性電子產(chǎn)品也在人們生活中 曰益普遍。音視頻編碼是多媒體消費性電子產(chǎn)品中一種非常重要的技術(shù)。 目前國際上普遍采用的MPEG系列標(biāo)準(zhǔn)與H26X系列標(biāo)準(zhǔn)等均為有關(guān)音視 頻編碼的技術(shù)標(biāo)準(zhǔn)。在這些標(biāo)準(zhǔn)中數(shù)據(jù)常常以塊狀形式在存儲器中進(jìn)行存 儲,對采用線性地址的存儲器的存取提出了一些難題,此外,由于音視頻 編碼的數(shù)據(jù)量大,對存儲器的訪問帶寬要求也相應(yīng)提高。在對存儲器進(jìn)行存取操作時,如果訪問的存儲單元與上次存取操作在同 一存儲組(Bank)中的不同行地址,我們稱之為"行不命中"或兩個訪問 命令地址不相關(guān),這種情況下,存儲器需要進(jìn)行預(yù)充電(precharge),并 激活新的行地址。即,先關(guān)閉目前已經(jīng)打開的行地址,并關(guān)閉當(dāng)時激活的 存儲組,然后再重新激活同一存儲組,并打開新的行地址,從而轉(zhuǎn)換到新 的行地址。對存儲器中同一存儲組的訪問,地址不相關(guān)的兩個相鄰的對存 儲器的訪問命令會產(chǎn)生較大的開銷,延遲時間較長;而地址相關(guān)的兩個相 鄰的存儲器訪問,訪問同一個存儲組的相同行地址,所需的開銷比較小,延遲時間也小。目前視頻編碼技術(shù)中常常將一幅圖像劃分成多個相同大小的宏塊,以宏 塊為單元進(jìn)行編碼和解碼,以便于運(yùn)動預(yù)測和運(yùn)動補(bǔ)償以及以突發(fā)(burst) 方式對存儲器進(jìn)行存取操作等。 一幅圖像上的象素具有二維地址,而存儲 器的物理地址主要是線性的,因此, 一幅圖像上的象素往往需要按照一定 的規(guī)則映射到存儲器的物理地址上?,F(xiàn)有技術(shù)中直接以宏塊為單元對存儲
器的地址映射,常常導(dǎo)致存儲器頻繁地預(yù)充電,因而對整個系統(tǒng)的帶寬要 求帶來相當(dāng)大的壓力。通常,存儲器的操作對帶寬的影響主要可以從三個方面進(jìn)行綜合考慮。 可參考圖1。首先是解碼后解碼器11對存儲器12的數(shù)據(jù)輸出。從邏輯上看,解碼輸 出主要是以宏塊為單位將圖像數(shù)據(jù)寫到存儲器的相應(yīng)地址。對于解碼輸出 的解碼宏塊,它的起始地址是確定的,每次輸出的解碼宏塊大小可能為16*16,或8*8、 4*4等。為具有良好的兼容性,解碼輸出可能有場輸出和 幀輸出兩種不同的輸出格式。 一般地,場輸出對一幅圖像進(jìn)行逐行掃描, 幀輸出對一幅圖像進(jìn)行隔行掃描。在圖象數(shù)據(jù)寫入到存儲器的地址時,需 要滿足無論在哪種輸出格式下,都盡量使輸出一幅圖象中所有的解碼宏塊 時存儲器可能產(chǎn)生的預(yù)充電的頻率達(dá)到最小。其次是顯示播放的數(shù)據(jù)輸入。在圖1上表現(xiàn)為從存儲器12輸入到顯示 設(shè)備13的圖像數(shù)據(jù)。從邏輯上看,顯示播放的數(shù)據(jù)輸入主要采用對整張一 幅圖像先水平方向從左到右、再垂直方向從上到下的行掃描方式,需要頻 繁地在一幅圖象的同一行的多個宏塊間切換讀取數(shù)據(jù)。尤其在圖像的水平 分辨率較高的情況下, 一幅圖像上同一行的象素數(shù)較多,分散在較多的宏 塊中,會引起存儲器更為頻繁的預(yù)充電。第三是運(yùn)動補(bǔ)償引起的數(shù)據(jù)輸入,從圖1上來看,則是從存儲器I2到 解碼器ll的數(shù)據(jù)。由于MPEG2、 MPEG4、 H.264等視頻壓縮算法中,一 幅圖像被劃分成多個宏塊,并在視頻壓縮編碼時同時采用運(yùn)動預(yù)測及運(yùn)動 補(bǔ)償?shù)姆绞絹硐哂喑煞?。視頻圖象解碼過程中,不完全幀的運(yùn)動補(bǔ)償 需要根據(jù)基值和運(yùn)動矢量,計算得到在相對應(yīng)的參考幀中的參考宏塊,并 由參考宏塊進(jìn)行運(yùn)動補(bǔ)償而得到完整的幀。因此運(yùn)動補(bǔ)償時需要頻繁地訪 問存儲器。尤其是雙向預(yù)測中B幀解碼的時候,需要從存儲于存儲器的前 向參考幀和后向參考幀各輸入一個參考宏塊,運(yùn)算完畢后再輸出一個宏塊 給存儲器。整個宏塊運(yùn)算過程需要2次讀存儲器,1次寫存儲器的動作。例 如,對于通常的運(yùn)動向量為整數(shù)的點,對于亮度分量Y分量, 一般需要讀
入2個16*16的宏塊,寫回l個16*16的宏塊。參考幀輸入的參考宏塊的起始地址由運(yùn)動向量決定,因而是不確定的。由于運(yùn)動補(bǔ)償計算在重構(gòu)時可能需要采用插值計算,參考圖像的參考宏塊通??赡艹霈F(xiàn)最大為17*17 的宏塊,地址不確定的機(jī)率也更大。運(yùn)動補(bǔ)償中參考幀輸入的參考宏塊起 始地址不確定,可能導(dǎo)致存儲器的頻繁的預(yù)充電,增加了訪問存儲器時的 訪問開銷。按照目前業(yè)界的圖像映射方法,設(shè)計人員常常努力把大小為16*16的宏 塊或者大小為整數(shù)個16*16的宏塊作為一個映射單元存放在存儲器的同一 存儲行,以此來提高相鄰象素的行命中率,從而減少存儲器的預(yù)充電。同 時,在現(xiàn)有技術(shù)中,通常設(shè)計人員會盡量使一個映射單元的行長和列長接 近,以減小切換行時預(yù)充電的概率。但對于高清度電視來說,由于清晰度要求提高,其分辨率也必然相應(yīng)地 增大。目前高清電視接收系統(tǒng)分辨率的大小從標(biāo)清采用的720 X 576象素或 720X 480象素提高到1920 X 1080象素。為應(yīng)對數(shù)據(jù)量大幅增加帶來的存 儲和帶寬上的壓力,高清電視接收系統(tǒng)在許多性能指標(biāo)上也提出了一些更 高的需求。例如,在高清電視接收系統(tǒng)中,存儲器的容量往往增加到16M 或32M字節(jié);存儲器的數(shù)據(jù)寬度也從標(biāo)準(zhǔn)清晰度電視的16或32位增加到 64位。這些性能上的提升為實現(xiàn)真正的高清晰度提供了一定的保證,但同 時也為對存儲器的操作帶來了更多的問題?,F(xiàn)有技術(shù)中的以大小為整數(shù)個 16*16的宏塊作為一個映射單元以及盡量使一個映射單元的行長和列長接 近等技術(shù)方案,無法達(dá)到兼顧以上所述對解碼器對存儲器的數(shù)據(jù)輸出、顯 示播放的數(shù)據(jù)輸入以及運(yùn)動補(bǔ)償引起的數(shù)據(jù)輸入三個方面的帶寬要求。本 發(fā)明試圖提出一種解決方案,能同時滿足在解碼器對存儲器的數(shù)據(jù)輸出中、 在顯示播放的數(shù)據(jù)輸入中以及在運(yùn)動補(bǔ)償引起的數(shù)據(jù)輸入中都能降低發(fā)生 行不命中的概率,并提高存儲器的存取速度。由本申請的申請人先于本申請?zhí)峤坏牡?00610024203.X號中國發(fā)明專利申請也涉及一種圖像在存儲器中的地址映射方法,該申請作為參考被引 用于此
發(fā)明內(nèi)容
為克服現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明提出了一種視頻接收系統(tǒng)中視頻 圖像數(shù)據(jù)對存儲器的地址映射方法,能夠降低對存儲器讀寫操作時發(fā)生行 不命中的概率,降低對系統(tǒng)的帶寬要求,同時提高存儲器的存取速度,并 使存儲器的多個存儲陣列最大效率的交替工作。根據(jù)本發(fā)明的一個方面,提供一種圖像對存儲器的地址映射方法,用以將 解碼后的圖像數(shù)據(jù)映射到存儲器的相應(yīng)地址,每一幅圖像數(shù)據(jù)邏輯上可劃分成 多個相同的矩形宏塊,所述存儲器具有至少兩個存儲陣列,每個存儲陣列中包 含多個存儲行,所述方法包括以下步驟(1) 將一幅圖像劃分成多個矩形的映射單元,每個映射單元具有預(yù)定 的行長與列長,其中,每個映射單元的大小與存儲器的存儲行行長相關(guān)聯(lián),使同一映射單元內(nèi)的所有象素映射到存儲器的同一存儲行;每個映射單元的行長與存儲器的數(shù)據(jù)寬度相關(guān)聯(lián),使線性掃描時存儲陣列能夠最大效率地交替工作;每個映射單元的列長與存儲器的數(shù)據(jù)寬度和所述宏塊的寬度 相關(guān)聯(lián),使對一幅圖像塊狀掃描時存儲陣列能夠最大效率地交替工作;(2) 以一個映射單元為單位,將各映射單元按照先水平方向從左到右、 再垂直方向從上到下的順序依次連續(xù)映射到存儲器, 一個映射單元中的所 有象素依次連續(xù)映射到所述存儲器的同--存儲陣列的同一存儲行;(3) 當(dāng)存儲器的同一存儲行映射滿后,切換存儲陣列映射下一個映射 單元,對至少兩個存儲陣列交替映射,直到一幅圖像映射完成。根據(jù)本發(fā)明的上述方法,其中,上述步驟(O中,每個映射單元的行 長還與存儲器中存儲陣列的數(shù)量和系統(tǒng)的水平分辨率相關(guān)聯(lián),使邏輯上一 幅圖像中水平相鄰或垂直相鄰的映射單元總是映射到存儲器中不同存儲陣 歹ij,對起始地址不確定的宏塊存取時存儲陣列能夠最大效率地交替工作。根據(jù)本發(fā)明的上述方法,其中,所述步驟(1)中,使所述映射單元的 大小與存儲器中存儲行的長度相適應(yīng),存儲器的存儲行行長是每個映射單元的大小的整數(shù)倍。 根據(jù)本發(fā)明的上述方法,其中,所述步驟(1)中,使每個映射單元的 行長大于存儲器的數(shù)據(jù)寬度與存儲陣列一次激活所需的時間的乘積。根據(jù)本發(fā)明的上述方法,其中,所述步驟(1)中,使每個映射單元的 列長的一半與宏塊寬度的乘積大于存儲器的數(shù)據(jù)寬度與存儲陣列一次激活 所需的時間的乘積。根據(jù)本發(fā)明的上述方法,其中,所述步驟(1)中,使系統(tǒng)的水平分辨 率是映射單元行長的整數(shù)倍,并且所述水平分辨率除以每個映射單元的行 長的結(jié)果不能被存儲陣列的數(shù)量所整除。根據(jù)本發(fā)明的上述方法,其中, 一個映射單元的行長與列長均為2的整 數(shù)次方個象素。根據(jù)本發(fā)明的上述方法,其中,當(dāng)所述圖像數(shù)據(jù)為YUV格式的圖像數(shù)據(jù) 時,所述步驟(2)進(jìn)一步包括單獨將Y分量信號進(jìn)行映射,而將UV分量信 號排列在一起以拼接形式進(jìn)行映射的步驟。根據(jù)本發(fā)明的上述方法,其中,系統(tǒng)水平分辨率為1920象素,設(shè)置所述 存儲器的容量為32M字節(jié),存儲器的數(shù)據(jù)寬度為64位,存儲器的存儲行 行長為1024字節(jié),每個映射單元的行長為128,列長為8。根據(jù)本發(fā)明的上述方法,其中,在所述步驟(1)中,使每個映射單元的 行長設(shè)置得盡量長。本發(fā)明中每個映射單元的行長與存儲器的數(shù)據(jù)寬度相關(guān)聯(lián),使得顯示輸 入時存儲陣列能夠最大效率地交替工作。列長與映射單元的行長和存儲器 的存儲行行長相關(guān)聯(lián),使得解碼輸出時存儲陣列能夠最大效率地交替工作。 同一映射單元內(nèi)的所有象素映射到存儲器的同一存儲行,降低了存儲器預(yù)充電的頻率。每個映射單元的行長還與存儲器中存儲陣列的數(shù)量和系統(tǒng)的 水平分辨率相關(guān)聯(lián),使邏輯上一幅圖像中水平相鄰或垂直相鄰的映射單元總是映射到存儲器中不同存儲陣列,使運(yùn)動補(bǔ)償解碼中讀取參考宏塊時, 存儲陣列能夠最大效率地交替工作。在滿足前述要求的情況下,每個映射 單元的行長盡量長,減少了運(yùn)動補(bǔ)償解碼在時引起存儲器預(yù)充電的概率。 本發(fā)明克服了現(xiàn)有技術(shù)中以大小為整數(shù)個16*16的宏塊作為一個映射單元
以及盡量使一個映射單元的行長和列長接近等技術(shù)偏見,從對解碼器對存 儲器的數(shù)據(jù)輸出、顯示播放的數(shù)據(jù)輸入以及運(yùn)動補(bǔ)償引起的數(shù)據(jù)輸入三個 方面綜合考慮了存儲器的操作對帶寬的影響,降低了存儲器預(yù)充電的頻率, 因而降低了對系統(tǒng)帶寬的要求。同時本發(fā)明使存儲陣列能夠最大效率地交 替工作,提升了存儲器的整體效率,提高了存儲器的存取速度,并因而進(jìn) 一步降低了對系統(tǒng)帶寬的要求。
以下附圖為對本發(fā)明示例性實施例的輔助說明,結(jié)合以下附圖對本發(fā)明 實施例的闡述,是為進(jìn)一步揭示本發(fā)明的特征所在,但并不限制本發(fā)明, 圖中相同符號代表實施例中相應(yīng)元件或步驟,其中圖1為視頻數(shù)據(jù)接收系統(tǒng)的結(jié)構(gòu)示意圖。圖2為本發(fā)明的圖像數(shù)據(jù)對存儲器的地址映射方法流程圖。圖3A和圖3B分別表示在解碼場輸出情況下,Y宏塊和UV宏塊對存儲 器地址映射的象素排列順序。圖4表示顯示輸入時對一幅圖像的線性掃描示意圖。 圖5A和5B分別表示解碼幀輸出和場輸出時對一幅圖像的塊狀掃描示意圖。圖6為圖像對存儲器地址映射時, 一幅圖像上的映射單元在存儲器的不 同存儲陣列的分布情況示意圖,并表示了運(yùn)動補(bǔ)償解碼時參考宏塊在劃分 了映射單元的一幅圖像中可能出現(xiàn)的一種位置。圖7顯示了運(yùn)動補(bǔ)償解碼時在一幅圖像中對參考宏塊進(jìn)行地址映射的掃描示意圖。圖8為圖像對存儲器地址映射時存儲陣列交替映射的順序示意圖。
具體實施方式
在MPEG標(biāo)準(zhǔn)中,通常把每一幅圖像劃分為多個矩形宏塊,以宏塊形式 進(jìn)行圖像數(shù)據(jù)的傳送和存儲。每個宏塊包含一定的行數(shù),每行包含一定數(shù)
量的象素點。本發(fā)明并把一幅圖像劃分成多個矩形的映射單元,每個映射 單元具有預(yù)定的行長與列長。參考圖2,本發(fā)明提出一種圖像數(shù)據(jù)對存儲器的地址映射方法,其中每 一幅圖像數(shù)據(jù)可以從邏輯上劃分成多個相同的矩形宏塊,該存儲器其具有至少兩個存儲陣列(bank),每個存儲陣列(bank)中包含多個存儲行(row)。 數(shù)據(jù)在存儲器中的存放方式為一維地址。該地址映射方法包括以下步驟步驟S21,將每一幅圖像劃分成多個相同的矩形的映射單元,每個映射 單元具有預(yù)定的行長與列長。其中,每個映射單元的大小與存儲器的存儲行行長相關(guān)聯(lián),使同一映射 單元內(nèi)的所有象素映射到存儲器的同一存儲行。例如,映射單元的大小與 存儲器中存儲行的長度相適應(yīng)?;蛘撸鎯ζ鞯拇鎯π行虚L是每個映射單 元的大小的整數(shù)倍,使同一映射單元內(nèi)的所有象素映射到存儲器的同一存 儲行;每個映射單元的行長與存儲器的數(shù)據(jù)寬度相關(guān)聯(lián),使水平線性掃描時存 儲陣列能夠最大效率地交替工作。例如,每個映射單元的行長大于存儲器 的數(shù)據(jù)寬度與存儲陣列一次激活所需的時間的乘積;每個映射單元的列長與存儲器的數(shù)據(jù)寬度和宏塊的寬度相關(guān)聯(lián),使對一 幅圖像塊狀掃描時存儲陣列能夠最大效率地交替工作。例如,每個映射單 元的列長的一半與宏塊寬度的乘積大于存儲器的數(shù)據(jù)寬度與存儲陣列一次 激活所需的時間的乘積;同時,每個映射單元的行長還與存儲器中存儲陣列的數(shù)量和系統(tǒng)的水平 分辨率相關(guān)聯(lián),使邏輯上一幅圖像中水平相鄰或垂直相鄰的映射單元總是 映射到存儲器中不同存儲陣列,使對起始地址不確定的宏塊存取時存儲陣 列能夠最大效率地交替工作。例如水平分辨率是映射單元行長的整數(shù)倍, 并且水平分辨率除以每個映射單元的行長的結(jié)果不能被存儲陣列的數(shù)量所 整除。步驟S22,以一個映射單元為單位,將各映射單元按照先水平方向從左 到右、再垂直方向從上到下的順序依次連續(xù)映射到存儲器, 一個映射單元
中的所有象素依次連續(xù)映射到存儲器的同一存儲陣列(bank)的同一存儲 行(row)。步驟S23,存儲器的同一存儲行映射滿后,切換存儲陣列映射下一個映 射單元,對至少兩個存儲陣列交替映射,直到一幅圖像映射完成。這里的存儲器可以是含DRAM核的存儲模塊,例如同步動態(tài)隨機(jī)存儲 器(SDRAM)、雙倍速率存儲器(DDR)等。每個映射單元中的各象素按照先水平方向從左到右、再垂直方向從上到 下的順序依次連續(xù)映射到存儲器的地址。本發(fā)明采用兩個以上的存儲陣列(bank)交替工作,對其中一個存儲陣 列進(jìn)行存取操作的同時,可對其它存儲陣列進(jìn)行激活,從而提高存儲器的 工作效率,并加快工作速度。 一般而言,存儲器進(jìn)行一次激活的時間大約 為6個時鐘周期。如果存儲陣列在交替工作中,每個存儲陣列的一次存取 操作工作時間大于一次激活的時間,則存儲陣列進(jìn)行激活的操作完全可以在其它存儲陣列的存取操作的過程中完成。當(dāng)存儲陣列進(jìn)行激活的操作完 全可以在對其它存儲陣列的存取操作的過程中完成時,從一個方面來說, 存儲器中的存儲陣列能夠最大效率地交替工作。數(shù)字視頻壓縮經(jīng)常采用分量視頻的形式,在YUV格式中,Y為亮度分 量,U、 V分別為色度分量。在本發(fā)明的一些實施例中,以YUV格式對 圖像數(shù)據(jù)進(jìn)行編解碼。YUV格式的圖像數(shù)據(jù)中,對于一幅圖像的每種分量 可以各以--個方框圖來表示, 一幅圖像的每種分量均可以劃分成多個相同 的矩形宏塊。本實施例中以采樣結(jié)構(gòu)為4: 2: 0格式的解碼方式來進(jìn)行說 明。在4: 2: 0格式下,無論為行方向或列方向,亮度分量的采樣頻率為 色度分量采樣頻率的2倍。因此, 一個Y宏塊的大小通常為16*16象素, 寬度和高度均為16,共256象素;而一個U宏塊或一個V宏塊的大小通常 為8*8象素,共64象素。在本實施例中,采樣結(jié)構(gòu)為4: 2: 0格式,可將 Y宏塊單獨映射,而U、 V宏塊排列在一起,以拼接(Packet)形式進(jìn)行映 射。 一幅圖象中,Y宏塊為16*16象素,U、 ¥宏塊分別為8*8象素,拼接 后的UV宏塊大小為8*16象素。每象素為l字節(jié)。對于YUV格式的圖像
數(shù)據(jù),可以在存儲器中把Y分量和UV分量的數(shù)據(jù)分開存儲。在需要對--幅圖象的數(shù)據(jù)進(jìn)行存取時,可以分別從存儲器中各自的地址區(qū)域中存取相 應(yīng)的Y宏塊與UV宏塊。圖3A和圖3B分別表示在解碼場輸出情況下,Y 宏塊和UV宏塊對存儲器地址映射的象素排列順序。其中字母下標(biāo)的逗號 左邊的數(shù)字表示該象素在一幅圖像的每個宏塊內(nèi)部所處的行數(shù),右邊的數(shù) 字表示列數(shù)。在此以一種高清電視接收系統(tǒng)為例來進(jìn)一步解釋本發(fā)明??梢岳斫?,本 發(fā)明并不限于高清電視接收系統(tǒng),而同樣適用于其它視頻接收設(shè)備或視頻 中轉(zhuǎn)設(shè)備。一般地,高清電視接收系統(tǒng)的分辨率的大小為1920 X 1080象素, 存儲器的容量為32M字節(jié),存儲器的數(shù)據(jù)寬度為64位,存儲器的存儲行 (row)行長為1024字節(jié)。在本實施例中,首先提供存儲器,其包含兩個存儲陣列,分別為第一存 儲陣列和第二存儲陣列。然后在邏輯上把每幅圖像劃分為多個相同的矩形映射單元,每個映射單元具有預(yù)定的行長與列長。每個映射單元的行長與 列長在綜合考慮以下所述的因素后確定。在較好的實施方式中, 一個映射單元的行長與列長均為2的整數(shù)次方個 象素。這樣有利于地址線的充分利用,從一個方面減少芯片面積。1.每個映射單元的大小與存儲器的存儲行行長相關(guān)聯(lián),使同一映射單 元內(nèi)的所有象素映射到存儲器的同一存儲行。例如,映射單元的大小與存 儲器中存儲行的長度相適應(yīng),存儲器的存儲行行長是每個映射單元的大小 的整數(shù)倍,使同一映射單元內(nèi)的所有象素映射到存儲器的同一存儲行。在視頻數(shù)據(jù)的邏輯上的一幅圖像對存儲器的物理地址進(jìn)行映射時,同一 映射單元中的所有象素依次連續(xù)映射到存儲器的同一存儲陣列的同一存儲行,并且使水平相鄰或左右相鄰的映射單元映射到不同的存儲陣列。當(dāng)存 儲器的存儲行行長是映射單元大小的整數(shù)倍時,能夠使同一映射單元中的 所有象素映射到同一存儲行。在對同一映射單元進(jìn)行掃描時,不會發(fā)生存 儲器的預(yù)充電。換句話說,映射單元的行長和存儲器的存儲行行長相關(guān)聯(lián)。 在本實施例中,每個映射單元的大小與存儲器的一個存儲行容量(即存儲
行行長)相等。高清電視接收系統(tǒng)中通常使用的存儲器的存儲行行長為1024 字節(jié),則映射單元的大小為1024字節(jié)。映射單元的大小為映射單元的行長 與映射單元的列長的乘積,例如可以假設(shè)映射單元的行長為128象素,列 長則為8象素。2.每個映射單元的行長與存儲器的數(shù)據(jù)寬度相關(guān)聯(lián),使水平線性掃描 時存儲陣列能夠最大效率地交替工作。例如,每個映射單元的行長大于存 儲器的數(shù)據(jù)寬度與存儲陣列一次激活所需的時間的乘積。在顯示圖像時,需要將存儲器中存放的圖像數(shù)據(jù)進(jìn)行顯示輸入而恢復(fù)圖 像。顯示輸入時采用線性掃描方式。如圖4所示,邏輯上對于一幅圖像來 說,總體上的數(shù)據(jù)輸入是采用先水平方向從左到右、再垂直方向從上而下 的線性掃描方式。每次對一幅圖像上的一行掃描時就將跨越多個宏塊,例 如水平分辨率為1920象素,Y分量的宏塊大小為16*16象素,那么每掃描 一行將跨越120個宏塊。按照高清電視接收系統(tǒng)的性能指標(biāo),存儲器的數(shù) 據(jù)寬度為64位,即解碼器對存儲器的存取速度為每個時鐘周期完成8字節(jié)。 一次激活的時間大約為6個時鐘周期,為使存儲陣列最大效率地交替工作, 需使每次對任一存儲陣列的操作時間大于6個時鐘周期,即大于48字節(jié)。 例如可以設(shè)定每個映射單元的大小為128*8象素,行長為128象素,大于 48字節(jié),能滿足存儲陣列最大效率地交替工作。在水平方向上,每個映射單元的行長YR為宏塊寬度的整數(shù)倍,能保證 邏輯上一幅圖像中水平位于同一宏塊的所有象素能夠映射到存儲器的同一 存儲行,降低對每個宏塊讀寫時的預(yù)充電頻率。3.每個映射單元的列長與存儲器的數(shù)據(jù)寬度和宏塊的寬度相關(guān)聯(lián),使 對一幅圖像塊狀掃描時存儲陣列能夠最大效率地交替工作。例如,每個映 射單元的列長的一半與宏塊寬度的乘積大于存儲器的數(shù)據(jù)寬度與存儲陣列 一次激活所需的時間的乘積。解碼輸出時為塊狀掃描方式,即邏輯上對一幅圖像掃描時以宏塊為單 位,先掃描完一個完整的宏塊,再進(jìn)行下一個宏塊的掃描。解碼幀輸出和 場輸出,在一幅圖像的整體上,都以宏塊為單元按先水平方向從左到右、 再垂直方向從上到下的順序。圖5A為解碼幀輸出方式,如圖中箭頭所示, 在每個宏塊內(nèi)部,為逐行先水平方向從左到右、再垂直方向從上到下的順 序。圖5B為解碼場輸出方式,如圖中箭頭所示,在每個宏塊內(nèi)部,為先對 奇行按先水平方向從左到右、再垂直方向從上到下的順序掃描,圖中以實 線表示,再對偶行按先水平方向從左到右、再垂直方向從上到下的順序掃描,圖中以虛線表示。存儲器的數(shù)據(jù)寬度是64位(8字節(jié)),存儲陣列激 活的時間大約為6個時鐘周期,即48字節(jié)。對于16*16象素大小的Y宏塊, 宏塊寬度為16象素。因為一個映射單元總是位于同一存儲器的同一存儲行, 在逐行掃描方式下,宏塊寬度與映射單元列長的乘積為在存儲器同一存儲 行進(jìn)行存取的數(shù)據(jù)量;在隔行掃描方式下,宏塊寬度與映射單元列長--半 的乘積為在存儲器同一存儲行進(jìn)行存取的數(shù)據(jù)量。為使對逐行掃描或隔行 掃描都滿足同一存儲行進(jìn)行存取操作的時間大于一次激活的時間,至少映 射單元的列長的一半應(yīng)大于48/16,即列長應(yīng)大于6字節(jié)。例如,映射單元 的大小為128*8,逐行掃描時,例如輸出第一行第一個宏塊,對一個映射單 元的操作的數(shù)據(jù)為16*8象素,即對第一存儲陣列操作數(shù)據(jù)量為128字節(jié), 隔行掃描時,對第一存儲陣列操作需要完成16*4象素,即64字節(jié)。也就 是說,無論哪種掃描方式,在對第一存儲陣列操作期間,都能夠完成對第 二存儲陣列的激活(48字節(jié)),可以使存儲陣列最大效率地交替工作。4.每個映射單元的行長還與存儲器中存儲陣列的數(shù)量和系統(tǒng)的水平分 辨率相關(guān)聯(lián),使邏輯上一幅圖像中水平相鄰或垂直相鄰的映射單元總是映射到存儲器中不同存儲陣列,使對起始地址不確定的宏塊存取時存儲陣列 能夠最大效率地交替工作。例如水平分辨率是映射單元行長的整數(shù)倍,并 且水平分辨率除以每個映射單元的行長的結(jié)果不能被存儲陣列的數(shù)量所整 除。這樣可以使邏輯上一幅圖像中水平相鄰或垂直相鄰的映射單元總是映 射到存儲器中不同存儲陣列,減少對起始地址不確定的宏塊存取時存儲器 預(yù)充電的頻率。例如高清系統(tǒng)中,水平分辨率常常是1920象素,可以設(shè)定每個映射單 元的大小為128*8象素,即行長為128象素,列長為8象素。線性掃描水
平方向上一行跨越15個映射單元,不能被2整除,即不能被存儲陣列的數(shù) 量所整除。如果一幅圖像上第一行的第一個映射單元映射在第一存儲陣列, 則第一行的第二個映射單元映射在第二存儲陣列,以此類推,水平相鄰的 映射單元總是映射在不同的存儲陣列。第一行的最后一個映射單元也映射 在第一存儲陣列,而一幅圖像上第二行的第一個映射單元,即與第一行的 第一個映射單元垂直相鄰的映射單元,映射在第二存儲陣列。以此類推, 從一幅圖像上來看,水平相鄰或垂直相鄰的映射單元都位于不同的存儲陣列中。如圖6所示,以左斜線表示位于第一存儲陣列的象素,以右斜線表示位于第二存儲陣列的象素。 解碼時的運(yùn)動補(bǔ)償中,對參考宏塊的讀取采用的是起始地址不確定的塊狀掃描方式。如圖7所示,背景部分是劃分成多個相同宏塊的一幅圖像, 而劃斜線的方塊表示起始地址不確定的參考宏塊。 一幅圖像中水平相鄰或 垂直相鄰的映射單元總是映射到存儲器中不同存儲陣列,所以,參考宏塊 無論是跨越兩個水平相鄰或是兩個垂直相鄰的映射單元,都不需預(yù)充電。 而當(dāng)參考宏塊同時跨越4個包含水平相鄰和垂直相鄰的映射單元,如圖6 中的以RM表示的參考宏塊,也僅需要l次預(yù)充電。此外,每個映射單元的行長盡量長,例如從滿足上述對映射單元行長和 列長的設(shè)定條件的多組數(shù)據(jù)中選取行長最長的一組數(shù)據(jù)。從整個一幅圖像 的角度來看,運(yùn)動補(bǔ)償輸入時出現(xiàn)補(bǔ)償宏塊位于不同映射單元交界處的機(jī) 率降低,相應(yīng)地,也可以減少運(yùn)動補(bǔ)償解碼在讀取參考宏塊時引起存儲器 預(yù)充電的概率,使存儲陣列能夠最大效率地交替工作。圖8示意性地表示了圖像對存儲器地址映射時存儲陣列交替映射的順 序。圖像對存儲器進(jìn)行地址映射時, 一個映射單元中的所有象素依次連續(xù) 映射到存儲器的同一存儲陣列(bank)的同一存儲行(row),對于一幅圖 像而言,以一個映射單元為單位,按照先水平方向從左到右、再垂直方向 從上到下的順序依次連續(xù)映射到存儲器,同一存儲行映射滿后,切換存儲 陣列映射下一個映射單元。以這樣的方式進(jìn)行映射,直到一幅圖像映射完 成。
根據(jù)本發(fā)明的一個實施例,例如,高清電視接收系統(tǒng)的分辨率的大小為1920X 1080象素,存儲器的容量為32M字節(jié),存儲器的數(shù)據(jù)寬度為64位,存儲器 的存儲行(row)行長為1024字節(jié)。將每一幅圖像劃分成多個相同的矩形的映 射單元,每個映射單元具有預(yù)定的行長與列長。其中,每個映射單元的大小例 如為1024象素,行長例如為128,列長例如為8。 一幅圖像對存儲器進(jìn)行映射 時,以一個映射單元為單位,將各映射單元按照先水平方向從左到右、再垂直 方向從上到下的順序依次連續(xù)映射到存儲器, 一個映射單元中的所有象素依次 連續(xù)映射到存儲器的同一存儲陣列(bank)的同一存儲行(row)。存儲器的同 一存儲行映射滿后,切換存儲陣列映射下一個映射單元,至少兩個存儲陣列交 替映射,直到一幅圖像映射完成。
權(quán)利要求
1. 一種圖像對存儲器的地址映射方法,用以將解碼后的圖像數(shù)據(jù)映射到存儲器的相應(yīng)地址,每一幅圖像數(shù)據(jù)邏輯上可劃分成多個相同的矩形宏塊,所述存儲器具有至少兩個存儲陣列,每個存儲陣列中包含多個存儲行,所述方法包括以下步驟(1)將一幅圖像劃分成多個矩形的映射單元,每個映射單元具有預(yù)定的行長與列長,其中,每個映射單元的大小與存儲器的存儲行行長相關(guān)聯(lián),使同一映射單元內(nèi)的所有象素映射到存儲器的同一存儲行;每個映射單元的行長與存儲器的數(shù)據(jù)寬度相關(guān)聯(lián),使線性掃描時存儲陣列能夠最大效率地交替工作;每個映射單元的列長與存儲器的數(shù)據(jù)寬度和所述宏塊的寬度相關(guān)聯(lián),使對一幅圖像塊狀掃描時存儲陣列能夠最大效率地交替工作;(2)以一個映射單元為單位,將各映射單元按照先水平方向從左到右、再垂直方向從上到下的順序依次連續(xù)映射到存儲器,一個映射單元中的所有象素依次連續(xù)映射到所述存儲器的同一存儲陣列的同一存儲行;(3)當(dāng)存儲器的同一存儲行映射滿后,切換存儲陣列映射下一個映射單元,對至少兩個存儲陣列交替映射,直到一幅圖像映射完成。
2. 如權(quán)利要求l所述的方法,其特征在于,所述步驟(1)中,每個映 射單元的行長還與存儲器中存儲陣列的數(shù)量和系統(tǒng)的水平分辨率相關(guān)聯(lián), 使邏輯上一幅圖像中水平相鄰或垂直相鄰的映射單元總是映射到存儲器中 不同存儲陣列,對起始地址不確定的宏塊存取時存儲陣列能夠最大效率地交替工作。
3. 如權(quán)利要求1或2所述的方法,其特征在于,所述步驟(1)中,使 所述映射單元的大小與存儲器中存儲行的長度相適應(yīng),存儲器的存儲行行 長是每個映射單元的大小的整數(shù)倍。
4. 如權(quán)利要求1或2所述的方法,其特征在于,所述步驟(1)中,使 每個映射單元的行長大于存儲器的數(shù)據(jù)寬度與存儲陣列一次激活所需的時 間的乘積。
5. 如權(quán)利要求1或2所述的方法,其特征在于,所述步驟(1)中,使每個映射單元的列長的一半與宏塊寬度的乘積大于存儲器的數(shù)據(jù)寬度與存 儲陣列 一 次激活所需的時間的乘積。
6. 如權(quán)利要求2所述的方法,其特征在于,所述步驟(1)中,使系統(tǒng) 的水平分辨率是映射單元行長的整數(shù)倍,并且所述水平分辨率除以每個映 射單元的行長的結(jié)果不能被存儲陣列的數(shù)量所整除。
7. 如權(quán)利要求1或2所述的方法,其特征在于, 一個映射單元的行長 與列長均為2的整數(shù)次方個象素。
8. 如權(quán)利要求1或2所述的方法,其特征在于,當(dāng)所述圖像數(shù)據(jù)為YUV 格式的圖像數(shù)據(jù)時,所述步驟(2)進(jìn)一步包括單獨將Y分量信號進(jìn)行映射, 而將UV分量信號排列在一起以拼接形式進(jìn)行映射的步驟。
9. 如權(quán)利要求1或2所述的方法,其特征在于,系統(tǒng)水平分辨率為1920 象素,設(shè)置所述存儲器的容量為32M字節(jié),存儲器的數(shù)據(jù)寬度為64位,存 儲器的存儲行行長為1024字節(jié),每個映射單元的行長為128,列長為8。
10. 如權(quán)利要求1或2所述的方法,其特征在于,在所述步驟(l)中, 使每個映射單元的行長設(shè)置得盡量長。
全文摘要
一種圖像對存儲器的地址映射方法,用以將解碼后的圖像數(shù)據(jù)映射到存儲器的相應(yīng)地址,每一幅圖像數(shù)據(jù)邏輯上可劃分成多個相同的矩形宏塊,所述存儲器具有至少兩個存儲陣列,每個存儲陣列中包含多個存儲行,所述方法包括以下步驟(1)將一幅圖像劃分成多個矩形的映射單元,每個映射單元具有預(yù)定的行長與列長;(2)以一個映射單元為單位,將各映射單元按照先水平方向從左到右、再垂直方向從上到下的順序依次連續(xù)映射到存儲器,一個映射單元中的所有象素依次連續(xù)映射到所述存儲器的同一存儲陣列的同一存儲行;(3)當(dāng)存儲器的同一存儲行映射滿后,切換存儲陣列映射下一個映射單元,對至少兩個存儲陣列交替映射,直到一幅圖像映射完成。
文檔編號H04N7/26GK101212674SQ20061014873
公開日2008年7月2日 申請日期2006年12月30日 優(yōu)先權(quán)日2006年12月30日
發(fā)明者周振亞, 張亞林 申請人:上海奇碼數(shù)字信息有限公司