2014-09-12 2 views
1

У меня есть YUV422 10-битный SDI с камеры, и мне нужно точно преобразовать его в 8 бит. Могу ли я просто сдвинуть вправо на 2 бита, или это не хорошо?Точный YUV Преобразование 10 бит в 8 бит

Существует много информации: http://en.wikipedia.org/wiki/YUV и https://ru.wikipedia.org/wiki/YCbCr Но нет полной ясности.

+0

Вы можете, но не забудьте правильно извлечь эти 10-битные значения. –

+0

Да, но я отправляю 8-битный YUV420 в видеокодер, а стандартные декодеры и плееры (например, VLC) будут выполнять обратное преобразование в RGB. –

+0

Игроки не обязательно должны конвертировать в RGB. Во всяком случае, это их роль, ваша правильная снятие двух младших бит - это все, что вам нужно. –

ответ

2

для 8 бит: диапазон Y представляет [16..235] и диапазон U/V является [16..240]

для 10 бит: диапазон Y представляет [64..940] и U/V диапазон [64..960]

Таким образом, смещение каждого значения компонента 2 бита вправо обеспечит правильное преобразование черно-белых точек: 64 ==> 16, 940 ==> 235 и 960 ==> 240. Промежуточные значения также будут правильно преобразованы.

+0

Для правильного округления добавьте 2 перед переключением: 'b = (a + 2) >> 2'. Пример: '7 >> 1 = 1', но' 7.0/4.0 = 1.75' и 'round (7.0/4.0) = 2.0' и' (7 + 2) >> 2 = 2' – Rotem

Смежные вопросы