Построение гистограммы из 2 изображений, которые имеют разные формы - PullRequest
0 голосов
/ 09 марта 2020

Я хочу построить на одной фигуре гистограмму разных изображений, которые имеют разную форму. Сначала я подумал о том, чтобы получить самую большую фигуру и рассчитать коэффициент увеличения между меньшими фигурами и самой большой, чтобы окончательно нормализовать его.

Но это дает мне много вариаций.

Например, если a имеют (100,100,1) форму изображения и (25,25,1) форму изображения, коэффициент равен 16, потому что у первого пикселя в 16 раз больше, чем у второго. (4 * 4)

код

import scipy.ndimage as scim
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(figsize = (12,8))

band = np.random.uniform(0,1, size = (100,100,1))
ax = fig.add_subplot(2, 2, 1)    ## a voir comment modifier en fct du nb de canaux
x = np.linspace(band.min(), band.max(), 50)
y = scim.histogram(band, band.min(), band.max(), 50)
ax.plot(x, y)

band = np.random.uniform(0,1, size = (25,25,1))
ax = fig.add_subplot(2, 2, 1)    ## a voir comment modifier en fct du nb de canaux
x = np.linspace(band.min(), band.max(), 50)
y = scim.histogram(band, band.min(), band.max(), 50)
ax.plot(x, y*16) #here i multiply by 16 to get the same size
plt.show()

Слишком разные 2 гистограммы. У вас есть идея получить что-то более реалистичное c, чем это?

Спасибо

1 Ответ

0 голосов
/ 09 марта 2020

Обычный подход заключается в нормализации гистограмм, например, по их интегралу (вы также можете сделать это по их максимальному значению в зависимости от формы гистограмм):

import scipy.ndimage as scim
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(figsize = (12,8))

band = np.random.uniform(0,1, size = (100,100,1))
ax = fig.add_subplot(2, 2, 1)    ## a voir comment modifier en fct du nb de canaux
x = np.linspace(band.min(), band.max(), 50)
y = scim.histogram(band, band.min(), band.max(), 50)
ax.plot(x, y/y.sum())

band = np.random.uniform(0,1, size = (25,25,1))
ax = fig.add_subplot(2, 2, 1)  
x = np.linspace(band.min(), band.max(), 50)
y = scim.histogram(band, band.min(), band.max(), 50)
ax.plot(x, y/y.sum()) 
plt.show()

Вариации являются внутренними c на случайный шум, который вы генерируете, я не вижу того, что вы ожидаете получить, «но это дает мне много вариаций».

enter image description here

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