
Сообщение от
EEA
Думаю, правильно так:
Код:
real_Red = (Red*R11 + Green*R12 + Blue*R13) / (R11+R12+R13)
real_Green = (Red*R21 + Green*R22 + Blue*R23) / (R21+R22+R23)
real_Blue = (Red*R31 + Green*R32 + Blue*R33) / (R31+R32+R33)
Все немного сложнее.
По этим формулам палитра
Код:
orthodox=00,76,CD,E9,FF,9F:D0,00,00;00,E4,00;00,00,FF
не даст ожидаемого эффекта (ослабления каналов R и G).
Надо нормировать по всем строкам вместе, а не по каждой отдельно.
Вот так:
Код:
Sr = (R11+R12+R13);
Sg = (R21+R22+R23);
Sb = (R31+R32+R33);
S = max(Sr, Sg, Sb);
real_Red = (Red*R11 + Green*R12 + Blue*R13) / S
real_Green = (Red*R21 + Green*R22 + Blue*R23) / S
real_Blue = (Red*R31 + Green*R32 + Blue*R33) / S
(Ну и еще конечно можно округлить, как я писал выше)