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

Номер патента: 8749

Опубликовано: 31.08.2007

Автор: Гницевич Александр Витальевич

Есть еще 22 страницы.

Смотреть все страницы или скачать PDF файл.

Формула / Реферат

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рисунок 1

 

Текст

Смотреть все

008749 Область техники Изобретение относится к вычислительной технике и может быть использовано в компьютерных системах активного видео (АВ) или Hyper Video (HV), а также в таких областях, как интерактивное телевидение, видео по требованию, вещание ТВ через Интернет, интерактивные обучающие системы, видеопроводники, персональные, мобильные коммуникации, компьютерные и телевизионные игры. Предшествующий уровень техники Известен способ и аппаратура для объединения гиперсвязей с видео, в котором в качестве операции кодирования координат перемещающегося на экране монитора компьютера видеоизображения выводят на экран монитора видеокадр с изображением по меньшей мере одного визуального объекта (ВО), аппроксимируют при помощи разметки визуальный объект простой геометрической фигурой, например кругом, овалом, прямоугольником, с помощью авторского инструментария наносят разметку на отдельные ключевые видеокадры, а области разметки (круг, овал, прямоугольник) линейно интерполируют на оставшиеся промежуточные кадры (международная заявка РСТ WO 98/44435, G 06F 17/30, опубл. 1998 г.). В этом техническом решении достигается компактное хранение данных разметки, но приносится в жертву точность разметки ВО. Автору не доступен процесс разметки на неключевых кадрах. В процессе воспроизведения полученного файла после декодирования, регионы разметки на ключевых кадрах линейно интерполируются на промежуточные кадры. Таким образом, из-за линейной интерполяции регионов разметки на неключевых промежуточных кадрах и из-за аппроксимации ВО простой геометрической фигурой его разметка может не совпадать с местоположением и существующей действительной формой ВО как на ключевых видеокадрах, так в особенности на промежуточных, т.к. на практике на промежуточных видеокадрах ВО может изменять свою геометрическую форму, так и перемещаться не вдоль прямой линии. Это приводит к неадекватности кодирования видеоизображений. При последующем декодировании, например, для просмотра видеофайлов, когда разметка ВО не видна на экране монитора компьютера и не известно, какой кадр является ключевым, а какой промежуточным, нельзя установить соответствует ли действительная форма изображения визуального объекта и его местоположение аппроксимированным. Это вызывает последующие трудности, например, в случае активации такого объекта при помощи клика манипулятора (мыши), т.к. положение курсора мыши в действительности может и не совпадать с ВО особенно на промежуточных кадрах. Известна "Параллельная компьютерная система активного видео", реализующая в частности способ кодирования координат перемещающегося на экране монитора компьютера видеоизображения, который является наиболее близким к заявленному (патент Российской Федерации на изобретение 2173883,G 06 Т 1/20, опубл. 2001 г.). Способ кодирования координат перемещающегося на экране монитора компьютера видеоизображения включает вывод на экран монитора видеокадра с изображением по меньшей мере одного визуального объекта. Разделяют видеокадр с визуальным объектом на XY ячеек, где X и Y - 0, 1, 2, , имеющих форму элементарных квадратов или прямоугольников. Выделяют ячейки, местоположение которых совпадает и не совпадает на видеокадре с местоположением визуальных объектов, маркируя ячейки,совпадающие с местоположением ячеек визуального объекта, соответствующим символом, и маркируя другим одним символом ячейки, местоположение которых не совпадает с местоположением ячеек визуального объекта. При внутрикадровом кодировании формируют массив данных карты для визуального объекта данного видеокадра, причем если положение визуального объекта в следующем видеокадре видеофайла постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных визуального объекта предыдущего видеокадра, а если положение визуального объекта в следующем видеокадре изменяется, то, формируя новую карту, для таких видеокадров изменяют массив данных визуального объекта. Формируют и запоминают файл, образованный последовательностью карт, в которой каждая карта соответствует по меньшей мере одному видеокадру видеофайла. Ограничениями этого технического решения являются необходимость использования при внутрикадровом кодировании ячеек с нулем, не совпадающих с местоположениями активных объектов, что увеличивает массив данных при создании карт. При идентифицировании и выделении ячеек, местоположение которых совпадает с местоположением активного объекта, необходимо кодирование всех ячеек ВОв координатах X, Y для образования карты ВО, что также резко увеличивает массив данных; отсутствие межкадрового кодирования, что приводит к избыточности сохраняемых данных. Таким образом, основным ограничением такого способа кодирования координат ВО является низкая скорость кодирования и большой массив сохраняемых данных карт для каждого видеокадра. Раскрытие изобретения Решаемая изобретением задача - создание такого способа кодирования, устройства декодирования и системы, в которых не требуется запоминания координат всех ячеек ВО в первом и последующих видеокадрах при точном совпадении разметки ВО и его местоположения с действительно существующими, и,таким образом, увеличение производительности и скорости кодирования координат ВО и уменьшение массивов сохраняемых данных, а также обеспечение возможности декодирования визуального объекта,закодированного заявленным способом при помощи соответствующего устройства, и обеспечение воз-1 008749 можности работы этого устройства в системе активного видео. Технический результат, который может быть получен при осуществлении заявленного способа, уменьшение объема памяти, необходимого для хранения и обработки разметки ВО, обеспечение создания файлов, описывающих видеофайлы, малых размеров; уменьшение объема сохраняемых данных при кодировании видеокадров с несколькими ВО. Технический результат, который может быть получен при выполнении устройства, - обеспечение декодирования визуального объекта, закодированного заявленным способом, с максимальной производительностью. Технический результат, который может быть получен при выполнении заявленной системы, - обеспечение воспроизведения активного видео, поступающего с различных каналов связи, в реальном режиме времени. Для решения поставленной задачи с достижением указанного технического результата в известном способе кодирования координат перемещающегося на экране вычислительного устройства видеоизображения, включающем вывод на экран видеокадра с изображением по меньшей мере одного визуального объекта, разделение видеокадра с визуальным объектом на XY ячеек, где X и Y координаты - 0, 1, 2, ,имеющих форму элементарных квадратов или прямоугольников, выделение ячеек, местоположение которых совпадает и не совпадает на видеокадре с местоположением визуальных объектов, путем маркировки ячеек, совпадающих с местоположением ячеек визуального объекта, соответствующим символом,и путем маркировки другим символом ячеек, местоположение которых не совпадает с местоположением ячеек визуального объекта, внутрикадровое кодирование, при котором формируют массив данных карты для визуального объекта данного видеокадра, причем если положение визуального объекта в следующем видеокадре постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных визуального объекта предыдущего видеокадра, а если положение визуального объекта в следующем видеокадре изменяется, то, формируя новую карту, для таких видеокадров изменяют массив данных визуального объекта, формирование и запоминание файла, образованного последовательностью карт, в которой каждая карта соответствует по меньшей мере одному видеокадру файла, согласно изобретению внутрикадровое кодирование производят путем выделения характеристических ячеек, совпадающих с контуром визуального объекта и в которых контур визуального объекта испытывает изменение формы, измеряют координаты контрольных точек - центры характеристических ячеек, а изменение контура визуального объекта между контрольными точками аппроксимируют, вводят локальную систему координат X' и Y',характеризующуюся меньшим количеством ячеек, чем система координат X и Y, при этом центр одной из ячеек принимают за начало системы координат X' и Y', направление осей которых параллельно осям X и Y, при внутрикадровом кодировании формируют в карте массив данных контрольных точек в локальной системе координат X' и Y', который запоминают, причем если положение визуального объекта в следующем видеокадре постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных контрольных точек предыдущего видеокадра в локальной системе координат X' и Y', при изменении геометрической формы и/или положении визуального объекта в следующем видеокадре производят его межкадровое кодирование, при котором если положение ячеек визуального объекта в следующем видеокадре в локальной системе координат X' и Y' изменяется, а его контур сохраняется, то в массив данных карты следующего видеокадра вводят параметры вектора смещения для всех контрольных точек визуального объекта, если изменяется в локальной системе координат X' и Y' его контур, то производят упомянутое внутрикадровое кодирование этого видеокадра, получая массив данных контрольных точек нового видеокадра, далее определяют смещения соответствующих друг другу контрольных точек в локальной системе координат X' и Y'. Возможны дополнительные варианты осуществления способа, в которых целесообразно, чтобы в локальной системе X' и Y' визуальный объект геометрически ограничивали прямоугольником, который состоит из тех же ячеек, как и в системе координат X и Y, визуальный объект вписан в упомянутый прямоугольник, центр начала координат X' и Y' располагают в центре угловой ячейки прямоугольника, а направление осей совпадает с направлением системы координат X и Y; при аппроксимации использовали кусочно-линейную аппроксимацию; при аппроксимации использовали кривые Безье; при аппроксимации использовали кубические сплайны; при внутрикадровом кодировании выделение характеристических ячеек визуального объекта производили при помощи средств ручной разметки; при внутрикадровом кодировании выделение характеристических ячеек визуального объекта производили путем указания при помощи средств ручной разметки нескольких характеристических ячеек на контуре визуального объекта с автоматическим определением контрольных точек этих характеристических ячеек, а по визуальным характеристикам визуального объекта автоматически определяли его другие контрольные точки; при межкадровом кодировании вычисляли по массиву смещений контрольных точек для последующего видеокадра длину кода смещений по оси X' и Y' и в качестве массива данных межкадрового кодирования использовали код смещений по оси X' и Y';-2 008749 массив данных межкадрового кодирования подвергали сжатию путем введения в массив данных информации только о смещенных контрольных точках с кодом их смещения; массив данных межкадрового кодирования подвергали сжатию с использованием двоичного вектора; после сжатия с использованием двоичного вектора производили анализ смещений контрольных точек, переместившихся в одном направлении на одинаковое расстояние, объединяли такие контрольные точки в группы последовательно расположенных контрольных точек, а эти группы кодировали с указанием числа контрольных точек и кодом их общего смещения; массив данных межкадрового кодирования подвергали сжатию с использованием связанного списка; после сжатия с использованием связанного списка производили анализ смещений контрольных точек, переместившихся в одном направлении на одинаковое расстояние, объединяли такие контрольные точки в группы последовательно расположенных контрольных точек, а эти группы кодировали с указанием числа контрольных точек и кодом их общего смещения; в каждом видеокадре для визуального объекта сравнивали массив данных внутрикадрового кодирования и межкадрового кодирования, и в случае если массив данных внутрикадрового кодирования меньше, чем массив данных межкадрового кодирования, то массив данных контрольных точек внутрикадрового кодирования запоминают в карте этого видеокадра, и он служит для формирования массива данных межкадрового кодирования следующих кадров. Поскольку заявленный способ кодирования ранее не был известен в уровне техники, то аналогов заявленного устройства и системы не существует. Поставленная задача с достижением указанного технического результата решается тем, что устройство для декодирования закодированного визуального объекта содержит блоки - ядро контроллера шиныPCI, ядро контроллера прямого доступа к памяти, регистр базового адреса, регистр состояния, регистр команды, блок, обеспечивающий доступ в память со стороны контроллера PCI, блок для построения контура визуального объекта по контрольным точкам, в которых контур визуального объекта испытывает изменение формы, блок управления блоком для построения контура визуального объекта, блок для заливки области внутри контура визуального объекта, контроллер памяти, коммутатор потоков данных для памяти, блок логического объединения по ИЛИ сигналов готовности данных, триггер сигналов готовности данных регистров, при этом входы/ыходы упомянутых блоков соединены шинами посредством типовых соединений для указанных блоков, причем блок для построения контура визуального объекта предназначен для создания контура визуального объекта по контрольным точкам и выполнен с возможностью приема координат контрольных точек от шины PCI, аппроксимации контура визуального объекта и передачи массива данных обо всех точках контура на шину ZBT, блок для заливки области внутри контура визуального объекта предназначен для маркировки ячеек внутри контура визуального объекта и выполнен с возможностью приема от шины ZBT массива данных обо всех точках экрана, выделения точек контура визуального объекта и точек, расположенных внутри контура визуального объекта, на шинуZBT, блок управления блоком для построения контура визуального объекта выполнен с возможностью поддержки порядка следования координат контрольных точек при подаче их в блок для построения контура визуального объекта. Поставленная задача с достижением указанного технического результата решается тем, что система для визуализации активного видео содержит сетевую карту, предназначенную для получения цифрового видеопотока и отсылки командного трафика к серверу активного видео, TV ресивер, предназначенный для приема цифрового видеопотока от телецентра, центральный процессор, видеодекодер, предназначенный для декодирования входного видеопотока в реальном режиме времени и вывода на устройство отображения, аудиодекодер, предназначенный для декодирования входного цифрового потока звуковых данных и вывода его на внешней системе воспроизведения звука, устройство для декодирования закодированного визуального объекта по контрольным точкам и маркировки ячеек внутри контура визуального объекта, устройство хранения, предназначенное для хранения видео, аудиоданных, данных активного видео и системной информации, интерфейс пользователя, соединенные с системной шиной PCI. Указанные преимущества, а также особенности настоящего изобретения поясняются лучшими вариантами его выполнения со ссылками на прилагаемые фигуры. Перечень чертежей Фиг. 1 изображает видеокадр с визуальным объектом (ВО); фиг. 2 - то же, что фиг. 1 с ВО, вписанным в прямоугольник; фиг. 3 - формирование контура (границы) ВО, в котором смещение одной контрольной точки относительно другой показано стрелками; фиг. 4 - видеокадр с общим смещением ВО без изменения формы; фиг. 5 - видеокадр со смещением ВО с изменением формы; фиг. 6 - видеокадр с общим смещением группы контрольных точек контура ВО; фиг. 7 - формат кодирования информации о ВО при межкадровом кодировании; фиг. 8 - ВО с изменением формы для иллюстрации межкадрового кодирования:-3 008749 фиг. 9 - блок-схему алгоритма внутрикадрового кодирования; фиг. 10 - блок-схему алгоритма межкадрового кодирования; фиг. 11 - структурную схему устройства декодирования визуального объекта; фиг. 12 - блок для построения контура визуального объекта на пяти листах; фиг. 13 - схему блока заливки области внутри контура визуального объекта на двух листах; фиг. 14 - схему соответствия ячеек памяти пикселям изображения; фиг. 15 - схему блока управления блоком построения контура визуального объекта на двух листах; фиг. 16 - формат описания контрольной точки; фиг. 17 - схему системы для визуализации активного видео. Лучший вариант осуществления изобретения Способ кодирования координат перемещающегося на экране монитора компьютера видеоизображения включает вывод на экран монитора видеокадра (фиг. 1) с изображением по меньшей мере одного ВО. Разделяют видеокадр с визуальным объектом на XY ячеек, где X и Y - 0, 1, 2, , имеющих форму элементарных квадратов или прямоугольников. Выделяют ячейки, местоположение которых совпадает и не совпадает на видеокадре с местоположением ВО, маркируя ячейки, совпадающие с местоположением ячеек визуального объекта, соответствующим символом, например единичным флагом, и маркируя другим одним символом, например нулевым флагом, ячейки, местоположение которых не совпадает с местоположением ячеек ВО, например, как в ближайшем аналоге. Производят внутрикадровое кодирование, при котором формируют массив данных карты для ВО данного видеокадра. Причем если положение ВО в следующем видеокадре видеофайла постоянно, то, формируя новую карту, для таких видекадров сохраняют массив данных ВО предыдущего видеокадра, а если положение ВО в следующем видеокадре изменяется, то, формируя новую карту, для таких видеокадров изменяют массив данных ВО. Далее формируют и запоминают файл, образованный последовательностью карт, в которой каждая карта соответствует по меньшей мере одному видеокадру видеофайла. Внутрикадровое кодирование производят путем выделения характеристических ячеек (фиг. 1, 2),совпадающих с контуром ВО (фиг. 1, 2), и в которых контур ВО испытывает изменение формы. Измеряют координаты контрольных точек - центры характеристических ячеек (фиг. 1). Изменение контура между характеристическими ячейками аппроксимируют математическими выражениями между контрольными точками (на фиг. 3 показана кусочно-линейная аппроксимация). Вводят локальную систему координат X' и Y' (фиг. 1). Вводить локальную систему координат X' и Y' можно различным образом, располагая ее центр ближе к ВО. Для уменьшения объема кодируемой информации целесообразно ВО геометрически ограничивать прямоугольником, который состоит из ячеек, а центр одной из ячеек принимать за начало системы координат X' и Y', направление осей которой параллельно осям X и Y. Все внутренние точки, находящиеся внутри контура, составляют внутреннюю область ВО, не являются контрольными точками и не кодируются в дальнейшем, и автоматически задаются контуром ВО. После внутрикадрового кодирования запоминают в карте видеокадра этот массив данных контрольных точек с математическими выражениями для ВО. При изменении геометрической формы и/или положения ВО в следующем видеокадре (фиг. 4-6) производят его межкадровое кодирование. Если положение ячеек ВО в следующем видеокадре изменяется, а его контур сохраняется, то в массив данных карты следующего видеокадра вводят параметры вектора смещения для всех контрольных точек (фиг. 4). Если изменяется положение ячеек ВО и его контур(фиг. 5, 6), то производят упомянутое внутрикадровое кодирование этого видеокадра, получая массив данных контрольных точек нового видеокадра. Далее определяют смещения соответствующих друг другу контрольных точек и кодируют их, а закодированный массив этих смещений контрольных точек служит для формирования массива данных межкадрового кодирования. Пример кодирования смещения ВО, представленного на фиг. 4.[10] кодируем смещение однопиксельными сдвигами[011] код смещения на юго-восток Пример кодирования смещения ВО, представленного на фиг. 5.[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] группа из трех точек[0] не поменяли свое положение В зависимости от размера кода, полученного при межкадровом кодировании, возможны два пути для запоминания массива данных межкадрового кодирования. Первый путь сохранения полученных данных заключается в том, что при межкадровом кодировании вычисляют по массиву смещений контрольных точек для последующего видеокадра длину кода смещений по оси X' и Y' и в качестве массива данных межкадрового кодирования используют код смещений по оси X' и Y'. Второй путь сохранения полученных данных заключается в том, что в каждом видеокадре для ВО сравнивают массив данных внутрикарового кодирования и межкадрового кодирования. В случае если массив данных внутрикадрового кодирования меньше, чем массив данных межкадрового кодирования,то массив данных контрольных точек с математическими выражениями внутрикадрового кодирования запоминают в карте этого видеокадра, и он служит для формирования массива данных межкадрового кодирования. Таким образом, в качестве промежуточного массива данных полученного для отдельного видеокадра могут служить данные, полученные по первому или второму пути. Если массив данных кода смещений ВО видеокадра превысит массив данных этого ВО, полученный при внутрикадровом кодировании,то за результат межкадрового кодирования принимается результат внутрикадрового кодирования. (За результат массива данных ВО межкадрового кодирования принимается минимальный по длине код промежуточного межкадрового кодирования или результата внутрикадрового кодирования). Особенно такой выбор различных путей желательно использовать для ВО, сильно изменяющих свою форму в следующем видеокадре. Если объект слабо изменяет свою форму, то выбирают первый путь. Для уменьшения длины кода ВО (фиг. 2) вписан в упомянутый прямоугольник. Центр начала координат X' и Y' располагают в центре угловой ячейки прямоугольника, а для простоты и удобства при переходе из одной системы координат в другую направление осей X' и Y' выбирают совпадающим с направлением системы координат X и Y. При внутрикадровом кодировании в качестве математических выражений используют кусочнолинейную аппроксимацию. Кусочно-линейную аппроксимацию используют тогда, когда контур ВО представляет собой ломаную границу или когда не требуется мелкая детализация формы ВО. При внутрикадровом кодировании в качестве математических выражений могут также использовать кривые Безье или кубические сплайны, которые целесообразно применять в силу их математических свойств плавного сопряжения участков контура (Роджерс Д., Адамс Дж. Математические основы машинной графики: Пер. с англ., М., Мир, 2001, 604 с, ил., ISBN 5-03-002143-4, стр. 260-380). При внутрикадровом кодировании выделение характеристических ячеек визуального объекта производят при помощи средств ручной разметки. К ручным способам выделения характеристических ячеек относится нанесение разметки с помощью известных инструментов:"Карандаш" - идентификация отдельных характеристических ячеек путем выделения ячеек на отображаемом на экране видеокадре с помощью манипулятора (мышь);"Прямоугольник" - идентификация характеристических ячеек в прямоугольной области на кадре,путем растягивания изображения прямоугольника на области отображения ВО;"Стирание" - отмена идентификации ячеек объекта;"Волшебная палочка" - идентификация ячеек, принадлежащих контуру ВО (аналогично инструменту "Волшебная палочка" в графических редакторах типа Adobe Photoshop). При внутрикадровом кодировании выделение характеристических ячеек ВО можно производить путем указания при помощи упомянутых средств ручной разметки нескольких характеристических ячеек-5 008749 на контуре визуального объекта с автоматическим определением контрольных ячеек этих характеристических ячеек, и по визуальным характеристикам визуального объекта автоматически определяют его другие контрольные точки, например, по яркости или контрасту или цвету (Рудаков П.И., Сафонов И.В. Обработка сигналов и изображений. Marlab 5.x/ Под общ. ред. к.т.н. В.Г. Потемкина. М., ДИАЛОГ,МИФИ, 2000, 416 с. (Пакеты прикладных программ; кн. 2), стр. 360-365). Массив данных межкадрового кодирования подвергают сжатию путем введения в массив данных информации только о смещенных контрольных точках с кодом их смещения (фиг. 5). Массив данных межкадрового кодирования может быть подвергнут сжатию с использованием двоичного вектора или связанного списка (Ахо Альфред В., Хопкрофт Джон Э., Ульман Джеффри Д. Структуры данных и алгоритмы. Пер. с англ., Уч. пос. М., Издательский дом "Вильямс", 2000, 384, с ил. Парал. тит. англ., ISBN: 5-8459-0122-7 (рус), стр. 109-113). После сжатия с использованием двоичного вектора или с использованием связанного списка производят анализ смещений (фиг. 6) контрольных точек, переместившихся в одном направлении на одинаковое расстояние, объединяют такие контрольные точки в группы, последовательно расположенных контрольных точек, а эти группы кодируют с указанием числа контрольных точек и кодом их общего смещения. Видеопоток можно разбить на логические фрагменты, в которых продолжительное время отображаются мало меняющееся по составу и динамике множество ВО. Фрагменты далее разбиваются на последовательность сцен. Каждая сцена является непрерывным движением ВО. Каждая сцена обладает особенностями по отображению ВО. Вычленение этих общих для всех объектов сцены характеристик является важным для кодирования процессом, помогая существенно сжать структурную информацию в кадре, а может даже в сцене. Следующий уровень видеоданных - это видеокадры, на которые разбивается сцена. Здесь каждый ВО позиционирован и имеет определенную форму. Для всех кадров вводится прямоугольная целочисленная сетка (фиг. 1) с постоянными параметрами: дискретными шагами по горизонтали и вертикали, ширины М и высоты N ячеек. Размеры сетки М иN ограничены размерами области отображения видеопотока. На сетку накладывается система координат X, Y. Ячейка принадлежит ВО, если их области полностью или частично совпадают. В результате для ВО получают бинарное растровое изображение. Такая сетка вводится для всего видеопотока, и ее параметры (количество ячеек, определяемых их шириной и высотой) зависят от требуемого качества передаваемой информации. В описание ВО включается его положение, размеры, форма, приоритет по его отображению. На протяжении последовательных кадров эти характеристики ВО могут меняться. Форма ВО отображается в виде двухмерного образа (фиг. 2). Информативной составляющей является его контур - граница, которая необходимо состоит из одной части, не имеет разрывов и самопересечений, разбивает плоскость отображения на внутреннюю (конечную) и внешнюю (бесконечную) области. Находя максимальные и минимальные значения координат контрольных точек ВО по осям X и Y, определяем область отображения и вводим в нее локальную систему координат X' и Y'. Форма ВО представлена массивом контрольных точек с местом аппроксимации контура. Задание формы у ВО решается на этапе выделения объекта из видеопотока. Используется векторный способ задания контура (фиг. 3). Для этого устанавливается начальная контрольная точка контура, например,ближайшая к началу локальной системы координат X' и Y' области отображения, и ее локальные координаты. Далее последовательно определяется смещение соседних контрольных точек относительно предыдущих. Преимущество векторного формата в его простоте, настраиваемой точности задания контура, в его возможности масштабировать изображение без потери качества и в эффективных алгоритмах обработки. Векторный формат визуальных объектов также универсален с точки зрения постановки данной задачи, как описание границ двухмерных образов. Контур ВО размечается контрольными точками вручную или автоматически таким образом, чтобы разница между реальной и аппроксимационной границей была минимальной. На последующих видеокадрах контрольные точки определяются алгоритмами ведения ВО, т.е. определяются предыдущими данными о контуре с уже заданными контрольными точками и новой сеточной аппроксимацией ВО. Алгоритм аппроксимации контура задается автором, например, при редактировании видеопотока активного видео. Отображения выбранного ВО в видеокадре на экране (например, монитора компьютера) заключается в подсвечивании сеточной аппроксимации данного ВО, т.е. подсвечивании тех ячеек, которые пересекаются с внутренней областью ВО. Заданные визуальные объекты представляют исходные данные для внутрикадрового и межкадрового кодирования. Каждый ВО в кадре может поменять местоположение, размеры прямоугольника отображения, свою форму полностью или частично у группы контрольных точек контура, остаться неизменным. В видеокадре также могут появиться новые и/или исчезнуть старые ВО. Визуальные объекты могут иметь совпадающие ячейки. Объекты сцены могут быть подвергнуты аффинным преобразованиям это стандартные движения камеры: укрупнение плана, поворот и движение камеры по прямой линии. Для более гибкого использования заявленного способа и возможной технологии кодирования визу-6 008749 альных объектов, например, при применении в активном видео формат кодирования специфицируется набором параметров. Часть параметров представляют собой незименяемые характеристики для всего видеопотока - это геометрические параметры аппроксимационной сетки, общие для всех объектов настройки. Другая часть является динамически изменяемой в зависимости от характера сцен видеопотока. В качестве возможного варианта может быть использована следующая спецификация формата кодирования. Формат может быть описан в специальной формальной грамматике - форме Бэкуса-Наура. Символы в определениях = означают "определяется как". Для альтернатив используется разделитель . Символ в конце выражения + значит "один или более", символзначит "ноль или более" изначит "ноль или один". Комментарии добавлены в виде "-комментарий-" или "категория языка комментарий". Выделенная структурная информация кодируется в особый формат ВО и составляет XMLдокумент. Он состоит из обязательного заголовка документа и последовательности кадров, составляющих сцены и предваряемых необязательным заголовком сцены. Каждый кадр, в свою очередь, состоит из списка активных ВО. документ ВО= заголовок документаFlags:32bit Флаг установок заголовок сцены= Т 1 Код сцены-Служебная информация по общим для данной сцены: настройкам, способам кодирования и задания границы/Т 1 Код завершения заголовка сцены ВО кадра= Т 2 Код списка ВО кадра 32bit Служебная информация по кадру 32bit Длина массива кодовой информации в байтах кодированная информация по ВО кадраNOLD Число старых ВО формат BONOLD(область отображения ВО формат BO)NNEW/Т 2 Код завершения списка ВО кадра область отображения ВО=X:bit8, Y:bit8 Начальная точка области отображения ВОW:bit8, H:bit8 Размеры области отображения по ширине и высоте 1D:bit8 Идентификатор ВО Формат ВО=[0] - Нет изменений или сохранение предыдущего движения 1 Есть изменения[1] [1] [11] ХХ Код длины сдвига 00 - 3bit, 01 - 4bit, 10 - 5bit, 11 - 6bit-7 008749 формат изменений формы формат изменений формы=-Для ВО некоторые настройки могут быть установлены при создании(тип списка= Т 3 Двоичный вектор Т 4 2bit Связанный список, с разрядностью указателей) установки кодирования по оси Х установки кодирования по оси Y(смещение интервала контрольных точек) установки кодирования по оси= 0 Нет кодирования 1 Есть кодирование по оси[1] тип смещения смещение контрольной точки=(указатель контрольной точки) смещение смещение интервала контрольных точек=интервалсмещение смещение=(тип смещения) величина смещения Каждый видеокадр оформляется заголовком, который содержит сопутствующую и индивидуальную информацию. После него размещается формат списка объектов видеокадра. Список ВО упорядочен по важности отображения и по глубине сцены. Число ВО сцены устанавливается в кодовом заголовке сцены. На ВО можно ссылаться по очередности доступа в списке или по его идентификатору. Новые ВО сцены описываются кодом "нового объекта" и задаются динамически полной информацией. Старые ВО,которые необходимо удалить, кодируются кодом "удаления". В списке ВО видеокадра содержится кодированная информация обо всех ВО данного видеокадра. На фиг. 7 представлена схема кодирования ВО. Этот формат представляет бинарную последовательность заданной длины. В формате используется минимальный код для тегов с частым использованием. Он оптимизирован под минимальным общие изменения формы ВО. Ниже приведены варианты формата кодирования ВО с разной информацией по динамике изменения формы. Для выделения групп визуальных объектов, а также групп контрольных точек контура ВО применяются кодовые теги. Таким образом, закодированная общая динамика минимизирует информацию по каждому ВО, делегируя ее соответствующей группе. Тег блока cod:4bit формат действия ВО (точка (Тег блокаТО Тег блока в каждом месте должен выделяться своим иным назначением, например нулевое смещение, или назначенным кодом. Ниже приведены примеры метаданных. На фиг. 8 показано изменение формы ВО. Точки с номерами 1, 2, 7, 8 не поменяли своего положения, точка 3 сдвинулась вниз на одну ячейку, точки 4, 5, 6 сдвинулись вниз на 2 ячейки. Для точек, которые сдвинулись, отмечены смещения по оси Y. Способ сжатия массива данных с помощью двоичного вектора. Объем кодирования информации 32 бита.I. Способ сжатия массива данных, используя связанный список с 2 битовыми указателями. Объем кода 36 бит.II. Способ дополнительного сжатия с использованием анализа общего движения I способа сжатия. Объем кода 32 бит.III. Способ дополнительного сжатия с использованием анализа общего движения II способа сжатия. Объем кода 29 бит. Расчет эффективности методики кодирования ВО состоит в определении степени сжатия структурной и динамической информации ВО в видеокадрах. Исходная информация об ВО задается в растровом бинарном виде на сетке аппроксимации. Конечная информация - это кодированный формат исходной информации. Тогда степень сжатия равна отношению объема исходной информации к объему кодированной информации. Характеристики ВО приведены в табл. 1. Таблица 1 Характеристики ВО Степень сжатия при кодировании начальной формы ВО (внутрикадровое кодирование). Каждая контрольная точка контура в векторном формате задается смещением в локальной системе координат X', Y'. Размеры этой системы координат определяют разрядность смещения. Предположим,что распределение контрольных точек по контуру будет равномерным. Тогда длины смещений будут равными для всех контрольных точек R=L/K. Разрядность координат смещения будет равнаV(R)=2log(L/K), где log обозначает логарифм по основанию 2. Объем кодированной информации по всем контрольным точкам будет равен Vcod=KV(R)=K2log(L/K). Максимальное значение достигается при K=L/e, где е=2,71828 основание натурального логарифма. Тогда Vcod=(L/e)2log(L/(L/e=L2/elog(e)=Ll,06L. Сделаем еще одно предположение, что длина контура пропорциональна периметру области отображения L=kP с коэффициентом пропорциональности k=2. Получим следующую оценку для объема кодированной информации Vcod=L=kP=4(W+H). Объем бинарного растрового изображения равен площади области отображения V=WH бит. Для квадратных областей (W=H) по-9 008749 лучим следующее соотношение объемов данных: f=V/Vcod=(WH)/(4(H+W=HH/(8H)=H/8. Для ВО, умещающегося в области размера НW=1616 ячеек, получим f=16/8=2. Увеличивая размеры области, мы будем также увеличивать степень компрессии данных. Мы видим, что для начального задания формы ВО или задания ВО с быстро меняющейся формой данный способ кодирования эффективен. Степень сжатия при межкадровом кодировании. Для динамичных объектов, у которых изменение положения точек границы больше, чем их векторное задание смещениями относительно соседних точек, передается новая форма границы. Сделаем оценку межкадрового кодирования динамики ВО в среднем случае, за который примем смещения на одну ячейку у 10% контрольных точек контура. Смещающиеся контрольные точки кодируются в этом случае 3 битами информации. Следовательно, получим такие оценкиf=V/Vcod=(WH)/(0,44(W+H=(HH)/0,88H=H/0,88=l,14H и для Н=16 получим степень сжатия f=18 раз. Дополнительное сокращение объема кодированной информации произойдет вследствие анализа общего движения ВО и движения групп контрольных точек контура. Рассмотрим случай общего движения группы Q контрольных точек контура в соседние ячейки, такое движение кодируется 3 битами. Таким образом, степень дополнительного сжатия равнаfдоп=Vcod/Vдоп=(Q3)/3=Q, т.е. пропорциональна числу контрольных точек, имеющих общее движение. Кодирование контура нового ВО основывается на наблюдении, что для любых соседних контрольных точек границы изменения координат по каждой оси X' и Y' ограничены. Максимальные значения этих изменений определяют разрядность смещений, учитывая знак. Но если по какой-либо оси длина такого кода будет больше длины обычных координат, то решение принимается в сторону представления соответствующей координатой. Такие случаи будут встречаться крайне редко, их даже можно устранить введением дополнительных контрольных точек на контуре. В табл. 2 приведены длины кодов для одной из осей сетки 256256. Таблица 2 Длина кода для координаты одной из осей для сетки размера 256256 и для ВО,заданного 40 контрольными точками Алгоритм внутрикадрового кодирования осуществляется следующим образом (фиг. 9). Блок 1. Процедура кодирования. Определяет для каждого нового ВО кодированную информацию о его контуре. Состоит из вызовов вспомогательных процедур для каждого ВО. Блок 2. Входные данные по ВО составляют массив координат из К контрольных точек контура. Координаты соответствуют положению контрольной точки на сетке аппроксимации. Блок 3. В случае необходимости определяется область отображения ВО. Для этого находятся максимальные и минимальные значения координат: Xmin, Xmax, Ymin, Ymax. Блок 4. Определение смещение начала координат области отображения: X0=Xmin, Y0=Ymin. Блок 5. Определение размеров области отображения: W=Xmax-Xmin+l, H=Ymax-Ymin+l. Блок 6. Определение начальной контрольной точки контура. Для этого находим первую точку Р (х,у) с ординатой y=Ymin. Смещение d0 этой контрольной точки от начала области отображения по оси абсцисс запоминаем в d0=x-X0. Блок 7. От начальной точки границы находим массив из К смещений между соседними контрольными точками: dX[i]=X[i]-X[i-l], dY[i]=Y[i]-Y[i-l] и значения максимальных по модулю смещений по осиX и Y: DXmax=maxabc(dX[i]), DYmax=maxabc(dY[i]). Блок 8. Определяем метод кодирования для каждой оси. Для этого сравниваем разрядность DXmax и W. Если len(DXmax)+llen(W), то выбираем кодирование с помощью смещений x[i]=dX[i] и длина кода по X равна LX=len(Dmax)+1, иначе берем в качестве кода локальные координаты x[i]=X[i]-X0 иLX=len(W). Аналогичные действия выполняют при кодировании координат по оси Y. Блок 9. Выходные данные представляют собой параметры области отображения - Х 0, Y0, d0; длины кода смещений по осям - LX, LY; число контрольных точек - K;- 10008749 массивы кодированных координат контрольных точек - х[1:K], у[1:K]. Алгоритм межкадрового кодирования осуществляется следующим образом (фиг. 10). Для кодирования изменений формы анализируются локальные движения контрольных точек контура. Просматривая список контрольных точек, отмечаем для каждой из них отсутствие изменений или наличие смещения. Для общего движения группы контрольных точек контура кодируется количество контрольных точек в группе и само смещение. Блок 10. Процедура межкадрового кодирования изменений формы. Состоит из вспомогательных процедур (блоки 11-22). Назначение процедуры в кодировании для каждого уже созданного ВО его передаваемых изменений на видеокадре. Блок 11. Входные данные. ВО - массив координат из K1 контрольных точек текущего видеокадраPoint1 [K1] с отметками о новых и удаленных контрольных точках, K0 контрольных точек предыдущего видеокадра Point0 [K0]индивидуальные параметры. Блок 12. Кодирование изменения положения и изменения размеров области отображения. Блок 13. Вычисление для всех контрольных точек контура смещений на данном видеокадре относительно положения на предыдущем кадре. Блок 14. Определение способа кодирования координат. Вычисляется размер кодов смещений по осям X' и Y' по максимальным смещениям, учитывая знак смещения. Блок 15. Для всех типов представления смещений контрольных точек контура вычислить объем кодированных данных, используя уже заданную длину кода смещений контрольный точек по осям X' и Y'. Блок 16. Анализ общего движения интервалов контрольных точек контура. Проводится дополнительное кодирование общих смещений для всех типов представления контура. Блок 17. Выбрать способ, минимальный по объему кодированных данных, исходя из вариантов представления списка контрольных точек. Блок 18. Кодирование ВО как нового. Вычисление объема кодированных данных. Блок 19. Сравнение кодирования смещения с кодированием как нового ВО. Выбор наименьшего варианта по объему данных (описанный выше путь 1 или 2). Блок 20. Выходные данные. Способ кодирования координат, способ кодирования контура, кодированные данные контрольных точек контура. Поскольку порядок кодирования массива данных контрольных точек визуальных объектов определен и известен, то процесс декодирования осуществляется в обратном порядке. Декодирование предложенного формата происходит структурно и обеспечивает отслеживание и настройку многих параметров и декодирования и непосредственной структуры данных. Этот процесс имеет хорошее быстродействие и устойчив к ошибкам. При декодировании наибольшие вычислительные затраты занимает процесс построения ВО, который целесообразно для увеличения быстродействия осуществлять аппаратными средствами. При декодировании для каждого кадра на устройство поступает набор контрольных точек, по которым устройство должно построить в памяти компьютера (или ресивера цифрового телевизионного сигнала или какойлибо игровой цифровой приставки) образ ВО, т.е. площадь, занимаемую объектом на экране. Устройство для декодирования закодированного визуального объекта (фиг. 11) содержит следующие блоки: ядро 101 контроллера шины PCI, ядро 102 контроллера прямого доступа к памяти, регистр 103 базового адреса, регистр 104 команды, регистр 105 состояния, блок 106, обеспечивающий доступ в память со стороны контроллера PCI, блок 107 для построения контура визуального объекта по контрольным точкам, блок 108 для заливки области внутри контура визуального объекта, коммутатор 109 потоков данных для памяти, блок 110 логического объединения по ИЛИ сигналов готовности данных, триггер 111 сигнала готовности данных регистров, контроллер 112 памяти, блок 113 управления блоком 107 для построения контура визуального объекта. Входы/выходы указанных блоков соединены шинами посредством типовых соединений, которые используются в контроллерах компьютеров и известны из уровня техники. Блоки 101-106, 109-112 являются типовыми. Блоки 107, 108, 113 являются разработанными в соответствии с заявленным устройством. Блок 107 для построения контура визуального объекта предназначен для создания контура визуального объекта по контрольным точкам. Блок 108 для заливки области внутри контура визуального объекта предназначен для маркировки ячеек внутри контура визуального объекта. Блок 113 управления блоком 107 построения контура ВО предназначен для управления функционированием блока 107 для построения контура визуального объекта. Входами и выходами схемы являются шины PCI 114 и ZBT 115. Шина PCI 114 предназначена для обмена информацией с основным процессором и общей оперативной памятью PC. Шина ZBT 114 предназначена для обмена информацией с локальной оперативной памятью на базе микросхем памяти семейства ZBT SRAM фирмы Micron. Ядро 101 контроллера шины PCI предназначено для интеграции устройства в PC через шину PCI. Для этого ядро 101 обеспечивает обработку обращений на запись и чтение из памяти по трем адресным диапазонам BAR0, BAR1 и BAR2. Непосредственные значения адресов начала диапазонов определяются во время инициализации устройства в PC средствами Plug'nPlay. При обращении к ячейкам памяти адресного диапазона BAR0 осуществляется обращение в регистры 103, 104, 105 соответственноBASEADR, CAMMAND и STATUS, которые имеют соответственно следующие адреса: BAR0+004,BAR0+008 и BAR0+00C. Общий сброс устройства осуществляется транзакцией записи через шину PCI по адресу BAR0+000. При обращении к ячейкам памяти адресного диапазона BAR1 осуществляется доступ, если он разрешен, к локальной памяти устройства. При обращении к ячейкам памяти адресного диапазона BAR2 осуществляется доступ к регистрам ядра 102 контроллера DMA. Регистр 103 BASEADR предназначен для задания базового адреса размещения в локальной памяти устройства области, выделенной для построения визуального объекта. При записи в данный регистр 103 сигналы шины PCI 114 преобразуются ядром 101 контроллера PCI в локальные сигналы (поступающие соответственно на пронумерованные на фиг. 11 шины) 118 доступа к регистрам APPADR - локальный адрес регистра, APPADI 119 - данные для записи, TBARHIT 120 - номер адресного диапазона обращения (1 - BAR0, 2 - BAR1, 4 - BAR2), APPMASTER 121 - режим работы, TWR 122 - сигнал записи,TWE 123 - сигнал поддержания записи. После выдачи единицы на нулевом разряде шины TBARHIT 120, что обозначает, что осуществляется доступ к регистрам 103, 104, 105 устройства, производится дешифрация адреса на шине APPADR 118. Если данный адрес равен 004 и на линии TWR 122 выставлена единица, то на линию REGDRDY 163 выдается единица, что после объединения по ИЛИ в блоке 110 с другими аналогичными сигналами DMADRDY 133 и MEMDRDY 146 и получением сигналаTDRDY по ширине 17, обозначает для ядра 101 контроллера PCI, что регистр 103 BASEADR готов к записи в него значения, выдаваемого на шину APPADI 119. После чего выдачей единицы на линииTWE 123 ядро контроллера разрешает запись в регистр 103. При осуществлении чтения из регистра 103 механизм аналогичный, но после дешифрации адреса и номера диапазона, при наличии на линии TRD 124 единицы, регистр 103 выставляет на шину APPADO 116 свое значение одновременно с выдачей единицы на линии REGDRDY 163. Ядро 101 контроллера PCI после получения сигнала TDRDY 117 выставляет на шину PCI 114 содержимое регистра 103 BASEADR. Аналогичным образом осуществляется запись и чтение и регистр 104 COMMAND, но при этом на шине APPADR 118 дешифрируется адрес 008 и на линию StartIn 136 выдается сигнал с задержкой в 5 тактов TWE 123. Регистр 105 STATUS доступен со стороны шины PCI только на чтение, и имеет адрес 00 С. Регистр 105 STATUS является объединением сигналов по шинам DrawLineFinish 137, FillFinish 138, FillError 139 и Fillint 140. При обращении к данному регистру 105 на шину PCI 115 выставляется 4-битное слово,составленное из вышеперечисленных сигналов. Устройство осуществляет свою работу на основании содержимого регистра 104 COMMAND. Для задания нового режима работы необходимо записать в данный регистр 104 значение новой команды. 00 - NOP нет операции При инициализации устройства, при сбросе и при записи в регистр 104 COMMAND значения 00 схема переходит в режим ожидания, при этом никакие вычисления на устройстве не осуществляются,локальная память по шине 115 отключена и не позволяет осуществлять изменение хранящихся в ней значений. 01 - доступ в память в target режиме для чтения и записи При записи в регистр 104 COMMAND значения 001 коммутатор 109 MUX подсоединяет к шинеMEMWR шину 145 BURSTWR. Соответственно в свою очередь сигналы по шинам BURSTADR 143,BURSTDO 144, MEMDO 141 и BURSTWR 162 объединяются с сигналами по шинам APPADR 118,АРРADI 119, APPADO 116, COMMAND 135 и TWE 123 в блоке 106 BURSTBUFFER при появлении единицы на втором разряде шины TBARHIT 120. Таким образом, после сигнала по шине DRDY 142,равного единице, и выдачи сигнала по шине MEMDRDY 146 при записи в BAR1 будет происходить запись информации в локальную память устройства через контроллер 112 памяти ZBT. При чтении изBAR1 аналогичным образом будет осуществляться доступ к информации в локальной памяти. 02 - доступ в память в master режиме для чтения и записи Аналогично режиму доступа в память в target режиме, но в блоке 106 BURST BUFFER шинаBURSTADR 143 будет подключена к внутреннему счетчику блока 106, начальное состояние которого задается значением сигнала BASEADR по шине 134, шина BURSTDO 144 подключается к шинеFIFOout 128, шина FIFOin 125 к шине MEMDO 141, а на основании передаваемых сигналов по шинамFIFOout ТЕ 129, FIFOoutAE 130, FIFOinTF 131, FIFOinAF 132 и сигнала DRDY 142 будут рассчитываться сигналы MEMWR 162 для записи или чтения из локальной памяти устройства, FIFOinWR 126 для записи в очередь ядра 102 контроллера DMA и сигнал FIFO1RD 147, который на коммутаторе 109 MUX при наличии команды 002 будет выдаваться как сигнал шины FIFOoutRD 127 для считывания из очереди ядра 102 контроллера DMA. Таким образом, после настройки ядра 102 контроллера DMA для записи или чтения оперативной памяти PC данные из локальной памяти устройства будут переписаны в общую память PC при чтении из нее или данные из общей памяти будут переданы в локальную память устройства при записи в нее. Обеспечение режимов работы ядра 102 контроллера DMA осуществляется путем записи командной информации в его управляющие регистры, которые доступны при обра- 12008749 щении по адресам BAR2. 03 - построение контура При записи в регистр 104 COMMAND значения 0x3 при помощи коммутатора 109 MUX шинаFIFO2RD 159, генерируемый в блоке 113 DrawLine Control, в коммутаторе 109 MUX объединяется с сигналом шины FIFOoutRD 127. Таким образом, после настройки ядра 102 контроллера DMA для чтения массива контрольных точек контура и появления сигнала StartIn, равного единице, активизируется блок 113 DrawLine Control. Данный блок 113 при условии равенства флага FIFOoutTE 129 нулю осуществляет считывание двух первых контрольных точек из очереди ядра 102 контроллера DMA по шинеFIFOout 128. Блок 107 преобразует их в непосредственные координаты начала и конца отрезка контура путем выставления на шины X1 149, Х 2 150, Y1 151 и Y2 152 соответствующих значений. Блок 113 генерирует по линии DrawLineStart 148 импульс, равный единице, длиной в один такт, который служит для запуска блока 107 DrawLine. Окончание работы блока 107 DrawLine символизирует единица на линииDrawLineFinish 137, после получения которой блок 113 DrawLineControl осуществляет считывание из очереди ядра 102 контроллера DMA еще одной контрольной точки и выставляет на шины X1 149, Х 2 150, Y1 151 и Y2 152 соответствующие значения для построения следующего отрезка контура. Таким образом, работа будет продолжаться до вычисления всех контрольных точек в очереди ядра 102. Блок 107 DrawLine после получения сигнала запуска по шине DrawLineStart 148 и начальных и конечных точек отрезка контура начинает расчет координат всех остальных точек контура, при этом из памяти по рассчитанным координатам и значению сигнала по шине BASEADR 134 производится считывание значения, хранимого в памяти, рассчитанные точки отрезка контура устанавливаются в единицу. 04 - заливка области внутри построенного контура При записи в регистр 104 COMMAND значения 04 при помощи коммутатора 109 MUX шинаMEMADR 160 подсоединяется к шине FILLADR 157, шина MEMDI 161 к шине FILLDO 158, а сигнал шины MEMWR 162 объединяется с сигналом шины FILLWR 156. После появления сигнала на шине StartIn 136 активизируется блок 108 FILL. Начиная с адреса хранимого в регистре 103 BASEADR блок 108 FILL последовательно считывает из памяти ячейки, заполняет внутреннее пространство контура символами, например, единицами и снова записывает данные ячейки на старое место памяти. Если в процессе заполнения области внутри контура произошли аппаратно выявляемые ошибки, то на линии шины FillError 139 будет выставлена единица, по окончании заливки области внутри контура выставляется сигнал на шине FillFinish 138, равный единице, и сигнал на шине Fillint 140, равный единице. 05 - модификация построенного контура При записи в регистр 104 COMMAND значения 05 при помощи коммутатора 109 MUX шинаFIFO2RD 159, генерируемый в блоке 113 DraweLine Control, в коммутаторе MUX 109 объединяется с сигналом шины FIFOoutRD 127. Таким образом, после настройки ядра 102 контроллера DMA для чтения массива данных модификации залитой области и после появления сигнала на шине 136 StartIn, равного единице, активизируется блок 113 DrawLine Control. Блок 113 при условии равенства флагаFIFOoutTE 129 нулю осуществляет считывание данных первой контрольной точки для модификации из очереди ядра 102 контроллера DMA по шине FIFOout 128. Блок 113 преобразует эти данные в непосредственные координаты начала и конца отрезка контура путем выставления на шины X1 149, Х 2 150,Y1 151 и Y2 152 соответствующих значений. При этом координаты начала и конца отрезка контура будут совпадать. После чего блок 113 генерирует по линии DrawLineStart 148 импульс, равный единице,длиной в один такт, который служит для запуска блока 107. Окончание работы блока 107 DrawLine символизирует единица на линии DrawLineFinish 137, после получения которой блок 113 DrawLine Control осуществляет считывание из очереди ядра 102 контроллера DMA данных еще одной контрольной точки,и выставляет на шины X1 149, Х 2 150, Y1 151 и Y2 152 соответствующие значения для модификации следующей контрольной точки. Таким образом, работа будет продолжаться до вычисления всех точек в очереди ядра 102 контроллера DMA. Блок 107 DrawLine после получения сигнала запуска по шинеDrawLineStart 148 и координат для модификации внутренней области контура визуального объекта по рассчитанным координатам и значению на шине BASEADR 134 производит считывание значения, хранимого в памяти. Рассчитанная точка в данной ячейке памяти устанавливается в единицу, сложенную по логическому исключающему ИЛИ блока 110 со старым значением и с сохранением прежней незатронутой информации снова записывается в локальную память устройства по шине 115. 06 - очистка области памяти для построения контура При записи в регистр 104 COMMAND значения 06 при помощи коммутатора 109 MUX шинаMEMADR 160 подсоединяется к шине FILLADR 157, шина MEMDI 161 к шине FILLDO 158, а сигнал шины MEMWR 162 объединяется с сигналом шины FILLWR 156. После появления сигнала на шине StartIn 136 активизируется блок 108 FILL. Начиная с адреса, хранимого в регистре 103 BASEADR,- 13008749 блок 108 FILL последовательно считывает по шине 115 из локальной ячейки памяти ее содержимое и независимо от старого содержимого ячейка заполняет ее всеми нулями и снова записывает данные ячейки на прежнее место. По окончании работы будет выставляется равный единице сигнал на шинеFillFinish и равный единице сигнал на шине Fillint 140. Таким образом, после окончания работы все ячейки заданной области локальной памяти будут обнулены. 07 - зарезервировано Как видно из описания работы схемы (фиг. 11), блок 107 выполнен с возможностью приема координат контрольных точек от шины PCI, аппроксимации контура ВО и передачи массива данных обо всех точках контура ВО на шину 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 1 (208, Inc l REG),умножитель на 2 (206, 207, 210, 213, 234, 236),регистр весового коэффициента Inс 2 (211, Inc2 REG),регистр X координаты конечной контрольной точки Xend (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),регистр расчета координаты X визуального объекта (246),регистр 32 точек растрового изображения визуального объекта data (256),регистр расчета координаты Y визуального объекта (259),регистр адреса ADR (271),RS триггер (276),регистр выходных данных визуального объекта Dout (284),регистр выхода координаты визуального объекта Xout (407),регистр выхода координаты визуального объекта Xout (408). Описание входов и выходов.CLK (321) - вход глобальной тактовой частоты,RST (322) - вход глобального сигнала сброса,Start (326) - вход запуска процесса расчета координат точек отрезка контура,Enable (323) - разрешение работы,Estimate (324) - сигнал, определяющий режим работы по коррекции визуального объекта,DRDY (325) - флаг о наличии на входе данных для обработки,BASEADR (31:0) (319) - базовый адрес расположения экрана в локальной памяти устройства,DIN (31:0) (320) - очередные 32 бита изображения визуального объекта,X1(10:0) (327) - координата X начала отрезка контура,Х 2(10:0) (328) - координата X окончания отрезка контура,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) - сигнал, маскирующий обращения в память на чтение высоким уровнем,- 14008749RDWR (396) - сигнал, маскирующий обращения в память на запись низким уровнем,Xout (10:0) (409) - координата X вычисленной точки отрезка контура,Yout (10:0) (410) - координата Y вычисленной точки отрезка контура,Блок 107 Drawline для построения контура визуального объекта реализует модифицированный алгоритм Брезенхема. При расчете координат точек, принадлежащих отрезку контура при кусочнолинейной аппроксимации ВО, высчитываются координаты этих точек таким образом, чтобы при пересечении данной памяти с прямой y=const пересечение осуществляется только в одной точке растра. При построении прямых (Estimate (324)=0) по вычисленным координатам записывается значение единицы,сложенное по "логическому или" с прежним значением. При коррекции ВО (Estimate (324)=1) по вычисленным координатам записывается значение единицы, сложенное по "логическому исключающему или" с прежним значением. Схема построена по принципу конечного автомата. Автомат может находиться в одном из 21 возможных состояний. Состояния Lwait (355) - состояние ожидания начала работы. Состояние Lstart (356) - первый шаг работы. Состояние Lxmody (357) - состояние начала расчета координат с последовательным наращиванием X координаты ВО и расчета соответствующего значения Y координаты. Состояние Lymody (358) - состояние начала расчета координат с последовательным наращиванием Y координаты и расчета соответствующего значения X координаты. Состояние LX1Mody (359) - состояние расчета X и Y координаты при движении от контрольной точки X1 к Х 2. Состояние LX2Mody (360) состояние расчета X и Y координаты при движении от контрольной точки Х 2 к X1. Состояние LY1Mody(361) - состояние расчета X и Y координаты при движении от контрольной точки Y1 к Y2. СостояниеLY2Mody (362) - состояние расчета X и Y координаты при движении от контрольной точки Y2 к Y1. Состояние LX1Read (363) - состояние считывания хранимой в памяти информации для внесения туда рассчитанных точек, принадлежащих контуру, при движении от X1 к Х 2. Состояние LX2Read (364) - состояние считывания хранимой в памяти информации для внесения туда рассчитанных точек отрезка контура при движении от Х 2 к X1. Состояние LY1Read (365) - состояние считывания хранимой в памяти информации для внесения туда рассчитанных точек для отрезка контура при движении от контрольной точки Y1 к Y2. Состояние LY2Read (366) - состояние считывания хранимой в памяти информации для внесения туда рассчитанных точек для отрезка контура при движении от контрольной точки Y2 к Y1. Состояние LX1Step (367) - формирование 32-битной ячейки с учетом старого значения памяти и рассчитанных координат новых точек отрезка контура при движении от контрольной точки X1 к Х 2. СостояниеLX2Step (368) - формирование 32-битной ячейки с учетом прежнего значения памяти и рассчитанных координат новых точек отрезка контура при движении от Х 2 к X1. Состояние LY1Step (369) - формирование 32-битной ячейки с учетом старого значения памяти и рассчитанных координат новых точек отрезка контура при движении контрольной точки от Y1 к Y2. Состояние LY2Step (370) - формирование 32-битной ячейки с учетом прежнего значения памяти и рассчитанных координат новых точек отрезка контура при движении от контрольной точки Y2 к Y1. Состояние LX1Write (371) - состояние записи нового значения 32-битной ячейки в память при движении от контрольной точки XI к Х 2. СостояниеLX2Write (372) - состояние записи нового значения 32-битной ячейки в память при движении от Х 2 к X1. Состояние 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),SetLX1Step (347), SetLX2Step (348), SetLY1Step (349), SetLY2Step (350), SetLEnd(351). Сигналы формируются при прохождении указанных на схеме (фиг. 12) логических элементов. При появлении единиц на сигналах 363, 364, 365 и 366 единичные импульсы появляются на сигналах 398, 399, 400 и 401. Данные импульсы, длиной в один такт, предназначены для формирования сигналов чтения RD (397) и записиRDWR(396). На начальном этапе работы блок 107 находится в состоянии Lwait (355). После получения единицы на входе 326 Start схема переходит в состояние Lstart (356). В данном состоянии производится анализ входных контрольных точек. По значениям абсолютной разницы соответствующих координат определяется в каком направлении идет наибольшее их изменение. Если DX (DX=ABS (X2-X1 (402) больше DY (DY=ABS (Y2-Y1 (403) на компараторе (216), то в дальнейшем при расчете координат контрольной точки будет необходимо на каждом этапе модифицировать координату X (380) и в зависимости от состояния весовых коэффициентов (386, 404, 405 и 384) производить расчет координаты Y (376). В обратном же случае наоборот. Если DXDY (406), схема переходит в состояние LXMody (357), иначе,если DX=DY (407), то - в LYMody (358). В новых состояниях определяется, какое направление движения, если для случая, когда DXDY (406), X1 будет меньше Х 2 (387) или больше (389), то за начальную контрольную точку алгоритма расчета будет принята точка X1, а за конечную Xend (217) - точка Х 2. В противном случае наоборот. Для случая, когда DX=DY, аналогичные действия осуществляются для координат Y и рассчитываются значения шин 390 (Y1=Y2 шины 329 и 330 соответственно) и 388 в обратном случае. Так, в состоянии LXMody (357) и LYMody (358) производится расчет весовых коэффици- 15008749 ентов 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),счетчик X координаты чтения точек ВО, расположенных внутри контура (502, Xrd Count+32),счетчик Y координаты чтения точек ВО (503, Yrd Count+1),счетчик X координаты записи (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, ADRrd Count+1),счетчик адреса записи (515, ADRwr 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) - сигнал, определяющий режим работы по очистке экрана,- 16008749INTEnable (554) - сигнал, разрешающий выдачу сигнала прерывания по окончании работы,RESETINT (555) - сигнал сброса прерывания,BASEADR (31:0) (547) - базовый адрес расположения экрана в локальной памяти устройства,D1 (31:0) (548) - очередные 32 бита изображения,ADR (31:0) (577) - адрес для считывания/записи очередных 32 бит изображения.DO (31:0) (579) - вычисленные 32 бита изображения,ERROR (584) - флаг, символизирующий об ошибках при заливке области внутри контура,Finish (586) - выход, определяющий момент окончания заливки области внутри контура,RDWR (585) - сигнал записи/чтения для подачи на контроллер памяти,RD (581) - сигнал чтения для определения момента запроса данных,INT (580) - сигнал прерывания, обозначающий окончание процесса работы. Схема блока 108 построена по принципу конечного автомата. Автомат имеет 5 состояний, состояния задаются регистром State REG (501) и обозначаются единицей на одном из его выходов, соответствующем заданному состоянию. Состояние Lwait (562) - начальное состояние ожидания начала работы автомата. Состояние Lread(563) - состояние считывания ячейки из памяти с незакрашенным контуром. Состояние Lwrite (564) состояние записи в память ячейки с закрашенным контуром. Состояние LWriteNOP (565) - состояние пустой записи, вызывается несколько раз в начале работы автомата, но пока данные не готовы, в память запись не производится. Состояние 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) выдается сумма базового адреса BASEADR (547) и внутреннего счетчика адреса считывания (514), значение которого выдается по шине 575, на выход RD (581) выдается единица. Одновременно с этим происходит увеличение на единицу счетчика адреса считывания (514) и увеличение значений счетчиков X и Y координаты считывания (503 и 502) на 32 (если значение счетчика 503 достигло значения, равного 1023, и значение X не превышает значения, равного 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. Счетчики X и счетчики Y координаты записи (504 и 505) увеличиваются на 32 (если значение счетчика 505 достигло значения, равного 1023, и значение X не превышает значения, равного 991, результат сравнения выдается на 572) и 1 соответственно, если Y меньше 1023 (единица на 274), значения этих счетчиков выдаются на шины 571 и 573, а адрес ADR (577) рассчитывается как сумма базового адреса BASEADR (547) и значения счетчика записи (515), при этом сигнал RDWR (585) устанавливается в ноль. Таким образом осуществляется запись нового рассчитанного значения в память. Также в состоянии Lwrite (564) происходит расчет значений флагов (520) как объединение по логическому исключающему ИЛИ прежнего значения флагов (578) и нового считанного значения DI (548). При достижении счетчика Y координаты считывания (503) значения, равного 1023, происходит его обнуление и увеличение значения счетчика X координаты считывания (502) на 32. Аналогично модифицируются счетчики X и Y координат записи (504 и 505). При достижении счетчика Y координаты считывания (505) значения, равного 1023, происходит принудительное обнуление регистра флагов (520), при этом, если к этому моменту его значение было не равно нулю, то сигнал Error (584) устанавливается в единицу. Автомат продолжает работать, переходя из состоянияLread (563) в Lwrite (564) и обратно до тех пор, пока значения счетчиков X и Y координат записи (504 и 505) не примут значений, равных 992 и 1023 соответственно, что обозначает обработку всех точек области экрана. При этом, если сигнал IntEnable (554) равен единице, то автомат перейдет в состояние Lint(556) с одновременной выдачей единицы на выход Int (580) и пробудет в этом состоянии до появления единицы на входе ResetInt (555), после чего перейдет в состояние Lwait (562). Если же сигнал IntEnable (554) равен нулю, автомат сразу же перейдет в состояние Lwait (562). В любом случае при данных переходах значение сигнала Finish (586) установится в единицу, что свиде- 17008749 тельствует об окончании работы автомата и пробудет в нем до следующего запуска автомата. Таким образом, блок 108 выполнен с возможностью приема массива данных обо всех точках экрана, выделения точек контура ВО и точек, расположенных внутри контура ВО, для передачи массива данных обо всех точках, расположенных внутри контура ВО на шину ZBT. Блок 113 DrawLine Control (фиг. 15) осуществляет управление работой блока 107. Блок состоит из следующих элементов: регистр состояния (601, State REG),промежуточный регистр X координаты контрольной точки конца отрезка контура (602, X2tempREG),промежуточный регистр Y координаты контрольной точки конца отрезка контура (604, Y2tempREG),промежуточный регистр X координаты контрольной точки начала отрезка контура (608, X1tempREG),промежуточный регистр Y координаты контрольной точки начала отрезка контура (609, Y2tempREG),регистр модификации начальной контрольной точки отрезка контура (606, Move),регистр изменения значения X координаты начальной контрольной точки отрезка контура (610,DX),регистр изменения значения Y координаты начальной контрольной точки отрезка контура (611,DY),регистр X координаты начальной контрольной точки (612, X1) отрезка контура,регистр X координаты конечной контрольной точки отрезка контура (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) - сигнал, определяющий режим работы по коррекции ВО,FIFOTE (642) - сигнал "True Empty" от входной FIFO очереди ядра 102 контроллера DMA,FIFOIn (31:0) (641) - выход входной FIFO очереди ядра 102 контроллера DMA,Finish (647) - сигнал Finish от блока 107 DrawLine,StartIn (648) - сигнал запуска работы по построению контура,FIFORD (675) - сигнал считывания из FIFO очереди ядра 102 контроллера DMA,X1 (10:0) (670) - координата контрольной точки X начала отрезка контура,Х 2 (10:0) (672) - координата контрольной точки X окончания отрезка контура,Y1 (10:0) (671) - координата контрольной точки Y начала отрезка контура,Y2 (10:0) (673) - координата контрольной точки Y окончания отрезка контура. Для построения контура визуального объекта из набора прямых линий, например, при кусочнолинейной аппроксимации необходимо выдавать на блок 107 DrawLine координаты контрольных точек ВО. После подачи начальной контрольной точки (X1:Y1) и конечной контрольной точки (X2:Y2), построения линии и получения сигнала Finish (647), начальной контрольной точкой назначается предыдущая конечная контрольная точка, получается новая базовая (опорная) контрольная точка, которая назначается блоком 113 конечной, при этом на основании значения Move (665) вычисляются модификации DX(668) и DY (669) для новой стартовой точки. Формат описания контрольной точки представлен на фиг. 16.X coordinate - координата X очередной контрольной точки,Y coordinate - координата Y очередной контрольной точки,Move - флаг изменения X и Y координат данной контрольной точки при назначении ее начальной точкой для построения отрезка контура. ЕслиMove=0, то координаты не меняются,Move=1, то к координатам (X,Y) прибавляется вектор (DX, DY)=(0,-l),Move=2, то к координатам (X,Y) прибавляется вектор (1,-1),Move=3, то к координатам (X,Y) прибавляется вектор (1,0),Move=4, то к координатам (X,Y) прибавляется вектор (1,1),Move=5, то к координатам (X,Y) прибавляется вектор (0,1),- 18008749Move=6, то к координатам (X,Y) прибавляется вектор (-1,1),Move=7, то к координатам (X,Y) прибавляется вектор (-1,0),Move=8, то к координатам (X,Y) прибавляется вектор (-1,-1). Данное преобразование позволяет избежать появления некорректной заливки ячеек внутри контура ВО в точках, в месте соединения двух прямых. Для коррекции ВО в качестве начальной и конечной точек контура блоком 13 выдаются координаты точки для коррекции, при этом сигналу Estimate (646) присваивается значение единицы. Схема блока 113 DrawLineControl построена по принципу конечного автомата. Автомат имеет 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), и при условии наличия данных во входной очереди FIFOin (641) (флаг FifoTE(642) не равен единице) переходит в состояние LgetPoint1 (657) и осуществляет считывание первого слова из очереди в промежуточный регистр X2temp (602), Y2temp (604) и Move (606). Для считывания кодового слова из очереди сигнала FifoRD (675) выставляется в единицу. После считывания первого слова автомат переходит в состояние LgetPoint2 (658) в случае, если сигнал Estimate (646) равен нулю, и в состояние LestimateStart (662) в противном случае. В состоянии LgetPoint2 (658) осуществляется пересылка из промежуточных регистров X2temp (602), Y2temp (604) значений в промежуточные регистры X1temp(608) и Y1temp (609), а также расчет на основании содержимого регистра Move (606) значений DX (610) и DY (611). Так же осуществляется считывание второго кодового слова из очереди в промежуточный регистр X2temp (602), Y2temp (604) и Move (606). После чего осуществляется переход в состояниеLdawLineStart (662) с выставлением соответствующих значений в регистрах начальной X1 и 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),значения из промежуточных регистров X2temp (663) и Y2temp (664) переписываются в промежуточные регистры X1temp (666) и Y1temp (667). После чего без какой-либо модификации начальной контрольной точки значение промежуточных регистров X1temp (666) и Y1temp (667) подаются на регистр координатX1 (670), Y1 (671), Х 2 (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 PCI. Система предназначена для воспроизведения цифрового потока активного видео на телевизионном экране или другом устройстве отображения видеоинформации, и интерактивного управления информационными потоками в реальном режиме времени. Поток активного видео поступает в аппаратный ком- 19008749 плекс из сети на сетевую карту 701 или от телевещательной компании на TV ресивер 702 или из устройства 707 хранения. Центральный процессор 703 разделяет входной поток данных на три потока: видеопоток, аудиопоток и поток сценария активного видео. Видеопоток направляется центральным процессором 703 на видеодекодер 704, который преобразует упакованный формат цифрового видео в сигнал, требующийся для воспроизведения видеоряда на устройстве отображения (на фиг. 17 не показано, и подсоединено к видеодекодеру 704 обычным образом). Одновременно центральный процессор 703 пересылает аудиопоток на аудиодекодер 705, который в свою очередь декодирует сигнал и выдает его на звуковоспроизводящее устройство (на фиг. 17 не показано и подсоединено к аудиодекодеру 705 обычным образом). Параллельно с этим центральный процессор 703 передает поток активного видео на декодирование в устройство 706. Устройство 706 распаковывает данные и создает карты ВО, присутствующие в данный момент на видеокадре. В случае интерактивного изменения пользователей процесса воспроизведения сценария активного видео посредством интерфейса 708 пользователя центральный процессор 703 обращается к текущей карте ВО в устройстве 706 и в зависимости от выбранного пользователем ВО из нескольких визуальных объектов посылает запрос в сеть или обрабатывает его локально, изменяя тем самым входной поток активного видео. К системе (фиг. 17) активного видео может быть при помощи известных средств подключено устройство просмотра, и/или телекоммуникационная сеть Интернет, и/или устройство приема цифрового сигнала спутникового, и/или эфирного, и/или кабельного телевещательного центра. Промышленная применимость Наиболее успешно заявленные способ кодирования координат перемещающегося на экране вычислительного устройства видеоизображения, устройство для декодирования визуального объекта, закодированного этим способом, и система, предназначенная для визуализации активного видео с помощью этого устройства, промышленно применимы в компьютерных системах активного видео (АВ) или HyperVideo (HV), а также в таких областях, как интерактивное телевидение, видео по требованию, вещание ТВ через Интернет, интерактивные обучающие системы, видеопроводники, персональные, мобильные коммуникации, компьютерные и телевизионные игры. ФОРМУЛА ИЗОБРЕТЕНИЯ 1. Способ кодирования координат перемещающегося на экране вычислительного устройства видеоизображения, включающий вывод на экран видеокадра с изображением по меньшей мере одного визуального объекта, разделение видеокадра с визуальным объектом на XY ячеек, где X и Y координаты - 0,1, 2, , имеющих форму элементарных квадратов или прямоугольников, выделение ячеек, местоположение которых совпадает и не совпадает на видеокадре с местоположением визуальных объектов, путем маркировки ячеек, совпадающих с местоположением ячеек визуального объекта, соответствующим символом и путем маркировки другим символом ячеек, местоположение которых не совпадает с местоположением ячеек визуального объекта, внутрикадровое кодирование, при котором формируют массив данных карты для визуального объекта данного видеокадра, причем если положение визуального объекта в следующем видеокадре постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных визуального объекта предыдущего видеокадра, а если положение визуального объекта в следующем видеокадре изменяется, то, формируя новую карту, для таких видекадров изменяют массив данных визуального объекта, формирование и запоминание файла, образованного последовательностью карт, в которой каждая карта соответствует по меньшей мере одному видеокадру файла, отличающийся тем, что внутрикадровое кодирование производят путем выделения характеристических ячеек, совпадающих с контуром визуального объекта и в которых контур визуального объекта испытывает изменение формы, измеряют координаты контрольных точек - центры характеристических ячеек, а изменение контура визуального объекта между контрольными точками аппроксимируют, вводят локальную систему координат X' и Y', характеризующуюся меньшим количеством ячеек, чем система координат X и Y,при этом центр одной из ячеек принимают за начало системы координат X' и Y', направление осей которой параллельно осям X и Y, при внутрикадровом кодировании формируют в карте массив данных контрольных точек в локальной системе координат X' и Y', который запоминают, причем если положение визуального объекта в следующем видеокадре постоянно, то, формируя новую карту, для таких видеокадров сохраняют массив данных контрольных точек предыдущего видеокадра в локальной системе координат X' и Y', при изменении геометрической формы и/или положения визуального объекта в следующем видеокадре производят его межкадровое кодирование, при котором если положение ячеек визуального объекта в следующем видеокадре в локальной системе координат X' и Y' изменяется, а его контур сохраняется, то в массив данных карты следующего видеокадра вводят параметры вектора смещения для всех контрольных точек визуального объекта, если изменяется в локальной системе координат X и Y его контур, то производят упомянутое внутрикадровое кодирование этого видеокадра, получая массив данных контрольных точек нового видеокадра, далее определяют смещения соответствующих друг другу контрольных точек в локальной системе координат X' и Y'. 2. Способ по п.1, отличающийся тем, что в локальной системе координат X' и Y' визуальный объект- 20008749 геометрически ограничивают прямоугольником, который состоит из тех же ячеек, как и в системе координат X и Y, визуальный объект вписан в упомянутый прямоугольник, центр начала координат X' и Y' располагают в центре угловой ячейки прямоугольника, а направление осей совпадает с направлением системы координат X и Y. 3. Способ по п.1, отличающийся тем, что при аппроксимации используют кусочно-линейную аппроксимацию. 4. Способ по п.1, отличающийся тем, что при аппроксимации используют кривые Безье. 5. Способ по п.1, отличающийся тем, что при аппроксимации используют кубические сплайны. 6. Способ по п.1, отличающийся тем, что при внутрикадровом кодировании выделение характеристических ячеек визуального объекта производят при помощи средств ручной разметки. 7. Способ по п.1, отличающийся тем, что при внутрикадровом кодировании выделение характеристических ячеек визуального объекта производят путем указания при помощи средств ручной разметки нескольких характеристических ячеек на контуре визуального объекта с автоматическим определением контрольных точек этих характеристических ячеек, а по визуальным характеристикам визуального объекта автоматически определяют его другие контрольные точки. 8. Способ по п.1, отличающийся тем, что при межкадровом кодировании вычисляют по массиву смещений контрольных точек для последующего видеокадра длину кода смещений по оси X' и Y' и в качестве массива данных межкадрового кодирования используют код смещений по оси X' и Y'. 9. Способ по п.8, отличающийся тем, что массив данных межкадрового кодирования подвергают сжатию путем введения в массив данных информации только о смещенных контрольных точках с кодом их смещения. 10. Способ по п.9, отличающийся тем, что массив данных межкадрового кодирования подвергают сжатию с использованием двоичного вектора. 11. Способ по п.10, отличающийся тем, что после сжатия с использованием двоичного вектора производят анализ смещений контрольных точек, переместившихся в одном направлении на одинаковое расстояние, объединяют такие контрольные точки в группы последовательно расположенных контрольных точек, а эти группы кодируют с указанием числа контрольных точек и кодом их общего смещения. 12. Способ по п.9, отличающийся тем, что массив данных межкадрового кодирования подвергают сжатию с использованием связанного списка. 13. Способ по п.12, отличающийся тем, что после сжатия с использованием связанного списка производят анализ смещений контрольных точек, переместившихся в одном направлении на одинаковое расстояние, объединяют такие контрольные точки в группы последовательно расположенных контрольных точек, а эти группы кодируют с указанием числа контрольных точек и кодом их общего смещения. 14. Способ по п.1, отличающийся тем, что в каждом видеокадре для визуального объекта сравнивают массив данных внутрикадрового кодирования и межкадрового кодирования и в случае если массив данных внутрикадрового кодирования меньше, чем массив данных межкадрового кодирования, то массив данных контрольных точек внутрикадрового кодирования запоминают в карте этого видеокадра и он служит для формирования массива данных межкадрового кодирования следующих кадров. 15. Устройство для декодирования закодированного визуального объекта, содержащее блоки: ядро контроллера шины РСI, ядро контроллера прямого доступа к памяти, регистр базового адреса, регистр состояния, регистр команды, блок, обеспечивающий доступ в память со стороны контроллера РСI, блок для построения контура визуального объекта по контрольным точкам, в которых контур визуального объекта испытывает изменение формы, блок управления блоком для построения контура визуального объекта, блок для заливки области внутри контура визуального объекта, контроллер памяти, коммутатор потоков данных для памяти, блок логического объединения по ИЛИ сигналов готовности данных, триггер сигнала готовности данных регистров, при этом входы/выходы упомянутых блоков соединены шинами посредством типовых соединений для указанных блоков, причем блок для построения контура визуального объекта предназначен для создания контура визуального объекта по контрольным точкам и выполнен с возможностью приема координат контрольных точек от шины РСI, аппроксимации контура визуального объекта и передачи массива данных обо всех точках контура на шину ZBT, блок для заливки области внутри контура визуального объекта предназначен для маркировки ячеек внутри контура визуального объекта и выполнен с возможностью приема от шины ZBT массива данных обо всех точках экрана, выделения точек контура визуального объекта и точек, расположенных внутри контура визуального объекта, и передачи массива данных обо всех точках, расположенных внутри контура визуального объекта на шину ZBT, блок управления блоком для построения контура визуального объекта выполнен с возможностью поддержки порядка следования координат контрольных точек при подаче их в блок для построения контура визуального объекта. 16. Система для визуализации активного видео, содержащая сетевую карту, предназначенную для получения цифрового видеопотока и отсылки командного трафика к серверу активного видео, TVресивер, предназначенный для приема цифрового видеопотока от телецентра, центральный процессор,видеодекодер, предназначенный для декодирования входного видеопотока в реальном режиме времени и вывода на устройство отображения, аудиодекодер, предназначенный для декодирования входного циф- 21008749 рового потока звуковых данных и вывода его на внешней системе воспроизведения звука, устройство для декодирования закодированного визуального объекта по п.15, предназначенное для создания контура визуального объекта по контрольным точкам и маркировки ячеек внутри контура визуального объекта,устройство хранения, предназначенное для хранения видео-, аудиоданных, данных активного видео и системной информации, интерфейс пользователя, соединенные с системной шиной PCI.

МПК / Метки

МПК: G06T 1/20, G06T 9/20

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

Код ссылки

<a href="https://eas.patents.su/30-8749-sposob-kodirovaniya-koordinat-peremeshhayushhegosya-na-ekrane-vychislitelnogo-ustrojjstva-videoizobrazheniya.html" rel="bookmark" title="База патентов Евразийского Союза">Способ кодирования координат перемещающегося на экране вычислительного устройства видеоизображения</a>

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