Слияние изображений с помощью анализа основных компонентов (PCA)

Я пытался реализовать объединение изображений на основе PCA с C ++ и OpenCV, но не могу понять, что именно мне нужно делать. Как я читал в некоторых руководствах по слиянию изображений на основе PCA, когда есть две картинки I1 и I2 одной сцены размером NxM в оттенках серого, алгоритм выглядит так:

  1. Создайте матрицу размером NMx2, где столбец 1 — это значения пикселей I1, а столбец 2 — значения пикселей I2.
  2. В некоторых уроках, которые я нашел, необходимо найти среднее значение 1 столбца и извлечь его из 1 столбца, а также среднее значение 2 столбца и извлечь его из второго столбца. Это необходимо?
  3. Найти ковариационную матрицу этой матрицы MNx2.
  4. Найти собственные значения и собственные векторы этой ковариационной матрицы.
    В одном из учебных пособий я прочитал, что необходимо выбрать собственный вектор, который соответствует большему собственному значению, и нормализовать этот собственный вектор.
    В OpenCV, когда используется функция cv :: eigen (), она возвращает собственные векторы, которые еще нормализованы. И в одном из учебных пособий я прочитал, что сумма полученных компонентов должна быть P1 + P2 = 1.

Итак, если я получу собственный вектор, соответствующий большему собственному значению, например, вот так eigen = (0,705353; 0,71453) = (u, v)это формула для плавного изображения I_fus?
I_fus = u*I1+v*I2? Или же
I_fus = u/(u+v)*I1+v/(u+v)*I2?
Или я ошибаюсь и есть еще одна формула для слитого изображения?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]