2B Ayrık Kosinüs Dönüşümü'nü, DCT matrisi U kullanarak oluşturulmuş 8x8 piksel beyaz bir görüntüye uygulamak ve sonra görüntüyü kurtarmak ve çizim yapmak istiyorum. Matris Uimagesc kullanarak aralık hatası()
Hesaplama:
N = 8;
k = 0:N-1;
u = 0:N-1;
U = cos(u'*pi*(k+0.5)/N)*sqrt(2/N);
U (1,1:N) = U(1,1:N)/sqrt(2);
Resim X:
X = ones(8, 8, 3, 'double');
DCT 2D görüntü X Dönüşümü:
Y(:,:,1) = U*X(:,:,1)*U';
Y(:,:,2) = U*X(:,:,2)*U';
Y(:,:,3) = U*X(:,:,3)*U';
kazanılan Resim
Xr(:,:,1) = U'*Y(:,:,1)*U;
Xr(:,:,2) = U'*Y(:,:,2)*U;
Xr(:,:,3) = U'*Y(:,:,3)*U;
Benim yapmaya çalıştığım Şimdi
:
figure;
subplot(2, 1, 1);
imagesc(X);
axis off;
title('Original image');
subplot(2, 1, 2);
imagesc(Xr);
axis off;
title('Recovered image');
aşağıdaki hatayı alıyorum:
Error using image
TrueColor CData contains element out of range 0.0 <= value <= 1.0
Error in imagesc (line 18)
hh = image(varargin{1},'CDataMapping','scaled');
Error in Ejercicio1_3 (line 32)
imagesc(Xr);
Ve Xr olan matrisin değerlerini:
Xr(:,:,1) =
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
Xr(:,:,2) =
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
Xr(:,:,3) =
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
Neden Neredeyim tüm değerler doğru aralıkta olduğunda bu hatayı aldınız mı? (0.0, 1.0)
Kodunuz başarısız oluyor Y = U * X * U '; '' X' bir 3D matrisidir –
Teşekkür ederim @ nirvana-msu, yazıyı düzelttim. – Kroka
"fprintf ("%. 17g \ n ", max (Xr (:)))' nin sonucunun ne olduğunu söyleyebilir misiniz? – beaker