準(zhǔn)備一個(gè)長度為4096的數(shù)組,代表4096種顏色。對(duì)圖中的每一個(gè)象素,取R、G、B的最高四位,拼成一個(gè)12位的整數(shù),對(duì)應(yīng)的數(shù)組元素加1。全部統(tǒng)計(jì)完后,就得到了這4096種顏色的使用頻率。其中,可能有一些顏色一次也沒用到,即對(duì)應(yīng)的數(shù)組元素為零(假設(shè)不為零的數(shù)組元素共有PalCounts個(gè))。將這些為零的數(shù)組元素清除出去,使得前PalCounts個(gè)元素都不為零。將這PalCounts個(gè)數(shù)按從大到小的順序排列(這里我們使用起泡排序)。這樣,前256種顏色就是用的最多的顏色,它們將作為調(diào)色板上的256種顏色。對(duì)于剩下的PalCounts-256種顏色并不是簡單地丟棄,而是用前256種顏色中的一種來代替,代替的原則是找有最小平方誤差的那個(gè)。再次對(duì)圖中的每一個(gè)象素,取R、G、B的最高四位,拼成一個(gè)12位的整數(shù),如果對(duì)應(yīng)值在前256種顏色中,則直接將該索引值填入位圖數(shù)據(jù)中,如果是在后PalCounts-256種顏色中,則用代替色的索引值填入位圖數(shù)據(jù)中。
不錯(cuò)。
給點(diǎn)建議。
1。再次對(duì)圖中的每一個(gè)象素,取R、G、B的最高四位,拼成一個(gè)12位的整數(shù),如果對(duì)應(yīng)值在前256種顏色中,則直接將該索引值填入位圖數(shù)據(jù)中,如果是在后PalCounts-256種顏色中,則用代替色的索引值填入位圖數(shù)據(jù)中。
這里的誤差很大。丟掉的數(shù)據(jù)會(huì)對(duì)效果又明顯的影響。
2。準(zhǔn)備一個(gè)長度為4096的數(shù)組,代表4096種顏色。對(duì)圖中的每一個(gè)象素,取R、G、B的最高四位。
每個(gè)4位好像太少了。多了表格又太大。能不能過濾一下看看顏色數(shù)有多少。
3。將這PalCounts個(gè)數(shù)按從大到小的順序排列(這里我們使用起泡排序)。
用個(gè)好點(diǎn)的排序把,對(duì)能力有幫助。
4。這樣,前256種顏色就是用的最多的顏色,它們將作為調(diào)色板上的256種顏色。對(duì)于剩下的PalCounts-256種顏色并不是簡單地丟棄,而是用前256種顏色中的一種來代替
好方法,對(duì)速度幫助確實(shí)很大。
其實(shí)1,2導(dǎo)致了效果不會(huì)很好,除非你希望這樣的效果。特別是第一點(diǎn)。如果你希望看起來類似原圖,需要將1的損失拿回來。也就是RGB的變化量用到下一個(gè)像素中去。這樣損失就小了,不過下一個(gè)像素的選擇方法不好會(huì)導(dǎo)致偏移,自己設(shè)計(jì)一個(gè)把。對(duì)了你的hash表因?yàn)檫@樣就個(gè)廢了,想法建另外一個(gè)。這樣的改法沒有考慮2的影響,就是說當(dāng)主的基色還是不準(zhǔn)。不過這個(gè)你可以再嘗試其他的辦法
本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/qqwwing/archive/2007/04/26/1586018.aspx
posted on 2009-10-30 17:40
李陽 閱讀(754)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
圖形圖像