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