Как конвертировать RGB -> YUV -> RGB (в обе стороны)

Я хочу пару алгоритмов преобразования, один от RGB до YUV, другой от YUV до RGB, которые являются противоположностями друг друга. То есть преобразование в оба конца должно оставить значение без изменений. (Если хотите, замените YUV на Y 'UV, YUV, YCbCr, YPbPr.)

Существует ли такая вещь? Если так, то, что это?

Размещенные решения (Как выполнить RGB->YUV преобразование в C / C ++ ?,http://www.fourcc.org/fccyvrgb.php,http://en.wikipedia.org/wiki/YUV) являются только инверсиями (две матрицы 3x3 являются инверсиями), если исключить зажим до [0,255]. Но опуская этот зажим, можно получить такие вещи, как отрицательная яркость, что сильно мешает обработке изображений в пространстве YUV. Сохранение зажима делает преобразование нелинейным, что затрудняет определение обратного.

Ответы на вопрос(3)

Ваш ответ на вопрос