Способ кодирования атрибутов для кодирования облака точек
ATTRIBUTE ENCODING METHOD FOR POINT CLOUD ENCODING

ПРИОРИТЕТНАЯ ИНФОРМАЦИЯ
[0001] Для настоящей заявки испрашивается приоритет в соответствии с предварительной заявкой США №63/002,316, поданной 30 марта 2020 года, и заявкой США №17/139,177, поданной 31 декабря 2020 года.
ОБЛАСТЬ ТЕХНИКИ
[0002] Изобретение в целом относится к области обработки данных и, в частности, к кодированию облака точек (Point Cloud Coding, РОС), включая раскрытые в настоящем описании способы кодирования атрибутов, в том числе выбор предсказателя и энтропийное кодирование остатков.
УРОВЕНЬ ТЕХНИКИ
[0003] Облако точек - это набор точек данных в пространстве, которые могут представлять трехмерную (3D) форму. В последние годы широко используется технология облака точек. Например, технология облака точек может использоваться в автономных транспортных средствах для обнаружения и локализации объектов, в географических информационных системах (Geographic Information Systems, GIS) для картографии и в области культурного наследия для визуализации и архивирования объектов и коллекций культурного наследия и так далее.
[0004] Облака точек содержат набор многомерных точек данных, каждая из которых включает в себя информацию о трехмерной позиции и дополнительные атрибуты, такие как цвет, коэффициент отражения и так далее. Они могут быть захвачены с помощью множества камер и датчиков глубины или с помощью технологии обнаружения и определения расстояния с помощью света (Light Detection and Ranging, LIDAR) в различных конфигурациях и могут исчисляться тысячами и миллиардами точек для реалистичного представления исходной сцены (сцен).
[0005] Технологии сжатия необходимы для уменьшения объема данных, необходимых для представления облака точек для более быстрой передачи и/или уменьшения объема памяти.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] Варианты осуществления настоящего изобретения относятся к способу системе и машиночитаемому носителю для кодирования и/или декодирования видеоданных. Согласно одному аспекту предлагается способ декодирования видеоданных. Способ может включать в себя: прием энтропийно-кодированного битового потока, содержащего сжатые видеоданные, включая коды занятости облака точек; создание одного или более деквантованных размеров граничного блока облака точек с помощью процесса, включающего в себя: синтаксический анализ размеров граничного блока облака точек из битового потока; энтропийное декодирование энтропийно-кодированных размеров граничного блока облака точек; и деквантование размеров граничного блока облака точек; определение того, были ли предсказаны сжатые видеоданные, с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии; на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе атрибутов, определение, что предсказатель для декодирования является предсказателем на основе атрибутов; на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе геометрии, определение, что предсказатель для декодирования является предсказателем на основе геометрии; и построение структуры октодерева путем разделения граничного блока облака точек в соответствии с деквантованными размерами граничного блока, включая коды занятости облака точек, с использованием определенного предсказателя.
[0007] Способ может дополнительно включать в себя: выбор предсказателя на основе атрибутов или предсказателя на основе геометрии, исходя из геометрической позиции точек в списке кандидатов.
[0008] Способ может дополнительно включать в себя: определение того, были ли предсказаны сжатые видеоданные с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии, исходя из сигнализации в синтаксисе битового потока.
[0009] Способ может дополнительно включать в себя: когда атрибут кодов занятости является скалярной величиной, определение того, что предсказатель для декодирования является предсказателем на основе геометрии.
[0010] Предсказатель для декодирования может быть бинаризован в код фиксированной длины, а отдельные биты представляют собой арифметический код, закодированный с помощью контекстного моделирования.
[0011] Предсказатель для декодирования может быть бинаризован в усеченный унарный (Truncated Unary, TU) код с максимальным значением, установленным как максимальное значение предсказателя для декодирования.
[0012] Атрибуты облака точек могут включать в себя одно или более из цвета или отражательной способности.
[0013] Способ может дополнительно включать в себя: определение среднего значения остатка на фрагмент для каждого из предсказателя на основе атрибутов и предсказателя на основе геометрии; и определение того, следует ли использовать предсказатель на основе атрибутов или предсказатель на основе геометрии, на основе определенных средних значений остатка.
[0014] Способ может дополнительно включать в себя: когда остаток или преобразованный остаток меньше, чем максимум усеченного унарного (Truncated Unary, TU) кода, использование кода TU с максимальным значением для кодирования; и когда остаток или преобразованный остаток не меньше, чем максимум кода TU, использованием экспоненциального кода для кодирования.
[0015] Экспоненциальный код может быть экспоненциальным кодом Голомба с порядком 0.
[0016] Способ может дополнительно включать в себя: для битов в коде TU, использование арифметического кода на основе контекста; а для битов в экспоненциальном коде, использование байпасного кодирования.
[0017] Способ может дополнительно включать в себя: запуск предсказателя на основе геометрии; по прошествии некоторого времени сравнение фрагмента точек с пороговым значением; когда фрагмент точек превышает пороговое значение, использование предсказателя на основе атрибутов.
[0018] Способ может дополнительно включать в себя: выбор лучшего кандидата предсказания на основе способа оптимизации скорость-искажение, где лучший кандидат предсказания приводит к минимальным затратам на функцию скорость-искажение.
[0019] Способ может дополнительно включать в себя: создание отображаемого изображения на основе, по меньшей мере частично, построенной структуры октодерева; и выполнение управления так, чтобы отображаемое изображение отображалось на дисплее.
[0020] Согласно варианту осуществления может быть предложена компьютерная система для декодирования видеоданных, которая может содержать: один или более машиночитаемых носителей данных, выполненных с возможностью хранить компьютерный программный код; и один или более компьютерных процессоров, выполненных с возможностью получать доступ к упомянутому компьютерному программному коду и работать в соответствии с командами упомянутого компьютерного программного кода, причем упомянутый компьютерный программный код включает в себя: код приема, сконфигурированный так, чтобы один или более компьютерных процессоров принимали энтропийно-кодированный битовый поток, содержащий сжатые видеоданные, включая коды занятости облака точек; код деквантования, сконфигурированный так, чтобы побуждать один или более компьютерных процессоров создавать один или более деквантованных размеров граничного блока облака точек с помощью процесса, включающего в себя: синтаксический анализ размеров граничного блока облака точек из битового потока, энтропийное декодирование энтропийно-кодированных размеров граничного блока облака точек и деквантование размеров граничного блока облака точек; код определения, сконфигурированный так, чтобы побуждать один или более компьютерных процессоров определять, были ли сжатые видеоданные предсказаны с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии; код выбора предсказателя, сконфигурированный так, чтобы побуждать один или более компьютерных процессоров: на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе атрибутов, определять, что предсказатель для декодирования является предсказателем на основе атрибутов; на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе геометрии, определять, что предсказатель для декодирования является предсказателем на основе геометрии; и код построения октодерева, сконфигурированный для побуждения одного или более компьютерных процессоров к построению структуры октодерева путем разделения граничного блока облака точек в соответствии с деквантованными размерами граничного блока, включая коды занятости облака точек, с использованием определенного предсказателя.
[0021] Код выбора предсказателя может быть дополнительно сконфигурирован так, чтобы побуждать один или более компьютерных процессоров: определять, были ли предсказаны сжатые видеоданные с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии, исходя из сигнализации в синтаксисе битового потока.
[0022] Компьютерная система может дополнительно содержать дисплей, в котором компьютерный программный код дополнительно содержит: код отображения, сконфигурированный так, чтобы побуждать один или более процессоров: создавать отображаемое изображение на основе, по меньшей мере частично, построенной структуры октодерева, и выполнять управление таким образом, чтобы отображаемое изображение отображалось на дисплее.
[0023] Атрибуты облака точек могут включать в себя одно или более из цвета или отражательной способности.
[0024] Согласно варианту осуществления машиночитаемый носитель, на котором хранится компьютерная программа для декодирования видеоданных, может включать в себя компьютерную программу, сконфигурированную так, чтобы побуждать один или более компьютерных процессоров: принимать энтропийно-кодированный битовый поток, содержащий сжатые видеоданные, включая коды занятости облака точек; создавать одно или более деквантованных размеров граничного блока облака точек с помощью процесса, включающего в себя: синтаксический анализ размеров граничного блока облака точек из битового потока; энтропийное декодирование энтропийно-кодированных размеров граничного блока облака точек; и деквантование размеров граничного блока облака точек; определение того, были ли предсказаны сжатые видеоданные с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии; на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе атрибутов, определение, что предсказатель для декодирования является предсказателем на основе атрибутов; на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе геометрии, определение, что предсказатель для декодирования является предсказателем на основе геометрии; и построить структуру октодерева путем разделения граничного блока облака точек в соответствии с деквантованными размерами граничного блока, включая коды занятости облака точек, с использованием определенного предсказателя.
[0025] Компьютерная программа машиночитаемого носителя данных может быть дополнительно сконфигурирована так, чтобы побуждать один или более компьютерных процессоров: создавать отображаемое изображение на основе, по меньшей мере частично, построенной структуры октодерева; и выполнять управление так, чтобы отображаемое изображение отображалось на дисплее.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0026] Эти и другие цели, особенности и преимущества станут очевидными из следующего подробного описания иллюстративных вариантов осуществления, которое следует изучать вместе с сопроводительными чертежами. Различные элементы чертежей не в масштабе, поскольку иллюстрации приведены для ясности и облегчения понимания специалистом в данной области техники вместе с подробным описанием. На чертежах:
[0027] На фиг. 1 показана рабочая схема октодерева согласно варианту осуществления.
[0028] Фиг. 2 иллюстрирует пример двухуровневого разбиения октодерева, древовидной структуры и соответствующих кодов занятости.
[0029] На фиг. 3 показан сбор статистики в первый период из Τ точек и определение адаптивного параметра.
[0030] На фиг. 4 показан, как иллюстрация концепции варианта осуществления, сбор статистики и определение адаптивного параметра в каждом фрагменте.
[0031] На фиг. 5 показана функциональная блок-схема, иллюстрирующая этапы способа декодирования видеоданных.
[0032] На фиг. 6 показана функциональная блок-схема сетевой компьютерной среды, иллюстрирующей систему кодирования видео для кодирования и/или декодирования видеоданных согласно варианту осуществления.
[0033] Фиг. 7 иллюстрирует размещение декодера в потоковой среде / потоковой системе согласно варианту осуществления.
[0034] Фиг. 8 иллюстрирует функциональную блок-схему декодера (например, видеодекодера) согласно варианту осуществления.
[0035] Фиг. 9 иллюстрирует функциональную блок-схему системы кодирования, включающей в себя исходный кодер, который может быть видеокодером согласно варианту осуществления.
[0036] На фиг. 10 показана компьютерная система 700, подходящая для реализации определенных вариантов осуществления изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0037] В данном разделе раскрыты подробные варианты осуществления заявленных структур и способов; однако следует понимать, что раскрытые варианты осуществления являются просто иллюстрацией заявленных структур и способов, которые могут быть воплощены в различных формах. Однако эти структуры и способы могут быть воплощены во многих различных формах, и их не следует рассматривать как ограниченные примерными вариантами осуществления, изложенными в данном документе. Эти примерные варианты осуществления предоставлены для того, чтобы описание было исчерпывающим и полным и полностью передавало объем для специалистов в данной области техники. В описании детали хорошо известных особенностей и технологий могут быть опущены, чтобы избежать ненужного затруднения понимания представленных вариантов осуществления.
[0038] Варианты осуществления в целом относятся к области обработки данных и, в частности, к кодированию и/или декодированию видео. Следующие описанные ниже примерные варианты осуществления предлагают систему, способ и компьютерную программу, среди прочего, для кодирования и/или декодирования видеоданных.
[0039] Аспекты описаны в данном документе со ссылками на блок-схемы и/или структурные схемы способов, устройств (систем) и машиночитаемых носителей согласно различным вариантам осуществления. Будет понятно, что каждый блок блок-схем и/или структурных схем, а также комбинации блоков в блок-схемах и/или структурных схемах могут быть реализованы с помощью машиночитаемых программных команд.
[0040] Обратимся теперь к фиг. 6, где представлена функциональная блок-схема сетевой компьютерной среды, иллюстрирующая систему 100 кодирования видео (далее «система») для кодирования и/или декодирования видеоданных согласно варианту осуществления. Следует понимать, что фиг.6 предоставляет только иллюстрацию одного из вариантов осуществления и не подразумевает каких-либо ограничений в отношении сред, в которых могут быть реализованы различные варианты осуществления. Многие модификации изображенных сред могут быть сделаны на основе требований дизайна и реализации.
[0041] Как показано на фиг. 6, система 100 связи, согласно варианту осуществления настоящего изобретения, может включать в себя по меньшей мере два терминала 110, 120, которые соединены между собой посредством сети 150. Для однонаправленной передачи данных первый терминал 110 может кодировать видеоданные в локальном местоположении для передачи другому терминалу 120 через сеть 150. Второй терминал 120 может принимать кодированные видеоданные другого терминала из сети 150, декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и тому подобном.
[0042] Фиг. 6 иллюстрирует вторую пару терминалов 130, 140, обеспечивающих поддержку двунаправленной передачи кодированного видео, которая может происходить, например, во время видеоконференцсвязи. Для двунаправленной передачи данных каждый терминал 130, 140 может кодировать видеоданные, захваченные в локальном местоположении, для передачи на другой терминал через сеть 150. Каждый терминал 130, 140 также может принимать кодированные видеоданные, переданные другим терминалом, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.
[0043] На фиг. 6 терминалы 110-140 могут быть проиллюстрированы как портативный компьютер 110, сервер 120 и смартфоны 130 и 140, но принципы настоящего изобретения не ограничиваются этим. Варианты осуществления настоящего изобретения находят применение с другим оборудованием, включая, но не ограничиваясь этим, портативные компьютеры, планшетные компьютеры, медиаплееры и/или специализированное оборудование для видеоконференцсвязи. Сеть 150 представляет любое количество сетей, которые передают кодированные видеоданные между терминалами 110-140, включая, например, сети проводной и/или беспроводной связи. Данные в сети 150 связи обмен данными может осуществляться в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети 150 могут быть несущественными для работы настоящего изобретения, если это не объясняется в данном документе ниже.
[0044] Фиг. 7 иллюстрирует, в качестве примера применения для раскрытого изобретения, размещение декодера 210 в потоковой среде / потоковой системе 200. Декодер 210 дополнительно обсуждается со ссылкой на фиг. 8 и декодер 433 на фиг. 9. Декодер 210 может соответствовать декодеру 210 на фиг. 3 или декодеру 433 на фиг. 9.
[0045] Настоящее изобретение может быть в равной степени применимо к другим применениям с поддержкой видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и тому подобное, и так далее.
[0046] Как показано на фиг. 7, потоковая система 200 может включать в себя подсистему 213 захвата, которая может включать в себя источник 201 видео, например, цифровую камеру, которая может создавать несжатый поток 202 выборок видео. Этот поток 202 выборок, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными битовыми потоками видеоданных, может обрабатываться исходным кодером 203, подключенным к камере 201. Исходный кодер 203 может включать в себя аппаратное обеспечение (например, процессор или схему и память), программное обеспечение или их комбинацию для обеспечения условий или реализации аспектов раскрытого изобретения, как более подробно описано ниже. Кодированный битовый поток 204 видео, изображенный тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком выборок, может быть сохранен на потоковом сервере 205 для будущего использования. Один или более клиентов 206, 208 потоковой передачи могут получить доступ к серверу 205 потоковой передачи для извлечения копий 207, 209 кодированного битового потока 204 видео. Клиент 206 может включать в себя видеодекодер 210, который может декодировать входящую копию кодированного битового потока 207 видео и может создавать исходящий поток 211 выборок видео, который может отображаться на дисплее 212 или другом устройство рендеринга.
[0047] Фиг. 8 иллюстрирует функциональную блок-схему декодера 210 (например, видеодекодера) согласно варианту осуществления настоящего изобретения. Как показано на фиг. 8, приемник 310 может принимать одну или более видеопоследовательностей кодека, которые должны быть декодированы декодером 210. В том же или другом варианте осуществления одна кодированная видеопоследовательность может приниматься за один раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала 312, который может быть аппаратной / программной связью с устройством хранения, в котором хранятся кодированные видеоданные. Приемник 310 может принимать закодированные видеоданные вместе с другими данными, например, закодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть отправлены их соответствующим использующим объектам (не изображены). Приемник 310 может отделять кодированную видеопоследовательность от других данных. Для борьбы с дрожанием в сети буферная память 315 может быть подключена между приемником 310 и энтропийным декодером / синтетическим анализатором 320 (далее «синтаксический анализатор»). Когда приемник 310 принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемости, или из изосинхронной сети, буфер 315 может не понадобиться или может быть небольшим. Для использования в пакетных сетях с максимальной эффективностью, таких как Интернет, может потребоваться буфер 315, который может быть сравнительно большим и предпочтительно может иметь адаптивный размер.
[0048] Видеодекодер 210 может включать в себя синтаксический анализатор 320 для восстановления символов 321 из энтропийно-кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой декодера 210, и потенциально информацию для управления устройством визуализации, например дисплеем 212, которое не является неотъемлемой частью декодера, но может быть связано с ним, как показано на фиг.7 и 8. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров дополнительной расширенной информации (Supplementary Enhancement Information) (сообщения SEI) или удобной в использовании визуальной информации (Video Usability Information, VUI) (не показаны). Синтаксический анализатор 320 может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодируемой видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать принципам, хорошо известным специалистам в данной области техники, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Синтаксический анализатор 320 может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (Groups of Pictures, GOPs), изображения, фрагменты (tiles), срезы, макроблоки, единицы кодирования (Coding Units, CUs), блоки, единицы преобразования (Transform Units, TUs), единицы предсказания (Prediction Units, PUs) и так далее. Энтропийный декодер / синтаксический анализатор 320 также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.
[0049] Синтаксический анализатор 320 может выполнять операцию энтропийного декодирования / синтаксического анализа над видеопоследовательностью, принятой из буфера 315, чтобы создавать символы 321. Восстановление символов 321 может включать в себя множество различных единиц в зависимости от типа кодированного видеоизображения или его частей (таких как: меж- и внутри (интер- и интра-) -изображение, меж- и внутри-блок) и других факторов. Какие блоки задействованы и каким образом, можно контролировать с помощью управляющей информации подгруппы, которая была извлечена из кодированной видеопоследовательности с помощью синтаксического анализатора 320. Поток такой информации управления подгруппой между синтаксическим анализатором 320 и множеством модулей ниже не показан для ясности.
[0050] Помимо уже упомянутых функциональных блоков, декодер 210 может быть концептуально подразделен на ряд функциональных блоков, как описано ниже. При практической реализации, работающей в условиях коммерческих ограничений, многие из этих блоков тесно взаимодействуют друг с другом и могут, по крайней мере частично, быть интегрированы друг в друга. Однако для целей описания раскрытого предмета изобретения уместно концептуальное подразделение на функциональные блоки, приведенные ниже.
[0051] Первым блоком может быть блок 351 масштабирования / обратного преобразования. Блок 351 масштабирования / обратного преобразования может принимать квантованный коэффициент преобразования, а также информацию управления, включая информацию о том, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее в виде символа(-ов) 321 из синтаксического анализатора 320. Он может выводить блоки, содержащие значения выборок, которые можно вводить в агрегатор 355.
[0052] В некоторых случаях выходные выборки блока 351 масштабирования / обратного преобразования могут относиться к интракодированному блоку, который представляет собой блок, который не использует предсказательную информацию из ранее восстановленных изображений, но может использовать предсказательную информацию из ранее восстановленных частей текущего изображения. Такая предсказательная информация может быть предоставлена блоком 352 внутрикадрового предсказания. В некоторых случаях блок 352 внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из текущего (частично восстановленного) изображения 358. Агрегатор 355 в некоторых случаях добавляет для каждой выборки информацию предсказания, сгенерированную блоком 352 внутреннего предсказания, к информации выходных выборок, предоставляемой блоком 351 масштабирования / обратного преобразования.
[0053] В других случаях выходные выборки блока 351 масштабирования / обратного преобразования могут относиться к блоку с межкадровым кодированием и блоку с потенциально компенсированным движением. В таком случае блок 353 предсказания с компенсацией движения может обращаться к памяти 357 опорных изображений, чтобы выбрать выборки, используемые для предсказания. После компенсации движения выбранных выборок в соответствии с символами 321, относящимися к блоку, эти выборки могут быть добавлены агрегатором 355 к выходу блока масштабирования / обратного преобразования (в этом случае называемых остаточными выборками или остаточным сигналом), чтобы создавать информацию о выходных выборках. Адреса в форме памяти опорных изображений, по которым блок компенсации движения извлекает выборки предсказания, могут управляться векторами движения, доступными блоку компенсации движения в форме символов 321, которые могут иметь, например, Χ, Υ и компоненты опорных изображений. Компенсация движения также может включать в себя интерполяцию значений выборок, извлеченных из памяти опорных изображений, когда используются точные векторы движения подвыборки, механизмы предсказания вектора движения и так далее.
[0054] Выходные выборки агрегатора 355 могут подвергаться различным способам контурной фильтрации в блоке 356 контурного фильтра. Технологии сжатия видео могут включать в себя технологии внутриконтурной фильтрации, которые управляются параметрами, включенными в кодированный битовый поток видео и предоставляемыми блоку 356 контурного фильтра в виде символов 321 из синтаксического анализатора 320, но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также в ответ на ранее восстановленные и отфильтрованные по контуру значения выборки.
[0055] Выходом блока 356 контурного фильтра может быть поток выборок, который может быть выведен на устройство 212 рендеринга, а также сохранен в памяти 357 опорных изображений для использования в будущем межкадровом предсказании.
[0056] Некоторые кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. После того, как кодированное изображение полностью реконструировано и кодированное изображение было идентифицировано как опорное изображение (например, синтаксическим анализатором 320), текущее опорное изображение 358 может стать частью буфера 357 опорных изображений, и память свежего текущего изображения может быть перераспределена перед началом восстановления следующего кодированного изображения.
[0057] Видеодекодер 210 может выполнять операции декодирования согласно заранее определенной технологии сжатия видео, которая может быть задокументирована в стандарте, таком как ITU-T Rec. Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что она соответствует синтаксису технологии или стандарта сжатия видео, как указано в документе или стандарте технологии сжатия видео и, в частности, в документе способов сжатия (профилей) в нем. Для соответствия также необходимо, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в миллионах выборок в секунду) и/или максимальный размер опорного изображения. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (Hypothetical Reference Decoder, HRD) и метаданных для управления буфером HRD, передаваемых в кодированной видеопоследовательности.
[0058] В варианте осуществления приемник 310 может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(-ей). Дополнительные данные могут использоваться видеодекодером 210 для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных уровней или уровней улучшения отношения сигнал/шум (Signal-To-Noise Ratio, SNR), избыточных срезов, избыточных изображений, кодов прямого исправления ошибок и так далее.
[0059] Фиг. 9 может быть функциональной блок-схемой системы 400 кодирования, включающей в себя исходный кодер 203, который может быть видеокодером 203 согласно варианту осуществления настоящего изобретения.
[0060] Кодер 203 может принимать выборки видео от источника 201 видео (который не является частью кодера), который может захватывать видеоизображение(-я) для кодирования кодером 203.
[0061] Источник 201 видео может предоставить исходную видеопоследовательность, которая должна быть закодирована кодером 203 в форме потока дискретных цифровых видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру выборки (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе обслуживания мультимедиа источник 201 видео может быть запоминающим устройством, которое может включать в себя память и процессор, в котором хранится предварительно подготовленное видео. В системе видеоконференцсвязи источник 201 видео может включать в себя камеру, которая фиксирует локальную визуальную информацию в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать одну или более выборок в зависимости от используемой структуры выборки, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и выборками. Описание ниже ориентировано на выборки.
[0062] Согласно варианту осуществления, кодер 203 может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера 450. Контроллер 450 может управлять другими функциональными блоками, как описано ниже, и может быть функционально связан с этими блоками. Связь не изображена для ясности. Параметры, установленные контроллером 450, могут включать в себя параметры, относящиеся к управлению скоростью (например, пропуск изображения, квантователь, значение лямбда для способов оптимизации параметра скорость-искажение), размер изображения, компоновку группы изображений (Group Of Pictures, GOP), максимальный диапазон поиска вектора движения, и так далее. Специалист в данной области техники может легко определить другие функции контроллера 450, поскольку они могут относиться к видеокодеру 203, оптимизированному для определенной конструкции системы.
[0063] Некоторые видеокодеры работают в том, что специалист в данной области техники легко распознает как «контур кодирования». В качестве упрощенного описания контур кодирования может состоять из кодирующей части исходного кодера 430 (далее «исходное кодирующее устройство» или «исходный кодер»), который отвечает за создание символов на основе входного изображения, подлежащего кодированию, и опорного изображения(-й), и локального декодера 433, встроенного в кодер 203, который реконструирует символы для формирования данных выборки, которые также может создать удаленный декодер 210 (поскольку любое сжатие между символами и кодированным потоком битов видео происходит без потерь в технологиях сжатия видео, рассматриваемых в настоящем описании). Этот восстановленный поток выборок вводится в память 434 опорных изображений.
[0064] Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локального или удаленного), содержимое буфера опорных изображений также является точным до бита между локальным кодером и удаленным кодером. Другими словами, компонент предсказания кодера «видит» в качестве выборок опорного изображения точно те же значения выборок, которые декодер «увидит» при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) хорошо известен специалисту в данной области техники.
[0065] Работа «локального» декодера 433 может быть такой же, как у «удаленного» декодера 210, который уже был подробно описан выше в связи с фиг.8. Кратко обратимся также к фиг.8, однако, поскольку символы доступны и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером 445 и синтаксическим анализатором 320 может осуществляться без потерь, части энтропийного декодирования декодера 210 (включая канал 312, приемник 310, буфер 315 и синтаксический анализатор 320) не могут быть полностью реализованы в локальном декодере 433.
[0066] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме синтаксического/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать, по существу, в идентичной функциональной форме в соответствующем кодере. Описание технологий кодирования является инверсией описанным технологиям декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[0067] В качестве части своей работы исходный кодер 430 может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входной кадр с предсказанием со ссылкой на один или более ранее закодированных кадров из видеопоследовательности, которые были обозначены как «опорные кадры». Таким образом, движок 432 кодирования кодирует различия между блоками пикселей входного кадра и блоками пикселей опорного кадра(-ов), которые могут быть выбраны в качестве опорного(-ых) предсказания(-й) для входного кадра.
[0068] Локальный видеодекодер 433 может декодировать кодированные видеоданные кадров, которые могут быть обозначены как опорные кадры, на основе символов, созданных исходным кодером 430. Операции движка 432 кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере, восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер 433 копирует процессы декодирования, которые могут выполняться видеодекодером на опорных кадрах, и может вызывать сохранение восстановленных опорных кадров в кэше 434 опорных изображений. Таким образом, исходный кодер 203 может локально хранить копии восстановленных опорных кадров, которые имеют общий контент, как восстановленные опорные кадры, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).
[0069] Предсказатель 435 может выполнять поиски с предсказанием для движка 432 кодирования. То есть для нового кадра, который должен быть закодирован, предсказатель 435 может выполнять поиск в памяти 434 опорных изображений в отношении данных выборки (в качестве блоков-кандидатов опорных пикселей) или определенных метаданных, таких как векторы движения опорных изображений, формы блоков и так далее, что может служить подходящей опорой для предсказания для новых изображений. Предсказатель 435 может работать по принципу блок выборки-за-блоком пикселей, чтобы найти соответствующие опоры для предсказания. В некоторых случаях, как определено результатами поиска, полученными предсказателем 435, входное изображение может иметь опоры для предсказания, взятые из множества опорных изображений, сохраненных в памяти 434 опорных изображений.
[0070] Контроллер 450, который может включать в себя процессор, может управлять операциями кодирования исходного кодера 203, включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0071] Выходные данные всех вышеупомянутых функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере 445. Энтропийный кодер может преобразовывать символы, сгенерированные различными функциональными блоками, в кодированную видеопоследовательность путем сжатия без потерь символов в соответствии с технологиями, известными специалистам в данной области техники, как, например, кодированием Хаффмана, кодированием переменной длины, арифметическим кодированием и так далее.
[0072] Передатчик 440 может буферизовать закодированную видеопоследовательность(-и), созданную энтропийным кодером 445, чтобы подготовить ее к передаче через канал 460 связи, который может быть аппаратной/программной связью с устройством хранения, которое будет хранить закодированные видеоданные. Передатчик 440 может объединять кодированные видеоданные из исходного кодера 203 с другими подлежащими передаче данными, например, с кодированными аудиоданными и/или с потоками вспомогательных данных.
[0073] Контроллер 450 может управлять работой кодера 203. Во время кодирования контроллер 450 может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на способы кодирования, которые могут быть применены к соответствующему изображению. Например, изображениям часто могут быть назначены один из следующих типов кадров из, например, интра-изображения (I-изображение), предсказываемое изображения (Р-изображение) и изображения с двунаправленным предсказанием (В-изображение).
[0074] Интра-изображение (I-изображение) может быть таким, которое может быть кодировано и декодировано без использования какого-либо другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки позволяют использовать различные типы интра-изображений, включая, например, обновление изображений с помощью независимого декодера. Специалисту известны эти варианты I-изображений и их соответствующие приложения и особенности.
[0075] Предсказываемое изображение (Р-изображение) может быть таким, которое может быть закодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений выборок каждого блока.
[0076] Изображение с двунаправленным предсказанием (В-изображение) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений выборок каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[0077] Исходные изображения обычно могут быть разделены пространственно на множество блоков выборок (например, блоки по 4 × 4, 8 × 8, 4 × 8 или 16 × 16 выборок каждый) и закодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки из I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или внутреннее предсказание). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно из ранее кодированных опорных изображений. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0078] Исходный кодер 203 может выполнять операции кодирования согласно заранее определенной технологии или стандарту видеокодирования, такому как ITU-T Rec. Н.265 или универсальное кодирование видео (Versatile Video Coding, VVC). В своей работе исходный кодер 203 может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[0079] В варианте осуществления передатчик 440 может передавать дополнительные данные с кодированным видео. Исходный кодер 430 может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные уровни / пространственные уровни / уровни улучшения отношения сигнал/шум, другие формы избыточных данных, такие как избыточные изображения и срезы, сообщения дополнительной расширенной информации (Supplementary Enhancement Information, SEI), фрагменты набора параметров удобной для использования визуальной информации (Visual Usability Information, VUI) и тому подобное.
[0080] Как обсуждалось выше, кодирование кодируемой видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать принципам, хорошо известным специалистам в данной области техники, включая кодирование с переменной длиной, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. В некоторых потоковых системах потоки 204, 207, 209 видеобитов могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примером таких стандартов является Рекомендация Н.265 ITU-T HEVC.
[0081] Сжатие облака точек
[0082] В тестовой модели 13 (ТМС13) в группе экспертов по движущимся изображениям (MPEG) информация о геометрии и связанные атрибуты, такие как цвет или коэффициент отражения, могут быть отдельно сжаты. Геометрическая информация, которая представляет собой трехмерные координаты облаков точек, может быть закодирована с помощью разбиения(-й) октодерева с информацией о занятости разбиения(-й) октодерева. Затем атрибуты могут быть сжаты на основе восстановленной геометрии с использованием способов предсказания, лифтинга и адаптивного иерархического преобразования области. Процессы разбиения октодерева и кодирования занятости более подробно описаны ниже.
[0083] Ρазбиение(-я) октодерева
М-1
М-1
М-1
М-1
[0084] Фиг. 1 показывает иллюстрацию разбиение октодерева согласно варианту осуществления. В ТМС13, когда используется кодер-декодер геометрии октодерева (кодек), кодирование геометрии происходит следующим образом. Во-первых, кубический граничный блок В, выровненный по осям, определяется двумя точками (0,0,0) и (2, 2, 2), где 2 определяет размер В, а М указывается в потоке битов.
[0085] Затем строится структура октодерева путем рекурсивного деления В. На каждом этапе куб делится на 8 субкубов. Затем 8-битный код, а именно код занятости, может быть сгенерирован путем связывания 1-битового значения с каждым субкубом, чтобы указать, содержит ли он точки (т.е. полный и имеет значение 1) или нет (т.е. пустой и имеет значение 0). Только полные субкубы с размером больше 1 (т.е. не-вокселы) далее подразделяются (например, путем выполнения другого разбиения октодерева субкуба, который заполнен).
[0086] Фиг. 2 иллюстрирует пример двухуровневого разбиения октодерева, древовидной структуры и соответствующих кодов занятости (например, 10000001, 00011000, 10001000), где темные кубы и узлы указывают, что соответствующие кубы и узлы заняты точками (т.е. полные).
[0087] Кодирование кода(-ов) занятости
[0088] Код занятости каждого узла может быть сжат с помощью арифметического кодера. Код занятости может быть обозначен как S, который является 8-битовым целым числом, и каждый бит в S может указывать статус занятости соответствующего дочернего узла. В ТМС13 существует два способа кодирования кодов занятости: способ побитового кодирования и способ побайтного кодирования. По умолчанию может быть включено побитовое кодирование. Как в побитовом, так и в побайтном подходах арифметическое кодирование с контекстным моделированием может быть принято для кодирования кода(-ов) занятости, где статус контекста инициализируется в начале всего процесса кодирования и обновляется во время процесса кодирования.
[0089] Для побитового кодирования восемь бинов в S кодируются в определенном порядке, где каждый бин кодируется с помощью ссылки на статус занятости соседних узлов и дочерних узлов соседних узлов, где соседние узлы находятся на том же уровне, что и текущий узел.
[0090] Для побайтного кодирования S кодируется посредством ссылки на: адаптивную поисковую таблицу (Adaptive Look Up Table, A-LUT), которая отслеживает Ν (например, 32) наиболее частых кодов занятости, и кэш (например, вторая таблица в кэш), который отслеживает самые последние наблюдаемые Μ (например, 16) кодов занятости.
[0091] Может быть закодирован двоичный флаг, указывающий, находится ли S в таблице A-LUT или нет. Согласно варианту осуществления, когда S находится в A-LUT, индекс в A-LUT может быть закодирован с использованием двоичного арифметического кодера. Согласно варианту осуществления, когда S отсутствует в A-LUT, может быть закодирован двоичный флаг, указывающий, находится ли S в кэше или нет. Когда S находится в кэше, то двоичное представление индекса S может быть закодировано с использованием двоичного арифметического кодера. В противном случае, когда S отсутствует в кэше, двоичное представление S может быть закодировано с использованием двоичного арифметического кодера.
[0092] В некотором смысле кодирование с использованием разбиения октодерева аналогично кодированию с переменной длиной.
[0093] Процесс декодирования начинается с синтаксического анализа размеров граничного блока В из битового потока. Такая же структура октодерева затем строится путем деления В в соответствии с декодированными кодами занятости.
[0094] Согласно варианту осуществления атрибутами облака точек могут быть цвет, коэффициент отражения и так далее.
[0095] Согласно варианту осуществления способы кодирования с предсказанием атрибутов (например, как кодируется остаток) могут включать в себя три этапа:
[0096] Этап 1: Выбор предсказателя.
[0097] Этап 2: Вычисление разницы между значением атрибута и его предсказателем для получения остатка предсказания.
[0098] Этап 3: энтропийное кодирование остатка предсказания.
[0099] Этапы 1 и 3 являются критическими этапами, которые определяют эффективность кодирования атрибутов.
[0100] Кроме того, облака точек часто обладают разными характеристиками: некоторые облака точек, например, облака точек от человеческих тел или небольших объектов, довольно плотные, а точки плотно прилегают друг к другу; некоторые облака точек, например облака точек от автономного вождения, взятые с датчиков лидара, довольно редки, особенно в местах, удаленных от датчиков. Некоторые облака точек, например облака точек для карты высокой четкости, имеют промежуточную плотность точек. Важно разработать этапы 1 и 3, которые могут адаптироваться к различным характеристикам (например, разной плотности облака точек).
[0101] Согласно варианту осуществления кодер, декодер или кодер-декодер (кодек) может быть реализован схемой обработки (например, одним или несколькими аппаратными процессорами или одной или более интегральными схемами). В одном примере один или более процессоров могут выполнять программу, которая хранится на машиночитаемом носителе.
a
a
a
a
[0102] Согласно варианту осуществления, g[i] и [i] могут использоваться для представления геометрической позиции и значения атрибута для i-й точки в облаке точек, соответственно. Соответствующий предсказатель может быть обозначен как p[i], а остаток предсказания может быть обозначен как [i] = [i] - p[i]. Согласно варианту осуществления, [i], р[i] и r[i] могут быть вектором или скаляром. Например, согласно варианту осуществления, [i], p[i] и r[i] могут быть 3-мерными векторами, когда атрибут является красно-зеленым-синим (RGB) цветом, или скалярами, когда атрибутом является отражательная способность.
[0103] Согласно варианту осуществления предусмотрены способы кодирования остатков предсказания.
[0104] Согласно варианту осуществления могут быть предложены способы выбора предсказателя, за которыми следуют способы адаптивного выбора среди различных способов выбора предсказания.
[0105] Кодирование остатков предсказания
[0106] Остатки предсказания часто имеют гауссово или лапласовское распределение, где большинство значений близки к нулю. Согласно варианту осуществления, эти «близкие к нулю» характеристики могут использоваться для энтропийного кодирования.
[0107] В одном варианте осуществления остаток r[i] предсказания может быть сначала преобразован в неотрицательное число R[i], как в следующей формуле:
max
max
[0108] Для удобства R[i] называется преобразованным остатком предсказания. Для кодирования R[i], согласно варианту осуществления, может использоваться следующий гибридный подход: когда [i] < TU, может использоваться усеченный унарный (Truncated Unary TU) код с максимальным значением TU.
[0109] Согласно варианту осуществления код TU может быть простым кодом (например, 110). Когда R[i] меньше порогового значения, может использоваться TU. Когда R[i] не меньше порогового значения, может использоваться экспоненциальный код.
max
max
max
[0110] Например, когда R[i] ≥ TU, используется код TU, равный TU, за которым следует экспоненциальный код Голомба с порядком 0 (Exponential Golomb Code, EGK) для кодирования R[i] - TU.
[0111] Для битов в коде TU используется арифметический код на основе контекста, в то время как для битов в коде EGK используется байпасное кодирование.
[0112] Одним из примеров является TU max = 3. Согласно варианту осуществления может быть выполнена первая проверка того, ноль или нет, за которой следует проверка, один или нет, и проверка для двух или нет, и так далее.
max
[0113] Когда TU=3, синтаксическая таблица для преобразованного остатка R[i] предсказания может быть следующей:
[0114]
преобразованный_остаток_предсказания_равен_нулю определяет, если R [i] равен 0 преобразованный_остаток_предсказания_равен_единице определяет, если R[i] равен 1 преобразованный_остаток_предсказания_равен_двум определяет, если R[i] равен 2 преобразованный_остаток_предсказания_минус_три определяет R[i] следующим образом
R[i] = преобразованный_остаток_предсказания_минут_три + 3.
max
[0115] В одном варианте осуществления U = 2, синтаксическая таблица опущена для простоты.
max
[0116] В другом варианте осуществления, TU = 1, синтаксическая таблица для преобразованного остатка R[i] предсказания может быть следующей:
[0117]
преобразованный_остаток_предсказания_равен_нулю определяет, если R [i] равен 0
преобразованный_остаток_предсказания_минус_один определяет R[i] следующим образом
R[i] = преобразованный_остаток_предсказания_минут_один + 1.
max
[0118] В другом варианте TU = 0. В этом случае используется только код EGK.
Таблица синтаксиса для преобразованного остатка предсказания R[i] упрощается следующим образом.
[0119]
преобразованный_остаток_предсказания определяет R[i] следующим образом
R[i] = преобразованный_остаток_предсказания.
[0120] Поскольку для разных облаков точек, демонстрирующих разные характеристики, или для одного и того же облака точек с разными параметрами квантования атрибутов, преобразованный остаток предсказания может иметь разную статистику. Может быть желательна адаптивная схема.
max
i
max
[0121] В одном варианте осуществления TU сначала устанавливается как максимальное значение, например 3. Когда начинается кодирование преобразованных остатков предсказания, количество преобразованных остатков предсказания равно i, обозначаемое как freq(b) or freq(i), где i = 0, 1, … TU - 1, собирается за период в Τ точек, например Τ = 512.
[0122] Например, в качестве иллюстрации концепции фиг.3 показывает сбор статистики в первый период из Τ точек и определение адаптивного параметра.
[0123] Согласно варианту осуществления вероятность каждого бита может быть вычислена в коде TU, то есть
m
max
[0124] В одном варианте осуществления, когда Prob(b = 1) близко к 0,5, TU устанавливается как m.
m
[0125] В другом варианте осуществления, когда Prob(b = 1),
max
все близки к 0,5., TU уменьшается до m.
max
max
max
max
[0126] Согласно варианту осуществления, как обсуждалось ранее, EGK с байпасным кодированием может использоваться для кодирования R[i] - TU, когда R[i] ≥ TU. В одном варианте осуществления экспоненциальный код Голомба с порядком k > 0 может использоваться для кодирования R[i] - TU, когда R[i] ≥ TU.
[0127] В другом варианте осуществления порядок экспоненциального кода Голомба может быть адаптивно выбран на основе статистики, собранной за период Т:
max
[0128] Когда начинается кодирование преобразованных остатков предсказания, частота преобразованных остатков предсказания равна 0, 1, …, TU - 1 собирается для периода Τ точек.
T
[0129] Кроме того, вычисляется сумма всех преобразованных остатков предсказания в пределах периода Τ точек и обозначается как S.
max
[0130] С помощью этих статистических данных можно вычислить среднее значение преобразованных остатков предсказания, которые больше или равны TU, например, на основе следующего уравнения 3 (уравнение 3):
T
T
T
max
max
[0131] В начале кодирования используется EGK. После периода в Τ точек вычисляется A. Если A > Th(K) и A < Th(K + 1), порядок K выбирается для кодирования следующих точек. Th(1), Th(2), …, Th(k) - это набор предопределенных пороговых значений с возрастающими значениями, а k - это максимальный порядок экспоненциального кода Голомба в приложении.
R
Th
Th
R
[0132] В одном варианте осуществления, помимо суммирования всех преобразованных остатков предсказания, количество всех преобразованных остатков предсказания, превышающих пороговое значение Th, обозначенное как N, и их суммирование S собираются за период Т. Согласно варианту осуществления среднее значение преобразованных остатков предсказания, которые больше, чем Th, может быть вычислено, например, на основе следующего уравнения 4 (уравнение 4):
Th
T
где A используется для замены A для определения порядка экспоненциального кода Голомба.
max
max
[0133] В одном варианте осуществления сбор преобразованной остаточной статистики и адаптивный выбор TU и k могут выполняться в начале каждого последовательного фрагмента точек, где количество точек в каждом фрагменте равно С.
[0134] Например, фиг.4 показывает, в качестве иллюстрации концепции варианта осуществления, сбор статистики и определение адаптивного параметра в каждом фрагменте. То есть, сравнивая с фиг. 3, фиг. 3 показывает сбор в начале, а фиг. 4 показывает периодически (например, в каждом фрагменте). В одном варианте осуществления остаток r[i] предсказания может быть непосредственно кодирован. Согласно варианту осуществления сначала однобитовый знак для r[i]
может быть закодирован с использованием двоичного арифметического кода с контекстным моделированием.
max
[0135] Абсолютное значение r[i] может быть закодировано и обозначено как abs(r[i]), используя тот же подход, что и упомянутый выше, за исключением добавления знакового бита. В одном варианте осуществления, когда TU = 1, синтаксическая таблица для остатка предсказания r[i] может быть следующей:
[0136]
[0137] Где остаток_предсказания_равен_нулю указывает, когда r[i] равно 0 в таблице 4.
[0138] Где знак_остатка_предсказания указывает знак r[i] на основе следующего уравнения 6:
[0139] Где абсолютный_остаток_предсказания_равен_единице указывает, когда abs(r[i]) равно 1 в уравнении 6.
[0140] Где абсолютный_остаток_предсказания_равен_двум указывает, когда abs(r[i]) равно 2 в уравнении 6.
[0141] Где абсолютный_остаток_предсказания_минус_три определяет r[i] следующим образом
r[i] = sign(r[i]) × (абсолютный_остаток_предсказания_минус_три + 3)
[0142] Выбор предсказателя
cand
[0143] Чтобы закодировать атрибут, согласно варианту осуществления, могут использоваться следующие два шага: (1) составление списка кандидатов и (2) выбор лучшего кандидата в списке кандидатов в качестве предсказателя на основе определенного критерия. В следующем разделе размер списка кандидатов обозначается как N, который может быть предварительно определен или сигнализирован с помощью синтаксиса высокого уровня, такого как набор параметров последовательности, набор параметров атрибута, заголовок слайса и так далее.
[0144] Составление списка кандидатов
cand
[0145] В одном варианте осуществления кодирование атрибута следует порядку кодирования геометрии, то есть атрибут точки кодируется после того, как кодируется геометрическая позиция точки. Список кандидатов для i-й точки содержит N недавно закодированных точек, то есть обозначенных в следующем уравнении 7:
где точки упорядочены в порядке кодирования геометрии в формуле 7.
[0146] Согласно варианту осуществления список кандидатов может быть реализован как скользящий буфер. Новая точка может быть вставлена в начало списка, а последняя точка может быть удалена из списка. В одном варианте осуществления перед вставкой новой точки геометрическая позиция и значение атрибута новой точки сравниваются с геометрической позицией и значением атрибута кандидатов в списке кандидатов. Если в списке кандидатов есть точка кандидата с такой же геометрической позицией и атрибутом, новая точка не вставляется. Если в списке кандидатов нет точки кандидата с такой же геометрической позицией и атрибутом, новая точка может быть вставлена как обычно.
[0147] В одном варианте осуществления кодирование атрибутов выполняется после того, как кодирование геометрии было выполнено для облака точек или части облака точек. Все точки с кодировкой геометрии могут быть упорядочены с использованием порядка Мортона или другого порядка заполнения пространства (порядок Мортона используется только в качестве примера). За исключением того, что точки могут быть упорядочены по-разному, способы построения списка кандидатов такие же, как описано выше.
[0148] Другими словами, есть определенные способы конструирования кандидата. Общий подход состоит в том, что создается список кандидатов, и один из кандидатов в списке кандидатов выбирается в качестве предсказателя. Однако при наличии дубликата вставка не производится.
Выбор предсказателя на основе геометрии
[0149] Согласно варианту осуществления предсказатель может быть выбран на основе геометрической позиции точек в списке кандидатов и i-й точки. В одном варианте осуществления предсказатель может быть выбран как ближайшая точка к i-й точке, например, как показано в следующем уравнении 8:
p
[0150] Где ||g|| представляет р-нормальную работу точки g = (х, у, zz) в уравнении 8.
[0151] В одном варианте осуществления p = 1 или p = 2 (p означает предсказатель). Согласно варианту осуществления, три координаты (х, у, z) при нормальной работе могут обрабатываться одинаково.
[0152] В одном варианте осуществления может быть определена взвешенная нормальная работа, например, в следующем уравнении 9:
и предсказатель может быть выбран как ближайшая точка к i-й точке, как показано в следующем Уравнении 9:
1
2
3
[0153] Согласно варианту осуществления весовой параметр w, w, w может быть заранее определен или сигнализирован в синтаксисе высокого уровня.
index
[0154] Согласно варианту осуществления декодер может выполнять ту же операцию для определения индекса предсказателя pred, так что нет необходимости сигнализировать об этом в синтаксисе.
[0155] Выбор предсказателя на основе атрибутов
[0156] В этом способе предсказатель (например, р) может быть выбран на основе значений атрибутов точек в списке кандидатов и i-й точки. В одном варианте осуществления предсказатель, выбранный как тот, который имеет ближайшее значение атрибута к значению атрибута i-й точки, может основываться, например, на следующем уравнении 10:
[0157] В одном варианте осуществления p = 1 или p = 2. Когда атрибут является скалярным значением, всегда p = 1.
index
index
index
[0158] Декодер может не знать a[i], и, следовательно, pved не может быть определен в декодере, и его необходимо сигнализировать в синтаксисе. В одном варианте осуществления pred бинаризуется в код фиксированной длины, а арифметический код используется для кодирования отдельных битов с помощью контекстного моделирования. Количество битов для кода фиксированной длины может зависеть от диапазона pred.
index
index
[0159] В одном варианте осуществления pred бинаризуется в усеченный унарный код (TU) с максимальным значением, установленным как максимальное значение pred. Для первых нескольких битов в коде TU может использоваться арифметический код с контекстным моделированием для кодирования первых нескольких битов в коде TU; остальные биты кодируются в режиме байпаса. В другом варианте осуществления все биты в коде TU кодируются с использованием арифметического кода с контекстным моделированием.
index
[0160] В одном варианте осуществления pred может быть закодирован с использованием кода TU, за которым следует код EGK, как описано ранее, где биты в TU кодируются с использованием арифметического кода с контекстным моделированием.
[0161] Адаптивный выбор предсказателя. Поскольку разные облака точек обладают разными характеристиками, выбор предсказания на основе геометрии может быть лучше, чем способ выбора предсказателя на основе атрибутов для одного типа облаков точек, но уступает ему для другого типа облаков точек. Желательна адаптивная схема.
[0162] То есть один способ основан на атрибутах, а другой - на геометрии. Таким образом, статистика накапливается и вычисляется среднее значение остатка. Только тогда, когда накладные расходы по остаткам велики, сигнализация индекса может быть оправдана. Согласно варианту осуществления может быть определено среднее значение остатка (например, для каждого фрагмента), и может быть определено, использовать ли предсказатель на основе атрибутов или предсказатель на основе геометрии, исходя из установленного среднего значения остатка.
index
[0163] В частности, способ выбора предсказателя на основе атрибутов часто предлагает лучшее предсказание, но страдает от накладных расходов, связанных с сигнализацией pred. Когда остаток предсказания от способа на основе геометрии очень велик, способ на основе атрибутов часто обеспечивает лучшую производительность.
max
T
[0164] На основе этого наблюдения, согласно варианту осуществления, статистика может быть собрана (обсуждалось выше), и может быть вычислено среднее значение преобразованных остатков предсказания, которые больше или равны TU (то есть A в начале периода Т).
T
pred
Согласно варианту осуществления, адаптивный способ может включать в себя: кодер, запускающий основанный на геометрии способ предсказания. После периода Τ вычисляется A и сравнивается с порогом Th.
T
pred
Если A > Th, используется выбор предсказателя на основе атрибутов.
pred
pred
[0165] Согласно варианту осуществления, Th может быть заранее определено или передано в виде сигнала в синтаксисе высокого уровня. Th может отличаться для кодирования без потерь и кодирования с потерями.
Th
R
T
[0166] В другом варианте осуществления A, среднее значение преобразованных остатков предсказания, которые больше, чем Th, может быть вычислено и может использоваться для замены A для принятия решения.
T
Th
[0167] В одном варианте осуществления сбор статистики по остаткам предсказания может выполняться в начале каждого последовательного фрагмента точек, A (или A) для каждого фрагмента может быть вычислено и сравнено с двумя пороговыми значениями
[0168] Согласно варианту осуществления адаптивная схема для каждого фрагмента следующая:
[0169]  переключение на выбор предсказателя на основе геометрии.
[0170]  переключение на выбор предсказателя на основе атрибутов.
[0171] В противном случае нет изменения способа выбора предсказателя.
[0172] Согласно варианту осуществления для кодирования без потерь или кода с потерями пара  может быть другой.
[0173] В другом варианте осуществления лучший кандидат для предсказания выбирается на основе способов оптимизации "скорость-искажение", где лучший кандидат приводит к минимальным затратам на функцию скорость-искажение.
[0174] То есть скорость-искажение может использоваться для определения пропущенных затрат. Таким образом, подробности включают в себя то, как атрибут был закодирован и как он был выбран.
[0175] Обратимся теперь к фиг. 5, на которой изображена функциональная блок-схема, иллюстрирующая этапы способа 600 декодирования видеоданных. Средний специалист в данной области техники может понять, как процесс кодирования будет работать на основе фиг. 5. В некоторых реализациях один или несколько блоков процесса могут выполняться компьютером 102 и сервером. В некоторых реализациях один или более блоков процессов могут выполняться другим устройством или группой устройств, отдельной от компьютера и сервера или включая их.
[0176] Варианты осуществления относятся к способу, системе и машиночитаемому носителю для кодирования и/или декодирования видеоданных. Согласно одному аспекту предлагается способ декодирования видеоданных.
[0177] Как показано на фиг. 5, способ может включать в себя: прием энтропийно-кодированного битового потока, содержащего сжатые видеоданные, включая коды занятости облака точек (этап 601).
[0178] На этапе 602 способ может включать в себя формирование одного или более деквантованных размеров граничного блока облака точек с помощью процесса. Процесс для деквантованных размеров может включать в себя: синтаксический анализ размеров граничного блока облака точек из потока битов; энтропийное декодирование энтропийно-кодированных размеров граничного блока облака точек; и деквантование размеров граничного блока облака точек.
[0179] На этапе 603 способ может включать в себя определение того, были ли сжатые видеоданные предсказаны с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии;
[0180] На этапе 604 способ может включать в себя: на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе атрибутов (т.е. этап 603: Да), определение того, что предсказатель для декодирования является предсказателем на основе атрибутов (Этап 604).
[0181] Способ может включать в себя: на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе геометрии (т.е. этап 603: Нет), определение того, что предсказатель для декодирования является предсказателем на основе геометрии; и построение структуры октодерева путем разделения граничного блока облака точек согласно деквантованным размерам граничного блока, включая коды занятости облака точек, с использованием определенного предсказателя.
[0182] Способ может дополнительно включать в себя: выбор предсказателя на основе атрибутов или предсказателя на основе геометрии, исходя из геометрической позиции точек в списке кандидатов.
[0183] Способ может дополнительно включать в себя: определение того, были ли предсказаны сжатые видеоданные с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии, исходя из сигнализации в синтаксисе потока битов.
[0184] Способ может дополнительно включать в себя: когда атрибут кодов занятости является скалярным значением, определение того, что предсказатель для декодирования является предсказателем на основе геометрии.
[0185] Предсказатель для декодирования может быть бинаризован в код фиксированной длины, а отдельные биты представляют собой арифметический код, закодированный с помощью контекстного моделирования.
[0186] Предсказатель для декодирования может быть бинаризован в усеченный унарный (TU) код с максимальным значением, установленным как максимальное значение предсказателя для декодирования.
[0187] Атрибуты облака точек могут включать в себя одно или более из цвета или отражательной способности.
[0188] Способ может дополнительно включать в себя: определение среднего значения остатка на фрагмент для каждого из предсказателя на основе атрибутов и предсказателя на основе геометрии; и определение того, использовать ли предсказатель на основе атрибутов или предсказатель на основе геометрии, исходя из определенных средних значений остатка.
[0189] Способ может дополнительно включать в себя: когда остаток или преобразованный остаток меньше, чем максимум усеченного унарного (TU) кода, использование кода TU с максимальным значением для кодирования; и когда остаток или преобразованный остаток не меньше, чем максимум кода TU, использование экспоненциального кода для кодирования.
[0190] Экспоненциальный код может быть экспоненциальным кодом Голомба с порядком 0.
[0191] Способ может дополнительно включать в себя: для битов в коде TU, использование арифметического кода на основе контекста; а для битов в экспоненциальном коде, использование байпасного кодирования.
[0192] Способ может дополнительно включать в себя: запуск предсказателя на основе геометрии; по прошествии некоторого времени сравнение фрагмента точек с пороговым значением; когда количество точек превышает пороговое значение, использование предсказателя на основе атрибутов.
[0193] Способ может дополнительно включать в себя: выбор лучшего кандидата предсказания на основе способа оптимизации скорость-искажение, где лучший кандидат предсказания приводит к минимальным затратам на функцию скорость-искажение.
[0194] Способ может дополнительно включать в себя: создание отображаемого изображения на основе, по меньшей мере частично, построенной структуры октодерева; и выполнение управления таким образом, чтобы отображаемое изображение отображалось на дисплее.
[0195] Согласно варианту осуществления может быть предложена компьютерная система для декодирования видеоданных, которая может содержать: один или более машиночитаемых носителей данных, выполненных с возможностью хранить компьютерный программный код; и один или более компьютерных процессоров, выполненных с возможностью получать доступ к упомянутому компьютерному программному коду и работать в соответствии с командами упомянутого компьютерного программного кода, причем упомянутый компьютерный программный код включает в себя: код приема, сконфигурированный так, чтобы побуждать один или более компьютерных процессоров принимать энтропийно-кодированный поток битов, содержащий сжатые видеоданные. включая коды занятости облака точек; код деквантования, сконфигурированный так, чтобы побуждать один или более компьютерных процессоров создавать один или более деквантованных размеров граничного блока облака точек посредством процесса, включающего в себя: синтаксический анализ размеров граничного блока облака точек из потока битов, энтропийное декодирование энтропийно-кодированных размеров граничного блока облака точек и деквантование размеров граничного блока облака точек; код определения, сконфигурированный так, чтобы побуждать один или более компьютерных процессоров определять, были ли сжатые видеоданные предсказаны с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии; код выбора предсказателя, сконфигурированный так, чтобы побуждать один или более компьютерных процессоров: на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе атрибутов, определять, что предсказатель для декодирования является предсказателем на основе атрибутов; на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе геометрии, определять, что предсказатель для декодирования является предсказателем на основе геометрии; и код построения октодерева, сконфигурированный так, чтобы побуждать один или более компьютерных процессоров строить структуру октодерева путем разделения граничного блока облака точек согласно деквантованным размерам граничного блока, включая коды занятости облака точек, с использованием определенного предсказателя.
[0196] Код выбора предсказателя может быть дополнительно сконфигурирован так, чтобы побуждать один или более компьютерных процессоров: определять, были ли предсказаны сжатые видеоданные с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии, исходя из сигнализации в синтаксисе потока битов.
[0197] Компьютерная система может дополнительно содержать дисплей, в котором компьютерный программный код дополнительно содержит: код отображения, сконфигурированный так, чтобы побуждать один или более процессоров: создавать отображаемое изображение, основанное, по меньшей мере частично, на построенной структуре октодерева, и выполнять управление таким образом, чтобы отображаемое изображение отображалось на дисплее.
[0198] Атрибуты облака точек могут включать в себя одно или более из цвета или отражательной способности.
[0199] Согласно варианту осуществления машиночитаемый носитель, на котором хранится компьютерная программа для декодирования видеоданных, может включать в себя компьютерную программу, сконфигурированную так, чтобы побуждать один или более компьютерных процессоров: принимать энтропийно-кодированный поток битов, содержащий сжатые видеоданные, включая коды занятости облака точек; создавать один или более деквантованных размеров граничного блока облака точек с помощью процесса, включающего в себя: синтаксический анализ размеров граничного блока облака точек из потока битов; энтропийное декодирование энтропийно-кодированных размеров граничного блока облака точек; и деквантование размеров граничного блока облака точек; определение того, были ли предсказаны сжатые видеоданные с использованием предсказателя на основе атрибутов или предсказателя на основе геометрии; на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе атрибутов, определение того, что предсказатель для декодирования является предсказателем на основе атрибутов; на основе определения того, что сжатые видеоданные были предсказаны с использованием предсказателя на основе геометрии, определение того, что предсказатель для декодирования является предсказателем на основе геометрии; и построить структуру октодерева путем разделения граничного блока облака точек согласно деквантованным размерам граничного блока, включая коды занятости облака точек, с использованием определенного предсказателя.
[0200] Компьютерная программа машиночитаемого носителя данных может быть дополнительно сконфигурирована так, чтобы побуждать один или более компьютерных процессоров: создавать отображаемое изображение, основанное, по меньшей мере частично, на построенной структуре октодерева; и выполнять управление так, чтобы отображаемое изображение отображалось на дисплее.
[0201] Можно принять во внимание, что блок-схемы (например, фиг. 5) предлагают только иллюстрацию одной реализации и не подразумевают каких-либо ограничений в отношении того, как могут быть реализованы различные варианты осуществления. Многие модификации изображенных сред могут быть сделаны на основе требований дизайна и реализации.
[0202] Способы кодирования / декодирования могут быть реализованы одним или более процессорами, которые могут выполнять компьютерное программное обеспечение, имеющее машиночитаемые команды, которые могут физически храниться на одном или более машиночитаемых носителях (например, на жестком диске). Например, на фиг. 10 показана компьютерная система 700, подходящая для реализации определенных вариантов осуществления раскрытого предмета изобретения.
[0203] Компьютерное программное обеспечение может быть закодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть предметом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего команды, которые могут выполняться напрямую или посредством интерпретации выполнения микрокода и тому подобного центральными процессорами (Central Processing Unit, CPU) компьютера, графическими процессорами (Graphics Processing Unit, GPU) и тому подобным.
[0204] Команды могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и тому подобное.
[0205] Компоненты, показанные на фиг.10 для компьютерной системы 700 являются примерными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы 700.
[0206] Компьютерная система 700 может включать в себя определенные устройства ввода для взаимодействия с человеком. Такое устройство ввода для взаимодействия с человеком может реагировать на ввод одним или несколькими пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения перчаток данных), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода, (например, жесты), обонятельный ввод (не изображен). Устройства для взаимодействия с человеком также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[0207] Устройство ввода для взаимодействия с человеком могут включать в себя одно или более из (только одно из каждого изображенного): клавиатура 701, мышь 702, трекпад 703, сенсорный экран 710, перчатка 704 для данных, джойстик 705, микрофон 706, сканер 707, камера 708.
[0208] Компьютерная система 700 может также включать в себя определенные устройства вывода для взаимодействия с человеком. Такие устройства вывода для взаимодействия с человеком могут стимулировать чувства одного или нескольких пользователей-людей, например, посредством тактильного вывода, звука, света и запаха / вкуса. Такие устройства вывода для взаимодействия с человеком могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана 710, перчатку 704 для данных или джойстик 705, но также могут быть устройства с тактильной обратной связью, которые не служат в качестве устройств ввода), устройства вывода звука (такие как: динамики 709, наушники (не показаны)), устройства визуального вывода (например, экраны 710, включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое с возможностью ввода с сенсорного экрана или без нее, каждое с возможностью тактильной обратной связи или без нее - некоторые из них могут быть способны выводить двумерные визуальные выходные данные или более чем трехмерные выходные данные с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)), и принтеры (не изображены).
[0209] Компьютерная система 700 также может включать в себя доступные человеку устройства хранения и связанные с ними носители, такие как оптические носители, включая CD / DVD ROM / RW 720 с CD / DVD или тому подобное, носитель 721, флэш-накопитель 722, съемный жесткий диск или твердотельный накопитель, накопитель 723, традиционные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM / ASIC / PLD, такие как защитные ключи (не показаны) и т.п.
[0210] Специалисты в данной области также должны понимать, что термин «машиночитаемые носители» или «машиночитаемый носитель», используемый в связи с раскрытым в настоящее время предметом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.
[0211] Компьютерная система 700 также может включать в себя интерфейс для одной или нескольких сетей связи. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные локальные сети, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или глобальные беспроводные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевизионное вещание, причем автомобильное и промышленное оборудование включают в себя шину стандарта сети контроллеров (Controller Area Network, CANBus) и т.д. Некоторым сетям обычно требуются адаптеры внешнего сетевого интерфейса, которые подключены к определенным портам данных общего назначения или периферийным шинам 749 (таким как, например, USB-порты компьютерной системы 700; другие обычно интегрируются в ядро компьютерной системы 700 путем присоединения, к системной шине, как описано ниже (например, интерфейс Ethernet к компьютерной системе ПК или интерфейс сотовой сети к компьютерной системе смартфона). Используя любую из этих сетей, компьютерная система 700 может связываться с другими объектами. Такая связь может быть однонаправленной, только прием (например, широковещательное телевидение), однонаправленная передача (например, CANbus на определенные устройства CANbus), или двунаправленная, например, в другие компьютерные системы, использующие локальные или глобальные цифровые сети. Определенные протоколы и стеки протоколов могут использоваться в каждой из этих сетей и сетевых интерфейсах, как описано выше.
[0212] Вышеупомянутые устройства для взаимодействия с человеком, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру 740 компьютерной системы 700.
[0213] Ядро 740 может включать в себя один или более центральных процессоров (CPU) 741, графических процессоров (GPU) 742, специализированных программируемых блоков обработки в виде программируемых логических интегральных схем (Field Programmable Gate Areas, FPGA) 743, аппаратных ускорителей 744 для определенных задач и т.д. Эти устройства, наряду с постоянным запоминающим устройством (Read-only memory, ROM) 745, оперативным запоминающим устройством 746, внутренним запоминающим устройством, таким как внутренние жесткие диски, не доступные пользователю, твердотельные накопители и т.п. 747, могут быть подключены через системную шину 748. В некоторых компьютерных системах системная шина 748 может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения с помощью дополнительных процессоров, графических процессоров и т.п.Периферийные устройства могут быть подключены либо непосредственно к системной шине 748 ядра, либо через периферийную шину 749. Архитектура периферийной шины включает в себя PCI, USB и т.п.
[0214] CPU 741, GPU 742, FPGA 743 и ускорители 744 могут выполнять определенные команды, которые в комбинации могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ 745 или ОЗУ 746. Переходные данные также могут храниться в ОЗУ 746, тогда как постоянные данные могут храниться, например, во внутреннем запоминающем устройстве 747. Быстрое сохранение и извлечение на любое из запоминающих устройств могут быть задействованы посредством использования кэш-памяти, которая может быть тесно связана с одним или более CPU 741, GPU 742, запоминающим устройством 747 большой емкости, ПЗУ 745, ОЗУ 746 и т.п.
[0215] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего раскрытия, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[0216] В качестве примера, а не в качестве ограничения, компьютерная система, имеющая архитектуру 700, и, в частности, ядро 740 может обеспечивать функциональность в результате того, что процессор(-ы) (включая CPU, GPU, FPGA, ускорители и т.п.) выполняют программное обеспечение, воплощенное на одном или более материальных, машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя запоминающим устройством большой емкости, как описано выше, а также определенными запоминающими устройствами ядра 740, которые являются энергонезависимыми, такими как внутреннее запоминающее устройство 747 большой емкости или ПЗУ 745. Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром 740. Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может побудить ядро 740 и, в частности, процессоры в нем (включая CPU, GPU, FPGA и тому подобие) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в ОЗУ 746, и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением.
[0217] В дополнение или в качестве альтернативы, компьютерная система 700 может предоставлять функциональные возможности в результате аппаратной логики или иным образом воплощенные в схеме (например, ускоритель 744), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это уместно. Ссылка на машиночитаемый носитель может охватывать схему (например, интегральную схему (mtegrated Circuit, IC)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это необходимо. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
[0218]
[0219] Некоторые варианты осуществления могут относиться к системе, способу и/или машиночитаемому носителю на любом возможном уровне технической детализации интеграции. Машиночитаемый носитель может включать в себя машиночитаемый носитель данных (или носители), содержащий машиночитаемые программные команды на нем, чтобы побуждать процессор выполнять операции.
[0220] Машиночитаемый носитель данных может быть материальным устройством, которое может удерживать и хранить команды для использования устройством выполнения команд. Машиночитаемый носитель данных может быть, например, но не ограничиваясь этим, электронным запоминающим устройством, магнитным запоминающим устройством, оптическим запоминающим устройством, электромагнитным запоминающим устройством, полупроводниковым запоминающим устройством или любой подходящей комбинацией вышеперечисленного. Неисчерпывающий список более конкретных примеров машиночитаемого носителя данных включает в себя следующее: портативная компьютерная дискета, жесткий диск, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), стираемое программируемое постоянное запоминающее устройство (EPROM или флэш-память), статическое запоминающее устройство (SRAM), портативное постоянное запоминающее устройство для компакт-дисков (Compact Disc Read-Only Memory, CD-ROM), универсальный цифровой диск (Digital Versatile Disk, DVD), карта памяти, дискета, механически закодированное устройство, такое как перфокарты или выпуклые структуры в канавке с записанными на них командами, и любая подходящая комбинация вышеперечисленного. Машиночитаемый носитель данных, используемый в данном документе, не должен рассматриваться как преходящие сигналы сами по себе, такие как радиоволны или другие свободно распространяющиеся электромагнитные волны, электромагнитные волны, распространяющиеся через волновод или другую среду передачи (например, световые импульсы, проходящие через волоконно-оптический кабель) или электрические сигналы, передаваемые по проводам.
[0221] Машиночитаемые программные команды, описанные здесь, могут быть загружены в соответствующие вычислительные / обрабатывающие устройства с машиночитаемого носителя данных или на внешний компьютер или внешнее запоминающее устройство через сеть, например Интернет, локальную сеть, глобальную вычислительную сеть и/или беспроводную сеть. Сеть может содержать медные кабели передачи, оптические волокна передачи, беспроводную передачу, маршрутизаторы, межсетевые экраны, коммутаторы, шлюзовые компьютеры и/или граничные серверы. Карта сетевого адаптера или сетевой интерфейс в каждом вычислительном / обрабатывающем устройстве принимает машиночитаемые программные команды из сети и пересылает машиночитаемые программные команды для хранения на машиночитаемом носителе данных в соответствующем вычислительном / обрабатывающем устройстве.
[0222] Машиночитаемый программный код / команда для выполнения операций могут быть командами ассемблера, командами архитектуры набора команд (Instruction-Set-Architecture, ISA), машинными командами, машинно-зависимыми командами, микрокодом, командами встроенного программного обеспечения, данными установки состояния, данными конфигурации для интегральной схемы, либо исходным кодом, либо объектным кодом, написанным на любой комбинации одного или более языков программирования, включая объектно-ориентированный язык программирования, такой как Smalltalk, С++ и т.п., и процедурные языки программирования, такие как язык программирования "С" или аналогичные языки программирования. Машиночитаемые программные команды могут выполняться полностью на компьютере пользователя, частично на компьютере пользователя, как автономный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью на удаленном компьютере или сервере. В последнем сценарии удаленный компьютер может быть подключен к компьютеру пользователя через сеть любого типа, включая локальную сеть (Local Area Network, LAN) или глобальную сеть (Wide Area Network, WAN), либо соединение может быть выполнено с внешним компьютером (например, через Интернет с помощью Интернет-провайдера). В некоторых вариантах осуществления электронные схемы, включая, например, программируемые логические схемы, программируемые логические схемы (Field-Programmable Gate Arrays, FPGA) или программируемые логические матрицы (Programmable Logic Arrays, PLA), могут выполнять машиночитаемые программные команды, используя информацию о состоянии машиночитаемых программных команд для персонализации электронной схемы, чтобы выполнять аспекты или операции.
[0223] Эти машиночитаемые программные команды могут быть предоставлены процессору универсального компьютера, специального компьютера или другого программируемого устройства обработки данных для создания машины, так что команды, которые выполняются с помощью процессора компьютера или другого программируемого устройства обработки данных, создает средства для реализации функций/действий, указанных в блок-схеме и/или блоке или блоках структурной схемы. Эти машиночитаемые программные команды также могут храниться на машиночитаемом носителе данных, который может управлять компьютером, программируемым устройством обработки данных и/или другими устройствами, чтобы они функционировали определенным образом, так что машиночитаемый носитель данных, содержащий команды, хранящиеся на нем, включает в себя изделие производства, в том числе команды, которые реализуют аспекты функции/действия, указанные в блок-схеме и/или блоке или блоках структурной схемы.
[0224] Машиночитаемые программные команды также могут быть загружены в компьютер, другое программируемое устройство обработки данных или другое устройство, чтобы вызвать выполнение ряда рабочих шагов на компьютере, другом программируемом устройстве или другом устройстве для получения реализуемого на компьютере процесса, так что команды, которые выполняются на компьютере, другом программируемом устройстве или другом устройстве, реализуют функции/действия, указанные в блок-схеме и/или блоке или блоках структурной схемы.
[0225] Блок-схема и структурные схемы на чертежах иллюстрируют архитектуру, функциональные возможности и работу возможных реализаций систем, способов и машиночитаемых носителей согласно различным вариантам осуществления. В этом отношении каждый блок на блок-схеме или структурных схемах может представлять модуль, сегмент или часть команд, которые содержат одну или несколько исполняемых команд для реализации указанной логической функции(-й). Способ, компьютерная система и машиночитаемый носитель могут включать в себя дополнительные блоки, меньшее количество блоков, разные блоки или блоки, расположенные иначе, чем те, которые изображены на чертежах. В некоторых альтернативных реализациях функции, указанные в блоках, могут выполняться не в порядке, указанном на чертежах. Например, два блока, показанные последовательно, могут фактически выполняться одновременно или по существу одновременно, или блоки могут иногда выполняться в обратном порядке, в зависимости от задействованных функциональных возможностей. Также будет отмечено, что каждый блок в структурных схемах и/или иллюстрации блок-схемы, а также комбинации блоков в структурных схемах и/или иллюстрации блок-схемы могут быть реализованы аппаратными системами специального назначения, которые выполняют указанные функции или действия, или выполняют комбинации оборудования специального назначения и компьютерных команд.
[0226] Очевидно, что описанные здесь системы и/или способы могут быть реализованы в различных формах аппаратного обеспечения, встроенного программного обеспечения или комбинации аппаратного и программного обеспечения. Фактический специализированный аппаратный или программный код управления, используемый для реализации этих систем и/или способов, не ограничивает реализации. Таким образом, работа и поведение систем и/или способов были описаны в данном документе без ссылки на конкретный программный код - при этом понятно, что программное обеспечение и оборудование могут быть разработаны для реализации систем и/или способов, основанных на описании в данном документе.
[0227] Ни один элемент, действие или команда, используемые здесь, не должны рассматриваться как критические или существенные, если они явно не описаны как таковые. Кроме того, следует понимать, что термины, упоминаемые в настоящем описании в единственном числе, подразумевают также возможность использования для реализации настоящего изобретения одного или нескольких подобных элементов и могут использоваться взаимозаменяемо с «одним или более». Кроме того, используемый здесь термин «набор» предназначен для включения одного или нескольких элементов (например, связанных элементов, несвязанных элементов, комбинации связанных и несвязанных элементов и так далее) и может использоваться взаимозаменяемо с «одним или более». Если рассматривается только один элемент, используется термин «один» или аналогичная формулировка. Кроме того, используемые в данном документе термины «имеет», «иметь», «имея» и тому подобные следует рассматривать как неограничивающие термины. Кроме того, фраза «на основе» предназначена для обозначения «основанная, по крайней мере частично, на», если явно не указано иное.
[0228] Описания различных аспектов и вариантов осуществления были представлены в целях иллюстрации и не предназначены для того, чтобы быть исчерпывающими или ограничивающими настоящее изобретения. Даже несмотря на то, что комбинации признаков изложены в формуле изобретения и/или раскрыты в описании, эти комбинации не предназначены для ограничения раскрытия возможных реализаций. Фактически, многие из этих признаков могут быть объединены способами, которые специально не указаны в формуле изобретения и/или раскрыты в описании. Хотя каждый зависимый пункт, перечисленный ниже, может напрямую зависеть только от одного пункта, раскрытие возможных реализаций включает в себя каждый зависимый пункт в комбинации с каждым другим пунктом в наборе пунктов. Специалистам в данной области техники будут очевидны многие модификации и вариации, не выходящие за рамки описанных вариантов осуществления. Используемая здесь терминология была выбрана для лучшего объяснения принципов вариантов осуществления, практического применения или технического усовершенствования технологий, имеющихся на рынке, или для того, чтобы дать возможность другим специалистам в данной области техники понять раскрытые здесь варианты осуществления.