How to rconstruct image using eigenvectors and eigenvalues?

4 visualizaciones (últimos 30 días)
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

Bjorn Gustavsson
Bjorn Gustavsson el 30 de Sept. de 2015
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
Hitendra
Hitendra el 30 de Sept. de 2015
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.
Medha Sharma
Medha Sharma el 12 de Abr. de 2017
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 Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by