Слияние изображений с помощью анализа основных компонентов (PCA) - PullRequest
0 голосов
/ 27 августа 2018

Я пытался реализовать объединение изображений на основе 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? Или я ошибаюсь и есть еще одна формула для плавного изображения?

...