Как разложить цвет в процентах от других нескольких определенных цветов

#python #opencv #math #optimization #colors

Вопрос:

У меня есть эти цвета, я могу комбинировать эти цвета с соотношением, используя приведенный ниже код

введите описание изображения здесь

 avreg =  np.around((red_patch*0.1)   (blue_patch*0.4)   (yellow_patch*0.5)).astype(int)
 

результаты показаны ниже

введите описание изображения здесь

есть ли способ разложить этот цвет на предыдущий цвет, из которого он был создан. Например, найти соотношение каждого цвета, которое привело к этому цвету

Ответ №1:

Допустим Y , np.ndarray представляет результирующий цвет, тогда вы можете получить коэффициенты, которые вы ищете, с помощью

 M = np.column_stack((red_patch, blue_patch, yellow_patch))
print(np.linalg.inv(M)@Y)
 

(Обратите внимание , что коэффициенты могут быть не совсем теми, которые вы ввели из-за проблем с округлением .astype(int) , но это должно примерно сработать)

Комментарии:

1. Спасибо за ваш ответ. Просто добавлю, что для неквадратичной матрицы это можно использовать. np.linalg.pinv(M)