imread()
を使用して画像を3つの行列のセットに変換すると、は、N=1,2,3,4,8,16,32,64,128
という用語を使用して各行列の切り捨てられた近似を計算します。私は行列を持っていますが、私はその最後の部分についてはあまりよく分かりません。読みは少し曖昧です。切り捨てられた近似の意味はどういう意味ですか?
与えられた回答に基づいて更新:
A = double(imread("image.jpg"))/255;
[U1, S1, V1] = svd(A(:,:,1));
[U2, S2, V2] = svd(A(:,:,2));
[U3, S3, V3] = svd(A(:,:,3));
N = 128;
trunc_image = (U1(1:763,1:N)*S1(1:N,1:N)*V1(1:N,1:691))*255;
imwrite(trunc_image, "truncimg.jpg", "jpg");
を...しかし、結果のイメージは、次のようになります:
私は次のことを試してみました
の代わりに[ 'svd'(http://www.mathworks.com/help/からすべての特異値を使用してmatlab/ref/svd.html)を使用する場合は、最大値から最大値までの最大値(あなたのリストによる)から128個の最大値までを使用します。 – TroyHaskin
@TroyHaskinどういう意味ですか?これらの値はどのように使うのですか?* – whatwhatwhat
イメージにはすべての情報があります:イメージAの行列形式はSVDで分解でき、合計 'sigma_k * u_k * v_k.''は正確に' A '。しかし、それらのすべてではなく、最大の特異値を合計するだけで 'A'を近似することができます。また、「N」(近似項の数)が「R」(特異値の総数)よりも少ない場合は、計算量が少なくてよい近似が得られる可能性があります。 – TroyHaskin