О том как разобраться в хаосе форматов видео и изображений
История пиксельных котиков.Что изменилось за 30 лет?
View Slide
2
6История? Серьезно?
730 лет назад…
8Сколько весит не пожатая картинка?rgb(253, 204, 163);
9И мы используем JPEG до сих пор.Почему?
10YUV (YCbCr, Y’CbCr)
11Subsampling
12Разбиваем на блоки
Обычный базис13
14DCT-преобразование
Quantization15128 -163 7 -27 -3 3 -8 -3103 122 73 -1 -15 -17 06148 20 -24 -44 -13 6 -6 -312 -36 -67 4 13 -5 2 -4-41 -5 -1 -21 6 0 53-40 -3 5 -2 5 7 -4 -1-35 11 10 16 -1 -2 -2 -1-7 -4 10 15 1 0 -5 -38 8 8 9 13 19 28 438 9 10 14 17 20 27 388 10 12 16 22 31 46 689 14 16 20 27 37 53 7813 17 22 27 35 47 66 9519 20 31 37 47 62 85 11928 27 46 53 66 85 113 15643 38 68 78 95 119 156 209
16 -19 1 -2 0 0 0013 14 7 0 0 0 0018 2 -1 -2 0 0 001 -2 -3 0 0 0 00-2 0 0 0 0 0 00-1 0 0 0 0 0 000 0 0 0 0 0 000 0 0 0 0 0 0 0Quantization168 8 8 9 13 19 28 438 9 10 14 17 20 27 388 10 12 16 22 31 46 689 14 16 20 27 37 53 7813 17 22 27 35 47 66 9519 20 31 37 47 62 85 11928 27 46 53 66 85 113 15643 38 68 78 95 119 156 209
Итого:17Меняем Сolor SpaceSubsamplingРазбиваем на блокиТрансформируем блокиВносим потери (Quantization)Сжимаем без потерь
Compresson: inter & intra18
19Современный кодек, это набор инструментов
20
21VP* (WebP), AV1 (AVIF) - royalty-freeА у JPEG все патенты уже истекли :)
22
23
24
Codec-agnostic and generic image container format:ISO/IEC 23000–12 standard (a.k.a. HEIF) от MPEG25
26
27
28
29
30
31Иерархия блоков
32Можно вытащить еще больше из spatial locality
33Предсказания по направлениям
34Экзотические предсказания (AV1)1. DC2. Smooth (Vertical + Horizontal)3. Recursive-basedfiltering4. Chroma from luma5. Color Palette6. Intra Block Copy
35Фильтры1. Deblockingfilter2. Constrained directionalenhancementfilter3. Loop restorationfilters
36Transforms1. DCT (I, II)2. Wavelets (JPEG-2000)3. DST4. ADST (flipADST)
37Adaptive transforms,filters & quantization
38Бонус1. Film Grain Synthesis2. Superscaling
39Multithreading & hardware1. Hardware extensions2. Tiles / Slices
40JPEG 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)/PlaneDC/directional (V +H)/TMDC/directional(33)/PlanarDC/directional (56directions)/Paeth/Smooth/CfL/IBCTransform DCT DCT DCT/WHT DCT/DSTDCT/ADST/FlipADST/IDTXСжатие без потерь HuffmanBoolean ArithmeticCoderBoolean ArithmeticCoderCABACMulti-symbolEntropy CodingQuantizationОднапроизвольнаяматрица на весьфайлAdaptive Adaptive Adaptive AdaptiveRoyalty-free
41Так что же лучше?
42Так что же лучше?
43Так что же лучше?
44Так что же лучше?Есть стандарт и есть реализацияУ каждой реализации есть свой набор параметровВажно выбрать правильную метрикуВажно выбрать правильные данные для сравнения
45МетрикиPSNRSSIMMS-SSIMCIEDE2000VMAF
Итого:46Меняем Сolor SpaceSubsamplingРазбиваем на блокиПредсказанияТрансформируем блокиВносим потери (Quantization)Добавляем фильтрыСжимаем без потерь
FFmpegx265, x264,libvpxlibaomSVT-AV1rav1edav1d47Инструменты
48Что дальше?Новые форматы: JPEG-XL, VVC, WebP v2Более мощные encodersML победит всехБольше аппаратной поддержкиJPEG останется доминирующим форматом
Что можно использовать?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
50Спасибо!@polina_gurtovaya@pgurtovaya[email protected]50@evilmartians@evilmartians_ruevilmartians.comhttps://github.com/HellSquirrel/cats-pixels-images