Rarez

DWT_1

Jan 7th, 2016
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.32 KB | None | 0 0
  1. [IMG,map] = imread('pasi.jpg');
  2.  
  3. T = [16 11 10 16 24 40 51 61;
  4.  12 12 14 19 26 58 60 55;
  5.  14 13 16 24 40 57 69 56;
  6.  14 17 22 29 51 87 80 62;
  7.  18 22 37 56 68 109 103 77;
  8.  24 35 55 64 81 104 113 92;
  9.  49 64 78 87 103 121 120 101;
  10.  72 92 95 98 112 100 103 99];
  11. % RGB -> YCbCr
  12. IMG2 = rgb2ycbcr(IMG);
  13. [W,S,N] = size(IMG2);
  14.  
  15. Y1 = IMG2(1:1:W,1:1:S,1);
  16. Cb1 = IMG2(1:1:W,1:1:S,2);
  17. Cr1 = IMG2(1:1:W,1:1:S,3);
  18. %QF
  19. QF=20;
  20. if QF<50
  21.  qscale=floor(50/QF);
  22. else
  23.  qscale=2-(QF/50);
  24. end
  25. QX=round(T*qscale);
  26.  
  27. QUANTIZE = @(block_struct) round(block_struct./QX);
  28. DEQUANTIZE = @(block_struct) round(block_struct.*QX);
  29. % DWT IDWT
  30. DWT = @(block) dwt2(block,'haar');
  31. IDWT = @(block) waverec2(block,'haar'); %TO juz nie dziala dlatego
  32. % DWT
  33. Y2 = blkproc(Y1,[8 8],DWT);
  34. Cb2 = blkproc(Cb1,[8 8],DWT);
  35. Cr2 = blkproc(Cr1,[8 8],DWT);
  36. % Quantize
  37. Y2 = blkproc(Y2,[8 8],QUANTIZE);
  38. Cb2 = blkproc(Cb2,[8 8],QUANTIZE);
  39. Cr2 = blkproc(Cr2,[8 8],QUANTIZE);
  40. % Dequantize
  41. Y2 = blkproc(Y2,[8 8],DEQUANTIZE);
  42. Cb2 = blkproc(Cb2,[8 8],DEQUANTIZE);
  43. Cr2 = blkproc(Cr2,[8 8],DEQUANTIZE);
  44. % IDCT Lines under are PROBLEM <------------------------
  45. %Y2 = blkproc(Y2./255,[8 8],IDWT);
  46. %Cb2 = blkproc(Cb2./255,[8 8],IDWT);
  47. %Cr2 = blkproc(Cr2./255,[8 8],IDWT);
  48. % YCbCr -> RGB
  49. jpeg_result=ycbcr2rgb(cat(3,Y2,Cb2,Cr2));
  50. % Save
  51. imwrite(jpeg_result,'Test_pasi.jpg')
Add Comment
Please, Sign In to add comment