Реконструкция изображения с использованием разложения SVD

Я выполнил блочную декомпозицию SVD по изображению и сохранил результаты. Теперь мне нужно сделать реконструкцию по этим результатам. Я нашел несколько примеров, написанных на Matlab, что для меня загадка. Мне нужна только формула, по которой я могу восстановить свою картину, или пример, написанный на языке Си. Матрица A равна U*S*V'. Как будет выглядеть формула, например. для вычисления первых пяти сингулярных значений (произведение каких строк и столбцов)? Пожалуйста, предоставьте формулу с индексами в стиле C. U и V' — матрицы, а S — вектор (не матрица).


person chao    schedule 23.12.2012    source источник


Ответы (2)


Не уверен, правильно ли я понял ваш вопрос, но если вам просто нужно знать сингулярные значения, они являются диагональными значениями средней матрицы S. В общем случае S — это диагональная матрица, которая хранится здесь как вектор. Я имею в виду, что хранится только диагональ, вы должны представить ее как матрицу, если вы думаете о матричных вычислениях.

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

Цитата из Википедии:

Диагональные элементы Σi,i матрицы Σ известны как сингулярные значения M. m столбцов U и n столбцов V называются левосингулярными и правосингулярными векторами M соответственно.

В приведенной выше цитате сигма — это ваша S, а M — исходная матрица.

person adrin    schedule 03.01.2014

Вы просили код C, но я надеюсь, что псевдокода будет достаточно (уже поздно, я устал). Целевая матрица A имеет m строк, c столбцов и имеет ранг rho. Переменная p = min(m,n).

Одна из стратегий заключается в том, чтобы сначала сформировать промежуточный матричный продукт B = US. Это тривиально из-за диагонального характера матрицы сингулярных значений. Предположим, у вас есть ро ( = 5 ) сингулярных значений. Вы должны применить rho ‹= p.

Замените вектор-столбец u1 на s1u1.

Замените вектор-столбец u2 на s2u2. ...

Замените вектор-столбец urho на srhourho.

Замените вектор-столбец urho+1 нулевым вектором длины m.

Замените вектор-столбец urho+2 нулевым вектором длины m.

...

Замените вектор-столбец up нулевым вектором длины m.

Затем сформируйте новую матрицу изображения A = BVT. Элемент матрицы в строке r и столбце c представляет собой скалярное произведение r-го вектора-строки (длина rho) B< /b> с c-м вектором-столбцом (длина rho) VT.

Другая стратегия заключается в переходе к форме, в которой элементы матрицы A в строке r и столбце c равны

ar,c = сумма ( skur, kvc,k, {k, 1, rho})

Счетчик строк r работает от 1 до m; счетчик столбцов c работает от 1 до n.

person dantopa    schedule 17.08.2014