Я выполнил разложение блока SVD по изображению и сохранил результаты.
Теперь мне нужно сделать реконструкцию из этого результата. Я нашел несколько примеров, написанных на языке Matlab, что для меня загадка.
Мне нужна только формула, по которой я могу восстановить свою картинку или пример, написанный на языке Си.
Матрица А равна U * S * V ‘. Как будет выглядеть формула, например для расчета первых пяти единичных значений (произведение каких строк и столбцов)? Пожалуйста, предоставьте формулу с индексами в стиле C. U и V ‘- матрицы, а S — вектор (не матрица).
Не уверен, что я правильно понял ваш вопрос, но если вам просто нужно знать единичные значения, это диагональные значения средней матрицы S. В общем, это диагональная матрица, которая хранится здесь как вектор. Я имею в виду, что сохраняется только диагональ, вы должны представить ее в виде матрицы, если вы думаете о матричных вычислениях.
Эти диагональные значения являются вашими единичными значениями. Если вам нужны первые наибольшие значения единственного числа, просто возьмите 5 самых больших значений вектора S.
Цитировать из Википедия:
Диагональные элементы Σi, i из Σ известны как особые значения M.
M столбцов U и n столбцов V называются левосингулярными
векторы и правосингулярные векторы M соответственно.
В приведенной выше цитате сигма — это ваш S, а M — исходная матрица.
Вы просили код на C, но я надеюсь, что псевдокода будет достаточно (уже поздно, я устал). Целевая матрица имеет м строки, с столбцы и звание ро. Переменная п знак равно мин (т, п).
Одна стратегия состоит в том, чтобы сначала сформировать промежуточный матричный продукт В знак равно US. Это тривиально из-за диагональной природы матрицы сингулярных значений. Предположим, у вас есть особые значения rho (= 5). Вы должны обеспечить соблюдение <знак равно п.
Заменить вектор столбца U1 с s1U1.
Заменить вектор столбца U2 с s2U2.
…
Заменить вектор столбца Uро с sроUро.
Заменить вектор столбца URho + 1 с нулевым вектором длины м.
Заменить вектор столбца URho + 2 с нулевым вектором длины м.
…
Заменить вектор столбца Uп с нулевым вектором длины м.
Далее формируем новую матрицу изображения знак равно ВВT. Элемент матрицы в строке р и колонка с является точечным произведением рвектор строки (длина rho) из В с свектор-столбец (длина rho) из ВT.
Другая стратегия состоит в том, чтобы перейти к форме, где элементы матрицы в ряду р и колонка с являются
г, с = сумма ( sКUг, кvс, к, {к, 1, ро})
Счетчик строк р работает от 1 до м; счетчик столбцов с работает от 1 до N.