Настоящее изобретение относится к способу интерполяции значений под-пикселов при кодировании и декодировании данных. В частности, оно относится к кодированию и декодированию цифрового видео, но не только к нему.
Предшествующий уровень техники
Цифровые видеопоследовательности, такие как обычные кинофильмы, записанные на пленку, содержат последовательность неподвижных изображений, а иллюзия движения создается отображением изображений одного за другим при относительно быстрой частоте кадров, обычно от 15 до 30 кадров в секунду. Благодаря относительно быстрой частоте кадров изображения в последовательных кадрах кажутся практически одинаковыми и таким образом содержат значительное количество избыточной информации. Например, обычная сцена может содержать несколько неподвижных элементов, таких как декорации на заднем плане, и несколько подвижных областей, которые могут принимать множество различных форм, например лицо диктора новостей, движущийся транспорт и т.п. Альтернативно камера, снимающая сцену, сама может перемещаться, и в этом случае все элементы изображения имеют одинаковый вид движения. Во многих случаях это означает, что общее изменение от одного видеокадра к другому достаточно невелико. Конечно, это зависит от природы движения. Например, чем быстрее движение, тем больше изменение от одного кадра к другому. Аналогично, если сцена содержит некоторое количество движущихся элементов, то изменение от одного кадра к другому больше, чем в сцене, где перемещается только один элемент.
Следует понимать, что каждый кадр необработанного, то есть несжатого цифрового видеоряда содержит очень большой объем информации об изображении. Каждый кадр в несжатой цифровой видеопоследовательности формируется из массива пикселов изображения. Например, в широко используемом формате цифрового видео, известном как вариант общего формата обмена сжатыми видеоданными с уменьшенным вчетверо разрешением (QCIF), кадр содержит массив из 176×144 пикселов, и в этом случае каждый кадр содержит 25344 пиксела. В свою очередь, каждый пиксел представлен определенным количеством битов, которые несут информацию о яркостном и/или цветовом содержимом области изображения, соответствующей пикселу. В общем случае для представления содержимого о яркости и цветности изображения используется так называемая цветовая модель YUV (совокупность сигнала яркости Y и двух цветоразностных сигналов U и V). Составляющая Y или яркость представляет интенсивность (яркость) изображения, тогда как цветовое содержимое изображения представлено двумя составляющими цветности, обозначенными U и V.
Цветовые модели, основанные на яркостном/цветностном представлении содержимого изображения, обеспечивают определенные преимущества по сравнению с цветовыми моделями, которые основаны на представлении, использующем основные цвета (красный, зеленый и синий, RGB). Зрительная система человека более восприимчива к изменениям интенсивности, чем к изменениям цвета; цветовые модели YUV эксплуатируют это свойство, используя более низкое пространственное разрешение для составляющих (U, V) цветности, чем для составляющей (Y) яркости. В этом случае объем информации, требующийся для кодирования цветовой информации в изображении, может быть уменьшен при приемлемом уменьшении качества изображения.
Более низкое пространственное разрешение составляющих цветности обычно достигается с помощью под-дискретизации. Обычно блок 16×16 пикселов изображения представляется одним блоком 16×16 пикселов, содержащим информацию о яркости, а каждая из соответствующих составляющих цветности представляется одним блоком 8×8 пикселов, представляющим область изображения, равнозначную блоку 16×16 пикселов яркостной составляющей. Составляющие цветности таким образом пространственно под-дискретизированы по множителю 2 в направлениях х и у. Полученный комплект из одного блока 16×16 пикселов яркости и двух блоков 8×8 цветности обычно называется макроблоком YUV или для краткости макроблоком.
Изображение QCIF содержит макроблоки 11×9. Если яркостные блоки и блоки цветности представлены 8-битовым разрешением (то есть числами в диапазоне от 0 до 255), то общее число битов, требующихся на макроблок, составляет (16×6×8)+2×(8×8×8)=3072 бита. Число битов, необходимых для представления видеокадра в формате QCIF, таким образом составляет 99×3072=304128 бит. Это означает, что количество данных, требуемых, чтобы передать/записать/отобразить видеопоследовательность в формате QCIF, представленную с помощью цветовой модели YUV, на скорости 30 кадров в минуту, составляет более 9 Мбит/с. Это крайне высокая скорость передачи данных и она непрактична в использовании в приложениях записи, передачи и отображения видео из-за того, что требуются очень большие емкость памяти, пропускная способность канала передачи и производительность аппаратного обеспечения.
Если видеоданные подлежат передаче в масштабе реального времени по фиксированной линейной сети, такой как цифровая сеть с комплексными услугами (ISDN) или обычной телефонной коммутируемой сети общего пользования (PSTN), то доступная пропускная способность передачи данных обычно составляет порядка 64 кбит/с. В мобильной видеотелефонии, когда передача имеет место по меньшей мере частично по линии радиосвязи, доступная пропускная способность может быть равна 20 кбит/с. Это означает, что для того чтобы обеспечить передачу цифровых видеопоследовательностей через сети связи с низкой пропускной способностью, требуется достигнуть значительного снижения объема информации, используемой для представления видеоданных. По этой причине были разработаны методы сжатия видеоданных, которые уменьшают объем информации, передаваемой при поддержании приемлемого качества изображения.
Способы сжатия видеоданных основаны на снижении избыточных и бесполезных для восприятия частей видеопоследовательностей. Избыточность в видеопоследовательностях может быть разделена на пространственную, временную и спектральную избыточность. Термин "пространственная избыточность" используется для описания корреляции между соседними пикселами внутри кадра. Термин "временная избыточность" выражает факт того, что объекты, появляющиеся в одном кадре последовательности, вероятно, появятся в последующих кадрах, тогда как "спектральная избыточность" относится к корреляции между различными цветовыми составляющими одного и того же изображения.
Достаточно эффективное сжатие не может быть достигнуто простым сокращением различных форм избыточности в данной последовательности изображений. Таким образом, большинство существующих кодеров видеоданных также уменьшают качество тех частей видеопоследовательности, которые субъективно наименее важны. Дополнительно избыточность потока битов сжатого видеоданных снижается самостоятельно посредством эффективного кодирования без потерь. Обычно это достигается с помощью метода, известного как "кодирование с переменной длиной" (VLC).
Современные стандарты сжатия видеоданных, такие как рекомендации ITU-T H.261, Н263(+) (++), H26L и рекомендации Экспертной группы по вопросам движущихся изображений MPEG-4 используют "временное предсказание с компенсацией движения". Это является формой уменьшения временной избыточности, в которой содержимое нескольких (зачастую многих) кадров в видеопоследовательности "предсказывается" на основе других кадров в последовательности путем отслеживания движения объектов или областей изображения между кадрами.
Сжатые изображения, которые не используют уменьшение временной избыточности, обычно называются INTRA-кодированными или 1-кадрами, тогда как предсказанные по времени изображения называются INTER-кодированными или Р-кадрами. В случае INTER-кадров предсказанное изображение (с компенсированным движением) крайне редко бывает достаточно точным, чтобы представлять содержимое изображения с достаточным качеством, и поэтому с каждым INTER-кадром связан пространственно сжатый кадр ошибки предсказания (ОП, РЕ). Многие схемы сжатия видеоданных также могут использовать двунаправленно предсказанные кадры, которые обычно называются В-изображениями или В-кадрами. В-изображения вводятся между парами опорных или так называемых якорных изображений (I- или Р-кадрами) и предсказываются на основе либо одного либо обоих якорных изображений. В-изображения сами по себе не используются как якорные изображения, то есть ни один другой кадр не предсказывается на их основе, и, следовательно, они могут быть удалены из видеопоследовательности, не вызывая ухудшения качества будущих изображений.
Различные типы кадра, которые появляются в обычной сжатой видеопоследовательности, показаны на фиг.3 приложенных чертежей. Как можно видеть из чертежа, последовательность начинается INTRA или 1-кадром 30. На фиг.3 стрелки 33 показывают процесс предсказания "вперед", посредством которого формируются Р-кадры (обозначенные позицией 34). Процесс двунаправленного предсказания, посредством которого формируются В-кадры (36), показан стрелками 31а и 31b соответственно.
На фиг.1 и 2 показана принципиальная схема примерной системы кодирования видеоданных, использующая предсказание компенсации движения. Фиг.1 показывает кодер 10, использующий компенсацию движения, а фиг.2 показывает соответствующий декодер 20. Кодер 10, показанный на фиг.1, содержит блок 11 оценки поля движения, блок 12 кодирования поля движения, блок 13 предсказания с компенсацией движения, блок 14 кодирования ошибки предсказания, блок 15 декодирования ошибки предсказания, блок 16 мультиплексирования, кадровую память 17 и сумматор 19. Декодер 20 содержит блок 21 предсказания с компенсацией движения, блок 22 декодирования ошибки предсказания, блок 23 демультиплексирования и кадровую память 24.
Принцип функционирования кодеров видеоданных, использующих компенсацию движения, состоит в минимизации объема информации в кадре Еn(х,у) ошибки предсказания, который является разностью между текущим кодируемым кадром In(х,у) и кадром Рn(х,у) предсказания. Кадр ошибки предсказания выглядит следующим образом:
Кадр Рn(х,у) предсказания построен с помощью значений пикселов опорного кадра Rn(x,y), который в общем случае является одним из ранее закодированных и переданных кадров, например кадром, непосредственно предшествующим текущему кадру, и доступен из кадровой памяти 17 кодера 10. Более конкретно, кадр Рn(x,у) предсказания строится путем нахождения так называемых пикселов предсказания в опорном кадре Rn(x,y), который практически соответствует пикселам в текущем кадре. Выделяют информацию о движении, описывающую соотношение (например, относительное положение, вращение, масштаб и т.п.) между пикселами в текущем кадре и соответствующими им пикселами предсказания в опорном кадре, а кадр предсказания конструируют путем перемещения кадра предсказания в соответствии с информацией о движении. В этом случае кадр предсказания строится как приблизительное представление текущего кадра с помощью значений пикселов в опорном кадре. Кадр ошибки предсказания, на который сделана ссылка выше, представляет, следовательно, разность между приблизительным представлением текущего кадра, предоставленным кадром предсказания, и самим текущим кадром. Основное преимущество, предоставляемое видеокодерами, которые используют предсказание с компенсацией движения, возникает из того факта, что сравнительно компактное описание текущего кадра может быть получено представлением его в терминах информации о движении, требующейся для формирования предсказания, вместе со связанной с ней информацией об ошибке предсказания в кадре ошибки предсказания.
Однако из-за очень большого числа пикселов в кадре в общем случае неэффективно передавать на декодер отдельную информацию о движении для каждого пиксела. Вместо этого в большинстве схем кодирования видеоданных текущий кадр разделяется на большие сегменты Sk изображения, и информация о движении, относящаяся к сегментам, передается на декодер. Например, информация о движении обычно предоставляется для каждого макроблока в кадре, и та же самая информация о движении затем используется для всех пикселов внутри макроблока. В некоторых стандартах кодирования видеоданных, таких как H.26L, макроблок может быть разделен на меньшие блоки, и каждый меньший блок снабжен собственной информацией о движении.
Информация о движении обычно принимает форму векторов движения [Δх(х,у), Δy(х,у)]. Пара чисел Δх(х,у) и Δy(х,у) представляет горизонтальное и вертикальное смещения пиксела в местоположении (х,у) в текущем кадре In(х,у) по отношению к пикселу в опорном кадре Rn(x,y). Векторы [Δх(х,у), Δy(х,у)] движения вычисляются в блоке 11 оценки поля движения, и на набор векторов движения текущего кадра [Δх(·), Δу(·)] называется полем вектора движения.
Обычно местоположение макроблока в текущем видеокадре определяется координатами (х,у) верхнего левого угла. Таким образом, в схеме кодирования видеоданных, в которой информация о движении связана с каждым макроблоком кадра, каждый вектор движения описывает горизонтальное и вертикальное смещение Δх(х,у) и Δy(x,y) пиксела, представляющего верхний левый угол макроблока в текущем кадре In(х,у), по отношению к пикселу в левом верхнем углу практически соответствующего блока пикселов предсказания в опорном кадре Rn(x,y) (как показано на фиг.4b).
Оценка движения является задачей, требующей большого количества вычислений. Если задан опорный кадр Rn(x,y) и, например, квадратный макроблок, содержащий N×N пикселов в текущем кадре (как показано на фиг.4а), то целью оценки движения является нахождение блока N×N пикселов в опорном кадре, который совпадает с характеристиками макроблока в текущем изображении по некоторому критерию. Этим критерием может быть, например, сумма абсолютных разностей (CAP, SAD) между пикселами макроблока в текущем кадре и блоком пикселов в опорном кадре, с которым он сравнивается. Этот процесс в общем случае известен как "согласование блоков". Следует отметить, что в общем случае геометрия блока, подлежащего согласованию, и блока в опорном кадре не должны быть одинаковыми, поскольку реальные объекты могут подвергаться изменениям масштаба, равно как вращению и искривлению. Однако в существующих международных стандартах кодирования видеоданных используется только трансляционная модель движения (см. ниже) и таким образом достаточно фиксированной прямоугольной геометрии.
В идеале для достижения наилучшей вероятности нахождения совпадения поиск должен вестись по всему опорному кадру. Однако это непрактично, поскольку накладывает слишком большую вычислительную нагрузку на устройство кодирования видеоданных. Вместо этого область поиска ограничена областью [-р,р] вокруг исходного местоположения макроблока в текущем кадре, как показано на фиг.4 с.
Для сокращения объема информации о движении, подлежащей передаче от кодера 10 на декодер 20, поле вектора движения кодируется в блоке 12 кодирования поля движения из состава кодера 10 посредством представления его с помощью модели движения. В этом процессе векторы движения сегментов изображения выражаются заново с помощью определенных заранее заданных функций или, иными словами, поле вектора движения представляется с помощью модели. Почти все используемые в настоящее время модели вектора движения являются аддитивными моделями движения, удовлетворяющими следующим общим формулам:
где коэффициенты аi и bi называются коэффициентами движения. Эти коэффициенты движения передаются на декодер 20 (информационный поток 2 на фиг 1 и 2). Функции fi и gi называются базисными функциями поля движения и известны как кодеру, так и декодеру. Приблизительное поле вектора движения может быть построено с помощью коэффициентов и базисных функций. Поскольку базисные функции известны как кодеру 10, так и декодеру 20 (то есть хранятся в них), на кодер необходимо передавать только коэффициенты движения, тем самым уменьшая объем информации, требующийся для представления информации о движении кадра.
Простейшей моделью движения является трансляционная модель движения, которая требует только двух коэффициентов для описания векторов движения каждого сегмента. Значения векторов движения заданы следующим выражением:
Эта модель широко используется в различных международных стандартах (ISO MPEG-1, MPEG-2, MPEG-4, Рекомендации ITU-T H.261 и Н.263) для описания движения блоков 16×16 и 8×8 пикселов. Системы, которые используют трансляционную модель движения, выполняют оценку движения при разрешении в полный пиксел или при разрешении в некоторую целую часть полного пиксела, например при разрешении в половину или четверть пиксела.
Кадр Рn(x,n) предсказания строится в блоке 13 предсказания компенсацией движения в кодере 10 и задается следующим выражением:
В блоке 14 кодирования ошибки предсказания кадр Еn(х,у) ошибки предсказания обычно сжимается путем его представления в виде конечного ряда (преобразования) некоторых двумерных функций. Например, может использоваться двумерное дискретное косинусное преобразование (ДКТ, DCT). Коэффициенты преобразования квантуются и статистически кодируются (например, методом Хаффмана) перед тем, как они передаются на декодер (информационный поток 1 на фиг.1 и 2). Из-за ошибки, вносимой квантованием, эта операция обычно вызывает некоторое ухудшение (потерю информации) в кадре Еn(х,у) ошибки предсказания. Чтобы компенсировать это ухудшение, кодер 10 также содержит блок 15 декодирования ошибки предсказания, где декодированный кадр ошибки предсказания строится с помощью коэффициентов преобразования. Этот локально декодированный кадр ошибки предсказания добавляется к кадру Рn(х,у) предсказания в сумматоре 19, и полученный декодированный текущий кадр сохраняется в кадровой памяти 17 для дальнейшего использования в качестве следующего опорного кадра Rn+1(х,у).
Информационный поток 2, несущий информацию о векторах движения, объединяется с информацией об ошибке предсказания в мультиплексоре 16, а информационный поток 3, обычно содержащий по меньшей мере два типа информации, отправляется на декодер 20.
Теперь будет описана работа соответствующего видеодекодера 20.
Кадровая память 24 декодера 20 хранит восстановленный ранее опорный кадр Rn(x,y). Кадр Рn(х,у) предсказания строится в блоке 21 предсказания с компенсацией движения из состава декодера 20 в соответствии с уравнением 5 с помощью принятой информации о коэффициентах движения и значений пикселов восстановленного ранее опорного кадра Rn(x,y). Переданные коэффициенты преобразования кадра En(х,y) предсказания ошибок используются в блоке 22 декодирования ошибки предсказания для построения декодированного кадра ошибки предсказания.
Пикселы декодированного текущего кадра затем восстанавливаются путем добавления кадра Рn(x,у) предсказания и декодированного кадра ошибки предсказания:
Этот декодированный текущий кадр может сохраняться в кадровой памяти 24 в качестве следующего опорного кадра Rn+1(x,y).
В описании кодирования и декодирования цифрового видеоданных с компенсацией движения, представленном выше, вектор движения [Δх(х,у), Δy(х,у)], описывающий движение макроблока в текущем кадре по отношению к опорному кадру Rn(x,y), может указывать на любой из пикселов в опорном кадре. Это означает, что движение между кадрами в цифровой видеопоследовательности может быть представлено только при разрешении, которое определено пикселами изображения в кадре (при так называемом разрешении в полный пиксел). Реальное движение, однако, имеет произвольную точность, и таким образом система, описанная выше, может лишь обеспечить приближенное моделирование движения между следующими друг за другом кадрами цифровой видеопоследовательности. Обычно моделирование движения между видеокадрами при разрешении в полный пиксел недостаточно точно, чтобы позволить эффективно минимизировать информацию ошибки предсказания (ОП), связанную с каждым макроблоком/кадром. Поэтому, чтобы обеспечить более точное моделирование реального движения и помочь уменьшить объем информации ОП, которая должна быть передана от кодера на декодер, многие стандарты кодирования видеоданных, такие как Н.263(+)(++) H.26L, допускают, чтобы векторы движения указывали "между" пикселами изображения. Другими словами, векторы движения могут иметь под-пиксельное разрешение. Когда векторам движения позволяется иметь под-пиксельное разрешение, это добавляет сложности операциям кодирования и декодирования, которые должны быть выполнены, так что преимуществом по-прежнему является ограничение степени пространственного разрешения, которое может иметь вектор движения. Таким образом, стандарты кодирования видеоданных, такие как упомянутые выше, обычно позволяют векторам движения иметь только разрешение в полный пиксел, в половину пиксела (удвоенное разрешение или в четверть пиксела (учетверенное разрешение).
Оценка движения с под-пиксельным разрешением обычно выполняется как двухэтапный процесс, как показано на фиг.5, для схемы кодирования видеоданных, которая позволяет векторам движения иметь разрешение в полный пиксел или в половину пиксела. На первом этапе вектор движения, имеющий разрешение в полный пиксел, определяется с помощью любой подходящей схемы оценки движения, такой как процесс согласования блоков, описанный выше. Полученный вектор движения, имеющий разрешение в полный пиксел, показан на фиг.5.
На втором этапе вектор движения, найденный на первом этапе, уточняется, чтобы получить желаемое разрешение в половину пиксела. В примере, показанном на фиг.5, это выполняется путем формирования восьми новых блоков поиска по 16×16 пикселов, причем местоположение верхнего левого угла каждого блока маркируется знаком Х на фиг.5. Эти местоположения обозначаются как [Δх+m/2, Δy+n/2], где числа тип могут принимать значения -1, 0 и +1, но не могут быть равны нулю одновременно. Поскольку известны значения пикселов исходных пикселов изображения, значения (например значения яркости и/или цветности) под-пикселов, находящихся в местоположениях половины пиксела, должны оцениваться для каждого из восьми новых блоков поиска с помощью какой-либо формы интерполяционной схемы.
После интерполяции значений под-пикселов при разрешении в половину пиксела каждый из восьми блоков поиска сравнивается с макроблоком, для которого отыскивается вектор движения. Как и в процессе согласования блоков, выполняемом, чтобы определить вектор движения с разрешением в полный пиксел, макроблок сравнивается с каждым из восьми блоков поиска в соответствии с некоторым критерием, например с суммой абсолютных разностей (CAP). В общем случае в результате сравнений будет получено минимальное значение CAP. В зависимости от природы движения в видеопоследовательности это минимальное значение может соответствовать местоположению, определенному исходным вектором движения (имеющим разрешение в полный пиксел), либо оно может соответствовать местоположению, имеющему разрешение в половину пиксела. Таким образом, можно определить, должен ли вектор движения указывать на местоположение полного пиксела или подпиксела, и если под-пиксельное разрешение является пригодным, то можно определить верный вектор движения при подпиксельном разрешении. Следует понимать, что только что описанная схема может быть использована и для других под-пиксельных разрешений (например, разрешения в четверть пиксела) совершенно аналогичным образом.
На практике оценка значений под-пикселов в опорном кадре выполняется путем интерполяции значения под-пиксела из значений окружающих пикселов. В общем случае интерполяция значения F(x,y) под-пиксела, расположенного в нецелочисленном местоположении (х,у)=(n+Δх, m+Δy), может быть сформулирована как двумерная операция, математически представляемая следующим образом:
где f(k,l) являются коэффициентами фильтра, а m и n получаются путем усечения, соответственно х и у до целых значений. Обычно коэффициенты фильтра зависят от значений х и у, а фильтрами интерполяции обычно являются так называемые разделяемые фильтры, в этом случае значение F(x,y) под-пиксела может быть вычислено следующим образом:
Векторы движения вычисляются в кодере. Когда соответствующие коэффициенты движения передаются на декодер, это является прямым поводом интерполировать требуемые под-пикселы с помощью способа интерполяции, идентичного тому, который используется в кодере. В этом случае кадр, следующий за опорным кадром в кадровой памяти 24, может быть восстановлен из опорного кадра и векторов движений.
Простейшим путем применения интерполяции значения под-пиксела в кодере видеоданных является интерполяция каждого значения под-пиксела каждый раз, когда это необходимо. Однако это неэффективное решение для кодера видеоданных, поскольку вероятно, что одно и то же значение под-пиксела будет требоваться несколько раз, и таким образом вычисления по интерполяции одного и того же значения под-пиксела будут выполняться множество раз. Это выражается в излишнем увеличении вычислительной сложности/нагрузки в кодере.
При альтернативном подходе, который ограничивает сложность кодера, проводится предварительное вычисление и сохранение всех значений под-пикселов в памяти, связанной с кодером. Это решение далее в документе называется "предварительной" интерполяцией. Ограничивая сложность, предварительная интерполяция имеет недостаток, состоящий в значительном увеличении использования памяти. Например, если точность вектора движения равна четверти пиксела как в горизонтальном местоположении, так и в вертикальном направлениях, то сохранение заранее вычисленных значений под-пикселов для полного изображения выразится в использовании памяти в 16 раз большей, чем требуется для хранения исходного, неинтерполированного изображения. Кроме того, это включает вычисление некоторых под-пикселов, которые в действительности могут не требоваться при вычислении векторов движения в кодере. Предварительная интерполяция также в высокой степени неэффективна в видеодекодере, поскольку большинство предварительно интерполированных значений под-пикселов декодеру никогда не потребуется. Таким образом, предпочтительно не использовать предварительное вычисление в декодере.
Для уменьшения требований к памяти в кодере может быть использована так называемая интерполяция по запросу. Например, если желаемой точностью пиксела является разрешение в четверть пиксела, то только под-пикселы при разрешении в половину пиксела интерполируются предварительно для всего кадра и сохраняются в памяти. Значения под-пикселов при разрешении в четверть пиксела вычисляются только в процессе оценки/компенсации движения, когда это потребуется. В этом случае используется память всего в 4 раза большая, чем требуется для хранения исходного, неинтерполированного изображения.
Следует отметить, что когда используется предварительная интерполяция, процесс интерполяции составляет всего лишь небольшую часть всей вычислительной сложности/нагрузки в кодере, так как каждый пиксел интерполируется только один раз. Поэтому в кодере сложность процесса интерполяции сама по себе не очень критична, когда используется предварительная интерполяция значения под-пиксела. С другой стороны, интерполяция по запросу накладывает существенно большую вычислительную нагрузку на кодер, так как под-пикселы могут интерполироваться много раз. Следовательно, сложность процесса интерполяции, которую можно рассматривать в терминах количества вычислительных операций или рабочих циклов, которые должны быть выполнены для интерполяции значений под-пикселов, становится важным соображением.
В декодере одни и те же значения под-пикселов в большинстве случаев используются малое число раз, а в некоторых вообще нет необходимости. Поэтому в декодере предпочтительно вообще не использовать предварительную интерполяцию, то есть предпочтительно не выполнять предварительное вычисление каких-либо значений под-пикселов.
В качестве части работы, продолжающейся в Секторе ITU по стандартизации телекоммуникаций, в Группе 16 изучения, в Экспертной группе по кодированию видеоданных (VCEG), по Вопросам 6 и 15, были разработаны две схемы интерполяции. Эти подходы были предложены для включения в рекомендацию H.26L ITU-T и были воплощены в опытных моделях (ОМ, TML) с целью оценки и дальнейшего развития. Опытная модель, соответствующая Вопросу 15, называется Опытной моделью 5 (ОМ5), тогда как полученная при изучении Вопроса 6 известна как Опытная модель 6 (ОМ6). Теперь будут описаны схемы интерполяции, предложенные как в ОМ5, так и в ОМ6.
По всему описанию схемы интерполяции значений под-пикселов, используемой в опытной модели ОМ5, ссылки будут делаться на фиг.12а, которая определяет обозначения для описания местоположений пикселов и под-пикселов, специфичных для ОМ5. Отдельные обозначения, определяемые на фиг.13а, будут использоваться для обсуждения схемы интерполяции значений под-пикселов, используемой в ОМ6. Еще одни отдельные обозначения, показанные на фиг.14а, будут использоваться в тексте позднее в связи со способом интерполяции значений под-пикселов, соответствующих изобретению. Следует понимать, что три различных вида обозначений, использованных в тексте, предназначены для содействия пониманию каждого способа интерполяции и выявлению различий между ними. Однако на всех трех чертежах буква А используется для обозначения исходных пикселов изображения (при разрешении в полный пиксел). Конкретнее буква А представляет местоположение пикселов в данных изображения, представляющих кадр видеопоследовательности, при этом значения пикселов А либо принимают в качестве текущего кадра In(х,у) от источника видеоданных либо восстанавливают и сохраняют в качестве опорного кадра Rn(x,y) в кадровой памяти 17, 24 кодера 10 или декодера 20. Все остальные буквы представляют местоположения под-пикселов, при этом значения под-пикселов, расположенных в местоположениях под-пикселов, получают с помощью интерполяции.
Некоторые другие термины также будут использованы согласованным образом по всему тексту для идентификации конкретных местоположений пикселов и под-пикселов. Это такие термины, как:
Термин "целое горизонтальное местоположение" используется для описания местоположения любого под-пиксела, который построен в столбце исходных данных изображения. Под-пикселы с и е на фиг.12а и 13а, равно как под-пикселы b и е на фиг.14а, имеют целые горизонтальные местоположения.
Термин "целое вертикальное местоположение" используется для описания местоположения любого под-пиксела, который построен в строке исходных данных изображения. Под-пикселы b и d на фиг.12а и 13а, равно как под-пикселы b и d на фиг.14а, имеют целые вертикальные местоположения.
По определению пикселы А имеют целое горизонтальное и целое вертикальное местоположения.
Термин "полуцелое горизонтальное местоположение" используется для описания местоположения любого под-пиксела, который построен в столбце, находящемся в разрешении в половину пиксела. Под-пикселы b, с и е на фиг.12а и 13а подпадают под эту категорию, равно как под-пикселы b, с и f на фиг.14а. Аналогичным образом термин "полуцелое вертикальное местоположение" используется для описания местоположения любого под-пиксела, который построен в строке, находящейся в разрешении в половину пиксела, например под-пикселы с и d на фиг.12а и 13а, равно как под-пикселы b, с и g на фиг.14а.
Далее термин "горизонтальное местоположение четверть целого" относится к любому под-пикселу, который построен в столбце, находящемся в разрешении в четверть пиксела, например под-пикселы d и е на фиг.12а, под-пикселы d и g на фиг.13а и под-пикселы d, g и h на фиг.14 а. Аналогично термин "вертикальное местоположение четверть целого" относится к любым под-пикселам, которые построены в строке, находящейся в разрешении в четверть пиксела. На фиг.12а под эту категорию подпадают под-пикселы е и 1, равно как под-пикселы е, f и g на фиг.13а и под-пикселы е, f и h на фиг.14а.
Определение каждого из описанных выше терминов показано "линиями", нарисованными на соответствующих чертежах.
Следует далее отметить, что зачастую удобно обозначать конкретный пиксел двумерным обозначением. В этом случае подходящее двумерное обозначение можно получить путем проверки взаимного пересечения линий на фиг.12а, 13а и 14а. Применяя этот принцип, пиксел d на фиг.12а, например, имеет полуцелое горизонтальное и полуцелое вертикальное местоположения, а под-пиксел е имеет целое горизонтальное местоположение и вертикальное местоположение четверть целого. Кроме того, для простоты именования под-пикселы, которые находятся на полуцелых горизонтальных и целых вертикальных на целых горизонтальных и полуцелых вертикальных положениях, а также на полуцелых горизонтальных и полуцелых вертикальных положениях, будут именоваться как под-пикселы разрешения. 1/2 Под-пикселы, которые находятся на любом горизонтальном местоположении четверть целого и/или вертикальном местоположении четверть целого будут именоваться как под-пикселы разрешения 1/4.
Также следует отметить, что как в описаниях двух опытных моделей, так и в самом подробном описании изобретения предполагается, что пикселы имеют минимальное значение, равное 0, и максимальное значение, равное 2n-1, где n является числом битов, зарезервированных для значения пиксела. Число битов обычно равно 8. После того, как под-пиксел проинтерполирован, в случае, если значение интерполированного под-пиксела превышает значение 2n-1, то оно ограничивается диапазоном [0, 2n-1], то есть значения меньше минимального разрешенного значения станут минимальным значением (0), а значения больше максимального станут максимальным значением (2n-1). Эта операция называется ограничением.
Теперь будет подробно описана схема интерполяции значения под-пиксела в соответствии с ОМ5 со ссылками на фиг.12а, 12b и 12с.
1. Значение для под-пиксела в полуцелом горизонтальном и целом вертикальном местоположении, который является под-пикселом b разрешения 1/2 на фиг.12а, вычисляется с помощью 6-отводного фильтра. Фильтр интерполирует значение под-пиксела b разрешения 1/2 на основании значений 6 пикселов (A1-A6), расположенных в строку в целых горизонтальных местоположениях и целых вертикальных местоположениях симметрично вокруг b, как показано на фиг.12b, согласно следующей формуле: b=(А1-5А2+20А3+20А4-5А5+А6+16)/32. Оператор "/" обозначает деление с усечением. Результат ограничивают, чтобы попасть в диапазон [0, 2n-1].
2. Значения для под-пикселов разрешения 1/2, помеченных с, вычисляются с помощью аналогичного шестиотводного фильтра, который используется в операции 1, и шести ближайших пикселов или под-пикселов (А или b) в вертикальном направлении. На фиг.12 с фильтр интерполирует значение под-пиксела с разрешения 1/2, расположенного в целом горизонтальном местоположении и полуцелом вертикальном местоположении, на основании значений 6 пикселов (A1-А6), расположенных в столбец в целых горизонтальных местоположениях и целых вертикальных местоположениях симметрично вокруг с, согласно следующей формуле: с=(А1-5А2+20А3+20А4-5А5+А6+16)/32. Аналогично значение под-пиксела с разрешения 1/2, расположенного в полуцелом горизонтальном местоположении и полуцелом вертикальном местоположении, вычисляется по следующей формуле: с=(b1-5b2+20b3+20b4-5b5+b6+16)/32. Опять же оператор "/" обозначает деление с усечением. Значения, вычисленные для под-пикселов с, далее ограничивают, чтобы попасть в диапазон [0, 2n-1].
В этом месте процесса интерполяции вычисляются значения всех под-пикселов разрешения 1/2, а процесс продолжается для вычисления значений под-пикселов разрешения 1/4.
3. Значения под-пикселов разрешения 1/4, помеченных d, вычисляются с помощью линейной интерполяции и значений ближайших пикселов и/или под-пикселов разрешения 1/2 в горизонтальном направлении. Конкретнее, значения под-пикселов d разрешения 1/4, расположенных в горизонтальном местоположении четверть целого и целом вертикальном местоположениях, вычисляются усреднением непосредственно ближайшего пиксела в целом горизонтальном местоположении и целом вертикальном местоположении (пиксел А), и непосредственно ближайшего под-пиксела разрешения 1/2 в полуцелом горизонтальном местоположении и целом вертикальном местоположении (под-пиксел b, то есть в соответствии со следующей формулой: d=(А+b)/2. Значения под-пикселов d разрешения 1/4, расположенных в горизонтальном местоположении четверть целого и полуцелом вертикальном местоположениях, вычисляются усреднением непосредственно ближайших под-пикселов с разрешения 1/2, которые находятся в целом горизонтальном и полуцелом вертикальном местоположениях, и полуцелом горизонтальном и полуцелом вертикальном местоположениях соответственно, то есть в соответствии со следующей формулой: d=(c1+c2)/2. Опять же оператор "/" обозначает деление с усечением.
4. Значения под-пикселов разрешения 1/4, помеченных е, вычисляются с помощью линейной интерполяции и значений ближайших пикселов и/или под-пикселов разрешения 1/2 в вертикальном направлении. В частности, значения под-пикселов е разрешения 1/4, расположенных в целом горизонтальном местоположении и вертикальном местоположении четверть целого, вычисляются усреднением непосредственно ближайшего пиксела в целом горизонтальном местоположении и целом вертикальном местоположении (пиксел А), и непосредственно ближайшего под-пиксела в целом горизонтальном и полуцелом вертикальном местоположениях (под-пиксел с), то есть в соответствии со следующей формулой: е=(А+с)/2. Под-пикселы е3 разрешения 1/4, расположенные в полуцелом горизонтальном местоположении и вертикальном местоположении четверть целого, вычисляются усреднением непосредственно ближайшего под-пиксела, который находится в полуцелом горизонтальном и целом вертикальном местоположении (под-пиксел b), и непосредственно ближайшего под-пиксела в полуцелом горизонтальном и полуцелом вертикальном местоположениях (под-пиксел с), то есть в соответствии со следующей формулой: е=(b+с)/2. Более того, под-пикселы е разрешения 1/4 в горизонтальном местоположении четверть целого и вертикальном местоположении четверть целого вычисляются усреднением непосредственно ближайших под-пикселов в горизонтальном местоположении четверть целого и целом вертикальном местоположении и соответствующего под-пиксела в горизонтальном местоположении четверть целого и полуцелом вертикальном местоположении (под-пикселы d), то есть в соответствии со следующей формулой: е=(d1+d2)/2. Опять же оператор "/" обозначает деление с усечением.
5. Значение под-пиксела f разрешения интерполируется усреднением значений 4 наиболее близких значений пикселов в целом горизонтальном и вертикальном местоположениях в соответствии со следующей формулой: f=(A1+A2+A3+A4+2)/4, где пикселами A1, А2, А3 и А4 обозначены наиболее близкие пикселы.
Недостатком ОМ5 является то, что декодер вычислительно сложен. Это происходит от того, что ОМ5 использует подход, в котором интерполяция значений под-пикселов разрешения 1/4 зависит от интерполяции значений под-пикселов разрешения 1/2. Это означает, что для интерполяции значений под-пикселов разрешения 1/4 сначала должны быть вычислены значения под-пикселов разрешения 1/2, из которых те и должны вычисляться. Более того, поскольку значения некоторых под-пикселов разрешения 1/4 зависят от значений интерполяции, полученных для других под-пикселов разрешения 1/4, усечение значений под-пикселов разрешения 1/4 имеет вредоносное воздействие на точность некоторых значений под-пикселов разрешения 1/4. Конкретнее, значения под-пикселов разрешения 1/4 менее точны, чем они могли бы быть, если бы вычислялись из значений, которые не были округлены или усечены. Другим недостатком ОМ5 является то, что необходимо сохранять значения под-пикселов разрешения 1/2 для интерполяции значений под-пикселов разрешения 1/4. Следовательно, для хранения результата, который в конечном счете не потребуется, нужна избыточная память.
Теперь будет описана схема интерполяции значений под-пикселов в соответствии с ОМ6, которая здесь именуется прямой интерполяцией. В кодере способ интерполяции, соответствующий ОМ6, работает аналогично описанному ранее способу интерполяции ОМ5, за исключением того, что постоянно поддерживается максимальная точность. Это достигается путем использования промежуточных значений, которые не округляются и не усекаются. Пошаговое описание способа интерполяции, соответствующего ОМ6, как он применяется в кодере, приводится ниже со ссылками на фиг.13а, 13b и 13 с.
1. Значение под-пиксела в полуцелом горизонтальном и целом вертикальном местоположениях, который является под-пикселом b разрешения 1/2 на фиг.13а, получают с помощью первого вычисления промежуточного значения b с помощью 6-отводного фильтра. Фильтр вычисляет b на основании значений 6 пикселов (A1-A6), расположенных в строку в целых горизонтальных местоположениях и целых вертикальных местоположениях симметрично вокруг b, как показано на фиг.13b, согласно следующей формуле: b=(A1-5А2+20А3+20А4-5А5+А6). Затем вычисляется конечное значение b, которое равно b=(b+16)/32, и результат ограничивают, чтобы попасть в диапазон [0, 2n-1]. Как и ранее, оператор "/" обозначает деление с усечением.
2. Значения под-пикселов разрешения, помеченных с, получают первым вычислением промежуточных значений с. На фиг.13 с промежуточное значение с для под-пиксела с разрешения 1/2, расположенного в целом горизонтальном местоположении и полуцелом вертикальном местоположении, вычисляется на основании значений 6 пикселов (A1-A6), расположенных в столбец в целых горизонтальных местоположениях и целых вертикальных местоположениях симметрично вокруг с, согласно следующей формуле: с=(A1-5A2+20А3+20А4-5А5+А6). Конечное значение для под-пиксела с разрешения 1/2, расположенного в целом горизонтальном местоположении и полуцелом вертикальном местоположении, вычисляется согласно следующей формуле с=(с+16)/32. Аналогично промежуточное значение с для под-пиксела с разрешения, расположенного в полуцелом горизонтальном местоположении и полуцелом вертикальном местоположении, вычисляется по следующей формуле: с=(b1-5b2+20b3+20b4-5b5+b6). Конечное значение для этого под-пиксела разрешения 1/2 затем вычисляется согласно следующей формуле с=(с+512)/1024. Опять же оператор "/" обозначает деление с усечением, а значения, вычисленные для под-пикселов с разрешения 1/2, далее ограничивают, чтобы попасть в диапазон [0, 2n-1].
3. Значения под-пикселов разрешения 1/4, помеченных d, вычисляются следующим образом. Значения под-пикселов d разрешения 1/4, расположенных в горизонтальном местоположении четверть целого и целом вертикальном местоположениях, вычисляются из значения непосредственно ближайшего пиксела в целом горизонтальном местоположении и целом вертикальном местоположении (пиксел А), и из промежуточного значения b, вычисленного на этапе (1) для непосредственно ближайшего под-пиксела разрешения 1/2 в полуцелом горизонтальном местоположении и целом вертикальном местоположении (под-пиксел b разрешения 1/2), то есть в соответствии со следующей формулой: d=(32A+b+32)/64. Значения под-пикселов d разрешения 1/4, расположенных в горизонтальном местоположении четверть целого и полуцелом вертикальном местоположении, интерполируются с помощью промежуточных значений с, вычисленных для непосредственно ближайших под-пикселов с разрешения 1/2, которые находятся в целом горизонтальном и полуцелом вертикальном местоположении, и полуцелом горизонтальном и полуцелом вертикальном местоположениях соответственно, то есть в соответствии со следующей формулой: d=(32с1+c2+1024)/2048. Опять же оператор "/" обозначает деление с усечением, а полученные в конечном счете значения под-пикселов d разрешения 1/4 ограничивают, чтобы попасть в диапазон [0, 2n-1].
4. Значения под-пикселов разрешения 1/4, помеченных е, вычисляются следующим образом. Значения под-пикселов е разрешения 1/4, расположенных в целом горизонтальном местоположении и вертикальном местоположении четверть целого, вычисляются из значения непосредственно ближайшего пиксела в целом горизонтальном местоположении и целом вертикальном местоположении (пиксел А), и из промежуточного значения с, вычисленного на этапе (2) для непосредственно ближайшего под-пиксела разрешения 1/2 в целом горизонтальном и полуцелом вертикальном местоположении, то есть в соответствии со следующей формулой: е=(32А+С+32)/64. Значения под-пикселов е разрешения, расположенных в полуцелом горизонтальном местоположении и вертикальном местоположении четверть целого, вычисляются на основе промежуточного значения b, вычисленного на этапе (1) для непосредственно ближайшего под-пиксела разрешения 1/2, который находится в полуцелом горизонтальном и целом вертикальном местоположении, и промежуточного значения с, вычисленного на этапе (2) для непосредственно ближайшего под-пиксела разрешения 1/2 в полуцелом горизонтальном и полуцелом вертикальном местоположениях, то есть в соответствии со следующей формулой: е=(32b+c+1024)/2048. Опять же, оператор "/" обозначает деление с усечением, а полученные в конечном счете значения под-пикселов е разрешения 1/4 ограничивают, чтобы попасть в диапазон [0, 2n-1].
5. Значения под-пикселов разрешения 1/4, помеченных g, вычисляются с помощью значения ближайшего исходного пиксела А и промежуточных значений трех ближайших соседних под-пикселов разрешения 1/2, в соответствии со следующей формулой: g=(1024а+32b+32 с1+с2+2048)/4096. Как и раньше, оператор "/" обозначает деление с усечением, а полученные в конечном счете значения под-пикселов g разрешения ограничивают, чтобы попасть в диапазон [0, 2n-1].
6. Значение под-пиксела f разрешения 1/4 интерполируется усреднением значений 4 наиболее близких пикселов в целом горизонтальном и вертикальном местоположениях в соответствии со следующей формулой: f=(А1+А2+А3+А4+2) /4, где пикселами A1, А2, А3 и А4 обозначены наиболее близкие исходные пикселы.
В декодере значения под-пикселов могут быть получены непосредственно применением 6-отводных фильтров в горизонтальном и вертикальном направлениях. В случае под-пиксела разрешения 1/4, со ссылкой на фиг.13а, коэффициенты фильтров, применяемые к пикселам и под-пикселам в целом вертикальном местоположении, таковы: [0, 0, 64, 0, 0, 0] для набора из шести пикселов А, [1, -5, 52, 20, -5, 1] для набора из шести пикселов d, [2, -10, 40, 40, -10, 2] для набора из шести под-пикселов b, [1, -5, 52, 20, -5, 1] для набора из шести под-пикселов d. Эти коэффициенты фильтров применяются к соответствующим наборам пикселов или под-пикселов в той же строке, что и значения интерполируемых под-пикселов.
После применения фильтров в горизонтальном и вертикальном направлениях интерполированное значение с нормируется по формуле с=(с+2048)/4096 и ограничивается, чтобы попасть в диапазон [0, 2n-1]. Когда вектор движения указывает на целое местоположение пиксела либо в горизонтальном либо в вертикальном направлении, используется много нулевых коэффициентов. В практической реализации ОМ6, в программном обеспечении используются различные ветвления, которые оптимизированы для различных случаев под-пикселов так, что нет умножений на нулевые коэффициенты.
Следует отметить, что в ОМ6 значения под-пикселов разрешения 1/4 получают прямым использованием промежуточных значений, упомянутых выше, а не извлекают из округленных и ограниченных значений под-пикселов разрешения 1/2. Следовательно, для получения значений под-пикселов разрешения нет необходимости вычислять конечные значения для любого из под-пикселов разрешения 1/2. Конкретнее, нет необходимости проводить операции усечения и ограничения, связанные с вычислением конечных значений, для под-пикселов разрешения 1/2. Также нет необходимости сохранять конечные значения для под-пикселов разрешения 1/2, чтобы использовать в вычислении значений под-пикселов разрешения 1/4. Следовательно, ОМ6 менее сложна для вычисления, чем ОМ5, поскольку требует меньше операций усечения и ограничения. Однако недостатком ОМ6 является то, что как в кодере, так и в декодере требуется использовать высокоточные расчеты. Высокоточная интерполяция требует больше кремниевого пространства на специализированных ИС (ASIC) и требует больше вычислений на некоторых центральных процессорах. Более того, реализация прямой интерполяции в режиме "по-запросу", как определено в ОМ6, требует большого объема памяти. Это является важным фактором, особенно во встроенных устройствах.
Принимая во внимание приведенное выше обсуждение, следует понимать, что из-за различных требований видеокодера и декодера относительно интерполяции под-пикселов существует серьезная проблема разработки способа интерполяции значений под-пикселов, способного обеспечить удовлетворительную производительность как кодера, так и декодера. Более того, ни одна из существующих опытных моделей (ОМ5, ОМ6), описанных выше, не может обеспечить решение, которое было бы оптимальным для применения одновременно в кодере и декодере.
Сущность изобретения
В соответствии с первым аспектом изобретения обеспечен способ интерполяции при кодировании видеоданных, в котором изображение, содержащее пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, интерполируют так, чтобы генерировать значения под-пикселов в дробных горизонтальных и вертикальных местоположениях, причем эти дробные горизонтальные и вертикальные местоположения определяются по формуле 1/2x, где х является положительным целым числом, имеющим максимальное значение N, способ содержит следующие этапы:
a) когда требуются значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, а также в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого, интерполируют такие значения напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) когда требуются значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и вертикальных местоположениях 1/2N-1 целого, интерполируют такие значения напрямую с помощью выбора первой взвешенной суммы значений для под-пикселов, находящихся в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, и второй взвешенной суммы значений для под-пикселов, находящихся в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого, причем эти первая и вторая взвешенные суммы значений вычисляются в соответствии с этапом а); и
c) когда требуется значение для под-пиксела, расположенного в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N целого, интерполируют такое значение взвешенным усреднением значения первого под-пиксела или пиксела, расположенного в горизонтальном местоположении 1/2N-m целого и вертикальном местоположении 1/2N-n целого, и значения второго под-пиксела или пиксела, расположенного в горизонтальном местоположении 1/2N-p целого и вертикальном местоположении 1/2N-q целого, где переменные m, n, p, q являются целыми значениями в диапазоне от 1 до N, так что первый и второй под-пикселы или пикселы расположены по диагонали по отношению к под-пикселу в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N целого.
Предпочтительно первый и второй веса используют при вычислении взвешенного среднего по этапу (с), при этом относительные величины весов обратно пропорциональны близости (по прямолинейной диагонали) первого и второго под-пиксела или пиксела к под-пикселу в горизонтальном местоположении 1/2N целого и в вертикальном местоположении 1/2N целого.
В ситуации, когда первый и второй под-пикселы или пикселы расположены симметрично по отношению к под-пикселу в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N целого (на равном расстоянии от него), первый и второй веса могут иметь равные значения.
Первая взвешенная сумма значений для под-пикселов, находящихся в горизонтальных местоположениях 1/2N-1 и целых вертикальных местоположениях на этапе b), может быть использована, когда требуется под-пиксел в горизонтальном местоположении 1/2N-1 целого и вертикальном местоположении 1/2N целого.
Вторая взвешенная сумма значений для под-пикселов, находящихся в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого на этапе b), может быть использована, когда требуется под-пиксел в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N-1 целого.
В одном варианте осуществления, когда требуются значения для под-пикселов в горизонтальных местоположениях 1/2N целого и целых вертикальных местоположениях, в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N-1 целого, такие значения интерполируют усреднением значений первого пиксела или под-пиксела, расположенного в вертикальном местоположении, соответствующем вертикальному местоположению вычисляемого под-пиксела, и целом горизонтальном местоположении, и второго пиксела или под-пиксела, расположенного в горизонтальном местоположении, соответствующем горизонтальному местоположению вычисляемого под-пиксела, и горизонтальном местоположении 1/2N-1 целого.
Когда требуются значения для под-пикселов в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N целого, а также в горизонтальных местоположениях 1/2N-1 целого и вертикальных местоположениях 1/2N целого, они могут быть интерполированы усреднением значений первого пиксела или под-пиксела, расположенного в горизонтальном местоположении, соответствующем горизонтальному местоположению вычисляемого под-пиксела, и целом вертикальном местоположении, и второго пиксела или под-пиксела, расположенного в вертикальном местоположении, соответствующем вертикальному местоположению вычисляемого под-пиксела, и вертикальном местоположении 1/2N-1 целого.
Значения для под-пикселов в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N целого могут быть интерполированы усреднением значений пиксела, расположенного в целом горизонтальном и целом вертикальном местоположении, и под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и вертикальном местоположении 1/2N-1 целого.
Значения для под-пикселов в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N целого могут быть интерполированы усреднением значений под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и целом вертикальном местоположении, и под-пиксела, расположенного в целом горизонтальном местоположении и вертикальном местоположении 1/2N-1 целого.
Значения для половины под-пикселов в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N целого могут быть интерполированы усреднением первой пары значений под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и целом вертикальном местоположении, и под-пиксела, расположенного в целом горизонтальном и вертикальном местоположении 1/2N-1 целого, и значения другой половины под-пикселов в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N целого могут быть интерполированы усреднением второй пары значений пиксела, расположенного в целом горизонтальном и целом вертикальном местоположении, и под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и вертикальном местоположении 1/2N-1 целого.
Значения для под-пикселов в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N целого попеременно интерполируют для одного такого под-пиксела усреднением первой пары значений под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и целом вертикальном местоположении, и под-пиксела, расположенного в целом горизонтальном местоположении и вертикальном местоположении 1/2N-1 целого, а значения для соседей такого под-пиксела - усреднением второй пары значений пиксела, расположенного в целом горизонтальном и целом вертикальном местоположении, и под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и вертикальном местоположении 1/2N-1 целого.
Под-пикселы в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N целого могут быть попеременно интерполированы в горизонтальном направлении.
Под-пикселы в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N целого могут быть попеременно интерполированы в горизонтальном направлении.
Когда требуются значения для некоторых под-пикселов в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N целого, такие значения могут быть попеременно интерполированы усреднением множества ближайших соседних пикселов.
По меньшей мере один из этапов а) и b), где значения под-пикселов интерполируют напрямую с помощью взвешенных сумм, может включать в себя вычисление промежуточного значения для значений под-пикселов, имеющих больший динамический диапазон, чем заданный динамический диапазон.
Промежуточное значение для под-пиксела, имеющего подпиксельное разрешение 1/2N-1, может быть использовано для вычисления значения под-пиксела, имеющего подпиксельное разрешение 1/2N.
В соответствии со вторым аспектом изобретения обеспечен способ интерполяции при кодировании видеоданных, в котором изображение, содержащее пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, интерполируют так, чтобы генерировать значения под-пикселов в дробных горизонтальных и вертикальных местоположениях, при этом способ содержит следующие этапы:
a) когда требуются значения для под-пикселов в полуцелых горизонтальных и целых вертикальных местоположениях, а также в целых горизонтальных и полуцелых вертикальных местоположениях, интерполируют такие значения напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) когда требуются значения для под-пикселов в полуцелых горизонтальных и полуцелых вертикальных местоположениях, интерполируют такие значения напрямую с помощью взвешенной суммы значений для под-пикселов, находящихся в полуцелых горизонтальных и целых вертикальных местоположениях, вычисленной в соответствии с этапом а); и
с) когда требуются значения для под-пикселов в горизонтальном местоположении четверть целого и вертикальном местоположении четверть целого, интерполируют такие значения усреднением по меньшей мере одной пары из первой пары значений под-пиксела, расположенного в полуцелом горизонтальном и целом вертикальном местоположении, и под-пиксела, расположенного в целом горизонтальном и полуцелом вертикальном местоположении, и второй пары значений пиксела, находящегося в целом горизонтальном и целом вертикальном местоположении, и под-пиксела, находящегося в полуцелом горизонтальном и полуцелом вертикальном местоположении.
В соответствии с третьим аспектом изобретения обеспечен способ интерполяции при кодировании видеоданных, в котором изображение, содержащее пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, интерполируют так, чтобы генерировать значения под-пикселов в дробных горизонтальных и вертикальных местоположениях, причем эти дробные горизонтальные и вертикальные местоположения определяются по формуле 1/2х, где х является положительным целым числом, имеющим максимальное значение N, при этом способ содержит следующие этапы:
a) когда требуются значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях и в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого, интерполируют такие значения напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) когда требуется значение для под-пиксела в горизонтальном местоположении под-пиксела и вертикальном местоположении под-пиксела, интерполируют такое значение напрямую с помощью выбора первой взвешенной суммы значений для под-пикселов, расположенных в вертикальном местоположении, соответствующем вертикальному местоположению вычисляемого под-пиксела, и второй взвешенной суммы значений под-пикселов, расположенных в горизонтальном местоположении, соответствующем горизонтальному местоположению вычисляемого под-пиксела.
Под-пикселы, используемые в первой взвешенной сумме, могут быть под-пикселами, расположенными в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, и первая взвешенная сумма может быть использована для интерполяции значения под-пиксела в горизонтальном местоположении 1/2N-1 целого и вертикальном местоположении 1/2N целого.
Под-пикселы, используемые во второй взвешенной сумме, могут быть под-пикселами, расположенными в целых горизонтальных и вертикальных местоположениях 1/2N-1 целого, и вторая взвешенная сумма может быть использована для интерполяции значения под-пиксела в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N-1 целого.
Когда требуются значения под-пикселов в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N целого, они могут быть интерполированы усреднением по меньшей мере одной пары из первой пары значений под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и целом вертикальном местоположении, и под-пиксела, расположенного в целом горизонтальном местоположении и вертикальном местоположении 1/2N-1 целого, и второй пары значений пиксела, расположенного в целом горизонтальном и целом вертикальном местоположении, и под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и вертикальном местоположении 1/2N-1 целого.
В приведенных аспектах N может быть равно целому числу, выбранному из списка, состоящего из значений 2, 3 и 4.
Под-пикселы в горизонтальном местоположении четверть целого должны интерпретироваться как под-пикселы, имеющие в качестве ближайшего соседа слева пиксел в целом горизонтальном местоположении, а в качестве ближайшего соседа справа под-пиксел в полуцелом горизонтальном местоположении, равно как под-пикселы, имеющие в качестве ближайшего соседа слева под-пиксел в полуцелом горизонтальном местоположении, а в качестве ближайшего соседа справа пиксел в целом горизонтальном местоположении. Соответственно под-пикселы в вертикальном местоположении четверть целого должны интерпретироваться как под-пикселы, имеющие в качестве ближайшего соседа сверху пиксел в целом вертикальном местоположении, а в качестве ближайшего соседа снизу под-пиксел в полуцелом вертикальном местоположении, равно как под-пикселы, имеющие в качестве ближайшего соседа сверху под-пиксел в полуцелом вертикальном местоположении, а в качестве ближайшего соседа снизу пиксел в целом вертикальном местоположении.
Термин "динамический диапазон" относится к диапазону значений, которые могут принимать значения под-пикселов и взвешенных сумм.
Предпочтительно изменение динамического диапазона посредством его расширения или уменьшения означает изменение количества битов, которые используются для представления динамического диапазона.
В варианте осуществления изобретения способ применен к изображению, которое подразделено на некоторое количество блоков изображения. Предпочтительно каждый блок изображения содержит четыре угла, каждый из которых определяется пикселом, расположенным в целом горизонтальном и целом вертикальном местоположении. Предпочтительно способ применен к каждому блоку изображения, когда блок становится доступным для интерполяции значений под-пикселов. Альтернативно интерполяция значений под-пикселов в соответствии со способом по изобретению выполняется тогда, когда все блоки изображения становятся доступными для интерполяции значений под-пикселов.
Предпочтительно способ используется при кодировании видеоданных. Предпочтительно способ используется при декодировании видеоданных.
В одном варианте осуществления изобретения, при использовании для кодирования способ реализуется как предварительная интерполяция, в которой значения всех под-пикселов в полуцелых местоположениях и значения всех под-пикселов в местоположениях четверть целого вычисляются и сохраняются до момента последующего использования при определении кадра предсказания во время кодирования с предсказанием движения. В альтернативных вариантах осуществления способ реализуется как комбинация предварительной интерполяции и интерполяции "по запросу". В этом случае определенная пропорция или категория значений под-пикселов вычисляется и хранится до начала использования при определении кадра предсказания, а некоторые другие значения под-пикселов вычисляются только при необходимости во время кодирования с предсказанием движения.
Предпочтительно, если способ используется для декодирования, под-пикселы интерполируют только тогда, когда их необходимость обозначена вектором движения.
В соответствии с четвертым аспектом изобретения обеспечено устройство кодирования видеоданных для кодирования изображения, содержащего пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, устройство кодирования видеоданных содержит интерполятор, приспособленный генерировать значения для под-пикселов в дробных горизонтальных и вертикальных местоположениях, причем эти дробные горизонтальные и вертикальные местоположения определяются по формуле 1/2х, где х является положительным целым числом, имеющим максимальное значение N, а интерполятор приспособлен выполнять следующие операции:
a) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, а также в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и вертикальных местоположениях 1/2N-1 целого напрямую с помощью выбора первой взвешенной суммы значений для под-пикселов, находящихся в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, и второй взвешенной суммы значений для под-пикселов, находящихся в целых горизонтальных и вертикальных местоположениях 1/2N-1 целого, причем эти первая и вторая взвешенные суммы вычисляются в соответствии с операцией а); и
c) интерполировать значение для под-пиксела в горизонтальном местоположении 1/2 целого и вертикальном местоположении 1/2 целого взвешенным усреднением значения первого под-пиксела или пиксела, находящегося в горизонтальном местоположении 1/2N-m целого и вертикальном местоположении 1/2N-n целого, и значения второго под-пиксела или пиксела, находящегося в горизонтальном местоположении 1/2N-p целого и вертикальном местоположении 1/2N-q целого, где переменные m, n, p, q являются целыми значениями в диапазоне от 1 до N, так что первый и второй под-пикселы или пикселы расположены по диагонали по отношению к под-пикселу в горизонтальном местоположении 1/2N и вертикальном местоположении 1/2N целого.
Устройство кодирования видеоданных может содержать видеокодер. Оно может содержать видеодекодер. Оно может представлять собой кодек, включающий в себя одновременно видеокодер и видеодекодер.
В соответствии с пятым аспектом изобретения обеспечен терминал связи, содержащий устройство кодирования видеоданных для кодирования изображения, содержащего пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, при этом устройство кодирования видеоданных содержит интерполятор, приспособленный генерировать значения для под-пикселов в дробных горизонтальных и вертикальных местоположениях, причем эти дробные горизонтальные и вертикальные местоположения определяются по формуле 1/2х, где х является положительным целым числом, имеющим максимальное значение N, а интерполятор приспособлен выполнять следующие операции:
а) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях и в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и вертикальных местоположениях 1/2N-1 целого напрямую с помощью выбора первой взвешенной суммы значений для под-пикселов, находящихся в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, и второй взвешенной суммы значений для под-пикселов, находящихся в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого, причем эти первая и вторая взвешенные суммы вычисляются в соответствии с операцией а); и
c) интерполировать значение для под-пиксела в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N целого взвешенным усреднением значения первого под-пиксела или пиксела, расположенного в горизонтальном местоположении 1/2N-m целого и вертикальном местоположении 1/2N-n целого, и значения второго под-пиксела или пиксела, расположенного в горизонтальном местоположении 1/2N-p целого и вертикальном местоположении 1/2N-q целого, где переменные m, n, р, q являются целыми значениями в диапазоне от 1 до N, так что первый и второй под-пикселы или пикселы расположены по диагонали по отношению к под-пикселу в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N целого.
Терминал связи может содержать видеокодер. Он может содержать видеодекодер. Предпочтительно он содержит видео-кодек, включающий в себя одновременно видеокодер и видеодекодер.
Предпочтительно, терминал связи содержит пользовательский интерфейс, процессор и по меньшей мере один блок из передающего блока и приемного блока и устройство кодирования видеоданных в соответствии с по меньшей мере одним из третьего или четвертого аспектов изобретения. Предпочтительно процессор управляет работой передающего блока и/или приемного блока и устройства кодирования видеоданных.
В соответствии с шестым аспектом изобретения обеспечена телекоммуникационная система, содержащая терминал связи и сеть, причем телекоммуникационная сеть и терминал связи соединены линией связи, по которой могут передаваться кодированные видеоданные, терминал связи содержит устройство кодирования видеоданных для кодирования изображения, содержащего пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, устройство кодирования видеоданных содержит интерполятор, приспособленный генерировать значения для под-пикселов в дробных горизонтальных и вертикальных местоположениях, причем эти дробные горизонтальные и вертикальные местоположения определяются по формуле 1/2х, где х является положительным целым числом, имеющим максимальное значение N, а интерполятор приспособлен выполнять следующие операции:
а) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях и в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и вертикальных местоположениях 1/2N-1 целого напрямую с помощью выбора первой взвешенной суммы значений для под-пикселов, находящихся в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, и второй взвешенной суммы значений для под-пикселов, находящихся в целых горизонтальных и вертикальных местоположениях 1/2N-1 целого, причем эти первая и вторая взвешенные суммы вычисляются в соответствии с операцией а); и
c) интерполировать значение для под-пиксела в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N целого взвешенным усреднением значения первого под-пиксела или пиксела, расположенного в горизонтальном местоположении 1/2N-m целого и вертикальном местоположении 1/2N-n целого, и значения второго под-пиксела или пиксела, расположенного в горизонтальном местоположении 1/2N-p целого и вертикальном местоположении 1/2N-q целого, где переменные m, n, р, q являются целыми значениями в диапазоне от 1 до N, так что первый и второй под-пикселы или пикселы расположены по диагонали по отношению к под-пикселу в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N целого.
Предпочтительно телекоммуникационная система является системой мобильной связи, содержащей мобильный терминал связи и беспроводную сеть, причем соединение между мобильным терминалом связи и беспроводной сетью формируется по радиолинии. Предпочтительно сеть дает возможность терминалу связи осуществлять связь с другими терминалами связи, подключенными к сети, по линиям связи между другими терминалами связи и сетью.
В соответствии с седьмым аспектом изобретения обеспечена телекоммуникационная система, содержащая терминал связи и сеть, причем телекоммуникационная сеть и терминал связи соединены линией связи, по которой могут передаваться кодированные видеоданные, телекоммуникационная сеть содержит устройство кодирования видеоданных для кодирования изображения, содержащего пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, устройство кодирования видеоданных содержит интерполятор, приспособленный генерировать значения для под-пикселов в дробных горизонтальных и вертикальных местоположениях, причем эти дробные горизонтальные и вертикальные местоположения определяются по формуле 1/2x, где х является положительным целым числом, имеющим максимальное значение N, а интерполятор приспособлен выполнять следующие операции:
а) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, а также в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и вертикальных местоположениях 1/2N-1 целого напрямую с помощью выбора первой взвешенной суммы значений для под-пикселов, находящихся в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, и второй взвешенной суммы значений для под-пикселов, находящихся в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого, причем эти первая и вторая взвешенные суммы вычисляются в соответствии с операцией а); и
c) интерполировать значение для под-пиксела в горизонтальном местоположении 1/2N целого и вертикальном местоположении взвешенным 1/2N целого взвешенным усреднением значения первого под-пиксела или пиксела, расположенного в горизонтальном местоположении 1/2N-m целого и вертикальном местоположении 1/2N-n целого, и значения второго под-пиксела или пиксела, расположенного в горизонтальном местоположении 1/2N-p целого и вертикальном местоположении 1/2N-q целого, где переменные m, n, p, q являются целыми значениями в диапазоне от 1 до N, так что первый и второй под-пикселы или пикселы расположены по диагонали по отношению к под-пикселу в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N целого.
В соответствии с восьмым аспектом изобретения обеспечено устройство кодирования видеоданных для кодирования изображения, содержащего пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, при этом пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, устройство кодирования содержит интерполятор, приспособленный генерировать значения для под-пикселов в дробных горизонтальных и вертикальных местоположениях, при этом разрешение под-пикселов определяется положительным целым числом N, а интерполятор приспособлен выполнять следующие операции:
a) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, а также в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) интерполировать значение для под-пиксела в горизонтальном местоположении под-пиксела и вертикальном местоположении под-пиксела напрямую с помощью выбора первой взвешенной суммы значений для под-пикселов, расположенных в вертикальном местоположении, соответствующем вертикальному местоположению вычисляемого под-пиксела, и второй взвешенной суммы значений для под-пикселов, расположенных в горизонтальном местоположении, соответствующем горизонтальному местоположению вычисляемого под-пиксела.
Интерполятор может быть дополнительно приспособлен формировать первую взвешенную сумму с помощью значений под-пикселов, находящихся в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, и использовать первую взвешенную сумму для интерполяции значения под-пиксела в горизонтальном местоположении 1/2N-1 целого и вертикальном местоположении 1/2N целого.
Интерполятор может быть дополнительно приспособлен формировать вторую взвешенную сумму с помощью значений под-пикселов, находящихся в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого, и использовать вторую взвешенную сумму для интерполяции значения под-пиксела в горизонтальном местоположении 1/2N целого и вертикальном местоположении 1/2N-1 целого.
Интерполятор может быть дополнительно приспособлен интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N целого и вертикальных местоположениях 1/2N целого усреднением по меньшей мере одной пары из первой пары значений под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и целом вертикальном местоположении, и под-пиксела, расположенного в целом горизонтальном и вертикальном местоположении 1/2N-1 целого, и второй пары значений пиксела, расположенного в целом горизонтальном и целом вертикальном местоположении, и под-пиксела, расположенного в горизонтальном местоположении 1/2N-1 целого и вертикальном местоположении 1/2N-1 целого.
В соответствии с девятым аспектом изобретения обеспечен терминал связи, содержащий устройство кодирования видеоданных для кодирования изображения, содержащего пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, устройство кодирования содержит интерполятор, приспособленный генерировать значения для под-пикселов в дробных горизонтальных и вертикальных местоположениях, при этом разрешение под-пикселов определяется положительным целым числом N, а интерполятор приспособлен выполнять следующие операции:
a) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях и в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) интерполировать значение для под-пиксела в горизонтальном местоположении под-пиксела и вертикальном местоположении под-пиксела напрямую с помощью выбора первой взвешенной суммы значений для под-пикселов, расположенных в вертикальном местоположении, соответствующем вертикальному местоположению вычисляемого под-пиксела, и второй взвешенной суммы значений для под-пикселов, расположенных в горизонтальном местоположении, соответствующем горизонтальному местоположению вычисляемого под-пиксела.
В соответствии с десятым аспектом изобретения обеспечена телекоммуникационная система, содержащая терминал связи и сеть, причем телекоммуникационная сеть и терминал связи соединены линией связи, по которой могут передаваться кодированные видеоданные, терминал связи содержит устройство кодирования видеоданных для кодирования изображения, содержащего пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, кодер содержит интерполятор, приспособленный генерировать значения для под-пикселов в дробных горизонтальных и вертикальных местоположениях, при этом разрешение под-пикселов определяется положительным целым числом N, а интерполятор приспособлен выполнять следующие операции:
a) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях и в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) интерполировать значение для под-пиксела в горизонтальном местоположении под-пиксела и вертикальном местоположении под-пиксела напрямую, с помощью выбора первой взвешенной суммы значений для под-пикселов, расположенных в вертикальном местоположении, соответствующем вертикальному положению вычисляемого под-пиксела, и второй взвешенной суммы значений для под-пикселов, расположенных в горизонтальном местоположении, соответствующем горизонтальному местоположению вычисляемого под-пиксела.
В соответствии с одиннадцатым аспектом изобретения обеспечена телекоммуникационная система, содержащая терминал связи и сеть, причем телекоммуникационная сеть и терминал связи соединены линией связи, по которой могут передаваться кодированные видеоданные, сеть содержит устройство кодирования видеоданных для кодирования изображения, содержащего пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, устройство кодирования содержит интерполятор, приспособленный генерировать значения для под-пикселов в дробных горизонтальных и вертикальных местоположениях, при этом разрешение под-пикселов определяется положительным целым числом N, а интерполятор приспособлен выполнять следующие операции:
a) интерполировать значения для под-пикселов в горизонтальных местоположениях 1/2N-1 целого и целых вертикальных местоположениях, а также в целых горизонтальных местоположениях и вертикальных местоположениях 1/2N-1 целого напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях;
b) интерполировать значение для под-пиксела в горизонтальном местоположении под-пиксела и вертикальном местоположении под-пиксела напрямую с помощью выбора первой взвешенной суммы значений для под-пикселов, расположенных в вертикальном местоположении, соответствующем вертикальному местоположению вычисляемого под-пиксела, и второй взвешенной суммы значений для под-пикселов, расположенных в горизонтальном местоположении, соответствующем горизонтальному местоположению вычисляемого под-пиксела.
Перечень фигур чертежей
Вариант осуществления изобретения будет теперь описан только в качестве примера со ссылкой на приложенные чертежи, на которых:
фиг.1 показывает видеокодер в соответствии с предшествующим уровнем техники;
фиг.2 показывает видеодекодер в соответствии с предшествующим уровнем техники;
фиг.3 показывает типы кадров, используемых для кодирования видеоданных;
фиг.4а, 4b и 4 с показывают согласования блоков;
фиг.5 показывает процесс оценки движения в под-пиксельном разрешении;
фиг.6 показывает оконечное устройство, содержащее оборудование кодирования и декодирования видеоданных, в котором может быть реализован способ по изобретению;
фиг.7 показывает видеокодер в соответствии с вариантом осуществления настоящего изобретения;
фиг.8 показывает видеодекодер в соответствии с вариантом осуществления настоящего изобретения;
фиг.9 и 10 не использованы в данном описании и любые такие чертежи не должны приниматься во внимание;
фиг.11 показывает условную схему сети мобильной связи в соответствии с вариантом осуществления настоящего изобретения;
фиг.12а показывает обозначения для описания местоположений пикселов и под-пикселов, характерных для ОМ5;
фиг.12b показывает интерполяцию под-пикселов разрешения 1/2;
фиг.12с показывает интерполяцию под-пикселов разрешения 1/2;
фиг.13а показывает обозначения для описания местоположений пикселов и под-пикселов, характерных для ОМ6;
фиг.13b показывает интерполяцию под-пикселов разрешения 1/2;
фиг.13 с показывает интерполяцию под-пикселов разрешения 1/2;
фиг.14 показывает обозначения для описания местоположений пикселов и под-пикселов, характерных для изобретения;
фиг.14b показывает интерполяцию под-пикселов разрешения 1/2 в соответствии с изобретением;
фиг.14 с показывает интерполяцию под-пикселов разрешения 1/2 в соответствии с изобретением;
фиг.15 показывает возможные варианты выбора диагональной интерполяции под-пикселов;
фиг.16 показывает значения под-пикселов разрешения 1/2, требуемых для вычисления других значений под-пикселов разрешения 1/2;
фиг.17а показывает значения под-пикселов разрешения 1/2, которые должны быть вычислены для интерполяции значений для под-пикселов разрешения 1/4 в блоке изображения с помощью способа интерполяции по ОМ5;
фиг.17b показывает значения под-пикселов разрешения 1/2, которые должны быть вычислены для интерполяции значений для под-пикселов разрешения 1/4 в блоке изображения с помощью способа интерполяции в соответствии с изобретением;
фиг.18а показывает количества под-пикселов разрешения 1/2, которые должны быть вычислены, чтобы получить значения для под-пикселов разрешения 1/4 в блоке изображения с помощью способа интерполяции значений под-пикселов в соответствии с ОМ5;
фиг.18b показывает количества под-пикселов разрешения 1/2, которые должны быть вычислены, чтобы получить значения для под-пикселов разрешения 1/4 в блоке изображения с помощью способа интерполяции значений под-пикселов в соответствии с изобретением;
фиг.19 показывает схему нумерации для каждого из 15 местоположений под-пиксела;
фиг.20 показывает номенклатуру, используемую для описания пикселов, под-пикселов разрешения 1/2, под-пикселов разрешения 1/4 и под-пикселов разрешения 1/8;
фиг.21а показывает диагональное направление, используемое для интерполяции каждого под-пиксела разрешения 1/8 в варианте осуществления изобретения;
фиг.21b показывает диагональное направление, используемое для интерполяции каждого под-пиксела разрешения 1/8 в другом варианте осуществления изобретения;
фиг.22 показывает номенклатуру, используемую для описания под-пикселов разрешения 1/8 внутри изображения.
Подробное описание изобретения
Выше были описаны фиг.1-5, 12а, 12b, 12 с, 13а, 13b, 13 с.
Фиг.6 представляет оконечное устройство, содержащее оборудование для кодирования и декодирования видеоданных, которое может быть приспособлено для работы в соответствии с настоящим изобретением. Точнее чертеж показывает мультимедийный терминал 60, реализованный в соответствии с рекомендациями Н.324 ITU-T. Этот терминал может рассматриваться как мультимедийное приемопередающее устройство. Оно включает в себя элементы, которые захватывают, кодируют и мультиплексируют потоки мультимедийных данных для передачи по сети связи, равно как элементы, которые принимают, демультиплексируют, декодируют и отображают принятый мультимедийный контент. Рекомендации Н.324 ITU-T определяют общее функционирование терминала и ссылаются на другие рекомендации, которые регламентируют функционирование его различных составных частей. Этот тип мультимедийного терминала может быть использован в приложениях реального масштаба времени, таких как диалоговая видеотелефония, или в приложениях, работающих не в реальном масштабе времени, таких как получение/отправка видеоклипов, например, с сервера мультимедийного контента в Интернете.
В контексте настоящего изобретения следует понимать, что терминал Н.324, показанный на фиг.6, является только одним из множества альтернативных реализаций мультимедийного терминала, пригодных для применения в способе по настоящему изобретению. Следует также отметить, что существует несколько альтернатив, относящихся к расположению и реализации оборудования терминала.
Как показано на фиг.6, мультимедийный терминал может быть расположен в оборудовании связи, соединенном с проводной телефонной сетью, такой как аналоговая телефонная коммутируемая сеть общего пользования (ТСОП, PSTN). В этом случае мультимедийный терминал оборудуется модемом 71, совместимым с рекомендациями V.8, V.34 и выборочно V.8bis ITU-T. Альтернативно мультимедийный терминал может быть соединен с внешним модемом. Модем дает возможность преобразовывать мультиплексированные цифровые данные и сигналы управления, выработанные мультимедийным терминалом, в аналоговую форму, пригодную для передачи по ТСОП. Он далее дает возможность мультимедийному терминалу принимать данные и сигналы управления в аналоговой форме из ТСОП и преобразовывать их в поток цифровых данных, который может быть должным образом демультиплексирован и обработан в терминале.
Мультимедийный терминал Н.324 также может быть реализован таким образом, что его можно напрямую соединить с цифровой проводной сетью, такой как ISDN (цифровая сеть с комплексными услугами). В этом случае модем 71 заменяется сетевым пользовательским интерфейсом ISDN. На фиг.6 этот сетевой пользовательский интерфейс ISDN представлен альтернативным блоком 72.
Мультимедийные терминалы Н.324 могут быть также приспособлены для использования в применениях мобильной связи. При использовании беспроводной линии связи модем 71 может быть заменен любым подходящим беспроводным интерфейсом, представленным альтернативным блоком 73 на фиг.6. Например, мультимедийный терминал Н.324 может включать в себя радиоприемопередатчик, обеспечивающий соединение с существующей мобильной телефонной сетью GSM второго поколения, или с предлагаемой универсальной системой мобильной связи (UMTS) третьего поколения.
Следует отметить, что предпочтительно оснастить мультимедийные терминалы, спроектированные для двунаправленной связи, то есть для передачи и приема видеоданных, как видеокодером, так и видеодекодером, реализованными в соответствии с настоящим изобретением. Такая пара из кодера и декодера часто реализуется в качестве единого объединенного функционального блока, который именуется "кодек".
Поскольку устройство кодирования видеоданных в соответствии с настоящим изобретением выполняет кодирование видеоданных с компенсацией движения с под-пиксельным разрешением с помощью специальной схемы интерполяции и конкретного сочетания предварительной интерполяции и интерполяции "по-запросу" для значения под-пиксела, в общем случае необходимо, чтобы видеодекодер в принимающем терминале был реализован таким образом, чтобы быть совместимым с кодером передающего терминала, который формирует поток цифровых данных. Невозможность обеспечения такой совместимости может иметь неблагоприятное воздействие на качество компенсации движения и точность восстановленных видеокадров.
Обычный мультимедийный терминал Н.324 будет теперь описан более подробно со ссылкой на фиг.6.
Мультимедийный терминал 60 включает в себя множество элементов, которые объединяются термином "оборудование терминала". Он включает в себя видео, аудио и телематические устройства, в общем обозначенные ссылочными номерами 61, 62 и 63 соответственно. Видеооборудование 61 может включать в себя, например, видеокамеру для захвата видеоизображений, монитор для отображения принятого видеоконтента и выборочно оборудование обработки видеоданных. Аудиооборудование 62 обычно включает в себя микрофон, например, для захвата речевых сообщений и громкоговоритель для воспроизведения принятого аудиоконтента. Аудиооборудование также может включать в себя дополнительные блоки обработки аудиоданных. Телематическое оборудование 63 может включать в себя терминал данных, клавиатуру, электронную "белую доску" (для использования пера) или приемопередатчик неподвижных изображений, такой как факсимильный блок.
Видеооборудование 61 соединено с видеокодеком 65. Видеокодек 65 содержит видеокодер и соответствующий видеодекодер, реализованные в соответствии с изобретением. Такие кодер и декодер будут описаны ниже. Видеокодек 65 отвечает за кодирование захваченных видеоданных в соответствующую форму для последующей передачи по линии связи и за декодирование сжатого видеоконтента, принятого из сети связи. В примере, показанном на фиг.6, видеокодек 65 реализован в соответствии с рекомендациями Н.263 ITU-T, с соответствующими изменениями, чтобы реализовать способ интерполяции значений под-пикселов в соответствии с изобретением как в кодере, так и в декодере видеокодека.
Аналогично аудиооборудование терминала соединено с аудиокодеком, обозначенным на фиг.6 ссылочным номером 66. Как и видеокодек, аудиокодек содержит пару кодер/декодер. Он преобразует аудиоданные, захваченные аудиооборудованием терминала, в форму, пригодную для передачи по линии связи, и преобразует закодированные аудиоданные, принятые из сети, обратно в форму, пригодную для воспроизведения, например, через громкоговоритель терминала. Выходные данные аудиокодека проходят через блок 67 задержки. Это компенсирует задержки, привнесенные процессом кодирования видеоданных, и таким образом гарантирует синхронизацию аудио- и видеоконтента.
Блок 64 управления системой из состава мультимедийного терминала управляет передачей сигналов по тракту от оконечного оборудования в сеть с помощью подходящего протокола управления (блок 68 передачи сигналов), чтобы установить общий режим работы между передающим и принимающим терминалами. Блок 68 передачи сигналов обменивается информацией о функциональных возможностях кодирования и декодирования передающего и принимающего терминалов и может быть использован для обеспечения различных режимов кодирования видеокодера. Блок 64 управления системой также управляет использованием шифрования данных. Информация о типе шифрования, подлежащем использованию при передаче данных, передается из блока 69 шифрования на блок 70 мультиплексирования/демультиплексирования.
Во время передачи данных из мультимедийного терминала блок 70 мультиплексирования/демультиплексирования объединяет закодированные и синхронизированные видео- и аудиопотоки со входным сигналом данных от телематического оборудования 63 и возможными данными управления, чтобы сформировать единый поток битов. Информация относительно типа шифрования данных (если оно применено) для применения к потоку битов, выдаваемая блоком 69 шифрования, используется для выбора режима шифрования. Соответственно, когда принимается мультиплексированный и возможно зашифрованный мультимедийный поток битов, блок 70 мультиплексирования/демультиплексирования отвечает за расшифровку потока битов, разделяя его на составные мультимедийные составляющие и передавая эти составляющие в соответствующий(-ие) кодек(-и) и/или оборудование терминала для декодирования и воспроизведения.
Следует отметить, что функциональные элементы мультимедийного терминала - видеокодер, видеодекодер и видеокодек - в соответствии с изобретением могут быть реализованы как программное обеспечение или специальное аппаратное обеспечение, или как их сочетание. Способы кодирования и декодирования видеоданных в соответствии с изобретением особенно пригодны для реализации в виде компьютерной программы, содержащей машиночитаемые команды для выполнения функциональных этапов изобретения. Как таковые кодер и декодер в соответствии с изобретением могут быть реализованы в виде программного кода, хранящегося на носителе данных и выполняемого в компьютере, таком как персональный настольный компьютер, чтобы обеспечить этот компьютер функциональностью кодирования и/или декодирования видеоданных.
Если мультимедийным терминалом 60 является мобильный терминал, то есть если он оборудован радиоприемопередатчиком 73, специалисту в данной области техники следует понимать, что он также может содержать дополнительные элементы. В одном варианте осуществления он содержит пользовательский интерфейс с дисплеем и клавиатурой, что позволяет пользователю работать с мобильным терминалом 60 вместе с необходимыми функциональными блоками, включающими в себя центральный процессор, такой как микропроцессор, который управляет блоками, ответственными за различные функции мультимедийного терминала, оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM) и цифровую камеру. Команды работы микропроцессора, то есть программный код, соответствующий основным функциям мультимедийного терминала 60, хранятся в постоянном запоминающем устройстве (ПЗУ) и могут выполняться микропроцессором, когда требуется, например, под управлением пользователя. В соответствии с программным кодом микропроцессор использует радиоприемопередатчик 73 для формирования соединения с сетью мобильной связи, давая возможность мультимедийному терминалу 60 передавать информацию в сеть мобильной связи и принимать информацию из нее по радиотракту.
Микропроцессор отслеживает состояние пользовательского интерфейса и управляет цифровой камерой. В ответ на команду пользователя микропроцессор предписывает камере записать цифровые изображения в ОЗУ. Когда изображение захвачено или альтернативно в процессе захвата микропроцессор сегментирует изображение на сегменты изображения (например, макроблоки), и использует кодер для выполнения кодирования с компенсацией движения для этих сегментов, чтобы сгенерировать сжатую последовательность изображений, как объяснено в предшествующем описании. Пользователь может выдать команду мультимедийному терминалу 60 на отображение захваченных изображений на дисплее или отправить сжатую последовательность изображений с помощью радиоприемопередатчика 73 на другой мультимедийный терминал, видеотелефон, соединенный с проводной сетью (ТСОП), или некоторое иное устройство связи. В предпочтительном варианте осуществления передача данных изображения начинается сразу же после того, как закодирован первый сегмент, так что получатель может начинать соответствующий процесс декодирования с минимальной задержкой.
Фиг.11 является условной схемой сети мобильной связи в соответствии с вариантом осуществления настоящего изобретения. Мультимедийные терминалы (МТ, MS) находятся в соединении с базовыми станциями (БС, BTS) посредством радиолинии. Базовые станции БС далее соединены через так называемый интерфейс Abis с контроллером базовых станций (КБС, BSC), который контролирует и управляет несколькими базовыми станциями.
Общность, образованная несколькими базовыми станциями БС (обычно несколькими десятками базовых станций) и одним контроллером КБС базовых станций, управляющим базовыми станциями, называется подсистемой базовых станций (ПБС, BSS). В частности, контроллер КБС базовых станций управляет каналами радиосвязи и эстафетными передачами обслуживания. Контроллер КБС базовых станций также соединен через так называемый интерфейс А с центром коммутации мобильной связи (ЦКМС,МЗС), который координирует формирование соединений с мобильными станциями и от мобильных станций. Дальнейшее соединение идет через центр ЦКМС коммутации мобильной связи вовне из сети мобильной связи. Вне сети мобильной связи может (могут) находиться другая сеть (другие сети), соединенная с сетью мобильной связи через шлюз(-ы), например Интернет или телефонная коммутируемая сеть общего пользования (ТСОП). В такой внешней сети или внутри сети связи могут быть расположены станции кодирования и декодирования видеоданных, такие как персональные компьютеры ПК. В варианте осуществления изобретения сеть мобильной связи содержит видеосервер для предоставления видеоданных на мобильные терминалы, подписавшиеся на такую услугу. Видеоданные сжаты с помощью способа сжатия видеоданных с компенсацией движения, как он описан выше. Видеосервер может функционировать как шлюз для интерактивного источника видеоданных или может содержать записанные ранее видеоклипы. Обычные применения видеотелефонии могут включать в себя, например, две мобильные станции или одну мобильную станцию МС и видеотелефон, соединенный с ТСОП, ПК, соединенный с Интернетом, или Н.261-совместимый терминал, соединенный либо с Интернетом либо с ТСОП.
Фиг.7 показывает видеокодер 700 в соответствии с вариантом осуществления изобретения. Фиг.8 показывает видеодекодер 800 в соответствии с вариантом осуществления изобретения.
Кодер 700 содержит вход 701 для приема видеоданных от камеры или другого источника видеоданных (не показан). Он далее содержит блок 705 дискретного косинусного преобразования (ДКП, DCT), квантователь 706, обратный квантователь 709, блок 710 обратного дискретного косинусного преобразования (ОДКП), объединители 712 и 716, блок 730 предварительной интерполяции под-пикселов, кадровую память 740 и блок 750 интерполяции под-пикселов по запросу, выполненный совместно с блоком 760 оценки движения. Кодер также содержит блок 770 кодирования поля движения и блок 780 предсказания с компенсацией движения. Переключатели 702 и 714 управляются совместно средством 720 управления для переключения кодера между INTRA-режимом кодирования видеоданных и INTER-режимом кодирования видеоданных. Кодер 700 также содержит блок 790 мультиплексирования/демультиплексирования для формирования единого потока битов из различных типов информации, выработанной кодером 700, для последующей передачи на удаленный принимающий терминал, или, например, для хранения на носителе данных, таком как жесткий диск компьютера (не показан).
Следует отметить, что наличие и реализация блока 730 предварительной интерполяции под-пикселов и блока 750 интерполяции под-пикселов по запросу в архитектуре кодера зависит от того, каким образом применяется способ интерполяции под-пикселов в соответствии с изобретением. В вариантах осуществления изобретения, в которых предварительная интерполяция значения под-пиксела не производится, кодер 700 не содержит блока 730 предварительной интерполяции под-пикселов. В других вариантах осуществления изобретения выполняется только предварительная интерполяция под-пикселов и таким образом кодер не включает в себя блок 750 интерполяции под-пикселов по запросу. В вариантах осуществления, в которых выполняются как предварительная интерполяция значений под-пикселов, так и интерполяция значений под-пикселов по запросу, в кодере 700 имеются и блок 730 и блок 750.
Теперь будет подробно описана работа кодера 700 в соответствии с изобретением. В описании предполагается, что каждый кадр несжатых видеоданных, принятых от источника видеоданных на входе 701, принимается и обрабатывается по принципу "макроблок за макроблоком", предпочтительно в порядке растровой развертки. Далее предполагается, что когда начинается кодирование новой видеопоследовательности, первый кадр последовательности кодируется в INTRA-режиме. Затем кодер программируется, чтобы закодировать каждый кадр в INTER-формате, если не выполнено одно из следующих условий: 1) оценено, что текущий кодируемый кадр настолько отличается от опорного кадра, используемого в предсказании, что вырабатывается чрезмерная ошибка предсказания; 2) заранее заданный интервал повторения кадра INTRA истек; 3) принят сигнал обратной связи от принимающего терминала, показывающий запрос на кадр, подлежащий кодированию в INTRA-формате.
Возникновение условия 1) обнаруживается посредством мониторинга выходных данных объединителя 716. Объединитель 716 формирует разность между текущим макроблоком кодируемого кадра и его предсказанием, выработанным в блоке 780 предсказания с компенсацией движения. Если мера этой разности (например, сумма абсолютных разностей значений пиксела) превышает заранее заданный порог, то объединитель 716 информирует средство 720 управления по линии 717 управления, и средство 720 управления манипулирует переключателями 702 и 714 так, чтобы переключить кодер 700 в INTRA-режим кодирования. Возникновение условия 2) отслеживается посредством таймера или счетчика кадров, реализованного в средстве 720 управления таким образом, что если таймер истекает или счетчик кадров достигает заранее заданного количества кадров, средство 720 управления манипулирует переключателями 702 и 714 так, чтобы переключить кодер 700 в INTRA-режим кодирования. Условие 3) срабатывает, если средство 720 управления принимает сигнал обратной связи, например, от принимающего терминала по линии 718 управления, показывающий, что принимающему терминалу необходимо обновление INTRA кадра. Такое условие может возникнуть, к примеру, если ранее переданный кадр был сильно искажен помехами во время его передачи, что делает невозможным его декодирование в приемнике. В этой ситуации приемник выдаст запрос на кодирование следующего кадра в INTRA формате, тем самым повторно инициализируя кодирующую последовательность.
Далее предполагается, что кодер и декодер реализованы таким образом, чтобы позволить определить векторы движения с пространственным разрешением до разрешения в четверть пиксела. Как будет видно дальше, возможны и более точные уровни разрешения.
Теперь будет описана работа кодера 700 в INTRA-режиме кодирования. В INTRA-режиме средство 720 управления манипулирует переключателями 702, чтобы принять входной видеосигнал с входной линии 719. Входной видеосигнал принимается макроблок за макроблоком со входа 701 по входной линии 719, и каждый макроблок пикселов исходного изображения преобразуется в коэффициенты ДКП блоком 705 ДКП. Коэффициенты ДКП затем подаются в квантователь 706, где они квантуются с использованием параметра QP квантования. Выбор параметра QP квантования управляется средством 720 управления по линии 722 управления. Каждый ДКП-преобразованный и квантованный макроблок, который составляет информацию 723 INTRA-кодированного изображения кадра, проходит из квантователя 706 в блок 790 мультиплексирования/демультиплексирования. Блок 790 мультиплексирования/демультиплексирования объединяет информацию INTRA-кодированного изображения с возможной информацией управления (например, данными заголовка, информацией о параметре квантования, данными исправления ошибок и т.п.) для формирования единого потока битов информации 725 кодированного изображения. Как известно специалистам в данной области техники, кодирование с переменной длиной (КПД, VLC) используется для сокращения избыточности сжатого видеопотока битов.
Локально декодированное изображение формируется в кодере 700 путем пропускания выходных данных квантователя 706 через обратный квантователь 709 и применения обратного ДКП в блоке 710 обратного ДКП к обратноквантованным данным. Полученные данные затем подаются на объединитель 712. В INTRA-режиме переключатель 714 установлен так, что входной сигнал на объединитель 712 через переключатель 714 устанавливается на нуль. Таким образом, работа, выполняемая объединителем 712, эквивалентна прохождению данных декодированного изображения, сформированных обратным квантователем 709 и блоком 710 обратного ДКП, в неизмененном виде.
В вариантах осуществления изобретения, в которых выполняется интерполяция значений под-пикселов по запросу, выходные данные из объединителя 712 подаются на блок 730 интерполяции под-пикселов по запросу. Входные данные блока 730 интерполяции под-пикселов по запросу принимают форму блоков декодированного изображения. В блоке 730 интерполяции под-пикселов по запросу каждый декодированный макроблок подвергается интерполяции под-пикселов таким образом, что заранее заданное подмножество значений под-пикселов в под-пиксельном разрешении вычисляется в соответствии со способом интерполяции, соответствующим изобретению, и хранится совместно со значениями декодированных пикселов в кадровой памяти 740.
В вариантах осуществления, где интерполяция под-пикселов по запросу не выполняется, в архитектуре кодера отсутствует блок интерполяции под-пикселов по запросу, и выходные данные из объединителя 712, содержащие блоки декодированного изображения, подаются прямо в кадровую память 740.
Когда последовательные макроблоки текущего кадра принимаются и подвергаются ранее описанным операциям кодирования и декодирования в блоках 705, 706, 709, 710, 712, в кадровой памяти 740 выстраивается декодированная версия INTRA-кадра. Когда последний макроблок текущего кадра INTRA-закодирован и затем декодирован, кадровая память 740 содержит полностью декодированный кадр, доступный для использования в качестве опорного кадра предсказания при кодировании следующего принятого видеокадра в INTER-формате. В вариантах осуществления изобретения, где выполняется интерполяция значений под-пикселов по запросу, опорный кадр, хранящийся в кадровой памяти 740, по меньшей мере частично интерполирован до под-пиксельного разрешения.
Теперь будет описана работа кодера 700 в INTER-режиме кодирования. В INTER-режиме кодирования средство 720 управления манипулирует переключателем 702, чтобы принять входные данные с линии 721, которые содержат выходные данные объединителя 716. Объединитель 716 формирует информацию об ошибке предсказания, представляющую разность между текущим макроблоком кодируемого кадра и его предсказанием, выработанным в блоке 780 предсказания с компенсацией движения. Информация об ошибке предсказания преобразуется в соответствии с ДКП в блоке 705 и квантуется в блоке 706 для формирования макроблока ДКП-преобразованной и квантованной информации об ошибке предсказания. Каждый макроблок ДКП-преобразованной и квантованной информации об ошибке предсказания проходит через квантователь 706 в блок 790 мультиплексирования/демультиплексирования. Блок 790 мультиплексирования/демультиплексирования объединяет информацию 723 об ошибке предсказания с коэффициентами 724 движения (описанными ниже) и информацией управления (например, данными заголовка, информацией о параметре квантования, данными исправления ошибок и т.п.) для формирования единого потока 725 битов информации закодированного изображения.
Локально декодированная информация об ошибке предсказания для каждого макроблока INTER-кодированного кадра затем формируется в кодере 700 пропусканием кодированной информации 723 об ошибке предсказания, выданной квантователем 706, через обратный квантователь 709 и применением обратного ДКП преобразования в блоке 710. Полученный локально декодированный макроблок информации об ошибке предсказания затем подается на объединитель 712. В INTER-режиме переключатель 714 установлен так, что объединитель 712 также принимает макроблоки с предсказанием движения для текущего INTER-кадра, выработанные в блоке 780 предсказания с компенсацией движения. Объединитель 712 объединяет эти два фрагмента информации для выработки блоков восстановленного изображения для текущего INTER-кадра.
Как описано выше при рассмотрении INTRA-кодированных кадров, в вариантах осуществления изобретения, в которых осуществляется предварительная интерполяция значений под-пикселов, выходные данные из объединителя 712 подаются в блок 730 предварительной интерполяции под-пикселов. Таким образом, выходные данные блока 730 предварительной интерполяции под-пикселов в режиме INTER-кодирования также принимают форму блоков декодированного изображения. В блоке 730 предварительной интерполяции под-пикселов каждый декодированный макроблок подвергается интерполяции под-пикселов таким образом, что заранее заданное подмножество значений под-пикселов вычисляется в соответствии со способом интерполяции, соответствующим изобретению, и хранится совместно со значениями декодированных пикселов в кадровой памяти 740. В вариантах осуществления, где предварительная интерполяция под-пикселов не выполняется, блок предварительной интерполяции под-пикселов отсутствует в архитектуре кодера, и выходные данные объединителя 712, содержащие блоки декодированного изображения, подаются прямо в кадровую память 740.
Когда последовательные макроблоки видеоданных принимаются от источника видеоданных и подвергаются описанным ранее операциям кодирования и декодирования в блоках 705, 706, 709, 710, 712, в кадровой памяти 740 выстраивается декодированная версия INTER-кадра. Когда последний макроблок кадра INTER-закодирован и затем декодирован, кадровая память 740 содержит полностью декодированный кадр, доступный для использования в качестве опорного кадра предсказания при кодировании следующего принятого видеокадра в INTER-формате. В вариантах осуществления изобретения, где выполняется интерполяция значений под-пикселов по запросу, опорный кадр, хранящийся в кадровой памяти 740, по меньшей мере частично интерполирован до под-пиксельного разрешения.
Теперь будет описано формирование предсказания для макроблока текущего кадра.
Любой кадр, закодированный в INTER-формате, требует опорного кадра для предсказания с компенсацией движения. Это означает, в частности, что при кодировании видеопоследовательности первый кадр, подлежащий кодированию, при этом неважно, является ли он первым кадром в последовательности или каким-либо другим кадром, должен быть закодирован в INTRA-формате. Это, в свою очередь, означает, что когда видеокодер 700 переключается средством 720 управления в режим INTER-кодирования, полный опорный кадр, сформированный локальным декодированием предыдущего закодированного кадра, уже доступен в кадровой памяти 740 кодера. В общем случае опорный кадр формируется локальным декодированием либо INTRA-закодированного кадра либо INTER-закодированного кадра.
Первый этап при формировании предсказания для макроблока текущего кадра выполняется блоком 760 оценки движения. Блок 760 оценки движения принимает текущий макроблок кодируемого кадра по линии 727 и выполняет операцию согласования блоков, чтобы идентифицировать область в опорном кадре, которая практически соответствует текущему макроблоку. В соответствии с изобретением процесс согласования блоков выполняется до под-пиксельного разрешения способом, который зависит от реализации кодера 700 и степени выполненной предварительной интерполяции под-пикселов. Однако основной принцип, лежащий в основе процесса согласования блоков, одинаков во всех случаях. Конкретнее, блок 760 оценки движения выполняет согласование блоков путем вычисления значений разности (например, сумм абсолютных разностей), представляющих разность в значениях пикселов между рассматриваемым макроблоком текущего кадра и областями-кандидатами на лучшее согласование пикселов/под-пикселов в опорном кадре. Значение разности вырабатывается для всех возможных смещений (например, для смещений по х, у с точностью в четверть или в одну восьмую под-пиксела) между макроблоком текущего кадра и тестовой областью-кандидатом внутри заранее заданной области поиска опорного кадра, а блок 760 оценки движения определяет наименьшее вычисленное значение разности. Смещение между макроблоком в текущем кадре и тестовой областью-кандидатом значений пикселов/значений под-пикселов в опорном кадре, которое дает наименьшее значение разности, определяет вектор движения для рассматриваемого макроблока. В некоторых вариантах осуществления изобретения сначала определяется начальная оценка вектора движения, имеющая точность в целый пиксел, а затем уточняется до более высокого уровня под-пиксельного разрешения, как описано выше.
В вариантах осуществления кодера, в которых не осуществляется предварительная интерполяция значений под-пикселов, все значения под-пикселов, требуемые для процесса согласования блоков, вычисляются в блоке 750 интерполяции значений под-пикселов по запросу. Блок 760 оценки движения управляет блоком 750 интерполяции значений под-пикселов по запросу с целью вычисления каждого значения под-пиксела, необходимого в процессе согласования блоков в режиме "по-запросу", если и когда это необходимо. В этом случае блок 760 оценки движения может быть реализован так, чтобы осуществлять согласование блоков как одноэтапный процесс, тогда вектор движения с желаемым под-пиксельным разрешением отыскивается напрямую или он может быть реализован так, чтобы выполнять согласование блоков как двухэтапный процесс. Если применен двухэтапный процесс, то первый этап может содержать поиск, например, вектора движения разрешения в целый пиксел или в половину пиксела, а второй этап выполняется для уточнения вектора движения до желаемого под-пиксельного разрешения. Поскольку согласование блоков является исчерпывающим процессом, в котором блоки из n×m пикселов в текущем кадре сравниваются один за другим с блоками из n×m пикселов или под-пикселов в интерполированном опорном кадре, следует понимать, что под-пиксел, вычисленный в режиме "по-запросу" блоком 750 интерполяции под-пикселов по запросу, может оказаться нужным вычислять множество раз по мере того, как определяются последовательные значения разности. В видеокодере этот подход не является наиболее эффективным из возможных с точки зрения вычислительной сложности/нагрузки.
В вариантах осуществления кодера, которые используют только предварительную интерполяцию значений под-пикселов, согласование блоков может выполняться как одноэтапный процесс, так как все значения под-пикселов опорного кадра, требуемые для определения вектора движения с желаемым под-пиксельным разрешением, предварительно вычисляются в блоке 730 и хранятся в кадровой памяти 740. Таким образом, они напрямую доступны для использования в процессе согласования блоков и могут быть извлечены, когда требуется, из кадровой памяти 740 блоком 760 оценки движения. Однако даже в случае, когда все значения под-пикселов доступны из кадровой памяти 740, все равно еще более эффективно для вычисления будет проводить согласование блоков в виде двухэтапного процесса, так как это требует меньше вычислений разностей. Следует понимать, что хотя полная предварительная интерполяция значений под-пикселов сокращает вычислительную сложность кодера, она не является наиболее эффективным подходом с точки зрения потребления памяти.
В вариантах осуществления кодера, в которых используются как предварительная интерполяция значений под-пикселов, так и интерполяция значений под-пикселов по запросу, блок 760 оценки движения реализован таким образом, чтобы он мог извлекать значения под-пикселов, вычисленные ранее в блоке 730 предварительной интерполяции значений под-пикселов и хранящиеся в кадровой памяти 740, и далее управлять блоком 750 интерполяции значений под-пикселов по запросу для вычисления любых дополнительных значений под-пикселов, которые могут потребоваться. Процесс согласования блоков может выполняться как одноэтапный процесс или как двухэтапный процесс. Если используется двухэтапная реализация, то предварительно вычисленные значения под-пикселов, извлеченные из кадровой памяти 740, могут использоваться на первом этапе процесса, а второй этап может быть реализован так, чтобы использовать значения под-пикселов, вычисленные блоком 750 интерполяции значений под-пикселов по запросу. В этом случае может потребоваться множество раз вычислять определенные значения под-пикселов, используемые на втором этапе процесса согласования блоков, когда выполняются последовательные сравнения, но количество таких повторных вычислений значительно меньше, чем в случае, когда предварительная интерполяция значений под-пикселов не используется. Более того, потребление памяти сокращается по сравнению с вариантами осуществления, в которых используется только предварительная интерполяция значений под-пикселов.
Когда блок 760 оценки движения выработал вектор движения для рассматриваемого макроблока текущего кадра, он выдает вектор движения в блок 770 кодирования поля движения. Блок 770 кодирования поля движения затем аппроксимирует вектор движения, принятый от блока 760 оценки движения, с помощью модели движения. Модель движения в общем случае содержит набор основных функций. Конкретнее, блок 770 кодирования поля движения представляет вектор движения как набор значений коэффициентов (известных как коэффициенты движения), которые при умножении на базисные функции формируют аппроксимацию вектора движения. Коэффициенты 724 движения передаются от блока 770 кодирования поля движения в блок 780 предсказания с компенсацией движения. Блок 780 предсказания с компенсацией движения также принимает значения пикселов/под-пикселов наилучшим образом согласующейся тестовой области-кандидата опорного кадра, идентифицированной блоком 760 оценки движения. На фиг.7 эти значения показаны как подлежащие передаче по линии 729 из блока 750 интерполяции под-пикселов по запросу. В альтернативных вариантах осуществления изобретения рассматриваемые значения пикселов подаются непосредственно из блока 760 оценки движения.
Используя аппроксимированное представление вектора движения, выработанного блоком 770 кодирования поля движения, и значения пикселов/под-пикселов наилучшим образом согласующейся тестовой области-кандидата, блок 780 предсказания с компенсацией движения вырабатывает макроблок предсказанных значений пикселов. Макроблок предсказанных значений пикселов представляет предсказание значений пикселов текущего макроблока, сгенерированное на основе интерполированного опорного кадра. Макроблок предсказанных значений пикселов подается на объединитель 716, где он вычитается из нового текущего кадра для выработки информации 723 об ошибке предсказания для макроблока, как описано выше.
Коэффициенты 724 движения, сформированные блоком кодирования поля движения, также подаютсят в блок 790 мультиплексирования/демультиплексирования, где они объединяются с информацией 723 об ошибке предсказания для рассматриваемого макроблока и возможной информацией управления от средства 720 управления, чтобы сформировать закодированный видеопоток 725 для передачи на принимающий терминал.
Теперь будет описана работа видеодекодера 800 в соответствии с изобретением. На фиг.8 декодер 800 содержит блок 810 мультиплексирования/демультиплексирования, который принимает закодированный видеопоток 725 от кодера 700 и демультиплексирует его, обратный квантователь 820, блок 830 обратного ДКП, блок 840 предсказания с компенсацией движения, кадровая память 850, объединитель 860, средство 870 управления, выход 880, блок 845 предварительной интерполяции значений под-пикселов и блок 890 интерполяции значений под-пикселов по запросу, связанные с блоком 840 предсказания с компенсацией движения. На практике средством 870 управления декодера 800 и средством 720 управления кодера 700 может быть один и тот же процессор. Это может происходить, если кодер 700 и декодер 800 являются частью одного видеокодека.
Фиг.8 показывает вариант осуществления, в котором в декодере используется сочетание предварительной интерполяции значений под-пикселов и интерполяции значений под-пикселов по запросу. В других вариантах осуществления используется только предварительная интерполяция значений под-пикселов, в каковом случае декодер 800 не включает в себя блок 890 интерполяции значений под-пикселов по запросу. В предпочтительном варианте осуществления изобретения в декодере не используется предварительная интерполяция значений под-пикселов, а следовательно, блок 845 предварительной интерполяции значений под-пикселов исключается из архитектуры декодера. Если выполняется как предварительная интерполяция значений под-пикселов, так и интерполяция значений под-пикселов по запросу, декодер содержит как блок 845, так и блок 890.
Средство 870 управления управляет работой декодера 800 в ответ на то, декодируется ли INTRA-кадр или INTER-кадр. Сигнал управления переключением INTRA/INTER, который предписывает декодеру переключаться между режимами декодирования, получают, например, на основе информации о типе изображения, обеспеченной в части заголовка каждого сжатого видеокадра, принятого от кодера. Сигнал управления переключением INTRA/INTER подается на средство 870 управления по линии 815 управления вместе с другими сигналами управления видеокодека, демультиплексированными из кодированного видеопотока 725 блоком 890 мультиплексирования/демультиплексирования.
Когда декодируется INTRA-кадр, кодированный видеопоток 725 демультиплексируется в INTRA-закодированные макроблоки и информацию управления. В кодированный видеопоток 725 для INTRA-закодированного кадра вектора движения не включаются. Процесс декодирования выполняется макроблок за макроблоком. Когда закодированная информация 723 для макроблока выделяется из видеопотока 725 блоком 810 мультиплексирования/демультиплексирования, она подается на обратный квантователь 820. Средство управления управляет обратным квантователем 820 для применения подходящего уровня обратного квантования для макроблока закодированной информации в соответствии с информацией управления, обеспеченной в видеопотоке 725. Обратно квантованный макроблок затем подвергается обратному преобразованию в блоке 830 обратного ДКП для формирования декодированного блока информации изображения. Средство 870 управления управляет объединителем 860 для предотвращения использования какой-либо опорной информации при декодировании INTRA-закодированного макроблока. Декодированный блок информации изображения подается на видеовыход 880 декодера.
В вариантах осуществления декодера, которые используют предварительную интерполяцию значений под-пикселов, декодированный блок информации изображения (то есть значений пикселов), получаемый в результате операций обратного квантования и обратного преобразования, выполняемых в блоках 820 и 830, подается в блок 845 предварительной интерполяции значений под-пикселов. Здесь интерполяция значений под-пикселов выполняется в соответствии со способом, соответствующим изобретению, причем степень примененной предварительной интерполяции значений под-пикселов определяется деталями реализации декодера. В вариантах осуществления изобретения, в которых не выполняется интерполяция значений под-пикселов по запросу, блок 845 предварительной интерполяции значений под-пикселов интерполирует все значения под-пикселов. В вариантах осуществления, которые используют сочетание предварительной интерполяции значений под-пикселов и интерполяции значений под-пикселов по запросу, блок 845 предварительной интерполяции значений под-пикселов интерполирует определенное подмножество значений под-пикселов. Оно может содержать, например, все под-пикселы в местоположениях половины пиксела или сочетания под-пикселов в местоположениях половины пиксела или четверти пиксела. В любом случае после предварительной интерполяции значений под-пикселов интерполированные значения под-пикселов сохраняются в кадровой памяти 850 вместе с исходными декодированными значениями пикселов. По мере того, как последующие макроблоки декодируются, предварительно интерполируются и сохраняются, декодированный кадр, по меньшей мере частично интерполированный до под-пиксельного разрешения, постепенно упорядочивается в кадровой памяти 850 и становится доступным для использования в качестве опорного кадра для предсказания с компенсацией движения.
В вариантах осуществления декодера, которые не используют предварительную интерполяцию значений под-пикселов, декодированный блок информации изображения (то есть значения пикселов), получаемый в результате операций обратного квантования и обратного преобразования, выполняемых в блоках 820 и 830, подается напрямую в кадровую память 850. По мере того, как последующие макроблоки декодируются и сохраняются, декодированный кадр, имеющий разрешение в целый пиксел, постепенно упорядочивается в кадровой памяти 850 и становится доступным для использования в качестве опорного кадра для предсказания с компенсацией движения.
Когда декодируется INTER-кадр, кодированный видеопоток 725 демультиплексируется в закодированную информацию 723 об ошибке предсказания для каждого макроблока в кадре, ассоциированные коэффициенты 724 движения и информацию управления. Опять-таки процесс декодирования выполняется макроблок за макроблоком. Когда закодированная информация 723 об ошибке предсказания для макроблока выделяется из видеопотока 725 блоком 810 мультиплексирования/демультиплексирования, она подается на обратный квантователь 820. Средство 870 управления управляет обратным квантователем 820 для применения подходящего уровня обратного квантования для макроблока закодированной информации об ошибке предсказания в соответствии с информацией управления, принятой в видеопотоке 725. Макроблок информации об ошибке предсказания, прошедший обратное квантование, затем обратно преобразуется в блоке 830 обратного ДКП для получения декодированной информации об ошибке предсказания для макроблока.
Коэффициенты 724 движения, связанные с рассматриваемым макроблоком, выделяются из видеопотока 725 блоком 810 мультиплексирования/демультиплексирования и подаются в блок 840 предсказания с компенсацией движения, который восстанавливает вектор движения для макроблока с использованием той же модели движения, которая применяется для кодирования INTER-закодированного макроблока в кодере 700. Восстановленный вектор движения аппроксимирует вектор движения, исходно определенный блоком 760 оценки движения кодера. Блок 840 предсказания с компенсацией движения декодера использует восстановленный вектор движения для идентификации положения блока значений пикселов/под-пикселов в опорном кадре предсказания, хранящемся в кадровой памяти 850. Опорным кадром может быть, например, ранее декодированный INTRA-кадр или ранее декодированный INTER-кадр. В любом случае блок значений пикселов/под-пикселов, показанный восстановленным вектором движения, представляет предсказание для рассматриваемого макроблока.
Восстановленный вектор движения может указывать на любой пиксел или под-пиксел. Если вектор движения показывает, что предсказание для текущего макроблока сформировано на основе значений пикселов (то есть значений пикселов в целых местоположениях пикселов), то они могут быть легко извлечены из кадровой памяти 850, т.к. рассматриваемые значения получают непосредственно во время декодирования каждого кадра. Если вектор движения показывает, что предсказание для текущего макроблока сформировано на основе значений под-пикселов, то они должны быть либо извлечены из кадровой памяти 850 либо вычислены в блоке 890 интерполяции под-пикселов по запросу. Должны ли значения под-пикселов вычисляться или они могут быть просто извлечены из кадровой памяти зависит от степени интерполяции значений под-пикселов по запросу, использованной в декодере.
В вариантах осуществления декодера, которые не используют предварительную интерполяцию значений под-пикселов, все требуемые значения под-пикселов вычисляются в блоке 890 интерполяции под-пикселов по запросу. С другой стороны, в вариантах осуществления, в которых все значения под-пикселов интерполированы предварительно, блок 840 предсказания с компенсацией движения может извлекать требуемые значения под-пикселов непосредственно из кадровой памяти 850. В вариантах осуществления, которые используют сочетание предварительной интерполяции значений под-пикселов и интерполяции значений под-пикселов по запросу, действие, требуемое для получения требуемых значений под-пикселов, зависит от того, какие значения под-пикселов были интерполированы предварительно. Рассматривая в качестве примера вариант осуществления, в котором все значения под-пикселов в местоположениях половины пиксела вычислены предварительно, очевидно, что если восстановленный вектор движения для макроблока указывает на пиксел в целом местоположении или на под-пиксел в местоположении половины пиксела, то все значения пикселов и под-пикселов, требуемые для формирования предсказания для макроблока, уже имеются в кадровой памяти 850 и могут быть извлечены оттуда блоком 840 предсказания с компенсацией движения. Однако если вектор движения указывает на под-пиксел в местоположении четверти пиксела, то под-пикселы, требуемые для формирования предсказания для макроблока, отсутствуют в кадровой памяти 850 и, следовательно, вычисляются в блоке 890 интерполяции значений под-пикселов по запросу. В этом случае блок 890 интерполяции значений под-пикселов по запросу извлекает любой пиксел или под-пиксел, требуемый для выполнения интерполяции, из кадровой памяти 850 и применяет способ интерполяции, описанный ниже. Значения под-пикселов, вычисленные в блоке 890 интерполяции значений под-пикселов по запросу, подаются в блок 840 предсказания с компенсацией движения.
Когда предсказание для макроблока получено, это предсказание (то есть макроблок из предсказанных значений пикселов) подается из блока 840 предсказания с компенсацией движения в объединитель 860, где оно объединяется с декодированной информацией об ошибке предсказания для макроблока, чтобы сформировать восстановленный блок изображения, который, в свою очередь, подается на видеовыход 880 декодера.
Следует понимать, что в практических реализациях кодера 700 и декодера 800 предел, до которого кадры предварительно интерполируются до под-пикселов, и таким образом объем проводимой интерполяции значений под-пикселов по запросу может выбираться в соответствии с (либо диктоваться) аппаратной реализацией видеокодера 700 или окружением, в котором предполагается его использовать. Например, если память, доступная видеокодеру, ограничена либо память должна резервироваться для других функций, целесообразно ограничить объем проводимой предварительной интерполяции значений под-пикселов. В других случаях, когда микропроцессор, выполняющий операцию кодирования видеоданных, имеет ограниченную производительность обработки, например количество операций в секунду, которое может быть выполнено, сравнительно невелико, более целесообразным будет ограничить объем проводимой интерполяции значений под-пикселов по запросу. В контексте мобильной связи, например, когда функция кодирования и декодирования видеоданных встроена в мобильный телефон или аналогичный беспроводной терминал для связи с сетью мобильной связи, и память и вычислительная мощность процессора могут быть ограничены. В этом случае сочетание предварительной интерполяции значений под-пикселов и интерполяции значений под-пикселов по запросу может быть наилучшим выбором для получения эффективной реализации в видеокодере. В видеодекодере 800 использование предварительной интерполяции значений под-пикселов обычно не является предпочтительным, поскольку оно обычно приводит к вычислению множества значений под-пикселов, которые в действительности не используются в процессе декодирования. Однако следует понимать, что хотя в кодере и декодере для оптимизации работы каждого из них могут быть использованы различные объемы предварительной интерполяции значений под-пикселов и интерполяции значений под-пикселов по запросу, и кодер и декодер могут быть выполнены так, чтобы использовать одно и то же разделение между предварительной интерполяцией значений под-пикселов и интерполяцией значений под-пикселов по запросу.
Хотя приведенное выше описание не описывает построения двунаправленно предсказанных кадров (В-кадров) в кодере 700 и декодере 800, следует понимать, что такая возможность может быть обеспечена в вариантах осуществления изобретения. Считается, что обеспечение такой возможности относится к квалификации специалиста в данной области техники.
Кодер 700 или декодер 800, соответствующие изобретению, могут быть реализованы с использованием аппаратного или программного обеспечения, или с использованием их комбинации. Кодер или декодер, реализованные в программном обеспечении, могут быть, например, отдельной программой или программным составляющим блоком программы, который может использоваться различными программами. В вышеприведенном описании и на чертежах функциональные блоки представлены как отдельные модули, но функции этих блоков могут быть реализованы, например, в одном программном модуле.
Кроме того, кодер 700 и декодер 800 могут быть объединены для формирования видеокодека, имеющего функцию как кодирования, так и декодирования. В дополнение к тому, что такой кодек может быть реализован в мультимедийном терминале, он может также быть реализован в сети. Кодек в соответствии с изобретением может быть компьютерной программой или элементом компьютерной программы, или он может быть реализован по меньшей мере частично с использованием аппаратного обеспечения.
Теперь будет подробно описан способ интерполяции под-пикселов, используемый в кодере 700 и декодере 800 в соответствии с изобретением. Способ будет сначала введен на общем концептуальном уровне, а затем будут описаны два предпочтительных варианта осуществления. В первом предпочтительном варианте осуществления интерполяция значений под-пикселов проводится до разрешения в 1/4 пиксела, а во втором варианте осуществления способ расширен до разрешения в 1/8 пиксела.
Следует отметить, что интерполяция должна вырабатывать одинаковые значения в кодере и декодере, но ее реализация должна быть оптимизирована для обоих объектов по отдельности. Например, в кодере в соответствии с первым вариантом осуществления изобретения, в котором интерполяция значений под-пикселов выполняется до разрешения в 1/4 пиксела, наиболее эффективно предварительно вычислять пикселы разрешения 1/2 и вычислять значения под-пикселов разрешения 1/4 в режиме "по-запросу", только когда они необходимы в процессе оценки движения. Это проявляется в виде ограничения использования памяти при сохранении вычислительной сложности/нагрузки на приемлемом уровне. В декодере, с другой стороны, предпочтительно не вычислять заранее никаких под-пикселов. Следовательно, нужно отметить, что предпочтительный вариант осуществления декодера не включает в себя блок 845 предварительной интерполяции значений под-пикселов, и вся интерполяция значений под-пиксела выполняется в блоке 880 интерполяции значений под-пикселов по запросу.
В описании способа интерполяции, приведенном ниже, ссылки делаются на положения пикселов, показанные на фиг.14а. На этом чертеже пикселы, обозначенные позицией А, представляют исходные пикселы (то есть пикселы, находящиеся в целых горизонтальных и вертикальных местоположениях). Пикселы, обозначенные другими буквами, представляют под-пикселы, подлежащие интерполяции. Следующее ниже описание придерживается введенных ранее соглашений относительно описания местоположений пикселов и под-пикселов.
Далее описываются операции, требуемые для интерполяции всех значений под-пикселов.
Значения под-пикселов разрешения 1/2, обозначенных b, получают сначала путем вычисления промежуточного значения b с использованием фильтра К-го порядка в соответствии со следующим уравнением:
где x1 является вектором коэффициентов фильтра, A1 является соответствующим вектором исходных значений А пикселов, расположенных в целых горизонтальных и целых вертикальных местоположениях, а К является целым числом, определяющим порядок фильтра. Таким образом, уравнение 9 может быть по-другому выражено следующим образом:
Значения коэффициентов x1 фильтра и порядок К фильтра могут меняться от варианта осуществления к варианту осуществления. Аналогично разные значения коэффициентов могут быть использованы при вычислении разных под-пикселов в пределах одного варианта осуществления. В других вариантах осуществления значения коэффициентов x1 фильтра и порядок фильтра могут зависеть от того, какие из под-пикселов b разрешения 1/2 интерполируются. Пикселы Ai расположены симметрично по отношению к интерполируемому под-пикселу b разрешения 1/2 и являются ближайшими соседями этого под-пиксела. В случае, когда под-пиксел b разрешения 1/2 расположен в полуцелом горизонтальном и целом вертикальном местоположении, пикселы Ai расположены горизонтально по отношению к b (как показано на фиг.14b). Если интерполируется под-пиксел b разрешения 1/2, расположенный в целом горизонтальном и полуцелом вертикальном местоположении, то пикселы Ai расположены вертикально по отношению к b (как показано на фиг.14 с).
Конечное значение под-пиксела b разрешения 1/2 вычисляется путем деления промежуточного значения b на константу scale1, усекая его с целью получения целого числа, и ограничивая результат, чтобы он лежал в диапазоне [0, 2n-1]. В альтернативных вариантах осуществления изобретения вместо усечения может выполняться округление. Предпочтительно константа scale1 выбирается так, чтобы быть равной сумме коэффициентов xi фильтра.
Значение под-пиксела разрешения 1/2, обозначенного с, также получают сначала путем вычисления промежуточного значения с с использованием фильтра М-го порядка в соответствии со следующим уравнением:
где yi является вектором коэффициентов фильтра, bi является соответствующим вектором промежуточных значений bi в горизонтальном и вертикальном направлениях, то есть:
Значения коэффициентов yi фильтра и порядка М фильтра могут меняться от варианта осуществления к варианту осуществления. Аналогично разные значения коэффициентов могут быть использованы при вычислении разных под-пикселов в пределах одного варианта осуществления. Предпочтительно значения b являются промежуточными значениями для под-пикселов b разрешения 1/2, которые расположены симметрично по отношению к под-пикселу с разрешения 1/2 и к ближайшим соседям под-пиксела с. В варианте осуществления изобретения под-пикселы b разрешения 1/2 расположены горизонтально по отношению к под-пикселу с, а в альтернативном варианте осуществления они расположены вертикально по отношению к под-пикселу с.
Конечное значение под-пиксела с разрешения вычисляется путем деления промежуточного значения с на константу scale2, усекая его с целью получения целого числа и ограничивая результат, чтобы он лежал в диапазоне [0, 2n-1]. В альтернативных вариантах осуществления изобретения вместо усечения может выполняться округление. Предпочтительно константа scale2 выбирается равной scale1×scale1.
Следует отметить, что использование промежуточных значений b в горизонтальном направлении приводит к тому же результату, что и использование промежуточных значений b в вертикальном направлении.
Существуют две альтернативы для интерполяции значений под-пикселов разрешения 1/4, обозначенных h. Обе они включают в себя линейную интерполяцию по диагональной линии, связывающей под-пикселы разрешения 1/2, находящиеся по соседству с интерполируемым под-пикселом h разрешения 1/4. В первом варианте осуществления значение под-пиксела h вычисляется усреднением значения двух под-пикселов b разрешения 1/2, ближайших к под-пикселу h. Во втором варианте осуществления значение под-пиксела h вычисляется усреднением значений ближайшего пиксела А и ближайшего под-пиксела с разрешения 1/2. Следует понимать, что это обеспечивает возможность использования различных сочетаний диагональных интерполяций для определения значений под-пикселов h в пределах различных групп из четырех пикселов А изображения. Однако следует также осознавать, что аналогичное сочетание должно быть использовано как в кодере, так и в декодере для получения одинаковых значений интерполяции. Фиг.15 показывает 4 возможных варианта выбора диагональной интерполяции для под-пикселов h в соседних группах из 4 пикселов внутри изображения. Моделирование в среде ОМ подтвердило, что оба варианта осуществления приводят к одинаковой эффективности сжатия. Второй вариант осуществления имеет более высокую сложность, поскольку вычисление под-пиксела с требует вычисления нескольких промежуточных значений. Следовательно, предпочтителен первый вариант осуществления.
Значения для под-пикселов разрешения 1/4, обозначенных d и g, вычисляются из значений их ближайших соседей по горизонтали с использованием линейной интерполяции. Другими словами, значение для под-пиксела d разрешения 1/4 получают усреднением значений его ближайших соседей по горизонтали - пиксела А исходного изображения и под-пиксела b разрешения 1/2. Аналогично значение для под-пиксела g разрешения 1/4 получают усреднением значений его двух ближайших соседей по горизонтали - под-пикселов b и с разрешения 1/2.
Значения для под-пикселов разрешения 1/4, обозначенных е, f и i, вычисляются из значений их ближайших соседей по вертикали с использованием линейной интерполяции. Конкретнее, значение для под-пиксела е разрешения 1/4 получают усреднением значений его двух ближайших соседей по вертикали - пиксела А исходного изображения и под-пиксела b разрешения 1/2. Аналогично значение для под-пиксела f разрешения 1/4 получают усреднением значений его двух ближайших соседей по вертикали - под-пикселов b и с разрешения 1/2. В варианте осуществления изобретения значение для под-пиксела i разрешения 1/4 получают тем же образом, который только что был описан по отношению к под-пикселу f разрешения 1/4. Однако в альтернативном варианте осуществления изобретения и, перекликаясь с ранее описанными Н.26 опытными моделями ОМ5 и ОМ6, под-пиксел i разрешения 1/4 определяется с использованием значений четырех ближайших пикселов исходного изображения в соответствии с формулой (A1+A2+A3+A4+2)/4.
Также следует отметить, что во всех случаях, где используется усреднение с использованием значений пикселов и/или под-пикселов, усредненное значение может быть сформировано любым подходящим образом. Например, значение для под-пиксела d разрешения 1/4 может быть определено как d=(А+b)/2 или как d=(А+b+1)/2. Результатом прибавления 1 к сумме значений для пиксела А и под-пиксела b разрешения 1/2 является то, что любая операция округления или усечения применяется впоследствии, округляет или усекает значение для d до следующего наибольшего целого значения. Это верно для любой суммы целых значений и может быть применено к любой из усредняющих операций, выполняемых в соответствии со способом по изобретению для управления результатами округления или усечения.
Следует отметить, что способ интерполяции значений под-пикселов в соответствии с изобретением обеспечивает преимущества по сравнению с каждой из моделей ОМ5 и ОМ6.
По сравнению с ОМ5, в которой значения некоторых под-пикселов разрешения 1/4 зависят от ранее интерполированных значений, полученных для других под-пикселов разрешения 1/4, в способе в соответствии с изобретением все под-пикселы разрешения 1/4 вычисляются из местоположений пикселов исходного изображения или под-пикселов разрешения 1/2 с использованием линейной интерполяции. Таким образом, уменьшение точности значений под-пикселов разрешения 1/4, которое имеет место в ОМ5 из-за промежуточного усечения и ограничения других под-пикселов разрешения 1/4, из которых они вычисляются, отсутствует в способе, соответствующем настоящему изобретению. В частности, на фиг.14а под-пикселы h разрешения 1/4 (и под-пикселы i в одном варианте осуществления изобретения) интерполируются диагонально, чтобы сократить зависимость от других под-пикселов разрешения 1/4. Более того, в соответствии со способом по изобретению количество вычислений (а следовательно, и количество циклов работы процессора), требуемых для получения значения для этих под-пикселов разрешения 1/4 в декодере, сокращается по сравнению с ОМ5. Кроме того, вычисление любого значения под-пиксела разрешения 1/4 требует такого количества вычислений, которое практически одинаково с количеством вычислений, требуемых для определения любого другого значения под-пиксела разрешения 1/4. Конкретнее, в ситуации, где требуемые значения под-пикселов разрешения 1/2 уже доступны, к примеру, вычислены предварительно, количество вычислений, требуемых для интерполяции значения под-пиксела разрешения 1/4 из ранее вычисленного значения под-пиксела разрешения 1/4 аналогично количеству вычислений, требуемых для вычисления любого другого значения под-пиксела разрешения 1/4 из доступных значений под-пикселов разрешения 1/2.
По сравнению с ОМ6 способ в соответствии с изобретением не требует использования высокоточных расчетов при вычислении всех под-пикселов. Конкретнее, поскольку все значения под-пикселов разрешения 1/4 вычисляются из пикселов исходного изображения или значений под-пикселов разрешения 1/2 с использованием линейной интерполяции, для такой интерполяции могут быть использованы менее точные расчеты. Следовательно, в аппаратных реализациях способа, соответствующего изобретению, например, в специализированной ИС (ASIC), использование менее точных расчетов сокращает количество компонентов (например, шлюзов), которые должны быть предназначены для вычисления значений под-пикселов разрешения 1/4. Это, в свою очередь, сокращает общую площадь кремния, который должен быть выделен для функции интерполяции. Поскольку большинство под-пикселов в действительности являются под-пикселами разрешения 1/4 (12 из 15 под-пикселов, показанных на фиг 14а), преимущество, обеспечиваемое изобретением в этом отношении, особенно важно. В программных реализациях, где интерполяция под-пикселов проводится с использованием стандартного набора команд центрального процессора (ЦП, CPU) общего назначения или с использованием цифрового процессора сигналов (ЦПС, DSP), уменьшение точности требуемых расчетов обычно ведет к увеличению скорости, с которой могут проводиться вычисления. Это является существенным преимуществом в реализациях с низкой стоимостью, в которых предпочтительно использовать ЦП общего назначения, а не какую-либо форму ASIC.
Способ в соответствии с изобретением обеспечивает дальнейшие преимущества по сравнению с ОМ5. Как упомянуто ранее, в декодере только 1 из 15 местоположений под-пикселов требуется в любое заданное время, а именно то, которое указывает принятая информация о векторе движения. Следовательно, предпочтительно, если значение под-пиксела в любом местоположении под-пиксела можно вычислить с минимальным количеством этапов, результатом чего является корректно интерполированное значение. Способ, соответствующий изобретению, обеспечивает эту возможность. Как упомянуто ранее в подробном описании, под-пиксел с разрешения может интерполироваться путем фильтрации либо в вертикальном либо в горизонтальном направлении, причем может использоваться одно и то же значение, полученное для с независимо от того, используется ли горизонтальная или вертикальная фильтрация. Таким образом, декодер может использовать преимущество такого свойства при вычислении значений для под-пикселов f и g разрешения 1/4 таким образом, чтобы минимизировать количество операций, требуемых для получения нужных значений. Например, если декодеру требуется значение под-пиксела f разрешения, то под-пиксел с разрешения должен интерполироваться в вертикальном направлении. Если требуется значение для под-пиксела g разрешения, то предпочтительно интерполировать значение для с в горизонтальном направлении. Таким образом, в общем случае можно сказать, что способ в соответствии с изобретением обеспечивает гибкость в том, каким образом получают значения для определенных под-пикселов разрешения. В ОМ5 такая гибкость не обеспечена.
Теперь будут подробно описаны два конкретных варианта осуществления. Первый вариант осуществления представляет собой предпочтительный вариант осуществления для вычисления под-пикселов при разрешении до пиксела, тогда как во втором варианте осуществления способа в соответствии с изобретением применение способа расширено для вычислений значений под-пикселов с разрешением до 1/8 пиксела. Для обоих вариантов осуществления предусмотрено сравнение между вычислительной сложностью/нагрузкой вследствие использования способа в соответствии с изобретением и той сложностью, которая имела бы место при использовании способов интерполяции в соответствии с ОМ5 и ОМ6 при одних и тех же условиях.
Предпочтительный вариант осуществления для интерполяции под-пикселов при разрешении в пиксела будет описан со ссылками на фиг.14а, 14b и 14 с. Далее предполагается, что все пикселы изображения и конечные интерполированные пикселы представлены 8 битами.
Вычисление под-пикселов разрешения в i) полуцелом горизонтальном и целом вертикальном местоположениях и ii) в целом горизонтальном и полуцелом вертикальном местоположениях.
1. Значение для под-пиксела в полуцелом горизонтальном и целом вертикальном местоположениях, то есть под-пиксела b разрешения 1/2 на фиг.14 а, получают сначала путем вычисления промежуточного значения b, которое вычисляется в соответствии со следующей формулой b=(A1-5A2+20А3+20А4-5А5+А6) с использованием значений 6 пикселов (A1-A6), которые расположены в целых горизонтальных и целых вертикальных местоположениях либо в строке либо в столбце пикселов, содержащих b, и которые расположены симметрично вокруг b, как показано на фиг.14b и 14 с. Конечное значение для под-пиксела b разрешения вычисляется как (b+16)/32, где оператор "/" обозначает деление с усечением. Результат ограничивают, чтобы попасть в диапазон [0, 255].
Вычисление под-пикселов разрешения 1/2 в полуцелом горизонтальном и полуцелом вертикальном местоположениях.
2. Значение для под-пиксела в полуцелом горизонтальном и полуцелом вертикальном местоположениях, т.е. под-пиксела с разрешения 1/2 на фиг.14а вычисляется в соответствии со следующей формулой: с=(b1-5b2+20b3+20b4-5b5+b6+512)/1024 с использованием промежуточных значений b для шести ближайших под-пикселов разрешения, которые расположены либо в строке либо в столбце под-пикселов, содержащих с, и которые расположены симметрично вокруг с, как показано на фиг.14b и 14 с. Опять-таки оператор "/" обозначает деление с усечением. Результат ограничивают, чтобы попасть в диапазон [0, 255]. Как объяснено ранее, использование промежуточных значений b для под-пикселов b разрешения 1/2 в горизонтальном направлении приводит к тому же результату, что и использование промежуточных значений b для под-пикселов b разрешения 1/2 в вертикальном направлении. Таким образом, в кодере в соответствии с изобретением направление для интерполяции под-пикселов b разрешения 1/2 может выбираться в соответствии с предпочтительным режимом реализации. В декодере в соответствии с изобретением выбирается такое направление для интерполяции под-пикселов b разрешения 1/4, в соответствии с которым под-пикселы разрешения 1/4, если они имеются, будут интерполироваться с использованием результатов, полученных для под-пиксела с разрешения 1/2.
Вычисление под-пикселов разрешения 1/4 в i) горизонтальных местоположениях четверть целого и целых вертикальных местоположениях, ii) горизонтальных местоположениях четверть целого и полуцелых вертикальных местоположениях, iii) целых горизонтальных местоположениях и вертикальных местоположениях четверть целого, iv) полуцелых горизонтальных местоположениях и вертикальных местоположениях четверть целого.
3. Значения для под-пикселов d разрешения 1/4, расположенных в горизонтальных местоположениях четверть целого и целых вертикальных местоположениях, вычисляются в соответствии со следующей формулой: d=(A+b)/2 с использованием ближайшего пиксела А исходного изображения и ближайшего под-пиксела b разрешения 1/2 в горизонтальном направлении. Аналогично значения для под-пикселов g разрешения 1/4, расположенных в горизонтальных местоположениях четверть целого и полуцелых вертикальных местоположениях, вычисляются в соответствии со следующей формулой: g=(b+c)/2 с использованием двух ближайших под-пикселов разрешения 1/2 в горизонтальном направлении. Аналогичным образом значения для под-пикселов е разрешения 1/4, расположенных в целых горизонтальных местоположениях и вертикальных местоположениях четверть целого, вычисляются в соответствии со следующей формулой: е=(A+b)/2 с использованием ближайшего пиксела А исходного изображения и ближайшего под-пиксела b разрешения 1/2 в вертикальном направлении. Значения для под-пикселов f разрешения 1/4, расположенных в полуцелых горизонтальных местоположениях и вертикальных местоположениях четверть целого, вычисляются в соответствии со следующей формулой: f=(b+c)/2 с использованием двух ближайших под-пикселов разрешения 1/2 в вертикальном направлении. Во всех случаях оператор "/" обозначает деление с усечением.
Вычисление под-пикселов разрешения 1/4 в горизонтальных местоположениях четверть целого и вертикальных местоположениях четверть целого.
4. Значения для под-пикселов h разрешения 1/4, расположенных в горизонтальных местоположениях четверть целого и вертикальных местоположениях четверть целого, вычисляются в соответствии со следующей формулой: h=(b1+b2)/2 с использованием двух ближайших под-пикселов b разрешения 1/2 в диагональном направлении. Опять же оператор "/" обозначает деление с усечением.
5. Значение для под-пиксела разрешения 1/4, обозначенного i, вычисляется в соответствии со следующей формулой: i=(А1+А2+А3+А4+2)/4 с использованием 4 ближайших исходных пикселов А. Опять же оператор "/" обозначает деление с усечением.
Теперь будет представлен анализ вычислительной сложности первого предпочтительного варианта осуществления изобретения.
В кодере, вероятно, одинаковые значения под-пикселов будут вычисляться множество раз. Следовательно, как объяснено выше, сложность кодера может быть уменьшена путем предварительного вычисления всех значений под-пикселов и хранения их в памяти. Однако это решение во много раз увеличивает использование памяти. В предпочтительном варианте осуществления изобретения, в котором точность вектора движения имеет разрешение в пиксела как в горизонтальном, так и в вертикальном направлениях, хранение заранее вычисленных значений под-пикселов для всего изображения требует в 16 раз больше памяти, чем требуется для хранения исходного неинтерполированного изображения. Чтобы уменьшить использование памяти, все под-пикселы разрешения могут интерполироваться предварительно, а под-пикселы разрешения могут вычисляться по запросу, то есть только тогда, когда в этом есть необходимость. В соответствии со способом, соответствующим изобретению, интерполяция по запросу значений под-пикселов разрешения требует только линейной интерполяции на основе под-пикселов разрешения. Потребуется в 4 раза больше памяти по сравнению с объемом памяти для исходного изображения для хранения заранее вычисленных под-пикселов разрешения, поскольку для их представления требуется только 8 битов.
Однако если та же самая стратегия предварительного вычисления всех под-пикселов разрешения с использованием предварительной интерполяции используется совместно со схемой прямой интерполяции по ОМ6, то требования к памяти вырастают в 9 раз по сравнению с тем, сколько памяти требуется для хранения исходного неинтерполированного изображения. Это происходит из-за того, что для хранения высокоточных промежуточных значений, связанных с каждым под-пикселом разрешения в ОМ6, требуется большее количество битов. Кроме того, сложность интерполяции под-пикселов во время оценки движения в ОМ6 выше, так как масштабирование и ограничение должны проводиться для каждого местоположения под-пиксела разрешения и.
Ниже сложность способа интерполяции значений под-пикселов в соответствии с изобретением, примененным в видеодекодере, сравнивается со сложностью схем интерполяции, использованных в ОМ5 и ОМ6. В этом анализе предполагается, что в каждом способе интерполяция каждого значения под-пиксела проводится только с использованием минимального количества этапов, требуемых для получения корректно интерполированного значения. Далее предполагается, что каждый способ реализован основанным на блоках образом, то есть промежуточные значения, общие для всех под-пикселов, подлежащих интерполяции в конкретном блоке N×М, вычисляются только один раз. Приведенный в качестве иллюстрации пример показан на фиг.16. На фиг.16 можно видеть, что для вычисления блока 4×4 под-пикселов с разрешения 1/2 сначала вычисляется блок 9×4 под-пикселов b разрешения 1/2.
По сравнению со способом интерполяции значений под-пикселов, используемым в ОМ5, способ в соответствии с изобретением имеет меньшую вычислительную сложность по следующим причинам:
1. В отличие от схемы интерполяции значений под-пикселов, используемой в ОМ5, в соответствии со способом по изобретению значение под-пиксела с разрешения 1/2 может быть получено путем фильтрации либо в вертикальном либо в горизонтальном направлении. Таким образом, для уменьшения количества операций под-пиксел с разрешения 1/2 может интерполироваться в вертикальном направлении, если требуется значение для под-пиксела f разрешения 1/4, и в горизонтальном направлении, если требуется значение для под-пиксела g разрешения 1/4. Например, фиг.17 показывает все значения под-пикселов разрешения 1/2, которые должны быть вычислены для интерполяции значений для под-пикселов g разрешения 1/4 в блоке изображения, определенном 4×4 пикселами исходного изображения, с использованием способа интерполяции по ОМ5 (фиг.17а), и с использованием способа по изобретению (фиг.17b). В этом примере способ интерполяции значений под-пикселов в соответствии с ОМ5 требует, чтобы все 88 под-пикселов разрешения были интерполированы, тогда как способ в соответствии с изобретением требует вычисления 72 под-пикселов разрешения 1/2. Как можно видеть на фиг.17b, в соответствии с изобретением под-пикселы разрешения 1/2 интерполируются в горизонтальном направлении для уменьшения количества требуемых вычислений.
2. В соответствии со способом по изобретению под-пиксел h разрешения 1/4 вычисляется путем линейной интерполяции из двух его ближайших соседних под-пикселов разрешения 1/2 в диагональном направлении. Соответствующие количества под-пикселов разрешения 1/2, которые должны вычисляться для получения значений для под-пикселов h разрешения 1/4 внутри блока 4×4 пикселов исходного изображения с использованием способа интерполяции значений под-пикселов по ОМ5 и способа в соответствии с изобретением, показаны соответственно на фиг.18 (а) и 18 (b). При использовании способа в соответствии с ОМ5 необходимо интерполировать всего 56 под-пикселов разрешения 1/2, тогда как в соответствии со способом по изобретению необходимо интерполировать 40 под-пикселов разрешения 1/2.
Таблица 1 обобщает сложности декодера трех способов интерполяции значений под-пикселов: способ в соответствии с ОМ5, способ прямой интерполяции, используемый в ОМ6, и способ в соответствии с изобретением. Сложность измерялась в терминах количества выполняемых операций 6-отводного фильтра и линейной интерполяции. Предполагается, что интерполяция под-пиксела i разрешения вычисляется в соответствии со следующей формулой: i=(А1+А2+А3+А4+2)/4, которая является билинейной интерполяцией и эффективно содержит две операции линейной интерполяции.
Операции, необходимые для интерполяции значений под-пикселов в одном блоке 4×4 пикселов исходного изображения, перечислены для каждого из 15 местоположений под-пикселов, которые для удобства ссылки пронумерованы в соответствии со схемой, показанной на фиг.19. На фиг.19 местоположением 1 является местоположение пиксела А исходного изображения, а местоположениями 2-16 являются местоположения под-пикселов. Положением 16 является положение под-пиксела i разрешения. Для вычисления среднего числа операций предполагается, что вероятность указания вектором движения на каждое местоположение под-пиксела одинакова. Средняя сложность, следовательно, является усредненным значением 15 сумм, вычисленных для каждого положения под-пиксела и одного положения полного пиксела.
Сложность интерполяции под-пиксела разрешения 1/4 в ОМ5, ОМ6 и способе в соответствии с изобретением
Из таблицы 1 можно видеть, что способ в соответствии с изобретением требует меньше операций 6-отводного фильтра, чем способ интерполяции значений под-пикселов по ОМ6, и лишь несколько дополнительных операций линейной интерполяции. Поскольку операции 6-отводного фильтра существенно сложнее, чем операции линейной интерполяции, сложность двух способов одинакова. Способ интерполяции значений под-пикселов по ОМ5 имеет существенно большую сложность.
Теперь со ссылками на фиг.20, 21 и 22 будет описан предпочтительный вариант осуществления интерполяции под-пикселов с разрешением до 1/8 пиксела.
Фиг.20 представляет номенклатуру, используемую для описания пикселов, под-пикселов разрешения 1/2, под-пикселов разрешения 1/4 и под-пикселов разрешения 1/8 в этом расширенном применении способа в соответствии с изобретением.
1. Значения для под-пикселов разрешения 1/2 и разрешения 1/4, обозначенные b1, b2 и b3 на фиг.20, получают сначала вычислением промежуточных значений в соответствии со следующими формулами:
b1=(-3А1+12А2-37А3+229А4+71А5-21А6+6А7-А8); b2=(-3A1+12A2-39А3+158А4+158А5-39А6+12А7-3А8); и b3=(-A1+6A2-21A3+71A4+229A5-37А6+13А7-3А8),
с использованием значений восьми ближайших пикселов (A1-A8) изображения, расположенных в целых горизонтальных и целых вертикальных местоположениях либо в строке, либо в столбце, содержащих b1, b2 и b3, и расположенных симметрично вокруг под-пиксела b2 разрешения 1/2. Асимметрия в коэффициентах фильтра, используемых для получения промежуточных значений b1 и b3, отражает тот факт, что пикселы A1-A8 расположены несимметрично по отношению к под-пикселам b1 и b3 разрешения 1/4. Конечные значения для под-пикселов bi, i=1, 2, 3, вычисляются в соответствии со следующей формулой: bi=(bi+128)/256, где оператор "/" обозначает деление с усечением. Результат усекается, чтобы попасть в диапазон [0, 255].
2. Значения для под-пикселов разрешения 1/2 и разрешения 1/4, обозначенные позициями сij, i, j=1, 2, 3, вычисляются в соответствии со следующими формулами:
с использованием промежуточных значений b1, b2 и b3, вычисленных для восьми ближайших под-пикселов (b1 j-b8 j) в вертикальном направлении, причем под-пикселы b3 расположены в столбце, содержащем под-пикселы сij разрешения 1/2 и разрешения 1/4, интерполированные и расположенные симметрично вокруг под-пиксела с2j разрешения 1/2. Асимметрия в коэффициентах фильтра, используемых для получения значений для под-пикселов с1j и с3j, отражает тот факт, что под-пикселы b1 j-b8 j расположены несимметрично по отношению к под-пикселам с1j и с3j разрешения 1/4. Опять же оператор "/" обозначает деление с усечением. Перед тем как интерполированные значения для под-пикселов сij сохраняются в кадровой памяти, они ограничиваются, чтобы попасть в диапазон [0, 255]. В альтернативном варианте осуществления изобретения под-пикселы сij разрешения 1/2 и разрешения 1/4 вычисляются с использованием аналогичного способа с помощью промежуточных значений b1, b2 и b3 в горизонтальном направлении.
3. Значения для под-пикселов разрешения 1/8, обозначенных d, вычисляются с использованием линейной интерполяции из значений их ближайшего соседнего пиксела изображения, под-пикселов разрешения 1/2 или под-пикселов разрешения 1/4 в горизонтальном или вертикальном направлении. Например, верхний самый левый под-пиксел е разрешения 1/8 вычисляется в соответствии со следующей формулой: d=(A+b1+1]/2. Как и раньше, оператор "/" обозначает деление с усечением.
4. Значения для под-пикселов разрешения 1/8, обозначенных е и f, вычисляются с использованием линейной интерполяции из значений пикселов изображения, под-пикселов разрешения 1/2 или под-пикселов разрешения 1/4 в диагональном направлении. Например, на фиг.20 верхний самый левый под-пиксел е разрешения 1/8 вычисляется в соответствии со следующей формулой: е=(b1+b1+1)/2. Диагональное направление, подлежащее использованию в интерполяции каждого под-пиксела разрешения 1/8 в первом предпочтительном варианте осуществления изобретения, который далее именуется как "предпочтительный способ 1", показано на фиг 21(а). Значения для под-пикселов g разрешения 1/8, обозначенных g, вычисляются в соответствии со следующей формулой: g=(А+3с22+3)/4. Как всегда, оператор "/" обозначает деление с усечением. В альтернативном варианте осуществления изобретения, который далее именуется как "предпочтительный способ 2", вычислительная сложность еще более сокращается путем интерполяции под-пикселов f разрешения 1/8 с использованием линейной интерполяции из под-пикселов b2 разрешения 1/2, то есть в соответствии со следующей формулой: f=(3b2+b2+2)/4. Под-пиксел b2, который находится ближе всего к f, умножается на 3. Схема диагональной интерполяции, использованная в этом альтернативном варианте осуществления изобретения, показана на фиг 21(b). В дальнейших альтернативных вариантах осуществления могут быть предусмотрены и другие схемы диагональной интерполяции.
Следует отметить, что все случаи, когда для определения под-пикселов разрешения 1/8 используется усредненное значение, включающее в себя значения пикселов и/или под-пикселов, это усредненное значение может быть сформировано любым подходящим образом. Результатом прибавления 1 к сумме значений, используемой при вычислении такого усредненного значения, является то, что применяется впоследствии любая операция округления или усечения, округляет или усекает рассматриваемое усредненное значение до следующего наибольшего целого значения. В альтернативных вариантах осуществления изобретения прибавление 1 не используется.
Как и в описанном выше случае интерполяции значений под-пикселов до разрешения в 1/4 пиксела, требования к памяти в кодере могут быть снижены путем предварительного вычисления только части значений под-пикселов, подлежащих интерполяции. В случае интерполяции значения под-пиксела до разрешения в 1/8 пиксела предпочтительно предварительно вычислить все под-пикселы разрешения 1/2 и разрешения 1/4, и вычислять значения для под-пикселов разрешения 1/8 в режиме "по-запросу", только когда это будет необходимо. Когда применяется этот подход, то и способ интерполяции в соответствии с ОМ5 и способ интерполяции в соответствии с изобретением требует в 16 раз больше памяти, чем требуется для хранения исходного изображения, чтобы хранить значения под-пикселов разрешения 1/2 и разрешения 1/4. Однако если способ прямой интерполяции в соответствии с ОМ6 используется так же, то должны сохраняться промежуточные значения для под-пикселов разрешения 1/2 и разрешения 1/4. Эти промежуточные значения представлены с 32-битовой точностью и это приводит к требованию в 64 раза большей памяти, чем для исходного неинтерполированного изображения.
Ниже сложность способа интерполяции значений под-пикселов в соответствии с изобретением при применении в видеодекодере для вычисления значений под-пикселов до разрешения в 1/8 пиксела сравнивается со сложностью схем интерполяции, использованных в ОМ5 и ОМ6. Как и в аналогичном анализе для интерполяции значения под-пиксела при разрешении в пиксела, описанном выше, предполагается, что в каждом способе интерполяция любого значения под-пиксела проводится только с использованием минимального количества операций, требуемых для получения корректно интерполированного значения. Далее предполагается, что каждый способ реализован основанным на блоках образом, то есть промежуточные значения, общие для всех под-пикселов, подлежащих интерполяции в конкретном блоке N×М, вычисляются только один раз.
Таблица 2 обобщает сложности трех способов интерполяции. Сложность измерялась в терминах количества выполняемых операций 8-отводного фильтра и линейной интерполяции, выполняемых в каждом способе. Таблица представляет количество операций, требуемых для интерполяции каждого из 63 под-пикселов разрешения 1/8 внутри одного блока 4×4 пикселов исходного изображения, причем каждое местоположение под-пиксела идентифицируется соответствующим номером, как показано на фиг.22. На фиг.22 местоположением 1 является местоположение пиксела исходного изображения, а местоположениями 2-64 являются местоположения под-пикселов. При вычислении среднего числа операций предполагается, что вероятность указания вектором движения на каждое местоположение под-пиксела одинакова. Средняя сложность, следовательно, является усредненным значением 63 сумм, вычисленных для каждого местоположения под-пиксела и одного местоположения полного пиксела.
Сложность интерполяции под-пиксела разрешения 1/8 в ОМ5, ОМ6 и
способе в соответствии с изобретением (результаты показаны отдельно для Предпочтительного способа 1 и Предпочтительного способа 2).
Как видно из таблицы 2, количество операций 8-отводного фильтра, выполняемых в соответствии с предпочтительными способами 1 и 2, соответственно на 26% и 34% меньше, чем количество операций 8-отводного фильтра, выполняемых в способе интерполяции значений под-пикселов по ОМ5. Количество линейных операций на 25% меньше, как в предпочтительном способе 1, так и предпочтительном способе 2, по сравнению с ОМ5, но это улучшение не так важно по сравнению с уменьшением количества операций 8-отводного фильтра. Можно видеть дальше, что способ прямой интерполяции, используемый в ОМ6, имеет сложность, сравнимую как с предпочтительным способом 1, так и с предпочтительным способом 2, когда используется для интерполяции значения для под-пикселов разрешения 1/8.
Из приведенного описания специалисту будет очевидно, что в рамках объема изобретения могут быть сделаны различные модификации. Хотя подробно описано несколько предпочтительных вариантов осуществления изобретения, следует понимать, что возможно также множество модификаций и изменений, все из которых лежат в рамках сущности и объема изобретения.
Изобретение относится к способу интерполяции значений под-пикселов при кодировании и декодировании данных. Техническим результатом является собственно создание усовершенствованного способа интерполяции значений под-пикселов при кодировании и декодировании данных. Предложен способ интерполяции при кодировании видеоданных, в котором изображение, содержащее пикселы, упорядоченные по строкам и столбцам и представленные значениями, имеющими заданный динамический диапазон, причем пикселы в строках находятся в целых горизонтальных местоположениях, а пикселы в столбцах находятся в целых вертикальных местоположениях, интерполируют так, чтобы генерировать значения под-пикселов в дробных горизонтальных и вертикальных местоположениях, при этом способ содержит следующие этапы: а) когда требуются значения для под-пикселов в полуцелых горизонтальных местоположениях и целых вертикальных местоположениях, и в целых горизонтальных местоположениях и полуцелых вертикальных местоположениях, интерполируют такие значения напрямую с помощью взвешенных сумм пикселов, находящихся в целых горизонтальных и целых вертикальных местоположениях; b) когда требуются значения для под-пикселов в полуцелых горизонтальных местоположениях и полуцелых вертикальных местоположениях, интерполируют такие значения напрямую с помощью взвешенной суммы значений для под-пикселов, находящихся в полуцелых горизонтальных местоположениях и целых вертикальных местоположениях, вычисленной в соответствии с этапом а); и с), когда требуются значения для под-пиксела в горизонтальном местоположении четверть целого и вертикальном местоположении четверть целого, интерполируют такие значения усреднением по меньшей мере одной пары из первой пары значений под-пиксела, находящегося в полуцелом горизонтальном местоположении и полуцелом вертикальном местоположении, и под-пиксела, находящегося в целом горизонтальном местоположении и целом вертикальном местоположении, и второй пары значений пиксела, находящегося в целом горизонтальном местоположении и целом вертикальном местоположении, и под-пиксела, находящегося в полуцелом горизонтальном местоположении и полуцелом вертикальном местоположении. 13 н. и 38 з.п. ф-лы, 20 ил., 2 табл.
интерполируют значение подпиксела для подпиксела, имеющего координаты с нечетными величинами как К, так и L, согласно заранее определенному выбору взвешенного среднего от значения ближайшего соседнего пиксела и значения подпиксела, местоположение которого определяется координатами 1/2, 1/2, и взвешенного среднего от значений пары диагонально отстоящих подпикселов, имеющих координаты с четными величинами как К, так и L, включая ноль, расположенных внутри квадранта упомянутой ограниченной прямоугольником области, задаваемого угловыми пикселами, имеющими координаты 1/2, 1/2, и упомянутым ближайшим соседним пикселом;
интерполируют значения подпикселов для подпикселов, имеющих координаты с К, равным четной величине, и L, равным нулю, и подпикселов, имеющих координаты с К, равным нулю, и L, равным четной величине, используемые при интерполяции подпикселов, имеющих координаты с нечетными величинами как К, так и L, используя взвешенные суммы значений пикселов, соответственным образом расположенных в строках и столбцах; и
интерполируют значения подпикселов для подпикселов, имеющих координаты с четными величинами как К, так и L, используемые при интерполяции значений подпикселов для подпикселов, имеющих координаты с нечетными величинами как К, так и L, используя заранее определенный выбор либо взвешенной суммы значений подпикселов, имеющих координаты с К, равным четной величине, и L, равным нулю, и значений подпикселов, имеющих соответствующие координаты в непосредственно примыкающих ограниченных прямоугольником областях, либо взвешенной суммы значений подпикселов, имеющих координаты с К, равным нулю, и L, равным четной величине, и значений подпикселов, имеющих соответствующие координаты в непосредственно примыкающих ограниченных прямоугольником областях.
интерполируют значения подпикселов для подпикселов, имеющих такие координаты, что К равно 2 и L равно нулю, и подпикселов, имеющих такие координаты, что К равно нулю и L равно 2, используемые при интерполяции подпикселов, имеющих такие координаты, что как К, так и L равны 1 или 3, используя взвешенные суммы значений пикселов, соответствующим образом расположенных в строках и столбцах; и
интерполируют значение подпиксела для подпиксела, имеющего такие координаты, что как К, так и L равны 2, используемое при интерполяции значений подпикселов для подпикселов, имеющих такие координаты, что как К, так и L равны 1 или 3, используя заранее определенный выбор либо взвешенной суммы значений подпикселов, имеющих такие координаты, что К равно 2 и L равно нулю, и значении подпикселов, имеющих соответствующие координаты в непосредственно примыкающих ограниченных прямоугольником областях, либо взвешенной суммы значения подпиксела, имеющего такие координаты, что К равно нулю и L равно 2, и значений подпикселов, имеющих соответствующие координаты в непосредственно примыкающих ограниченных прямоугольником областях.
интерполируют значения подпикселов для подпикселов, имеющих такие координаты, что К равно 2, 4 или 6 и L равно нулю, и подпикселов, имеющих такие координаты, что К равно нулю и L равно 2, 4 или 6, используемые при интерполяции подпикселов, имеющих такие координаты, что как К, так и L равны 1, 3, 5 или 7, используя взвешенные суммы значений пикселов, соответствующим образом расположенных в строках и столбцах; и
интерполируют значения подпикселов для подпикселов, имеющих такие координаты, что как К, так и L равны 2, 4 или 6, используемые при интерполяции значений подпикселов для подпикселов, имеющих такие координаты, что как К, так и L равны 1, 3, 5 или 7, используя заранее определенный выбор либо взвешенной суммы значений подпикселов, имеющих такие координаты, что К равно 2, 4 или 6 и L равно нулю, и значений подпикселов, имеющих соответствующие координаты в непосредственно примыкающих ограниченных прямоугольником областях, либо взвешенной суммы значений подпикселов, имеющих такие координаты, что К равно нулю и L равно 2, 4 или 6, и значений подпикселов, имеющих соответствующие координаты в непосредственно примыкающих ограниченных прямоугольником областях.
схемы, выполненные с возможностью интерполировать значения подпикселов для подпикселов, имеющих координаты с четными величинами как К, так и L, используемые при интерполяции значений подпикселов для подпикселов, имеющих координаты с нечетными величинами как К, так и L, используя заранее определенный выбор либо взвешенной суммы значений подпикселов, имеющих координаты с К, равным четной величине, и L, равным нулю, и значений подпикселов, имеющих соответствующие координаты в непосредственно примыкающих ограниченных прямоугольником областях, либо взвешенной суммы значений подпикселов, имеющих координаты с К, равным нулю, и L, равным четной величине, и значений подпикселов, имеющих соответствующие координаты в непосредственно примыкающих ограниченных прямоугольником областях.
ИНТЕРПОЛЯЦИОННЫЙ СПОСОБ СЖАТИЯ ТЕЛЕВИЗИОННОГО СИГНАЛА | 1996 |
|
RU2131172C1 |
US 5521642 А, 28.05.1996 | |||
US 6219464 B1, 17.04.2001 | |||
US 6252576 B1, 26.06.2001 | |||
US 5901248 А, 04.05.1999 | |||
US 5570436 А, 29.10.1996 | |||
US 5568597 А, 22.10.1996 | |||
ЕР 1083752 А1, 14.03.2001 | |||
Способ получения алюмоаммонийных квасцов | 1975 |
|
SU576290A1 |
JP 2000101872 А1, 07.04.2000. |
Авторы
Даты
2008-02-20—Публикация
2002-09-11—Подача