$30 off During Our Annual Pro Sale. View Details »

История пиксельных котиков. Что изменилось за 30 лет?

История пиксельных котиков. Что изменилось за 30 лет?

О том как разобраться в хаосе форматов видео и изображений

Polina Gurtovaya

March 20, 2021
Tweet

More Decks by Polina Gurtovaya

Other Decks in Programming

Transcript

  1. История пиксельных котиков.


    Что изменилось за 30 лет?

    View Slide

  2. 2

    View Slide

  3. View Slide

  4. View Slide

  5. История пиксельных котиков.


    Что изменилось за 30 лет?

    View Slide

  6. 6
    История? Серьезно?

    View Slide

  7. 7
    30 лет назад…

    View Slide

  8. 8
    Сколько весит не пожатая картинка?
    rgb(253, 204, 163);


    View Slide

  9. 9
    И мы используем JPEG до сих пор.


    Почему?

    View Slide

  10. 10
    YUV (YCbCr, Y’CbCr)

    View Slide

  11. 11
    Subsampling

    View Slide

  12. 12
    Разбиваем на блоки

    View Slide

  13. Обычный базис
    13

    View Slide

  14. 14
    DCT-преобразование

    View Slide

  15. Quantization
    15
    128 -163 7 -27 -3 3 -8 -
    3

    103 122 73 -1 -15 -17 0
    6

    148 20 -24 -44 -13 6 -6 -
    3

    12 -36 -67 4 13 -5 2 -
    4

    -41 -5 -1 -21 6 0 5
    3

    -40 -3 5 -2 5 7 -4 -
    1

    -35 11 10 16 -1 -2 -2 -
    1

    -7 -4 10 15 1 0 -5 -
    3

    8 8 8 9 13 19 28 4
    3

    8 9 10 14 17 20 27 3
    8

    8 10 12 16 22 31 46 6
    8

    9 14 16 20 27 37 53 7
    8

    13 17 22 27 35 47 66 9
    5

    19 20 31 37 47 62 85 11
    9

    28 27 46 53 66 85 113 15
    6

    43 38 68 78 95 119 156 20
    9

    View Slide

  16. 16 -19 1 -2 0 0 0
    0

    13 14 7 0 0 0 0
    0

    18 2 -1 -2 0 0 0
    0

    1 -2 -3 0 0 0 0
    0

    -2 0 0 0 0 0 0
    0

    -1 0 0 0 0 0 0
    0

    0 0 0 0 0 0 0
    0

    0 0 0 0 0 0 0 0
    Quantization
    16
    8 8 8 9 13 19 28 4
    3

    8 9 10 14 17 20 27 3
    8

    8 10 12 16 22 31 46 6
    8

    9 14 16 20 27 37 53 7
    8

    13 17 22 27 35 47 66 9
    5

    19 20 31 37 47 62 85 11
    9

    28 27 46 53 66 85 113 15
    6

    43 38 68 78 95 119 156 20
    9

    View Slide

  17. Итого:
    17
    Меняем Сolor Space


    Subsampling


    Разбиваем на блоки


    Трансформируем блоки


    Вносим потери (Quantization)


    Сжимаем без потерь

    View Slide

  18. Compresson: inter & intra
    18

    View Slide

  19. 19
    Современный кодек, это набор инструментов

    View Slide

  20. 20

    View Slide

  21. 21
    VP* (WebP), AV1 (AVIF) - royalty-free


    А у JPEG все патенты уже истекли :)

    View Slide

  22. 22

    View Slide

  23. 23

    View Slide

  24. 24

    View Slide

  25. Codec-agnostic and generic image container format:
    ISO/IEC 23000–12 standard (a.k.a. HEIF) от MPEG
    25

    View Slide

  26. 26

    View Slide

  27. 27

    View Slide

  28. 28

    View Slide

  29. 29

    View Slide

  30. 30

    View Slide

  31. 31
    Иерархия блоков

    View Slide

  32. 32
    Можно вытащить еще больше из spatial locality

    View Slide

  33. 33
    Предсказания по направлениям

    View Slide

  34. 34
    Экзотические предсказания (AV1)
    1. DC


    2. Smooth (Vertical + Horizontal)


    3. Recursive-based
    fi
    ltering


    4. Chroma from luma


    5. Color Palette


    6. Intra Block Copy

    View Slide

  35. 35
    Фильтры
    1. Deblocking
    fi
    lter


    2. Constrained directional
    enhancement
    fi
    lter


    3. Loop restoration
    fi
    lters

    View Slide

  36. 36
    Transforms
    1. DCT (I, II)


    2. Wavelets (JPEG-2000)


    3. DST


    4. ADST (
    fl
    ipADST)

    View Slide

  37. 37
    Adaptive transforms,
    fi
    lters & quantization


    View Slide

  38. 38
    Бонус
    1. Film Grain Synthesis


    2. Superscaling

    View Slide

  39. 39
    Multithreading & hardware
    1. Hardware extensions


    2. Tiles / Slices

    View Slide

  40. 40
    JPEG H.264 VP8(WebP) H.265 AV1 (AVIF)
    Блоки
    Фиксированные


    8 x 8
    Дерево


    От 16 x 16 до 4 x 4
    Дерево


    От 16 x 16 до 4 x 4
    Дерево


    От 64 x 64


    до 4 x 4
    Дерево


    От 128 x 128


    До 4 x 4
    Фильтры - Deblocking Deblocking Deblocking + … Deblocking + CDEF


    + еще 2


    Предсказания -
    DC/
    directional(V+H)/
    Plane
    DC/directional (V +
    H)/TM
    DC/directional
    (33)/Planar
    DC/directional (56
    directions)/Paeth/
    Smooth/CfL/IBC
    Transform DCT DCT DCT/WHT DCT/DST
    DCT/ADST/
    FlipADST/IDTX
    Сжатие без потерь Hu
    ff
    man
    Boolean Arithmetic
    Coder
    Boolean Arithmetic
    Coder
    CABAC
    Multi-symbol
    Entropy Coding


    Quantization
    Одна
    произвольная
    матрица на весь
    файл
    Adaptive Adaptive Adaptive Adaptive
    Royalty-free

    View Slide

  41. 41
    Так что же лучше?

    View Slide

  42. 42
    Так что же лучше?

    View Slide

  43. 43
    Так что же лучше?

    View Slide

  44. 44
    Так что же лучше?
    Есть стандарт и есть реализация


    У каждой реализации есть свой набор параметров


    Важно выбрать правильную метрику


    Важно выбрать правильные данные для сравнения

    View Slide

  45. 45
    Метрики
    PSNR


    SSIM


    MS-SSIM


    CIEDE2000


    VMAF

    View Slide

  46. Итого:
    46
    Меняем Сolor Space


    Subsampling


    Разбиваем на блоки


    Предсказания


    Трансформируем блоки


    Вносим потери (Quantization)


    Добавляем фильтры


    Сжимаем без потерь

    View Slide

  47. FFmpeg


    x265, x264,


    libvpx


    libaom


    SVT-AV1


    rav1e


    dav1d
    47
    Инструменты

    View Slide

  48. 48
    Что дальше?
    Новые форматы: JPEG-XL, VVC, WebP v2


    Более мощные encoders


    ML победит всех


    Больше аппаратной поддержки


    JPEG останется доминирующим форматом

    View Slide

  49. Что можно использовать?
    H.264 (FF + Chromium + Safari)


    VP9 (FF + Chromium)


    H.265 (Safari)


    AV1 (FF + Chromium)


    JPEG (FF + Chromium + Safari)


    WebP (FF + Chromium + Safari)


    AVIF (FF* + Chromium)
    49

    View Slide

  50. 50
    Спасибо!
    @polina_gurtovaya
    @pgurtovaya
    [email protected]
    50
    @evilmartians
    @evilmartians_ru
    evilmartians.com
    https:/
    /github.com/HellSquirrel/cats-pixels-images

    View Slide