Предполагается, что ваши пиксели преобразуются в плавающие в диапазоне от 0,0,0 (черный) до 1,1,1 (белый). У вас есть вектор в 3D (RGB) пространстве от фона изображения до известного значения. Чтобы исправить, рассчитайте коррекцию, умножив каждый компонент на величину необходимой коррекции. Так что если у вас есть dR, dG, дБ в качестве разницы, все между 0,0 и 1,0, а R, G, B - это пиксель, Rnew = R * (1,0 + dR), отсечение максимум до 1,0. Это сохранит черные пиксели черными.