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)

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