d=50;
im = imread('H:\matlab\bildanalys\terminator.gif');
M2 = double(im);
[U S V] = svd(M2);
U2 = U(:,1:d);
S2 = S(1:d,1:d);
V2 = V(:,1:d);
compressed=U2*S2*V2';
imwrite(compressed,'H:\matlab\bildanalys\compressedterminator.gif','gif')
S2
压缩后的图像大了 3 倍...
我对图像进行 svd,丢弃较小的奇异值(尽管它们很大),然后再次将矩阵相乘以获得压缩图像。压缩后的图像是黑白的,并且比原始图像大。我在哪里失败?