Я пытаюсь преобразовать изображение тепловой карты RGB в изображение тепловой карты в градациях серого.Сначала я подумал, что это было простое преобразование rgb в оттенки серого .Но это не так.
Например, синий цвет может обозначать мягкие вещи, а красный цвет - жесткие.
Используя широко используемый простой rgb в оттенки серого метод преобразования, я обнаружил, что красный и синий цвета преобразованы, чтобы сохранить серый цвет, хотяони имели очень разную природу представления.
Но что я хочу что-то вроде этого , где синий темно-серый, а красный ярко-серый.
Я много искал.К сожалению, я не нашел (или, возможно, я не мог понять).Прочитав статью о цветовой модели rgb, я нашел способ создания изображения в градациях серого.Мой код
import colorsys
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread('input_image/abnormal_hi_res.png')
img = img[ : , : , 0:3] # keep only r, g, b channels
new_image = np.zeros((img.shape[0], img.shape[1]))
for y_pos in range(img.shape[0]):
for x_pos in range (img.shape[1]):
color = img[y_pos, x_pos]
r,g,b = color
h, _, _ = colorsys.rgb_to_hls(r, g, b)
new_image[y_pos, x_pos] = 1.0 - h
plt.imshow(new_image, cmap='gray')
plt.show()
Но я считаю, что должен существовать хороший метод, подкрепленный проверенной математикой.
Пожалуйста, помогите мне найти правильный метод для этой проблемы.