How to rconstruct image using eigenvectors and eigenvalues?

I am trying to reconstruct an image by evaluating its eigenvalues and eigenvectors. Some of the eigenvalues are negative and when I reconstruct the image using:
imge_rec = (eig_vec)*(eig_values)*(eig_vec)'
I do not obtain the same image. Following is my code and test image: img_in = double(rgb2gray(imread('input.jpg')));
[eig_vec,eig_val] = eig(img_in);
img_rec = eig_vec * eig_val * eig_vec';
figure;
imshow(img_rec,[]);
input image
output image

 Respuesta aceptada

I find it easier to work with the SVD-decomposition instead of the eigenvalue-decomposition. Since your matrix is not symmetric it gives complex-valued eigenvalues, which makes it much harder to use the eigenvalue-decomposition. The SVD gives you singular values that are real and >= 0. This makes it easier to implement straight filters and compressions and whatnot. So try:
[U,S,V] = svd(img_in);
imagesc(U*S*V.')
HTH

2 comentarios

Hi Bjorn,
Thank you for your answer. I tried my code with square matrix also (cropped images). Even then I am not able to get good reconstruction. I wish to separate high frequency component of image, so, I believe use of eigenvalues will be more useful.
Use inv function to take inverse, E' will take transpose.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Linear Algebra en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

el 30 de Sept. de 2015

Comentada:

el 12 de Abr. de 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by