помощь документ rgb2ycbcr в Matlab говорит, чтоПочему Y, преобразованный rgb2ycbcr в Matlab, в диапазоне [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 называются комнатой для хранения, а значения от 236 до 255 называются запасами». – Justin
Спасибо, @jucestain. –