這些計(jì)算機(jī)究竟為什么會(huì)喜歡坐灰機(jī)而不暈?zāi)???jīng)過(guò)研究發(fā)現(xiàn),在精度上,這些機(jī)械玩意肯定沒(méi)法跟現(xiàn)在的電腦比,計(jì)算不可能算到小數(shù)點(diǎn)之后很多位,常常要四舍五入。舉個(gè)例子,假設(shè)計(jì)算機(jī)在完成一個(gè)任務(wù)的時(shí)候,一個(gè)參數(shù)先后被乘了五次,這個(gè)參數(shù)的精確值是5.4,但是計(jì)算機(jī)只能用整數(shù),5.4只好每次都被四舍五入成了5,正確的結(jié)果應(yīng)該是5.4*5.4*5.4*5.4*5.4=4591.65,可是計(jì)算的結(jié)果只有5*5*5*5*5=3125,兩者有不小的誤差,因?yàn)槊看嗡纳嵛迦胫蟮闹刀急日_的值“矮了一小截”,幾次誤差疊加在一起就變得越來(lái)越大。機(jī)器在晃動(dòng)的時(shí)候,會(huì)再額外產(chǎn)生一些的小誤差,但并不會(huì)雪上加霜,5.4可能被晃成5.5,5.6,四舍五入就是6了,當(dāng)然也可能被晃成5.3,5.2。雖然晃動(dòng)的誤差完全是隨機(jī)的,但是5.4還是更接近于5,所以最后變成5的可能性更大,假設(shè)五次里5.4三次變成成了5,兩次被化成了6,這樣計(jì)算的結(jié)果是5*5*5*6*6=4500,比起3125精確了好多。當(dāng)然“晃動(dòng)”一定要輕微,不能太厲害,如果5.4最后變成了10就完全不靠譜了。
在這些機(jī)器里,通過(guò)加一些隨機(jī)晃動(dòng)的小誤差,化解掉計(jì)算機(jī)四舍五入時(shí)候大的誤差,這一招稱(chēng)為dithering(抖動(dòng))技術(shù),是一個(gè)“以毒攻毒”的絕妙主意。
雖然機(jī)械計(jì)算機(jī)在幾年后就被淘汰了,可是dithering技術(shù)卻一直被沿用著,近日各種數(shù)碼產(chǎn)品上顯示的圖片,視頻,聲音也時(shí)不時(shí)需要“抖動(dòng)”一下。
很多人小時(shí)候一定玩過(guò)這樣的游戲,用硬紙板制作一個(gè)小圓盤(pán),小圓盤(pán)上交替涂上紅色和黃色,然后把小圓盤(pán)中間穿上一根小支柱,讓小圓盤(pán)像陀螺一樣快速旋轉(zhuǎn),你會(huì)看到什么?沒(méi)錯(cuò),小圓盤(pán)既不是紅色,也不會(huì)黃色,而是紅黃兩色快速“輪班”在你的眼前閃過(guò),被“調(diào)成”了中間的橙色。
如果一段視頻播放的時(shí)候可以顯示的顏色有限,比如只能顯示紅色和黃色,不能顯示橙色(當(dāng)然今天一定不會(huì)有那么落后的設(shè)備了,不過(guò)幾百種、幾千種顏色還是可能有不夠用的時(shí)候),視頻畫(huà)面里橙色部分只能像5.4被四舍五入成5一樣,看更接近哪一個(gè),或者被算成紅色,或者被算成黃色。視頻每秒鐘要快速播放24張畫(huà)面,眼睛反應(yīng)不過(guò)來(lái),覺(jué)著看到的是連續(xù)的圖像。我們也可以加一些”抖動(dòng)“,讓畫(huà)面的顏色紅色和黃色交替出現(xiàn),該顯示黃色時(shí)候也閃兩下紅色,該顯示紅色的時(shí)候也閃兩下黃色,每次隨機(jī)的發(fā)生。如果我們想展示“深橙色”,就讓畫(huà)面顯示紅色的概率大一點(diǎn),每秒平均多顯示一些次,如果想展示淺橙色,就讓畫(huà)面顯示黃色的概率大一點(diǎn),以這樣的方式“調(diào)色”。像小圓盤(pán)一樣,這樣快速變換畫(huà)面的dithering就可以欺騙住你的眼睛,“無(wú)中生有”創(chuàng)造出畫(huà)面中本來(lái)沒(méi)有的深橙色、橙色、淺橙色各種額外顏色。
一段視頻里可以調(diào)出新的顏色,那么一張靜止的圖片又怎么辦呢?dithering同樣可以發(fā)揮作用。首先拿黑白圖片來(lái)說(shuō),這是一張正常的黑白照片,里面有黑色,有白色,也有各種深淺不同的灰色元素。
現(xiàn)在如果只給你兩種畫(huà)筆,純黑色和純白色,沒(méi)有灰色的畫(huà)筆。你還能畫(huà)出這幅圖的效果嗎?如果只是把圖片里比較淺的灰色將就著用白色表示,把圖片里比較深的灰色“四舍五入”成黑色,圖片就會(huì)不幸變成下面的樣子:
效果慘不忍睹。
再看一下下面這張圖片
貌似ok呀!里面顏色深淺可變,咋看起來(lái)不只有黑白兩種顏色。可是仔細(xì)一看,里面并沒(méi)有灰色的元素,和上一幅圖完全一樣,只有黑點(diǎn)和白點(diǎn)。
相比于第二幅圖,我們?cè)诘谌鶊D里進(jìn)行了dithering,在黑色的區(qū)域加了一些白點(diǎn),在白色的區(qū)域加了一些黑點(diǎn),黑點(diǎn)比例比較多的區(qū)域可以表示深灰色,白點(diǎn)比較多的區(qū)域可以表示淺灰色,我們神奇的變了個(gè)魔術(shù),只用黑點(diǎn)白點(diǎn)就可以畫(huà)出深淺變化的圖片。
下面還有一張質(zhì)量更好的dithering圖片,中間的那一個(gè)Lena小姐圖里其實(shí)只有白色和黑色,沒(méi)有任何中間的顏色,不論你相不相信。
看完了黑白、灰度的照片,我們?cè)賮?lái)看一下彩色的照片
這里有六張圖片,最左上角的那張圖片是神馬顏色的?紅色和藍(lán)色。最右下角的那張圖片是神馬顏色的?紫色。錯(cuò)了!最右下角的那一張圖片也只有紅色和藍(lán)色,這六張圖片里紅色小方格和藍(lán)色小方格依次變小,到最后很小的時(shí)候,紅色和藍(lán)色都會(huì)消失,相當(dāng)于我們把紅色和藍(lán)色小點(diǎn)”勾兌“成了紫色,在動(dòng)態(tài)視頻里,通過(guò)不同時(shí)間點(diǎn)顯示不同顏色,dithering可以在你的眼前變出不存在的顏色;在靜態(tài)的圖片里,dithering則是在不同的位置灑下密密麻麻不同顏色的小點(diǎn)來(lái)讓你產(chǎn)生顏色錯(cuò)覺(jué)。
在下面三張圖里,第一張圖是正常的圖片,在第二張圖里,可以用的顏色數(shù)量大大減少,這只貓成了“大花臉”,圖片變得模糊。在第三張圖里我們用了dithering技術(shù),雖然顏色的種類(lèi)和第二張一樣多,但是看起來(lái)卻舒服了好多。