Как зайти в Даркнет?!
25th January, 01:11
4
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
892
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4380
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4308
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2598
0
Сжатие видео: Что такое дискретное косинусное преобразование?
Я реализовал метод преобразования изображения / видео, который называется дискретным косинусным преобразованием. Этот метод используется в 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 в том же изображении (или другом изображении), которые представляют собой хорошее совпадение.
Кроме того, что дает мне эта трансформация? Почему важна информация, хранящаяся в правом верхнем углу преобразованного изображения?
Результатом a DCT является преобразование исходного источника в частотную область. Верхний левый вход хранит частоту "amplitude" the "base", а частота увеличивается как по горизонтальной, так и по вертикальной осям. Результатом DCT обычно является набор амплитуд на более обычных нижних частотах (верхний левый квадрант) и меньшее количество входов на более высоких частотах. Как уже упоминал лассевк, обычно эти более высокие частоты просто обнуляются, поскольку они обычно составляют очень незначительные части источника. Однако это приводит к потере информации. Для завершения сжатия обычно используется сжатие без потерь по источнику DCTd. Именно здесь происходит сжатие, поскольку все эти ряды нулей упаковываются почти до нуля.
Одно из возможных преимуществ использования DCT для поиска похожих областей заключается в том, что вы можете выполнить первый проход по низкочастотным значениям (верхний левый угол). Это уменьшает количество значений, которые необходимо сопоставить. Если вы обнаружите совпадения значений низких частот, вы можете перейти к сравнению более высоких частот.
Надеюсь, это поможет
Я узнал все, что знаю о DCT, из книги по сжатию данных . В дополнение к тому, что он является отличным введением в область сжатия данных, он имеет главу ближе к концу о сжатии изображений с потерями, которая вводит JPEG и DCT.
Концепции, лежащие в основе такого рода преобразований, легче увидеть, если сначала взглянуть на одномерный случай. На изображении здесь изображена квадратная волна вместе с несколькими первыми членами бесконечного ряда. Рассматривая его, заметим, что если функции для членов сложить вместе, то они начинают приближаться к форме прямоугольной волны. Чем больше терминов вы сложите, тем лучше будет аппроксимация. Но, чтобы получить от аппроксимации точный сигнал, вы должны суммировать бесконечное число членов. Причина этого заключается в том, что квадратная волна является разрывной. Если вы думаете о прямоугольной волне как о функции времени, то она идет от -1 до 1 в нулевое время. Чтобы представить такую вещь, требуется бесконечный ряд. Взгляните еще раз на сюжет сериала термины. Первый-красный, второй-желтый. Последовательные члены имеют более "up and down" переходов. Это связано с возрастающей частотой каждого термина. Если рассматривать квадратную волну как функцию времени, а каждый член ряда как функцию частоты, то существуют два эквивалентных представления: функция времени и функция частоты (1/time).
В реальном мире не существует прямоугольных волн. В нулевое время ничего не происходит. Звуковые сигналы, например, занимают диапазон от 20 Гц до 20 кГц, где Гц составляет 1/time. такие вещи можно представить конечными рядами'.
Для образов математика одна и та же, но две вещи разные. Во-первых, она двумерна. Во-вторых, понятие времени не имеет никакого смысла. В смысле 1D квадратная волна-это просто функция, которая дает некоторое численное значение для аргумента, который мы назвали временем. (Статическое) изображение-это функция, которая дает числовое значение для каждой пары строк, столбцов и индексов. Другими словами, изображение является функцией пространства 2D, которое является прямоугольной областью. Подобную функцию можно представить в терминах ее пространственной частоты. Чтобы понять, что такое пространственная частота, рассмотрим 8-битное изображение серого уровня и пару соседних пикселей. Самый резкий переход, который может произойти в изображении, происходит от 0 (скажем, черного) до 255 (скажем, белого) на расстоянии 1 пикселя. Это непосредственно соответствует самому высокочастотному (последнему) члену представления ряда.
Двумерное преобразование Фурье (или Косинус) изображения приводит к массиву значений того же размера, что и изображение, представляющему ту же информацию не как функцию пространства, а как функцию 1/space. информация упорядочена от самой низкой к самой высокой частоте по диагонали от исходной самой высокой строки и индексации столбца. Вот вам пример .
Для сжатия изображения можно преобразовать изображение, отбросить некоторое количество высокочастотных членов и обратно преобразовать оставшиеся обратно в изображение, которое имеет меньшую детализацию, чем оригинал. Хотя он преобразуется обратно в изображение того же размера (с удаленными членами, замененными нулем), в частотной области он занимает меньше места.
Другой способ взглянуть на это-уменьшить изображение до меньшего размера. Если, например, вы попытаетесь уменьшить размер изображения, выбросив три из каждых четырех пикселей в строке, и три из каждых четырех строк, у вас будет массив 1/4 размера, но изображение будет выглядеть ужасно. В большинстве случаев это достигается с помощью интерполятора 2D, который создает новые пиксели путем усреднения прямоугольных групп пикселей большего изображения. При этом интерполяция имеет эффект, аналогичный выбрасыванию членов ряда в частотной области, только она гораздо быстрее вычисляется.
Чтобы сделать больше вещей, я собираюсь сослаться на преобразование Фурье в качестве примера. Любое хорошее обсуждение этой темы проиллюстрирует, как связаны преобразование Фурье и Косинус. Преобразование Фурье изображения нельзя рассматривать непосредственно как таковое, потому что оно состоит из комплексных чисел. Он уже разделен на два вида информации, реальную и воображаемую части чисел. Как правило, вы увидите изображения или сюжеты из них. Но более значимо (как правило) разделить комплексные числа на их величину и фазовый угол. Это просто взятие комплексного числа на комплексной плоскости и переключение на полярные координаты.
Для звукового сигнала подумайте о комбинированных функциях sin и cosine, которые принимают в своих аргументах аттиционную величину, чтобы сдвинуть функцию назад и вперед (как часть представления сигнала). Для изображения фазовая информация описывает, как каждый член ряда смещается относительно других членов в частотном пространстве. В изображениях края (надеюсь) настолько различны, что они хорошо характеризуются самыми низкими частотными терминами в частотной области. Это происходит не потому, что они являются резкими переходами, а потому, что они имеют, например, много черной области, прилегающей к большой светлой области. Рассмотрим одномерный срез ребра. Серый уровень равен нулю, затем переходит вверх и остается там. Визуализируйте синусоидальную волну, которая будет первым членом приближения, когда она пересекает среднюю точку перехода сигнала в точке sin (0). Фазовый угол этого термина соответствует смещению в пространстве изображения. Большая иллюстрация этого доступна здесь . Если вы пытаетесь найти фигуры и можете сделать эталонную фигуру, это один из способов распознать их.
Я бы порекомендовал взять копию цифрового сжатия видео - это действительно хороший обзор алгоритмов сжатия изображений и видео.
Если я правильно помню, эта матрица позволяет сохранять данные в файл со сжатием.
Если вы прочтете дальше, то обнаружите зигзагообразную структуру данных для чтения из этой окончательной матрицы. Наиболее важные данные находятся в верхнем левом углу, а наименее важные-в нижнем правом углу. Таким образом, если вы прекратите писать в какой-то момент и просто рассмотрите rest как 0, даже если это не так, вы получите аппроксимацию изображения с потерями.
Количество значений, которые вы выбрасываете, увеличивает сжатие за счет точности изображения.
Но я уверен, что кто-то другой может дать вам лучшее объяснение.
Ответ Энтони Крэмпа показался мне вполне убедительным. Как он упоминает, DCT преобразует данные в частотную область. DCT широко используется при сжатии видео, поскольку зрительная система человека должна быть менее чувствительна к высокочастотным изменениям, поэтому обнуление более высоких значений частоты приводит к уменьшению размера файла, что практически не влияет на восприятие человеком качества видео.
С точки зрения использования DCT для сравнения изображений, я думаю, что единственное реальное преимущество заключается в том, что вы отсекаете более высокочастотные данные и поэтому имеете меньший набор данных для search/match. что-то вроде вейвлетов Харра может дать лучшие результаты сопоставления изображений.