图片处理中的Dithering技术
話說二戰(zhàn)的時候,美國轟炸機每次執(zhí)行任務(wù),除了滿載著威力強大的炸彈以外,還常常要裝配一臺計算機,飛機飛行方向和投彈的拋物線的計算都離不開這臺機器。可是世界上第一臺電子計算機在二戰(zhàn)結(jié)束后才發(fā)明,轟炸機上當時攜帶著的“計算機”其實就是個裝有一大堆齒輪的大箱子,這臺笨重的箱子計算能力還遠遠比不上今天的手里拿著的casio計算器,用起來也就比算盤好一些吧。這些機械計算機設(shè)計者最為擔心的問題是里面的一大堆齒輪零件哪天不高興掉下來一兩個,整臺機器或許就玩不轉(zhuǎn)了,飛機迷失航向,炸彈誤扔到自己的陣地上就要出大麻煩了。在轟炸機飛來飛去的時候,不斷的晃動會不會讓機器失靈成了很多人心頭的憂慮。可這家伙真上了飛機,人們卻意外發(fā)現(xiàn)它們不僅沒有出問題,計算的結(jié)果反而比在地面用的時候更準確,令人疑惑不解,難道這些機器對于過山車的感覺情有獨鐘?人們知道了機器的這個“怪毛病”之后,干脆在地面的機器里安裝上了振動器,讓它們一邊輕輕晃,一邊工作,體驗一下地面飛行的感覺,它們不僅不會進入夢鄉(xiāng),還會工作得更好。
這些計算機究竟為什么會喜歡坐灰機而不暈?zāi)?#xff1f;經(jīng)過研究發(fā)現(xiàn),在精度上,這些機械玩意肯定沒法跟現(xiàn)在的電腦比,計算不可能算到小數(shù)點之后很多位,常常要四舍五入。舉個例子,假設(shè)計算機在完成一個任務(wù)的時候,一個參數(shù)先后被乘了五次,這個參數(shù)的精確值是5.4,但是計算機只能用整數(shù),5.4只好每次都被四舍五入成了5,正確的結(jié)果應(yīng)該是5.4*5.4*5.4*5.4*5.4=4591.65,可是計算的結(jié)果只有5*5*5*5*5=3125,兩者有不小的誤差,因為每次四舍五入之后的值都比正確的值“矮了一小截”,幾次誤差疊加在一起就變得越來越大。機器在晃動的時候,會再額外產(chǎn)生一些的小誤差,但并不會雪上加霜,5.4可能被晃成5.5,5.6,四舍五入就是6了,當然也可能被晃成5.3,5.2。雖然晃動的誤差完全是隨機的,但是5.4還是更接近于5,所以最后變成5的可能性更大,假設(shè)五次里5.4三次變成成了5,兩次被化成了6,這樣計算的結(jié)果是5*5*5*6*6=4500,比起3125精確了好多。當然“晃動”一定要輕微,不能太厲害,如果5.4最后變成了10就完全不靠譜了。
在這些機器里,通過加一些隨機晃動的小誤差,化解掉計算機四舍五入時候大的誤差,這一招稱為dithering(抖動)技術(shù),是一個“以毒攻毒”的絕妙主意。
雖然機械計算機在幾年后就被淘汰了,可是dithering技術(shù)卻一直被沿用著,近日各種數(shù)碼產(chǎn)品上顯示的圖片,視頻,聲音也時不時需要“抖動”一下。
很多人小時候一定玩過這樣的游戲,用硬紙板制作一個小圓盤,小圓盤上交替涂上紅色和黃色,然后把小圓盤中間穿上一根小支柱,讓小圓盤像陀螺一樣快速旋轉(zhuǎn),你會看到什么?沒錯,小圓盤既不是紅色,也不會黃色,而是紅黃兩色快速“輪班”在你的眼前閃過,被“調(diào)成”了中間的橙色。
如果一段視頻播放的時候可以顯示的顏色有限,比如只能顯示紅色和黃色,不能顯示橙色(當然今天一定不會有那么落后的設(shè)備了,不過幾百種、幾千種顏色還是可能有不夠用的時候),視頻畫面里橙色部分只能像5.4被四舍五入成5一樣,看更接近哪一個,或者被算成紅色,或者被算成黃色。視頻每秒鐘要快速播放24張畫面,眼睛反應(yīng)不過來,覺著看到的是連續(xù)的圖像。我們也可以加一些”抖動“,讓畫面的顏色紅色和黃色交替出現(xiàn),該顯示黃色時候也閃兩下紅色,該顯示紅色的時候也閃兩下黃色,每次隨機的發(fā)生。如果我們想展示“深橙色”,就讓畫面顯示紅色的概率大一點,每秒平均多顯示一些次,如果想展示淺橙色,就讓畫面顯示黃色的概率大一點,以這樣的方式“調(diào)色”。像小圓盤一樣,這樣快速變換畫面的dithering就可以欺騙住你的眼睛,“無中生有”創(chuàng)造出畫面中本來沒有的深橙色、橙色、淺橙色各種額外顏色。
一段視頻里可以調(diào)出新的顏色,那么一張靜止的圖片又怎么辦呢?dithering同樣可以發(fā)揮作用。首先拿黑白圖片來說,這是一張正常的黑白照片,里面有黑色,有白色,也有各種深淺不同的灰色元素。
現(xiàn)在如果只給你兩種畫筆,純黑色和純白色,沒有灰色的畫筆。你還能畫出這幅圖的效果嗎?如果只是把圖片里比較淺的灰色將就著用白色表示,把圖片里比較深的灰色“四舍五入”成黑色,圖片就會不幸變成下面的樣子:
效果慘不忍睹。
再看一下下面這張圖片
貌似ok呀!里面顏色深淺可變,咋看起來不只有黑白兩種顏色。可是仔細一看,里面并沒有灰色的元素,和上一幅圖完全一樣,只有黑點和白點。
相比于第二幅圖,我們在第三幅圖里進行了dithering,在黑色的區(qū)域加了一些白點,在白色的區(qū)域加了一些黑點,黑點比例比較多的區(qū)域可以表示深灰色,白點比較多的區(qū)域可以表示淺灰色,我們神奇的變了個魔術(shù),只用黑點白點就可以畫出深淺變化的圖片。
下面還有一張質(zhì)量更好的dithering圖片,中間的那一個Lena小姐圖里其實只有白色和黑色,沒有任何中間的顏色,不論你相不相信。
看完了黑白、灰度的照片,我們再來看一下彩色的照片
這里有六張圖片,最左上角的那張圖片是神馬顏色的?紅色和藍色。最右下角的那張圖片是神馬顏色的?紫色。錯了!最右下角的那一張圖片也只有紅色和藍色,這六張圖片里紅色小方格和藍色小方格依次變小,到最后很小的時候,紅色和藍色都會消失,相當于我們把紅色和藍色小點”勾兌“成了紫色,在動態(tài)視頻里,通過不同時間點顯示不同顏色,dithering可以在你的眼前變出不存在的顏色;在靜態(tài)的圖片里,dithering則是在不同的位置灑下密密麻麻不同顏色的小點來讓你產(chǎn)生顏色錯覺。
在下面三張圖里,第一張圖是正常的圖片,在第二張圖里,可以用的顏色數(shù)量大大減少,這只貓成了“大花臉”,圖片變得模糊。在第三張圖里我們用了dithering技術(shù),雖然顏色的種類和第二張一樣多,但是看起來卻舒服了好多。
dithering除了可以在圖像中欺騙你的眼睛以外,在聲音中也可以欺騙你的耳朵。如果一段音樂每個時間點的幅度都被四舍五入處理,原來的音樂里就會摻雜進其他頻率的雜音,影響效果。如果我們讓各個時間點的幅度加上一點小的誤差,這種四舍五入產(chǎn)生的雜音就會被削弱和平均化,表面上降低聲音質(zhì)量的方法反而讓聲音效果更好。
http://songshuhui.net/archives/65689#comments
http://en.wikipedia.org/wiki/Dither
轉(zhuǎn)載于:https://www.cnblogs.com/hwl1023/p/3593553.html
總結(jié)
以上是生活随笔為你收集整理的图片处理中的Dithering技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TESB京东笛卡尔平台架构实践
- 下一篇: mysql 查询条件之外的数据_mysq