Есть ли способ манипулировать изображением с помощью цветовой кривой в python? - PullRequest
0 голосов
/ 22 января 2020

У меня есть серия изображений tif, и мне было интересно, есть ли возможность написать что-то в python (используя, может быть, scikit-image или OpenCV), чтобы применить цветовую кривую. Данные, которые у меня есть, выглядят следующим образом, где у нас есть список данных x, y, x, y ... примерно так: (0, 0, 32, 22, 64, 56, 128, 128, 192, 196, 255, 255).

enter image description here

Ответы [ 2 ]

2 голосов
/ 23 января 2020

С новой информацией, которую вы предоставили, я думаю, что следующий код должен помочь. lut_in - вектор входных уровней серого, а lut_out - желаемый выходной уровень. Здесь он применяется для всех 3 каналов (как в фотошопе). Единственное, что вам нужно, это интерполяция, чтобы иметь LUT (справочную таблицу) из 256 элементов, который соответствует 256 уровням серого на входе. Вы можете применить тот же метод для других цветовых разрешений.

import cv2
import numpy as np

image = cv2.imread('apple.jpg')

lut_in = [0, 127, 255]
lut_out = [0, 80, 255]

lut_8u = np.interp(np.arange(0, 256), lut_in, lut_out).astype(np.uint8)
image_contrasted = cv2.LUT(image, lut_8u)

cv2.imwrite('apple_dark.jpg', image_contrasted)

Ввод:
enter image description here
Выход:
enter image description here

0 голосов
/ 22 января 2020

В комментариях некоторые уже давали ответы о том, как применить цветное LUT к изображению. Однако, когда я читаю ваш вопрос, у меня складывается впечатление, что вы хотели бы иметь фактически двухмерную цветовую карту, где цвет зависит от двух параметров. Если это так, я бы рекомендовал посетить этот пост или этот . Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...