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

 

Изобретение относится к вычислительной технике и позволяет уменьшить объект памяти, необходимый для хранения и обработки визуальных объектов (ВО). Технический результат заключается в уменьшении объема памяти, необходимого для хранения и обработки разметки ВО. Способ включает вывод на экран монитора видеокадра с изображением по меньшей мере одного ВО и разделение видеокадра с ВО на ХY ячеек. Внутрикадровое кодирование в способе производят путем выделения характеристических ячеек, совпадающих с контуром ВО и в которых контур ВО испытывает изменение формы. Изменение контура между характеристическими ячейками аппроксимируют математическими выражениями между контрольными точками. Вводят локальную систему координат Х' и Y'. После внутрикадрового кодирования запоминают в карте массив данных контрольных точек. 3 с. и 13 з.п. ф-лы, 22 ил., 2 табл.

Изобретение относится к вычислительной технике и может быть использовано в компьютерных системах активного видео (АВ) или Hyper Video (HV), а также в таких областях, как интерактивное телевидение, видео по требованию, вещание ТВ через Интернет, интерактивные обучающие системы, видеопроводники, персональные, мобильные коммуникации, компьютерные и телевизионные игры.

Известен способ и аппаратура для объединения гиперсвязей с видео, в котором в качестве операции кодирования координат перемещающегося на экране монитора компьютера видеоизображения выводят на экран монитора видеокадр с изображением по меньшей мере одного визуального объекта (ВО), аппроксимируют при помощи разметки визуальный объект простой геометрической фигурой, например кругом, овалом, прямоугольником, с помощью авторского инструментария наносят разметку на отдельные ключевые видеокадры, а области разметки (круг, овал, прямоугольник) линейно интерполируют на оставшиеся промежуточные кадры (Международная заявка РСТ WO (98/44435, G 06 F 17/30, опубл. 1998 г.).

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

Известна "Параллельная компьютерная система Активного Видео", реализующая в частности способ кодирования координат перемещающегося на экране монитора компьютера видеоизображения, который является наиболее близким к заявленному (Патент Российской Федерации на изобретение №2173883, G 06 T 1/20, опубл. 2001 г.).

Способ кодирования координат перемещающегося на экране монитора компьютера видеоизображения включает вывод на экран монитора видеокадра с изображением по меньшей мере одного визуального объекта. Разделяют видеокадр с визуальным объектом на Х х Y ячеек, где Х и Y – 0, 1, 2, ... , имеющих форму элементарных квадратов или прямоугольников. Выделяют ячейки, местоположение которых совпадает и не совпадает на видеокадре с местоположением визуальных объектов, маркируя ячейки, совпадающие с местоположением ячеек визуального объекта, соответствующим символом, и маркируя другим одним символом ячейки, местоположение которых не совпадает с местоположением ячеек визуального объекта. При внутрикадровом кодировании формируют массив данных карты для визуального объекта данного видеокадра, причем если положение визуального объекта в следующем видеокадре видеофайла постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных визуального объекта предыдущего видеокадра, а если положение визуального объекта в следующем видеокадре изменяется, то, формируя новую карту, для таких видеокадров изменяют массив данных визуального объекта. Формируют и запоминают файл, образованный последовательностью карт, в которой каждая карта соответствует по меньшей мере одному видеокадру видеофайла.

Ограничениями этого технического решения являются:

необходимость использования при внутрикадровом кодировании ячеек с нулем, не совпадающих с местоположениями активных объектов, что увеличивает массив данных при создании карт. При идентифицировании и выделении ячеек, местоположение которых совпадает с местоположением активного объекта, необходимо кодирование всех ячеек ВО в координатах Х, Y для образования карты ВО, что также резко увеличивает массив данных;

отсутствие межкадрового кодирования, что приводит к избыточности сохраняемых данных.

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

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

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

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

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

Для решения поставленной задачи с достижением указанного технического результата в известном способе кодирования координат перемещающегося на экране вычислительного устройства видеоизображения, включающем вывод на экран видеокадра с изображением по меньшей мере одного визуального объекта, разделение видеокадра с визуальным объектом на Х х Y ячеек, где Х и Y координаты – 0, 1, 2, ... , имеющих форму элементарных квадратов или прямоугольников, выделение ячеек, местоположение которых совпадает и не совпадает на видеокадре с местоположением визуальных объектов, путем маркировки ячеек, совпадающих с местоположением ячеек визуального объекта, соответствующим символом, и путем маркировки другим символом ячеек, местоположение которых не совпадает с местоположением ячеек визуального объекта, внутрикадровое кодирование, при котором формируют массив данных карты для визуального объекта данного видеокадра, причем если положение визуального объекта в следующем видеокадре постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных визуального объекта предыдущего видеокадра, а если положение визуального объекта в следующем видеокадре изменяется, то, формируя новую карту, для таких видеокадров изменяют массив данных визуального объекта, формирование и запоминание файла, образованного последовательностью карт, в которой каждая карта соответствует по меньшей мере одному видеокадру файла, согласно изобретению внутрикадровое кодирование производят путем выделения характеристических ячеек, совпадающих с контуром визуального объекта и в которых контур визуального объекта испытывает изменение формы, измеряют координаты контрольных точек – центры характеристических ячеек, а изменение контура визуального объекта между контрольными точками аппроксимируют, вводят локальную систему координат Х' и Y', характеризующуюся меньшим количеством ячеек, чем система координат Х и Y, при этом центр одной из ячеек принимают за начало системы координат X' и Y', направление осей которых параллельно осям Х и Y, при внутрикадровом кодировании формируют в карте массив данных контрольных точек в локальной системе координат X' и Y', который запоминают, причем если положение визуального объекта в следующем видеокадре постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных контрольных точек предыдущего видеокадра в локальной системе координат X' и Y', при изменении геометрической формы и/или положении визуального объекта в следующем видеокадре производят его межкадровое кодирование, при котором если положение ячеек визуального объекта в следующем видеокадре в локальной системе координат X' и Y' изменяется, а его контур сохраняется, то в массив данных карты следующего видеокадра вводят параметры вектора смещения для всех контрольных точек визуального объекта, если изменяется в локальной системе координат X' и Y' его контур, то производят упомянутое внутрикадровое кодирование этого видеокадра, получая массив данных контрольных точек нового видеокадра, далее определяют смещения соответствующих друг другу контрольных точек в локальной системе координат X' и Y'.

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

- в локальной системе X' и Y' визуальный объект геометрически ограничивали прямоугольником, который состоит из тех же ячеек, как и в системе координат Х и Y, визуальный объект вписан в упомянутый прямоугольник, центр начала координат X' и Y', располагают в центре угловой ячейки прямоугольника, а направление осей совпадает с направлением системы координат Х и Y;

- при аппроксимации использовали кусочно-линейную аппроксимацию;

- при аппроксимации использовали кривые Безье;

- при аппроксимации использовали кубические сплайны;

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

- при внутрикадровом кодировании выделение характеристических ячеек визуального объекта производили путем указания при помощи средств ручной разметки нескольких характеристических ячеек на контуре визуального объекта с автоматическим определением контрольных точек этих характеристических ячеек, а по визуальным характеристикам визуального объекта автоматически определяли его другие контрольные точки;

- при межкадровом кодировании вычисляли по массиву смещений контрольных точек для последующего видеокадра длину кода смещений по оси X' и Y', и в качестве массива данных межкадрового кодирования использовали код смещений по оси X' и Y';

- массив данных межкадрового кодирования подвергали сжатию путем введения в массив данных информации только о смещенных контрольных точках с кодом их смещения;

- массив данных межкадрового кодирования подвергали сжатию с использованием двоичного вектора;

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

- массив данных межкадрового кодирования подвергали сжатию с использованием связанного списка;

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

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

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

Поставленная задача с достижением указанного технического результата решается тем, что устройство для декодирования закодированного визуального объекта содержит блоки - ядро контроллера шины РСI, ядро контроллера прямого доступа к памяти, регистр базового адреса, регистр состояния, регистр команды, блок, обеспечивающий доступ в память со стороны контроллера PCI, блок для построения контура визуального объекта по контрольным точкам, в которых контур визуального объекта испытывает изменение формы, блок управления блоком для построения контура визуального объекта, блок для заливки области внутри контура визуального объекта, контроллер памяти, коммутатор потоков данных для памяти, блок логического объединения по ИЛИ сигналов готовности данных, триггер сигналов готовности данных регистров, при этом входы /выходы упомянутых блоков соединены шинами посредством типовых соединений для указанных блоков, причем блок для построения контура визуального объекта предназначен для создания контура визуального объекта по контрольным точкам и выполнен с возможностью приема координат контрольных точек от шины РCI, аппроксимации контура визуального объекта и передачи массива данных обо всех точках контура на шину ZBT, блок для заливки области внутри контура визуального объекта предназначен для маркировки ячеек внутри контура визуального объекта и выполнен с возможностью приема от шины ZBT массива данных обо всех точках экрана, выделения точек контура визуального объекта и точек, расположенных внутри контура визуального объекта, на шину ZBT, блок управления блоком для построения контура визуального объекта выполнен с возможностью поддержки порядка следования координат контрольных точек при подаче их в блок для построения контура визуального объекта.

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

Указанные преимущества, а также особенности настоящего изобретения поясняются лучшими вариантами его выполнения со ссылками на прилагаемые фигуры.

Фиг.1 изображает видеокадр с визуальным объектом (ВО);

фиг.2 – то же, что фиг.1 с ВО, вписанным в прямоугольник;

фиг.3 – формирование контура (границы) ВО, в котором смещение одной контрольной точки относительно другой показано стрелками;

фиг.4 - видеокадр с общим смещением ВО без изменения формы;

фиг.5 – видеокадр со смещением ВО с изменением формы;

фиг.6 – видеокадр с общим смещением группы контрольных точек контура ВО;

фиг.7 – формат кодирования информации о ВО при междкадровом кодировании;

фиг.8 – ВО с изменением формы для иллюстрации межкадрового кодирования:

фиг.9 – блок-схему алгоритма внутрикадрового кодирования;

фиг.10 – блок-схему алгоритма межкадрового кодирования;

фиг.11 – структурную схему устройства декодирования визуального объекта;

фиг.12 – блок для построения контура визуального объекта на пяти листах;

фиг.13 – схему блока заливки области внутри контура визуального объекта на двух листах;

фиг.14 – схему соответствия ячеек памяти пикселям изображения;

фиг.15 – схему блока управления блоком построения контура визуального объекта на двух листах;

фиг.16 – формат описания контрольной точки;

фиг.17 – схему системы для визуализации активного видео.

Способ кодирования координат перемещающегося на экране монитора компьютера видеоизображения включает вывод на экран монитора видеокадра (фиг.1) с изображением по меньшей мере одного ВО. Разделяют видеокадр с визуальным объектом на Х х Y ячеек, где Х и Y – 0, 1, 2, ... , имеющих форму элементарных квадратов или прямоугольников. Выделяют ячейки, местоположение которых совпадает и не совпадает на видеокадре с местоположением ВО, маркируя ячейки, совпадающие с местоположением ячеек визуального объекта, соответствующим символом, например единичным флагом, и маркируя другим одним символом, например нулевым флагом, ячейки, местоположение которых не совпадает с местоположением ячеек ВО, например, как в ближайшем аналоге. Производят внутрикадровое кодирование, при котором формируют массив данных карты для ВО данного видеокадра. Причем если положение ВО в следующем видеокадре видеофайла постоянно, то, формируя новую карту, для таких видекадров сохраняют массив данных ВО предыдущего видеокадра, а если положение ВО в следующем видеокадре изменяется, то, формируя новую карту, для таких видеокадров изменяют массив данных ВО. Далее формируют и запоминают файл, образованный последовательностью карт, в которой каждая карта соответствует по меньшей мере одному видеокадру видеофайла.

Внутрикадровое кодирование производят путем выделения характеристических ячеек (фиг.1, 2), совпадающих с контуром ВО (фиг.1, 2), и в которых контур ВО испытывают изменение формы. Измеряют координаты контрольных точек – центры характеристических ячеек (фиг.1). Изменение контура между характеристическими ячейками аппроксимируют математическими выражениями между контрольными точками (на фиг.3 показана кусочно-линейная аппроксимация). Вводят локальную систему координат X' и Y' (фиг.1). Вводить локальную систему координат X' и Y' можно различным образом, располагая ее центр ближе к ВО. Для уменьшения объема кодируемой информации целесообразно ВО геометрически ограничивать прямоугольником, который состоит из ячеек, а центр одной из ячеек принимать за начало системы координат X' и Y', направление осей которой параллельно осям Х и Y. Все внутренние точки, находящиеся внутри контура составляют внутреннюю область ВО, не являются контрольными точками и не кодируются в дальнейшем, и автоматически задаются контуром ВО. После внутрикадрового кодирования запоминают в карте видеокадра этот массив данных контрольных точек с математическими выражениями для ВО.

При изменении геометрической формы и/или положения ВО в следующем видеокадре (фиг.4-6) производят его межкадровое кодирование. Если положение ячеек ВО в следующем видеокадре изменяется, а его контур сохраняется, то в массив данных карты следующего видеокадра вводят параметры вектора смещения для всех контрольных точек (фиг.4). Если изменяется положение ячеек ВО и его контур (фиг.5, 6), то производят упомянутое внутрикадровое кодирование этого видеокадра, получая массив данных контрольных точек нового видеокадра. Далее определяют смещения соответствующих друг другу контрольных точек и кодируют их, а закодированный массив этих смещений контрольных точек служит для формирования массива данных межкадрового кодирования.

Пример кодирования смещения ВО, представленного на фиг.4.

[1] есть изменения ВО

[I] ВО сместился

[10] кодируем смещение однопиксельными сдвигами

[011] код смещения на юго–восток

Пример кодирования смещения ВО, представленного на фиг.5.

[1] есть изменение ВО

[I] ВО сместился

[10] кодируем смещение однопиксельными сдвигами

[010] код смещения на восток

Пример кодирования изменения размеров ВО, представленного на фиг.5:

[1] есть изменение размеров области отображения ВО;

[I] кодируем однопиксельные изменение размеров

[011] размер каждой стороны увеличился на 1 ячейку

Пример кодирования изменение формы ВО, представленного на фиг.5;

[1] есть изменения формы ВО

[00] код способа представления формы – двоичный вектор смещений опорных точек

[1] [00] устанавливаем кодирование по осям с помощью однопиксельных сдвигов

число точек в двоичном векторе известно с предыдущего кадра – оно не изменилось

[0] 0 – точка осталась на месте

[1] [111] 1 – точка сместилась на северо-запад

[1] [000] 2 – точка сместилась на север

[0] 3 – точка осталась на месте

[1] [100] 4 - точка сместилась на юг

[1] [110] 5 – точка сместилась на запад

[1] [000] 6 – точка сместилась на север

Пример кодирования общего смещения группы опорных точек ВО, представленного на фиг.6:

[1] есть изменения формы ВО

[10] код способа представления формы – двоичный вектор смещений опорных точек с общим движением групп.

[1] [00] устанавливаем кодирование по осям с помощью однопиксельных сдвигов

[011] группа из трех точек

[1] сместилась

[010] на восток

[100] оставшиеся четыре точки

[0] не поменяли свое положение

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

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

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

Таким образом, в качестве промежуточного массива данных полученного для отдельного видеокадра могут служить данные, полученные по первому или второму пути. Если массив данных кода смещений ВО видеокадра превысит массив данных этого ВО, полученный при внутрикадровом кодировании, то за результат межкадрового кодирования принимается результат внутрикадрового кодирования. (За результат массива данных ВО межкадрового кодирования принимается минимальный по длине код промежуточного межкадрового кодирования или результата внутрикадрового кодирования). Особенно такой выбор различных путей желательно использовать для ВО, сильно изменяющих свою форму в следующем видеокадре. Если объект слабо изменяет свою форму, то выбирают первый путь.

Для уменьшения длины кода ВО (фиг.2) вписан в упомянутый прямоугольник. Центр начала координат X' и Y' располагают в центре угловой ячейки прямоугольника, а для простоты и удобства при переходе из одной системы координат в другую направление осей X' и Y' выбирают совпадающим с направлением системы координат Х и Y.

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

При внутрикадровом кодировании в качестве математических выражений могут также использовать кривые Безье или кубические сплайны, которые целесообразно применять в силу их математических свойств плавного сопряжения участков контура (Роджерс Д., Адамс Дж. Математические основы машинной графики: Пер. с англ. – М.: Мир, 2001, - 604 с., ил., ISBN 5-03-002143-4, стр.260-380).

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

"Карандаш" – идентификация отдельных характеристических ячеек путем выделения ячеек на отображаемом на экране видеокадре с помощью манипулятора (мышь);

"Прямоугольник" – идентификация характеристических ячеек в прямоугольной области на кадре, путем растягивания изображения прямоугольника на области отображения ВО;

"Стирание" – отмена идентификации ячеек объекта;

"Волшебная палочка" – идентификация ячеек, принадлежащих контуру ВО (аналогично инструменту "Волшебная палочка" в графических редакторах типа Adobe Photoshop).

При внутрикадровом кодировании выделение характеристических ячеек ВО можно производить путем указания при помощи упомянутых средств ручной разметки нескольких характеристических ячеек на контуре визуального объекта с автоматическим определением контрольных ячеек этих характеристических ячеек, и по визуальным характеристикам визуального объекта автоматически определяют его другие контрольные точки, например, по яркости или контрасту или цвету (Рудаков П.И., Сафонов И.В. Обработка сигналов и изображений. Marlab 5.x/ Под общ. ред. К.т.н. В.Г. Потемкина. – М.: ДИАЛОГ – МИФИ, 2000, -416 с. –(Пакеты прикладных программ; кн.2), стр.360-365).

Массив данных межкадрового кодирования подвергают сжатию путем введения в массив данных информации только о смещенных контрольных точках с кодом их смещения (фиг.5).

Массив данных межкадрового кодирования может быть подвергнут сжатию с использованием двоичного вектора или связанного списка (Ахо Альфред В., Хопкрофт Джон Э., Ульман Джеффри Д. Структуры данных и алгоритмы.: Пер. с англ.: Уч. пос. - М.: Издательский дом "Вильямс", 2000, -384, с.: ил. – Парал. тит.англ., ISBN: 5-8459-0122-7 (рус.), стр.109-113).

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

Видеопоток можно разбить на логические фрагменты, в которых продолжительное время отображаются мало меняющееся по составу и динамике множество ВО. Фрагменты далее разбиваются на последовательность сцен. Каждая сцена является непрерывным движением ВО. Каждая сцена обладает особенностями по отображению ВО. Вычленение этих общих для всех объектов сцены характеристик является важным для кодирования процессом, помогая существенно сжать структурную информацию в кадре, а может даже в сцене. Следующий уровень видеоданных – это видеокадры, на которые разбивается сцена. Здесь каждая ВО позиционирован и имеет определенную форму.

Для всех кадров вводится прямоугольная целочисленная сетка (фиг.1) с постоянными параметрами: дискретными шагами по горизонтали и вертикали, ширины М и высоты N ячеек. Размеры сетки M и N ограничены размерами области отображения видеопотока.

На сетку накладывается система координат Х, Y. Ячейка принадлежит ВО, если их области полностью или частично совпадают. В результате для ВО получают бинарное растровое изображение. Такая сетка вводится для всего видеопотока, и ее параметры (количество ячеек, определяемых их шириной и высотой) зависят от требуемого качества передаваемой информации.

В описание ВО включается его положение, размеры, форма, приоритет по его отображению. На протяжении последовательных кадров эти характеристики ВО могут меняться. Форма ВО отображается в виде двухмерного образа (фиг.2). Информативной составляющей является его контур – граница, которая необходимо состоит из одной части, не имеет разрывов и самопересечений, разбивает плоскость отображения на внутреннюю (конечную) и внешнюю (бесконечную) области. Находя максимальные и минимальные значения координат контрольных точек ВО по осям Х и Y, определяем область отображения и вводим в нее локальную систему координат X' и Y'.

Форма ВО представлена массивом контрольных точек с местом аппроксимации контура. Задание формы у ВО решается на этапе выделения объекта из видеопотока. Используется векторный способ задания контура (фиг.3). Для этого устанавливается начальная контрольная точка контура, например, ближайшая к началу локальной системы координат X' и Y' области отображения, и ее локальные координаты. Далее последовательно определяется смещение соседних контрольных точек относительно предыдущих. Преимущество векторного формата в его простоте, настраиваемой точности задания контура, в его возможности масштабировать изображение без потери качества и в эффективных алгоритмах обработки. Векторный формат визуальных объектов также универсален с точки зрения постановки данной задачи, как описание границ двухмерных образов.

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

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

Заданные визуальные объекты представляют исходные данные для внутрикадрового и межкадрового кодирования. Каждый ВО в кадре может поменять местоположение, размеры прямоугольника отображения, свою форму полностью или частично у группы контрольных точек контура, остаться неизменным. В видеокадре также могут появиться новые и/или исчезнуть старые ВО. Визуальные объекты могут иметь совпадающие ячейки. Объекты сцены могут быть подвергнуты аффинным преобразованиям - это стандартные движения камеры: укрупнение плана, поворот и движение камеры по прямой линии.

Для более гибкого использования заявленного способа и возможной технологии кодирования визуальных объектов, например, при применении в активном видео формат кодирования специфицируется набором параметров. Часть параметров представляют собой незименяемые характеристики для всего видеопотока – это геометрические параметры аппроксимационной сетки, общие для всех объектов настройки. Другая часть является динамически изменяемой в зависимости от характера сцен видеопотока.

В качестве возможного варианта может быть использована следующая спецификация формата кодирования.

Формат может быть описан в специальной формальной грамматике – форме Бэкуса-Наура. Символы в определениях "::=" означают "определяется как ". Для альтернатив используется разделитель "|". Символ в конце выражения "+" значит "один или более", символ "*" значит "ноль или более" и "?" значит "ноль или один". Комментарии добавлены в виде: <!"-комментарий->" или "<категория языка> комментарий".

Выделенная структурная информация кодируется в особый формат ВО и составляет ХМL–документ. Он состоит из обязательного заголовка документа и последовательности кадров, составляющих сцены и предваряемых необязательным заголовком сцены. Каждый кадр, в свою очередь, состоит из списка активных ВО.

<документ ВО>::=

<заголовок документа>

(заголовок сцены? (ВО кадра)*)*

<заголовок документа>::=

<ХМL заголовок> Тип документа

<V:32bit> Версия /расширение (V=1.0)

<N:32bit, M:32bit> Размеры сетки

<Flags:32bit> Флаг установок

<заголовок сцены>::=

<Т1> Код сцены

<! – Служебная информация по общим для данной сцены: настройкам, способам кодирования и задания границы ->

</T1> Код завершения заголовка сцены

<ВО кадра>::=

<T2> Код списка ВО кадра

<32bit> Служебная информация по кадру

<32bit> Длина массива кодовой информации в байтах

<кодированная информация по ВО кадра>

<N_OLD> Число старых ВО

<формат ВО>*N_OLD

<N_NEW> Число новых ВО

(<область отображения ВО>

<формат ВО>)*N_NEW

</T2> Код завершения списка ВО кадра

<область отображения ВО>::=

<X:bit8, Y:bit8> Начальная точка области отображения ВО

<W:bit8, H:bit8> Размеры области отображения по ширине и высоте

<1D:bit8> Идентификатор ВО

<Формат ВО>::=

[0] – Нет изменений или сохранение предыдущего движения!

<1> Есть изменения

[1] [0] Нет движения

[1] <1> Есть движение

[1] [1] [0] [x:8bit, y:8 bit] Обычные координаты

[1] [1] <10> Однопиксельные сдвиги

[1] [1] [10] [direct:3bit] код сдвига О-N, 1-NE, 2-Е, ..., 7 –NW

[1] [1] <11> Короткие координаты

[1] [1] [11] <ХХ> Код длины сдвига 00 - 3bit, 01 - 4bit, 10 - 5bit, 11 - 6bit

[1] [1] [11] [01] <x:4bit, y:4bit> Координаты смещения знаковые

<! -[X]::=[prefix]->

[X] [0] Размеры прежние

[X] <1> Размеры изменились

[X] [1] [0] <...> Обычные координаты

[X] [1] [1] [0] <...> Однопиксельные сдвиги

[X] [1] [1] [1] <...> Сжатые координаты

<!-[X]::=[prefix]->

[X] [0] Форма прежняя

[X] <1> Форма изменилась

<формат изменений формы>

<формат изменений формы>::=

<! -Для ВО некоторые настройки

могут быть установлены при создании ->

(<тип списка>::=

<ТЗ> Двоичный вектор

|<T4> <2bit>

Связанный список, с разрядностью указателей

)?

<установки кодирования по оси Х>?

<установки кодирования по оси Y>?

(<смещение контрольной точки>)+

|(<смещение интервала контрольных точек)*

<установки кодирования по оси>::=

<0> Нет кодирования

<1> Есть кодирование по оси

[1] <тип смещения>

<смещение контрольной точки>::=

(<указатель контрольной точки)? <смещение>

<смещение интервала контрольных точек>::=<интервал><cмещение>

<смещение>::=(<тип смещения>)? <величина смещения>

Каждый видеокадр оформляется заголовком, который содержит сопутствующую и индивидуальную информацию. После него размещается формат списка объектов видеокадра. Список ВО упорядочен по важности отображения и по глубине сцены. Число ВО сцены устанавливается в кодовом заголовке сцены. На ВО можно ссылаться по очередности доступа в списке или по его идентификатору. Новые ВО сцены описываются кодом “нового объекта” и задаются динамически полной информацией. Старые ВО, которые необходимо удалить, кодируются кодом “удаления”. В списке ВО видеокадра содержится кодированная информация обо всех ВО данного видеокадра.

На фиг.7 представлена схема кодирования ВО. Этот формат представляет бинарную последовательность заданной длины. В формате используется минимальный код для тегов с частым использованием. Он оптимизирован под минимальным общие изменения формы ВО. Ниже приведены варианты формата кодирования ВО с разной информацией по динамике изменения формы.

Для выделения групп визуальных объектов, а также групп контрольных точек контура ВО применяются кодовые теги. Таким образом, закодированная общая динамика минимизирует информацию по каждому ВО, делегируя ее соответствующей группе.

<Тег блока > <cod:4bit> <формат действия>?

(((<ВО>* (<точка>)*) (<Тег блока><TO>)?)?

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

На фиг.8 показано изменение формы ВО. Точки с номерами 1,2,7,8 не поменяли своего положения, точка 3 сдвинулась вниз на одну ячейку, точки 4,5,6 сдвинулись вниз на 2 ячейки. Для точек, которые сдвинулись, отмечены смещения по оси Y.

Способ сжатия массива данных с помощью двоичного вектора. Объем кодирования информации 32 бита.

I. Способ сжатия массива данных, используя связанный список с 2 битовыми указателями. Объем кода 36 бит.

II. Способ дополнительного сжатия с использованием анализа общего движения I способа сжатия. Объем кода 32 бит.

III. Способ дополнительного сжатия с использованием анализа общего движения II способа сжатия. Объем кода 29 бит.

Расчет эффективности методики кодирования ВО состоит в определении степени сжатия структурной и динамической информации ВО в видеокадрах. Исходная информация об ВО задается в растровом бинарном виде на сетке аппроксимации. Конечная информация - это кодированный формат исходной информации. Тогда степень сжатия равна отношению объема исходной информации к объему кодированной информации. Характеристики ВО приведены в таблице 1.

Степень сжатия при кодировании начальной формы ВО (внутрикадровое кодирование).

Каждая контрольная точка контура в векторном формате задается смещением в локальной системе координат Х', Y'. Размеры этой системы координат определяют разрядность смещения. Предположим, что распределение контрольных точек по контуру будет равномерным. Тогда длины смещений будут равными для всех контрольных точек

|R|=L/K. Разрядность координат смещения будет равна V(R)=2*log(L/K), где log обозначает логарифм по основанию 2. Объем кодированной информации по всем контрольным точкам будет равен Vcod=K*V(R)=K*2*log(L/K). Максимальное значение достигается при K=L/e, где е=2,71828 основание натурального логарифма. Тогда Vcod=(L/e)*2*log(L/(L/e))=L*2/e*log(e)=L*1,06L. Сделаем еще одно предположение, что длина контура пропорциональна периметру области отображения L=kP с коэффициентом пропорциональности k=2. Получим следующую оценку для объема кодированной информации Vcod=L=kP=4(W+H). Объем бинарного растрового изображения равен площади области отображения V=W*H бит. Для квадратных областей (W=H) получим следующее соотношение объемов данных:

f=V/Vcod=(W*H)/(4(H+W))=H*H/(8H)=H/8.

Для ВО, умещающегося в области размера НW=16х16 ячеек, получим f=16/8=2. Увеличивая размеры области, мы будем также увеличивать степень компрессии данных. Мы видим, что для начального задания формы ВО или задания ВО с быстро меняющейся формой данный способ кодирования эффективен.

Степень сжатия при межкадровом кодировании

Для динамичных объектов, у которых изменение положения точек границы больше, чем их векторное задание смещениями относительно соседних точек, передается новая форма границы.

Сделаем оценку межкадрового кодирования динамики ВО в среднем случае, за который примем смещения на одну ячейку у 10% контрольных точек контура. Смещающиеся контрольные точки кодируются в этом случае 3 битами информации. Следовательно, получим такие оценки

Vcod=10%*K*3=0,1*L/e*3=0,3*4(W+H/)/e=0,44(W+H)

f=V/Vcod=(W*H)/(0,44(W+H)))=(H*H)/0,88H=H/0,88=1,14H

и для H=16 получим степень сжатия f=18 раз.

Дополнительное сокращение объема кодированной информации произойдет вследствие анализа общего движения ВО и движения групп контрольных точек контура.

Рассмотрим случай общего движения группы Q контрольных точек контура в соседние ячейки. такое движение кодируется 3 битами. Таким образом, степень дополнительного сжатия равна: fдоп=Vcod/Vдоп=(Q*3)/3=Q, т.е. пропорциональна числу контрольных точек, имеющих общее движение.

Кодирование контура нового ВО основывается на наблюдении, что для любых соседних контрольных точек границы изменения координат по каждой оси Х' и Y' ограничены. Максимальные значения этих изменений определяют разрядность смещений, учитывая знак. Но если по какой либо оси длина такого кода будет больше длины обычных координат, то решение принимается в сторону представления соответствующей координатой. Такие случаи будут встречаться крайне редко, их даже можно устранить, введением дополнительных контрольных точек на контуре. В таблице 2 приведены длины кодов для одной из осей сетки 256256.

Алгоритм внутрикадрового кодирования осуществляется следующим образом (фиг.9).

Блок 1. Процедура кодирования. Определяет для каждого нового ВО кодированную информацию о его контуре. Состоит из вызовов вспомогательных процедур для каждого ВО.

Блок 2. Входные данные по ВО составляют массив координат из К контрольных точек контура. Координаты соответствуют положению контрольной точки на сетке аппроксимации.

Блок 3. В случае необходимости определяется область отображения ВО. Для этого находятся максимальные и минимальные значения координат:

Хmin, Xmax, Ymin, Ymax.

Блок 4. Определение смещение начала координат области отображения:

Х0=Xmin, Y0=Ymin.

Блок 5. Определение размеров области отображения:

W=Xmax-Xmin+1, H=Ymax-Ymin+1

Блок 6. Определение начальной контрольной точки контура. Для этого находим первую точку Р (х, у) с ординатой у=Ymin. Смещение d0 этой контрольной точки от начала области отображения по оси абсцисс запоминаем в dx0=x-X0.

Блок 7. От начальной точки границы находим массив из К смещений между соседними контрольными точками: dX[i]=X[i]-X[i-1], dY[i]=Y[i]-Y[i-1]

и значения максимальных по модулю смещений по оси Х и Y:

DXmax=max{abc(dX[i]}, DYmax=max{abc(dY[i]}.

Блок 8. Определяем метод кодирования для каждой оси. Для этого сравниваем разрядность DХmax и W. Если len(DXmax)+1 <len(W), то выбираем кодирование с помощью смещений x[i]=dX[i] и длина кода по Х равна LX=len(Dmax)+1, иначе берем в качестве кода локальные координаты x[i]=X[i]-X0 и LX=len(W).

Аналогичные действия выполняют при кодировании координат по оси Y.

Блок 9. Выходные данные представляют собой:

параметры области отображения - Х0, Y0, d0;

длины кода смещений по осям - LX, LY;

число контрольных точек - К;

массивы кодированных координат контрольных точек - х[1:K], y[l:K].

Алгоритм межкадрового кодирования осуществляется следующим образом (фиг.10).

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

Блок 10. Процедура межкадрового кодирования изменений формы. Состоит из вспомогательных процедур (блоки 11-22). Назначение процедуры в кодировании для каждого уже созданного ВО его передаваемых изменений на видеокадре.

Блок 11. Входные данные. ВО - массив координат из К1 контрольных точек текущего видеокадра Point1 [Kl] с отметками о новых и удаленных контрольных точках, К0 контрольных точек предыдущего видеокадра Point0 [K0]индивидуальные параметры.

Блок 12. Кодирование изменения положения и изменения размеров области отображения.

Блок 13. Вычисление для всех контрольных точек контура смещений на данном видеокадре относительно положения на предыдущем кадре.

Блок 14. Определение способа кодирования координат. Вычисляется размер кодов смещений по осям X’ и Y’ по максимальным смещениям, учитывая знак смещения.

Блок 15. Для всех типов представления смещений контрольных точек контура вычислить объем кодированных данных, используя уже заданную длину кода смещений контрольный точек по осям X’ и Y’.

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

Блок 17. Выбрать способ, минимальный по объему кодированных данных, исходя из вариантов представления списка контрольных точек.

Блок 18. Кодирование ВО, как нового. Вычисление объема кодированных данных.

Блок 19. Сравнение кодирования смещения с кодированием как нового ВО. Выбор наименьшего варианта по объему данных (описанный выше путь 1 или 2).

Блок 20. Выходные данные. Способ кодирования координат, способ кодирования контура, кодированные данные контрольных точек контура.

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

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

Устройство для декодирования закодированного визуального объекта (фиг.11), содержит следующие блоки: ядро 101 контроллера шины РСI, ядро 102 контроллера прямого доступа к памяти, регистр 103 базового адреса, регистр 104 команды, регистр 105 состояния, блок 106, обеспечивающий доступ в память со стороны контроллера РСI, блок 107 для построения контура визуального объекта по контрольным точкам, блок 108 для заливки области внутри контура визуального объекта, коммутатор 109 потоков данных для памяти, блок 110 логического объединения по ИЛИ сигналов готовности данных, триггер 111 сигнала готовности данных регистров, контроллер 112 памяти, блок 113 управления блоком 107 для построения контура визуального объекта. Входы/выходы указанных блоков соединены шинами посредством типовых соединений, которые используются в контроллерах компьютеров и известны из уровня техники. Блоки 101-106, 109-112 являются типовыми. Блоки 107, 108, 113 являются разработанными в соответствии с заявленным устройством. Блок 107 для построения контура визуального объекта предназначен для создания контура визуального объекта по контрольным точкам. Блок 108 для заливки области внутри контура визуального объекта предназначен для маркировки ячеек внутри контура визуального объекта. Блок 113 управления блоком 107 построения контура ВО предназначен для управления функционированием блока 107 для построения контура визуального объекта.

Входами и выходами схемы являются шины РСI 114 и ZBT 115. Шина PCI 114 предназначена для обмена информацией с основным процессором и общей оперативной памятью РС. Шина ZBT 114 предназначена для обмена информацией с локальной оперативной памятью на базе микросхем памяти семейства ZBT SRAM фирмы Micron.

Ядро 101 контроллера шины РСI предназначено для интеграции устройства в РС через шину РСI. Для этого ядро 101 обеспечивает обработку обращений на запись и чтение из памяти по трем адресным диапазонам BAR0, BAR1 и BAR2. Непосредственные значения адресов начала диапазонов определяются во время инициализации устройства в РС средствами Plug'nPlay. При обращении к ячейкам памяти адресного диапазона BAR0 осуществляется обращение в регистры 103, 104, 105 соответственно BASE_ADR, CAMMAND и STATUS, которые имеют соответственно следующие адреса: BAR0+0x04, BAR0+0x08 и BAR0+0x0C. Общий сброс устройства осуществляется транзакцией записи через шину РСI по адресу BAR0+0x00. При обращении к ячейкам памяти адресного диапазона BAR1 осуществляется доступ, если он разрешен к локальной памяти устройства. При обращении к ячейкам памяти адресного диапазона BAR2 осуществляется доступ к регистрам ядра 102 контроллера DMA.

Регистр 103 BASE_ADR предназначен для задания базового адреса размещения в локальной памяти устройства области, выделенной для построения визуального объекта. При записи в данный регистр 103 сигналы шины РСI 114 преобразуются ядром 101 контроллера РСI в локальные сигналы (поступающие соответственно на пронумерованные на фиг.11 шины) 118 доступа к регистрам AРР_ADR - локальный адрес регистра, APP_ADI 119 - данные для записи, Т_BARHIT 120 - номер адресного диапазона обращения (1 - BAR0, 2 - BAR1, 4 - BAR2), APP_MASTER 121 - режим работы, T_WR 122 - сигнал записи, T_WE 123 - сигнал поддержания записи. После выдачи единицы на нулевом разряде шины T_BARHIТ 120, что обозначает, что осуществляется доступ к регистрам 103, 104, 105 устройства, производиться дешифрация адреса на шине APP_ADR 118. Если данный адрес равен 0х04 и на линии T_WR 122 выставлена единица, то на линию REG_DRDY 163 выдается единица, что после объединения по ИЛИ в блоке 110 с другими аналогичными сигналами DMA_DRDY 133 и MEM _DRDY 146 и получением сигнала T_DRDY по ширине 17, обозначает для ядра 101 контроллера РСI, что регистр 103 BASE_ADR готов к записи в него значения, выдаваемого на шину APP_ADI 119. После чего выдачей единицы на линии T_WE 123 ядро контроллера разрешает запись в регистр 103. При осуществлении чтения из регистра 103 механизм аналогичный, но после дешифрации адреса и номера диапазона, при наличии на линии T_RD 124 единицы, регистр 103 выставляет на шину APP_ADO 116 свое значение одновременно с выдачей единицы на линии REG_DRDY 163. Ядро 101 контроллера РСI после получения сигнала T_DRDY 117 выставляет на шину РСI 114 содержимое регистра 103 BASE_ADR.

Аналогичным образом осуществляется запись и чтение и регистр 104 COMMAND, но при этом на шине APP_ADR 118 дешифрируется адрес 0х08 и на линию StartIn 136 выдается сигнал с задержкой в 5 тактов T_WE 123.

Регистр 105 STATUS доступен со стороны шины РСI только на чтение, и имеет адрес 0х0С. Регистр 105 STATUS является объединением сигналов по шинам DrawLine _Finish 137, Fill_Finish 138, Fill_Error 139 и Fill_int 140. При обращении к данному регистру 105 на шину РСI 115 выставляется 4-х битное слово, составленное из вышеперечисленных сигналов.

Устройство осуществляет свою работу на основании содержимого регистра 104 COMMAND. Для задания нового режима работы необходимо записать в данный регистр 104 значение новой команды.

00 - NOP нет операции

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

01 - доступ в память в target режиме для чтения и записи

При записи в регистр 104 COMMAND значения 001 коммутатор 109 MUX подсоединяет к шине МЕМ_ADR 160 шину BURST_ADR 143, к шине МЕМ_DI 161 шину BURST_DO 144, к шине 162 MEM_WR шину 145 BURST_WR. Соответственно в свою очередь сигналы по шинам BURST_ADR 143, BURST_DO 144, MEM_DO 141 и BURST_WR 162 объединяются с сигналами по шинам APP_ADR 118, APP_ADI 119, APP_ADO 116, COMMAND 135 и T_WE 123 в блоке 106 BURST_BUFFER при появлении единицы на втором разряде шины T_BARHIT 120. Таким образом, после сигнала по шине DRDY 142, равного единице, и выдачи сигнала по шине МЕМ_DRDY 146 при записи в BAR1 будет происходить запись информации в локальную память устройства через контроллер 112 памяти ZBT. При чтении из BAR1 аналогичным образом будет осуществляться доступ к информации в локальной памяти.

02 - доступ в память в master режиме для чтения и записи

Аналогично режиму доступа в память в target режиме, но в блоке 106 BURST BUFFER шина BURST_ADR 143 будет подключена к внутреннему счетчику блока 106, начальное состояние которого задается значением сигнала BASE_ADR по шине 134, шина BURST_DO 144 подключается к шине FIFO_out 128, шина FIFO_in 125 к шине МЕМ_DO 141, а на основании передаваемых сигналов по шинам FIFO_out TE 129, FIFO_out_AE 130, FIFO_in_TF 131, FIFO_in_AF 132 и сигнала DRDY 142 будут рассчитываться сигналы МЕМ_WR 162 для записи или чтения из локальной памяти устройства, FIFO_in_WR 126 для записи в очередь ядра 102 контроллера DMA и сигнал FIFO_1_RD 147, который на коммутаторе 109 MUX при наличии команды 0х02 будет выдаваться как сигнал шины FIFO_out_RD 127 для считывания из очереди ядра 102 контроллера DMA. Таким образом, после настройки ядра 102 контроллера DMA для записи или чтения оперативной памяти РС данные из локальной памяти устройства будут переписаны в общую память РС при чтении из нее или данные из общей памяти будут переданы в локальную память устройства при записи в нее. Обеспечение режимов работы ядра 102 контроллера DMA осуществляется путем записи командной информации в его управляющие регистры, которые доступны при обращении по адресам BAR2.

03 - построение контура

При записи в регистр 104 COMMAND значения 0х3 при помощи коммутатора 109 MUX шина МEМ_ADR 160 подсоединяется к шине DrawLine_ADR 154, шина МЕМ_DI 161 к шине DrawLine_DO 155, а сигнал шины MEM_WR 162 объединяется с сигналом DrawLine_WR 153. Сигнал шины FIFO_2_RD 159, генерируемый в блоке 113 DrawLine Control, в коммутаторе 109 MUX объединяется с сигналом шины FIFO_out_RD 127. Таким образом, после настройки ядра 102 контроллера DMA для чтения массива контрольных точек контура и появления сигнала StartIn, равного единице, активизируется блок 113 DrawLine Control. Данный блок 113 при условии равенства флага FIFO_out_TE 129 нулю осуществляет считывание двух первых контрольных точек из очереди ядра 102 контроллера DMA по шине FIFO_out 128. Блок 107 преобразует их в непосредственные координаты начала и конца отрезка контура путем выставления на шины Х1 149, Х2 150, Y1 151 и Y2 152 соответствующих значений. Блок 113 генерирует по линии DrawLine_Start 148 импульс, равный единице, длиной в один такт, который служит для запуска блока 107 DrawLine. Окончание работы блока 107 DrawLine символизирует единица на линии DrawLine_Finish 137, после получения которой блок 113 DrawLine Control осуществляет считывание из очереди ядра 102 контроллера DMA еще одной контрольной точки и выставляет на шины X1 149, X2 150, Y1 151 и Y2 152 соответствующие значения для построения следующего отрезка контура. Таким образом, работа будет продолжаться до вычисления всех контрольных точек в очереди ядра 102. Блок 107 DrawLine после получения сигнала запуска по шине DrawLine _Start 148 и начальных и конечных точек отрезка контура начинает расчет координат всех остальных точек контура, при этом из памяти по рассчитанным координатам и значению сигнала по шине BASE_ADR 134 производится считывание значения, хранимого в памяти, рассчитанные точки отрезка контура устанавливаются в единицу.

04 - заливка области внутри построенного контура

При записи в регистр 104 COMMAND значения 0х4 при помощи коммутатора 109 MUX шина MEM_ADR 160 подсоединяется к шине FILL_ADR 157, шина MEM_DI 161 к шине FILL_DO 158, а сигнал шины МEM_WR 162 объединяется с сигналом шины FILL_WR 156. После появления сигнала на шине StartIn 136 активизируется блок 108 FILL. Начиная с адреса хранимого в регистре 103 BASE_ADR блок 108 FILL последовательно считывает из памяти ячейки, заполняет внутреннее пространство контура символами, например, единицами и снова записывает данные ячейки на старое место памяти. Если в процессе заполнения области внутри контура произошли аппаратно выявляемые ошибки, то на линии шины Fill_Error 139 будет выставлена единица, по окончании заливки области внутри контура выставляется сигнал на шине Fill_Finish 138, равный единице, и сигнал на шине Fill_int 140, равный единице.

05 - модификация построенного контура

При записи в регистр 104 COMMAND значения 0х5 при помощи коммутатора 109 MUX шина MEM_ADR 160 подсоединяется к шине DrawLine_ADR 154, шина MEM_DI 161 к шине DrawLine _DО 155, а сигнал шины MEM_WR 162 объединяется с сигналом шины DrawLine _WR 153. Сигнал на FIFO_2_RD 159, генерируемый в блоке 113 DraweLine Control, в коммутаторе MUX 109 объединяется с сигналом шины FIFO_out_RD 127. Таким образом, после настройки ядра 102 контроллера DMA для чтения массива данных модификации залитой области и после появления сигнала на шине 136 StartIn, равного единице, активизируется блок 113 DrawLine Control. Блок 113 при условии равенства флага FIFO_out_TE 129 нулю осуществляет считывание данных первой контрольной точки для модификации из очереди ядра 102 контроллера DMA по шине FIFO_out 128. Блок 113 преобразует эти данные в непосредственные координаты начала и конца отрезка контура путем выставления на шины Х1 149, Х2 150, Y1 151 и Y2 152 соответствующих значений. При этом координаты начала и конца отрезка контура будут совпадать. После чего блок 113 генерирует по линии DrawLine_Start 148 импульс, равный единице, длиной в один такт, который служит для запуска блока 107. Окончание работы блока 107 DrawLine символизирует единица на линии DrawLine_Finish 137, после получения которой блок 113 DrawLine Control осуществляет считывание из очереди ядра 102 контроллера DMA данных еще одной контрольной точки, и выставляет на шины Х1 149, Х2 150, Y1 151 и Y2 152 соответствующие значения для модификации следующей контрольной точки. Таким образом, работа будет продолжаться до вычисления всех точек в очереди ядра 102 контроллера DMA. Блок 107 DrawLine после получения сигнала запуска по шине DrawLine_Start 148 и координат для модификации внутренней области контура визуального объекта по рассчитанным координатам и значению на шине BASE_ADR 134 производит считывание значения, хранимого в памяти. Рассчитанная точка в данной ячейке памяти устанавливается в единицу, сложенную по логическому исключающему ИЛИ блока 110 со старым значением и с сохранением прежней незатронутой информации снова записывается в локальную память устройства по шине 115.

06 - очистка области памяти для построения контура

При записи в регистр 104 СOMMAND значения 06 при помощи коммутатора 109 MUX шина MEM_ADR 160 подсоединяется к шине FILL_ADR 157, шина MEM_DI 161 к шине FILL_DO 158, а сигнал шины МEM_WR 162 объединяется с сигналом шины FILL_WR 156. После появления сигнала на шине StartIn 136 активизируется блок 108 FILL. Начиная с адреса, хранимого в регистре 103 BASE_ADR, блок 108 FILL последовательно считывает по шине 115 из локальной ячейки памяти ее содержимое и независимо от старого содержимого ячейка заполняет ее всеми нулями и снова записывает данные ячейки на прежнее место. По окончании работы будет выставляется равный единице сигнал на шине Fill_Finish и равный единице сигнал на шине Fill_int 140. Таким образом, после окончания работы все ячейки заданной области локальной памяти будут обнулены.

07 - зарезервировано

Как видно из описания работы схемы (фиг.11), блок 107 выполнен с возможностью приема координат контрольных точек от шины РСI, аппроксимации контура ВО и передачи массива данных обо всех точках контура ВО на шину ZBT. Блок 108 выполнен с возможностью приема от шины ZBT массива данных обо всех точках экрана, выделения точек контура ВО и точек, расположенных внутри контура ВО, и передачи массива данных обо всех точках, расположенных внутри контура ВО на шину ZBT. Блок 113 выполнен с возможностью поддержки порядка следования координат контрольных точек при подаче их в блок 107.

Таким образом, устройство обеспечивает при помощи блока 107 формирование контура визуального объекта по контрольным точкам, а при помощи блока 108 для заливки области внутри контура визуального объекта - маркировку ячеек внутри контура ВО, а управление блоком 107 осуществляется блоком 113. Конструктивное выполнение остальных блоков 101-106 и 109-112 является типовым и известным из уровня техники.

Блок 107 построения контура визуального объекта (фиг.12 на пяти листах, каждый лист изображает отдельные связанные части общей схемы) включает следующие элементы:

регистр состояния (201, state REG),

компаратор (202, 203, 214, 215, 216, 227, 307, 310),

сумматоры (204, 205, 209, 212, 232, 233, 235, 237, 247, 248, 260, 261, 269, 270),

регистр весового коэффициента Inc l (208, Inc l REG),

умножитель на 2 (206, 207, 210, 213, 234, 236),

регистр весового коэффициента Inc2 (211, Inc2 REG),

регистр Х координаты конечной контрольной точки Хend (217),

регистр Y координаты конечной контрольной точки Yend (220),

логическое И (218, 219, 221, 222, 223, 224, 229, 231, 238, 239, 243, 245, 249, 251, 254, 262, 264, 267, 279, 282, 286, 287, 288, 289, 291, 292, 294, 295, 297, 298, 300, 301, 302, 303, 304, 305, 304, 311, 313, 315, 316, 317, 318, 352),

логическое ИЛИ (225, 241, 250, 252, 253, 255, 257, 258, 263, 265, 268, 272, 273, 275, 277, 280, 283, 285, 290, 293, 296, 299, 306, 309, 312, 314, 353, 354),

регистр модификации S (226),

D-триггер (228, 230, 242, 244, 274, 278, 281),

регистр весового коэффициента D (240),

регистр расчета координаты Х визуального объекта (246),

регистр 32 точек растрового изображения визуального объекта data (256),

регистр расчета координаты Y визуального объекта (259),

регистр адреса ADR (271),

RS триггер (276),

регистр выходных данных визуального объекта Dout (284),

регистр выхода координаты визуального объекта Хout (407),

регистр выхода координаты визуального объекта Хоut (408).

Описание входов и выходов:

СLK(321) - вход глобальной тактовой частоты,

RST(322) - вход глобального сигнала сброса,

Start (326) - вход запуска процесса расчета координат точек отрезка контура,

Enable (323) - разрешение работы,

Estimate (324) - сигнал, определяющий режим работы по коррекции визуального объекта,

DRDY (325) - флаг о наличии на входе данных для обработки,

BASE_ADR (31:0) (319) - базовый адрес расположения экрана в локальной памяти устройства,

DIN (31:0) (320) - очередные 32 бита изображения визуального объекта,

Х1(10:0) (327) - координата Х начала отрезка контура,

Х2(10:0) (328) - координата Х окончания отрезка контура,

Y1(10:0) (329) - координата Y начала отрезка контура,

Y2(10:0) (330) - координата Y окончания отрезка контура,

ADR (31:0) (391) - адрес записи/чтения рассчитанных точек отрезков контура,

DOUT (31:0) (393) - вычисленные 32 бита изображения визуального объекта,

Finish (395) - выход, определяющий момент окончания построения отрезка контура,

Pixel (394) - сигнал, маскирующий расчет очередной точки отрезка контура,

RD (397) - сигнал, маскирующий обращения в память на чтение высоким уровнем,

RD_WR (396) - сигнал, маскирующий обращения в память на запись низким уровнем,

Xout (10:0) (409) - координата Х вычисленной точки отрезка контура,

Yout (10:0) (410) - координата Y вычисленной точки отрезка контура,

Блок 107 Drawline для построения контура визуального объекта реализует модифицированный алгоритм Брезенхема. При расчете координат точек, принадлежащих отрезку контура при кусочно-линейной аппроксимации ВО, высчитываются координаты этих точек таким образом, чтобы при пересечении данной памяти с прямой у=const пересечение осуществляется только в одной точке растра. При построении прямых (Estimate (324)=0) по вычисленным координатам записывается значение единицы, сложенное по “логическому или” с прежним значением. При коррекции ВО (Estimate (324)=1) по вычисленным координатам записывается значение единицы, сложенное по "логическому исключающему или" с прежним значением. Схема построена по принципу конечного автомата. Автомат может находиться в одном из 21 возможных состояний. Состояния Lwait (355) - состояние ожидания начала работы. Состояние Lstart (356) - первый шаг работы. Состояние Lxmody (357) - состояние начала расчета координат с последовательным наращиванием Х координаты ВО и расчета соответствующего значения Y координаты. Состояние Lymody (358) – состояние начала расчета координат с последовательным наращиванием Y координаты и расчета соответствующего значения Х координаты. Состояние LX1Mody (359) – состояние расчета Х и Y координаты при движении от контрольной точки Х1 к Х2. Состояние LX2Mody (360) – состояние расчета Х и Y координаты при движении от контрольной точки Х2 к Х1. Состояние LY1Mody (361) – состояние расчета Х и Y координаты при движении от контрольной точки Y1 к Y2. Состояние LY2Mody (362)– состояние расчета Х и Y координаты при движении от контрольной точки Y2 к Y1. Состояние LX1Read (363) – состояние считывания хранимой в памяти информации для внесения туда рассчитанных точек, принадлежащих контуру, при движении от Х1 к Х2. Состояние LX2Read (364) – состояние считывания хранимой в памяти информации для внесения туда рассчитанных точек отрезка контура при движении от Х2 к Х1. Состояние LY1Read (365) - состояние считывания хранимой в памяти информации для внесения туда рассчитанных точек для отрезка контура при движении от контрольной точки Y1 к Y2. Состояние LY2Read (366) - состояние считывания хранимой в памяти информации для внесения туда рассчитанных точек для отрезка контура при движении от контрольной точки Y2 к Y1. Состояние LX1Step (367) – формирование 32-битной ячейки с учетом старого значения памяти и рассчитанных координат новых точек отрезка контура при движении от контрольной точки Х1 к Х2. Состояние LX2Step (368) – формирование 32-битной ячейки с учетом прежнего значения памяти и рассчитанных координат новых точек отрезка контура при движении от Х2 к Х1. Состояние LY1Step (369) – формирование 32-битной ячейки с учетом старого значения памяти и рассчитанных координат новых точек отрезка контура при движении контрольной точки от Y1 к Y2. Состояние LY2Step (370) - формирование 32-битной ячейки с учетом прежнего значения памяти и рассчитанных координат новых точек отрезка контура при движении от контрольной точки Y2 к Y1. Состояние LX1Write (371) – состояние записи нового значения 32-битной ячейки в память при движении от контрольной точки Х1 к Х2. Состояние LX2Write (372) – состояние записи нового значения 32-битной ячейки в память при движении от Х2 к Х1. Состояние LY1Write (373) - состояние записи нового значения 32-битной ячейки в память при движении от Y1 к Y2. Состояние LY2Write (374) – состояние записи нового значения 32-битной ячейки в память при движении от Y2 к Y1. Состояние Lend (375) – состояние окончания процесса построения прямой отрезка контура. Для установления того или иного состояния используются сигналы, передаваемые по шине: SetLWait (331), SetLStart (332), SetLXMody (333), SetLYMody (334), SetLX1Read (335), SetLX2Read (336), SetLY1Read (337), SetLY2Read (338), SetLX1Write (339), SetLX2Write (340), SetLY1Write (341), SetLY2Write (342), SetLX1Mody (343), SetLX2Mody (344), SetLY1Mody (345), SetLY2Mody (346), SetLХ1Step (347), SetLX2Step (348), SetLY1Step (349), SetLY2Step (350), SetLEnd(351). Cигналы формируются при прохождении указанных на схеме (фиг.12) логических элементов. При появлении единиц на сигналах 363, 364, 365 и 366 единичные импульсы появляются на сигналах 398, 399, 400 и 401. Данные импульсы, длиной в один такт, предназначены для формирования сигналов чтения RD (397) и записи RD_WR(396). На начальном этапе работы блок 107 находится в состоянии Lwait (355). После получения единицы на входе 326 Start схема переходит в состояние Lstart (356). В данном состоянии производится анализ входных контрольных точек. По значениям абсолютной разницы соответствующих координат определяется в каком направлении идет наибольшее их изменение. Если DX (DX=ABS (X2-X1)) (402) больше DY (DY=ABS (Y2-Y1)) (403) на компараторе (216), то в дальнейшем при расчете координат контрольной точки будет необходимо на каждом этапе модифицировать координату Х (380) и в зависимости от состояния весовых коэффициентов (386, 404, 405 и 384) производить расчет координаты Y (376). В обратном же случае наоборот. Если DX>DY (406), схема переходит в состояние LXMody (357), иначе, если DX<=DY (407), то - в LYMody (358). В новых состояниях определяется, какое направление движения, если для случая, когда DX>DY (406), X1 будет меньше Х2 (387) или больше (389), то за начальную контрольную точку алгоритма расчета будет принята точка Х1, а за конечную Xend (217) - точка Х2. В противном случае наоборот. Для случая, когда DX<=DY, аналогичные действия осуществляются для координат Y и рассчитываются значения шин 390 (Y1>=Y2 шины 329 и 330 соответственно) и 388 в обратном случае. Так, в состоянии LXMody (357) и LYMody (358) производится расчет весовых коэффициентов Inc1 (404), Inc2 (405), D (384) и S (386). Данные коэффициенты и значение второй координаты рассчитываются в соответствии с алгоритмом Брезенхэма. На основании значений D (384) определяется необходимо ли модифицировать ту координату, у которой на протяжении всей линии минимально изменение.

Анализ значения шины 384 производится на компараторе 227 и результат выдается на шину 385. После получения координат первой контрольной точки блок 107 переходит в состояние считывания данных из памяти, после считывания в полученную ячейку вносится новая точка, и если следующая рассчитанная контрольная точка будет лежать не в данной ячейке локальной памяти, то производится запись полученных данных в память. Алгоритм выполняется до тех пор, пока не будет построена требуемая прямая при кусочно-линейной аппроксимации. Окончание процесса построения линии определяется по достижении координат рассчитываемой точки (шины 376 и 380) конечных значений (шины 377 и 381). Данный анализ производится на компараторах 202 и 203. Результат соответственно выдается на шины 378, 379, 382 и 383.

По окончании построения выдается сигнал Finish (395), равный единице, и блок 107, проходя через состояние Lend (375), переходит в состояние Lwait (355) для ожидания новых данных для построения следующего отрезка контура.

Как описано выше, блок 107 позволяет аппроксимировать контур ВО для передачи массива данных обо всех точках контура на шину ZBT.

Блок 108 для заливки области внутри контура визуального объекта (фиг.13) построен по принципу конечного автомата.

В одной ячейке памяти расположено 32 точки области экрана. Расположение ячеек по адресам и их соответствие точкам изображения экрана представлено на фиг.14. Ячейки памяти расположены так, чтобы при последовательном проходе всей локальной памяти, движение по экрану осуществлялось по столбцам. При считывании ячейки i, где i – текущий номер ячейки, получаем информацию о 32-х точках экрана и в соответствии с вышеописанным алгоритмом заливки выставляются 32 флага. На основании этих флагов записывается новое значение для данной ячейки и переход к ячейке i+1. Пройдя все значения i от 0 до 1023, выполняется заливка той части ВО, которая расположена в этих 32 столбцах экрана. Обнулив флаг (в принципе флаг автоматически становится равным 0 к подходу к последней ячейки столбца, но если он не равен 0, то произошла ошибка при построении контура), будет необходимо перейти к следующему столбцу ячеек, хранящему информацию о соседних 32 столбцах изображения экрана. Пройдя, таким образом, по всем точкам экрана закрашиваются все точки, принадлежащие заданной области ВО.

В состав блока 108 входят следующие элементы:

регистр состояния схемы (501, State Reg),

счетчик Х координаты чтения точек ВО, расположенных внутри контура (502, Xrd Count+32),

счетчик Y координаты чтения точек ВО (503, Yrd Count+1),

счетчик Х координаты записи (504, Xwr Count+32),

счетчик Y координаты записи (505, Ywr Count+1),

компаратор "<1023" (506, 507, 536),

компаратор "=1023" (508, 510, 525, 528),

компаратор "<991" (509, 511),

компаратор "=992"(527, 530),

компаратор "<992" (538),

компаратор ">0"(541).

логическое И (512, 513, 526, 529, 531, 533, 535, 539, 540, 542, 545),

логическое ИЛИ (521, 532, 534, 537),

логическое исключающее ИЛИ (519),

счетчик адреса чтения 514, ADR_rd Count+1),

cчетчик адреса записи (515, ADR_wr Count+1),

сумматор (516, 518),

регистр адреса обращения в память (517, ADR REG),

регистр флагов закрашиваемых точек (520, Flags REG),

регистр данных для записи в память (522, DO REG),

D-триггер (523, 524, 544),

RS-триггер (543, 546).

Описание входов и выходов:

CLK (549) – вход глобальной тактовой частоты,

RST (550) – вход глобального сигнала сброса,

Enable (551) – сигнал разрешения работы,

Start (556) – вход запуска процесса заливки ячеек внутри контура,

DRDY (552) – сигнал наличия данных для обработки на входе,

Erase (553) – сигнал, определяющий режим работы по очистке экрана,

INT_Enable (554) – сигнал, разрешающий выдачу сигнала прерывания по окончании работы,

RESET_INT (555) – сигнал сброса прерывания,

BASE_ADR(31:0) (547) – базовый адрес расположения экрана в локальной памяти устройства,

D1 (31:0) (548) – очередные 32 бита изображения,

ADR (31:0) (577) – адрес для считывания/записи очередных 32 бит изображения,

DO (31:0) (579) – вычисленные 32 бита изображения,

ERROR (584) – флаг, символизирующий об ошибках при заливке области внутри контура,

Finish (586) – выход, определяющий момент окончания заливки области внутри контура,

RD_WR (585) – сигнал записи/чтения для подачи на контроллер памяти,

RD (581) – сигнал чтения для определения момента запроса данных,

INT (580) – сигнал прерывания, обозначающий окончание процесса работы.

Схема блока 108 построена по принципу конечного автомата. Автомат имеет 5 состояний, состояния задаются регистром State REG (501) и обозначаются единицей на одном из его выходов, соответствующем заданному состоянию.

Состояние Lwait (562) – начальное состояние ожидания начала работы автомата. Состояние Lread (563) – состояние считывания ячейки из памяти с незакрашенным контуром. Состояние Lwrite (564) – состояние записи в память ячейки с закрашенным контуром. Состояние LWriteNOP (565) – состояние пустой записи, вызывается несколько раз в начале работы автомата, но пока данные не готовы, в память запись не прoизводится. Состояние Lint (566) – состояние окончания работы автомата. Для установления того или иного состояния автомата используются сигналы SetLWait (557) (при формировании данного сигнала часть функции рассчитывается отдельно и формирует сигнал 582), SetLRead (558) (при формировании данного сигнала часть функции рассчитывается отдельно и формирует сигнал 583), SetLWrite (559), SetLWriteNOP(560) и SetLInt(561), которые вырабатываются в соответствии с выбранными логическими элементами (фиг.13). Работа автомата возможна при равенстве сигнала Enable (551) единице. При появлении единицы на входе Start (556) происходит переход из состояния Lwait (562) в состояние Lread (563), при этом на выход ADR (577) выдается сумма базового адреса BASE_ADR (547) и внутреннего счетчика адреса считывания (514), значение которого выдается по шине 575, на выход RD (581) выдается единица. Одновременно с этим происходит увеличение на единицу счетчика адреса считывания (514) и увеличение значений счетчиков Х и Y координаты считывания (503 и 502) на 32 (если значение счетчика 503 достигло значения, равного 1023, и значение Х не превышает значения, равного 991, результат сравнения выдается на сигнал 568) и 1 соответственно, если Y меньше значения, равного 1023 (единица на 270), значения этих счетчиков выдаются на шины 567 и 569. Так как обращение в память конвейеризировано и занимает некоторое время, то данные из памяти появятся на входе DI (548) только через несколько тактов, о чем символизирует единица на входе DRDY (552). И так как данных для обработки пока нет, то автомат на один такт переходит в состояние LwriteNOP (565), после чего снова возвращается в состояние Lread (563). И снова производится обращение за следующим кодовым словом. После того как на входе DRDY (552) появится единица, автомат после состояния Lread (563) переходит в состояние Lwrite (564), при этом значение DO (579) для записи формируется в соответствии с логическими элементами (приведенными на фиг.13), т.е. как объединение по логическому ИЛИ (521) считанного значения DI (548) и значения флагов (578). При этом, если на входе Erase (553) будет единица, то DO (579) устанавливается в нулевое значение. Так же в состоянии Lwrite (564) происходит модификация значений счетчика адреса записи (515), значение которого выдается на шину 576. Счетчики Х и счетчики Y координаты записи (504 и 505) увеличиваются на 32 (если значение счетчика 505 достигло значения, равного 1023, и значение Х не превышает значения, равного 991, результат сравнения выдается на 572) и 1 соответственно, если Y меньше 1023 (единица на 274), значения этих счетчиков выдаются на шины 571 и 573, а адрес АDR(577) рассчитывается как сумма базового адреса BASE_ADR (547) и значения счетчика записи (515), при этом сигнал RD_WR (585) устанавливается в ноль. Таким образом осуществляется запись нового рассчитанного значения в память. Также в состоянии Lwrite (564) происходит расчет значений флагов (520) как объединение по логическому исключающему ИЛИ прежнего значения флагов (578) и нового считанного значения DI (548). При достижении счетчика Y координаты считывания (503) значения, равного 1023, происходит его обнуление и увеличение значения счетчика Х координаты считывания (502) на 32. Аналогично модифицируются счетчики X и Y координат записи (504 и 505). При достижении счетчика Y координаты считывания (505) значения, равного 1023, происходит принудительное обнуление регистра флагов (520), при этом, если к этому моменту его значение было не равно нулю, то сигнал Error (584) устанавливается в единицу. Автомат продолжает работать, переходя из состояния Lread (563) в Lwrite (564) и обратно до тех пор, пока значения счетчиков Х и Y координат записи (504 и 505) не примут значений, равных 992 и 1023 соответственно, что обозначает обработку всех точек области экрана. При этом, если сигнал Int_Enable (554) равен единице, то автомат перейдет в состояние Lint (556) с одновременной выдачей единицы на выход Int (580) и пробудет в этом состоянии до появления единицы на входе Reset_Int (555).после чего перейдет в состояние Lwait (562).

Если же сигнал Int_Enable (554) равен нулю, автомат сразу же перейдет в состояние Lwait (562). В любом случае при данных переходах значение сигнала Finish (586) установится в единицу, что свидетельствует об окончании работы автомата и пробудет в нем до следующего запуска автомата.

Таким образом, блок 108 выполнен с возможностью приема массива данных обо всех точках экрана, выделения точек контура ВО и точек, расположенных внутри контура ВО, для передачи массива данных обо всех точках, расположенных внутри контура ВО на шину ZBT.

Блок 113 DrawLine Control (фиг.15) осуществляет управление работой блока 107. Блок состоит из следующих элементов:

регистр состояния (601, State REG),

промежуточный регистр Х координаты контрольной точки конца отрезка контура (602, Х2temp REG),

промежуточный регистр Y координаты контрольной точки конца отрезка контура (604, Y2temp REG),

промежуточный регистр Х координаты контрольной точки начала отрезка контура (608, Х1temp REG),

промежуточный регистр Y координаты контрольной точки начала отрезка контура (609, Y2temp REG),

регистр модификации начальной контрольной точки отрезка контура (606, Move),

регистр изменения значения Х координаты начальной контрольной точки отрезка контура (610, DX),

регистр изменения значения Y координаты начальной контрольной точки отрезка контура (611,DY),

регистр Х координаты начальной контрольной точки (612, Х1) отрезка контура,

регистр Х координаты конечной контрольной точки отрезка контура (617, Х2),

регистр Y координаты начальной контрольной точки отрезка контура (614, Y1),

регистр Y координаты конечной контрольной точки отрезка контура (616, Y2),

сумматор (613, 615),

D-триггер (618, 621, 624),

логическое ИЛИ (603, 605, 607, 620, 623, 626, 631, 635, 638),

логическое И (619, 622, 625, 627, 628, 629, 630, 632, 633, 634, 636, 637, 639, 640).

Описание входов и выходов:

CLK (643) – вход глобальной тактовой частоты,

RST (644) – вход глобального сигнала сброса,

Start (674) - выход запуска процесса расчета координат точек отрезка контура,

Enable (645) – разрешение работы,

Estimate (646) – сигнал, определяющий режим работы по коррекции ВО,

FIFO_TE (642) – сигнал "True Empty" от входной FIFO очереди ядра 102 контроллера DMA.

FIFO_In (31:0) (641) – выход входной FIFO очереди ядра 102 контроллера DMA, Finish (647) - сигнал Finish от блока 107 DrawLine,

StartIn (648) - сигнал запуска работы по построению контура,

FIFO_RD (675) – сигнал считывания из FIFO очереди ядра 102 контроллера DMA.

Х1(10:0) (670) - координата контрольной точки Х начала отрезка контура,

Х2 (10:0) (672) – координата контрольной точки Х окончания отрезка контура,

Y1(10:0) (671) – координата контрольной точки Y начала отрезка контура,

Y2 (10:0) (673) – координата контрольной точки Y окончания отрезка контура.

Для построения контура визуального объекта из набора прямых линий, например, при кусочно-линейной аппроксимации необходимо выдавать на блок 107 DrawLine координаты контрольных точек ВО. После подачи начальной контрольной точки (X1:Y1) и конечной контрольной точки (Х2:Y2), построения линии и получения сигнала Finish (647), начальной контрольной точкой назначается предыдущая конечная контрольная точка, получается новая базовая (опорная) контрольная точка, которая назначается блоком 113 конечной, при этом на основании значения Move (665) вычисляются модификации DX (668) и DY (669) для новой стартовой точки. Формат описания контрольной точки представлен на фиг.16.

Х coordinate - координата Х очередной контрольной точки,

Y coordinate - координата Y очередной контрольной точки,

Move – флаг изменения Х и Y координат данной контрольной точки при назначении ее начальной точкой для построения отрезка контура,

Если:

Move=0 то координаты не меняются,

Move=1, то к координатам (Х,Y) прибавляется вектор (DX, DY)=(0,-1),

Move=2, то к координатам (Х,Y) прибавляется вектор (1,-1),

Move=3, то к координатам (Х,Y) прибавляется вектор (1,0),

Move=4, то к координатам (Х,Y) прибавляется вектор (1,1),

Move=5, то к координатам (Х,Y) прибавляется вектор(0,1),

Move=6, то к координатам (Х,Y) прибавляется вектор (-1,1),

Move=7, то к координатам (Х,Y) прибавляется вектор (-1,0),

Move=8, то к координатам (Х,Y) прибавляется вектор (-1,-1).

Данное преобразование позволяет избежать появления некорректной заливки ячеек внутри контура ВО в точках, в месте соединения двух прямых. Для коррекции ВО в качестве начальной и конечной точек контура блоком 13 выдаются координаты точки для коррекции, при этом сигналу Estimate (646) присваивается значение единицы.

Схема блока 113 DrawLine_Control построена по принципу конечного автомата. Автомат имеет 7 состояний, состояния задаются регистром State REG (601) и обозначаются единицей на одном из его выходов, соответствующем заданному состоянию. Состояние Lwait (656) – начальное состояние ожидания начала работы автомата. Состояние LgetPoint1 (657) – состояние получения координат первой контрольной точки из очереди. Состояние LgetPoint2 (658) – состояние получения координат второй контрольной точки из очереди. Состояние LdrawLineSrart (659) – состояние начала процесса построения отрезка контура. Состояние LdrawLine (660) – состояние процесса построения отрезка контура или модификации области ВО. Состояние Lgo (661) – состояние, предшествующее получению первой контрольной точки, служит для проведения анализа наличия данных в очереди. Состояние LestimateStart (662) – состояние начала процесса модификации области ВО. Для установления того или иного состояния автомата используются сигналы SetLWait (649), SetLGetPoint1 (650), SetlGetPoint2 (651), SetLDrawLineStart (652), SetLDrawLine (653), SetLGo (654) и SetLEstinateStart (655),которые вырабатываются в соответствии с логическими элементами (фиг.15). Работа автомата возможна при равенстве сигнала Enable (645) единице. При появлении единицы на входе StartIn (648) автомат переходит из исходного состояния Lwait (656) в состояние Lgo(661), и при условии наличия данных во входной очереди FIFO_in (641) (флаг Fifo_TE (642) не равен единице) переходит в состояние LgetPoint1 (657) и осуществляет считывание первого слова из очереди в промежуточный регистр Х2temp (602), Y2temp (604) и Move (606). Для считывания кодового слова из очереди сигнала Fifo_RD (675) выставляется в единицу. После считывания первого слова автомат переходит в состояние LgetPoint2 (658) в случае, если сигнал Estimate (646) равен нулю, и в состояние LestimateStart (662) в противном случае. В состоянии LgetPoint2 (658) осуществляется пересылка из промежуточных регистров Х2temp (602), Y2temp (604) значений в промежуточные регистры Xltemp (608) и Yltemp (609), а также расчет на основании содержимого регистра Move (606) значений DX (610) и DY (611). Так же осуществляется считывание второго кодового слова из очереди в промежуточный регистр Х2temp (602), Y2temp (604) и Move (606). После чего осуществляется переход в состояние LdawLineStart (662) с выставлением соответствующих значений в регистрах начальной Х1 и Y1 (670 и 671) и конечной Х2 и Y2 (672 и 673) контрольных точек. Для начальной контрольной точки, прежде чем ее значение запишется в регистр, к нему добавляется на сумматорах (613 и 615) значение ее модификации DX и DY (610 и 611). После выставления заданных координат на выход Start (674) подается единица, и автомат переходит в состояние LdrawLine (660). После получения на входе Finish (647) единицы, наличия данных в очереди и наличия нуля на входе Estimate (646), автомат переходит в состояние LgetPoint2 (658).

В случае, когда после состояния LgetPoint1 (657) автомат перешел в состояние LestimateStart (662), значения из промежуточных регистров Х2temp (663) и Y2temp (664) переписываются в промежуточные регистры Хltemp (666) и Yltemp(667). После чего без какой-либо модификации начальной контрольной точки значение промежуточных регистров Хltemp (666) и Yltemp (667) подаются на регистр координат Х1 (670), Y1 (671), X2 (673) и Y2 (672). И, выдав на выход Start (674) единицу, автомат переходит в состояние LdrawLine (660). Из данного состояния, после получения единицы на входе Finish (647), наличия данных в очереди и наличия единицы на входе Estimate (646), автомат переходит в состояние LgetPoint1 (657). Автомат продолжает работать таким образом до окончания всех контрольных точек в очереди или снятия сигнала Enable (645).

Система для визуализации активного видео (фиг.17) содержит сетевую карту 701, предназначенную для получения цифрового видеопотока и отсылки командного трафика к серверу активного видео, TV ресивер 702, предназначенный для приема цифрового видеопотока от телецентра, центральный процессор 703, видеодекодер 704, предназначенный для декодирования входного видеопотока в реальном режиме времени и вывода на устройство отображения, аудиодекодер 705, предназначенный для декодирования входного цифрового потока звуковых данных и вывода его на внешней системе воспроизведения звука, устройство 706 для декодирования закодированного визуального объекта, выполненное в соответствии с фиг.11, предназначенное для создания контура визуального объекта, выполненное в соответствии с фиг.11, предназначенное для создания контура визуального объекта по контрольным точкам и маркировки ячеек внутри контура визуального объекта, устройство 707 хранения, предназначенное для хранения видео-, аудиоданных, данных активного видео и системной информации, интерфейс 708 пользователя, соединенные с системной шиной 709 РСI.

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

Поток активного видео поступает в аппаратный комплекс из сети на сетевую карту 701 или от телевещательной компании на ТV ресивер 702 или из устройства 707 хранения. Центральный процессор 703 разделяет входной поток данных на три потока: видеопоток, аудиопоток и поток сценария активного видео. Видеопоток направляется центральным процессором 703 на видеодекодер 704, который преобразует упакованный формат цифрового видео в сигнал, требующийся для воспроизведения видеоряда на устройстве отображения (на фиг.17 не показано, и подсоединено к видеодекодеру 704 обычным образом). Одновременно центральный процессор 703 пересылает аудиопоток на аудиодекодер 705, который в свою очередь декодирует сигнал и выдает его на звуковоспроизводящее устройство (на фиг.17 не показано и подсоединено к аудиодекодеру 705 обычным образом). Параллельно с этим центральный процессор 703 передает поток активного видео на декодирование в устройство 706. Устройство 706 распаковывает данные и создает карты ВО, присутствующие в данный момент на видеокадре. В случае интерактивного изменения пользователей процесса воспроизведения сценария активного видео посредством интерфейса 708 пользователя центральный процессор 703 обращается к текущей карте ВО в устройстве 706 и в зависимости от выбранного пользователем ВО из нескольких визуальных объектов посылает запрос в сеть или обрабатывает его локально, изменяя тем самым входной поток активного видео.

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

Наиболее успешно заявленные способ кодирования координат перемещающегося на экране вычислительного устройства видеоизображения, устройство для декодирования визуального объекта, закодированного этим способом, и система, предназначенная для визуализации активного видео с помощью этого устройства, промышленно применимы в компьютерных системах активного видео (АВ) или Hyper Video (HV), а также в таких областях, как интерактивное телевидение, видео по требованию, вещание ТВ через Интернет, интерактивные обучающие системы, видеопроводники, персональные, мобильные коммуникации, компьютерные и телевизионные игры.

Формула изобретения

1. Способ кодирования координат перемещающегося на экране вычислительного устройства видеоизображения, включающий вывод на экран видеокадра с изображением по меньшей мере одного визуального объекта, разделение видеокадра с визуальным объектом на ХY ячеек, где Х и Y координаты – 0, 1, 2,..., имеющих форму элементарных квадратов или прямоугольников, выделение ячеек, местоположение которых совпадает и не совпадает на видеокадре с местоположением визуальных объектов, путем маркировки ячеек, совпадающих с местоположением ячеек визуального объекта, соответствующим символом и путем маркировки другим символом ячеек, местоположение которых не совпадает с местоположением ячеек визуального объекта, внутрикадровое кодирование, при котором формируют массив данных карты для визуального объекта данного видеокадра, причем если положение визуального объекта в следующем видеокадре постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных визуального объекта предыдущего видеокадра, а если положение визуального объекта в следующем видеокадре изменяется, то, формируя новую карту, для таких видекадров изменяют массив данных визуального объекта, формирование и запоминание файла, образованного последовательностью карт, в которой каждая карта соответствует по меньшей мере одному видеокадру файла, отличающийся тем, что внутрикадровое кодирование производят путем выделения характеристических ячеек, совпадающих с контуром визуального объекта и в которых контур визуального объекта испытывает изменение формы, измеряют координаты контрольных точек – центры характеристических ячеек, а изменение контура визуального объекта между контрольными точками аппроксимируют, вводят локальную систему координат Х' и Y', характеризующуюся меньшим количеством ячеек, чем система координат Х и Y, при этом центр одной из ячеек принимают за начало системы координат Х' и Y', направление осей которой параллельно осям Х и Y, при внутрикадровом кодировании формируют в карте массив данных контрольных точек в локальной системе координат Х' и Y', который запоминают, причем если положение визуального объекта в следующем видеокадре постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных контрольных точек предыдущего видеокадра в локальной системе координат Х' и Y', при изменении геометрической формы и/или положения визуального объекта в следующем видеокадре производят его межкадровое кодирование, при котором если положение ячеек визуального объекта в следующем видеокадре в локальной системе координат Х' и Y' изменяется, а его контур сохраняется, то в массив данных карты следующего видеокадра вводят параметры вектора смещения для всех контрольных точек визуального объекта, если изменяется в локальной системе координат Х' и Y' его контур, то производят упомянутое внутрикадровое кодирование этого видеокадра, получая массив данных контрольных точек нового видеокадра, далее определяют смещения соответствующих друг другу контрольных точек в локальной системе координат Х' и Y'.

2. Способ по п.1, отличающийся тем, что в локальной системе координат Х' и Y' визуальный объект геометрически ограничивают прямоугольником, который состоит из тех же ячеек, как и в системе координат Х и Y, визуальный объект вписан в упомянутый прямоугольник, центр начала координат Х' и Y' располагают в центре угловой ячейки прямоугольника, а направление осей совпадает с направлением системы координат Х и Y.

3. Способ по п.1, отличающийся тем, что при аппроксимации используют кусочно-линейную аппроксимацию.

4. Способ по п.1, отличающийся тем, что при аппроксимации используют кривые Безье.

5. Способ по п.1, отличающийся тем, что при аппроксимации используют кубические сплайны.

6. Способ по п.1, отличающийся тем, что при внутрикадровом кодировании выделение характеристических ячеек визуального объекта производят при помощи средств ручной разметки.

7. Способ по п.1, отличающийся тем, что при внутрикадровом кодировании выделение характеристических ячеек визуального объекта производят путем указания при помощи средств ручной разметки нескольких характеристических ячеек на контуре визуального объекта с автоматическим определением контрольных точек этих характеристических ячеек, а по визуальным характеристикам визуального объекта автоматически определяют его другие контрольные точки.

8. Способ по п.1, отличающийся тем, что при межкадровом кодировании вычисляют по массиву смещений контрольных точек для последующего видеокадра длину кода смещений по оси Х' и Y' и в качестве массива данных межкадрового кодирования используют код смещений по оси Х' и Y'.

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

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

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

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

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

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

15. Устройство для декодирования закодированного визуального объекта, содержащее блоки: ядро контроллера шины РС1, ядро контроллера прямого доступа к памяти, регистр базового адреса, регистр состояния, регистр команды, блок, обеспечивающий доступ в память со стороны контроллера РС1, блок для построения контура визуального объекта по контрольным точкам, в которых контур визуального объекта испытывает изменение формы, блок управления блоком для построения контура визуального объекта, блок для заливки области внутри контура визуального объекта, контроллер памяти, коммутатор потоков данных для памяти, блок логического объединения по ИЛИ сигналов готовности данных, триггер сигнала готовности данных регистров, при этом входы/выходы упомянутых блоков соединены шинами посредством типовых соединений для указанных блоков, причем блок для построения контура визуального объекта предназначен для создания контура визуального объекта по контрольным точкам и выполнен с возможностью приема координат контрольных точек от шины РС1, аппроксимации контура визуального объекта и передачи массива данных обо всех точках контура на шину ZBT, блок для заливки области внутри контура визуального объекта предназначен для маркировки ячеек внутри контура визуального объекта и выполнен с возможностью приема от шины ZBT массива данных обо всех точках экрана, выделения точек контура визуального объекта и точек, расположенных внутри контура визуального объекта, и передачи массива данных обо всех точках, расположенных внутри контура визуального объекта на шину ZBT, блок управления блоком для построения контура визуального объекта выполнен с возможностью поддержки порядка следования координат контрольных точек при подаче их в блок для построения контура визуального объекта.

16. Система для визуализации активного видео, содержащая сетевую карту, предназначенную для получения цифрового видеопотока и отсылки командного трафика к серверу активного видео, TV-ресивер, предназначенный для приема цифрового видеопотока от телецентра, центральный процессор, видеодекодер, предназначенный для декодирования входного видеопотока в реальном режиме времени и вывода на устройство отображения, аудиодекодер, предназначенный для декодирования входного цифрового потока звуковых данных и вывода его на внешней системе воспроизведения звука, устройство для декодирования закодированного визуального объекта по п.15, предназначенное для создания контура визуального объекта по контрольным точкам и маркировки ячеек внутри контура визуального объекта, устройство хранения, предназначенное для хранения видео-, аудиоданных, данных активного видео и системной информации, интерфейс пользователя, соединенные с системной шиной РСI.

РИСУНКИ

Рисунок 1, Рисунок 2, Рисунок 3, Рисунок 4, Рисунок 5, Рисунок 6, Рисунок 7, Рисунок 8, Рисунок 9, Рисунок 10, Рисунок 11, Рисунок 12, Рисунок 13, Рисунок 14, Рисунок 15, Рисунок 16, Рисунок 17, Рисунок 18, Рисунок 19, Рисунок 20, Рисунок 21, Рисунок 22, Рисунок 23

RH4A - Выдача дубликата патента Российской Федерации на изобретение

Дата выдачи дубликата: 15.12.2006

Наименование лица, которому выдан дубликат:ООО «Активное Видео» (RU)

Извещение опубликовано: 20.02.2007        БИ: 05/2007

MM4A - Досрочное прекращение действия патента СССР или патента Российской Федерации на изобретение из-за неуплаты в установленный срок пошлины за поддержание патента в силе

Дата прекращения действия патента: 22.04.2007

Извещение опубликовано: 10.08.2008        БИ: 22/2008

QB4A Регистрация лицензионного договора на использование изобретения

Лицензиар(ы): Общество с ограниченной ответсвенностью "Активное Видео"

Вид лицензии*: НИЛ

Лицензиат(ы): Общество с ограниченной ответственностью "ЛонгЛивВидео"

Договор № РД0044727 зарегистрирован 17.12.2008

Извещение опубликовано: 27.01.2009        БИ: 03/2009

* ИЛ - исключительная лицензия        НИЛ - неисключительная лицензия



 

Похожие патенты:

В птб // 397915

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

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

Изобретение относится к средствам вычислительной техники и предназначено для интерактивной обработки видеоинформации

Изобретение относится к обработке информации и может быть использовано при обработке данных изображения

Изобретение относится к автоматике и вычислительной технике

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

Изобретение относится к устройству обработки изображения, которое функционирует постоянно и включает средства контроля за ее внутренней обработкой изображения

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

Изобретение относится к средствам вычислительной техники и предназначено для интерактивной обработки видеоинформации

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

Изобретение относится к информатике и вычислительной технике

Изобретение относится к области авиационного приборостроения и может быть использовано в системах отображения информации пилотируемых летательных аппаратов

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

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

Изобретение относится к области стеганографии, а именно к способам обнаружения дополнительной информации в графических изображениях формата JPEG, имеющей различные степени значимости в виде цифрового водяного знака (ЦВЗ)

Изобретение относится к средствам обработки графических данных
Наверх