Проблемы LMS в RGBPython

Программы на Python
Anonymous
Проблемы LMS в RGB

Сообщение Anonymous »

Учитывая гиперспектральное изображение и данные чувствительности фоторецепторов, мне нужно получить ответы длинных, средних и коротких фоторецепторов для каждого пикселя на каждой длине волны. Затем я должен конвертировать из LMS в XYZ, а затем в RGB. < /P>
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from spectral import open_image

img = open_image('food_chili.hdr').load()
metadata = img.metadata

if 'wavelength' in metadata:
wavelength = np.array(metadata['wavelength'], dtype=float)
else:
raise ValueError("not found!")

sensitivity_data = pd.read_csv("linss2_10e_5_8dp.csv")
sensitivity_data.columns = sensitivity_data.columns.str.strip()

wavelengths_LMS = sensitivity_data.iloc[:, 0].values
L_sensitivity = sensitivity_data.iloc[:, 1].values
M_sensitivity = sensitivity_data.iloc[:, 2].values
S_sensitivity = np.nan_to_num(sensitivity_data.iloc[:, 3].values)

L_interpolated = np.interp(wavelength, wavelengths_LMS, L_sensitivity)
M_interpolated = np.interp(wavelength, wavelengths_LMS, M_sensitivity)
S_interpolated = np.interp(wavelength, wavelengths_LMS, S_sensitivity)

#normalization LMS
L_interpolated /= np.trapz(L_interpolated, wavelength)
M_interpolated /= np.trapz(M_interpolated, wavelength)
S_interpolated /= np.trapz(S_interpolated, wavelength)

min_wavelength, max_wavelength = 400, 700
visible_bands = np.where((wavelength >= min_wavelength) & (wavelength
Проблема в том, что полученное изображение имеет несбалансированные цвета; Например, зеленый имеет тенденцию перейти к красному.

Подробнее здесь: https://stackoverflow.com/questions/793 ... lms-to-rgb

Вернуться в «Python»