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

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


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


Ответы (5)


Если вы спрашиваете, как выводится формула, вы можете поискать «системы координат цвета». На этой странице, в частности, есть хорошее обсуждение пространства 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
person Steve Tjoa    schedule 27.10.2010
comment
У меня уже есть YCbCr, мне просто нужна формула для преобразования этого YCbCr в RGB. Эта формула должна быть основана на приведенной выше таблице. - person SunnyShah; 27.10.2010
comment
Хорошая ссылка, но формула не совсем верная - как указано, она для значений 0,0–1,0, а не 0–255. - person Mark Ransom; 27.10.2010
comment
Да, хорошее замечание. Ссылка также содержит дополнительную (но простую) модификацию для [0,255]. - person Steve Tjoa; 27.10.2010
comment
Одна вещь, которую я упустил при реализации преобразования, - это проблемы масштабирования и происхождения для y, u и v, упомянутые в разделе «Важные маленькие факты». - person Mutant Bob; 10.12.2016

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

alt text

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

person Jacob    schedule 27.10.2010

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

person I82Much    schedule 27.10.2010
comment
У меня уже есть YCbCr, мне просто нужна формула для преобразования этого YCbCr в RGB. Эта формула должна быть основана на приведенной выше таблице. - person SunnyShah; 27.10.2010
comment
@Sunny, ты ссылку проверял? Доступны обе формулы. - person Mark Ransom; 27.10.2010
comment
@Mark Ransom, но мне нужна формула, полученная только из приведенной выше матрицы. - person SunnyShah; 27.10.2010

Преобразуйте в 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
person Валерий Заподовников    schedule 16.04.2021

person    schedule
comment
Спасибо за быстрый ответ, но вопрос в том, как преобразовать YCbCr в RGB. - person SunnyShah; 27.10.2010
comment
Почему вас не устраивает эта формула? - person Eugene Smith; 27.10.2010
comment
Я имею в виду, что у меня есть YCbCr, и я хочу преобразовать его в RGB. - person SunnyShah; 27.10.2010