Artyom
ozuvgl
1b5ee0e verified
import numpy as np
from utils.color import rgb2ycc
def illumination_parameters_estimation(current_image, illumination_estimation_option):
ie_method = illumination_estimation_option.lower()
if ie_method == "gw":
ie = np.mean(current_image, axis=(0, 1))
ie /= ie[1]
return ie
elif ie_method == "sog":
sog_p = 4.
ie = np.mean(current_image**sog_p, axis=(0, 1))**(1/sog_p)
ie /= ie[1]
return ie
elif ie_method == "wp":
ie = np.max(current_image, axis=(0, 1))
ie /= ie[1]
return ie
elif ie_method == "iwp":
samples_count = 10
sample_size = 10
rows, cols = current_image.shape[:2]
data = np.reshape(current_image, (rows*cols, 3))
maxima = np.zeros((samples_count, 3))
for i in range(samples_count):
maxima[i, :] = np.max(data[np.random.randint(low=0, high=rows*cols, size=(sample_size)), :], axis=0)
ie = np.mean(maxima, axis=0)
ie /= ie[1]
return ie
else:
raise ValueError(
'Bad illumination_estimation_option value! Use the following options: "gw", "wp", "sog", "iwp"')
def ratios2floats(ratios):
floats = []
for ratio in ratios:
floats.append(float(ratio.num) / ratio.den)
return floats