СПОСОБ АДАПТИВНОГО ОБНОВЛЕНИЯ БЛОКОВ НЕДОСТУПНЫХ ОПОРНЫХ КАДРОВ С ИСПОЛЬЗОВАНИЕМ ЯВНОЙ И НЕЯВНОЙ СИГНАЛИЗАЦИИ
METHOD FOR ADAPTIVE UPDATE OF UNAVAILABLE REFERENCE FRAME BLOCKS USING EXPLICIT AND IMPLICIT SIGNALING

Область техники, к которой относится изобретение
Настоящее изобретение, в общем, относится к области сжатия видео. В частности, настоящее изобретение направлено на создание способа адаптивного обновления блоков для недоступного опорного изображения.
Уровень техники
Видео кодек может содержать электронную схему или программное обеспечение, осуществляющее сжатие или распаковку цифрового видео. Он может преобразовывать несжатое видео в сжатый формат или наоборот. В контексте сжатия видео, устройство, которое сжимает видео, (и/или осуществляет некоторые функции в ходе сжатия) может обычно называться кодирующим устройством, а устройство, которое распаковывает видео, (и/или осуществляет некоторые функции в ходе распаковки) может называться декодирующим устройством.
Формат сжатых данных может соответствовать стандартным спецификациям сжатия видео. Это сжатие может представлять собой сжатее с потерями в том смысле, что в сжатом видео отсутствует некоторая информация, присутствующая в оригинальном видео. Вследствие этого распакованное видео может иметь более низкое качество по сравнению с оригинальным несжатым видео, поскольку в распакованном видео будет недостаточно информации для точной реконструкции оригинального видео.
Могут иметь место сложные соотношения между качеством видео, объемом данных, используемых для представления видео (например, определяется скоростью передачи битов данных), сложностью алгоритмов кодирования и декодирования, чувствительностью к потере данных и ошибкам, легкостью редактирования, произвольным доступом, задержкой прохождения сигнала от одного конца линии от другого и другими подобными характеристиками.
Процедура компенсации движения может представлять собой прогнозирование кадра видео или его части на основе опорного кадра, такого как предыдущий и/или будущий кадры, посредством учета движения видеокамеры и/или объектов на этом видео. Это может быть использовано при кодировании и декодировании данных видео для сжатия видео, например, при кодировании и декодировании с использованием стандартов Группы экспертов по кинематографии (Motion Picture Experts Group) MPEG-2 (также называются стандартами усовершенствованного видео кодирования (advanced video coding (AVC)) и H.264). Компенсация движения может описывать изображения в терминах преобразования опорного изображения в текущее изображение. Опорное изображение может предшествовать текущему изображению, может быть будущим относительно текущего изображения или может представлять собой долговременный опорный кадр (long term reference (LTR)). Когда изображения могут быть точно синтезированы на основе ранее переданных и/или сохраненных изображений, эффективность сжатия может быть повышена.
Сегодняшние стандарты, такие как стандарты H.264 и H.265, позволяют обновлять кадры, такие как долговременные опорные кадры, посредством сигнализации вновь декодированного кадра для того, чтобы его можно было сохранить и сделать доступным в качестве опорного кадра. Такие обновления передают посредством сигнализации от кодирующего устройства и обновляют весь кадр. Однако обновление всего кадра может быть связано с большими затратами, в частности, когда изменилась только небольшая часть статического фона. Частичные обновления кадра возможны, но часто для таких обновлений кадров используются сложные и вычислительно затратные процедуры.
Раскрытие сущности изобретения
В одном из аспектов, устройство декодирования содержит схему, конфигурированную для приема потока битов данных, содержащего текущий кодированный блок, определения декодированного текущего блока, определение, что в потоке битов данных для текущего кодированного блока активизирован режим обновления недоступного опорного блока, и обновление недоступного опорного кадра с использованием декодированного текущего блока.
Согласно другому аспекту способ содержит прием, декодирующим устройством, потока битов данных, содержащего текущий кодированный блок. Этот способ содержит определение декодированного текущего блока. Способ содержит определение, что в потоке битов данных для текущего кодированного блока активизирован режим обновления недоступного опорного блока. Этот способ содержит обновление недоступного опорного кадра с использованием декодированного текущего блока.
Согласно другому аспекту, устройство декодирования содержит схему, конфигурированную для приема текущего блока, маркировки этого текущего блока для обновления недоступного опорного кадра и обновления недоступного опорного кадра с использованием указанного текущего блока.
Согласно другому аспекту способ содержит прием, декодирующим устройством, текущего блока. Этот способ содержит маркировку текущего блока для обновления недоступного опорного кадра на основе текущего блока. Этот способ содержит обновление недоступного опорного кадра с использованием текущего блока.
Подробности одного или более вариантов предмета настоящего изобретения, описываемых здесь, приведены на прилагаемых чертежах и в описании ниже. Другие признаки и преимущества предмета изобретения, описываемого, здесь будут понятны из описания и чертежей, а также из Формулы изобретения.
Краткое описание чертежей
В целях иллюстрирования настоящего изобретения указанные чертежи показывают аспекты одного или более вариантов настоящего изобретения. Однако следует понимать, что настоящее изобретение не исчерпывается точно теми конфигурациями и инструментальными средствами, какие показаны на чертежах, на которых:
Фиг. 1 представляет логическую схему, иллюстрирующую пример процедуры обновления блоков недоступного опорного (UR) кадра, где этот UR-кадр частично обновляется декодирующим устройством и на основе декодированного текущего блока;
Фиг. 2 представляет логическую схему, иллюстрирующую пример процедуры обновления блоков UR-кадра, где этот UR-кадр частично обновляется декодирующим устройством и на основе декодированного текущего блока;
Фиг. 3 представляет блок-схему, иллюстрирующую пример кадра, содержащего текущий блок X и три соседних блока, имеющих ассоциированные векторы движения, использующие UR-кадр для оценки движения;
Фиг. 4 представляет блок-схему, иллюстрирующую пример кадра, содержащего блоки, не использующие UR-кадр в качестве опоры, и блоки, использующие UR-кадр в качестве опоры;
Фиг. 5 представляет блок-схему системы, иллюстрирующую пример декодирующего устройства, способного декодировать поток битов данных с обновлением блока UR-кадра;
Фиг. 6 представляет логическую схему, иллюстрирующую пример процедуры кодирования видео с обновлениями блоков UR-кадра в соответствии с некоторыми аспектами предмета настоящего изобретения;
Фиг. 7 представляет логическую схему, иллюстрирующую пример процедуры кодирования видео с обновлениями блоков UR-кадра в соответствии с некоторыми аспектами предмета настоящего изобретения, позволяющими уменьшить сложность кодирования, увеличивая при этом эффективность сжатия;
Фиг. 8 представляет блок-схему системы, иллюстрирующую пример декодирующего устройства для видео, где это устройство способно сигнализировать стороне декодирующего устройства обновления блоков UR-кадра;
и
Фиг. 9 представляет блок-схему компьютерной системы, которая может быть использована для реализации любых из одного или более способов, описываемых здесь, и реализации любых из одной или более частей этих способов.
Чертежи не обязательно выполнены в масштабе и могут быть иллюстрированы воображаемыми линиями, схематичными представлениями и частичными видами. В некоторых случаях, подробности, не являющиеся необходимыми для понимания вариантов изобретения или отображающие другие детали, которые трудны для восприятия, могут быть опущены. Подобные позиционные обозначения на различных чертежах присвоены подобным элементам.
Осуществление изобретения
Некоторые варианты реализации предмета настоящего изобретения содержат подходы к осуществлению частичных обновлений недоступного опорного (unavailable reference (UR)) кадра и/или изображения, которое используется для создания прогнозируемых кадров и/или изображений в одной или более группах изображений (groups of pictures (GOP)), но которое при этом не представлено само по себе в изображении видео. Кадр, маркированный в качестве UR-кадра в потоке битов данных видео, может быть доступен для использования в качестве опорного кадра до тех пор, пока он не будет в явной форме исключен посредством сигнализации в потоке битов данных. Применение UR-кадров может улучшить эффективность прогнозирования и сжатия в сценах, имеющих статичный фон в течение продолжительного периода времени, (например, фон в случае видео конференции или в случае видеонаблюдения на парковке). Однако с течением времени фон сцены постепенно изменяется (например, автомобили, припаркованные на пустых местах, становятся частью фоновой сцены). О частичных обновлениях UR-кадров может быть сигнализировано в явной форме в потоке битов данных путем использования режима обновления недоступного опорного блока, который, когда он активизирован для конкретного текущего блока, может указывать, что декодированный текущий блок используется для обновления расположенных в пространстве в этом же месте пикселей пределах UR-кадра. Такие частичные обновления UR-кадра могут усовершенствовать прогнозирование, не требуя обновления всего UR-кадра, и поэтому уменьшить остаточную погрешность и тем самым улучшить характеристики сжатия. Более того, благодаря сигнализации об обновлениях UR-блоков в явной форме, такие обновления UR-блоков могут быть реализованы простым способом и без использования неадекватных и сложных процедур.
В качестве альтернативы или в дополнение, о частичном обновлении UR-кадра может быть сигнализировано в неявной форме, так что по сравнению с некоторыми альтернативными подходами сигнализация в явной форме не требуется ни в полном объеме, ни в уменьшенном объеме. Подход с сигнализацией в неявной форме может указывать, что декодированный текущий блок может использоваться для обновления расположенных в пространстве в этом же месте пикселей в UR-кадре. Такие частичные обновления UR-кадра могут улучшить прогнозирование, не требуя для этого обновления всего UR-кадра целиком, и поэтому уменьшить остаточную погрешность и тем самым улучшить характеристики сжатия. Более того, благодаря сигнализации обновлений UR-блоков в неявной форме могут быть уменьшены издержки заголовка, снижая тем самым частоту передачи битов данных и совершенствуя сжатие. Кроме того, в некоторых вариантах обновления UR-кадра могут быть осуществлены достаточно простым образом и без использования неадекватных и сложных процедур.
В некоторых вариантах сигнализация в неявной форме о блоках видео идентифицируют случаи, в которых контекст текущего и соседних блоков используется для неявного определения того, какие именно блоки обновляются в UR-кадре (например, того, какие именно участки рассматриваемого UR-кадра следует обновить). Обратимся теперь к Фиг. 1, где представлена логическая схема, иллюстрирующая пример процедуры 100 обновления блоков UR-кадра, в ходе которой устройство декодирования частично обновляет UR-кадр на основе декодированного текущего блока. Такие обновления UR-блоков могут улучшить прогнозирование, не требуя обновления всего UR-кадра, и поэтому могут уменьшить остаточную погрешность и тем самым улучшить характеристики сжатия.
На этапе 105, и по-прежнему обращаясь к Фиг. 1, устройство декодирования принимает поток битов данных, содержащий текущий кодированный блок. Поток битов данных может содержать, например, данные, найденные в потоке битов данных, поступающем на вход декодирующего устройства в процессе сжатия данных. Этот поток битов данных может содержать информацию, необходимую для декодирования видео. Процедура приема потока может содержать выделение и/или синтаксический анализ рассматриваемого блока и ассоциированной сигнализационной информации из потока битов данных. В некоторых вариантах реализации текущий кодированный блок может содержать единицу дерева кодирования (coding tree unit (CTU)), единицу кодирования (coding unit (CU)) или единицу прогнозирования (prediction unit (PU)).
На этапе 110, продолжая обращаться к Фиг. 1, может быть определен декодированный текущий блок. Например, принятый текущий кодированный блок может быть декодирован, например, с использованием межкадрового прогнозирования. Декодирование посредством межкадрового прогнозирования может представлять собой декодирование с использованием предшествующего кадра, будущего кадра или UR-кадра в качестве опоры для вычисления результата прогнозирования, что может быть скомбинировано с остатком, входящим в поток битов данных.
На этапе 115, продолжая обращаться к Фиг. 1, может быть определено, активизирован ли режим обновления недоступного опорного блока в потоке битов данных для текущего кодированного блока. Указание режима обновления UR-блока может быть включено в заголовок потока битов данных и/или в какое-либо поле в этом заголовке. Например, может быть определено, что активизировано поле режима обновления UR-блока в заголовке потока битов данных. Сигнализация об обновленном блоке UR-кадра может быть избирательно активизирована с использованием заголовка, такого как набор параметров изображения (picture parameter set (PPS)) и/или набора параметров последовательности (sequence parameter set (SPS)). Одно из полей, такое как поле UR_BLOCK_UPDATE, может принимать, без ограничений, значения «истинно» или «ложно» (например, 0 или 1).
По-прежнему обращаясь к Фиг. 1, если режим обновления UR-блока активизирован (например, если установлено поле UR_BLOCK_UPDATE в заголовке), на этапе 120, устройство декодирования может обновить недоступный опорный кадр с использованием декодированного текущего блока. Такое обновление может представлять собой осуществление обновлений UR-блоков, в каких находятся пиксели UR-кадра, расположенные в пространстве в одном месте с текущим блоком, для которого активизирован режим обновления блока UR-кадра, так что эти UR-блоки обновляют (например, модифицируют) с использованием декодированного текущего блока. В некоторых вариантах реализации механизмы обновления блоков могут быть явными или неявными. Например, часть (например, блок) UR-кадра может быть обновлена путем обновления пикселей (например, яркостных величин) в UR-кадре с использованием величин пикселей декодированного текущего блока, расположенных в одном месте с обновляемыми пикселями UR-кадра; другими словами, процедура обновления UR-кадра может содержать замены яркостных величин в UR-кадре расположенными в пространстве в одном и том же месте с ними яркостными величинами из декодированного текущего блока. В некоторых вариантах реализации, UR-кадр может быть обновлен в соответствии с другим механизмом, таким как обновление части UR-кадра с использованием средних величин расположенных в одном и том же месте величин пикселей UR-кадра и величин пикселей текущего декодированного блока. Специалисты в рассматриваемой области, после изучения настоящего изобретения в полном объеме будут осведомлены о разнообразных других механизмах, которые могут быть использованы. В некоторых вариантах реализации обновление может содержать обновление нескольких блоков в UR-кадре с использованием нескольких декодированных блоков, так что это обновление может осуществляться с применением каких-либо способов, описываемых выше для обновления UR-кадра с использованием декодированного текущего блока. Процедура обновления может содержать, без ограничений, генерацию блока и/или кадра цветных и/или яркостных величин по умолчанию и замену и/или обновление их от одного или более декодированных блоков с использованием какой-либо процедуры и/или этапов процедуры, описываемых выше; процедура обновления может содержать генерацию UR-кадра, что может осуществляться путем создания UR-кадра из величин по умолчанию и обновления этих величин по умолчанию, как описано выше.
Продолжая обращаться к Фиг. 1, для последующих текущих блоков, обновленный UR-кадр может быть использован в качестве опорного кадра для межкадрового прогнозирования. Например, может быть принят второй кодированный блок. Может быть определено, активизирован ли режим межкадрового прогнозирования для второго кодированного блока. Второй декодированный блок может быть определен с использованием обновленного UR-кадра в качестве опорного кадра и в соответствии с режимом межкадрового прогнозирования. Например, процедура декодирования посредством межкадрового прогнозирования может содержать использование обновленного UR-кадра в качестве опоры для вычисления результата прогнозирования, который может быть скомбинирован с остатком, входящим в поток битов данных.
Продолжая обращаться к Фиг. 1, обновления UR-блоков могут быть доступны для каждого текущего блока в процессе декодирования. В некоторых вариантах обновления блоков могут быть доступны для каждого текущего блока в ходе процедуры декодирования. В некоторых вариантах реализации обновления UR-блоков могут быть пропущены в неявном виде для кадров, кодированных с внутрикадровым прогнозированием. Например, поток битов данных может содержать второй кодированный блок в кадре, отличном от кадра, в котором находится первый кодированный блок; режим кодирования для второго кодированного блока может содержать внутрикадровое прогнозирование. Обновление UR-блока может быть пропущено в ответ на определение, что второй текущий кодированный блок является блоком, кодированным с применением внутрикадрового прогнозирования. Такой пропуск может содержать, например, неосуществление обновления UR-кадра или определение, установлено ли в заголовке какое-либо поле, такое как поле UR_BLOCK_UPDATE.
В некоторых вариантах реализации и снова обращаясь к Фиг. 1, если в заголовке установлено поле UR_BLOCK_UPDATE, устройство декодирования может ожидать появления битов сигнализации в явном виде об обновлении блоков. При таком подходе кодированный блок видео может быть обозначен посредством сигнализации в заголовке блока в потоке битов данных видео в качестве блока, который нужно обновить, в UR-кадре. В этом случае расположенный в том же месте блок в UR-кадре может быть заменен блоком, о котором сообщила сигнализация; этот обновленный UR-кадр может быть использован для целей оценки движения в будущем, пока этот UR-кадр не будет в последующем обновлен, например.
На Фиг. 2 представлена логическая схема процедуры, иллюстрирующая пример варианта процедуры 200 с использованием сигнализации в неявной форме об обновлениях блоков UR-кадра, так что в ходе этой процедуры UR-кадр частично обновляется декодирующим устройством и на основе декодированного текущего блока. Сигнализация в неявной форме может охватывать случаи, в которых контекст текущего и соседних блоков используется для неявного определения, какие именно блоки следует обновить в UR-кадре, по сравнению с применением сигнализации в явной форме относительно режима обновления UR-блока в потоке битов данных, такой как в заголовке потока битов данных. Такие обновления UR-блоков с применением сигнализации в неявной форме могут усовершенствовать прогнозирование и уменьшить сигнализационные издержки, что ведет к совершенствованию частоты передачи битов данных и улучшению сжатия. Аналогично, в результате осуществления обновления UR-блоков без требования обновления всего UR-кадра целиком, можно уменьшить остаточную погрешность и тем самым улучшить характеристики сжатия.
На этапе 205, и по-прежнему обращаясь к Фиг. 2, устройство декодирования принимает текущий блок. Этот текущий блок может входить в поток битов данных, принимаемый декодирующим устройством. Поток битов данных может содержать, например, данные, находимые в потоке битов, поступающем на вход декодирующего устройства при использовании сжатия данных. Поток битов данных может содержать информацию, необходимую для декодирования видео. Процедура приема потока может содержать выделение и/или синтаксический анализ рассматриваемого блока и ассоциированной сигнализационной информации из потока битов данных. В некоторых вариантах реализации текущий кодированный блок может содержать единицу дерева кодирования (CTU), единицу кодирования (CU) и/или единицу прогнозирования (PU).
Продолжая обращаться к Фиг. 2, в некоторых вариантах реализации в потоке битов данных для текущего блока может не быть сигнализации в явной форме о режиме обновления недоступного опорного блока. Аналогично, в некоторых вариантах реализации, устройство декодирования может определить, используя поток битов данных, имеется ли сигнализация в явной форме о режиме обновления недоступного опорного блока или нет в потоке битов данных для текущего блока. В некоторых вариантах реализации устройство декодирования может определить, указывает ли поле в заголовке потока битов данных, что режим обновления недоступного опорного блока отключен или отсутствует.
На этапе 210, и продолжая обращаться к Фиг. 2, текущий блок может быть маркирован для обновления UR-кадра на основе этого текущего блока; этот текущий блок может быть маркирован на основе или в ответ на определение, что сигнализация о текущем блоке осуществлена в неявном виде для использования при обновлении блоков UR-кадра. Процедура маркировки может содержать, без ограничений, присвоение некоторой переменной величине значения, указывающего, что текущий блок должен быть использован для обновления UR-кадра; например, логической переменной, ассоциированной с текущим блоком и конфигурированной для индикации, следует ли использовать текущий блок для обновления UR-кадра, может быть присвоено значение «истинно» или «1» для индикации маркировки.
Например, по-прежнему обращаясь к Фиг. 2, текущий блок может быть маркирован для обновления, когда текущий блок использует UR-кадр в качестве опорного кадра для межкадрового прогнозирования и содержит применение компенсации освещенности; маркировка может быть осуществлена в ответ и/или на основе этого определения. Компенсация освещенности может быть использована для усовершенствования прогнозирования в ходе кодирования видео. Компенсация освещенности может улучшить прогнозирование в случае, когда пиксели блока изменяются вследствие изменений освещенности (например, проходящее облако уменьшает освещенность). Блок, который использует UR-кадр в качестве опорного кадра и применяет компенсацию освещенности, может быть определен в качестве блока обновления и маркирован соответственно для обновления UR-кадра.
В качестве другого примера и продолжая обращаться к Фиг. 2, текущий блок может быть маркирован для обновления UR-кадра, если и на основе того, какой из соседей этого блока использует в качестве опоры вектор движения UR-кадра. В репрезентативном (например, типичном) видео часть фона сцены обновляется с течением времени. Когда такое изменение происходит, измененная область может быть кодирована в качестве блока внутрикадрового прогнозирования, если не обнаружен ни один аналогичный блок. В таких случаях все блоки за исключением вновь измененной области, вероятно, используют UR-кадр в качестве опорного кадра. Блок, имеющий несколько опорных блоков с опорными векторами движения UR-кадра, может быть маркирован для неявного обновления UR-кадра. Соответственно, вероятность того, что текущий блок является UR-блоком обновления, повышается, когда увеличивается число соседних с текущим блоком блоков, использующих UR-кадр; эту вероятность можно вычислить и сравнить с пороговым уровнем, тот факт, что эта вероятность превышает пороговый уровень, может указывать, что текущий блок является обновлением для UR-блока. Если текущий блок кодирован с применением внутрикадрового прогнозирования, меньшее число соседних блоков с UR-опорой может сигнализировать об обновлении для UR-блока; например, при сравнении с порогом, как указано выше, может быть использован меньший пороговый уровень. Если текущий блок кодирован с применением межкадрового прогнозирования, большее число соседних блоков с UR-опорой может сигнализировать в неявной форме об обновлении для UR-блока, например, при использовании большего порогового уровня. Соответственно, в качестве другого неисчерпывающего примера, текущий блок может быть маркирован для обновления UR-кадра в ответ и/или на основе определения, что два или более соседних блоков используют вектор движения UR-кадра для межкадрового прогнозирования.
По-прежнему обращаясь к Фиг. 2, в некоторых вариантах реализации блоки-кандидаты обновления могут быть определены после того, как был декодирован весь кадр, так что могут быть учтены все соседи блока. Например, блок с не-UR-опорой, окруженный блоками с UR-опорами с двух или более сторон, может быть кандидатом для обновлений UR-кадра. В качестве другого примера, если текущий блок кодирования с применением внутрикадрового прогнозирования, а несколько соседних с ним блоков используют UR-кадр в качестве опоры и имеют вектор движения (0,0) (например, нулевой вектор движения), тогда текущий блок может быть маркирован для обновления UR-кадра. В качестве еще одного другого примера, если текущий блок кодирован с применением внутрикадрового прогнозирования, и несколько соседних блоков используют UR-кадр в качестве опоры и имеют один и тот же или аналогичные векторы движения (например, разница между этими векторами движения может быть меньше предварительно заданной величины), тогда текущий блок может быть маркирован для обновления UR-кадра. В качестве дальнейшего примера, если текущий блок имеет по меньшей мере с трех сторон от него соседние блоки, использующие UR-кадр в качестве опорного кадра для межкадрового прогнозирования, этот текущий блок может быть маркирован для обновления UR-кадра.
В некоторых вариантах реализации и продолжая обращаться к Фиг. 2, обновление для UR-кадра может быть определено на уровне единиц кодирования (CU). Если все соседние единицы CU по меньшей мере с трех сторон используют UR-опору, все блоки текущей единицы CU могут быть маркированы для обновления UR-кадра. В некоторых вариантах реализации обновление для UR-кадра может быть определено на уровне единиц дерева кодирования (CTU). Если все соседние единицы CTU по меньшей мере с трех сторон используют UR-опору, все блоки текущей единицы CTU, которые не используют UR-опору, могут быть маркированы для обновления. На Фиг. 3 представлена блок-схема, иллюстрирующая пример варианта кадра 300, содержащего текущий блок X и три соседних блока, имеющие ассоциированные векторы MV1, MV2, MV3 движения, использующие UR-кадр для оценки движения. В иллюстрируемом примере текущий блок X может быть маркирован для обновления UR-кадра.
На Фиг. 4 представлена блок-схема, иллюстрирующая другой пример варианта кадра 400, содержащего блоки, маркированные X и не использующие UR-кадр в качестве опоры, и блоки L, использующие UR-кадр в качестве опоры; блоки, маркированные как X, могут быть маркированы для обновления UR-кадра.
Обратившись вновь к Фиг. 2, на этапе 215, UR-кадр может быть обновлен с использованием текущего блока. Процедура обновления может содержать осуществление обновлений UR-блоков, где пиксели UR-кадра, расположенные в пространстве в одном месте с текущим блоком, обновляются (например, модифицируются) с использованием текущего блока. В некоторых вариантах реализации, механизмы обновления блока могут быть явными или неявными. Например, часть (например, блок) UR-кадра может быть обновлена путем обновления (например, замены) пикселей (например, яркостных величин) в UR-кадре величинами пикселей текущего блока, расположенными в одном месте с обновляемыми пикселями UR-кадра. В некоторых вариантах реализации UR-кадр может быть обновлен в соответствии с другим механизмом, таким как обновление части UR-кадра с использованием средней величины расположенных в одном месте первоначальных величин пикселей UR-кадра и величин пикселей текущего блока. Специалисты в рассматриваемой области после изучения настоящего изобретения в полном объеме будут осведомлены о различных других механизмах, которые могут быть использованы. В некоторых вариантах реализации обновление может представлять собой обновление нескольких блоков UR-кадра с использованием нескольких декодированных блоков, что может быть осуществлено с использованием каких-либо способов, описанных выше применительно к обновлению UR-кадра с использованием одного декодированного текущего блока. Процедура обновления может содержать, без ограничений, генерацию блока и/или кадра величин по умолчанию для цветностной и/или яркостной составляющей и замену и/или обновление их на основе одного или более декодированных блоков с использованием какой-либо процедуры и/или этапов процедуры, описанных выше; процедура обновления может содержать генерацию UR-кадра, что может быть осуществлено путем создания UR-кадра из величин по умолчанию и обновление этих величин по умолчанию, как описано выше.
Для последующих текущих блоков обновленный UR-кадр может быть использован в качестве опорного кадра для межкадрового прогнозирования. Например, может быть принят второй кодированный блок. Может быть определено, активизирован ли режим межкадрового прогнозирования для этого второго кодированного блока. Затем второй декодированный блок может быть определен с использованием обновленного UR-кадра в качестве опорного кадра и в соответствии с режимом межкадрового прогнозирования. Например, процедура декодирования посредством межкадрового прогнозирования может содержать использование обновленного UR-кадра в качестве опоры для вычисления результата прогнозирования, что может быть скомбинировано с остатком, заключенным в потоке битов данных.
На Фиг. 5 представлена блок-схема примера системы, иллюстрирующая пример декодирующего устройства 500, способного декодировать поток 504 битов данных с обновлениями блоков UR-кадра. Обновления блоков UR-кадра могут содержать, без ограничений, сообщаемые посредством сигнализации в явной форме обновления блоков UR-кадра, например и без ограничений так, как это описано выше со ссылками на Фиг. 1. Обновления блоков UR-кадра могут содержать, без ограничений, сообщаемые посредством сигнализации в неявной форме обновления блоков UR-кадра (например, обновления блоков UR-кадра, определяемые из контекста текущего и/или соседних с ним блоков), например, как описано выше со ссылками на Фиг. 2 – 4. Устройство декодирования 500 содержит процессор 508 для энтропийного декодирования, процессор 512 для обратного квантования и обратного преобразования, фильтр удаления блочности 516, буфер 520 кадров, процессор 524 для компенсации движения и процессор 528 для внутрикадрового прогнозирования. В некоторых вариантах реализации, поток 504 битов данных может содержать параметры, (например, поле в заголовке потока битов данных) сигнализирующие о режиме обновления блока UR-кадра. В качестве альтернативы или в дополнение к этому, поток 504 битов данных может не передавать в явной форме сигнализацию о режиме обновления блока UR-кадра для текущего блока; поток битов данных может содержать другие параметры. Процессор 524 для компенсации движения может реконструировать информацию пикселей с использованием UR-кадра и обновлять этот UR-кадр в соответствии с режимом обновления блока UR-кадра. Например, когда сигнализируют в явной форме о режиме обновления блока UR-кадра для текущего блока, величины (например, яркостные величины) в UR-кадре могут быть заменены величинами пикселей текущего блока, расположенными в одном месте с величинами обновляемого блока. Когда об обновлении блоков сигнализируют в неявной форме, процессор 524 для компенсации движения может маркировать текущий блок для обновления UR-кадра (например, на основе того, сигнализировано ли обновление UR-кадра в явной форме) и обновлять этот UR-кадр соответственно. Например, когда об обновлении блоков UR-кадра для текущего блока сигнализировано в неявной форме, пиксели (например, яркостные величины) в UR-кадре могут быть заменены расположенными в одном и том же месте величинами пикселей из текущего блока.
Во время работы, поток 504 битов данных может быть принят декодирующим устройством 500 и направлен на вход процессора 508 для энтропийного декодирования, который может осуществлять энтропийное декодирование потока битов данных и преобразовывать его в квантованные коэффициенты. Квантованные коэффициенты могут быть переданы процессору 512 обратного квантования и обратного преобразования, который может осуществлять обратное квантование и обратное преобразование для создания сигнала остатка, который может быть добавлен к выходному сигналу процессора 524 для компенсации движения или процессора 528 для внутрикадрового прогнозирования в соответствии с режимом обработки данных. Выходной сигнал процессора 524 для компенсации движения и процессора 528 для внутрикадрового прогнозирования может содержать прогнозируемые блоки на основе предварительно декодированного блока или UR-кадра. Сумма прогнозируемого блока и соответствующего остатка может быть обработана фильтром 516 удаления блочности и сохранена в буфере 520 кадров. Для рассматриваемого конкретного блока (например, единицы CU или единицы PU), когда поток 504 битов данных в явной и/или в неявной форме сигнализирует, что активизирован режим обновления блока UR-кадра, процессор 524 для компенсации движения может обновить UR-кадр, который может находиться в буфере 520 кадров, для обновления пикселей (например, яркостных величин) в UR-кадре расположенными в том же месте величинами пикселей текущего блока.
В некоторых вариантах реализации, устройство декодирования 500 может содержать процессор 532 для обновления блоков UR-кадра, который может генерировать обновление UR-кадра на основе текущего блока и формировать величины пикселей UR-кадра для процедур межкадрового прогнозирования; это может быть реализовано в соответствии с какими-либо этапами процедур, описываемых в настоящем изобретении. Процессор 532 для обновления блоков UR-кадра может непосредственно влиять на компенсацию движения. Далее, процессор 532 для обновления блоков UR-кадра может принимать информацию от процессора 528 для внутрикадрового прогнозирования, как, например, в случае, когда текущий блок является блоком внутрикадрового прогнозирования.
На Фиг. 6 представлена логическая схема процедуры, иллюстрирующая пример варианта процедуры 600 кодирования видео с обновлениями блоков UR-кадра с применением сигнализации в явном виде согласно некоторым аспектам предмета настоящего изобретения, что может уменьшить сложность кодирования, увеличивая при этом эффективность сжатия. На этапе 605, кадр видео может быть подвергнут первоначальной сегментации блоков, например, с использованием имеющей структуру дерева схемы разбиения макроблоков, что может содержать разбиение кадра изображения на единицы CTU и CU. На этапе 610, может быть выбран блок для обновления части UR-кадра. Этот блок может быть выбран, например, на основе частотного содержания и/или меры движения в рассматриваемом блоке по сравнению с одним или несколькими расположенными в том же месте блоками, близкими во времени (например, соседними во времени кадрами, например, в заданном числе кадров относительно текущего кадра). Определение меры частотного содержания может содержать определение с использованием матрицы преобразования, такой как, без ограничений, матрица дискретного косинусного преобразования. Процедура определения меры частотного содержания для блока может содержать определение с использованием матрицы обобщенного дискретного косинусного преобразования. Например, когда блоки, как описано выше, представляют собой блоки пикселей размером 4 x 4, матрица обобщенного дискретного косинусного преобразования может представлять собой матрицу дискретного косинусного преобразования II, принимающую форму:
T =
где a равно ½, b равно , и c равно .
В некоторых вариантах реализации, может быть использована целочисленная аппроксимация матрицы преобразования, которая может быть применена для эффективной реализации аппаратуры и программного обеспечения. Например, когда блоки, как описано выше, представляют собой блоки пикселей размером 4x4, матрица обобщенного дискретного косинусного преобразования может представлять собой матрицу дискретного косинусного преобразования II, принимающую форму:
INT
T = .
i
Для блока B, частотное содержание этого блока может быть вычислено с использованием:
Bi
i
F=TxBxT’,
i
где T’ представляет собой транспонированную матрицу T косинусного преобразования, Bпредставляет собой блок, представленный в виде матрицы численных величин, соответствующих пикселям в блоке, такой как матрица 4x4, представляющая блок 4 x 4, как описано выше, и оператор x обозначает умножение матриц. Процедура указанного выбора может содержать идентификацию в соответствии с метрическим правилом, что блок должен быть использован для обновления части UR-кадра в декодирующем устройстве. Это метрическое правило может содержать сравнение меры текстуры и/или движения, включая, без ограничений, какую-либо меру частотного содержания или другую подобную меру, описываемую выше, с заданным и/или с сохраненным пороговым уровнем. В качестве неограничивающего примера, когда параметр FBi, как определено выше, превосходит некоторую величину, может быть запущена процедура обновления, например, потому, что очень высокие частоты могут быть невоспринимаемыми. Выбор может быть в качестве альтернативы или в дополнение к этому осуществлен с использованием какой-либо процедуры и/или этапов процедуры, описываемой ниже со ссылками на Фиг. 7. На этапе 615 блок может быть закодирован и вставлен в поток битов данных.
На этапе 620, параметры обновления блоков UR-кадра в явной форме могут быть определены и включены в поток битов данных для сигнализации, что режим обновления блока UR-кадра активизирован для текущего блока. Например, может быть установлено поле в наборе PPS или в наборе SPS (например, активизировано). Например, может быть установлено такое поле, как поле UR_BLOCK_UPDATE, указывающее, что для текущего блока активизирован режим обновления блока UR-кадра.
На Фиг. 7 представлена логическая схема, иллюстрирующая пример варианта процедуры 700 кодирования видео с использованием обновления блоков UR-кадра с применением сигнализации в неявной форме согласно некоторым аспектам предмета настоящего изобретения, что может уменьшить сложность кодирования и в то же время увеличить эффективность сжатия. На этапе 705, кадр видео может быть подвергнут первоначальной сегментации блоков, например, с использованием имеющей структуру дерева схемы разбиения, которая может содержать разбиение кадра изображения на единицы CTU и единицы CU.
На этапе 710, и по-прежнему обращаясь к Фиг. 7, может быть выбран блок для обновления части UR-кадра; этот блок может быть выбран, например, на основе условия обновления UR-кадра в явном виде. Процедура выбора может содержать идентификацию согласно некоторому условию, что некоторый блок должен быть использован для обновления части UR-кадра в декодирующем устройстве. К этим условиям может относиться, например, когда текущий блок использует UR-кадр в качестве опоры для межкадрового прогнозирования, а также применение компенсации освещенности. В качестве другого примера, эти условия могут относиться к тому, какие из соседей блока используют в качестве опоры вектор движения UR-кадра, как это имеет место, когда некий блок имеет несколько соседних блоков с вектором движения UR-кадра в качестве опоры, если текущий блок кодирован с применением межкадрового прогнозирования, а два или более блоков, соседствующих с текущим блоком, используют вектор движения UR-кадра для межкадрового прогнозирования. В качестве другого примера, если блок с не-UR-опорой окружен блоками с UR-опорой с двух или более сторон, это может означать, что рассматриваемый блок должен быть использован для обновления части UR-кадра. В качестве другого примера, если текущий блок кодирован с применением внутрикадрового прогнозирования и при этом несколько соседних с ним блоков используют UR-кадр в качестве опоры и имеют вектор движения, равный (0,0) (например, нулевой вектор движения), текущий блок может быть идентифицирован в качестве блока, который должен быть использован для обновления части UR-кадра. В качестве еще одного другого примера, если текущий блок кодирован с применением внутрикадрового прогнозирования и несколько соседних с ним блоков используют UR-кадр в качестве опоры и имеют один и тот же или подобный вектор движения, (например, вектор движения может отличаться от векторов других блоков меньше чем на предварительно заданную величину), текущий блок может быть идентифицирован в качестве блока, который должен быть использован для обновления UR кадра.
В качестве другого примера и продолжая обращаться к Фиг. 7, в некоторых вариантах реализации, блок может содержать единицу кодирования (CU), а условие для определения может представлять собой условие, специфицирующее, что если все соседние единицы CU по меньшей мере с трех сторон используют UR-опору, могут быть выбраны все блоки текущей единицы CU. В качестве другого примера, в некоторых вариантах реализации, блок может содержать единицу дерева кодирования (CTU), а условие может состоять в том, что если все соседние единицы CTU по меньшей мере с трех сторон используют UR-опору, все блоки текущей единицы CTU, которые не используют UR-опору, могут быть выбраны в качестве блоков, применяемых для обновления UR-кадра.
На этапе 730, выбранный блок может быть кодирован и включен в поток битов данных. Процедура кодирования может содержать, например, использование режима межкадрового прогнозирования и режима внутрикадрового прогнозирования. В некоторых вариантах реализации, параметры обновления блоков UR-кадра в явном виде могут не быть включены в поток битов данных для текущего блока.
На Фиг. 8 представлена блок-схема системы, иллюстрирующая пример варианта кодирующего устройства 800 видео, способного передавать сигнализацию в явной форме и/или в неявной форме относительно обновлений блоков UR-кадра на сторону декодирующего устройства. Пример кодирующего устройства 800 видео принимает входное видео 804, которое может быть первоначально сегментировано или разбито в соответствии с некоторой схемой обработки, такой как схема разбиения макроблоков в соответствии со структурой дерева (например, дерево квадратов плюс двоичное дерево). Пример схемы разбиения макроблоков в соответствии со структурой дерева может содержать разбиение кадра изображения на большие блочные элементы, именуемые единицами дерева кодирования (CTU). В некоторых вариантах каждая единица CTU может быть далее разделена один или более раз на некоторое число суб-блоков, называемых единицами кодирования (CU); результат такого разбиения может содержать группу суб-блоков, которые могут называться единицами прогнозирования (PU). Могут быть также использованы единицы преобразования (transform unit (TU)). Термин «единица преобразования», как он применяется в настоящем описании, обозначает базовую единицу, к которой применяется частотное преобразование, так что эта базовая единица может представлять собой, без ограничений, суб-блок единицы CU, подходящий для выполнения операций частотного преобразования. В качестве неисчерпывающего примера, одна единица TU может содержать один блок преобразования из яркостных отсчетов и два соответствующих блока преобразования из цветностных отсчетов изображения, а также синтаксические структуры, используемые для преобразования отсчетов из состава этих блоков преобразования, где «блок преобразования» определен как имеющий размер MxN прямоугольный блок отсчетов, полученный в результате преобразования в ходе выполнения процедуры декодирования.
По-прежнему обращаясь к Фиг. 8, пример кодирующего устройства 800 видео содержит процессор 815 для внутрикадрового прогнозирования, процессор 812 для оценки/компенсации движения (также называемый процессором для межкадрового прогнозирования), способный поддерживать обновления блоков UR-кадра в явно или в неявной форме в декодирующем устройстве, процессор 816 для преобразования/квантования, процессор 820 для обратного квантования/обратного преобразования, внутриконтурный фильтр 824, буфер 828 декодированного изображения и процессор 832 для энтропийного кодирования. В некоторых вариантах реализации, процессор 812 для оценки/компенсации движения может определить для текущего блока, что следует обновить UR-кадр в декодирующем устройстве, например, в соответствии с одним или несколькими условиями, описанными выше со ссылками на Фиг. 6 и/или 7; процессор 812 для оценки/компенсации движения может установить параметры для сигнализации в явной форме, что режим обновления блока UR-кадра активизирован. Параметры потока битов данных, сигнализирующие о режимах обновления блока UR-кадра, могут быть введены в процессор 832 для энтропийного кодирования для включения в выходной поток 836 битов данных. В качестве альтернативы или в дополнение к этому, процессор 812 для оценки/компенсации движения может обновить UR-кадр в кодирующем устройстве с использованием текущего блока, так что в поток битов данных может не быть включена никакая сигнализация в явной форме относительно обновления блоков UR-кадра. Параметры потока битов данных могут быть введены в процессор 832 для энтропийного кодирования для включения в выходной поток 836 битов данных. Часть UR-кадра на стороне кодирующего устройства может быть обновлена для использования процессором 812 для оценки/компенсации движения с целью кодирования дополнительных блоков, которые могут использовать UR-кадр в качестве опоры для межкадрового прогнозирования.
Во время работы и продолжая обращаться к Фиг. 8, для каждого блока, входящего в кадр входного видео 804, можно определить, следует ли обрабатывать этот блок посредством внутрикадрового прогнозирования или с использованием оценки/компенсации движения. Блок может быть направлен в процессор 808 для внутрикадрового прогнозирования или в процессор 812 для оценки/компенсации движения. Если блок должен быть обработан посредством внутрикадрового прогнозирования, процессор 808 для внутрикадрового прогнозирования может осуществить обработку для передачи на выход результата прогнозирования. Если блок должен быть обработан с использованием оценки/компенсации движения, процессор 812 для оценки/компенсации движения может осуществить обработку, включая использование UR-кадра на стороне кодирующего устройства в качестве опоры для межкадрового прогнозирования, если применимо.
По-прежнему обращаясь к Фиг. 8, остаток может быть сформирован путем вычитания результата прогнозирования из входного видео. Остаток может быть принят процессором 816 для преобразования/квантования, который может осуществить преобразование (например, дискретное косинусное преобразование (discrete cosine transform (DCT))) для получения коэффициентов, которые могут быть квантованы. Квантованные коэффициенты и любая ассоциированная с этим сигнализационная информация могут быть переданы в процессор 832 для энтропийного кодирования с целью осуществления энтропийного кодирования и включения в выходной поток 836 битов данных. Процессор 832 энтропийного кодирования может поддерживать кодирование сигнализационной информации относительно режимов обновления блока UR-кадра. В дополнение к этому, квантованные коэффициенты могут быть переданы в процессор 820 для обратного квантования/обратного преобразования, способный воспроизводить пиксели, которые могут быть скомбинированы с результатом прогнозирования и обработаны внутриконтурным фильтром 824, а выходной сигнал этого фильтра может быть сохранен в буфере 828 декодированного изображения для использования процессором 812 для оценки/компенсации движения, способным поддерживать обновление блоков UR-кадра в декодирующем устройстве.
Тогда как выше были подробно описаны лишь небольшое число вариантов, возможны также другие модификации или дополнения. Например, в некоторых вариантах реализации, текущие блоки могут представлять собой какие-либо симметричные блоки (8x8, 16x16, 32x32, 64x64, 128 x 128 и другие подобные размеры), равно как какие-либо асимметричные блоки (8x4, 16x8 и другие подобные размеры).
В некоторых вариантах может быть реализовано дерево решений, представляющее собой комбинацию дерева квадратов с двоичным деревом (quadtree plus binary decision tree (QTBT)). В случае дерева QTBT, на уровне единиц дерева кодирования параметры разбиения для этого дерева QTBT могут быть выведены динамически для адаптации к локальным характеристикам без передачи каких-либо издержек. После этого, на уровне единиц кодирования структура дерева принятия решений с объединенной классификацией может исключить не являющиеся необходимыми итерациями и риски управления из-за ложного прогнозирования. В некоторых вариантах реализации, режим обновления блока UR-кадра может быть доступным в каждом из концевых («листовых») узлов дерева QTBT. Текущий декодированный блок, как описано выше, может входить в дерево QTBT; например и без ограничений, текущий декодированный блок может быть неконцевым узлом дерева QTBT.
В некоторых вариантах реализации сигнализация о дополнительных синтаксических элементах может быть передана в потоке битов данных на разных уровнях иерархии. Обновление блоков UR-кадра, которое может содержать, без ограничений, обновление блоков UR-кадра, сигнализированное в явной форме, и/или обновление блоков UR-кадра, сигнализированное в неявной форме, может быть активизировано для всей последовательности путем вставки кодированного флага активизации в набор параметров последовательности (SPS). Далее, флаг единицы CTU может быть закодирован на уровне единиц дерева кодирования (CTU) для индикации, используют ли какие-либо единицы кодирования (CU) режим обновления блока UR-кадра. Флаг единицы CU может быть закодирован для индикации, использует ли текущая единица кодирования режим обновления блока UR-кадра. Флаг единицы CTU может быть закодирован на уровне единиц дерева кодирования (CTU) для индикации, используют ли какие-либо единицы кодирования (CU) сигнализацию в явной форме относительно обновления блоков UR-кадра. Флаг единицы CTU может быть закодирован на уровне единиц дерева кодирования (CTU) для индикации, используют ли какие-либо единицы кодирования (CU) сигнализацию в неявной форме относительно обновления блоков UR-кадра. Тогда как приведенные выше варианты были описаны в отношении обновлений UR-кадров, эти приведенные выше варианты могут в качестве альтернативы или в дополнение быть применены к другим кадрам, изображениям, включая без ограничений долговременные опорные кадры.
Предмет изобретения, описываемый здесь, предоставляет многочисленные технические преимущества. Например, некоторые варианты реализации предмета настоящего изобретения могут предлагать способ декодирования блоков с использованием UR-кадра, который может обновлять только участки UR-кадра без необходимости обновлять весь UR-кадр. Такие подходы могут уменьшить сложность, увеличивая при этом эффективность сжатия. Более того, при обновлении блоков UR-кадра в ответ на сигнализацию в неявной форме, издержки заголовка могут быть уменьшены, уменьшая тем самым скорость передачи битов данных и улучшая сжатие.
Следует отметить, что любые один или более из описываемых здесь аспектов и вариантов могут быть успешно реализованы с использованием цифровых электронных схем, интегральных схем, специализированных интегральных схем (application specific integrated circuit (ASIC)), программируемых пользователем вентильных матриц (field programmable gate array (FPGA)), компьютерной аппаратуры, встроенного программного обеспечения, загружаемого программного обеспечения и/или комбинаций перечисленных элементов, реализуемых в одной или более машинах (например, одном или более компьютерных устройствах, используемых в качестве пользовательского компьютерного устройства для электронного документа, одном или более серверных устройств, таких как сервер документов, и т.п.), запрограммированных в соответствии с настоящим описанием, как это будет ясно даже рядовым специалистам в компьютерной технике. Эти разнообразные аспекты или признаки могут содержать реализацию в одной или более компьютерных программах и/или программном обеспечении, выполняемом и/или интерпретируемом в программируемой системе, содержащей по меньшей мере один процессор специального или общего назначения, соединенный для приема данных и команд от и для передачи данных и команд в систему хранения информация, по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода. Квалифицированные программисты смогут достаточно легко подготовить код соответствующего программного обеспечения на основе положений настоящего изобретения, как это будет очевидно даже рядовым специалистам в области программирования. Описанные выше аспекты и варианты реализации, использующие программное обеспечение и/или программные модули, могут также содержать подходящую аппаратуру, способствующую реализации выполняемых машиной команд программного обеспечения и/или программного модуля.
Такое программное обеспечение может представлять собой компьютерный программный продукт, использующий машиночитаемый носитель для хранения информации. Машиночитаемый носитель для хранения информации может представлять собой какой-либо носитель, способный сохранять и/или кодировать последовательность команд для выполнения машиной (например, компьютерным устройством) и управлять машиной для осуществления какого-либо из способов и/или вариантов, описываемых здесь. К примерам таких машиночитаемый носителей для хранения информации относятся, не ограничиваясь этим, магнитный диск, оптический диск (например, CD, CD-R, DVD, DVD-R и т.п.), магнитооптический диск, постоянное запоминающее устройство (ПЗУ (read-only memory “ROM”)), запоминающее устройство с произвольной выборкой (ЗУПВ (random access memory “RAM”)), магнитная карточка, оптическая карточка, твердотельное запоминающее устройство, стираемое программируемое постоянное запоминающее устройство (СППЗУ (EPROM)), электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ (EEPROM)), программируемые логические устройства (Programmable Logic Device (PLD)) и/или какие-либо комбинации таких устройств. Термин «машиночитаемый носитель», как он используется здесь, охватывает как единственный носитель, так и комплекс физически раздельных носителей, такой как, например, комплект компакт-дисков или один или более накопителей на жестких дисках в сочетании с компьютерным запоминающим устройством. Как используется здесь, термин «машиночитаемый носитель для хранения информации» не охватывает временные формы передачи сигнала.
Такое программное обеспечение может также содержать информацию (например, данные), передаваемые в виде сигнала данных на носителе данных, такой как волна несущей. Например, машиночитаемая информация может быть представлена в виде сигнала данных на несущей данных, на которой сигнал кодирует последовательность команд или часть ее, для выполнения машиной (например, компьютерным устройством) и любую относящуюся к этому информацию (например, структуры данных и данные), побуждающую машину осуществлять какие-либо способы и/или варианты, описываемые здесь.
К примерам компьютерного устройства относятся, не ограничиваясь этим, устройство для чтения электронных книг, компьютерная рабочая станция, компьютер терминала, компьютер сервера, ручное устройство (например, планшетный компьютер, смартфон и т.п.), устройство для работы с Интернет, сетевой маршрутизатор, сетевой мост, какая-либо машина, способная выполнять последовательность команд, специфицирующую действия, которые должна выполнять машины и какие-либо сочетания перечисленных устройств. В одном из примеров, компьютерное устройство может содержать и/или быть встроено в киоск.
На Фиг. 9 представлено схематичное представление одного из вариантов компьютерного устройства в форме примера компьютерной системы 900, где может выполняться множество команд, в соответствии с которыми система управления реализует один или более аспектов и/или способов настоящего изобретения. Также предполагается, что множество компьютерных устройств может быть использовано для реализации специально конфигурированного набора команд, в соответствии с которыми одно или более устройств осуществляет один или более аспектов и/или способов согласно настоящему изобретению. Компьютерная система 900 содержит процессор 904 и запоминающее устройство 908, осуществляющие связь одно с другим и с другими компонентами по шине 912. Шина 912 может содержать какую-либо из ряда структур шин, включая, но не ограничиваясь, шину памяти, контроллер памяти, шину периферийных устройств, локальную шину и какую-либо комбинацию перечисленных компонентов с использованием какой-либо из различных архитектур шин.
Запоминающее устройство 908 может содержать различные компоненты (например, машиночитаемые носители), включая, но не ограничиваясь, компонент запоминающего устройства с произвольной выборкой, компонент постоянного запоминающего устройства и какую-либо комбинацию таких компонентов. В одном из примеров, в запоминающем устройстве 908 может быть записана базовая система ввода/вывода (basic input/output system (BIOS)) 916, содержащая базовые процедуры, помогающие передавать информацию между элементами в компьютерной системе 900, например, во время запуска этой компьютерной системы. Запоминающее устройство 908 может также содержать (например, в сохраненном на одном или более машиночитаемых носителях виде) команды (например, программное обеспечение) 920, реализующие какие-либо один или более аспектов и/или способов согласно настоящему изобретению. В другом примере, запоминающее устройство 908 может далее содержать любое число программных модулей, включая, но не ограничиваясь этим, операционную систему, одну или более прикладных программ, другие программные модули, данные программ и какие-либо комбинации этого.
Компьютерная система 900 может также содержать хранилище программ и данных 924. К примерам хранилища программ и данных (например, хранилища программ и данных 924) относятся, не ограничиваясь этим, накопитель на жестком диске, накопитель на магнитном диске, накопитель на оптическом диске, накопитель на оптическом диске в сочетании с оптическим носителем, твердотельное запоминающее устройство и какую-либо комбинацию таких устройств. Хранилище программ и данных 924, может быть соединено с шиной 912 посредством подходящего интерфейса (не показан). Например, к таким интерфейсам относятся, не ограничиваясь этим, интерфейс малых компьютерных систем, SCSI, усовершенствованный интерфейс периферийных устройств (advanced technology attachment (ATA)), последовательный интерфейс ATA, универсальная последовательная шина (universal serial bus (USB)), интерфейс согласно стандарту IEEE 1394 (FIREWIRE) или какие-либо комбинации таких интерфейсов. В одном из примеров хранилище программ и данных 924 (или один или более компонентов такого хранилища) может быть сопряжено с компьютерной системой 900 так, что его можно отсоединить (например, через соединитель внешнего порта (не показан)). В частности, хранилище программ и данных 924 и ассоциированный с ним машиночитаемый носитель 928 могут создать энергонезависимое и/или энергозависимое хранилище машиночитаемых команд, структур данных, программных модулей и/или других данных для компьютерной системы 900. В одном из примеров программное обеспечение 920 может быть резидентно, полностью или частично, на машиночитаемом носителе 928. В другом примере, программное обеспечение 920 может быть резидентно, полностью или частично, в процессоре 904.
Компьютерная система 900 может также содержать устройство 932 ввода. В одном из примеров пользователь компьютерной системы 900 может вводить команды и/или другую информацию в компьютерную систему 900 через это устройство 932 ввода. К примерам устройства 932 ввода относятся, не ограничиваясь этим, устройство алфавитно-числового ввода (например, клавиатура), указательное устройство, джойстик, геймпад (игровая панель), устройство аудио ввода (например, микрофон, система с речевым ответом и т.п.), устройство управления курсором (например, мышь), сенсорная панель, оптический сканер, устройство для захвата изображений (например, фотокамера, видеокамера), сенсорный экран или какая-либо комбинация этих устройств. Устройство 932 ввода может быть сопряжено с шиной 912 через какой-либо из разнообразных интерфейсов (не показаны), включая, но не ограничиваясь, последовательный интерфейс, параллельный интерфейс, игровой порт, USB-интерфейс, FIREWIRE-интерфейс, прямое соединение с шиной 912 и какую-либо комбинацию таких устройств. Устройство 932 может содержать интерфейс в виде сенсорного экрана, который может представлять собой часть дисплея 936 или быть отдельным от него, что далее обсуждается ниже. Устройство 932 ввода может быть использовано в качестве селекторного устройства пользователя для выбора одного или более графических представлений, как обсуждается выше.
Пользователь может также вводить команды и/или другую информацию в компьютерную систему 900 через хранилища программ и данных 924 (например, накопитель со сменными дисками, флэш-накопитель и т.п.) и/или устройство 940 сетевого интерфейса. Такое устройство 940 сетевого интерфейса может быть использовано для соединения компьютерной системы 900 с одной или несколькими сетями, такими как сеть 944, и одним или несколькими удаленными устройствами 948, соединенными с ним. К примерам устройств сетевого интерфейса относятся, но не ограничиваясь этим, плата сетевого интерфейса (например, плата сетевого интерфейса для мобильной сети, плата локальной сети связи (LAN)), модем и какая-либо комбинация этих устройств. К примерам сети относятся, не ограничиваясь этим, широкомасштабная сеть связи (например, Интернет, сеть предприятия), локальная сеть связи (например, сеть, ассоциированная с офисом, зданием, кампусом или каким-либо относительно небольшим географическим пространством), телефонная сеть, сеть передачи данных, ассоциированная с провайдером телефонной/голосовой связи (например, сеть передачи данных и/или голосовая сеть провайдера мобильной связи), прямое соединение между двумя компьютерными устройствами или какая-либо комбинация перечисленных объектов. Сеть связи, такая как сеть 944, может использовать проводную и/или беспроводную связь. В общем случае может быть использована любая топология сети. Информация (например, данные, программное обеспечение 920 и т.п.) может быть передана в компьютерную систему 900 или из нее через устройство 940 сетевого интерфейса.
Компьютерная система 900 может далее содержать адаптер 952 видео дисплея для передачи представляемого на дисплее изображения дисплейному устройству, такому как дисплейное устройство 936. К примерам дисплейного устройства относятся, не ограничиваясь этим, жидкокристаллический дисплей (liquid crystal display (LCD)), электронно-лучевая трубка (cathode ray tube (CRT)), плазменный дисплей, дисплей на светодиодах (light emitting diode (LED)) и какая-либо комбинация таких дисплеев. Адаптер 952 дисплея и дисплейное устройство 936 могут быть использованы в сочетании с процессором 904 для создания графических представлений аспектов настоящего изобретения. В дополнение к дисплейному устройству, компьютерная система 900 может содержать одно или более других периферийных устройств вывода, включая, но не ограничиваясь, аудио громкоговоритель, принтер и какую-либо комбинацию этих устройств. Такие периферийные устройства вывода могут быть соединены с шиной 912 через интерфейс 956 периферийных устройств. К примерам таких интерфейсов периферийных устройств относятся, не ограничиваясь этим, последовательный порт, соединение USB, соединение FIREWIRE, параллельное соединение или какая-либо комбинация таких соединений.
Выше дано подробное описание иллюстративных вариантов настоящего изобретения. Здесь могут быть сделаны разнообразные модификации и дополнения, не отклоняясь от смысла и объема настоящего изобретения. Признаки каждого из описываемых здесь различных вариантов могут быть скомбинированы подходящим образом с признаками других описываемых вариантов для получения множества комбинаций признаков, в ассоциированных новых вариантах. Далее, хотя выше был рассмотрен ряд раздельных вариантов, приведенное здесь описание является всего лишь иллюстрацией применения принципов настоящего изобретения. В дополнение к этому, хотя приведенные здесь различные способы могут быть иллюстрированы и/или описаны как выполняемые в определенном конкретном порядке, этот порядок может изменяться в широких пределах, доступных даже рядовому специалисту, для получения различных вариантов, как описано здесь. Соответственно настоящее описание является всего лишь примером и никак иначе не ограничивает объем настоящего изобретения.
В приведенном выше описании и в Формуле изобретения за фразами «по меньшей мере один из» или «один или более из» может следовать присоединительный список элементов или признаков. Термин «и/или» может также встречаться в списке из двух или более элементов или признаков. Если это явно или неявно не противоречит контексту, такой термин должен обозначать любой из перечисленных в списке элементов или признаков индивидуально, либо какой-либо из упомянутых элементов или признаков в сочетании с каким-либо другим из перечисленных элементов или признаков. Например, фразы «по меньшей мере один из A и B»; «один или более из A и B»; и «A и/или B» должны обозначать каждая «A отдельно, B отдельно или A и B вместе». Аналогичная интерпретация предполагается также применительно к списку, содержащему три или более позиций. Например, фразы «по меньшей мере один из A, B и C»; «один или более из A, B и C»; и «A, B и/или C» должны обозначать каждая «A отдельно, B отдельно, C отдельно, A и B вместе, A и C вместе, B и C вместе или A и B и C вместе». В дополнение к этому, использование термина «на основе» выше и в Формуле изобретения должно означать «по меньшей мере частично на основе», так что неупомянутый признак или элемент также является допустимым.
Описываемый здесь предмет изобретения может быть реализован в системах, аппаратуре, способах и/или изделиях в зависимости от желаемой конфигурации. Варианты реализации, приведенные в описании выше, не представляют все варианты реализации, согласованные с описываемым здесь предметом изобретения. Напротив, это всего лишь несколько примеров, согласованных с аспектами, относящимися к описываемому предмету изобретения. Хотя выше были подробно описаны лишь небольшое число вариантов, возможны также и другие модификации или дополнения. В частности, другие признаки и/или варианты могут быть созданы в дополнение к тому, что рассмотрено здесь. Например, описываемые выше варианты реализации могут быть направлены на различные комбинации и субкомбинации описываемых признаков и/или комбинации и субкомбинации ряда других признаков, описанных выше. В дополнение к тому, логические схемы, изображенные в прилагаемых чертежах и/или описываемые здесь, не требуют обязательного выполнения в показанном здесь порядке или в последовательном порядке для достижения желаемых результатов. Другие варианты реализации могут находиться в пределах объема следующей Формулы изобретения.