Экстернат |
Алгоритмы работы с изображением
Цветное телевидение использует сигналы R (red), G (green) и B (blue), причем яркость луча ( Y ) определяется соотношением: Y = 0.30R + 0.59G + 0.11B (при отображении белого цвета). В стандарте NTSC используется два коэффициента цветности: I = 0,60R – 0,28G – 0,32В и Q = 0,21R – 0,52G + 0,31B. Для PAL и SECAM используются другие коэффициенты цветности. Информация о цветах определяется формулами: СB = B - Y и CR = R - Y. Зная величины Y, CB и СR, можно восстановить значения R, G и B. При сжатии цветного изображения учитывается тот факт, что человеческий глаз извлекает большую часть информации из контуров предметов, а не из цветных деталей. Например, в рекомендации CCIR 601 предлагается использовать полосу 13.5 МГц для кодирования Y и только по 6,75 МГц для СB и CR. Y -матрица кадра содержит 4800 блоков, а матрицы I и Q — по 1200 блоков. Каждый блок включает в себя 64 элемента. Исходная RGB -матрица 24-битных кодов пикселей преобразуется в Y -матрицу 8-битных кодов яркости и две матрицы СB и CR. В результате достигается существенное сокращение объема с незаметным для глаза ухудшением качества изображения (см. рис. 5.4).
Такая схема требует 216 Мбит/с, что в 3375 раза превышает возможности стандартного 64Кбит/с B-канала ISDN. Приемлемыми решениями могут быть:
- снижение числа строк до 288 (при формате 625 строк) для отображения яркости;
- использование максимально возможного сжатия графических данных;
- повышение пропускной способности канала. Для разрешения по горизонтали вполне достаточно 3 МГц. Рекомендация 601 требует 720 пикселей для яркости и 360 для каждой из составляющих цветов. В настоящее время используется стандарт CIF (Common Intermediate Format). Для некоторых приложений рекомендовано вдвое более низкое разрешение по каждой из осей (Quarter CIF ). PCM-кодирование CIF с 8 битами на пиксель требует 352 х 288 х (1 + 1/4 + 1/4) х 29,97 х 8 = 36,5 Мбит/с (в отсутствие сжатия).
Отдельную проблему представляет печать изображения. Здесь полутона реализуются с помощью вариации размера элементов изображения. При цветной печати, помимо RGB -представления, используется CMYK-система (Cyan, Magenta, Yellow и Black) и соответствующие картриджи. Черный цвет в RGB соответствует коду 0,0,0, а в CMYK — 75%, 68%, 67% и 90%.
Проблема сжатия информации была, есть и всегда будет актуальной. При известных современных методах, чем больше эффективность сжатия, тем больше задержка (наилучший результат можно получить, используя сжатие всего фильма, а не кадра или тем более строки). В каждом конкретном случае выбирается то или иное компромиссное решение. При работе в реальном масштабе времени, где в процессе обмена участвует человек, задержки более секунды вызывают раздражение, и приходится ограничиваться сравнительно скромными коэффициентами сжатия или умеренным разрешением.
При пересылке движущегося изображения производится сравнение текущего кадра с предшествующим. Если кадры идентичны, никакого информационного обмена не происходит. Если кадры отличаются лишь смещением какого-то объекта, выявляются границы этого объекта, направление и величина вектора его перемещения. Так как использование индивидуальных векторов перемещения для каждого пикселя слишком расточительно, применяется общий вектор для блока пикселей 16*16 по яркости и для соответствующего блока 8*8 по цвету. Точность задания вектора перемещения обычно лежит в пределах 1/2 пикселя (стандарт MPEG -2). Только эта информация и передается по каналу связи. Выявление движущихся объектов осуществляется путем вычитания изображения двух последовательных кадров. Если бы передавалась всегда только разница кадров, происходило бы накопление ошибок. Кроме того, как кодер, так и декодер содержат прямой и обратный DCT -преобразователь. Если комбинация прямого и обратного DCT -преобразования не приводит к получению исходного объекта, то такого рода эффекты могут заметно усилиться. Для исключения этого время от времени производится передача непосредственно видеосигнала (кадра). Практически преобразователь изображения представляет чудо современной технологии, которое даст работу еще не одному поколению математиков и инженеров.
Нисколько не проще система передачи и мультиплексирования потока видеоданных, который содержит, помимо обычной информации, описания формы движущихся объектов, векторы перемещения, коэффициенты дискретизации и многое другое. Схема передачи графической информации имеет 4-уровневую, иерархическую структуру. Передача каждого кадра изображения начинается с 20-битного кода PSC (Picture Start Code, эта сигнатура позволяет выделить начало кадра изображения в общем потоке), далее следует 5-битовый код TR (Temporal Reference, временная метка, которая позволяет поместить соответствующую часть изображения в правильную точку экрана). Изображение пересылается частями, имеется 4 уровня: кадр, группа блоков GoB (Group of Blocks), макроблоки ( MB ) и просто блоки.
Ядро всей структуры составляет процедура передачи кадра (внутренний слой, существуют еще слои GoB, MB и блока, см. рис. 5.5, 5.6 и 5.7)
Поле PTYPE содержит 6 бит, которые характеризуют формат изображения (используется ли формат CIF или QCIF ). Однобитное поле PEI указывает на то, следует ли далее 8-битное поле PSPARE (предназначено на будущее). Если PEI = 0, начинается цикл передачи GoB. Группа блоков составляет одну двенадцатую картинки CIF или одну треть QCIF. GoB описывает Y (яркость), 176 пикселей для каждой из 48 строк и соответствующие 88*24 элементов для CB и CR.
GBSC — (Group of Blocks Start Code) представляет собой 16-разрядное слово, за которым следует 4 бита номера GoB (GN — GoB Number). GN указывает, какой части изображения соответствует данный GoB. Поле GQUANT имеет 5 бит и указывает на номер преобразователя (одного из 31 дискретизаторов), который используется данным GoB. Смысл GEI идентичен PEI. GEI и GSPARE позволяют сформировать структуру данных, идентичную той, что используется на уровне кадра.
Формат пересылки MB сложнее. GoB делится на 33 макроблока (MB), каждый из которых соответствует 16 строкам по 16 пикселей Y (четыре блока 8*8) и CB и CR. Каждый макроблок начинается с его адреса MBA (Macroblock Address), имеющего переменную длину и определяющего положение макроблока в GoB.
Макроблоки не передаются, если данная часть изображения не изменилась. За MBA следует код переменной длины MTYPE, характеризующий формат макроблока (применен ли метод подвижного вектора MVD и т.д.) и последующую информацию. CBP (Coded Block Pattern) представляет собой кодовое слово переменной длины, которое несет в себе информацию о том, какой из шести блоков преобразования (8*8) содержит коэффициенты (слой блоков). CBP нужно не для всех типов макроблоков. Каждый блок завершается флагом EoB (End of Block).
Сама природа алгоритма кодирования и передачи графических данных такова, что число бит, передаваемых в единицу времени, зависит от характера изображения. Чем динамичнее изменяется картинка, тем больше поток данных. Для выравнивания потока данных широко используется буферизация. Буферизация в свою очередь порождает дополнительные задержки, которые в случае видеоконференций или видео-телефонии не должны превышать нескольких сотен миллисекунд.
Так как передача изображения широко использует коды переменной длины, она крайне уязвима для любых искажений. В случае ошибки будет испорчена вся информация вплоть до следующего стартового кода GoB. Из-за рекурсивности алгоритма формирования картинки искажения будут оставаться на экране довольно долго. Использование векторов перемещения может привести к дрейфу искажений по экрану и расширению их области. Для того чтобы уменьшить последствия искажений, в передаваемый информационный поток включаются коды коррекции ошибок BCH (511,493; Forward Error Correction Code), которые позволяют исправить любые две ошибки или кластер, содержащий до 6 ошибок в блоке из 511 бит (см. рис. 8). Алгоритм работает в широком диапазоне скоростей передачи информации. Для реализации коррекции ошибок в поток двоичных данных включается 8 пакетов, каждый из которых включает в себя 1 кадровый бит, 1 бит индикатор заполнения, 492 бита кодированных данных и 18 бит четности. Поле Fi (индикатор заполнения) может равняться нулю, тогда последующие 492 бита не являются графической информацией и могут игнорироваться. Алгоритм предназначен для работы в динамическом диапазоне частот 40:1.
Во время переговоров или в ходе видеоконференции может возникнуть необходимость отобразить текст, выделить на экране какой-то объект, послать факс и т.д. Для решения таких задач можно использовать D-канал (ISDN), но это не оптимально, так как он имеет свои специфические функции. Поэтому более привлекательным представляется создание специального протокола, работающего в рамках B-канала (H.221). Для этих целей задействуется младший бит каждого из октетов, что позволяет создать сервисный канал с пропускной способностью 8 Кбит/с, использующий по 80 бит. Первые 8 бит служат для целей синхронизации ( FAS – Frame Alignment Signal) и выполняют следующие функции:
- выделение начала кадра (исключение имитации начала кадра в информационном потоке);
- выделение начала блока кадров (опционно до 16 кадров);
- выполнение функций счетчика в многокадровых блоках (по модулю 16), может использоваться в многоточечных соединениях;
- нумерация соединений;
- CRC-контроль (опционно);
- " A -бит" для определения кадр/мультикадр/синхронизация при пересылке в противоположном направлении ( A = 0 — передача, см. также структуру кадров ISDN; http://book.itep.ru/4/43/isdn_433.htm).
При работе с каналами на 384, 1536 и 1920 Кбит/с сервисный канал использует тайм-слот 1. Следующие 8 бит имеют название BAS (Bit Allocation Signal) и выполняют следующие функции:
- код, характеризующий возможности канала (узко/широкополосная передача звука, различные видео параметры, тип шифрования и т.д.);
- коды команд, определяющие значения передаваемых кадров;
- esc-последовательности.
Очевидно, что BAS-коды (H.242, см. http://book.itep.ru/2/29/std_291.htm) должны быть надежно защищены от ошибок. Для этой цели они пересылаются с использованием кодов, допускающих коррекцию ошибок. При работе оба приемника непрерывно ищут разделительный код кадров. Когда он обнаружен, бит А для выходного канала делается равным нулю. Только после получения А = 0 терминал может быть уверен в том, что удаленный терминал правильно воспринял код BAS. Работа с кодами BAS описана в документе H.242. При установлении режима обмена терминалы обмениваются командами BAS. Команда действительна для последующих двух кадров, следовательно, при частоте кадров 100 Гц, изменения режима могут производиться каждые 20 мс.
Многоточечный вызов может рассматриваться как несколько связей между терминалами и бриджем MCU (Multipoint Control Unit) по схеме "точка-точка". Простой MTU передает на каждый из терминалов смешанный аудиосигнал от остальных терминалов. Каждый терминал осуществляет широковещательную передачу для остальных терминалов, участвующих в обмене. При видеообмене на терминал выводится только одна картинка. Дополнительную информацию по данной тематике можно найти в рекомендациях H.231, H242 и H.243.
Для передачи нормального телевизионного изображения необходимо 364 Кбит/с (4х64 Кбит/c). Интеграция телевидения с сетями передачи данных, появление видеотелефона и широкое внедрение видеоконференций становится велением времени. Требования к каждому из этих видов услуг значительно варьируются в зависимости от приложения. Например, ставшие обычными телевизионные мосты требуют высокого качества передачи изображения и звука. А в некоторых дорогостоящих отраслях науки, где международное сотрудничество стало неизбежным, важным является передача статических изображений (чертежи, схемы, описания алгоритмов, и т.д.) с высоким (иногда более высоким, чем в телевидении) разрешением. Здесь важно передать звук с приемлемым качеством (но заметно хуже, чем на ТВ) и обеспечить синхронное перемещение маркера мыши по экрану в ходе обсуждения переданного документа. Экономия только на авиабилетах (не говоря о командировочных и времени экспертов) способна перекрыть издержки по оплате канала для видеоконференции. В этом режиме приемлемым может считаться один кадр в 1-4 секунды.
Рисунок известного французского художника Клода Серрэ из книги "Черный юмор и люди в белом" (см. начало раздела http://book.itep.ru/2/25/pic_25.htm) может служить иллюстрацией того, к чему может привести использование протокола TCP при передаче изображения в реальном масштабе времени. Предположим, что в процессе передачи изображения носа пакеты были повреждены, тогда спустя некоторое время, определяемое размером окна (TCP), будет проведена повторная их передача. Тем временем переданные ранее пакеты будут использованы для построения изображения, а часть картинки, содержавшаяся в пакетах, посланных вместо поврежденных, будет отображена совсем не там, где это следует. Реально из-за повреждения пакетов возможны и более тяжелые искажения изображения. Именно это является причиной использования UDP для передачи видео- и аудиоинформации при видео- и аудиоконференциях (еще лучшего результата можно достичь, используя протокол RTP). Протокол UDP не требует подтверждения и повторной передачи при ошибке доставки. Поврежденные пакеты вызовут искажения изображения (или звука) лишь локально.
Ситуация меняется в случае посылки изображения или звукового послания по электронной почте. Здесь в случае повторной передачи пакетов в конечном итоге будет сформирован файл, уже не содержащий ошибок. Такое решение приемлемо всякий раз, когда большая задержка появления изображения или звука не играет никакой роли.