Try   HackMD

Video Compression Homework2

1

a

其水平的頻率會由左而右逐漸增加,垂直方向的頻率會由上至下逐漸增加,對第 (u,v) 個 basis function 來說,可拆 8x8 個格子,其第(m,n)的值可寫成

14c(u)c(v)cos((2m+1)uπ)16)cos((2n+1)vπ16)

可用dct_basis.py 產生下圖。

$ python dctbasis.py
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

b

DCT 可以把圖片中高頻跟低頻分離出來,因為人對於高頻也就是小範圍高複雜的辨認能力差,反之對於低頻較敏感,所以可以藉由 Quantization 把高頻部分壓縮,來達到犧牲掉肉眼不易分辨的資訊的效果。

2

Question

[[201. 192. 183. 180. 168. 154. 144. 128.]
 [116.  96.  84.  70.  61.  56.  53.  52.]
 [ 53.  42.  39.  37.  39.  39.  39.  38.]
 [ 40.  65.  91.  55.  52. 125. 170. 168.]
 [162. 140. 122.  90.  57.  58.  44.  59.]
 [ 60.  74.  67.  61.  58.  61.  57.  56.]
 [ 63.  63.  75.  61.  66.  53.  53.  53.]
 [ 46.  46.  44.  50.  52.  47.  55.  57.]]

a

$ python dct_a.py

After DCT

[[642.5   50.44  34.22  -8.87 -15.25   6.27   7.48   1.99]
 [164.75  31.96   9.13  10.85  -1.63   7.51   1.19  -1.95]
 [ 57.92  37.42 -41.51  18.26  26.03  -4.   -12.76   5.37]
 [162.38  91.34 -15.61   3.39   6.5   -5.71  -0.63  -4.13]
 [168.75 -14.62  21.4  -10.77 -13.5    7.98   3.31  -4.82]
 [ 75.29 -94.95  -8.81 -10.69 -22.27   4.49   0.2    7.22]
 [-24.8  -13.29 -19.76   9.06   6.    -4.16  -8.99  -4.82]
 [ -7.64 105.56 -12.45  11.6   27.59  -4.08   2.56   0.66]]

ZigZag Scan

[642.5   50.44 164.75  57.92  31.96  34.22  -8.87   9.13  37.42 162.38
 168.75  91.34 -41.51  10.85 -15.25   6.27  -1.63  18.26 -15.61 -14.62
  75.29 -24.8  -94.95  21.4    3.39  26.03   7.51   7.48   1.99   1.19
  -4.     6.5  -10.77  -8.81 -13.29  -7.64 105.56 -19.76 -10.69 -13.5
  -5.71 -12.76  -1.95   5.37  -0.63   7.98 -22.27   9.06 -12.45  11.6
   6.     4.49   3.31  -4.13  -4.82   0.2   -4.16  27.59  -4.08  -8.99
   7.22  -4.82   2.56   0.66]

n = 3

[642.5   50.44 164.75]

After Inverse ZigZag Scan

[[642.5   50.44   0.     0.     0.     0.     0.     0.  ]
 [164.75   0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]]

After IDCT

[[117.62 116.29 113.83 110.62 107.14 103.92 101.46 100.13]
 [113.27 111.94 109.48 106.27 102.79  99.57  97.11  95.78]
 [105.24 103.91 101.45  98.23  94.75  91.54  89.08  87.75]
 [ 94.74  93.41  90.95  87.73  84.25  81.04  78.58  77.25]
 [ 83.38  82.04  79.58  76.37  72.89  69.68  67.22  65.89]
 [ 72.88  71.55  69.09  65.87  62.39  59.18  56.72  55.39]
 [ 64.84  63.51  61.05  57.84  54.36  51.14  48.68  47.35]
 [ 60.49  59.16  56.7   53.49  50.01  46.79  44.33  43.  ]]

MSE = 1629.8346

n = 10

[642.5   50.44 164.75  57.92  31.96  
34.22  -8.87   9.13  37.42 162.38]

After Inverse ZigZag Scan

[[642.5   50.44  34.22  -8.87   0.     0.     0.     0.  ]
 [164.75  31.96   9.13   0.     0.     0.     0.     0.  ]
 [ 57.92  37.42   0.     0.     0.     0.     0.     0.  ]
 [162.38   0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]
 [  0.     0.     0.     0.     0.     0.     0.     0.  ]]

After IDCT

[[173.47 166.8  154.68 140.37 128.72 123.38 123.95 126.25]
 [127.66 122.11 111.98 100.11  90.9   87.63  89.67  92.72]
 [ 79.46  75.66  68.59  60.44  54.88  54.65  58.79  62.9 ]
 [ 67.08  64.9   60.66  55.82  53.36  55.55  61.24  66.09]
 [ 83.73  82.5   79.8   76.56  75.32  78.15  84.03  88.86]
 [ 92.36  91.25  88.57  85.    82.91  84.5   89.15  93.21]
 [ 73.88  72.37  68.82  63.79  59.77  59.24  62.03  65.01]
 [ 49.09  47.19  42.82  36.59  31.05  28.94  30.41  32.63]]

MSE = 1106.754

b

$ python dct_b.py

n = 5

After Quantization

[[128.  10.   7.  -2.  -3.   1.   1.   0.]
 [ 33.   6.   2.   2.  -0.   2.   0.  -0.]
 [ 12.   7.  -8.   4.   5.  -1.  -3.   1.]
 [ 32.  18.  -3.   1.   1.  -1.  -0.  -1.]
 [ 34.  -3.   4.  -2.  -3.   2.   1.  -1.]
 [ 15. -19.  -2.  -2.  -4.   1.   0.   1.]
 [ -5.  -3.  -4.   2.   1.  -1.  -2.  -1.]
 [ -2.  21.  -2.   2.   6.  -1.   1.   0.]]

After Inverse Quantization

[[640.  50.  35. -10. -15.   5.   5.   0.]
 [165.  30.  10.  10.  -0.  10.   0.  -0.]
 [ 60.  35. -40.  20.  25.  -5. -15.   5.]
 [160.  90. -15.   5.   5.  -5.  -0.  -5.]
 [170. -15.  20. -10. -15.  10.   5.  -5.]
 [ 75. -95. -10. -10. -20.   5.   0.   5.]
 [-25. -15. -20.  10.   5.  -5. -10.  -5.]
 [-10. 105. -10.  10.  30.  -5.   5.   0.]]

After IDCT

[[199.97 190.94 180.01 179.95 167.19 154.63 146.53 128.81]
 [115.79  97.18  83.85  69.48  61.38  53.52  54.98  52.66]
 [ 52.22  41.95  37.44  37.16  38.99  35.95  37.5   40.29]
 [ 39.9   64.84  91.72  58.    52.33 124.58 169.57 166.06]
 [161.45 138.44 122.8   88.76  54.17  57.07  41.48  59.1 ]
 [ 57.82  75.57  65.05  59.8   57.45  61.41  56.99  54.13]
 [ 62.77  64.08  72.38  61.32  64.82  52.28  49.88  53.91]
 [ 45.04  49.02  43.87  49.62  52.7   48.62  55.87  56.95]]

MSE = 2.1344829

n = 20

After Quantization

[[32.  3.  2. -0. -1.  0.  0.  0.]
 [ 8.  2.  0.  1. -0.  0.  0. -0.]
 [ 3.  2. -2.  1.  1. -0. -1.  0.]
 [ 8.  5. -1.  0.  0. -0. -0. -0.]
 [ 8. -1.  1. -1. -1.  0.  0. -0.]
 [ 4. -5. -0. -1. -1.  0.  0.  0.]
 [-1. -1. -1.  0.  0. -0. -0. -0.]
 [-0.  5. -1.  1.  1. -0.  0.  0.]]

AFter Inverse Quantization

[[ 640.   60.   40.   -0.  -20.    0.    0.    0.]
 [ 160.   40.    0.   20.   -0.    0.    0.   -0.]
 [  60.   40.  -40.   20.   20.   -0.  -20.    0.]
 [ 160.  100.  -20.    0.    0.   -0.   -0.   -0.]
 [ 160.  -20.   20.  -20.  -20.    0.    0.   -0.]
 [  80. -100.   -0.  -20.  -20.    0.    0.    0.]
 [ -20.  -20.  -20.    0.    0.   -0.   -0.   -0.]
 [  -0.  100.  -20.   20.   20.   -0.    0.    0.]]

After IDCT

[[196.31 201.76 184.36 176.26 166.87 152.59 143.57 118.77]
 [126.75 101.65  72.6   68.21  66.94  54.88  45.27  35.34]
 [ 57.15  42.79  36.97  36.65  44.04  48.91  41.36  39.37]
 [ 37.51  70.15  84.78  47.28  51.67 116.81 159.43 177.31]
 [158.74 140.37 122.46  84.52  62.2   59.    45.57  47.07]
 [ 65.89  72.66  75.66  59.88  51.65  57.43  56.42  55.94]
 [ 70.51  72.58  66.91  65.37  61.12  55.81  58.09  55.18]
 [ 42.62  50.23  41.75  46.12  46.68  45.78  61.39  60.07]]

MSE = 34.86187