11.07.2015

Вейвлеты

Когда-то, наверное, в 2003 году, не помню уж откуда и почему, нас на кафедре завлекла тема вейвлетов. Нас - это на самом деле меня и Артема. Есть подозрение, что это Артем ее где-то и нарыл. Он хорошо знает математику и любит ее и всякие новшества. В отличие от меня, консерватора.

Вейвлеты, если не погружаться в математику, которую я совсем забыл, да, в общем-то, хорошо и не знал никогда - это некий вариант преобразования в рамках гармонического анализа. Все изучали в курсе математики преобразование Фурье. Вейвлет-преобразование чем-то похоже, только, в отличие от Фурье, имеют четкую привязку ко времени.

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

В частности, я написал программку, которая сжимала изображение не хуже, чем JPEG. На самом деле при сильной компрессии она давала лучшее качество изображения, чем JPEG. При малой компрессии она чуть-чуть проигрывала JPEG в детализации. Для сжатия без потерь использовался алгоритм арифметического сжатия. Первый вариант такого алгоритма в рамках курсового проекта сделал под моим руководством Александр Шендриков. Я же использовал несколько переработанную версию этой реализации.

Естественно, эта разработка не представляла какого-то практического интереса, в силу наличие известного и широко распространенного стандарта JPEG. Поэтому я потихоньку потерял к ней интерес, да и времени не оставалось ею заниматься.

Правда, возникла идея использовать вейвлет-преобразование для сжатия видео. Но сам я ею занимать не стал, а несколько раз выдавал в качестве курсовой работы студентам. В конце концов эти попытки оказались неудачными. Последний студент, выполнявший эту работу, пришел к выводу, что предложенный мною метод сжатия оставляет на текущем кадре следы от предыдущих. После чего все эта работа оказалась заброшенной.

Но вот, после увольнения из университета, у меня неожиданно появилось немного свободного времени, так как не нужно совмещать несколько должностей. И я решил провести ревизию всех этих наработок. Естественно, не просто так, а потому что меня посетила идея, как можно обойти обнаруженный студентами недостаток.

В результате выяснилось, что, похоже, вывод студента был несколько поспешен. Заметные артефакты от предыдущих кадров остаются только при очень сильной степени сжатия. При сжатии видеопотока до 30 раз эти артефакты отсутствуют, и возможно, при грамотном выборе коэффициента сжатия по ходу видео, возможно, они не заметны и при сжатиях до 40 раз.

Такими коэффициентами сжатия, сейчас, конечно, никого не удивишь, и в общем-то, они наверное, соответствуют коэффициентам сжатия MPEG-2, возможно, при несколько лучшем качестве изображения. Добиться большего сжатия, скорее всего, невозможно без предсказания движения между кадрами. Но это уже совсем другая история.

Сейчас, даже без какой либо оптимизации, на тестовой программе возможно снимать 1 кадр/с с экрана разрешением 1280х1024 при 40-50% загрузке одного ядра.

Комментариев нет:

Отправить комментарий