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

 채택된 답변

Bjorn Gustavsson
Bjorn Gustavsson 2015년 9월 30일
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

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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

제품

질문:

2015년 9월 30일

댓글:

2017년 4월 12일

Community Treasure Hunt

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

Start Hunting!

Translated by