Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [IMG,map] = imread('pasi.jpg');
- T = [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];
- % RGB -> YCbCr
- IMG2 = rgb2ycbcr(IMG);
- [W,S,N] = size(IMG2);
- Y1 = IMG2(1:1:W,1:1:S,1);
- Cb1 = IMG2(1:1:W,1:1:S,2);
- Cr1 = IMG2(1:1:W,1:1:S,3);
- %QF
- QF=20;
- if QF<50
- qscale=floor(50/QF);
- else
- qscale=2-(QF/50);
- end
- QX=round(T*qscale);
- QUANTIZE = @(block_struct) round(block_struct./QX);
- DEQUANTIZE = @(block_struct) round(block_struct.*QX);
- % DWT IDWT
- DWT = @(block) dwt2(block,'haar');
- IDWT = @(block) waverec2(block,'haar'); %TO juz nie dziala dlatego
- % DWT
- Y2 = blkproc(Y1,[8 8],DWT);
- Cb2 = blkproc(Cb1,[8 8],DWT);
- Cr2 = blkproc(Cr1,[8 8],DWT);
- % Quantize
- Y2 = blkproc(Y2,[8 8],QUANTIZE);
- Cb2 = blkproc(Cb2,[8 8],QUANTIZE);
- Cr2 = blkproc(Cr2,[8 8],QUANTIZE);
- % Dequantize
- Y2 = blkproc(Y2,[8 8],DEQUANTIZE);
- Cb2 = blkproc(Cb2,[8 8],DEQUANTIZE);
- Cr2 = blkproc(Cr2,[8 8],DEQUANTIZE);
- % IDCT Lines under are PROBLEM <------------------------
- %Y2 = blkproc(Y2./255,[8 8],IDWT);
- %Cb2 = blkproc(Cb2./255,[8 8],IDWT);
- %Cr2 = blkproc(Cr2./255,[8 8],IDWT);
- % YCbCr -> RGB
- jpeg_result=ycbcr2rgb(cat(3,Y2,Cb2,Cr2));
- % Save
- imwrite(jpeg_result,'Test_pasi.jpg')
Add Comment
Please, Sign In to add comment