混合rgb后检测源颜色

时间:2017-10-07 20:40:08

标签: c# c++ algorithm colors

尝试将其与另一个混合后检测源颜色。 例如:


    color -> (a, r, g, b)
    source -> (255, 128, 64, 64)
    overlay -> (204, 0, 128, 128)
    result -> (255, 26, 115, 115)

将源颜色与叠加混合(使用正常混合模式)后,我得到结果颜色。 知道源alpha和结果alpha是常量,为了计算结果颜色我使用这个公式:


    result.red = source.red + (overlay.red - source.red) * overlay.alpha / 255;

分别为其余的蓝色和绿色通道配方相同。 我面临的第一个问题是结果值是舍入的,所以不是25.6(对于结果R),我将得到26(因为rgb是字节值)。 因此,这将在检测源颜色时引起问题,仅知道结果和叠加。所以,使用这个公式:


    source.red = (255 * result.red - overlay.red * overlay.alpha) / (255 - overlay.alpha)

将导致源红色值= 130,输入128(因为结果红色值为26,输入为25.6) 任何想法如何以另一种方式计算源颜色?

0 个答案:

没有答案
相关问题