Jpeg圖像解碼方法和解碼器的制造方法
【技術領域】
[0001] 本發明設及圖像處理領域,特別是設及一種肝EG圖像解碼方法和解碼器。
【背景技術】
[0002] 隨著多媒體技術的飛速發展,人們對視頻圖像的需求也不斷增多。伴隨著層出不 窮的移動終端設備,高質量高效率的視頻圖像編解碼方法變得越來越重要。目前應用廣泛 的肝EG Baseline編碼和解碼都是通過把像素分為Y,化,化S個顏色分量,W最小編碼單元 (MCU,Minimum Coding化it)為基本單位從左到右從上到下進行掃描,對直流分量進行差 分編碼,對交流分量進行游程編碼。由于數據相關性,采用上述傳統的肝EG解碼方式時,必 須從碼流的起點開始解碼。而在顯示端只需要顯示部分圖像的應用場景下,例如在平板電 腦上瀏覽地圖時,如果仍從碼流的起點開始解碼,則需要較長的解碼時間,從而導致解碼效 率較低。
【發明內容】
[0003] 基于此,有必要針對傳統的圖像解碼方法的解碼效率較低的問題,提供一種JPEG 圖像解碼方法和解碼器。
[0004] 為實現本發明目的提供的一種肝EG圖像解碼方法,包括如下步驟:
[0005] 對與顯示需求信號相應的整帖圖像進行賭解碼,建立相應的整帖索引表;其中,所 述整帖索引表包括:所述整帖圖像中每個索引單元對應的碼流位置、第一直流分量W及第 一復位序號;所述索引單元為所述整帖圖像中固定間隔內包含預設個數的最小編碼單元的 集合;
[0006] 根據所述顯示需求信號計算圖像解碼塊大小,并根據計算得到的所述圖像解碼塊 大小分割所述整帖圖像,確定所述整帖圖像中與所述顯示需求信號相應的實際顯示區域;
[0007] 根據所述實際顯示區域由所述整帖圖像中選擇相應的解碼圖像;并根據所述整帖 索引表建立子圖像索引表,同時對所述解碼圖像進行碼流拼接;其中,所述子圖像索引表包 括:所述解碼圖像中每一行碼流對應的碼流偏移、碼流長度、第二直流分量和第二復位序 號;
[000引根據所述子圖像索引表,對所述解碼圖像進行解碼。
[0009] 在其中一個實施例中,所述對與顯示需求信號相應的整帖圖像進行賭解碼,建立 相應的整帖索引表,包括如下步驟:
[0010] 解析所述整帖圖像的文件頭,獲取復位間隔;并設定固定間隔的當前索引單元中 的最小編碼單元個數為預設個數;
[0011] 由所述整帖圖像的首行編碼單元開始,按照從左到右的順序依次對每個最小編碼 單元進行賭解碼并計數;
[0012] 根據對所述最小編碼單元的計數,記錄每個所述索引單元中第一個最小編碼單元 左上角頂點像素點對應Y分量在所述整帖圖像的碼流中的比特位置,W及每個所述索引單 元的前一個索引單元中最后一個最小編碼單元中右下角基本塊的左上角頂點像素點對應 的Y分量的直流分量、Cb分量的直流分量和Cr分量的直流分量,W及每個所述索引單元中第 一個最小編碼單元在直流信號復位周期中的序號;
[0013] 其中,每個所述索引單元中第一個最小編碼單元左上角頂點像素點對應Y分量在 所述整帖圖像的碼流中的比特位置為所述整帖索引表中的碼流位置;
[0014] 每個所述索引單元的前一個索引單元中最后一個最小編碼單元中右下角基本塊 的左上角頂點像素點對應的Y分量的直流分量、饑分量的直流分量和Cr分量的直流分量為 所述整帖索引表中的第一直流分量;
[0015] 每個最小編碼單元中的一個8x8大小的像素塊為所述基本塊;
[0016] 每個所述索引單元中第一個最小編碼單元在直流信號復位周期中的序號為所述 整帖索引表中的第一復位序號。
[0017] 在其中一個實施例中,所述根據所述顯示需求信號計算圖像解碼塊大小,并根據 計算得到的所述圖像解碼塊大小分割所述整帖圖像,確定所述整帖圖像中與所述顯示需求 信號相應的實際顯示區域,包括如下步驟:
[0018] 根據所述顯示需求信號,獲取需要顯示區域的坐標和縮放倍數;
[0019] 根據所述需要顯示區域的坐標和縮放倍數,計算所述圖像解碼塊大小;
[0020] 根據所述圖像解碼塊大小分割所述整帖圖像,確定所述整帖圖像中與所述顯示需 求信號相應的實際顯示區域。
[0021] 在其中一個實施例中,所述根據所述實際顯示區域由所述整帖圖像中選擇相應的 解碼圖像,包括如下步驟:
[0022] 分別W所述實際顯示區域的上邊界、下邊界、左邊界和右邊界為基準,確定所述整 帖圖像中緊鄰所述上邊界的一組索引單元、緊鄰下邊界的一組索引單元、緊鄰左邊界的一 組索引單元和緊鄰右邊界的一組索引單元;
[0023] 將緊鄰左邊界的一組索引單元與緊鄰上邊界的一組索引單元的交點對應的最小 編碼單元的左上角頂點像素點的坐標位置標記為(left, top),將緊鄰右邊界的一組索引單 元與緊鄰下邊界的一組索引單元的交點對應的最小編碼單元的右下角頂點像素點的坐標 位置標記為(right ,bottom);
[0024] W所述坐標位置為(left,top)的像素點的橫坐標為左邊界,縱坐標為上邊界,W 所述坐標位置為(r i ght,bo t tom)的像素點的橫坐標為右邊界,縱坐標為下邊界圍成的區域 作為所述解碼圖像。
[0025] 在其中一個實施例中,所述根據所述整帖索引表建立子圖像索引表,包括如下步 驟:
[0026] 讀取所述整帖索引表,獲取緊鄰所述解碼圖像左邊界的索引單元對應的碼流位 置、第一直流分量W及第一復位序號,W及緊鄰所述解碼圖像右邊界的索引單元對應的碼 流位置;
[0027] 根據緊鄰所述解碼圖像左邊界的索引單元對應的碼流位置,W及緊鄰所述解碼圖 像右邊界的索引單元對應的碼流位置,計算得到所述解碼圖像每一行碼流對應的碼流偏移 和碼流長度,作為子圖像索引表中該行碼流對應的碼流偏移和碼流長度;
[0028] 將所述解碼圖像每一行中緊鄰所述解碼圖像左邊界的索引單元對應的第一直流 分量和第一復位序號分別作為子圖像索引表中該行碼流對應的第二直流分量和第二復位 序號。
[0029] 在其中一個實施例中,所述根據緊鄰所述解碼圖像左邊界的索引單元對應的碼流 位置,W及緊鄰所述解碼圖像右邊界的索引單元對應的碼流位置,計算得到所述解碼圖像 中每一行碼流對應的碼流偏移和碼流長度,包括如下步驟:
[0030] 初始化所述解碼圖像中首行碼流導入數據存儲模塊的起始地址相對于整個數據 存儲模塊的起始地址的偏移vbv_off set為0;
[0031] W緊鄰所述解碼圖像左邊界的索引單元中第一個最小編碼單元作為所述解碼圖 像每一行的首部,根據公式:〇''361:0 = 13;[1:(^'361:0/8*8,計算得到每一行首部碼流字節對 齊偏移Offseto;其中,bitoffseto為緊鄰所述解碼圖像左邊界的索引單元中第一個最小編 碼單元左上角頂點像素點對應Y分量在所述整帖圖像的碼流中的比特位置;
[0032] 根據公式:bit_added = Mtof fsetO-offsetO,計算每一行首部對齊增加的比特位 bit_added;
[0033] W緊鄰所述解碼圖像右邊界的索引單元中第一個最小編碼單元的位置作為所述 解碼圖像每一行的尾部,根據公式:<^'361:1 = (13;[1:(^'3618+7)/8*8,計算得到每一行尾部 碼流字節對齊偏移Offsetl;其中,bitoffsets為緊鄰所述解碼圖像右邊界的索引單元中第 一個最小編碼單元左上角頂點像素點對應Y分量在所述整帖圖像的碼流中的比特位置;
[0034] 根據公式:;[1]1州_13;[tlength = Offset 1-off setO,計算得到所述解碼圖像中每一行 的碼流長度1111州_13 i 11 ength;
[OO%] 根據公式:;[1]1州_(^'361 = 13;[1:_曰(1(16(1+¥13¥_(^'361:,計算得到所述解碼圖像中每一 行的碼流偏移imcu_of f S e t;
[0036] 對所述解碼圖像進行碼流拼接。
[0037] 在其中一個實施例中,所述對所述解碼圖像進行碼流拼接,包括如下步驟:
[0038] 由所述解碼圖像的首行碼流開始,并由所述數據存儲模塊的起始地址作為初始導 入位置,將所述解碼圖像每一行的碼流W字節為單位導入所述數據存儲模塊中;
[0039] 判斷當前行導入所述數據存儲模塊中的碼流最后一個字節是否為OxFF;
[0040] 若是,則在當前行導入所述數據存儲模塊中的碼流尾部增加一個OxOO字節,并更 新所述當前行的碼流長度為:imcu_bi11 ength等于imcu_bi11 ength+8;
[0041 ]根據公式:vbv_off set = vbv_offset+imcu_bit length,計算下一行碼流導入數據 存儲模塊的起始地址相對于整個數據存儲模塊的起始地址的偏移;
[0042] 根據所述解碼圖像的全部碼流導入所述數據存儲模塊狀態,控制碼流導入過程的 狀態。
[0043] 在其中一個實施例中,所述根據所述解碼圖像的全部碼流導入所述數據存儲模塊 狀態,控制碼流導入過程的狀態,包括如下步驟:
[0044] 判斷所述解碼圖像的碼流是否全部導入所述數據存儲模塊;
[0045] 若是,則停止碼流拼接修復;
[0046] 若否,則返回繼續執行將所述解碼圖像每一行對應的區域的碼流W字節為單位導 入所述數據存儲模塊中的步驟。
[0047] 在其中一個實施例中,所述根據所述子圖像索引表,對所述解碼圖像進行解碼,包 括如下步驟:
[0048] 實時判斷所述解碼圖像中的當前行是否需要解碼;
[0049] 當判斷出所述解碼圖像中的當前行需要解碼時,讀取當前行對應的子圖像索引 表,由所述子圖像索引表中獲取當前行的碼流對應的碼流偏移、碼流長度、第二直流分量和 第二復位序號;
[0050] 根據解碼圖像中當前行的碼流對應的碼流偏移、碼流長度、第二直流分量和第二 復位序號,依次對當前行中每個索引單元中的最小編碼單元進行賭解碼;
[0051] 判斷完成賭解碼的當前最小編碼單元是否為所述實際顯示區域邊界之外的最小 編碼單元;
[0052] 若是,則根據當前行是否為所述解碼圖像的最后一行,控制對所述解碼圖像的解 碼的狀態;
[0053] 若否,則對所述當前最小編碼單元進行反掃描、反量化、反變換、裁剪和縮放后得 到相應的解碼結果,并存儲所述解碼結果。
[0054] 相應的,本發明還提供了一種解碼器,包括整帖索引表建立模塊、實際顯示區域確 定模塊、子圖像索引表建立模塊、子圖像解碼模塊和數據存儲模塊;
[0055] 所述整帖索引表建立模塊,被配置為對與顯示需求信號相應的整帖圖像進行賭解 碼,建立相應的整帖索引表;其中,所述整帖索引表包括:所述整帖圖像中每個索引單元對 應的碼流位置、第一直流分量W及第一復位序號;所述索引單元為所述整帖圖像中固定間 隔內包含預設個數的最小編碼單元的集合;
[0056] 所述實際顯示區域確定模塊,被配置為根據所述顯示需求信號計算圖像解碼塊大 小,并根據計算得到的所述圖像解碼塊大小分割所述整帖圖像,確定所述整帖圖像中與所 述顯示需求信號相應的實際顯示區域;
[0057] 所述子圖像索引表確定模塊,被配置為根據所述實際顯示區域由所述整帖圖像中 選擇相應的解碼圖像;并根據所述整帖索引表建立子圖像索引表,同時對所述解碼圖像進 行碼流拼接;其中,所述子圖像索引表包括:所述解碼圖像中每一行碼流對應的碼流偏移、 碼流長度、第二直流分量和第二復位序號;
[0058] 所述子圖像解碼模塊,被配置為根據所述子圖像索引表,對所述解碼圖像進行解 碼;
[0059] 所述數據存儲模塊,被配置為存儲所述整帖索引表和所述子圖像索引表。
[0060] 在其中一個實施例中,所述整帖索引表建立模塊包括解析設定單元和解碼計數單 元;所述數據存儲模塊包括第一存儲單元;
[0061] 所述解析設定單元,被配置為解析所述整帖圖像的文件頭,獲取復位間隔;并設定 固定間隔的當前索引單元中的最小編碼單元個數為預設個數;
[0062] 所述解碼計數單元,被配置為由所述整帖圖像的首行編碼單元開始,按照從左到 右的順序依次對每個最小編碼單元進行賭解碼并計數;
[0063] 所述第一存儲單元,被配置為根據對所述最小編碼單元的計數,存儲每個所述索 引單元中第一個最小編碼單元左上角頂點