灰度变换及dithering抖动算法
1.灰度變化:
色深是一個可以顯示灰階個數(shù)的參數(shù)。對于8bit的顯示器來說,灰階數(shù)就是256個;對于10bit的顯示器來說,灰階數(shù)就是1024個,所以位數(shù)越高的顯示器,灰階范圍也就越大,圖像的明暗變化也就越平滑。
如下圖1所示,是一個變化不平滑的灰階,它對于圖像的明暗顯示局限性非常的大;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1
圖2是8bit的灰階范圍圖,但是由于8bit無法將全部的灰階顯示出來,所以灰階圖上會出現(xiàn)一條一條的條帶,這種現(xiàn)象稱為“色帶”。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2
圖3是16bit的灰階范圍圖,可以看到16bit的灰階范圍更為廣闊,明暗變化也更為平滑。
?
?
2.抖動算法
對于8bit的顯示器,加入我們給它足夠的補(bǔ)償,那么8bit的顯示器對于灰階的顯示也會更加的平滑。抖動算法( dithering)就是實(shí)現(xiàn)這一目的的重要方法,也可以知道,抖動算法就是高精度信號轉(zhuǎn)換到低精度信號時,對損失部分信號的填補(bǔ)與增益。
為什么高精度信號轉(zhuǎn)換為低精度信號時會失真?
試想,高精度信號是一個保留1位小數(shù)的等差數(shù)列:1.0,1.6,2.2,2.8,3.4……
而低精度信號只能保留每項(xiàng)為整數(shù),這時候這個等差數(shù)列會變成什么樣?
四舍五入:1,2,2,3,3
向下取整:1,1,2,2,3
向上取整:1,2,3,3,4
常規(guī)方法下生成的新數(shù)列沒有一個能還原出原數(shù)列等差排列的效果:新信號不僅丟失了精度,更重要的是變化的幅度不再均勻——這才是最要命的,而這其實(shí)就是圖像信號中色帶(banding)的產(chǎn)生原因。
而抖動算法正為此而生,抖動算法通過在原信號之間增加噪音,使得新信號呈現(xiàn)出和原信號更多的一致性。
下面是一個抖動算法效果的演示:
上圖中,左圖為原圖,原生具有8bit的高位深。當(dāng)其以低位深輸出時,中間的圖是不加抖動的結(jié)果,而右圖使用了一種error diffusion dithering的算法,于是結(jié)果迥異。右圖雖然增加了噪點(diǎn),但完全避免了色帶的產(chǎn)生。
這個演示告訴了你,在選擇顯示器時,原生10 bit面板固然最好,但即使8 bit面板仍然能很好地表現(xiàn)10 bit內(nèi)容。上圖是8 bit內(nèi)容抖動到有效精度不到3bit情況下的結(jié)果,可想而知,10 bit內(nèi)容抖動到8 bit的效果會更好得多,而且基本上不會增加太多可聞的噪點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的灰度变换及dithering抖动算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XP共享无线网络
- 下一篇: Lecture 4- excercise