Сжатие видео: что такое дискретное косинусное преобразование?

Я реализовал технологию преобразования изображения/видео, называемую дискретным косинусным преобразованием. Этот метод используется в кодировании MPEG-видео. Я основывал свой алгоритм на идеях, представленных по следующему URL-адресу:

http://vsr.informatik.tu-chemnitz.de/~jan/MPEG/HTML/mpeg_tech.html

Теперь я могу преобразовать раздел 8x8 черно-белого изображения, например:

0140  0124  0124  0132  0130  0139  0102  0088  
0140  0123  0126  0132  0134  0134  0088  0117  
0143  0126  0126  0133  0134  0138  0081  0082  
0148  0126  0128  0136  0137  0134  0079  0130  
0147  0128  0126  0137  0138  0145  0132  0144  
0147  0131  0123  0138  0137  0140  0145  0137  
0142  0135  0122  0137  0140  0138  0143  0112  
0140  0138  0125  0137  0140  0140  0148  0143 

В это изображение со всей важной информацией в правом верхнем углу. Преобразованный блок выглядит следующим образом:

1041  0039  -023  0044  0027  0000  0021  -019  
-050  0044  -029  0000  0009  -014  0032  -010  
0000  0000  0000  0000  -018  0010  -017  0000  
0014  -019  0010  0000  0000  0016  -012  0000  
0010  -010  0000  0000  0000  0000  0000  0000  
-016  0021  -014  0010  0000  0000  0000  0000  
0000  0000  0000  0000  0000  0000  0000  0000  
0000  0000  -010  0013  -014  0010  0000  0000  

Теперь, мне нужно знать, как я могу воспользоваться этим преобразованием? Я хотел бы обнаружить другие 8x8 блоков в одном и том же изображении (или другом изображении), которые представляют хорошее совпадение.

Кроме того, что мне дает такое преобразование? Почему важна информация, хранящаяся в правом верхнем углу преобразованного изображения?

Ответы

Ответ 1

Результат DCT - это преобразование исходного источника в частотную область. Верхний левый вход сохраняет "амплитуду", "базовую" частоту и частоту увеличивают как по горизонтальной, так и по вертикальной оси. Результатом DCT обычно является совокупность амплитуд на более обычных низких частотах (верхний левый квадрант) и меньше записей на более высоких частотах. Как упоминал Лассевк, обычно просто обнулять эти более высокие частоты, поскольку они обычно составляют очень незначительные части источника. Однако это приводит к потере информации. Для завершения сжатия обычно используется сжатие без потерь по источнику DCT'd. Здесь происходит сжатие, так как все эти пробеги нулей упаковываются почти до нуля.

Одним из возможных преимуществ использования DCT для поиска похожих регионов является то, что вы можете выполнить совпадение первого прохода по низкочастотным значениям (верхний левый угол). Это уменьшает количество значений, которые необходимо сопоставить. Если вы найдете совпадения низкочастотных значений, вы можете увеличить сравнение более высоких частот.

Надеюсь, что это поможет

Ответ 2

Я узнал все, что знаю о DCT, из Книга сжатия данных. В дополнение к тому, чтобы стать отличным введением в область сжатия данных, у него есть глава ближе к концу о сжатии изображения с потерями, в котором представлены JPEG и DCT.

Ответ 3

Понятия, лежащие в основе этих преобразований, легче увидеть, посмотрев сначала на одномерный случай. Изображение здесь показывает прямоугольную волну вместе с несколькими из первых членов бесконечной серии. Посмотрев на это, обратите внимание, что если функции для членов складываются вместе, они начинают приближаться к форме прямоугольной волны. Чем больше терминов вы добавляете, тем лучше аппроксимация. Но, чтобы перейти от приближения к точному сигналу, вы должны суммировать бесконечное количество терминов. Причиной этого является то, что квадратная волна является разрывной. Если вы думаете о прямоугольной волне как функции времени, она идет от -1 до 1 в нулевое время. Для представления такой вещи требуется бесконечная серия. Посмотрите еще раз на сюжет серии. Первый - красный, второй - желтый. У последовательных терминов больше переходов "вверх и вниз". Это связано с увеличением частоты каждого термина. Приклеивание квадратной волны как функции времени, а каждый член ряда - функция частоты, существуют два эквивалентных представления: функция времени и функция частоты (1/время).

В реальном мире нет прямоугольных волн. Ничего не происходит в нулевое время. Звуковые сигналы, например, занимают диапазон от 20 Гц до 20 кГц, где Гц - 1 раз. Такие вещи могут быть представлены конечными рядами.

Для изображений математика одна и та же, но две вещи разные. Во-первых, он двумерный. Во-вторых, понятие времени не имеет смысла. В смысле 1D квадратная волна - это просто функция, которая дает некоторое числовое значение для аргумента, который, как мы говорили, был временем. Статическое изображение - это функция, которая дает числовое значение для каждой пары строк, индексов столбцов. Другими словами, изображение является функцией двумерного пространства, являющегося прямоугольной областью. Подобную функцию можно представить в терминах ее пространственной частоты. Чтобы понять, что такое пространственная частота, рассмотрите 8-битное изображение уровня серого и пару соседних пикселей. Самый резкий переход, который может произойти в изображении, идет от 0 (например, черного) до 255 (скажем, белого) на расстоянии 1 пиксель. Это напрямую соответствует наивысшей частоте (последнему) члену серийного представления.

Двумерное преобразование Фурье (или Косинуса) изображения приводит к тому, что массив значений того же размера, что и изображение, представляет ту же информацию не как функцию пространства, а функцию 1/пробела. Информация упорядочивается от самой низкой до самой высокой частоты по диагонали от наивысшей строки начала и столбца. Пример здесь.

Для сжатия изображения вы можете преобразовать изображение, отбросить некоторое количество более высоких частотных терминов и обратное преобразовать оставшиеся обратно в изображение, которое имеет меньше деталей, чем оригинал. Хотя он преобразуется обратно к изображению того же размера (при замене замененных слов на ноль), в частотной области он занимает меньше места.

Другой способ взглянуть на это - уменьшить изображение до меньшего размера. Если, например, вы пытаетесь уменьшить размер изображения, выбрасывая три из каждых четырех пикселей подряд, и три из каждых четырех строк, у вас будет массив размером 1/4, но изображение будет выглядеть ужасно. В большинстве случаев это достигается с помощью 2D-интерполятора, который создает новые пиксели путем усреднения прямоугольных групп больших пикселей изображения. При этом интерполяция имеет эффект, аналогичный отбрасыванию ряда терминов в частотной области, только намного быстрее для вычисления.

Чтобы сделать больше, я приведу пример преобразования Фурье. Любое хорошее обсуждение темы покажет, как связаны преобразования Фурье и Косина. Преобразование Фурье изображения нельзя рассматривать непосредственно как таковое, потому что оно выполнено из комплексных чисел. Он уже разделен на два вида информации: Реальные и мнимые части чисел. Как правило, вы увидите изображения или графики. Но более значимо (обычно) отделить комплексные числа от их величины и угла фазы. Это просто принимает комплексное число на комплексной плоскости и переключается на полярные координаты.

Для аудиосигнала подумайте о комбинированных функциях sin и косинуса, принимающих в своих аргументах количество, необходимое для смещения функции вперед и назад (как часть представления сигнала). Для изображения информация о фазе описывает, как каждый член ряда смещается относительно других членов в частотном пространстве. В изображениях края (надеюсь) настолько отличаются, что они хорошо характеризуются наименьшими частотными членами в частотной области. Это происходит не потому, что они являются резкими переходами, а потому, что они имеют, например, много черной области, прилегающей к много более легкой области. Рассмотрим одномерный срез ребра. Уровень серого равен нулю, затем переходит вверх и остается там. Визуализируйте синусоидальную волну, которая будет первым приближением, где она пересекает среднюю точку перехода сигнала при sin (0). Фазовый угол этого члена соответствует смещению в пространстве изображения. Огромная иллюстрация этого доступна здесь. Если вы пытаетесь найти фигуры и можете создать ссылочную форму, это один из способов их распознавания.

Ответ 4

Если я правильно помню, эта матрица позволяет вам сохранять данные в файл со сжатием.

Если вы читаете дальше вниз, вы увидите, что шаблон zig-zag данных считывается из этой окончательной матрицы. Самые важные данные находятся в верхнем левом углу и наименее важны в нижнем правом углу. Таким образом, если вы перестанете писать в какой-то момент и просто считаете остальное как 0, даже если это не так, вы получите потерю приближения изображения.

Количество выбрасываемых значений увеличивает сжатие за счет точности воспроизведения.

Но я уверен, что кто-то еще может дать вам лучшее объяснение.

Ответ 5

Я бы рекомендовал собрать копию Digital Video Compression - это действительно хороший обзор алгоритмов сжатия изображений и видео.

Ответ 6

Ответ Anthony Cramp выглядел хорошо для меня. Как он упоминает, DCT преобразует данные в частотную область. DCT сильно используется при сжатии видео, поскольку человеческая визуальная система должна быть менее чувствительной к высокочастотным изменениям, поэтому обнуление более высоких значений частоты приводит к уменьшению файла, что мало влияет на восприятие человеком качества видео.

С точки зрения использования DCT для сравнения изображений, я полагаю, что единственным реальным преимуществом является то, что вы отрезаете более высокочастотные данные и, следовательно, имеете меньший набор данных для поиска/сопоставления. Что-то вроде вейвлетов Харра может дать лучшие результаты сопоставления изображений.