圖片染色方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種圖片染色方法,包括確定調色板的精度;根據所述調色板的精度,獲得染色調色板;對所述原始圖片的每個像素進行采樣,獲得每個像素的顏色坐標值;根據每個像素的顏色坐標值,從所述染色調色板中逐一索引每個像素的顏色,獲得染色后的圖片。相應地,本發(fā)明還公開了一種圖片染色裝置。采用本發(fā)明實施例,能夠適用于通用格式圖片的染色,染色的效率和靈活度高。
【專利說明】圖片染色方法及裝置
【技術領域】
[0001]本發(fā)明涉及計算機【技術領域】,尤其涉及一種圖片染色方法及裝置。
【背景技術】
[0002]在游戲開發(fā)制作中,由于受到資源包大小的限制和資源質量的嚴格把關,美術資源非常有限。這就需要充分復用有限的美術資源,在游戲中表現出多樣性和美觀性。貼圖染色技術是一種復用相同貼圖資源,通過在游戲運行時對圖片進行處理,改變貼圖的顏色外觀,來達到不同的美術效果和游戲外觀的技術。現有的貼圖染色技術包括逐幀逐像素變換技術和基于灰度圖的染色技術。
[0003]其中,逐幀逐像素變換技術是在將圖片展開的前提下,在渲染貼圖的過程中,通過逐像素對顏色進行RGB (紅綠藍)的顏色矩陣過濾變換,或者將RGB轉換成HSL (色相,飽和度,明度),再進行HSL變換,來達到一個染色的效果。但是,逐幀逐像素變換技術中的逐幀逐像素運算帶來比較大的渲染開銷,尤其在同場景在線人數火爆的場景下,渲染壓力會大大增加。而且對于RGB和HSL的相互轉換的非線性運算,在逐像素著色處理中開銷比較大,可能會嚴重影響游戲的渲染幀率和流暢度。
[0004]而基于灰度圖的染色技術是利用一種和原圖匹配的灰度圖貼圖,記錄了原圖各個像素上的灰度圖信息,在染色的時候,每分配一種主顏色值,就根據這個灰度圖信息,逐像素乘以主顏色得到對應像素的RGB值,從而實現一種新的染色效果。但是,這種基于灰度圖的染色技術染色的靈活度很低,只能有一個主色調,很難滿足游戲實際染色的設計需求。
【發(fā)明內容】
[0005]本發(fā)明實施例提出一種圖片染色方法,能夠適用于通用格式圖片的染色,且染色的效率和靈活度高。
[0006]本發(fā)明實施例提供一種圖片染色方法,包括:
[0007]確定調色板的精度;
[0008]根據所述調色板的精度,獲得染色調色板;
[0009]對所述原始圖片的每個像素進行采樣,獲得每個像素的顏色坐標值;
[0010]根據每個像素的顏色坐標值,從所述染色調色板中逐一索引每個像素的顏色,獲得染色后的圖片。
[0011]在一個實施例中,所述根據所述調色板的精度,獲得染色調色板具體為:
[0012]根據所述調色板的精度,獲得選擇標準調色板;
[0013]根據染色算法,對所述標準調色板中的每個顏色進行染色,獲得染色調色板。
[0014]進一步地,所述根據所述調色板的精度,獲得標準調色板具體為:
[0015]根據所述調色板的精度采樣顏色點,生成標準調色板;或者,
[0016]根據所述調色板的精度,從預先存儲的調色板文件中,選出標準調色板。
[0017]在另一個實施例中,所述根據所述調色板的精度,獲得染色調色板具體為:
[0018]根據所述調色板的精度,從預先存儲的調色板文件中,選出染色調色板。
[0019]進一步地,所述對所述原始圖片的每個像素進行采樣,獲得每個像素的顏色坐標值具體為:
[0020]對所述原始圖片的每個像素進行采樣,獲得每個像素的原始顏色值;
[0021]對每個像素的原始顏色值進行轉換計算,獲得每個像素在所述染色調色板中的顏色坐標值;其中,所述顏色坐標值具有多個維度,與所述染色調色板的維度相匹配。
[0022]再進一步地,所述根據每個像素的顏色坐標值,從所述染色調色板中逐一索引每個像素的顏色,獲得染色后的圖片具體為:
[0023]根據每個像素的顏色坐標值,從所述染色調色板中逐一索引出每個顏色坐標值鄰近的多個離散顏色點;
[0024]通過線性加權插值方法,獲得對應于所述多個離散顏色點的中間過渡色;所述中間過渡色為對應像素的顏色;
[0025]輸出每個像素對應的顏色,獲得染色后的圖片。
[0026]本發(fā)明實施例還提供了一種圖片染色裝置,包括:
[0027]精度確認模塊,用于確定調色板的精度;
[0028]染色模塊,用于根據所述調色板的精度,獲得染色調色板;
[0029]采樣模塊,用于對所述原始圖片的每個像素進行采樣,獲得每個像素的顏色坐標值;和
[0030]索引模塊,用于根據每個像素的顏色坐標值,從所述染色調色板中逐一索引每個像素的顏色,獲得染色后的圖片。
[0031 ] 在一個實施例中,所述染色模塊具體包括:
[0032]調色板獲取選擇單元,用于根據所述調色板的精度,獲得標準調色板;和,
[0033]調色板染色單元,用于根據染色算法,對所述標準調色板中的每個顏色進行染色,獲得染色調色板。
[0034]進一步地,所述調色板獲取單元具體用于根據所述調色板的精度采樣顏色點,生成標準調色板;或者,根據所述調色板的精度,從預先存儲的調色板文件中,選出標準調色板。
[0035]在另一個實施例中,所述染色模塊具體用于根據所述調色板的精度,從預先存儲的調色板文件中,選出染色調色板。
[0036]進一步地,所述采樣模塊具體包括:
[0037]像素采樣單元,用于對所述原始圖片的每個像素進行采樣,獲得每個像素的原始顏色值;和,
[0038]處理單元,用于對每個像素的原始顏色值進行轉換計算,獲得每個像素在所述染色調色板中的顏色坐標值;其中,所述顏色坐標值具有多個維度,與所述染色調色板的維度相匹配。
[0039]再進一步地,所述索引模塊具體包括:
[0040]顏色索引單元,用于根據每個像素的顏色坐標值,從所述染色調色板中逐一索引出每個顏色坐標值鄰近的多個離散顏色點;
[0041]顏色獲取單元,用于通過線性加權插值方法,獲得對應于所述多個離散顏色點的中間過渡色;所述中間過渡色為對應像素的顏色;和,
[0042]顏色輸出單元,用于根據所述顏色索引單元和顏色獲取單元的輸出結果,輸出每個像素對應的顏色,獲得染色后的圖片。
[0043]實施本發(fā)明實施例,具有如下有益效果:
[0044]本發(fā)明實施例提供的圖片染色方法及裝置,根據原始圖片的顏色精細度,確定調色板的精度,進而根據調色板的精度,動態(tài)生成標準調色板,可以對各種格式的原始圖片進行染色,并不局限于帶有調色板的圖片輸入格式,具有很高的通用性;根據原始圖片的顏色精細度和調色板染色所需運算量,靈活選擇合適的調色板精度,使圖片的染色效果、調色板的存儲大小和圖片染色所需運算量之間達到最佳平衡;只需對標準調色板進行一次性染色算法處理,相對于現有技術中的對原始圖片進行逐像素染色算法處理來說,降低染色運算量,提高染色效率,且不損失染色效果;通過線性加權插值方法,獲得從染色調色板中索引的多個離散顏色點的中間過渡色,相對于傳統的現有技術中的256色調色板圖片來說,顏色更豐富,染色更靈活,且降低了鋸齒或色塊的出現。
【專利附圖】
【附圖說明】
[0045]圖1是本發(fā)明提供的圖片染色方法的一個實施例的流程示意圖;
[0046]圖2是圖1所示的圖片染色方法中步驟S2的一個實施例的流程示意圖;
[0047]圖3是圖1所示的圖片染色方法中步驟S3的一個實施例的流程示意圖;
[0048]圖4是圖1所示的圖片染色方法中步驟S4的一個實施例的流程示意圖;
[0049]圖5是本發(fā)明提供的圖片染色裝置的一個實施例的結構示意圖;
[0050]圖6是本發(fā)明提供的圖片變色裝置的染色模塊一個實施例的結構示意圖;
[0051]圖7是本發(fā)明提供的圖片變色裝置的采樣模塊一個實施例的結構示意圖;
[0052]圖8是本發(fā)明提供的圖片變色裝置的索引模塊一個實施例的結構示意圖。
【具體實施方式】
[0053]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0054]參見圖1,是本發(fā)明提供的圖片染色方法的一個實施例的流程示意圖。
[0055]本發(fā)明實施例提供一種圖片染色方法,包括步驟SI至步驟S4,具體如下:
[0056]步驟S1:確定調色板的精度。
[0057]需要說明的是,調色板的精度是根據圖片染色的具體需求確定,一般會參考原始圖片的顏色精細度。原始圖片的顏色精細度可由原始圖片存儲大小來確定,顏色精細度越小,圖片壓縮就越小。在具體實施時,可預先將不同存儲大小的圖片劃分為不同的顏色精細度范圍,從而根據顏色精細度范圍來選取相匹配的調色板精度。調色板精度的選取,同時決定了調色板的大小和調色板染色所需的運算量。假設調色板精度為W,那么調色板大小為w*w*w,調色板染色所需的運算量為w*w*w。調色板精度越高,調色板中顏色豐富度越高,但調色板大小和調色板染色所需的運算量也越高。因此,可根據原始圖片的顏色精細度和調色板染色所需運算量,靈活選擇合適的調色板精度,使圖片的染色效果、調色板的存儲大小和調色板染色所需運算量之間達到最佳平衡。
[0058]例如,格式為RGB888或RGB565的圖片,選擇精度為16的調色板,足以達到較好的染色效果。
[0059]步驟S2:根據所述調色板的精度,獲得染色調色板。
[0060]如圖2所示,在一個實施例中,上述步驟S2具體包括步驟S21至步驟S22,如下:
[0061]步驟S21:根據所述調色板的精度,獲得標準調色板。
[0062]在一個實施方式中,步驟S21具體為:根據所述調色板的精度采樣顏色點,生成標準調色板。
[0063]例如,在RGB維度中,格式為RGB888或RGB565的原始圖片,選取調色板精度為16,則在RGB三個維度上分別采樣16個離散顏色點,生成標準調色板。標準調色板數據在RGB維度中具體的表示如下:
[0064]PalRef [x] [y] [z] = {R = x*16, G = y*16, B = z*16}
[0065]其中,0≤ x〈16,0 ≤ y〈16,0 ≤ z〈16。
[0066]那么,原始圖片的連續(xù)顏色空間信息可以用4096(16*16*16 = 4096)個離散的顏色點抽象表示出來。依次遍歷z維度(B通道),y維度(G通道),X維度(R通道),將4096個離散顏色點按順序進行存儲,即可獲得對應的標準調色板。
[0067]進一步地,上述的根據所述調色板的精度采樣顏色點,生成標準調色板的方法包括:在RGB三個維度上均勻采樣;或者,在RGB三個維度上非均勻采樣;或者,在HSL三個維度上均勻采樣;或者,在HSL三個維度上非均勻采樣。
[0068]在另一個實施方式中,步驟S21具體為:根據所述調色板的精度,從預先存儲的調色板文件中,選出標準調色板。在具體實施當中,可以預先配置多個不同精度的標準調色板,并存儲在調色板文件中,使得在步驟S21中可以直接從調色板文件中選出合適的標準調色板,從而可以減少運算,提高效率。
[0069]步驟S22:根據染色算法,對所述標準調色板中的每個顏色進行染色,獲得染色調色板。
[0070]生成染色調色板的步驟就是遍歷已經生成好的標準調色板數據,逐像素進行染色算法的處理,獲得一個新的相同精度大小但變換了顏色的調色板數據。具體實施時,染色算法包括分別在RGB維度和HSL維度的通過顏色矩陣濾鏡運算(Matrix Filter)進行逐像素的處理運算。矩陣濾鏡運算包括在RGB維度和HSL維度上對標準調色板進行線性矩陣變換和偏移運算。其中,RGB維度和HSL維度上的濾鏡矩陣均為4*3的矩陣。
[0071]需要說明的是,染色算法還可以采用其他的變色轉換函數,例如通過輸入變色參數,來調整色調(Hue)、飽和度(Saturat1n)和強度(Intensity)等,從而達到對調色板進行染色的效果。
[0072]在另一個實施例中,上述步驟S2具體為根據所述調色板的精度,從預先存儲的調色板文件中,選出染色調色板。
[0073]例如,依靠外部工具(比如Photoshop)對調色板圖片進行更加高級復雜的染色處理后,獲得一個或者多個新的染色調色板,并將這些新的調色板存為文件,在對圖片進行變色時,直接從調色板文件中選出染色調色板。
[0074]進一步地,所述染色調色板為3D紋理貼圖,包括RGB三個維度;或者,所述染色調色板為3D紋理貼圖,包括HSL三個維度;或者,所述染色調色板為2D紋理貼圖。
[0075]步驟S3:對所述原始圖片的每個像素進行采樣,獲得每個像素的顏色坐標值。
[0076]如圖3所示,上述步驟S3具體包括步驟S31至步驟S32,如下:
[0077]S31、對所述原始圖片的每個像素進行采樣,獲得每個像素的原始顏色值。
[0078]S32、對每個像素的原始顏色值進行轉換計算,獲得每個像素在所述染色調色板中的顏色坐標值;其中,所述顏色坐標值具有多個維度,與所述染色調色板的維度相匹配。
[0079]像素的原始顏色值為三維坐標值,但染色調色板可以為3D紋理貼圖或2D紋理貼圖。當染色調色板為3D紋理貼圖時,對每個像素的原始顏色值進行歸一化處理,即可獲得每個像素在所述染色調色板中的顏色坐標值;當染色調色板為2D紋理貼圖時,需將每個像素的原始顏色值對應的三維坐標值轉換為與染色調色板相匹配的二維坐標值,獲得每個像素在所述染色調色板中的顏色坐標值。
[0080]步驟S4:根據每個像素的顏色坐標值,從所述染色調色板中逐一索引每個像素的顏色,獲得染色后的圖片。
[0081]如圖4所示,上述步驟S4具體包括步驟S41至步驟S43,如下:
[0082]S41、根據每個像素的顏色坐標值,從所述染色調色板中逐一索引出每個顏色坐標值鄰近的多個離散顏色點。
[0083]S42、通過線性加權插值方法,獲得對應于所述多個離散顏色點的中間過渡色;所述中間過渡色為對應像素的顏色。本發(fā)明通過線性加權插值方法獲得中間過渡色,使染色更靈活,顏色更豐富,且具有抗鋸齒效果。同時,充分利用GPU (Graphic Processing Unit,圖形處理器)硬件加速,提高運算效率。
[0084]S43、輸出每個像素對應的顏色,獲得染色后的圖片。
[0085]本發(fā)明實施例還提供一種圖片染色裝置,能夠實施上述圖片染色方法的所有流程。
[0086]參見圖5,是本發(fā)明提供的圖片染色裝置的一個實施例的結構示意圖。
[0087]本發(fā)明實施例提供一種圖片染色裝置,包括:
[0088]精度確認模塊101,用于確定調色板的精度;
[0089]染色模塊102,用于根據所述調色板的精度,獲得染色調色板;
[0090]采樣模塊103,用于對所述原始圖片的每個像素進行采樣,獲得每個像素的顏色坐標值;和,
[0091]索引模塊104,用于根據每個像素的顏色坐標值,從所述染色調色板中逐一索引每個像素的顏色,獲得染色后的圖片。
[0092]參見圖6,是本發(fā)明提供的圖片染色裝置的染色模塊的一個實施例的結構示意圖。
[0093]本發(fā)明實施例提供一種染色模塊,包括:
[0094]調色板獲取單元201,用于根據所述調色板的精度,獲得標準調色板;和,
[0095]調色板染色單元202,用于根據染色算法,對所述標準調色板中的每個顏色進行染色,獲得染色調色板。
[0096]在具體實施當中,所述調色板獲取單元201用于根據所述調色板的精度采樣顏色點,生成標準調色板;或者,根據所述調色板的精度,從預先存儲的調色板文件中,選出標準調色板。
[0097]其中,根據調色板的精度采樣顏色點的方法包括:在RGB三個維度上均勻采樣;或者,在RGB三個維度上非均勻采樣;或者,在HSL三個維度上均勻采樣;或者,在HSL三個維度上非均勻采樣。
[0098]在另一個實施例中,所述染色模塊102具體用于根據所述調色板的精度,從預先存儲的調色板文件中,選出染色調色板。
[0099]進一步地,所述染色調色板為3D紋理貼圖,包括RGB三個維度;或者,所述染色調色板為3D紋理貼圖,包括HSL三個維度;或者,所述染色調色板為2D紋理貼圖。
[0100]參見圖7,是本發(fā)明提供的圖片染色裝置的采樣模塊的一個實施例的結構示意圖。
[0101]本發(fā)明實施例提供一種米樣模塊,包括:
[0102]像素采樣單元301,用于對所述原始圖片的每個像素進行采樣,獲得每個像素的原始顏色值;和,
[0103]處理單元302,用于對每個像素的原始顏色值進行轉換計算,獲得每個像素在所述染色調色板中的顏色坐標值;其中,所述顏色坐標值具有多個維度,與所述染色調色板的維度相匹配。
[0104]參見圖8,是本發(fā)明提供的圖片染色裝置的索引模塊的一個實施例的結構示意圖。
[0105]本發(fā)明實施例提供一種索引模塊,包括:
[0106]顏色索引單元401,用于根據每個像素的顏色坐標值,從所述染色調色板中逐一索引出每個顏色坐標值鄰近的多個離散顏色點;
[0107]顏色獲取單元402,用于通過線性加權插值方法,獲得對應于所述多個離散顏色點的中間過渡色;所述中間過渡色為對應像素的顏色;和,
[0108]顏色輸出單元403,用于根據所述顏色索引單元和顏色獲取單元的輸出結果,輸出每個像素對應的顏色,獲得染色后的圖片。
[0109]本發(fā)明實施例提供的圖片染色方法及裝置,根據原始圖片的顏色精細度,確定調色板的精度,進而根據調色板的精度,動態(tài)生成標準調色板,可以對各種格式的原始圖片進行染色,并不局限于帶有調色板的圖片輸入格式,具有很高的通用性;根據原始圖片的顏色精細度和調色板染色所需運算量,靈活選擇合適的調色板精度,使圖片的染色效果、調色板的存儲大小和圖片染色所需運算量之間達到最佳平衡;只需對標準調色板進行一次性染色算法處理,相對于現有技術中的對原始圖片進行逐像素染色算法處理來說,降低染色運算量,提高染色效率,且不損失染色效果;通過線性加權插值方法,獲得從染色調色板中索引的多個離散顏色點的中間過渡色,相對于傳統的現有技術中的256色調色板圖片來說,顏色更豐富,染色更靈活,且降低了鋸齒或色塊的出現。
[0110]通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發(fā)明可借助軟件加必需的硬件平臺的方式來實現,當然也可以全部通過硬件來實施?;谶@樣的理解,本發(fā)明的技術方案對【背景技術】做出貢獻的全部或者部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在存儲介質中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。
[0111]以上所述是本發(fā)明的優(yōu)選實施方式,應當指出,對于本【技術領域】的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍。
【權利要求】
1.一種圖片染色方法,其特征在于,包括: 確定調色板的精度; 根據所述調色板的精度,獲得染色調色板; 對所述原始圖片的每個像素進行采樣,獲得每個像素的顏色坐標值; 根據每個像素的顏色坐標值,從所述染色調色板中逐一索引每個像素的顏色,獲得染色后的圖片。
2.如權利要求1所述的圖片染色方法,其特征在于,所述根據所述調色板的精度,獲得染色調色板具體為: 根據所述調色板的精度,獲得標準調色板; 根據染色算法,對所述標準調色板中的每個顏色進行染色,獲得染色調色板。
3.如權利要求2所述的圖片染色方法,其特征在于,所述根據所述調色板的精度,獲得標準調色板具體為: 根據所述調色板的精度采樣顏色點,生成標準調色板;或者, 根據所述調色板的 精度,從預先存儲的調色板文件中,選出標準調色板。
4.如權利要求1所述的圖片染色方法,其特征在于,所述根據所述調色板的精度,獲得染色調色板具體為: 根據所述調色板的精度,從預先存儲的調色板文件中,選出染色調色板。
5.如權利要求1至4任一項所述的圖片染色方法,其特征在于,所述對所述原始圖片的每個像素進行采樣,獲得每個像素的顏色坐標值具體為: 對所述原始圖片的每個像素進行采樣,獲得每個像素的原始顏色值; 對每個像素的原始顏色值進行轉換計算,獲得每個像素在所述染色調色板中的顏色坐標值;其中,所述顏色坐標值具有多個維度,與所述染色調色板的維度相匹配。
6.如權利要求5所述的圖片染色方法,其特征在于,所述根據每個像素的顏色坐標值,從所述染色調色板中逐一索引每個像素的顏色,獲得染色后的圖片具體為: 根據每個像素的顏色坐標值,從所述染色調色板中逐一索引出每個顏色坐標值鄰近的多個離散顏色點; 通過線性加權插值方法,獲得對應于所述多個離散顏色點的中間過渡色;所述中間過渡色為對應像素的顏色; 輸出每個像素對應的顏色,獲得染色后的圖片。
7.一種圖片染色裝置,其特征在于,包括: 精度確認模塊,用于確定調色板的精度; 染色模塊,用于根據所述調色板的精度,獲得染色調色板; 采樣模塊,用于對所述原始圖片的每個像素進行采樣,獲得每個像素的顏色坐標值;和, 索引模塊,用于根據每個像素的顏色坐標值,從所述染色調色板中逐一索引每個像素的顏色,獲得染色后的圖片。
8.如權利要求7所述的圖片染色裝置,其特征在于,所述染色模塊具體包括: 調色板獲取單元,用于根據所述調色板的精度,獲得標準調色板;和, 調色板染色單元,用于根據染色算法,對所述標準調色板中的每個顏色進行染色,獲得染色調色板。
9.如權利要求8所述的圖片染色裝置,其特征在于,所述調色板獲取單元具體用于根據所述調色板的精度采樣顏色點,生成標準調色板;或者, 根據所述調色板的精度,從預先存儲的調色板文件中,選出標準調色板。
10.如權利要求7所述的圖片染色裝置,其特征在于,所述染色模塊具體用于根據所述調色板的精度,從預先存儲的調色板文件中,選出染色調色板。
11.如權利要求7至10任一項所述的圖片染色裝置,其特征在于,所述采樣模塊具體包括: 像素采樣單元,用于對所述原始圖片的每個像素進行采樣,獲得每個像素的原始顏色值;和, 處理單元,用于對每個像素的原始顏色值進行轉換計算,獲得每個像素在所述染色調色板中的顏色坐標值;其中,所述顏色坐標值具有多個維度,與所述染色調色板的維度相匹配。
12.如權利要求11所述的圖片染色裝置,其特征在于,所述索引模塊具體包括: 顏色索引單元,用于根據每個像素的顏色坐標值,從所述染色調色板中逐一索引出每個顏色坐標值鄰近的多個離散顏色點; 顏色獲取單元,用于通過線性加權插值方法,獲得對應于所述多個離散顏色點的中間過渡色;所述中間過渡色為對應像素的顏色;和, 顏色輸出單元,用于根據所述顏色索引單元和顏色獲取單元的輸出結果,輸出每個像素對應的顏色,獲得染色后的圖片。
【文檔編號】G06T11/40GK104077794SQ201410294557
【公開日】2014年10月1日 申請日期:2014年6月26日 優(yōu)先權日:2014年6月26日
【發(fā)明者】王梅林, 唐文良, 吳國瑞 申請人:廣州博冠信息科技有限公司