一種二值圖像編碼、解碼方法及裝置與流程
2023-10-10 15:32:44 2

本發明涉及圖像編解碼技術領域,特別涉及一種二值圖像編碼、解碼方法及裝置。
背景技術:
近年來隨著計算機技術的快速發展,計算機視覺得到了越來越廣泛應用,而常用的計算機視覺應用通常會涉及字符識別技術,為提高字符識別的準確率,通常需要利用大量二值圖像樣本對用於字符識別的分類器進行訓練。
進一步的,作為樣本的二值圖像通常是以BMP等常用圖像格式存儲的,隨著樣本圖像數量增多,二值圖像樣本的數量可能會達到數以萬計,數以萬計的二值圖像樣本佔用的存儲空間非常大,不便於用戶使用。
技術實現要素:
本發明實施例公開了一種二值圖像編碼、解碼方法及裝置,以減小二值圖像佔用的存儲空間。
為達到上述目的,本發明實施例公開了一種二值圖像編碼方法,所述方法包括:
獲得待編碼二值圖像;
根據預設的編碼長度L,從預設的編碼表資料庫中獲得所述編碼長度L對應的編碼表TL,其中,所述編碼表TL用於記錄編碼元素的索引與編碼元素的取值之間的對應關係,所述編碼表TL中包含2L個取值不同的編碼元素,每一編碼元素的取值為[0,2L-1]內的一個整數;
按照預設的像素點分組順序,對所述待編碼二值圖像所包含的像素點進行分組,其中,分組後每一像素點分組中所包含像素點的數量相同,且不大於所述編碼長度L;
根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組 在所述編碼表TL中對應的編碼元素的索引;
根據計算得到的編碼元素的索引,從所述編碼表TL中獲得各個像素點分組在所述編碼表TL中對應的編碼元素的取值;
根據所獲得的編碼元素的取值,生成所述待編碼二值圖像對應的編碼數據。
在本發明的一種具體實現方式中,所述根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組在所述編碼表TL中對應的編碼元素的索引,包括:
對於分組後任一像素點分組G,按照以下表達式,計算所述像素點分組G在所述編碼表TL中對應的編碼元素的索引indexG,
其中,t表示按照預設的像素點排列順序所述像素點分組G中像素點的順序號,it表示所述像素點分組G中順序號為t的像素點的像素值。
在本發明的一種具體實現方式中,所述根據所獲得的編碼元素的取值,生成所述待編碼二值圖像對應的編碼數據,包括:
獲得所述待編碼圖像的圖像信息;
根據所獲得的圖像信息和所獲得的編碼元素的取值,按照預設的信息排列規則,生成所述待編碼二值圖像對應的編碼數據。
在本發明的一種具體實現方式中,在所述根據所述圖像信息和所獲得的編碼元素的取值,按照預設的信息排列規則,生成所述待編碼二值圖像對應的編碼數據之後,還包括:
將所生成的編碼數據存儲至預設的圖像存儲文件尾,其中,所述預設的圖像存儲文件用於存儲至少一個二值圖像對應的編碼數據。
在本發明的一種具體實現方式中,所述根據所獲得的圖像信息和所獲得的編碼元素的取值,按照預設的信息排列規則,生成所述待編碼二值圖像對應的編碼數據,包括:
按照以下信息排列規則,生成所述待編碼二值圖像對應的編碼數據,
Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,
其中,Id1表示預設的二值圖像對應的編碼數據的起始標識,Id2表示預設的二值圖像的圖像信息之間的分隔標識,Iij表示二值圖像的一個圖像信息,E表示由所獲得的編碼元素的取值組成的數據串。
在本發明的一種具體實現方式中,所述二值圖像編碼方法還包括:
接收針對所述預設的圖像存儲文件的數據修改指令,其中,所述數據修改指令中至少包括:待修改二值圖像的標識、待修改圖像信息的標識以及待修改圖像信息的修改值;
根據所述數據修改指令中包括的所述待修改二值圖像的標識,在所述預設的圖像存儲文件中查找所述待修改二值圖像對應的編碼數據;
根據所述數據修改指令中包括的所述待修改圖像信息的標識以及所述待修改圖像信息的修改值,修改查找到的編碼數據。
為達到上述目的,本發明實施例公開了一種二值圖像解碼方法,所述方法包括:
獲得待解碼二值圖像的編碼數據;
根據預設的編碼長度L,對所述編碼數據進行解析,進而獲得所述待解碼二值圖像的各個像素點分組對應的編碼元素的取值,其中,像素點分組為:按照預設的像素點分組順序,對所述待解碼二值圖像所包含的像素點進行分組得到的,各個像素點分組中所包含像素點的數量相同,且不大於所述預設的編碼長度L;
根據所述預設的編碼長度L,從預設的解碼錶資料庫中獲得所述編碼長度L對應的解碼錶TL』,其中,所述解碼錶TL』用於記錄編碼元素的取值與編碼元素的索引之間的對應關係,所述編碼表TL』中包含2L個取值不同的編碼元素,每一編碼元素的取值為[0,2L-1]內的一個整數;
根據所獲得的編碼元素的取值,從所述解碼錶TL』中獲得各個像素點分組在所述解碼錶TL』中對應的編碼元素的索引;
根據所獲得的編碼元素的索引,獲得各個像素點分組所包含像素點的像素 值;
根據所獲得的像素值,生成所述待解碼二值圖像。
在本發明的一種具體實現方式中,所述根據所獲得的編碼元素的索引,獲得各個像素點分組所包含像素點的像素值,包括:
對於所獲得的任一編碼元素的索引indexD,按照以下步驟獲得所述索引ndexD對應的像素點分組GD所包含像素點的像素值:
確定所述索引indexD的二進位數值;
根據bt的取值以及所述編碼長度L,獲得所述像素點分組GD中按照預設的像素點排列順序順序號為t的像素點的像素值it,其中,bt表示所述二進位數值中從低位到高位標識為t的比特位的取值,所述索引
在本發明的一種具體實現方式中,所述獲得待解碼二值圖像的編碼數據,包括:
根據待解碼二值圖像的標識,從預設的圖像存儲文件中獲得所述待解碼二值圖像的編碼數據,其中,所述預設的圖像存儲文件用於存儲至少一個二值圖像對應的編碼數據。
在本發明的一種具體實現方式中,所述待解碼二值圖像的編碼數據為:按照以下信息排列規則排列的編碼數據,
Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,
其中,Id1表示預設的二值圖像對應的編碼數據的起始標識,Id2表示預設的二值圖像的圖像信息之間的分隔標識,Iij表示二值圖像的一個圖像信息,E表示由所獲得的編碼元素的取值組成的數據串。
為達到上述目的,本發明實施例公開了一種二值圖像編碼裝置,所述裝置包括:
圖像獲得模塊,用於獲得待編碼二值圖像;
編碼表獲得模塊,用於根據預設的編碼長度L,從預設的編碼表資料庫中獲得所述編碼長度L對應的編碼表TL,其中,所述編碼表TL用於記錄編碼元素的索引與編碼元素的取值之間的對應關係,所述編碼表TL中包含2L個取值不同的編碼 元素,每一編碼元素的取值為[0,2L-1]內的一個整數;
像素點分組模塊,用於按照預設的像素點分組順序,對所述待編碼二值圖像所包含的像素點進行分組,其中,分組後每一像素點分組中所包含像素點的數量相同,且不大於所述編碼長度L;
索引計算模塊,用於根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組在所述編碼表TL中對應的編碼元素的索引;
第一取值獲得模塊,用於根據計算得到的編碼元素的索引,從所述編碼表TL中獲得各個像素點分組在所述編碼表TL中對應的編碼元素的取值;
編碼數據生成模塊,用於根據所獲得的編碼元素的取值,生成所述待編碼二值圖像對應的編碼數據。
在本發明的一種具體實現方式中,所述索引計算模塊,具體用於對於分組後任一像素點分組G,按照以下表達式,計算所述像素點分組G在所述編碼表TL中對應的編碼元素的索引indexG,
其中,t表示按照預設的像素點排列順序所述像素點分組G中像素點的順序號,it表示所述像素點分組G中順序號為t的像素點的像素值。
在本發明的一種具體實現方式中,所述編碼數據生成模塊,包括:
圖像信息獲得子模塊,用於獲得所述待編碼圖像的圖像信息;
編碼數據獲得子模塊,用於根據所獲得的圖像信息和所獲得的編碼元素的取值,按照預設的信息排列規則,生成所述待編碼二值圖像對應的編碼數據。
在本發明的一種具體實現方式中,所述二值圖像編碼裝置還包括:
編碼數據存儲模塊,用於在所述編碼數據生成模塊生成編碼數據之後,將所生成的編碼數據存儲至預設的圖像存儲文件尾,其中,所述預設的圖像存儲文件用於存儲至少一個二值圖像對應的編碼數據。
在本發明的一種具體實現方式中,所述編碼數據獲得子模塊,具體用於按照以下信息排列規則,生成所述待編碼二值圖像對應的編碼數據,
Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,
其中,Id1表示預設的二值圖像對應的編碼數據的起始標識,Id2表示預設的二值圖像的圖像信息之間的分隔標識,Iij表示二值圖像的一個圖像信息,E表示由所獲得的編碼元素的取值組成的數據串。
在本發明的一種具體實現方式中,所述二值圖像編碼裝置還包括:
數據修改指令接收模塊,用於接收針對所述預設的圖像存儲文件的數據修改指令,其中,所述數據修改指令中至少包括:待修改二值圖像的標識、待修改圖像信息的標識以及待修改圖像信息的修改值;
編碼數據查找模塊,用於根據所述數據修改指令中包括的所述待修改二值圖像的標識,在所述預設的圖像存儲文件中查找所述待修改二值圖像對應的編碼數據;
編碼數據修改模塊,用於根據所述數據修改指令中包括的所述待修改圖像信息的標識以及所述待修改圖像信息的修改值,修改查找到的編碼數據。
為達到上述目的,本發明實施例公開了一種二值圖像解碼裝置,所述裝置包括:
編碼數據獲得模塊,用於獲得待解碼二值圖像的編碼數據;
第二取值獲得模塊,用於根據預設的編碼長度L,對所述編碼數據進行解析,進而獲得所述待解碼二值圖像的各個像素點分組對應的編碼元素的取值,其中,像素點分組為:按照預設的像素點分組順序,對所述待解碼二值圖像所包含的像素點進行分組得到的,各個像素點分組中所包含像素點的數量相同,且不大於所述預設的編碼長度L;
解碼錶獲得模塊,用於根據所述預設的編碼長度L,從預設的解碼錶資料庫中獲得所述編碼長度L對應的解碼錶TL』,其中,所述解碼錶TL』用於記錄編碼元素的取值與編碼元素的索引之間的對應關係,所述編碼表TL』中包含2L個取值不同的編碼元素,每一編碼元素的取值為[0,2L-1]內的一個整數;
索引獲得模塊,用於根據所獲得的編碼元素的取值,從所述解碼錶TL』中獲得各個像素點分組在所述解碼錶TL』中對應的編碼元素的索引;
像素值獲得模塊,用於根據所獲得的編碼元素的索引,獲得各個像素點分組所包含像素點的像素值;
圖像生成模塊,用於根據所獲得的像素值,生成所述待解碼二值圖像。
在本發明的一種具體實現方式中,所述像素值獲得模塊,具體用於獲得所獲得的任一編碼元素的索引indexD對應的像素點分組GD所包含像素點的像素值;
其中,所述像素值獲得模塊,包括:
數值確定子模塊,用於確定所述索引indexD的二進位數值;
像素值獲得子模塊,用於根據bt的取值以及所述編碼長度L,獲得所述像素點分組GD中按照預設的像素點排列順序順序號為t的像素點的像素值it,其中,bt表示所述二進位數值中從低位到高位標識為t的比特位的取值,所述索引
在本發明的一種具體實現方式中,所述編碼數據獲得模塊,具體用於根據待解碼二值圖像的標識,從預設的圖像存儲文件中獲得所述待解碼二值圖像的編碼數據,其中,所述預設的圖像存儲文件用於存儲至少一個二值圖像對應的編碼數據。
在本發明的一種具體實現方式中,所述待解碼二值圖像的編碼數據為:按照以下信息排列規則排列的編碼數據,
Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,
其中,Id1表示預設的二值圖像對應的編碼數據的起始標識,Id2表示預設的二值圖像的圖像信息之間的分隔標識,Iij表示二值圖像的一個圖像信息,E表示由所獲得的編碼元素的取值組成的數據串。
由以上可見,本發明實施例提供的方案中,獲得待編碼二值圖像後,根據預設的編碼長度L,從預設的編碼表資料庫中獲得編碼長度L對應的編碼表TL,按照預設的像素點分組順序,對待編碼二值圖像所包含的像素點進行分組,根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組在編碼表TL中對應的編碼元素的索引,根據計算得到的編碼元素的索引,從編碼表TL中獲得各個像素點分組在編碼表TL中對應的編碼元素的取值,根據所獲得的編碼元素的取值,生成待編碼二值圖像對應的編碼數據。由以上可以看出,一個 像素點分組中包含的多個像素點對應一個編碼元素,因此,按照本發明實施例提供的方案對待編碼二值圖像編碼後,得到的編碼數據佔用的存儲空間要遠遠小於待編碼二值圖像佔用的存儲空間。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例提供的一種二值圖像編碼方法的流程示意圖;
圖2為本發明實施例提供的另一種二值圖像編碼方法的流程示意圖;
圖3為本發明實施例提供的一種二值圖像解碼方法的流程示意圖;
圖4為本發明實施例提供的一種二值圖像編碼裝置的結構示意圖;
圖5為本發明實施例提供的另一種二值圖像編碼裝置的結構示意圖;
圖6為本發明實施例提供的一種二值圖像解碼裝置的結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
圖1為本發明實施例提供的一種二值圖像編碼方法的流程示意圖,該方法包括:
S101:獲得待編碼二值圖像。
二值圖像可以理解為只包含黑色像素點和白色像素點的圖像。像素點的像素值與開發人員設定的用於表示像素點像素值的變量的變量位數有關。
例如,若用於表示像素點像素值的變量的變量位數為1bit,則通常黑色像素點的像素值為「0」,以二進位表示為「0」,而白色像素點的像素值為「1」,以 二進位表示為「1」;
若用於表示像素點像素值的變量的變量位數為8bit,則通常黑色像素點的像素值為「0」,以二進位表示為「00000000」,而白色像素點的像素值為「255」,以二進位表示為「11111111」;
當然用於表示像素點像素值的變量的變量位數還可以是其他值,情況與上述情況類似,這裡不再一一列舉。
S102:根據預設的編碼長度L,從預設的編碼表資料庫中獲得編碼長度L對應的編碼表TL。
其中,編碼表TL用於記錄編碼元素的索引與編碼元素的取值之間的對應關係,該編碼表中包含2L個取值不同的編碼元素,每一編碼元素的取值為[0,2L-1]內的一個整數。
預設的編碼長度可以理解為用於表示編碼表中編碼元素的變量的位數。具體的對待編碼二值圖像進行編碼時,可以根據待編碼二值圖像的情況以及對壓縮比的要求等因素調整預設的編碼長度。預設的編碼長度L的取值越大,應用本發明實施例提供的方案進行圖像編碼時,得到的編碼數據的壓縮比越高。
結合具體實際應用情況,開發過程中使用8bit整型變量較多,所以在本發明的一種較佳實現方式中L≤8,進一步的,考慮到後續步驟中需對待編碼二值圖像的像素點進行像素點分組處理,根據以下表達式來確定預設的編碼長度的取值:
W/L=整數。
基於上述描述,在生成預設的編碼長度L對應的編碼表TL時,可以考慮基於ASCII字符生成該編碼表。
S103:按照預設的像素點分組順序,對待編碼二值圖像所包含的像素點進行分組。
其中,預設的像素點分組順序可以是按照像素列從左到右的順序、按照像素列從右到左的順序、按照像素行從上到下的順序、按照像素行從下到上的順序等等,本申請並不對此進行限定。
具體的,分組後每一像素點分組中所包含像素點的數量相同,且不大於上述編碼長度L,較佳的,分組後每一像素點分組中所包含像素點的數量等於上述編碼長度L,這樣可以在編碼長度固定的情況下,能夠得到最大的壓縮比。
可以理解的,對待編碼二值圖像所包含的像素點進行分組時,可能會遇到最後一個像素點分組中包含的像素點的數量與其他像素點分組中包含的像素點的數量不同的情況,這時可以不對最後一個像素點分組進行任何處理,直接繼續後續步驟,當然也可以根據預設的像素點對最後一個像素點分組進行像素點補齊處理,例如,預設的像素點可以是待編碼二值圖像的最後一個像素點等等,然後再對編碼後的數據進行解碼時丟棄補齊處理中補充的像素點,本申請並不對此進行限定。
S104:根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組在編碼表TL中對應的編碼元素的索引。
在本發明的一種可選實現方式中,對於分組後任一像素點分組G,可以按照以下表達式,計算像素點分組G在編碼表TL中對應的編碼元素的索引indexG,
其中,t表示按照預設的像素點排列順序像素點分組G中像素點的順序號,it表示像素點分組G中順序號為t的像素點的像素值。
it<<t表示將it的二進位數值右移t位。
假設,it是以1比特表示的,則it的取值可能為0或者1,L等於3,則
需要說明的是,上述it表示像素點分組G中順序號為t的像素點的像素值,可以是直接從待編碼二值圖像讀取到的像素點的像素值,也可以理解為是根據直接從待編碼二值圖像讀取到的像素點的像素值變換得到的像素值,例如,直接從待編碼二值圖像讀取到的像素點的像素值為255,其二進位表示為「11111111」, 則此時it可以取值為1,類似的,直接從待編碼二值圖像讀取到的像素點的像素值為0,其二進位表示為「00000000」,則此時it可以取值為0。
另外,上述預設的像素點排列順序可以是與前述預設的像素點分組順序相關的排列順序,例如,預設的像素點分組順序為按照像素列從左到右的順序以及按照像素行從上到下的順序分組,則預設的像素點排列順序可以對於同一像素行內的像素點按照從左到右的順序排列,對於不同像素行之間的像素點,按照從上到下的順序排列等等。
S105:根據計算得到的編碼元素的索引,從編碼表TL中獲得各個像素點分組在編碼表TL中對應的編碼元素的取值。
S106:根據所獲得的編碼元素的取值,生成待編碼二值圖像對應的編碼數據。
需要說明的是,本步驟中所生成的編碼數據可以理解為以特定文件格式存儲的編碼數據,也可以理解為未以特定文件格式存儲數據串。
在本發明的一種具體實現方式中,生成編碼數據時除了需考慮所獲得編碼元素的取值外,還可以考慮待編碼二值圖像的標識、寬度、高度、類型、圖像是否為有效圖像等等圖像信息,在編碼數據中加入這些待編碼二值圖像的圖像信息後,能夠有助於後期使用待編碼二值圖像,本申請並不限定圖像信息的具體表現形式。
具體的,根據所獲得的編碼元素的取值,生成待編碼二值圖像對應的編碼數據時,可以獲得待編碼圖像的圖像信息,並根據所獲得的圖像信息和所獲得的編碼元素的取值,按照預設的信息排列規則,生成待編碼二值圖像對應的編碼數據。
按照上述方式生成編碼數據後,若不想在後期使用中使用該編碼數據,則可以將圖像信息中表示圖像是否為有效圖像的標識位設置為「無效」狀態,而無需將該編碼數據刪除,待可以使用該編碼數據時,再將圖像信息中表示圖像是否為有效圖像的標識位設置為「有效」狀態,這樣方便了用戶對編碼數據的管理。
可選的,根據所獲得的圖像信息和所獲得的編碼元素的取值,按照預設的 信息排列規則,生成待編碼二值圖像對應的編碼數據時,可以按照以下信息排列規則,生成待編碼二值圖像對應的編碼數據,
Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,
其中,Id1表示預設的二值圖像對應的編碼數據的起始標識,Id2表示預設的二值圖像的圖像信息之間的分隔標識,Iij表示二值圖像的一個圖像信息,E表示由所獲得的編碼元素的取值組成的數據串。
可選的,Id1可以是字符「$」,Id2可以是字符「@」,當然可以是其他值,本申請並不對此進行限定。
根據所獲得的編碼元素的取值組成數據串時,可以簡單的按照順序將所獲得的編碼元素排列在一起。
例如,按照上述方式生成的編碼數據可以如下所示:
$@ID@W@H@L@type@valid@inf:C0C1…Clen-1
其中,C0C1…Clen-1即為上述的E。
應用本發明實施例提供的方案對二值圖像進行編碼後,其編碼數據只有通過與本發明實施例提供的編碼方法相對應的解碼方法解碼後才能正常向用戶展示,因此,經編碼後的二值圖像具有更高的安全性。
由以上可見,本實施例提供的方案中,獲得待編碼二值圖像後,根據預設的編碼長度L,從預設的編碼表資料庫中獲得編碼長度L對應的編碼表TL,按照預設的像素點分組順序,對待編碼二值圖像所包含的像素點進行分組,根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組在編碼表TL中對應的編碼元素的索引,根據計算得到的編碼元素的索引,從編碼表TL中獲得各個像素點分組在編碼表TL中對應的編碼元素的取值,根據所獲得的編碼元素的取值,生成待編碼二值圖像對應的編碼數據。由以上可以看出,一個像素點分組中包含的多個像素點對應一個編碼元素,因此,按照本實施例提供的方案對待編碼二值圖像編碼後,得到的編碼數據佔用的存儲空間要遠遠小於待編碼二值圖像佔用的存儲空間。
本領域內的技術人員可以理解的,通常情況用大量的二值圖像樣本對分類器進行訓練時,二值圖像樣本的數量可能會達到幾萬甚至幾十萬,若這些文件均以單個文件的形式存儲,對於嵌入式系統而言,加載這些文件需要處理大量的I/O操作,幾乎是不可能的。鑑於上述原因,在本發明的一種較佳實現方式中,參見圖2,提供了另一種二值圖像編碼方法的流程示意圖,與前述實施例相比,本實施例中,在根據圖像信息和所獲得的編碼元素的取值,按照預設的信息排列規則,生成待編碼二值圖像對應的編碼數據之後,還包括:
S107:將所生成的編碼數據存儲至預設的圖像存儲文件尾。
其中,預設的圖像存儲文件用於存儲至少一個二值圖像對應的編碼數據。
基於上述將所生成的編碼數據存儲至預設的圖像存儲文件尾的情況,在本發明的一種具體實現方式中,上述二值圖像編碼方法還可以包括:
接收針對預設的圖像存儲文件的數據修改指令,其中,數據修改指令中至少包括:待修改二值圖像的標識、待修改圖像信息的標識以及待修改圖像信息的修改值;
根據數據修改指令中包括的待修改二值圖像的標識,在預設的圖像存儲文件中查找待修改二值圖像對應的編碼數據;
根據數據修改指令中包括的待修改圖像信息的標識以及待修改圖像信息的修改值,修改查找到的編碼數據。
由前面的描述可以知道,編碼數據中可以包含多種圖像信息,這裡不再一一列舉。
下面以圖像信息為:圖像是否為有效圖像為例進行說明。
接收到包含待修改二值圖像的標識、圖像是否為有效圖像的標識以及該標識的修改值的數據修改指令後,先根據待修改二值圖像的標識從預設的圖像存儲文件中找到該二值圖像的編碼數據,然後從找到的編碼數據中定位圖像是否為有效圖像的標識,並修改該標識的取值。
實際應用中,若想從預設的圖像存儲文件中刪除某一二值圖像的編碼數據,可以通過修改該值來實現,這樣無需真正刪除二值圖像的編碼數據,當用戶發現還想使用該二值圖像時,只需修改該二值圖像的上述是否為有效圖像的標識 的取值即可,無需再去其他地方尋找該二值圖像的圖像數據,也無需再往預設的圖像存儲文件中添加該二值圖像的編碼數據,能夠方便用戶管理大量的二值圖像的編碼數據。
由以上可見,本實施例提供的方案中,將所生成的編碼數據存儲至預設的圖像存儲文件尾,而預設的圖像存儲文件中可以存儲多個二值圖像對應的編碼數據,那麼需要加載多個文件時,只需加載該預設的圖像存儲文件即可,顯然由多次I/O操作簡化為一次I/O操作,應用本發明實施例提供的方案在需要加載多個文件的情況下,能夠大大減少I/O操作的次數。
與上述二值圖像編碼方法相對應,本發明實施例還提供了一種二值圖像解碼方法。
圖3為本發明實施例提供的一種二值圖像解碼方法的流程示意圖,該方法包括:
S301:獲得待解碼二值圖像的編碼數據。
一種具體實現方式中,可以直接從待解碼二值圖像對應的單一編碼文件中獲得該二值圖像的編碼數據。
另一種具體實現方式中,還可以根據待解碼二值圖像的標識,從預設的圖像存儲文件中獲得待解碼二值圖像的編碼數據,其中,預設的圖像存儲文件用於存儲至少一個二值圖像對應的編碼數據。
這種情況下,多個二值圖像對應的編碼數據存儲在一個文件中,實際應用中需要加載多個二值圖像時,只加載一個文件即可,減少了I/O操作的次數。
S302:根據預設的編碼長度L,對編碼數據進行解析,進而獲得待解碼二值圖像的各個像素點分組對應的編碼元素的取值。
其中,預設的編碼長度可以理解為用於表示編碼表中編碼元素的變量的位數,該參數是在編碼過程中設定好的。具體的對待解碼二值圖像進行編碼時,可以根據待解碼二值圖像的情況以及對壓縮比的要求等因素調整預設的編碼長度。預設的編碼長度L的取值越大,應用本發明實施例提供的方案進行圖像編碼時,得到的編碼數據的壓縮比越高。
另外,像素點分組也是在編碼過程中進行的,具體的,像素點分組為:按照預設的像素點分組順序,對待解碼二值圖像所包含的像素點進行分組得到的,各個像素點分組中所包含像素點的數量相同,且不大於預設的編碼長度L。
S303:根據預設的編碼長度L,從預設的解碼錶資料庫中獲得編碼長度L對應的解碼錶TL'。
其中,解碼錶TL'用於記錄編碼元素的取值與編碼元素的索引之間的對應關係,編碼表TL'中包含2L個取值不同的編碼元素,每一編碼元素的取值為[0,2L-1]內的一個整數。
需要說明的是,本實施例中涉及的解碼錶為與前述實施例中涉及的編碼表相對應的表,兩者之間是互逆的關係。
S304:根據所獲得的編碼元素的取值,從所述解碼錶TL'中獲得各個像素點分組在所述解碼錶TL'中對應的編碼元素的索引。
S305:根據所獲得的編碼元素的索引,獲得各個像素點分組所包含像素點的像素值。
具體的,在本發明的一種具體實現方式中,對於所獲得的任一編碼元素的索引indexD,可以按照以下步驟獲得索引indexD對應的像素點分組GD所包含像素點的像素值:
確定索引indexD的二進位數值;
根據bt的取值以及所述編碼長度L,獲得像素點分組GD中按照預設的像素點排列順序順序號為t的像素點的像素值it,其中,bt表示二進位數值中從低位到高位標識為t的比特位的取值,索引
具體的,根據bt的取值以及編碼長度L,獲得像素點分組GD中按照預設的像素點排列順序標識為t的像素點的像素值it時,獲得bt的取值的取值後,先根據bt的取值判斷標識為t的像素點是黑點還是白點,若bt的取值為0,則表示上述像素點為黑點,若bt的取值為1,則表示上述像素點為白點,然後根據該像素點的顏色以及編碼長度L確定該像素點的像素值。
例如,假設編碼長度L等於1,則
該像素點為黑點時,其像素值為0;
該像素點為白點時,其像素值為1。
假設編碼長度L等於8,則
該像素點為黑點時,其像素值為0;
該像素點為白點時,其像素值為255。
其他情況類似這裡不再一一列舉。
需要說明的是,假設,一二進位數值為「1101」,則從低位到高位各個位的取值分別為:1、0、1、1,從低位到高位各個位的標識可以為:0、1、2、3,當然,這裡上述標識的初始值為從0開始的,當然其初始值也可以從1開始,本申請並不對此進行限定,另外,二進位數值中從低位到高位各個位的標識也可以簡單的理解為按照從低位到高位的順序二進位數值中各個位對應的順序號。
S306:根據所獲得的像素值,生成待解碼二值圖像。
待解碼二值圖像的編碼數據為:按照以下信息排列規則排列的編碼數據,
Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,
其中,Id1表示預設的二值圖像對應的編碼數據的起始標識,Id2表示預設的二值圖像的圖像信息之間的分隔標識,Iij表示二值圖像的一個圖像信息,E表示由所獲得的編碼元素的取值組成的數據串。
由以上可見,本實施例提供的方案中,所解碼的編碼數據為對待解碼二值圖像所包含的像素點進行分組,根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組在編碼表中對應的編碼元素的索引,根據計算得到的編碼元素的索引,從編碼表中獲得各個像素點分組在編碼表中對應的編碼元素的取值,根據所獲得的編碼元素的取值,生成的編碼數據。一個像素點分組中包含的多個像素點對應一個編碼元素,因此,應用本實施例提供的方案解碼的編碼數據佔用的存儲空間要遠遠小於待解碼二值圖像佔用的存儲空間。
與上述的二值圖像編碼方法相對應,本發明實施例還提供了一種二值圖像編碼裝置。
圖4為本發明實施例提供的一種二值圖像編碼裝置的結構示意圖,該裝置包括:
圖像獲得模塊401,用於獲得待編碼二值圖像;
編碼表獲得模塊402,用於根據預設的編碼長度L,從預設的編碼表資料庫中獲得所述編碼長度L對應的編碼表TL,其中,所述編碼表TL用於記錄編碼元素的索引與編碼元素的取值之間的對應關係,所述編碼表TL中包含2L個取值不同的編碼元素,每一編碼元素的取值為[0,2L-1]內的一個整數;
像素點分組模塊403,用於按照預設的像素點分組順序,對所述待編碼二值圖像所包含的像素點進行分組,其中,分組後每一像素點分組中所包含像素點的數量相同,且不大於所述編碼長度L;
索引計算模塊404,用於根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組在所述編碼表TL中對應的編碼元素的索引;
第一取值獲得模塊405,用於根據計算得到的編碼元素的索引,從所述編碼表TL中獲得各個像素點分組在所述編碼表TL中對應的編碼元素的取值;
編碼數據生成模塊406,用於根據所獲得的編碼元素的取值,生成所述待編碼二值圖像對應的編碼數據。
具體的,所述索引計算模塊404,具體用於對於分組後任一像素點分組G,按照以下表達式,計算所述像素點分組G在所述編碼表TL中對應的編碼元素的索引indexG,
其中,t表示按照預設的像素點排列順序所述像素點分組G中像素點的順序號,it表示所述像素點分組G中順序號為t的像素點的像素值。
具體的,所述編碼數據生成模塊406可以包括:
圖像信息獲得子模塊,用於獲得所述待編碼圖像的圖像信息;
編碼數據獲得子模塊,用於根據所獲得的圖像信息和所獲得的編碼元素的取值,按照預設的信息排列規則,生成所述待編碼二值圖像對應的編碼數據。
具體的,所述編碼數據獲得子模塊,具體用於按照以下信息排列規則,生 成所述待編碼二值圖像對應的編碼數據,
Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,
其中,Id1表示預設的二值圖像對應的編碼數據的起始標識,Id2表示預設的二值圖像的圖像信息之間的分隔標識,Iij表示二值圖像的一個圖像信息,E表示由所獲得的編碼元素的取值組成的數據串。
由以上可見,本實施例提供的方案中,獲得待編碼二值圖像後,根據預設的編碼長度L,從預設的編碼表資料庫中獲得編碼長度L對應的編碼表TL,按照預設的像素點分組順序,對待編碼二值圖像所包含的像素點進行分組,根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組在編碼表TL中對應的編碼元素的索引,根據計算得到的編碼元素的索引,從編碼表TL中獲得各個像素點分組在編碼表TL中對應的編碼元素的取值,根據所獲得的編碼元素的取值,生成待編碼二值圖像對應的編碼數據。由以上可以看出,一個像素點分組中包含的多個像素點對應一個編碼元素,因此,按照本實施例提供的方案對待編碼二值圖像編碼後,得到的編碼數據佔用的存儲空間要遠遠小於待編碼二值圖像佔用的存儲空間。
在本發明的一種較佳實現方式中,參見圖5,提供了另一種二值圖像編碼裝置的結構示意圖,與前述實施例相比,本實施例中,上述裝置還包括:
編碼數據存儲模塊407,用於在所述編碼數據生成模塊生成編碼數據之後,將所生成的編碼數據存儲至預設的圖像存儲文件尾,其中,所述預設的圖像存儲文件用於存儲至少一個二值圖像對應的編碼數據。
可選的,上述二值圖像編碼裝置還可以包括:
數據修改指令接收模塊,用於接收針對所述預設的圖像存儲文件的數據修改指令,其中,所述數據修改指令中至少包括:待修改二值圖像的標識、待修改圖像信息的標識以及待修改圖像信息的修改值;
編碼數據查找模塊,用於根據所述數據修改指令中包括的所述待修改二值圖像的標識,在所述預設的圖像存儲文件中查找所述待修改二值圖像對應的編碼數據;
編碼數據修改模塊,用於根據所述數據修改指令中包括的所述待修改圖像信息的標識以及所述待修改圖像信息的修改值,修改查找到的編碼數據。
由以上可見,本實施例提供的方案中,將所生成的編碼數據存儲至預設的圖像存儲文件尾,而預設的圖像存儲文件中可以存儲多個二值圖像對應的編碼數據,那麼需要加載多個文件時,只需加載該預設的圖像存儲文件即可,顯然由多次I/O操作簡化為一次I/O操作,應用本發明實施例提供的方案在需要加載多個文件的情況下,能夠大大減少I/O操作的次數。
與上述的二值圖像解碼方法相對應,本發明實施例還提供了一種二值圖像解碼裝置。
圖6為本發明實施例提供的一種二值圖像解碼裝置的結構示意圖,該裝置包括:
編碼數據獲得模塊601,用於獲得待解碼二值圖像的編碼數據;
第二取值獲得模塊602,用於根據預設的編碼長度L,對所述編碼數據進行解析,進而獲得所述待解碼二值圖像的各個像素點分組對應的編碼元素的取值,其中,像素點分組為:按照預設的像素點分組順序,對所述待解碼二值圖像所包含的像素點進行分組得到的,各個像素點分組中所包含像素點的數量相同,且不大於所述預設的編碼長度L;
解碼錶獲得模塊603,用於根據所述預設的編碼長度L,從預設的解碼錶資料庫中獲得所述編碼長度L對應的解碼錶TL',其中,所述解碼錶TL'用於記錄編碼元素的取值與編碼元素的索引之間的對應關係,所述編碼表TL'中包含2L個取值不同的編碼元素,每一編碼元素的取值為[0,2L-1]內的一個整數;
索引獲得模塊604,用於根據所獲得的編碼元素的取值,從所述解碼錶TL'中獲得各個像素點分組在所述解碼錶TL'中對應的編碼元素的索引;
像素值獲得模塊605,用於根據所獲得的編碼元素的索引,獲得各個像素點分組所包含像素點的像素值;
圖像生成模塊606,用於根據所獲得的像素值,生成所述待解碼二值圖像。
具體的,所述像素值獲得模塊605,具體用於獲得所獲得的任一編碼元素的索引indexD對應的像素點分組GD所包含像素點的像素值;
其中,所述像素值獲得模塊,包括:
數值確定子模塊,用於確定所述索引indexD的二進位數值;
像素值獲得子模塊,用於根據bt的取值以及所述編碼長度L,獲得所述像素點分組GD中按照預設的像素點排列順序順序號為t的像素點的像素值it,其中,bt表示所述二進位數值中從低位到高位標識為t的比特位的取值,所述索引
具體的,所述編碼數據獲得模塊601,具體用於根據待解碼二值圖像的標識,從預設的圖像存儲文件中獲得所述待解碼二值圖像的編碼數據,其中,所述預設的圖像存儲文件用於存儲至少一個二值圖像對應的編碼數據。
具體的,所述待解碼二值圖像的編碼數據為:按照以下信息排列規則排列的編碼數據,
Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,
其中,Id1表示預設的二值圖像對應的編碼數據的起始標識,Id2表示預設的二值圖像的圖像信息之間的分隔標識,Iij表示二值圖像的一個圖像信息,E表示由所獲得的編碼元素的取值組成的數據串。
由以上可見,本實施例提供的方案中,所解碼的編碼數據為對待解碼二值圖像所包含的像素點進行分組,根據分組後每一像素點分組中所包含像素點的像素值,計算該像素點分組在編碼表中對應的編碼元素的索引,根據計算得到的編碼元素的索引,從編碼表中獲得各個像素點分組在編碼表中對應的編碼元素的取值,根據所獲得的編碼元素的取值,生成的編碼數據。一個像素點分組中包含的多個像素點對應一個編碼元素,因此,應用本實施例提供的方案解碼的編碼數據佔用的存儲空間要遠遠小於待解碼二值圖像佔用的存儲空間。
對於裝置實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
需要說明的是,在本文中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些 實體或操作之間存在任何這種實際的關係或者順序。而且,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
本領域普通技術人員可以理解實現上述方法實施方式中的全部或部分步驟是可以通過程序來指令相關的硬體來完成,所述的程序可以存儲於計算機可讀取存儲介質中,這裡所稱得的存儲介質,如:ROM/RAM、磁碟、光碟等。
以上所述僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發明的保護範圍內。