Проблема с анализом главных компонентов - PullRequest
6 голосов
/ 12 августа 2011

Я не уверен, что это правильное место, но здесь я иду:

У меня есть база из 300 изображений в высоком разрешении. Я хочу вычислить PCA в этой базе данных, и вот что я делаю: - переделываю каждое изображение как вектор с одним столбцом - создаю матрицу всех моих данных (500x300) - вычисляю средний столбец и вычитаю его в мою матрицу это дает мне X - вычислить корреляцию C = X ' X (300x300) - найти собственные векторы V и собственные значения D от C. - Матрица PCA задается как X V * D ^ -1 / 2. где каждый столбец является основным компонентом

Это здорово и дает мне правильный компонент.

Теперь я делаю один и тот же PCA в той же базе данных, за исключением того, что изображения имеют более низкое разрешение.

enter image description here

Вот мои результаты: низкое разрешение слева и высокое разрешение справа. Вы можете видеть, что большинство из них похожи, но некоторые изображения не совпадают (те, которые я обвел)

Есть ли способ объяснить это? Мне нужно, чтобы в моем алгоритме были одинаковые изображения, но один в высоком, а другой в низком разрешении, как я могу это сделать?

спасибо

1 Ответ

2 голосов
/ 12 августа 2011

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

Я предполагаю, что ваши составляющие изображения отсортированы по весу. Если это так, я бы попытался использовать другой фильтр предварительной понижающей дискретизации и посмотреть, дает ли он другие результаты (по сути, получают изображения с более низким разрешением различными способами). Возможно, что компоненты, которые выходят по-разному, имеют много частотного содержимого в полосе перехода этого фильтра. Похоже, изображения, обведенные красным, являются почти идеальными инверсиями друг друга. Фильтры могут вызывать такие вещи.

Если ваши изображения не отсортированы по весу, я не удивлюсь, если те, которые вы обвели, имеют очень маленький вес, и это может быть просто ошибкой в ​​вычислительной точности или чем-то в этом роде. В любом случае, нам, вероятно, потребуется немного больше информации о том, как вы уменьшаете выборку, как вы сортируете изображения перед их отображением. Кроме того, я не ожидал бы, что все изображения будут очень похожими, потому что вы избавляетесь от довольно многих частотных компонентов. Я почти уверен, что это не имеет никакого отношения к тому факту, что вы растягиваете изображения в векторы для вычисления PCA, но попробуйте растянуть их в другом направлении (взять столбцы вместо строк или наоборот) и Попробуй это. Если это изменит результат, возможно, вы захотите попробовать выполнить PCA несколько иначе, не зная как.

...