Info

この質問は閉じられています。 編集または回答するには再度開いてください。

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

1 回表示 (過去 30 日間)
jebli med
jebli med 2017 年 2 月 23 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
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
%

回答 (1 件)

Walter Roberson
Walter Roberson 2017 年 2 月 23 日
You need to use fi() to do the conversion from integer to fixed point, instead of using double()

Community Treasure Hunt

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

Start Hunting!

Translated by