Домашний_компьютер - Домашний компьютер № 7 (121) 2006 Страница 44
Домашний_компьютер - Домашний компьютер № 7 (121) 2006 читать онлайн бесплатно
Последнее же, что, по ощущением, возбудило меня, пожалуй, не меньше чем P-2602HWL-D1A, — это IP-видеокамера высокого разрешения Elphel 333 (2048х1536), которую после двухмесячной битвы с таможней я, наконец, получил от нашего соотечественника Андрея Филиппова, выпускающего их на своей фирме Elphel в Штатах. О ее предыдущей модели, Elphel 313, я как-то коротко рассказывал, — но то был, что называется, прототип, — это же уже… вещь!
Которая, конечно, заслуживает отдельной площадки для описания, которое я непременно и сделаю в следующем номере журнала. Пока же ограничиваюсь тем, что ставлю живой снимок себя за работой над этой «Козлонкой», сделанный Elphel 333.
Концерт по заявкам, или MPEG
Авторы: Евгений Козловский, Сергей Блохин
© 2004, Издательский дом | http://www.computerra.ru/
Журнал «Домашний компьютер» | http://dk.compulenta.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу: /2006/121/280029/
КОНЦЕРТ ПО ЗАЯВКАМ, или MPEGЭто не единственное письмо по вопросу MPEG-кодирования, но, пожалуй, самое, так сказать, исчерпывающее. И, в первую очередь, потому что «не единственное», во-вторую — потому что вопрос интересен по сути, особенно сегодня, когда домашнее видео становится все более распространенным. Поэтому мы и решили дать развернутый ответ.
Правда, в самом вопросе полно путаницы: Main Concent MPEG Encoder, Cinema Craft Encoder и Canopus Procoder — это действительно кодеры, а Pinnacle, Adobe и Ulead — это фирмы, производящие софт, который, в свою очередь, использует тот или иной кодер. Если отвечать коротко, то программные пакеты Adobe Premiere, Ulead MediaStudio Pro, Ulead DVD Movie Factory и Ulead DVD Workshop используют Main Concept MPEG Encoder, а программа Avid (бывший Pinnacle) Studio — кодировщик собственного изготовления и не особо высокого качества кодирования.
Если же подробнее, то сравнить MPEG-2-кодеры мы попросили одного из экспертов в области домашнего видео, автора ряда книг на эту тему, Сергея Блохнина, я же предваряю его статью популярным очерком о том, что из себя вообще представляет MPEG-2-кодирование. Именно популярным, потому что MPEG-2 — очень сложный алгоритм, и тем, кто всерьез этим вопросом заинтересуется, придется прочесть много специальной, переполненной формулами, литературы.
Итак, MPEG-2 придуман для уменьшения количества и потока видео, чтобы оно помещалось на доступные носители и проходило сквозь не особо толстые каналы передачи. Даже если не брать все более входящие в моду форматы High Definition Video (Видео Высокой Четкости), где несжатый видеопоток может заметно превышать 100 Мбит/с, а ограничиться более привычным STV (Стандартным Видео: PAL и NTSC), — минута несжатой движущейся картинки займет на диске (или кассете) целый гигабайт! Поток любопытствующие могут посчитать сами.
Сжимается видео двумя методами: статическими и динамическими. Статическое сжатие — это, в сущности, знакомый всем JPEG-формат. Он анализирует картинку на предмет повторяющихся фрагментов (по мелкости — вплоть до одного пикселя) и записывает их приблизительно так: «точка с параметрами RGB 212, 085, 110 повторяется подряд 24 раза, через 74 пикселя повторяется снова 45 раз…» То есть, вы вполне способны представить себе картинку с белым снежным полем или пасмурным, но без выраженных туч небом, — экономия может выйти очень и очень значительная. Такое сжатие, если оно записывается попиксельно, считается сжатием «без потерь», есть даже специальная разновидность BMP-формата, применяющая подобное сжатие, называется RLE. Однако на картинках с большим разнообразием объектов такая запись экономит уже не так много, и алгоритм (в зависимости от заданного вами конечного объема или условного «качества») выставляет некие огрубляющие условия. Например, точки с уровнем красного от 100 до 112 считать за одинаковые, с уровнем, скажем, 106. Или фрагменты, продолжающиеся не долее 6 пикселей, рассматривать как несуществующие, игнорировать, — и из картинки уходят мелочи, а цвета на ней становятся менее дифференцированными.
Это что касается собственно статического (или JPEG) сжатия, которое оперирует фактически каждым полноцветным пикселем картинки, описываемым тремя цветовыми байтами: 256 градаций красного, столько же — зеленого и столько же — синего. Но видео, для которого и был придуман MPEG, произрастает из старого аналогового телевидения, а оно, после ряда экспериментов, пришло к стандарту передачи цвета другим, цветоразностным, образом: в сигнале в первую очередь идет яркостная составляющая Y (это позволило на первых порах перехода к цветному телевидению организовать совместимость со старыми черно-белыми приемниками), потом — две цветоразностные, U и V, где желтый вычитается сначала из красного, а потом — из синего и множится на коэффициенты, полученные экспериментальным путем (подробнее этот предмет я рассмотрел в «Козлонке» «Y=0,299R+0,587G+0,114B, или Полтораста долларов коту под хвост», ДК #3_2005). Человеческий глаз по-разному воспринимает цвета, что отражают приведенные коэффициенты и что позволило авторам MPEG далеко не в каждом подформате передавать полностью и одну, и другую цветоразностную составляющую. Так, в наиболее распространенном варианте MPEG-сжатия эти данные записываются в формате 4:2:0, показывающим, что яркостная информация Y передается полным байтом, первая цветоразностная U — половинкой, а вторая, V, не передается вообще (цифры здесь довольно условны и тоже произросли из старого аналогового телевидения: 4 означает передачу 256 градаций, 2 — 128). Формат 4:2:0 отнюдь не означает, что мы не досчитаемся каких-то отдельных цветов — они на картинке останутся все, просто будут переданы с неидеальной, но для большинства глаз вполне достаточной точностью. То есть довольно условно цветоразностные составляющие сигнала U и V можно считать значениями по двум осям декартовых координат. Так вот, в MPEG с формулой 4:2:0 цвет записывается полный, но — лишь по одной координатной оси.
Это что касается статики. (Тут имеет смысл отметить, что формат DV, в котором записывается видео на всех DV-камерах, профессиональных и любительских, подразумевает исключительно статическое, по JPG-алгоритму, сжатие, поэтому минута такого видео занимает чуть меньше 200 мегабайт, а поток получается 25 Мбит/с.) Но MPEG — это еще и сжатие динамическое, тоже разное в зависимости от выбранного подстандарта и заданного пользователем результирующего качества (чаще всего — путем задания результирующего потока).
Динамическое сжатие MPEG устроено приблизительно так: записываются последовательности кадров форматов I (Intra или «Опорные»; обычно, это каждый пятнадцатый кадр), P (Predicative или «Предсказанные») и, наконец, B (Bi-directional или «Двунаправленные»). Опорные кадры представляют собой полную картинку, сжатую только статически (как описано выше). Предсказанные описывают разницу между опорным и текущим, а также вектор движения. То есть, если вы сняли движущийся по улице автомобиль, в предсказанном кадре будет записано, что все окружающее осталось неизменным (кроме того, что открылось после сдвига автомобиля), автомобиль тоже остался неизменным (или практически неизменным), но сдвинулся вперед на такое-то расстояние. Математически сложив опорный кадр с предсказанным мы можем получить достаточно точную ситуацию на момент предсказанного кадра.
Стандарт и на опорные, и на предсказанные кадры в MPEG — довольно жесткий, вне зависимости от подалгоритмов, используемых тем или иным кодером. Третий же вид кадров, двунаправленные, имеет несколько разновидностей, которые зависят как от конкретного кодировщика, так и от выбранного пользователем режима работы. Они тоже предсказывают движение, вперед или назад (получается — «послесказывают»), тоже записывают некую разностную информацию, однако довольно специфическим образом. И если потеря опорного кадра приведет к полному выпадению пятнадцатикадровой последовательности, а предсказанного — к рывку на изображении, то потери двунаправленных смогут только несколько ухудшить плавность, но принципиально ничего не испортят. Существуют профили (например, Sample Profile, «Простой»), которые вообще не предполагают наличия двунаправленных кадров. Короче, если принять количество информации, помещаемое в опорный кадр, за 100%, в кадре предсказанном ее будет процентов 30, а в кадре двунаправленном — 10-12%.
Кадры при MPEG-кодировании разбиваются на группы, называемые GOP, Group of Pictures, которые начинаются с опорного кадра и далее включают предсказываемые и (не обязательно) двунаправленные. Типичный, «стандартный» профиль MPEG выглядит как IBBPBBPBBPBB.
Совершенно понятно, что, хотя смотреть не слишком сжатый MPEG-файл бывает достаточно комфортно, — ибо в алгоритме используется вовсю «человеческий фактор» (средний человек много на что в картинке попросту не обращает внимания), — обрабатывать его, это значит практически всегда — портить. Ибо для точного монтажа или какой-нибудь другой обработки мы сначала должны получить полную последовательность кадров, из которых точно соответствовать действительности будет только каждый пятнадцатый, остальные — вычислены с той или иной степенью достоверности.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.