Каковы вторые моменты региона? - PullRequest
9 голосов
/ 07 октября 2009

В настоящее время я работаю над репликацией некоторых функций функции regionprops в Matlab в Octave. Тем не менее, у меня есть некоторые зависания на подмножестве функций. Свойства «Эксцентриситет», «MajorAxisLength», «MinorAxisLength» и «Orientation» - моя точка отсчета. В документации все они взяты из «... эллипса, который имеет те же вторые моменты, что и регион».

Итак, мой вопрос: что это за вторые моменты и как их найти?

Я смотрел по этой ссылке: http://en.wikipedia.org/wiki/Image_moments

Честно говоря, это только смутило меня. Кто-нибудь может указать мне на что-то более дружелюбное для начинающих? Спасибо.

Ответы [ 3 ]

23 голосов
/ 08 октября 2009

Под "вторыми моментами" документация означает второй центральный момент .

В случае одномерных данных это будет дисперсия (или квадрат стандартного отклонения).

В вашем случае, когда у вас есть двумерные данные, вторым центральным моментом является ковариационная матрица .

Если X является матрицей n-на-2 точек в вашем регионе, вы можете вычислить ковариационную матрицу Sigma в MATLAB следующим образом (не проверено):

mu=mean(X,1);
X_minus_mu=X-repmat(mu, size(X,1), 1);
Sigma=(X_minus_mu'*X_minus_mu)/size(X,1);

Теперь, как это связано с эллипсами? Что вы делаете здесь, так это, по сути, подгонка многомерного нормального распределения к вашим данным. Ковариационная матрица определяет форму этого распределения, а контурные линии многомерного нормального распределения - ждите его - - это эллипсы !

Направления и длины осей эллипса задаются собственными векторами и собственными значениями ковариационной матрицы:

[V, D]=eig(Sigma);

Столбцы V теперь являются собственными векторами (то есть направлениями осей), а значения по диагонали D являются собственными значениями (то есть длинами осей). Таким образом, у вас уже есть MajorAxisLength и MinorAxisLength. Ориентация, вероятно, представляет собой просто угол между большой осью и горизонталью (подсказка: используйте atan2, чтобы вычислить это из вектора, направленного вдоль большой оси). Наконец, эксцентриситет равен

sqrt(1-(b/a)^2)

где a - длина большой оси, а b - длина малой оси.

1 голос
/ 07 октября 2009

Я не совсем уверен, но это не относится к статистическому понятию из моментов (как в функции генерирования момента):

Центральные моменты (моменты о среднем):
mu_k = E[(X − E[X])^k], где E - ожидаемое значение

Таким образом, первые четыре момента соответственно: {1, дисперсия , асимметрия, эксцесс}.
Но опять я могу ошибаться;)

0 голосов
/ 07 октября 2009

Не совсем тот ответ, который вы ищете, но он может кому-то помочь.

Я написал эту книгу на тему механики и написал m-файлы для расчета площади момента инерции:

Освоение механики с использованием MATLAB 5

Код от него можно найти здесь:

Файловый обмен

Глава 9 должна представлять интерес. Я подозреваю, что вы могли бы использовать код в качестве отправной точки.

...