2
的rgb2ycbcr在Matlab的幫助文檔說爲什麼Y在Matlab中被rgb2ycbcr轉換的範圍是[16,235]?
如果輸入是UINT8,YCBCR是UINT8,其中Y是在範圍[16 235]和Cb和Cr是在範圍[16 240]。
據我所知,從RGB轉換公式爲YCbCr是
Y = 0.299 R + 0.587 G + 0.114 B
Cb = - 0.1687 R - 0.3313 G + 0.5 B + 128
Cr = 0.5 R - 0.4187 G - 0.0813 B + 128
設R = 0,G = 0和B = 0,我們得到:Y = 0,它是不在範圍[16235]。令R = 255,G = 255和B = 0,我們得到Cb = 0.5,這也不在範圍[16,240]。
爲什麼rgb2ycbcr使Y在[16,235]的範圍內並使Cb/Cr在[16,240]的範圍內?
維基百科有相同的轉換爲MATLAB函數。根據維基百科的說法:「導致使用數字值的較小範圍的縮放比表示輸入數據的標稱範圍可能看起來需要的縮放允許在處理過程中的一些」過沖「和」下衝「而不需要如「xvYCC」所規定的,「頭頂」和「腳趾間」也可用於擴展名義色域。 – Justin
另外:「結果信號範圍從16到235;從0到15的值被稱爲footroom,而從236到255的值被稱爲淨空。」 – Justin
謝謝@jucestain。 –