Стандартная нормализация Matplotlib imshow () по сравнению с пользовательской реализацией - PullRequest
0 голосов
/ 19 октября 2019

Описание параметра "norm" в документации axes.imshow () Matplotlib говорит, что по умолчанию "для нормализации используется" линейное масштабирование, отображающее самое низкое значение в 0, а самое высокое в 1 ".

Это означает, что функция вида: f (x) = (x - x_min) / (x_max - x_min) отобразит значение изображения x на f (x), лежащее между 0 и 1. Однако я не могу воспроизвестиэто поведение, если я сам нормализую изображение и затем отображаю его:

import numpy as np
import matplotlib.pyplot as plt
A = np.random.normal(size=(4,5,3))
# A does have negative values
print(np.min(A), np.max(A))

# normalizing to range [0,1]
B = (A - np.min(A))/np.ptp(A)

figure = plt.figure()
ax1 = figure.add_subplot(121)
ax1.imshow(A)
ax2 = figure.add_subplot(122)
ax2.imshow(B)

plt.show()

Вот как выглядят изображения:

A vs B

Понятно, что они не одинаковы. Итак, это просто из-за разных цветовых карт? Если да, то для какого приложения я знаю априори, какая цветовая карта будет использоваться?

...