Effacer les filtres
Effacer les filtres

Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

please where was the problem i try to generate a HDL code

2 vues (au cours des 30 derniers jours)
jebli med
jebli med le 23 Fév 2017
Clôturé : MATLAB Answer Bot le 20 Août 2021
function dct(I)
coder.extrinsic('dctmtx');
%dctmtx - Compute discrete cosine transform matrix.
T = dctmtx(8);
coder.extrinsic('red');
red = double(I(:,:,1));
coder.extrinsic('imred');
coder.extrinsic('blkproc');
imred=zeros(size(red));
imred(:,:,1) = uint8(red);
B = blkproc(imred,[8 8],'410*x*500',T,T');
mask = [16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
14 17 22 29 51 87 80 62;
18 22 37 56 68 109 103 77;
24 35 55 64 81 104 113 92;
49 64 78 87 103 121 120 101;
72 92 95 98 112 100 103 99];
B2 = blkproc(B,[8 8],'410.*x',mask);
I2 = blkproc(B2,[8 8],'410*x*500',T',T);
%figure, imshow(I2)
%composante vert
%red = double(I(:,:,1));
%coder.extrinsic('imred');
%coder.extrinsic('blkproc');
%imred=zeros(size(red));
% imred(:,:,1) = uint8(red);
green = double(I(:,:,2));
coder.extrinsic('imgreen');
imgreen=zeros(size(green));
imgreen(:,:,1) = uint8(green);
C = blkproc(imgreen,[8 8],'410*x*500',T,T');
mask = [16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
14 17 22 29 51 87 80 62;
18 22 37 56 68 109 103 77;
24 35 55 64 81 104 113 92;
49 64 78 87 103 121 120 101;
72 92 95 98 112 100 103 99 ];
C2 = blkproc(C,[8 8],'410.*x',mask);
I3 = blkproc(C2,[8 8],'410*x*500',T',T);
%figure, imshow(I3);
%composante bleu
%red = double(I(:,:,1));
%coder.extrinsic('imred');
%coder.extrinsic('blkproc');
%imred=zeros(size(red));
% imred(:,:,1) = uint8(red);
blue = double(I(:,:,3));
coder.extrinsic('imblue');
imblue=zeros(size(blue));
imblue(:,:,1) = uint8(blue);
D = blkproc(imblue,[8 8],'410*x*500',T,T');
mask = [16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
14 17 22 29 51 87 80 62;
18 22 37 56 68 109 103 77;
24 35 55 64 81 104 113 92;
49 64 78 87 103 121 120 101;
72 92 95 98 112 100 103 99];
D2 = blkproc(D,[8 8],'410.*x',mask);
I4 = blkproc(D2,[8 8],'410*x*500',T',T);
%figure, imshow(I4);
coder.extrinsic('image');
image=zeros(size(red,1),size(red,2),3);
image(:,:,1)=I2;
image(:,:,2)=I3;
image(:,:,3)=I4;
%imshow(image);
%figure,
% subplot(4,2,1); imshow(I); title('image originale')
% subplot(4,2,2); imshow(imred); title('red component')
%subplot(4,2,3); imshow(imgreen); title('green component')
%subplot(4,2,4); imshow(imblue); title('blue component')
%subplot(4,2,5); imshow(I2); title('red-DCT')
%subplot(4,2,6); imshow(I3); title('green-DCT ')
%subplot(4,2,7); imshow(I4); title('blue-DCT ')
%subplot(4,2,8); imshow(image); title('image compressée')
coder.extrinsic('figure');
figure,
coder.extrinsic('subplot');
coder.extrinsic('imshow');
coder.extrinsic('title');
subplot(1,2,1); imshow(I); title('image originale')
subplot(1,2,2); imshow(image); title('image compressée')
end
%

Réponses (1)

Walter Roberson
Walter Roberson le 23 Fév 2017
You need to use fi() to do the conversion from integer to fixed point, instead of using double()

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by