Владислав Кабак | Omegicus CIO

новая Nebka!

MODx Local EDItor


Представляю — MODxLEDI (MODx Local EDItor). Программа весит 29 килобайт, позволяет редактировать основные элементы (чанки,
читать далее »

Классная переделка туфлей


Предлагаю такой вариант переделки ваших старых и уже приевшихся туфлей, в вот такие класснецкие туфли.Для
читать далее »

300 не надо, хватит и одного


В прошлом году соцсети по всему миру обошло фото российского пулеметчика, бесстрашно вставшего в одиночку
читать далее »

10 фильмов этого сезона - не пропусти!


«Планетарий» «Planetarium» Дата: 1 декабря 2016 Жанр: фэнтези, триллер, драма Это история двух сестер, обладающих сверхъестественными способностями общения с
читать далее »

В Испании обнаружена потерянная могила Сервантеса

Могила писателя была найдена в центре Мадрида, в склепе монастыря Ордена босых тринитариев. Хотя
читать далее »

Завершен аудит кода TrueCrypt

Сайт Open Crypto Audit Project сообщает о завершении второй стадии аудита кода популярного открытого средства
читать далее »

An Anti-Reverse Engineering Guide


 Table of Contents Breakpoints Int 3 Memory Hardware Timing Attacks RDTSC Win32 Timing APIs Windows Internals ProcessDebugFlags Debug Object Handle Thread Hiding BlockInput OutputDebugString Process Exploitation Open Process Parent Processes Self-Debugging UnhandledExceptionFilter NtQueryObject Anti-Dumping Nanomites Stolen Code
читать далее »

Стратегия выживания


Все мы, так или иначе, осознанно или подсознательно придерживаемся в своих подготовительных действиях какой-то концепции.
читать далее »

Формат исполняемых файлов PortableExecutables (PE)

Формат исполняемых файлов PortableExecutables (PE). ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE) ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE)
читать далее »

Василий Николаевич Кочетков (1785–1892) – «солдат трех императоров»


Он прожил 107 лет, из них более 60 лет провел на действительной военной службе. Выходит,
читать далее »

Историки описали гибель короля Ричарда III


Жизнь и смерть Ричарда III всегда были окутаны тайной. О британском короле XV века писал Шекспир,
читать далее »

Tortilla — весь TCP и DNS трафик из виртуальной машины через TOR

Пошаговое руководство по направлению всего TCP и DNS трафика из виртуальной
читать далее »

Эпическое письмо Билла Гейтса о юзабилити Windows

Вас раздражает юзабилити Windows XP? Это вы ещё не слышали Билла Гейтса. В опубликованной внутренней
читать далее »

Иммунологи объяснили пользу аллергии

У человека и других млекопитающих иммунная система выбирает между двумя методами борьбы с чужеродными веществами,
читать далее »

Кишечные бактерии борются с аллергией

По статистике, случаи пищевой аллергии у детей с 1997 года стали встречаться примерно на 50%
читать далее »

Overclock мозга или Внутренняя виртуализация сознания


Я попробую рассказать еще об одной возможности использовать свой мозг чуточку эффективнее. Одна из слабо
читать далее »

Под Снежным командир с позывным «Черный» со своими бойцами захватили танк и почти два десятка автоматов

"Под Снежным командир с позывным «Черный» со своими бойцами захватили танк и почти два десятка
читать далее »

Факты о Российской империи, которых вы не знали

1. До революции Россия (Российская империя) была одной из самых непьющих стран в Европе. Россия
читать далее »

Самые невероятные факты

В мире существует столько алмазов, что каждому жителю планеты досталось бы по полной чашке. Содержать человека
читать далее »

Интересные факты об Одри Хёпберн


4 мая 1929 года родилась британская и американская актриса, фотомодель и ярчайшая звезда кинематографа двадцатого
читать далее »

14 интересных фактов о снах

1. Все люди видят сны. Даже если вам кажется, что вы их не видите. Человек
читать далее »

Что с вами произойдёт, если вы решите не разговаривать очень долгое время

Представьте, что вы проснулись утром и решили, что прекратите говорить лет на 20 — с
читать далее »

Факты о евреях — о которых не принято говорить

Талмуд – есть действительная сущность еврейского вероучения. Sanhedrin 59a: “Гой, сунувший нос в Закон (Талмуд) виновен
читать далее »

Искусство светской беседы

Если вы современный человек, то вам понятно основное положение: идеальный разговор — это обмен мыслями,
читать далее »

98 самых интересных фактов о человеческом теле

Мозг Мозг — это наиболее сложный и наименее изученный человеческий орган. Мы многого о нем не
читать далее »

Бой у высоты 776


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

Мнение одного из сотрудников Blackwater о боеспособности разных стран

1. Африканские племена.С ними воевать даже не интересно. Стреляют беспорядочно, о прицельной стрельбе не знают.Часто
читать далее »

Факты о фильмах Брат и Брат-2


1. Идея съёмок продолжения культового отечественного фильма «Брат» пришла после того, как исполнителю главной роли
читать далее »

25 фактов, которые вам лучше не знать


1. Римляне использовали измельченный мозг мышей в качестве зубной пасты. 2. Когда малыши эскимосов болеют простудой,
читать далее »

10 потрясающих открытий в физике

Изучать физику значит изучать Вселенную. Точнее, как работает Вселенная. Вне всяких сомнений, физика — самая
читать далее »

Леонид Рогозов. Сам себе хирург


Судно «Обь» с шестой советской антарктической экспедицией на борту вышло в плавание 5 ноября 1960
читать далее »

Воспитание воинов на Руси


На Руси все мужчины считались воинами, эта традиция шла ещё со времён эпохи так называемой
читать далее »

Правление Ивана Грозного


  – введён суд присяжных; – бесплатное начальное образование (церковные школы); – медицинский карантин на границах; – впервые появилась
читать далее »

Процессор Baikal - российский ответ Intel и AMD


В ответ на санкции Америки, Минпромторг России решил найти замену микрочипам Intel и AMD и
читать далее »

Ситуация с Андреем Кураевым

Вот, собственно, цитата из его дневника: Прошло полтора месяца со времени объявления о моем увольнении из
читать далее »

Почему курсор мыши наклонён на 45°?


Посетитель сайта вопросов-ответов StackExchange задал на первый взгляд глупый вопрос: а почему
читать далее »

Оона Ряйсянен определила GPS-координаты беспилотника по звуку с Youtube


Финский инженер и хакер Оона Ряйсянен (Oona Räisänen), которая увлекается обработкой звука, случайно
читать далее »

IPv6 теория и практика: введение в IPv6

Адреса IPv6 Адрес протокола IPv6 состоит из 128 бит, то есть, он в 4 раза длиннее
читать далее »

Твердотопливные двигатели


Черный (дымный) порох изобрели китайцы в девятом веке. И уже в одиннадцатом веке появляются документальные
читать далее »

Долгая жизнь королёвской «семёрки»: успешные испытания «Союз-2.1в»


У ракеты «Р-7» оказалась удивительно долгая жизнь. Через пятьдесят шесть
читать далее »

Кто, когда и как собирается лететь на Марс


Сейчас так часто говорят про полеты к Марсу, что люди, подчас, путают
читать далее »

Миллиард пикселей для миллиарда звезд


На следующей неделе в космос отправится уникальный телескоп, который сможет «пересчитать» около
читать далее »

Один прогноз, данный 15 лет назад

Вспомнить данный прогноз натолкнул меня пост «15 вещей сегодняшнего дня, которые не
читать далее »

Размещение заказов у китайских поставщиков


Основано на реальных событиях: «Mini-Desktop своими руками» После публикации моей предыдущей
читать далее »

Симулируем чайник в Wind River Simics


Примечание переводчика: представляю вниманию
читать далее »

Стал известен пароль по умолчанию для файлов XLS

Специалисты антивирусной компании Sophos потратили много времени на изучение файлов RTF, XLS и DOC, которые
читать далее »

Американские врачи излечили девочку от рака, заразив её ВИЧ

Семилетняя Эмили Уайтхэд из Нью-Джерси в течение двух лет сражалась с лимфобластным лейкозом. Доктора назначали
читать далее »

Учёные нашли стволовые клетки раковых опухолей

В основе всех исследований лежал метод генетических маркеров, который позволяет пометить определённую группу клеток и
читать далее »

Curiosity нашёл органику на Марсе

Директор лаборатории JPL NASA Чарльз Элачи (Charles Elachi) сегодня упомянул о таинственной находке Curiosity на Марсе. Это
читать далее »

Ахиллесова пята рака

Управление США по надзору за качеством пищевых продуктов включило в список своих приоритетов новый препарат
читать далее »

Физики впервые запутали атомы на разных сторонах улицы

Новый опыт по созданию состояния квантовой сцепленности для необычайно удалённых атомов открывает дорогу к построению крупномасштабных
читать далее »

Учёные нашли признаки существования фермионов Майораны

Эти странные частицы, являющиеся своими собственными античастицами, были предсказаны в 1937 году, но до сих пор
читать далее »

Биологи выявили у воронов память о друзьях и врагах

Чёрные птахи помнят конкретных сородичей, по меньшей мере, в течение трёх лет. При этом они запоминают
читать далее »

Российские учёные проникли в озеро Восток


После трёх десятилетий бурения учёные из Российской антарктической экспедиции довели скважину до озера Восток, скрытого
читать далее »

Российские биологи вырастили кусты из 30-тысячелетних семян


Сохранённые в вечной мерзлоте на берегах реки Колыма, эти семена некогда были припасены сусликами в своих норах,
читать далее »

Формы титулования в Российской империи

Титулирование — в сословно-феодальном обществе форма обращения к лицам дворянского происхождения, духовным и государственным служащим для
читать далее »

Американцы построят спутник-шпион нового типа


Аппарат должен обеспечивать круглосуточное прямое видеонаблюдение за интересующими военных участками земной поверхности. При этом в нём
читать далее »

Неврологи продемонстрировали обучение в стиле «Матрицы»


До впитывания навыков пилотирования вертолёта за пять секунд ещё очень далеко, но учёные сделали крохотный
читать далее »

Учёные впервые нашли прижизненный чертёж Вавилонской башни


Древнейшее в мире изображение Вавилонской башни, вернее — реального прототипа библейского сооружения, обнаружено на одной из стел
читать далее »

Открыт ремонт нервов при помощи молодой крови

Некоторые эффекты старения в центральной нервной системе животных могут быть обращены вспять при воздействии кровотока молодой
читать далее »

У шимпанзе найден аналог человеческого обмана чувств

Новый опыт показал специфическое пересечение в головах обезьян ощущений разной природы – зрительного и слухового. Самое интересное,
читать далее »

Открыто разрушение Луны солнечными бурями


Сильные бури на Солнце, а точнее, вызванные ими потоки плазмы, работают как пескоструйка, эффективно сдирающая с поверхности
читать далее »

Марсоход нашёл чистую гипсовую жилу

Американский ровер Opportunity наткнулся на почти чистую и высококонцентрированную «вену» из гипса. Некогда она образовалась в скальной
читать далее »

Опыт с побегом подтвердил альтруизм крыс

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

Зонд Dawn приблизился к Весте на минимальное расстояние


Космический посланник снизил свою орбиту до высоты всего в 210 километров. С этой позиции зонд будет изучать
читать далее »

У близнеца Солнца найдена потенциально обитаемая планета


Новый мир земного типа Kepler-22b расположен в «зоне Златовласки» у звезды, почти идентичной Солнцу. Последнее – важное
читать далее »

Быстрый старт ЛИНТЕР (Windows)

2005 г Быстрый старт ЛИНТЕР (Windows) Научно-производственное предприятие РЕЛЭКС, www.relex.ru Введение Что такое ЛИНТЕР Основные характеристики СУБД ЛИНТЕР Типы данных Параметры БД Установка
читать далее »

Реализация языка SQL в СУБД MySQL

Реализация языка SQL в СУБД MySQL Студент нанимается на лето подработать в университете, его спрашивают: - Языком владеешь? -
читать далее »

Найдены следы потерянного гиганта Солнечной системы


Планета размером с Уран присутствовала в Солнечной системе, когда последней было всего 600 миллионов лет от роду.
читать далее »

Тайна пропажи антиматерии

Физики обнаружили новое проявление нарушения CP-инвариантности в процессе распада D-мезонов. Речь идёт о различиях в картинах распада частицы и соответствующей
читать далее »

Инженеры создали проекционное лицо для андроида


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

Разработан новый метод сохранения равновесия роботов


Для построения программы балансировки двуногого механизма авторы новой системы воспользовались, как ни парадоксально, принципами управления,
читать далее »

Манера держаться

В манере поведения достаточно велика роль привычек. Они могут как подчеркивать достоинства человека, так и
читать далее »

Подарки

Довольно сложным делом, к которому следует подходить весьма ответственно, является выбор подарка. Прежде всего при
читать далее »

Улица

В ОБЩЕСТВЕННЫХ МЕСТАХ Главное правило поведения в общественных местах - не забывать, что если бы каждый
читать далее »

Телефонный разговор

Очень важна культура разговора по телефону, особенно служебному. Он должен быть коротким: нужно считаться с
читать далее »

Приветствия

Если в комнате находятся несколько человек, здороваются сначала с хозяйкой дома, затем - с другими
читать далее »

Внешний вид и привычки

Не забывай заботиться о своем внешнем виде, опрятности и чистоте. Не пренебрегай деталями своего туалета.
читать далее »

В общественных местах и на улице

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

На визитах и в гостях

Если наносишь визит, не входи в гостиную или в кабинет в пальто. Не входи без стука. Не
читать далее »

За столом

Не опаздывай, будучи приглашен на обед, завтрак, ужин, чай. Не садись за стол, пока не сядут
читать далее »

Правила ведения беседы

Специалисты по правилам ведения речи обращают особое внимание на следование ряду обязательных правил для участников
читать далее »

Проведение приема

Проведение каждого приема требует от его хозяев максимальной сосредоточенности, проработки со многими заинтересованными лицами огромного
читать далее »

Визитные карточки и их применение

Визитные карточки широко применяются в дипломатической практике и деловом общении. Как бы заочно "представляя" своего
читать далее »

Этикет деловой переписки

Родиной этикета составления делового письма, прочно вошедшего в современное международное общение, принято считать Англию. Сложившись
читать далее »

Израильтяне удивили публику квантовой левитацией


Серия новых опытов в яркой и наглядной форме продемонстрировала зрителям удивительные квантовые эффекты. Парящие без видимой поддержки
читать далее »

Британцы мумифицировали таксиста по египетскому рецепту


Те или иные способы бальзамирования тел умерших человечество практиковало и после эпохи древнего Египта. Но авторы
читать далее »

В новый виртуальный экран можно запустить руки

Специалисты компании Microsoft Research создали интерактивную систему обогащённой реальности, в которой пользователь может своими руками напрямую
читать далее »

Ракета «Союз» впервые взлетела из Южной Америки


21 октября в 14:30 по московскому времени с космодрома Куру во Французской Гвиане стартовала ракета-носитель
читать далее »

Ubuntu 11.10 - обновление, впечатление

13-го сего месяца вышла очередная версия ОС Убунту, из выжносистемного - ядро версии 3. Из пользовательского:
читать далее »

Геном чумной палочки рассказал об эволюции страшной болезни


Между 1347 и 1351 годами в Европе бушевала «Чёрная смерть» — чума, унёсшая жизни 30 миллионов человек, которую
читать далее »

Парализованный научился управлять роборукой силой мысли


30-летний Тим Хеммес (Tim Hemmes) из США спустя семь лет после мотоциклетной аварии, из-за которой
читать далее »

Корейцы построили робота-собаку


Южнокорейская компания SimLab продемонстрировала своего первого робота – четвероногую машину SQ1, которая ходит, качается и,
читать далее »

Открыт самый большой в мире вирус

Найденный у берегов Чили Megavirus chilensis обладает самым длинным вирусным геномом из всех ранее секвенированых.
читать далее »

Математическая модель работы автофокуса в глазу человека


Учёные до сих пор точно не знают, как функционирует автофокус в глазу человека
читать далее »

TOP10 ошибок администраторов Server 2003

Автор: (c)Крис Касперски ака мыщъх О, Windows, сын ошибок трудных! народное Легкость установки и управления MS Server'ом создает обманчивую иллюзию,
читать далее »

MSR-регистры на службе хакера

Автор: (c)Крис Касперски ака мыщъх Популярные дебагеры (Soft-Ice, Syser, Olly) используют базовые отладочные возможности, появившиеся еще в 80386
читать далее »

Реклама в сумеречной зоне подсознания

Автор: (c)Крис Касперски ака мыщъх Реклама действует, это факт! Но вот - как именно она действует, не
читать далее »

Восстановление MS Server 2003 после тяжелых ранений

Автор: (c)Крис Касперски ака мыщъх MS Server 2003 - достаточно надежная и неприхотливая система, средняя наработка на
читать далее »

Установка MS Server 2003 - секреты и советы

Автор: (c)Крис Касперски ака мыщъх MS Server 2003 - абсолютный лидер среди рынка SOHO-серверов, используемых в качестве файлового
читать далее »

Обучение сну, обучение во сне

Автор: (c)Крис Касперски ака мыщъх Треть своей жизни человек проводит во сне, что в среднем за жизнь
читать далее »

Профессиональное сжатие видео

Автор: (c)Крис Касперски ака мыщъх Эта публикация открывает цикл статей, посвященных вопросам обработки видеоинформации в домашних условиях и
читать далее »

Азартные игры (под)сознания

Автор: (c)Крис Касперски ака мыщъх Мир, который мы видим (обоняем, слышим, осязаем) не является тем миром, которым
читать далее »

Тайные рычаги подсознания - методы психовизуальной атаки

Автор: (c)Крис Касперски ака мыщъх "На каждого человека можно воздействовать только в рамках системы его верований" Из книги "Психическая атака" Этой статьей
читать далее »

TOP10 ошибок конфигурации Linux/BSD

Автор: (c)Крис Касперски ака мыщъх Воздвигнуть Linux/BSD - не проблема, инсталлятор все сделает за нас, а вот правильно
читать далее »

Дефекты проектирования Intel Core 2 Duo - аналитический обзор с точки зрения безопасности

Автор: (c)Крис Касперски ака мыщъх Процессоры Intel Core2Duo (и не только они одни!) содержат множество ошибок, приводящих
читать далее »

Депривация сна - советы от мыщъх'а

Автор: (c)Крис Касперски ака мыщъх Программисты относятся к тем людям, которым хронически не хватает времени - ударные темпы
читать далее »

Дежавю, нейросети и спам

Автор: (c)Крис Касперски ака мыщъх Что такое дежавю, наверняка знает каждый, а кто не знает, тот может
читать далее »

Прикладная видеология

Автор: (c)Крис Касперски ака мыщъх Широкий ассортимент выбора камер видеонаблюдения превращает свободу выбора в проблему, особенно если ни
читать далее »

Два компьютера - один монитор, два монитора - один компьютер

Два компьютера - один монитор, два монитора - один компьютер Автор: (c)Крис Касперски ака мыщъх Чтобы обустроить
читать далее »

Java под атакой

Java под атакой Автор: (c)Крис Касперски ака мыщъх Долгое время Java считалась абсолютно безопасной, однако лавинообразный рост открывшихся уязвимостей доказал
читать далее »

Как сломать DVD-диск без помощи топора

Как сломать DVD-диск без помощи топора Автор: (c)Крис Касперски ака мыщъх Чего только не придумают медиамагнаты, чтобы отравить
читать далее »

Грабим данные с flash-модулей и CD/DVD

Грабим данные с flash-модулей и CD/DVD Автор: (c)Крис Касперски ака мыщъх Как сграбить содержимое флешек и CD/DVD-носителей (включая удаленные
читать далее »

Blue pill/red pill - the matrix has windows longhorn

Blue pill/red pill - the matrix has windows longhorn Автор: (c)Крис Касперски ака мыщъх Совершенствование stealth-технологий в конечном счете
читать далее »

Призраки ядра или модули-невидимки

Призраки ядра или модули-невидимки Автор: (c)Крис Касперски ака мыщъх Потребность в создании "невидимых" модулей ядра растет с каждым
читать далее »

Взлом телевизоров вблизи и на расстоянии

Взлом телевизоров вблизи и на расстоянии Автор: (c)Крис Касперски ака мыщъх Все мы используем пульты дистанционного управления на
читать далее »

Как восстановить нечитающийся CD?

Как восстановить нечитающийся CD? Автор: (c)Крис Касперски ака мыщъх Bad sector - не волк, в лес не убежит Народная
читать далее »

BIOS Setup - удаленный контроль

BIOS Setup - удаленный контроль Автор: (c)Крис Касперски ака мыщъх Каждый администратор хотя бы раз в жизни сталкивался
читать далее »

Unformat для NTFS

Unformat для NTFS Автор: (c)Крис Касперски ака мыщъх - Я у вас тут винчестер недавно купил. Так
читать далее »

Лазерный диск с нулевым треком как средство защиты от копирования

Лазерный диск с нулевым треком как средство защиты от копирования Автор: (c)Крис Касперски Задумывались ли вы, почему нумерация
читать далее »

Вирусы в мире UNIX

Вирусы в мире UNIX Автор: (c)Крис Касперски ака мыщъх Трудно представить себе более простую штуку, чем компьютерный вирус.
читать далее »

У животных впервые обнаружен круговорот насилия


Орнитологи получили первое свидетельство «цикла насилия» в животном мире. У одного из видов птиц обнаружен «чисто человеческий»
читать далее »

Миллионы галактик помогли подтвердить теорию Эйнштейна

Впечатляющая по трудолюбию проверка теории относительности показала верность расчётов знаменитого физика. Свет, пришедший от далёких
читать далее »

Отсняты детальные тепловые портреты Урана и Нептуна

Новые снимки двух крупных планет демонстрируют, насколько отличны они в ИК-области от того облика, что мы
читать далее »

Испытан новый тип компьютерной памяти

Американские учёные испытали единичную ячейку памяти, основанную на новом принципе и новом материале. В перспективе эта разработка
читать далее »

Астрономы открыли неожиданные перемены в атмосфере Венеры

Международная группа астрономов обнаружила, что средние и верхние слои венерианской атмосферы ведут себя намного динамичнее, чем
читать далее »

Швейцарцы научили роботов летать большой стаей

Европейские учёные добились от небольших беспилотников-роботов согласованного и аккуратного передвижения в небе, почти что крыло к крылу, словно
читать далее »

Израильтяне создали электронный мозжечок крысы

Искусственный мозжечок, обменивающийся сигналами со стволом мозга, успешно восстановил утраченные функции мозга у лабораторного животного.Мозжечок (на
читать далее »

Учёные впервые извлекли кино из мыслей подопытных

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

Физики заподозрили нейтрино в преодолении скорости света

Статьи в рецензируемом журнале ещё нет, но новые данные уже взбудоражили всё научное сообщество. Учёные, занятые
читать далее »

Учёные встроили в дрожжи редактор генома

Биологи внедрили в клетки дрожжей полусинтетические хромосомы. Такой опыт впервые проведён с эукариотами. Причём новый фрагмент кода
читать далее »

Американцы придумали портативный боевой лазер

Исследователи в США разработали оригинальную схему, благодаря которой можно будет получать лазерный луч, достаточный для сжигания
читать далее »

Биологи открыли у воронов умение ждать

Выдержать длительную паузу перед принятием решения в условиях, когда ожидание может быть вознаграждено, — такое до сих
читать далее »

Открыта планета с двумя близкими солнцами

Астрономы сообщили о первой надёжно подтверждённой планете, обращающейся сразу вокруг двух звёзд. Система представляет большой интерес
читать далее »

В окрестностях Земли найдена зарождающаяся звезда

Молодая звезда, которую учёные назвали AP Columbae, светит не из-за ядерных реакций, а за счёт гравитации.
читать далее »

Астрофизики предсказали наличие в Галактике тысяч часовых бомб

С часовыми бомбами авторы новой работы сравнивают специфический тип белых карликов, уже подготовившихся ко взрыву как
читать далее »

Новое зеркало нарушило закон отражения лучей

Учёные из Гарвардского университета заставили свет игнорировать классические законы оптики. Исследователи построили плоское зеркало, отражающее
читать далее »

На Марсе найден странный камень

Учёные заявили, что недавний переезд марсохода на новое место работы оказался идентичен высадке его в удалённой
читать далее »

На Марсе найдена речная дельта

Европейский аппарат Mars Express предоставил учёным одно из самых ярких свидетельств наличия в прошлом Марса жидкой
читать далее »

Черные дыры «рождают» космический ветер

До сих пор общепринятой была точка зрения, исходящая из того, что источниками космических
читать далее »

Юпитерианский зонд сфотографировал Землю и Луну

«Это замечательное зрелище, которое редко удаётся увидеть людям, — заявил учёный Скотт Болтон (Scott Bolton). — Этот
читать далее »

В крови человека найден биомаркер смерти

Повышенное содержание определённой молекулы в сыворотке крови свидетельствует о сравнительно высокой вероятности смерти человека приблизительно в следующий десяток
читать далее »

Создан квантовый чип с архитектурой фон Неймана

Построенное в США устройство, по словам его авторов, является новой парадигмой квантовой обработки информации и ключевым компонентом
читать далее »

Астероидный грунт преподнёс исследователям сюрпризы

Впервые попавшие в руки людей частицы астероида позволили подтвердить гипотезу о происхождении большинства метеоритов на Земле. В то же
читать далее »

Новая камера снимает миллион кадров в секунду

Рекордной скоростью съёмки может похвастаться видеокамера Phantom v1610 от американской компании Vision Research.Правда, разрешение в суперскоростном
читать далее »

Учёные отодвинули дату приручения лошадей

На три с половиной тысячи лет отодвинули в глубь веков процесс одомашнивания диких лошадей исследователи из Саудовской
читать далее »

В Млечном Пути обнаружена планета-алмаз

Астрономы обнаружили самую плотную экзопланету. Объект, обладая массой Юпитера, в поперечнике насчитывает всего лишь 55 тысяч
читать далее »

О, вечный ужас, вечный мрак!

Александр Блок «Балаганчик»
читать далее »

Астрономы открыли десять свободных планет

Эти газовые гиганты блуждают по просторам Галактики без каких-либо родительских звёзд, совершенно самостоятельно. Учёные говорят,
читать далее »

Учёные предсказали столкновение Млечного Пути с будущей галактикой

К такому выводу пришли учёные из Сиднейского университета (University of Sydney), пересчитав данные по гигантскому объекту,
читать далее »

Представлено уникальное изображение центра Галактики

GigaGalaxy Zoom
читать далее »

Представлена интерактивная 360-градусная панорама всего ночного неба

Европейская южная обсерватория выложила в Интернет первое из трёх изображений, полученных в ходе проекта GigaGalaxy Zoom: «картинка»
читать далее »

Впервые найдены две планеты на одной орбите

В системе KOI-730 две из четырёх планет обращаются вокруг своего солнца по одной орбите. Исследователи считают,
читать далее »

Найдена самая компактная планетная система

Семейство планет у звезды Kepler-11 — одно из самых многочисленных среди всех известных, но при этом, будучи
читать далее »

Американцы припугнули мир новым материалом для боеголовок

Американский военно-морской флот обзавёлся новым композитным материалом, который значительно увеличивает поражающую способность боевых зарядов.Военные инженеры
читать далее »

Lockheed Martin продемонстрировала прототип разведчика-семени

Журналистам показали первый летающий прототип разведчика в виде кленового семени. Аппарат оказался отнюдь не таким компактным,
читать далее »

Определён предсказывающий будущее регион мозга

Биологи идентифицировали область мозга, которая способна предсказывать, что произойдёт в ближайшие мгновения. Никакой мистики —
читать далее »

В Австралии обнаружены древнейшие окаменелости клеток

Австралийские и британские учёные нашли на Зелёном континенте окаменелости самых древних организмов, свидетельствующие о жизни на бескислородной
читать далее »

Обнародованы детали миссии следующего марсохода NASA

Учёные определили точку посадки самого тяжёлого марсохода в истории. Большой кратер выставляет на обозрение глубокие слои
читать далее »

Учёные подтвердили внеземную природу частей ДНК в метеоритах

Новое открытие добавляет доказательств тому, что химия внутри астероидов и комет способна производить строительные блоки основных
читать далее »

Динозавров сгубил мощный нефтяной взрыв

Решающую роль в повальном вымирании динозавров могло сыграть быстрое сгорание обширных запасов нефти. К такой необычной версии
читать далее »

Робот заглянул в секретную камеру пирамиды Хеопса

То, что было скрыто от глаз археологов в течение долгих 4500 лет, стало несколько дней назад
читать далее »

Биологи объяснили свободное дыхание первых животных

В период, когда на Земле бурно развивались ранние животные, содержание кислорода в воздухе было низким. Но это
читать далее »

Лингвисты описали эволюцию и отыскали родину языков

Масштабное исследование основных групп языков, проведённое антропологами из Голландии и Новой Зеландии, показало, что развитие человеческой
читать далее »

Самая чёрная планета поставила астрономов в тупик

Учёные определили параметры рекордно-тёмной экзопланеты — газового гиганта TrES-2b. Он оказался чернее угля, а также любой планеты
читать далее »

Учёные обнаружили новый феномен квантового мира

С формулами наперевес физики вывели явление, которое с точки зрения повседневной логики выглядит невозможным. Оказывается, при передаче
читать далее »

Учёный NASA заявил о работе реактора синтеза без синтеза

Произошёл новый поворот в спорном деле вокруг итальянского реактора холодного ядерного синтеза. Эксперт американского космического агентства
читать далее »

Чёрные пирамиды обещают Эмиратам чистую энергию

Американцы предложили ОАЭ построить в песках титанические скульптуры, которые смогут вырабатывать ток для питания сотен домов.
читать далее »

Новый российский энергетический реактор прибыл к месту работы

Пока развитые страны пересматривают свои программы, решающие судьбу атомной энергетики, Россия строит новые АЭС. Так,
читать далее »

Большой пёс носится с грузом без головы

"Механического пса заказывали? $1,5 миллиона на два года давали? Получите, распишитесь. Вот ваш «самый передовой
читать далее »

Летающий лазер впервые сбил жидкостную баллистическую ракету

Успехом завершились испытания американского противоракетного лазера воздушного базирования Airborne Laser, состоявшиеся сегодня в 07:44 по московскому
читать далее »

Предложено самое нетривиальное объяснение тёмной материи

По мнению автора новой гипотезы, всё очень просто: тёмная материя — не что иное, как иллюзия,
читать далее »

В пламени свечи обнаружены алмазы

«Никто не знает, из чего состоит пламя свечи»
читать далее »

Падение «Фалкона» огорчило американских военных

Второй полёт гиперзвукового аппарата, созданного по заказу исследовательского агентства Пентагона DARPA, закончился провалом. Так же как
читать далее »

Физики предсказали нейтроны в форме куба

Два астрофизика из Германии и Испании провели расчёты, которые показали, что при очень высокой плотности упаковки
читать далее »

Учёные впервые внедрили животному искусственный код

Биологи из Кембриджа впервые изменили генетический код червя таким образом, чтобы заставить организм производить белки
читать далее »

Санкт-Петербург признан лучшим круизным направлением Европы и мира


Ведущий сайт о туризме WorldTravelAwards опросил 1.000.000 покупателей путёвок и выдал награду Санкт-Петербургу как лучшему
читать далее »

Москва признана одним из мировых лидеров образования


Во всех московских школах (всего их порядка 600), было проведено международное исследование грамотности 15-летних учащихся
читать далее »

ОПЕК ограничат добычу нефти - решение принято


Страны-члены ОПЕК договорились ограничить квоаты добычи нефти с ноября этого года. В среднем, добыча должна
читать далее »

Задержаны девятеро вербовщиков Джамаат Ансорулло - ФСБ


ФСБ задержала девять вербовщиков из "Джамаат Ансоруллох" - передает Интерфакс со слов главы службы А.Бортникова. Задержанные
читать далее »

В Германии взорвались бомбы


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

Гермиона останется без дома


В столице Великобритании выставили на торги дом Гермионы Грейнджер. Дом присутствует в фильме "Гарри Поттер и
читать далее »

Его убил бумеранг


Сначала эта история казалось довольно ясной и даже банальной: два года назад в Австралии был
читать далее »

Путин изменит выборы в США


Избиратель в США, традиционно довольно прохладно относящийся к событиям, происходящим за пределами Штатов, и мало
читать далее »

Трамп не смотрит CNN


Дональд Трамп, кандидат на пост президента США от Республиканской партии, заявил о своей победе в
читать далее »

Масло с горчицей

- масло сливочное -100г - горчица столовая - 1 ст. л. Масло
читать далее »

Сливочное масло, витаминизированное облепихой

- сливочное масло - 1 кг - сахар - 400г - облепиха
читать далее »

Масло с горчицей

- масло сливочное - 900г - горчица столовая - 100г. В кастрюлю
читать далее »

Масло шпротное

- масло сливочное - 100г - шпроты - 100г. Шпроты или филе
читать далее »

Масло с голландским сыром

- масло сливочное - 100г - сыр голландский -100г. Масло растереть добела,
читать далее »

Масло чесночное

- чеснок - 200г - сливочное масло - 250г. Чеснок очистить, обварить
читать далее »

Масло розмариновое

- сливочное масло - 400г - лук-резанец - 1 стакан - петрушка
читать далее »

Масло фисташковое

- фисташки (очищенные) - 100г - вода - 1/2 ст.л. - сливочное
читать далее »

Масло раковое

- раки (панцири) - 500г (40-50 шт.) - масло сливочное - 1100г
читать далее »

Масло селедочное с сыром

- масло сливочное - 680г - сельдь - 250г - сыр зеленый
читать далее »

Масло по-восточному

- сливочное масло - 400г - кинза (листья) - 1 стакан -
читать далее »

Масло селедочное с горчицей

- масло сливочное - 750г - сельдь - 250г - горчица столовая
читать далее »

Масло облепиховое

- облепиха - 1кг. Подготовленные плоды облепихи растереть деревянным пестиком в эмалированной кастрюле,
читать далее »

Масло селедочное

- масло сливочное - 500г - сельдь - 150г - яблоко свежее
читать далее »

Масло мятное

- сливочное масло - 1 стакан - мята (нарезанная) - 4 ст. л.
читать далее »

Масло сардиновое

- масло сливочное - 750г - сардины - 150г - лук репчатый
читать далее »

Масло мятно-горчичное

- сливочное масло - 400г - мята - 1 стакан - семена
читать далее »

Масло салатное со свежими грибами

- масло растительное - 500г - грибы свежие - 150г. Свежие грибы
читать далее »

Масло миндальное

- миндаль (очищенный) - 100г - вода - 1/2 ст.л. - сливочное
читать далее »

Масло с хреном

- масло сливочное - 100г - хрен тертый - 40г - соль
читать далее »

Масло креветочное с плавленым сыром

- креветочная паста - 130г - масло сливочное - 50г - сыр
читать далее »

Масло с трюфелями

- трюфеля - 100г - масло сливочное - 200г. Порезать на небольшие
читать далее »

Масло килечное

- масло сливочное - 840г - килька - 160г. Филе килек протереть
читать далее »

Масло с томатом

- масло сливочное - 100г - томат-паста -10г - соль Масло
читать далее »

Масло зеленое (II)

- масло сливочное - 500г - зелень петрушки или смесь зелени укропа, сельдерея
читать далее »

Масло с сыром рокфор

- масло сливочное - 800г - сыр рокфор или зеленый сыр - 200г.
читать далее »

Масло зеленое

- масло сливочное - 850г - зелень петрушки - 200г - лимон
читать далее »

Масло с рокфором (II)

- сливочное масло - 100г - рокфор - 200г. Тщательно размять ложкой
читать далее »

Масло грибное из опят

- масло сливочное - 250г - опята - 200г - лук репчатый
читать далее »

Масло с икрой

- паюсная икра - 75г - сливочное масло - 250г. Растолочь в
читать далее »

Масло анчоусное

- анчоусы - 150г - масло сливочное - 750г - яйцо (желток)
читать далее »

Яичница с картофелем

- яйцо - 6-8 шт. - картофель - 4-5 шт. - масло
читать далее »

Яичница-глазунья с луком

- яйцо - 8 шт. - лук репчатый - 3-4 шт. -
читать далее »

Яичница с кабачком

- яйцо - 3 шт. - кабачок - 1 шт. - растительное
читать далее »

Яичница-глазунья по-румынски

- яйцо - 2 шт. - масло сливочное - лук репчатый -1/2
читать далее »

Яичница с зеленым горошком

- яйцо - 4 шт. - горошек - 1 стакан - сливочное
читать далее »

Яичница-глазунья по-американски

- яйца - 2 шт. - ветчина - 30г - масло сливочное
читать далее »

Яичница с грибами и рисом

- грибы свежие - 300 г - лук репчатый - 1 луковица
читать далее »

Яичница-болтунья по-португальски

- яйцо - 2 шт. - сливки - 10г - помидоры. -
читать далее »

Яичница с гренками и сыром

- яйцо - 2 шт. - хлеб - 2 ломтика - молоко
читать далее »

Яичница, вареная с молоком

- яйцо - 8 шт. - молоко - 2 стакана - сливочное
читать далее »

Яичница с ветчиной и помидорами

- яйцо - 4 шт. - ветчина - 100г - помидоры -
читать далее »

Яичница со спаржевой фасолью

- фасоль спаржевая - 100г - мука - 50г - масло растительное
читать далее »

Яичница с бананом

- яичница - банан. Банан почистить, нарезать кружками толщиной 1 см. Поджарить
читать далее »

Яичница со сладким перцем

- яйцо - 5 шт. - сладкий перец (1 красный + 1 зелёный)
читать далее »

Яичница по-швейцарски

- яйцо - 2 шт. - масло сливочное - 1 ст.л. -
читать далее »

Яичница сладкая

- яйцо - 3-4 шт. - масло сливочное - 2-3 ст.л. -
читать далее »

Яичница по-итальянски

- яйцо - 2 шт. - масло сливочное - 40г - сливки
читать далее »

Яичница с чесноком

- яйцо - 8 шт. - чеснок - 2 шт. - белое
читать далее »

Яичница по-деревенски

- картофель - 250г - сыр - 40г - яйцо - 2
читать далее »

Яичница с хлебом

- яйцо - 4 шт. - белый хлеб - 3-4 кусочка -
читать далее »

Яичница по-бельгийски

- яйцо - 3 шт. - хлеб - 250г - сыр (тертый)
читать далее »

Яичница с сыром и орехом

- яйцо - 5 шт. - кисломолочный сыр - 100г - репчатый
читать далее »

Яичница на сметане

- яйцо - 2-3 шт. - сметана - 2-3 ст.л. - сыр
читать далее »

Яичница с сыром

- яйцо - 2 шт. - сыр - 50г - томатный соус
читать далее »

Яичница гуцульская

- яйцо - 4 шт. - сливки - 1 стакан - сметана
читать далее »

Яичница с сельдью

- сельдь - 1 шт. - яйцо - 4-5 шт. - зелень
читать далее »

Яичница грибная с помидорами

- яйцо - 3 шт. - помидоры - 200г - грибы -
читать далее »

Яичница с рисом

- растительное масло - 3 ст. л. - рис - 1/2 стакана
читать далее »

Яичница в корзиночках с крабами

- яйцо - 1 шт. - крабы консервированные или раковые шейки - 35г
читать далее »

Яичница с помидорами

- яйцо - 5-6 шт. - помидоры - 3-4 шт. - сливочное
читать далее »

Яичница в корзинке

- яйцо - 6 шт. - мука - 230г - пармезан (тертый)
читать далее »

Яичница с овощами

- яйцо - 2-3 шт. - лук репчатый - 1 шт. -
читать далее »

Яичница австрийская

- яйцо (крутые, рубленые) - 6 шт. - яйцо (желтки) - 8 шт.
читать далее »

Яичница с медом

- яйцо - 8 шт. - масло сливочное - 20г - молоко
читать далее »

Запеканка яичная с мозгами

- яйцо - 2 шт. - масло сливочное - 1-2 ст.л. -
читать далее »

Яичница с креветками

- яйцо - 12 шт. - креветки (крупные) - 12 шт. -
читать далее »

Глазунья быстрая

- яйцо - 2-3 шт. - сало - 100г - соль, зеленый
читать далее »

Яичница с кислым молоком и сметаной

- яйцо - 10 шт. - кислое молоко (кефир) - 1 л
читать далее »

Глазунья

- яйцо - 2-3 шт. - масло сливочное - 1 ст.л. -
читать далее »

Канапе с филе сельди

- хлеб пшеничный - 100г - сельдь (филе) - 30г - масло
читать далее »
2008 - 2017

Omegicusпрограммист

Разработка широкого спектра IT продуктов - от сайтов и интернет порталов до встраиваемых операционных систем.
Коллеги
последняя новость
Немецкий журнал Der Spiegel поместил на обложку своего нового номера, вышедшего в субботу, 4 февраля, рисунок, на котором президент США Дональд Трамп изображен с отрезанной головой статуи Свободы. Подпись рядом гласит: «Америка прежде всего». Автор иллюстрации — художник кубинского происхождения Эдель Родригес.

Unauthorized.

Профессиональное сжатие видео

2011.10.08

Автор: (c)Крис Касперски ака мыщъх

Эта публикация открывает цикл статей, посвященных вопросам обработки видеоинформации в домашних условиях и в первую очередь - осмысленной настройке MPEG2/MPEG4-кодеков, увеличивающей степень сжатия (без видимой потери качества) в несколько раз по сравнению с "сертифицированными профилями", установленными по умолчанию.

Введение

Научно-технический прогресс развращает, приучая все делать одним взмахом мыши, в результате чего мы имеем DVD-диск от SUPERBIT и EXTRABIT "непревзойденного качества", подготовленные с помощью Ahead Nero (о чем честно свидетельствует поле Source Media Implementation Identifier, хранящееся на DVD-диске вместе с прочей служебной информацией) и записанные с грубыми нарушениями стандарта, в результате чего мы имеем проблемы - от появления "артефактов" и ухудшения качества, до полной невозможности воспроизведения диска на определенных моделях DVD-плееров (особенно стационарных).

Сжатие цифрового видео - очень сложная тема, намного более кромешная и запутанная, чем это кажется до попытки основательно разобраться в ней. Начав исправлять ошибки лицензионных DVD (исключительно в целях домашнего просмотра!), автор зарылся в стандарты, обложился спецификациями, скачал исходные коды всех доступных кодеков и... на несколько месяцев погрузился в пучину бесчисленных экспериментов, в результате чего стал сжимать намного качественнее и плотнее, чем окружающие. "Качественнее" - это значит лучше, чем на оригинальном DVD-носителе (см. рис. 18, 19). Не верите? Говорите: "чудес не бывает"? А разве алгоритмы сжатия звука и видео - это уже само по себе не чудо? Немного людей знает, на каких принципах они базируются и еще меньше готовы написать свой собственный кодек или усовершенствовать имеющийся.

Да что там! Подавляющее большинство использует настройки по умолчанию или пытается манипулировать ими вслепую. Журналы и пестрят сравнительными тестами различных кодеков, демонстрирующими один и тот же кадр, рассматриваемый под большим увеличением. И невдомек им, что при популярном двухпроходном сжатии и дробном quantizer'e разные кадры сжимаются с разным качеством (поскольку quantizer дробным не бывает и если для достижения заданного объема целевого файла кодер решил, что нужно использовать quantizer = 2.5, в практическом плане это означает, что половина кадров закодируется с quantizer = 2, а половина - с 3 и результаты теста в большой степени зависят от того, какой кадр мы возьмем). Также при динамическом битрейте кодек стремится отдать больше битов тем сценам, в которых по его мнению они сильнее всего нуждаются, отнимая их у всех остальных. Алгоритм перераспределения битов у всех кодеков разный и потому сравнивая один и тот же кадр, сжатый разными кодеками, мы можем получить драматический разрыв в качестве, но... делать глобальные выводы на этом основании нельзя!

Это, так сказать, для затравки. Чтобы пробудить исследовательский интерес. Зная, как работает кодек, мы сможем осмысленно крутить его настройки для достижения максимального сжатия с минимальной потерей качества. Источником видеоматериала может выступать и цифровая камера, и карта видеозахвата, и TV-тюнер, и куча прочего потребительского барахла... но мы (для удобства) остановимся на DVD как на самом удобном и "послушном" носителе информации.

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

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

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

Требования к читателю

Предполагается, что читатель уже имеет некоторое представление о цифровом видео и хотя бы в общих чертах понимает, чем MPEG отличается от AVI. На всякий случай, вот несколько хороших FAQ по этому поводу:

  • Introduction to MPEG:
    http://www.faqs.org/faqs/compression-faq/part2/section-2.html;

  • The Unofficial XviD FAQ:
    http://ronald.vslcatena.nl/docs/xvidfaq.html;

  • Современные методы и стандарты экономного кодирования видеоинформации:
    http://compression.graphicon.ru/download/articles/video/standards/state-of-the-art-video-compression.pdf;

Свет и цвет

Существует множество систем кодирования светоцветовой информации, воспринимаемой человеком. Большинство методов построено на сложении (вычитании) трех или четырех основных цветов. В частности, CRT-телевизоры формируют изображение путем трех лучевых пушек - красной (Red), зеленой (Green) и синей (Blue) и соответствующая ей цветовая схема называется RGB. Она же используется и в большинстве видеокарт. Популярный режим RGB32 (True Color 32) на кодирование каждого пикселя расходует по 8 бит плюс еще 8 бит отводится под канал прозрачности. Итого 3 * 8 + 8 = 32.

Нетрудно подсчитать, сколько байт потребуется для кодирования "картинки" с любым разумным разрешением. Такое количество информации очень трудно сохранить и еще труднее передать по радиоканалу. А при проектировании цветных телевизоров перед разработчиками поставили задачу - любой ценой уложиться в полосу пропускания, отведенную для Ч/Б телевизоров, в которую RGB никак не желала укладываться и пришлось пойти на ряд хитростей.

Считается, что нормальный человеческий глаз (художников мы не берем в расчет) способен распознать до 16 миллионов цветовых оттенков, в то время как 32-битный RGB дает 4.294.967.296, что намного больше, то есть явный перебор. Сколько же бит реально необходимо? Прибегнув к логарифмам, нетрудно подсчитать, что 24 бита кодируют 16.777.216 оттенков. Но 24 бита - это все равно очень и очень много. С другой стороны, далеко не все оттенки равнозначны...

Цветоощущение - подарок природы, появившийся на поздних стадиях эволюции (многие животные его лишены и до сих пор!), в силу чего глаз гораздо более чувствителен к изменению яркости, чем к положению в спектре (т.е. цветности). Отталкиваясь от этого факта, перед передачей в эфир исходные RGB-сигналы преобразуются в сигнал яркости Y (он же Luminance или Luma) и два цветоразностных сигнала U и V (Chroma), вычисляемых по следующей формуле:

Y = 0.299R + 0.587G + 0.114B, U = R - Y, V = B - Y

Формула 1. Перевод RGB-сигналов в YUV-форму.

Коэффициенты подобраны с учетом особенностей человеческого восприятия: максимум воспринимаемой глазом световой энергии сосредоточено в зеленой (точнее, желто-зеленой) области спектра, поэтому ему выделяется наибольшее количество бит. Как видно, кодирование сигнала происходит с большими потерями, но... это неизбежная плата за узкие полосы пропускания. Радиодиапазон ведь не резиновый, а вещать хотят все...

Естественно, перед выводом на экран приходится осуществлять обратное преобразование:

R = Y + U, B = Y + V, G = Y - 0.509U - 0.194V

Формула 2. Перевод YUV-сигналов в RGB.

Подробнее об этом можно прочитать в любой книжке по ремонту и настройке цветных телевизоров или в следующей статье: http://www.videoton.ru/Articles/Article2.html. Какое отношение имеют телевизоры к компьютерам и (тем более!) к сжатию информации? Самое прямое!!! Поскольку сжимать в основном приходится не RGB32, сграбленный с экрана, а видеоматериал, предназначенный для эфирной трансляции, то в нем уже отсутствует вся информация о 2^32 оттенках и потому MPEG-кодеры работают с "телевизионными" цветовыми схемами. В MPEG1 это YUV420 (она же YUV12 и YV12), в которой значение яркости (Y) сохраняется для каждого пикселя, а цветоразностные компоненты (U&V) получаются путем усреднения значений 4-х пикселей, образующих матрицу 2x2. На все компоненты отводится по 8 бит, в результате чего на одни пиксель приходится 12 бит (отсюда и название). Главным недостатком подобной схемы становится не только низкое цветовое разрешение, но и невозможность работы с чересстрочным (interlaced) видеоматериалом, т.к. из-за объединения соседних вертикальных линий возникают сильные искажения.

В MPEG2 используется более продвинутая цветовая схема YUV422 (она же YUY2), которая, так же, как и предыдущая сохраняет яркостной сигнал (Y) для всех точек, а вот сигнал цветности усредняется у двух соседних пикселей по горизонтали, в результате чего появляется возможность работать с чересстрочным видеоматериалом, цветовое разрешение возрастает вдвое, а на один пиксель уже приходится 16 бит.

В MPEG4-кодеках может использоваться как та, так и другая схема. YV12 встречается гораздо чаще, поскольку обладает более высоким сжатием, экономящим 35% бит по сравнению с YUY2. Кстати, именно по этой причине многие MPEG-4 кодеки первого поколения (такие как DivX, например) не могли работать с чересстрочным видео и перед его сжатием приходилось выполнять операцию de-interlaced, что не только требовало время, приводило к появлению "артефактов", но и ухудшало сжимаемость, но постепенно разработчики кодеков решили эту проблему и теперь при включении одноименной опции черные промежуточные полосы не сжимаются вообще, существенно сокращая размер выходного файла.

Ладно, это все была сухая теория. Переходим к суровой практике. При сжатии MPEG4-кодеком видеоматериала, представленного в формате YUY2 (например, DVD), искажения будут происходить не только из-за потери информации о цветности, но и... ошибок преобразования YUY2 в YV12 и последующей конвертации YV12 в RGB при выводе на экран монитора. Искажения цветопередачи зачастую оказываются весьма значительными и кристально чистая небесная голубизна превращается в унылую серую грязь. Чтобы понять, почему так происходит (и что сделать, чтобы этого не происходило) необходимо разобраться в этом вопросе более подробно и основательно.

Начнем, как водится, с канонов. Группа MSSG (MPEG Software Simulation Group) прилагает к стандарту референсную (reference - эталон) версию библиотеки mpeg2, последнюю версию которой можно скачать по адресу: ftp://ftp.mpegtv.com/pub/mpeg/mssg/mpeg2v12.zip (для доступа требуется логин и пароль) или утянуть ее прямо из института Беркли без всяких логинов и паролей: http://bmrc.berkeley.edu/ftp/pub/multimedia/mpeg/mpeg2/software/mpeg2v12.zip

В файле \src\mpeg2enc\readpic.c содержится исходный код функции readpic.c, преобразующий RGB в YUV2, ключевой фрагмент которой приведен ниже:

for (i=0; i {
        yp = frame[0] + i*width;
        up = u444 + i*width;
        vp = v444 + i*width;
        
        for (j=0; j         {
                r=getc(fd); g=getc(fd); b=getc(fd);
                /* convert to YUV */
                y = cr*r + cg*g + cb*b;
                u = cu*(b-y);
                v = cv*(r-y);
                yp[j] = (219.0/256.0)*y + 16.5; /* nominal range: 16..235 */
                up[j] = (224.0/256.0)*u + 128.5; /* 16..240 */
                vp[j] = (224.0/256.0)*v + 128.5; /* 16..240 */
        }
}

Листинг 1. Фрагмент функции перевода RGB в YUV2, выдранный из референсной библиотеки mpeg2.

Первое, что бросается в глаза - это, конечно же, вещественная арифметика, которая проигрывает целочисленной и пожирает процессорные такты со страшной силой. Но это еще не самое страшное (в конце концов, оптимизация - вопрос реализации). Хуже всего то, что отображение цветового диапазона RGB на цветовой диапазон YUV2 выполняется неправильно, с грубыми ошибками, допущенными умышленно и даже отмеченными в комментариях. Для увеличения степени сжатия уровень каждой из компонент сужается с 0...255 до 16...235 и обратное преобразование (естественно), приходится выполнять в том же порядке. Для телевизора (и CRT-монитора времен ранней молодости MS-DOS с подсевшей трубкой), эта схема работает на ура, поскольку по краям диапазона оттенки яркости практически неразличимы, а вот для современного LCD монитора с S-IPS матрицей (каким, в частности, является мой NEC 1970NX) уровень 16 - это уже не черный, а серый (или, точнее говоря, слегка белесоватый). В результате фильмы, действие которых разворачивается во мрачных замках, куда не проникает дневной свет, смотреть становится практически невозможно. Все тени приобретают грязноватый оттенок.

Умные декодеры (к которым, в частности, относится мной любимый FFDShow) позволяют исправить ситуацию либо коррекцией уровней (levels), либо модификацией функции конвертации (это совсем несложно сделать - исходные тексты доступны и хорошо структурированы). Только не берите версию FFShow, лежащую на www.sourceforge.net. Она безнадежно устарела (поскольку по непонятным причинам разработчикам отрубили доступ к проекту). В настоящее время скачать самую последнюю версию FFDShow можно с сервера www.free-codecs.com (более точная ссылка не приводится, поскольку она постоянно мигрирует в широких пределах).

Естественно, референсная библиотека - это совсем не Коран и LCD-мониторы появились не вчера и даже не позавчера. Другими словами, "правильный" DVD должен записываться с использованием "правильной" схемы конвертации, но... даже среди абсолютно лицензионных дисков за $15-$20 встречается куча откровенного барахла... Вот только один пример (см. рис. 1). Видите? Нижний порог яркости начинается не с нуля, а верхний - заканчивается задолго до достижения максимального насыщения (естественно, для снятия этого screenshot'а была специально выбрана соответствующая сцена из фильма, содержащая и предельно черные - в ее понимании - и предельно белые - опять-таки, в ее понимании - уровни яркости).

Наблюдение за уровнями яркости

Рисунок 1. Наблюдение за уровнями яркости в FFDShow.

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

Ладно, уровни - это ерунда. С ними и ребенок справится (естественно, с той оговоркой, что при растяжке уровня с 16...235 до 0...255 происходит неизбежная потеря информации о яркости - отрезанные биты ведь не из воздуха берутся, хотя в целом картинка смотрится намного естественнее). Большинство коммерческих (да и некоммерческих) кодеков для достижения максимального быстродействия используют целочисленную арифметику. Вот фрагмент функции преобразования YUV в RGB, выдранный из XviD'а, и находящийся в файле \src\image\colorspace.c. Сами же исходные тексты можно найти на официальном сайте: http://downloads.xvid.org/downloads/xvidcore-1.1.2.zip.

#define WRITE_RGB16(ROW,UV_ROW,C1)                                                  \
        rgb_y = RGB_Y_tab[ y_ptr[y_stride*(ROW) + 0] ];                             \
        b[ROW] = (b[ROW] & 0x7) + ((rgb_y + b_u##UV_ROW) >> SCALEBITS_OUT);         \
        g[ROW] = (g[ROW] & 0x7) + ((rgb_y - g_uv##UV_ROW) >> SCALEBITS_OUT);        \
        r[ROW] = (r[ROW] & 0x7) + ((rgb_y + r_v##UV_ROW) >> SCALEBITS_OUT);         \
        *(uint16_t *) (x_ptr+((ROW)*x_stride)+0) = C1(r[ROW], g[ROW], b[ROW]);      \
        rgb_y = RGB_Y_tab[ y_ptr[y_stride*(ROW) + 1] ];                             \
        b[ROW] = (b[ROW] & 0x7) + ((rgb_y + b_u##UV_ROW) >> SCALEBITS_OUT);         \
        g[ROW] = (g[ROW] & 0x7) + ((rgb_y - g_uv##UV_ROW) >> SCALEBITS_OUT);        \
        r[ROW] = (r[ROW] & 0x7) + ((rgb_y + r_v##UV_ROW) >> SCALEBITS_OUT);         \
        *(uint16_t *) (x_ptr+((ROW)*x_stride)+2) = C1(r[ROW], g[ROW], b[ROW]);

Листинг 2. Макрос из XviD'а, отвечающий за преобразование YUV в RGB.

Чем плоха целочисленная арифметика? А тем, что ошибки округления приводят к искажению цветопередачи, которое в ряде случаев оказывается просто драматическим (особенно если сравнивать сконвертированное изображение с оригиналом).

Для борьбы с этим явлением разработчики видеокарт придумали такую штуку, как оверлей (overlay mode), позволяющую части экрана иметь цветовую схему, отличную от текущей. В overlay-mode видеоинформация проходит "транзитом" сквозь карту и поступает на монитор, не затрагивая остальные узлы, минуя видеопамять и... освобождая центральный процессор от необходимости выполнения преобразования одной цветовой схемы в другую. Вот только... монитор - он ведь на входе совсем не YUV ожидает увидеть и потому оверлей не снимает проблему конвертации, а просто перекладывает ее на плечи карты. Причем, если программный алгоритм преобразования цветовых пространств легко поменять (выбирая из всех самый удачный), то с железом не поспоришь и карта выдает то, что в нее заложено.

Часть карт вообще не поддерживает overlay-mode, часть - поддерживает, но выдает изображение такого скверного качества, что на него практически невозможно смотреть (в особенности это относится к картам NVIDIA). У почитаемого мной Matrox'а G450 с цветопередачей в режиме оверлея все нормально, но вот драйвера... при попытке перехода в overlay-mode они частенько обрушивают систему в голубой экран смерти, что совсем не добавляет оптимизма.

Стандартный Microsoft Media Player всегда стремится использовать оверлей и никакой возможности отключить эту функцию у него нет (может быт, и есть где-нибудь в глубине реестра, да и то навряд ли). Плееры сторонних производителей (и в частности, BSPlayer - http://www.bsplayer.org/) позволяют отключать оверлей установкой галочки "Force RGB mode" (см. рис. 2).

Форсирование RGB-режима

Рисунок 2. Форсирование RGB-режима в BSPlayer'е.

Ниже приводятся два кадра из одного и того же фильма. Первый получен в форсированном RGB-режиме, второй - в overlay-mode на карте NVIDA GeForce 6600. Как говорится, почувствуйте разницу!

Кадр, полученный в RGB-режиме

Рисунок 3. Кадр, полученный в RGB-режиме (с кодеком FFDShow).

Кадр, полученный в режиме оверлея

Рисунок 4. Кадр, полученный в режиме оверлея на карте NVIDIA GeForce 6600.

А разница такова, что в RGB-mode у мужика вид сильно поддатого грузчика. :-) Зато в overlay-mode море и сгустившийся над ним туман приобретают грязно-серый цвет, а низ каната (если присмотреться повнимательнее!) окашивается в зеленый цвет! Уж не водорослями он успел обрасти за это время?!

Уже упомянутый кодек FFDShow имеет функцию высококачественного преобразования YV12 в RGB, активируемую установкой флажка "High quality VY12 to RGB conversion". Она отнимает дополнительные такты, но дает значительно лучший результат (см. рис. 5):

Активирование функции высококачественного преобразования

Рисунок 5. Активирование функции высококачественного преобразования YV12 в RGB в кодеке FFDShow.

Лицо приобретает нормальный телесный оттенок (см. рис. 6), но вот океан... Впрочем, не видя оригинала, трудно сказать насколько (не)качественно выполнено преобразование. Но, по крайней мере, мы можем выбирать из всех вариантов преобразования тот, что наиболее приятен нашему глазу.

Форсированный RGB-режим

Рисунок 6. Форсированный RGB-режим, кодек FFDShow (функция высококачественного цветового преобразования).

На этой ноте разборки с цветовыми схемами будем считать законченными и приступим к по-настоящему серьезным вещам.

Дискретное косинусное преобразование

Фундаментом всех систем сжатия с потерями (JPEG, MP3, MPEG1/2/4) является дискретное косинусное преобразование (Discrete Cosine Transform или сокращенно DCT), представляющее собой разновидность косинусного ортогонального преобразования для вектора действительных чисел. Понять, что такое DTC, можно на примере широко известного дискретного преобразования Фурье - Discrete Fourier Transform или DFT (дискретное косинусное преобразование представляет собой гомоморфизм его векторного пространства).

В общем случае DTC-преобразование осуществляется умножением вектора на матрицу преобразования:

[Y] = [C]x[X]x[CT]

Формула 3. DTC-преобразование, записанное в матричной форме, здесь: [X] - начальная матрица, [C] и [CT] - матрицы с коэффициентами преобразования, где CT означает транспонированную матрицу.

Алгоритмы MPEG1, MPEG2 и MPEG4 разбивают каждый кадр (фрейм) на блоки по 8x8 пикселей, над которыми осуществляется DCT-преобразование - сначала для каждой строки, а затем для каждого столбца матрицы, поэтому такое преобразование часто обозначается как DCT8 (число "восемь" означает 8 векторов).

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

Наглядная демонстрация

Рисунок 7. Наглядная демонстрация DFT- и DCT-преобразований.

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

Чтобы увеличить сжатие, необходимо отсечь наименее значимые детали, практически не воспринимаемые человеческим глазом, но кодируемые наиболее длинными кодами. После выполнения DСT-преобразования эта задача выполняется элементарно, поскольку детали уже разделены на значимые и незначимые. Как говорится, "отсекай и властвуй". Операция отсечения осуществляется при помощи матрицы квантования, подробно описанной в одноименном разделе - там же, где описан процесс квантования, определяющий качество сжатия в целом.

Закодированная матрица (или, точнее - все, что от нее осталось, поскольку после квантования большинство коэффициентов правого нижнего угла обращаются в нули) помещается в сжатый MPEG-файл и кодировщик переходит к обработке следующего 8x8 блока.

Для вывода картинки на экран декодер, естественно, должен превратить совокупность волн в привычные нам пиксели, выполняя операцию обратного дискретного косинусного преобразования - Inverse Discrete Cosine Transformation или, сокращено, IDCT. Понятное дело, что она уже не будет соответствовать оригиналу и часть деталей окажется безвозвратно утеряна.

Матрица квантования

После выполнения DCT-преобразования мы получаем матрицу, наиболее значимые детали которой сосредоточены в левом вернем углу, а наименее значимые - в левом нижнем. Возникает естественное желание - отбросить незначимые детали, сократив размер целевого файла. Это достигается путем квантования.

Квантованием (применительно к обработке сигналов) называется деление величины сигнала на некоторое целое число, называемое квантом (quant), обычно обозначаемый буквой Q, а обратный ему процесс - деквантированием. С математической точки зрения X / Q = X * Q, но целочисленная арифметика "огрубляет" сигнал (см. рис. 8, 9), причем это "огрубление" тем сильнее, чем больше квант. При Q = 1 мы не теряем никаких деталей, при Q, превышающим половину амплитуды сигнала - теряем все.

Сигнал, переведенный в цифровую форму

Рисунок 8. Сигнал, переведенный в цифровую форму.

Оцифрованный сигнал после квантования

Рисунок 9. Оцифрованный сигнал после квантования.

Применительно к MPEG-сжатию операция квантования выполняется дважды - первый раз при наложении на DCT-матрицу специальной Матрицы Квантования (Quantization Matrix или QM) и второй раз - при квантовании коэффициентов матрицы, образующейся после наложения.

Стандартная MPEG-2 Матрица Квантования выглядит так (см. листинг 3):

08 16 19 22 26 27 29 34
16 16 22 24 27 29 34 37
19 22 26 27 29 34 34 38
22 22 26 27 29 34 37 40
22 26 27 29 32 35 40 48
26 27 29 32 35 40 48 58
26 27 29 34 38 46 56 69
27 29 35 38 46 56 69 83

Листинг 3. Стандартная MPEG-2 Матрица Квантования.

В литературе, посвященной сжатию, процесс наложения матрицы квантования обычно описывается слегка неточно. Утверждается, что коэффициенты исходной DCT-матрицы попарно сравниваются с коэффициентами матрицы квантования и если Y[i] < QM[i], то данный коэффициент отбрасывается и вообще не кодируется ([Y] - матрица, полученная при DCT-преобразовании). То есть, в грубом приближении, коэффициенты QM-матрицы как бы задают порог отсечения.

На самом деле квантование происходит так: X[i] = Y[i] / QM[i], где [X] - матрица, полученная после квантования (примечание: тот факт, что фреймы разбиваются на inter- и intra-блоки, квантование которых выполняется слегка различно, мы пока опускаем, т.к. для его объяснения требуется иметь представление о типах фреймов I, P, B и S, разговор о которых еще впереди и на всякий случай отметим, что сейчас мы разбираем кодирование intra-блоков).

Теперь становится ясно, почему левом вернем углу QM-матрицы находятся небольшие числа, планомерно растущие во всех трех направлениях. Крупные детали квантуются минимально, мелкие - после квантования исчезают совсем. Увеличение коэффициентов матрицы квантования ведет к росту потерь деталей, а градиент (т.е. скорость нарастания коэффициентов по мере продвижения к трем остальным углам) задает "весовую" ценность деталей различного размера, что в конечном счете определяет резкость изображения.

Большинство MPEG-4 кодеков работают как минимум с двумя матрицами - MPEG-2 (резкое изображение, среднее сжатие) и H.263 (сглаженное изображение, высокое сжатие). Некоторые кодеки (и в частности, XviD) поддерживают пользовательские матрицы квантования, что открывает практически неограниченные перспективы для качественного сжатия, но об этом чуть позже, а пока разберемся с одним весьма щекотливым моментом, вызывающим путаницу и недопонимания.

Пример QM-матрицы, обеспечивающей большее сжатие за счет намного более агрессивного выбрасывания деталей, приведен ниже:

 20  20  20  20  31  63 127 255
 20  40  40  40  63 127 255 255
 20  20  31  63 127 255 255 255
 20  31  63 127 255 255 255 255
 31  63 127 255 255 255 255 255
 63 127 255 255 255 255 255 255
127 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255

Листинг 4. Нестандартная QM-матрица, обеспечивающая очень высокое сжатие, но вместе с ним намного более значительную потерю деталей.

Достоинство алгоритмов семейства MPEG в том, что они позволяют ужать видеофайл до любого требуемого размера. За счет чего этого достигается? А все за счет того же квантования. Матрица, образовавшаяся после наложения QM-матрицы, подвергается повторному квантованию, то есть делению на некоторое целое(!) число, называемое quantizer'ом и обозначаемое буквой Q.

В упрощенном виде процесс квантования (включающий в себя наложение QM-матрицы выглядит так):

#define DIV_DIV(a,b)	(((a)>0) ? ((a)+((b)>>1))/(b) : ((a)-((b)>>1))/(b))
#define VM18P 3
#define VM18Q 4

/* divide-by-multiply table
 * needs 17 bit shift (16 causes slight errors when q > 19) */
#define SCALEBITS 17
#define FIX(X)	((1UL << SCALEBITS) / (X) + 1)
static const uint32_t multipliers[32] =
{
	0,       FIX(2),  FIX(4),  FIX(6),
	FIX(8),  FIX(10), FIX(12), FIX(14),
	FIX(16), FIX(18), FIX(20), FIX(22),
	FIX(24), FIX(26), FIX(28), FIX(30),
	FIX(32), FIX(34), FIX(36), FIX(38),
	FIX(40), FIX(42), FIX(44), FIX(46),
	FIX(48), FIX(50), FIX(52), FIX(54),
	FIX(56), FIX(58), FIX(60), FIX(62)
};

/* quantize intra-block
 *
 * const int32_t quantd = DIV_DIV(VM18P*quant, VM18Q);
 * const uint32_t  mult = multipliers[quant];
 * uint32_t level = DIV_DIV(16 * data[i], default_intra_matrix[i]);
 * coeff[i] = ((level + quantd) * mult) >> SCALEBITS;
 */

Листинг 5. Псевдокод, иллюстрирующий наложение QM-матрицы и квантование заданным quantizer'ом (позаимствован из исходных текстов XviD'а).

Quantizer представляет собой целое число от 1 до 31 включительно. При Q = 1 мы сохраняем максимум деталей, а при Q = 31 - теряем все ("теряем все" - в пределах одного 8x8 блока, который заливается одним цветом, и мы получаем мозаику из 8x8 квадратов, из которой еще кое-что можно разобрать).

На самом деле 31 - это очень большое число и уже при Q > 6 на изображение без содрогания смотреть становится невозможно. С другой стороны, учитывая, что DVD-диски обычно записываются с Q = 2, становится ясно, что для большинства видеоматериалов имеет смысл использовать только Q от 2 до 6.

Ниже представлен ряд изображений, сжатых с разными quantizer'ами для сравнения:

Изображение

Рисунок 10. Изображение, сжатое с Q = 1.

Изображение

Рисунок 11. Левая половина - Q = 1, правая - Q = 6.

Изображение

Рисунок 12. Левая половина - Q = 1, правая - Q = 13.

Изображение

Рисунок 13. Левая половина -Q = 1, правая - Q = 31.

Откуда взялись эти числа - 1 и 31? Ну, с 1 все понятно. Поскольку на ноль делить нельзя, то 1 - это наименьший возможный quantizer, кстати говоря, не выполняющий никакого квантования, поскольку от деления на единицу коэффициенты матрицы не меняются. Но вот почему максимальный quantizer равен 31?

Ответ хранится в исходных текстах кодека MPEG-2, а точнее - в функции квантования quant_intra(), находящейся в файле \src\mpeg2enc\quantize.c, ключевой фрагмент которой приведен ниже.

for (i=1; i<64; i++)
{
        x = src[i];
        d = quant_mat[i];
        y = (32*(x>=0 ? x : -x) + (d>>1))/d; /* round(32*x/quant_mat) */
        d = (3*mquant+2)>>2;
        y = (y+d)/(2*mquant); /* (y+0.75*mquant) / (2*mquant) */
        
        /* clip to syntax limits */
        if (y > 255) if (mpeg1) y = 255; else if (y > 2047) y = 2047;
        
        dst[i] = (x>=0) ? y : -y;
}

Листинг 6. quant_intra (\src\mpeg2enc\quantize.c).

Немного подумаем. Максимальное значение индекса матрицы равно 255 (в MPEG-2 - 2047 или 7FFh). Минимальный коэффициент квантования в левом верхнем углу матрицы - 8. Тогда при quantizer >= 31 весь блок 8x8 гарантированно обращается в ноль, т.е. теряется вся информация, хотя как уже говорилось выше, использование таких высоких Q бессмысленно, разве что в экспериментальных целях, но не будем углубляться в теорию, а лучше вернемся обратно к практике.

Чем больше Q, тем выше степень сжимаемости видеоматериала, но и тем ниже его качество. Варьируя значение Q, можно получить файл заданного размера, например, ужать DVD до размеров одного CD. Но часто бывает так, что при Q = 4 файл на диск никак не влезает, а при Q = 5 влезает с большим запасом.

Практически во всех кодеках, которые мне только доводилось видеть, quantizer представляется дробным числом с несколькими знаками после запятой (см. рис. 14).

Задание дробного quantizer'a

Рисунок 14. Задание дробного quantizer'а в настройках XviD'a.

Не посвященному в тонкости кодирования это кажется вполне нормальным, но после разбора приведенных выше фрагментов исходных текстов кодеков MPEG-2 и XviD возникает резонный вопрос: как же quantizer может быть дробным, если он по жизни целый?! Дробных quantizer'ов не бывает!!! И ведь правда - не бывает. Просто не встречается в живой природе. Выбор нецелого quantizer'а приводит к тому, что часть фреймов кодируются с одним Q, а часть - с другим (см. рис. 15). Усредненное значение и даст нужное нам (псевдодробное) значение Q.

Результат использования дробного quantizer'а

Рисунок 15. Результат использования дробного quantizer'а - различные фреймы сжимаются с различным Q и все вместе они дают усреднение (по горизонтали откладывается Q, по вертикали - количество фреймов, сжатых с данным Q, типы фреймов [I/P/B] мы рассмотрим в следующий раз).

Психофизическая модель, используемая кодеками, отталкивается от того факта, что при быстром мелькании качественных (т.е. детализированных) и некачественных (т.е. с потерей деталей) кадров человеческий глаз, а точнее - мозг улавливает детали и игнорирует размытость, в результате чего при чередовании кадров с Q и Q+1, субъективное качество приближается к Q.

А вот это для кого как! Лично у меня субъективное качество в первую очередь обуславливается наименее качественными кадрами, вплотную приближаясь к Q+1 и даже становясь хуже его! Чередование Q и Q+1 создает некоторое, трудно передаваемое словами, ощущения "дрожания" изображения и фильм, сжатый с Q+1 субъективно (опять-таки субъективно!) воспринимается более приятно, чем с Q/Q+1. Но это - сугубо индивидуальные ощущения. Тем не менее, они подтверждаются большим количеством моих знакомых. К тому же, тут еще вот какое обстоятельство прослеживается: при просмотре фильма с потерянными деталями (о существовании которых мы даже не подозреваем), субъективное качество остается вполне приемлемым даже при завышенном quantizer'е, но... стоит только глазу показать несколько кадров, где эти детали сохранены, как он моментально перестраивается и меняет оценку с "приемлемой" до "неудовлетворительной". Это можно сравнить с тем, что газетный лист кажется белым до тех пор, пока рядом с ним не окажется кусок мелованной бумаги.

Отсюда вывод: выбор целого значения quantizer'а обеспечит лучшее качество изображения, чем дробное. А как же в этом случае "подгонять" сжатый файл под требуемый размер? Целочисленный quantizer - слишком уж грубое средство... Действительно грубое, ведь он квантует сигнал, уже подвергшийся квантованию!

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

Кстати говоря, в XviD'е имеется экспериментальный "Modulated QM", стремящийся выбрать наиболее адекватную матрицу квантования для данного Q. Увы, алгоритм его работы постоянно меняется. Сначала он использовал H.263 матрицы (обеспечивающие лучшее сжатие, но дающие более высокую размытость) для фреймов с Q <= 3 и MPEG-2 матрицы (выше резкость, хуже сжимаемость) для фреймов с Q >= 4, что вызывало массу негативных откликов. Действительно, зачем портить качество "мыльной" матрицей на низких Q и зачем подчеркивать резкость потерянных деталей при высоких Q?! В следующих версиях стратегия модулятора изменилась на прямо противоположную и теперь он стал выбирать MPEG-2 матрицы для фреймов с Q <= 3 и H.263 матрицы для фреймов с Q >= 4, что обеспечивает лучшее качество при большей степени сжатия (примечание: quantizer выбирается для каждого 8x8 блока индивидуально, хотя в подавляющем большинстве случаев весь блок кодируется с одним Q).

Подробнее о матрицах квантования мы поговорим в следующей статье, а пока вернемся с заоблачных небес на грешную землю, на которой творятся такие дела, что даже язык не поворачивается, чтобы их описать - в двухпроходном режиме сжатия (самом популярном на данный момент) кодек не позволяет задавать quantizer, требуя от нас указать средний битрейт (average bitrate) или же сразу желаемый размер файла.

Битрейт - это просто количество битов в секунду. Зная размер (в битах) и частоту (в fps) кадров, не составит труда рассчитать размер конечного файла, равно как и наоборот - размер файла однозначно обуславливается его битрейтом. Величина самого битрейта, естественно, зависит от степени сжимаемости видеоматериала и поскольку кодек не пророк, он сжимает исходный видеоматериал за два прохода. В первом проходе никакого сжатия не выполняется, а лишь оценивается степень сжимаемости каждого фрейма, затем на основе полученной информации вычисляется необходимый quantizer, с которым видеоматериал реально сжимается во втором проходе.

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

Пример такого поведения продемонстрирован на рис 16. Из-за того, что кодек выделил некоторым сценам Q < 8, для достижения заданного размера, он оказался вынужден закодировать подавляющее большинство фреймов с Q = 10. Большое количество фреймов оказалось сжато с Q от 11 до 16 включительно, а некоторые фреймы кодировались с... Q = 22! И хотя средний Q = 12.15, при постоянном quantizer'е тот же самый фильм с теми же самыми настройками сжимается тем же самым кодеком за один проход с Q = 7, занимая даже чуть-чуть меньший размер и чудовищно выигрывая в качестве (и это без редактирования матрицы квантования и прочих шаманских ритуалов).

Попутно - чем уже "гора", образующаяся на диаграмме XviD'а - тем выше качество сжатия. Наличие "выбросов" (т.е. нескольких несмежных пиков) указывает на то, что в первом проходе кодек неверно выполнил расчет сжимаемости видеоматериала и на определенных сценах ему катастрофически не хватило битрейта, вот он и сжал их с неоправданно завышенным Q (другая возможная причина - выбор профиля, ограничивающего максимальный пиковый битрейт). Обычно увеличение битрейта позволяет удалить лишние пики, сузив ширину "горы" и увеличив тем самым качество.

Замечено, что XviD страдает хроническим оптимизмом - к концу фильма ему постоянно недостает битрейта и он вынужден увеличивать Q, сжимая финальные сцены с гораздо худшим качеством.

Диаграмма квантования

Рисунок 16. Диаграмма квантования фильма, сжатого с переменным битрейтом.

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

Кодек FFDShow позволяет отображать в реальном времени quantizer для каждого из 8x8 блоков и строить диаграмму размеров сжатых фреймов, что невероятно полезно для объективной оценки качества видеоматериала (см. рис. 17). Чтобы задействовать этот режим, откройте FFDShow (Программы -> FDShow -> Video decoder configuration), найдите вкладку "Visualization" и взведите галочки "Quantizers" и "Graph", не забыв отметить и саму "Visualization" (или сделайте то же самое во время просмотра фильма, кликнув по иконке в системном трее, которую FFDShow будет отображать, если в графе "Try, Dialogs & Paths" взвести галочку напротив "Show tray icon".

Визуализация quantizer'а

Рисунок 17. Визуализация quantizer'а и построение диаграммы размера фреймов в реальном времени кодеком FFDShow.

Для покадрового просмотра фильма удобно использовать бесплатный видеоредактор AviDemux (http://fixounet.free.fr/avidemux). Качество соседних кадров, закодированных с различным Q, меняется весьма значительно. Особенно это хорошо заметно на крупных планах, когда отчетливо видны волосы, глаза, ресницы и прочие тонкие черты лица. То есть, предполагается, что они должны быть видны, но высокий Q все "замыливает"...

Лучше, чем DVD

Quantizer, равный 3, обладает одним очень интересным свойством - убирая наименее значимые детали, он действует как отличный "шумодав", что весьма актуально для очистки "зашумленных" DVD (а таких среди них - большинство). Ниже приведены два кадра. Один - с оригинального DVD, другой после сжатия XviD'ом с Q = 3 и H.263 матрицей.

Кадр с оригинального DVD

Рисунок 18. Кадр с оригинального DVD (обратите внимание на шум).

Тот же самый кадр после сжатия

Рисунок 19. Тот же самый кадр после сжатия (куда подевался шум?!)

https://nebka.ru/?uid=1&post=20967