Мой вопрос довольно прост, но я новичок в анализе SVD. Моей конечной целью будет реализовать шумоподавление изображения с помощью SVD, но на данный момент я пытаюсь понять концепцию разложения по сингулярным значениям.
Как следует из названия, я хочу разложить изображение на матрицы компонентов, но я хочу избежать использования команды SVD, чтобы я мог получить представление о том, что на самом деле происходит в процессе.
Код :
a = double(rgb2gray(imread('Lenna.png')));
a_tp = a';
Z2 = a*a_tp;
Z1 = a_tp*a;
[U,U_val] = eig(Z1);
[V,V_val] = eig(Z2);
Sig = sqrt(U_val+V_val);
figure(1)
Img_new = imshow(((U*Sig*V')));
Я думал, что U
, V
и Sigma
являются моими компонентами, так как U
являются собственными векторами для a'*a
, а V
являются собственными векторами для a*a'
, а Sigma
являются соответствующими собственными значениями, но это неправильно ... Есть некоторая концептуальная ошибка, помогите мне пожалуйста
PS >> Это было справочное руководство > http://www.youtube.com/watch?v=BmuRJ5J-cwE
svd
реализовано с использованием QR-разложения. Для получения дополнительной информации см. en.wikipedia.org/wiki/. - person A. Donda   schedule 01.05.2014