索引图像的那些事啊
索引圖像在目前看來,需要應(yīng)用的場合比真彩圖像少的多,但是,在某些特殊的領(lǐng)域(比如游戲)和應(yīng)用(比如屏幕傳輸)索引圖像依舊發(fā)揮這重要的作用。本文將簡單的描述下索引圖像的有關(guān)事啊。
???? 索引圖像最多只可含有256種顏色,當(dāng)將圖像由真彩轉(zhuǎn)為索引模式時(shí),首先需要構(gòu)建一個(gè)索引色彩表,用于存放索引圖像中的顏色。如果原圖像中的顏色超出色彩表中的顏色范圍,則需要自動(dòng)選取色彩表中最相近的顏色或使用已有的顏色模擬該種顏色。索引顏色模式可以減小文件大小,同時(shí)保持視覺上的品質(zhì)基本不變。
???? 因此,索引圖像的實(shí)際數(shù)據(jù)只是對應(yīng)顏色表中的一個(gè)索引,而并不是實(shí)際的像素值,這個(gè)與灰度圖像不同,灰度圖像是同樣是最多含有256中顏色的圖像,但其顏色表的值是從0到255連續(xù)的值,所以灰度圖像的數(shù)據(jù)我們即可以看成是實(shí)際的像素值,也可以看成是索引值。索引圖像的這種特性使得我們在處理他的時(shí)候,一般不直接操作其索引數(shù)據(jù)。
?????為了將真彩色圖像轉(zhuǎn)換為索引圖像,我們必須構(gòu)建一個(gè)顏色表(PS的菜單中是這樣叫的,我想就是調(diào)色板的意思吧),為了盡量較少圖像在轉(zhuǎn)換過程中的視覺損失,顏色表的構(gòu)建一定要合理,現(xiàn)在有很多算法來尋找這樣的顏色表,最為人知的就是流行色法,即圖像中使用最多的256種顏色。對于不包含在這256種顏色中的值,則用距離其最近的顏色代替,系統(tǒng)的GetNearestPaletteIndex這個(gè)函數(shù)可以實(shí)現(xiàn)這個(gè)過程,我自己寫過類似的函數(shù),發(fā)現(xiàn)該過程內(nèi)部應(yīng)該用的歐式距離來計(jì)算兩者的相似程度的。
???? 在PS中,當(dāng)我們將圖像轉(zhuǎn)換成索引模式后,我們會(huì)發(fā)現(xiàn)濾鏡菜單不能用,調(diào)整菜單中也有很多不能用了,為什么?
???? 首先,濾鏡菜單不能用了,這是因?yàn)闉V鏡菜單中的大部分操作都涉及到圖像的不同領(lǐng)域,這樣就會(huì)產(chǎn)生新的顏色值,比如最簡單的方框模糊(3*3的加權(quán)平均值)過程就會(huì)得到新的像素值,通常情況下這個(gè)新的像素值在顏色表中是不存在的,也許你想,我們可以把這個(gè)新的顏色值也隱射成顏色表中與其最近的值啊,但是,這樣的操作本身就是對濾鏡算法一種歪曲了,只能使得變換后的結(jié)果無法認(rèn)可。
?????那么,調(diào)整菜單中的部分功能為什么不能用了呢,比如說通道混合器,自動(dòng)顏色等等,其實(shí)這也是合理的,通道混合器是在不同通道中混合顏色值得到新的圖像的,轉(zhuǎn)換成索引圖像后,索引圖像只有一個(gè)通道,怎么混合。
????? 當(dāng)然,PS調(diào)整菜單中的大部分功能還是可以使用的,因?yàn)檎{(diào)整菜單中的功能基本上都是對單點(diǎn)像素進(jìn)行處理的。前面已經(jīng)說過,索引模式中圖像的數(shù)據(jù)只是對應(yīng)顏色表中的一個(gè)索引,那么如何進(jìn)行單點(diǎn)處理呢,其實(shí)正式因?yàn)檫@個(gè)原因,使得索引圖像在單點(diǎn)處理中有著獨(dú)特的特性。
??? ?比如圖像的反色,反色的原理是黑變白,白變黑,即x=255-x,索引圖像如何操作,聰明的你很快就會(huì)想到,直接把調(diào)色板中的所有顏色值都改變?yōu)槠浠パa(bǔ)色不就行了嗎,的確,就是這么簡單,那么諸如顏色平衡,去色,顏色替代啊等等都是類似的過過程,直接根據(jù)相關(guān)算法調(diào)整顏色表就可以了。當(dāng)然這里面的色調(diào)均化還是會(huì)涉及到圖像的數(shù)據(jù)的。正式因?yàn)檫@個(gè)原因,索引圖像的大部分處理速度都要優(yōu)于灰度圖像。
???? 這里順便講下灰度圖像的上述過程的處理,比如反色,如果我們直接將灰度圖像的顏色變中各顏色反色,則顯示后的效果是正確的,但是這樣的操作后你如果按照BMP的格式寫入文件,然后用PS打開,PS就是認(rèn)為其是索引圖像了,就是因?yàn)榛叶葓D像的顏色表是固定的。所以千萬不要打灰度圖像顏色表的主意。
????? 我們再看看索引圖像的旋轉(zhuǎn)和縮放,打開一副真彩色圖像,我們將其旋轉(zhuǎn)10度,同樣復(fù)制一份剛才的真彩色圖像,轉(zhuǎn)換為索引圖像,我們也將其旋轉(zhuǎn)10度,仔細(xì)比較兩幅圖片,你會(huì)發(fā)現(xiàn)真彩色圖像旋轉(zhuǎn)后沒有失真,而索引圖像則有鋸齒產(chǎn)生,為什么呢,其實(shí)還是因?yàn)樗饕木壒?#xff0c;如果要抗鋸齒,旋轉(zhuǎn)則會(huì)產(chǎn)生新的像素值,這就類似于上述濾鏡的過程一樣。如果我們在自己寫抗鋸齒的旋轉(zhuǎn)算法時(shí),不考慮這點(diǎn),則你得到的結(jié)果將慘不忍睹(不抗鋸齒的算法不會(huì),他沒有產(chǎn)生新的像素值)。同樣,對于縮放除了最鄰近插值外其他算法也有類似的過程,但是PS對索引圖像也提供了幾中縮放方法,我想,也許這里其有個(gè)轉(zhuǎn)換過程吧,我自己也試多處理,首先我們記錄下索引圖像的顏色表,然后將其轉(zhuǎn)換為真彩色圖像,調(diào)用真彩色圖像的縮放方法,完成后,在次利用剛才保存的顏色表將其轉(zhuǎn)換為索引圖像,因?yàn)榭s放前后的圖像在顏色值上差別不是很大,即通過插值計(jì)算的來的新的像素值和原來的像素值插補(bǔ)不大,這樣在顏色表中尋找到其對應(yīng)的索引值也應(yīng)該相同。所以從視覺上我們并沒有感到錯(cuò)亂。利用這個(gè)原理,我們也可以自己實(shí)現(xiàn)抗鋸齒的索引圖像的旋轉(zhuǎn)。
???? 另外,索引圖像的顏色表不是一定要包含256中顏色的,其實(shí)我覺得在2到255之間都可以啊,如果小于16種索引色,則我們可以將其保存為4位色的,當(dāng)然也可以保存為8位色的,要知道4位色的處理痛苦程度是8位色的兩倍啊,為什么,字節(jié),位,對齊等等。????
???? 總之,索引圖像中的最重要的概念就是顏色表,由于這個(gè)顏色表的存在,我們有很多功能都不可以實(shí)現(xiàn),比如透明疊加,圖像的實(shí)現(xiàn)等等,不過由于其顏色的失真較小以及保存后的文件大小比較小等優(yōu)勢,索引圖像還是有很大的用處的。
轉(zhuǎn)載于:https://www.cnblogs.com/Imageshop/archive/2011/11/11/2246059.html
總結(jié)
- 上一篇: querySelector用法改进
- 下一篇: 防止查看网页源代码