Что такое совместная гистограмма и маргинальная гистограмма в обработке изображений? - PullRequest
0 голосов
/ 26 апреля 2019

Что такое совместная гистограмма и маргинальная гистограмма в обработке изображений и как они работают и как ее построить, с простыми примерами, если это возможно.

Например, если у меня есть пространство пространственных объектов из 10 измерений и я хочу построить гистограмму с каждым измерением квантования на 20 значений. Как рассчитать общее количество бинов для совместной гистограммы и для маргинальной гистограммы?

1 Ответ

1 голос
/ 29 апреля 2019

Полагаю, вы знаете, что такое гистограммы в целом. Совместные гистограммы данных в N-мерном пространстве признаков N-мерны. Вы просто помещаете точки данных в N-мерные ячейки (обычно это декартовы произведения из N 1-мерных сеток). Маргинальные гистограммы меньше, чем N-мерные гистограммы, где одно или несколько измерений были проигнорированы. Гистограммы суставов и краев очень похожи на распределения суставов / краев .

Как их вычислить, зависит от вашей конкретной ситуации. Вы можете вычислить маргинальные гистограммы из объединенных гистограмм, интегрируя по некоторым измерениям, или вы можете построить их так же, как объединенные гистограммы, но с меньшим количеством измерений. Например, в Matlab histcounts2 вычисляет объединенную гистограмму двумерных данных. Для данных более высокого размера может помочь accumarray. В Python с NumPy histogramdd генерирует многомерные гистограммы. Обычно N-мерные элементы - это декартовы произведения элементов в каждом измерении, а полученные гистограммы - это простые массивы Numpy (в Python) или матрицы (в Matlab).

Простой пример в N = 2D (в Matlab)

Давайте сначала создадим некоторые данные

x = 3*randn(1e4, 1);
y = randn(1e4, 1);
scatter(x, y, '.');
xlim([-10,10]);
ylim([-10,10]);
pbaspect([1,1,1]);

enter image description here

Давайте вычислим объединенную гистограмму

h = histcounts2(x, y, -10:10, -10:10);

Давайте отобразим объединенную гистограмму и на каждой стороне маргинальные гистограммы, которые могли быть получены либо путем интегрирования объединенной гистограммы по одному измерению, либо путем создания одномерных гистограмм для осей данных отдельно. Здесь маргинальные гистограммы создаются путем простого вычисления 1D гистограмм (игнорируя другое измерение данных).

fig = figure;
subplot('Position', [0.35, 0.35, 0.6, 0.6]);
im = imagesc(-10:10, -10:10, h.');
im.Parent.YDir = 'normal';
axis image;
title('joint histogram (x,y)');

subplot('Position', [0.43, 0.1, 0.45, 0.15]);
histogram(x, -10:10);
camroll(180);
title('marginal histogram x');

subplot('Position', [0.2, 0.4, 0.15, 0.55]);
histogram(y, -10:10);
camroll(90);
title('marginal histogram y');

enter image description here

Хорошо видно, что маргинальные гистограммы просто соответствуют сложениям совместной гистограммы по направлениям.

...