專利名稱:一種圖像顏色種類的壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,特別是涉及一種圖像顏色種類的壓縮方法。
背景技術(shù):
RGB(紅綠藍(lán)三基色)色彩空間總共有256X256X256 = 16777216種顏色組合。 一副圖像可能有成千上萬種顏色,但是人眼能識別的顏色卻不多,如,一副有6萬種顏色的圖片,把顏色種類壓縮到k(如256)種后,人眼看起來可能跟原圖區(qū)別不是很大,但是對圖像內(nèi)容的提取提供了方便,比如提取輪廓特征,紋理特征等。因此,實(shí)際應(yīng)用當(dāng)中迫切需要圖像的顏色種類壓縮方案。
發(fā)明內(nèi)容
本發(fā)明提供了一種圖像顏色種類的壓縮方法,該方法的處理速度快、壓縮效果好。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明公開了一種圖像顏色種類的壓縮方法,其特征在于,將給定圖像的顏色種類壓縮到小于或等于指定個(gè)數(shù)的方法包括遍歷圖像的所有像素點(diǎn),將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字后,將這八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中;消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量,直到顏色八叉樹中的葉子節(jié)點(diǎn)的數(shù)量小于或等于所述指定個(gè)數(shù);將顏色八叉樹的剩余葉子節(jié)點(diǎn)所對應(yīng)的顏色以及其對應(yīng)的RGB值填充到顏色表中;重新遍歷圖像的所有像素,將每個(gè)像素點(diǎn)的RGB值與顏色表中的RGB值依次進(jìn)行比較,找到最接近的顏色,用找到的最接近的顏色替換該像素點(diǎn)的顏色。由上述可見,本發(fā)明這種遍歷圖像的所有像素點(diǎn),將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字后,將這八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中;消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量,直到顏色八叉樹中的葉子節(jié)點(diǎn)的數(shù)量小于或等于所述指定個(gè)數(shù);將顏色八叉樹的剩余葉子節(jié)點(diǎn)所對應(yīng)的顏色以及其對應(yīng)的RGB值填充到顏色表中;重新遍歷圖像的所有像素,將每個(gè)像素點(diǎn)的RGB值與顏色表中的RGB值依次進(jìn)行比較,找到最接近的顏色,用找到的最接近的顏色替換該像素點(diǎn)的顏色的技術(shù)方案,處理速度快、壓縮效果好。
圖1是八叉樹的結(jié)構(gòu)示意圖;圖2是本發(fā)明實(shí)施例中的RGB(109,204,170)的二進(jìn)制表示示意圖;圖3是本發(fā)明實(shí)施例中的將十進(jìn)制數(shù)(36507614)存儲到八叉樹中的示意圖;圖4是本發(fā)明實(shí)施例中的一種圖像顏色種類的壓縮方法的流程圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。在本發(fā)明的方案中利用八叉樹(Octree)壓縮一幅圖像中的顏色種類,例如壓縮到256種或以下。為了便于說明本發(fā)明的技術(shù)方案,首先對八叉樹做一下簡要的介紹。圖1是八叉樹的結(jié)構(gòu)示意圖。如圖1所示,一個(gè)八叉樹的每個(gè)節(jié)點(diǎn)有且只有8個(gè)子節(jié)點(diǎn)。在本申請中引入了顏色八叉樹的概念。首先從兩個(gè)層面來了解顏色八叉樹的特性1),垂直層面一個(gè)具有8層深度的八叉樹(根節(jié)點(diǎn)除外),若每個(gè)層表示一個(gè)比特(bit)位,8層則可表示28 = 2 56個(gè)從0到255的數(shù)字,這正好是顏色空間一個(gè)分量顏色值的取值范圍。2),水平層面每個(gè)節(jié)點(diǎn)的8個(gè)節(jié)點(diǎn)(可3個(gè)比特位表示)可以用0-7表示索引。下面以RGB (109,204,170)來做說明。109對應(yīng)的二進(jìn)制為01101101,204對應(yīng)的二進(jìn)制為11001100,170對應(yīng)的二進(jìn)制為10101010。則該顏色的二進(jìn)制表示如圖2所示。 圖2是本發(fā)明實(shí)施例中的RGB(109,204,170)的二進(jìn)制表示示意圖。如圖2所示,將R值所對應(yīng)的十進(jìn)制數(shù)(109)轉(zhuǎn)換成8位的二進(jìn)制數(shù)(01101101)后按高位在左低位在右的順序放到第一行,將G值所對應(yīng)的十進(jìn)制數(shù)(204)轉(zhuǎn)換成8位的二進(jìn)制數(shù)(11001100)后按高位在左低位在右的順序放到第二行,將B值所對應(yīng)的十進(jìn)制數(shù)(170)轉(zhuǎn)換成8位二進(jìn)制數(shù) (10101010)后按高位在左低位在右的順序放到第三行,得到如圖2所示的三行八列的二進(jìn)制數(shù)矩陣;在圖2中,最下面的數(shù)字是RGB相對應(yīng)位的十進(jìn)制表示,是將上述二進(jìn)制數(shù)矩陣的從左到右的每一列的從上到下的二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),得到的八個(gè)十進(jìn)制數(shù)。例如, RGB的最高位分別是011,則對應(yīng)的十進(jìn)制是3,次高位是110,則對應(yīng)的十進(jìn)制是6,以此類推,得到8個(gè)十進(jìn)制數(shù)(36507614)。將這8個(gè)十進(jìn)制數(shù)(36507614)在八叉樹中存儲的形式如圖3所示。圖3是本發(fā)明實(shí)施例中的將十進(jìn)制數(shù)(36507614)存儲到八叉樹中的示意圖。如圖3所示,(36507614)分別存儲到第0至第7層中,其中,最高位的3存儲在根節(jié)點(diǎn)下的索引為3的節(jié)點(diǎn)中,次高位的6存儲在保存最高位的3的節(jié)點(diǎn)下的索引為6的節(jié)點(diǎn)中,以此類推。最后的存儲4的節(jié)點(diǎn)下的葉子節(jié)點(diǎn)用于存儲衛(wèi)星數(shù)據(jù),保存RGB值為(109,204,170) 的像素點(diǎn)的個(gè)數(shù)。圖3所示的就是一個(gè)顏色RGB值經(jīng)過轉(zhuǎn)換后,在八叉樹中自上而下、白左而右的存儲方式,在本申請文件中,將類似圖3所示的八叉樹稱為顏色八叉樹??梢钥闯?,顏色八叉樹最多能存儲88 = 16777216種顏色,即為滿八叉樹。可見,將八個(gè)十進(jìn)制數(shù)存儲到顏色八叉樹中的過程為將所述八個(gè)十進(jìn)制數(shù)中的第一個(gè)數(shù)寫入根節(jié)點(diǎn)下的索引與該第一個(gè)數(shù)相同的節(jié)點(diǎn)中;將所述八個(gè)十進(jìn)制數(shù)中的第二個(gè)數(shù)寫入已寫入第一個(gè)數(shù)的節(jié)點(diǎn)下的索引與該第二個(gè)數(shù)相同的節(jié)點(diǎn)中;將所述八個(gè)十進(jìn)制數(shù)中的第三個(gè)數(shù)寫入已寫入第二個(gè)數(shù)的節(jié)點(diǎn)下的索引與該第三個(gè)數(shù)相同的節(jié)點(diǎn)中;以此類推,直到將所述八個(gè)十進(jìn)制數(shù)中的第八個(gè)數(shù)寫入對應(yīng)節(jié)點(diǎn)中。
在本發(fā)明中,基于顏色八叉樹對圖像的顏色種類進(jìn)行壓縮,可以將一幅圖像的顏色種類,從幾萬種壓縮到幾百種,甚至更少。例如RGB值為(109,204,170)的顏色與RGB值為(109,204,171)的顏色,在人眼視覺上幾乎沒有差別,可以歸為一種顏色。例如,在圖3 中,第5層、第6層和第7層的值對顏色的影響較小,因?yàn)樗鼈冇蒖GB顏色值的低位組成,所以當(dāng)顏色種類需要壓縮時(shí),首先對第7層上的葉子節(jié)點(diǎn)進(jìn)行消減,歸并葉子節(jié)點(diǎn)到第6層, 如果顏色種類數(shù)量還是比較多,可以繼續(xù)對第6層的節(jié)點(diǎn)采取同樣的方式進(jìn)行歸并消減。圖4是本發(fā)明實(shí)施例中的一種圖像顏色種類的壓縮方法的流程圖。如圖4所示, 將給定圖像的顏色種類壓縮到小于或等于指定個(gè)數(shù)K的方法包括401,遍歷圖像的所有像素點(diǎn),將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字后, 將這八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中。本步驟中,將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字的過程如前述的圖2所示的過程。將八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中的過程如前述的圖3所示的過程。402,消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量,直到顏色八叉樹中的葉子節(jié)點(diǎn)的數(shù)量小于或等于所述指定個(gè)數(shù)。本步驟中,按從下到上,從左到右的順序刪除顏色八叉樹中的節(jié)點(diǎn);或者,按從下到上,右到左的順序刪除顏色八叉樹中的節(jié)點(diǎn)。再或者,當(dāng)步驟401中遍歷圖像的所有像素點(diǎn),將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字后,將這八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中后,進(jìn)一步在存儲所述八個(gè)十進(jìn)制數(shù)中的第八個(gè)數(shù)的節(jié)點(diǎn)下創(chuàng)建一個(gè)葉子節(jié)點(diǎn),在該葉子節(jié)點(diǎn)中保存了具有該RGB值的像素點(diǎn)的個(gè)數(shù),則在本步驟中,按照葉子節(jié)點(diǎn)中保存的像素點(diǎn)個(gè)數(shù)值從小到大(或從小到大) 的順序,刪除葉子節(jié)點(diǎn),并將其中保存的像素點(diǎn)個(gè)數(shù)值合并到上一層節(jié)點(diǎn)中。403,將顏色八叉樹的剩余葉子節(jié)點(diǎn)所對應(yīng)的顏色以及其對應(yīng)的RGB值填充到顏色表中。本步驟中,顏色表中保存的是顏色和對應(yīng)RGB值之間的對應(yīng)關(guān)系,其中顏色可以用對應(yīng)的代碼進(jìn)行表示,或者做一個(gè)調(diào)色板,直接用該顏色表示。404,重新遍歷圖像的所有像素,將每個(gè)像素點(diǎn)的RGB值與顏色表中的RGB值依次進(jìn)行比較,找到最接近的顏色,用找到的最接近的顏色替換該像素點(diǎn)的顏色。本步驟中,可以根據(jù)如下的公式(1)進(jìn)行比較,找出最小(Nearest Color)值所對應(yīng)的顏色,即為最接近的顏色NC= (R1-R2)2+(G1-G2)2+(B1-B2)2 (1)其中,R1、G1和Bl為像素點(diǎn)的RGB值,R2、G2和B2為顏色表中的RGB值。或者,在本步驟中,還可以根據(jù)如下的公式⑵進(jìn)行比較,找出最小NC值所對應(yīng)的顏色,即為最接近的顏色 NC = (A1-A2)2+ (R1—R2)2+ (G1-G2)2+ (B1-B2)2 (2)其中,Rl、Gl和Bl為像素點(diǎn)的RGB值,Al為像素點(diǎn)的透明度值,R2、G2和B2為顏色表中顏色的RGB值,A2為顏色表中的顏色的透明度值。綜上所述,本發(fā)明這種遍歷圖像的所有像素點(diǎn),將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字后,將這八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中;消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量,直到顏色八叉樹中的葉子節(jié)點(diǎn)的數(shù)量小于或等于所述指定個(gè)數(shù);將顏色八叉樹的剩余葉子節(jié)點(diǎn)所對應(yīng)的顏色以及其對應(yīng)的RGB值填充到顏色表中;重新遍歷圖像的所有像素, 將每個(gè)像素點(diǎn)的RGB值與顏色表中的RGB值依次進(jìn)行比較,找到最接近的顏色,用找到的最接近的顏色替換該像素點(diǎn)的顏色的技術(shù)方案,處理速度快、壓縮效果好。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種圖像顏色種類的壓縮方法,其特征在于,將給定圖像的顏色種類壓縮到小于或等于指定個(gè)數(shù)的方法包括遍歷圖像的所有像素點(diǎn),將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字后,將這八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中;消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量,直到顏色八叉樹中的葉子節(jié)點(diǎn)的數(shù)量小于或等于所述指定個(gè)數(shù);將顏色八叉樹的剩余葉子節(jié)點(diǎn)所對應(yīng)的顏色以及其對應(yīng)的RGB值填充到顏色表中; 重新遍歷圖像的所有像素,將每個(gè)像素點(diǎn)的RGB值與顏色表中的RGB值依次進(jìn)行比較, 找到最接近的顏色,用找到的最接近的顏色替換該像素點(diǎn)的顏色。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字包括將R值所對應(yīng)的十進(jìn)制數(shù)轉(zhuǎn)換成8位的二進(jìn)制數(shù)后按高位在左低位在右的順序放到第一行,將G值所對應(yīng)的十進(jìn)制數(shù)轉(zhuǎn)換成8位的二進(jìn)制數(shù)后按高位在左低位在右的順序放到第二行,將B值所對應(yīng)的十進(jìn)制數(shù)轉(zhuǎn)換成8位二進(jìn)制數(shù)后按高位在左低位在右的順序放到第三行,得到三行八列的二進(jìn)制數(shù)矩陣;將所述二進(jìn)制數(shù)矩陣的從左到右的每一列的從上到下的二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),得到八個(gè)十進(jìn)制數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中包括將所述八個(gè)十進(jìn)制數(shù)中的第一個(gè)數(shù)寫入根節(jié)點(diǎn)下的索引與該第一個(gè)數(shù)相同的節(jié)點(diǎn)中;將所述八個(gè)十進(jìn)制數(shù)中的第二個(gè)數(shù)寫入已寫入第一個(gè)數(shù)的節(jié)點(diǎn)下的索引與該第二個(gè)數(shù)相同的節(jié)點(diǎn)中;將所述八個(gè)十進(jìn)制數(shù)中的第三個(gè)數(shù)寫入已寫入第二個(gè)數(shù)的節(jié)點(diǎn)下的索引與該第三個(gè)數(shù)相同的節(jié)點(diǎn)中;以此類推,直到將所述八個(gè)十進(jìn)制數(shù)中的第八個(gè)數(shù)寫入對應(yīng)節(jié)點(diǎn)中。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,所述消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量包括按從下到上,從左到右的順序刪除顏色八叉樹中的節(jié)點(diǎn)。
5.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,所述消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量包括按從下到上,右到左的順序刪除顏色八叉樹中的節(jié)點(diǎn)。
6.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,該方法進(jìn)一步包括 遍歷圖像的所有像素點(diǎn),將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字后,將這八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中后,進(jìn)一步在存儲所述八個(gè)十進(jìn)制數(shù)中的第八個(gè)數(shù)的節(jié)點(diǎn)下創(chuàng)建一個(gè)葉子節(jié)點(diǎn),在該葉子節(jié)點(diǎn)中保存具有該RGB值的像素點(diǎn)的個(gè)數(shù)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量包括 按照葉子節(jié)點(diǎn)中保存的像素點(diǎn)個(gè)數(shù)值從小到大的順序,刪除葉子節(jié)點(diǎn),并將其中保存的像素點(diǎn)個(gè)數(shù)值合并到上一層節(jié)點(diǎn)中。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量包括 按照葉子節(jié)點(diǎn)中保存的像素點(diǎn)個(gè)數(shù)值從大到小的順序,刪除葉子節(jié)點(diǎn),并將其中保存的像素點(diǎn)個(gè)數(shù)值合并到上一層節(jié)點(diǎn)中。
9.根據(jù)權(quán)利要求根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,所述將每個(gè)像素點(diǎn)的RGB值與顏色表中的RGB值依次進(jìn)行比較,找到最接近的顏色包括根據(jù)如下公式進(jìn)行比較,找出最小NC值所對應(yīng)的顏色,即為最接近的顏色 NC= (R1-R2)2+ (G1-G2)2+ (B1-B2)2其中,Rl、Gl和Bl為像素點(diǎn)的RGB值,R2、G2和B2為顏色表中的RGB值。
10.根據(jù)權(quán)利要求根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,所述將每個(gè)像素點(diǎn)的RGB值與顏色表中的RGB值依次進(jìn)行比較,找到最接近的顏色包括根據(jù)如下公式進(jìn)行比較,找出最小NC值所對應(yīng)的顏色,即為最接近的顏色 NC = (A1-A2)2+ (R1-R2)2+ (G1-G2)2+ (B1-B2)2其中,R1、G1和Bl為像素點(diǎn)的RGB值,Al為像素點(diǎn)的透明度值,R2、G2和B2為顏色表中顏色的RGB值,A2為顏色表中的顏色的透明度值。
全文摘要
本發(fā)明公開了一種圖像顏色種類的壓縮方法。該方法包括遍歷圖像的所有像素點(diǎn),將每個(gè)像素點(diǎn)的RGB值轉(zhuǎn)換成八個(gè)十進(jìn)制數(shù)字后,將這八個(gè)十進(jìn)制數(shù)字存儲到顏色八叉樹中;消減顏色八叉樹中的節(jié)點(diǎn)數(shù)量,直到顏色八叉樹中的葉子節(jié)點(diǎn)的數(shù)量小于或等于所述指定個(gè)數(shù);將顏色八叉樹的剩余葉子節(jié)點(diǎn)所對應(yīng)的顏色以及其對應(yīng)的RGB值填充到顏色表中;重新遍歷圖像的所有像素,將每個(gè)像素點(diǎn)的RGB值與顏色表中的RGB值依次進(jìn)行比較,找到最接近的顏色,用找到的最接近的顏色替換該像素點(diǎn)的顏色。本發(fā)明的技術(shù)方案,處理速度快、壓縮效果好。
文檔編號G06T9/40GK102231208SQ201110176428
公開日2011年11月2日 申請日期2011年6月28日 優(yōu)先權(quán)日2011年6月28日
發(fā)明者張雁飛 申請人:北京新媒傳信科技有限公司