Bezdepbonusu7Программирование: статьи и ответы

Вопрос

YCbCr в RGB из таблицы матриц

Автор вопроса: SunnyShahОтветов: 4

Ниже представлена ​​матрица для преобразования RGB в YCbCr. Подскажите, как мне получить формулу для преобразования YCbCr в RGB? Я имею в виду, что у меня есть значение YCbCr, и я хочу получить от него RGB.

  • Вы имеете в виду преобразовать RGB в YCbCr? Вы спрашиваете как выводится формула? В противном случае, я думаю, вы сами ответили на свой вопрос. Steve Tjoa 27.10.2010
  • @ Стив: Да, я спрашиваю, как можно вывести формулу? Долгое время я занимался матричной математикой. SunnyShah 27.10.2010
  • @ Джейкоб: Нет, это JobWork. :-) SunnyShah 27.10.2010
  • Ха-ха, хорошо. Мой ответ может помочь. Jacob 27.10.2010
  • Имейте в виду, что это матричное преобразование не учитывает гамма-коррекцию как из sRGB - ›BT.709, так и из BT.709 -› sRGB, что вы обычно хотели бы делать с видео. Использование только этого матричного преобразования имеет смысл только для линейных данных изображения / видео. MoDJ 11.01.2019

rgbmath

Ответы

Ответ 1 · рейтинг 5 · Steve Tjoa

Если вы спрашиваете, как выводится формула, вы можете поискать "системы координат цвета". На этой странице, в частности, есть хорошее обсуждение пространства YCbCr.

Мы знаем, что почти любой цвет можно представить как линейную комбинацию красного, зеленого и синего. Но вы можете преобразовать (или "повернуть") эту систему координат так, чтобы три базовых элемента больше не были RGB, а были чем-то другим. В случае YCbCr слой Y является слоем яркости, а Cb и Cr - двумя слоями цветности. Cb более тесно коррелирует с синим, а Cr более тесно коррелирует с красным.

YCbCr часто предпочтительнее, потому что зрительная система человека более чувствительна к изменениям яркости, чем количественно эквивалентные изменения цветности. Следовательно, кодер изображения, такой как JPEG, может сжимать два слоя цветности больше, чем слой яркости, что приводит к более высокому коэффициенту сжатия.

РЕДАКТИРОВАТЬ: Я неправильно понял вопрос. (Вы должны отредактировать его, чтобы уточнить.) Вот формула для получения RGB из YCbCr, взятая из выше ссылка:

r   =   1.0 * y'    + 0 * cB    + 1.402 * cR
g   =   1.0 * y'    - 0.344136 * cB - 0.714136 * cR
b   =   1.0 * y'    + 1.772 * cB    + 0 * cR

Ответ 2 · рейтинг 2 · Jacob

Я не собираюсь учитывать часть round, но поскольку M выглядит обратимым:

Полученный вектор можно округлить.

Ответ 3 · рейтинг 1 · I82Much

http://www.fourcc.org/fccyvrgb.php имеет преобразование YUV в RGB.

Ответ 4 · Валерий Заподовников

Преобразуйте в float и примените (поскольку коэфф. BT.709-2):

https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.709_conversion

1   0        1.5748
1  -0.1873  -0.4681
1   1.8556   0

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы