Использование SVD для сжатия изображения в MATLAB

Я новичок в MATLAB, но пытаюсь сделать код сжатия изображений для изображений в градациях серого.

Вопросы

Как я могу использовать SVD для обрезки низкозначных собственных значений для восстановления сжатого изображения?

Работа / Попытки пока

Мой код до сих пор:

B=imread('images1.jpeg');   
B=rgb2gray(B);  
doubleB=double(B);  
%read the image and store it as matrix B, convert the image to a grayscale
photo and convert the matrix to a class 'double' for values 0-255  
[U,S,V]=svd(doubleB);

Это позволяет мне успешно разложить матрицу изображения с собственными значениями, хранящимися в переменной S.

Как мне усечь S (который 167x301, класс double)? Позволять'Скажем, из 167 собственных значений, которые я хочу взять только из первых 100 (или любых других n), как мне это сделать и восстановить сжатое изображение?

Обновленный код / мысли

Вместо того, чтобы помещать кучу кода в раздел комментариев, это мой текущий черновик. Мне удалось успешно создать сжатое изображение, изменив N вручную, но я хотел бы сделать 2 дополнительные вещи:

1 - Показать панель изображений для различных сжатий (например, запустить цикл для N = 5,10,25 и т. Д.)

2- Каким-то образом посчитайте разницу (ошибку) между каждым изображением и оригиналом и нарисуйте ее.

Я ужасен с пониманием циклов и вывода, но вот что я попробовал:

B=imread('images1.jpeg');  
B=rgb2gray(B);  
doubleB=im2double(B);%  
%read the image and store it as matrix B, convert the image to a grayscale  
%photo and convert the image to a class 'double'  
[U,S,V]=svd(doubleB);   
C=S;  
for N=[5,10,25,50,100]  
C(N+1:end,:)=0;  
C(:,N+1:end)=0;  
D=U*C*V';  
%Use singular value decomposition on the image doubleB, create a new matrix  
%C (for Compression diagonal) and zero out all entries above N, (which in  
%this case is 100). Then construct a new image, D, by using the new  
%diagonal matrix C.  
imshow(D);  
error=C-D;  
end

Очевидно, есть некоторые ошибки, потому что я неполучить несколько фотографий или знать, какграфик» матрица ошибок

Ответы на вопрос(4)

Ваш ответ на вопрос