古詩詞大全網 - 成語故事 - 圖像處理中,圖像的亮度值和灰度值有什麽區別嗎?還是壹個意思,不同的叫法呢?

圖像處理中,圖像的亮度值和灰度值有什麽區別嗎?還是壹個意思,不同的叫法呢?

圖像的亮度值和灰度值是有區別的,區別為:圖象亮度是指畫面的明亮程度,單位是堪德拉每平米(cd/m2)或稱nits。灰度是指把白色與黑色之間按對數關系分成若幹級,其範圍壹般從0到255,白色為255,黑色為0。

擴展資料:

灰度與亮度的關系:

轉換公式:

壹、基礎

對於彩色轉灰度,有壹個很著名的心理學公式:

Gray=R*0.299+G*0.587+B*0.114

二、整數算法

而實際應用時,希望避免低速的浮點運算,所以需要整數算法。

註意到系數都是3位精度的沒有,我們可以將它們縮放1000倍來實現整數運算算法:

Gray=(R*299+G*587+B*114+500)/1000

RGB壹般是8位精度,現在縮放1000倍,所以上面的運算是32位整型的運算。註意後面那個除法是整數除法,所以需要加上500來實現四舍五入。

就是由於該算法需要32位運算,所以該公式的另壹個變種很流行:

Gray=(R*30+G*59+B*11+50)/100

但是,雖說上壹個公式是32位整數運算,但是根據80x86體系的整數乘除指令的特點,是可以用16位整數乘除指令來運算的。

三、整數移位算法

上面的整數算法已經很快了,但是有壹點仍制約速度,就是最後的那個除法。移位比除法快多了,所以可以將系數縮放成2的整數冪。

習慣上使用16位精度,2的16次冪是65536,所以這樣計算系數:

0.299*65536=19595.264≈19595

0.587*65536+(0.264)=38469.632+0.264=38469.896≈38469

0.114*65536+(0.896)=7471.104+0.896=7472

四舍五入會有較大的誤差,應該將以前的計算結果的誤差壹起計算進去,舍入方式是去尾法:

寫成表達式是:

Gray=(R*19595+G*38469+B*7472)>>16

2至20位精度的系數:

Gray=(R*1+G*2+B*1)>>2

Gray=(R*2+G*5+B*1)>>3

Gray=(R*4+G*10+B*2)>>4

Gray=(R*9+G*19+B*4)>>5

Gray=(R*19+G*37+B*8)>>6

Gray=(R*38+G*75+B*15)>>7

Gray=(R*76+G*150+B*30)>>8

Gray=(R*153+G*300+B*59)>>9

Gray=(R*306+G*601+B*117)>>10

Gray=(R*612+G*1202+B*234)>>11

Gray=(R*1224+G*2405+B*467)>>12

Gray=(R*2449+G*4809+B*934)>>13

Gray=(R*4898+G*9618+B*1868)>>14

Gray=(R*9797+G*19235+B*3736)>>15

Gray=(R*19595+G*38469+B*7472)>>16

Gray=(R*39190+G*76939+B*14943)>>17

Gray=(R*78381+G*153878+B*29885)>>18

Gray=(R*156762+G*307757+B*59769)>>19

Gray=(R*313524+G*615514+B*119538)>>20

觀察上面的式子,這些精度實際上是壹樣的:3與4、7與8、10與11、13與14、19與20,所以16位運算下最好的計算公式是使用7位精度,比先前那個系數縮放100倍的精度高,而且速度快:

Gray=(R*38+G*75+B*15)>>7

其實最有意思的還是那個2位精度的,完全可以移位優化:

Gray=(R+(WORD)G<<1+B)>>2

由於誤差很大,所以做圖像處理絕不用該公式(最常用的是16位精度)。但對於遊戲編程

,場景經常變化,用戶壹般不可能觀察到顏色的細微差別,所以最常用的是2位精度。

參考資料:

百度百科——灰度值

百度百科——圖像亮度