ВИДЕОКОДИРОВАНИЕ И КОДИРОВАНИЕ ИЗОБРАЖЕНИЙ С ШИРОКОУГОЛЬНЫМ ВНУТРЕННИМ ПРЕДСКАЗАНИЕМ
VIDEO CODING AND CODING OF IMAGES WITH WIDE-ANGLE INTERNAL PREDICTION

Область техники
Различные варианты осуществления изобретения, описанные в настоящей заявке, относятся к видекодированию и/или кодированию изображений на основе направленного внутреннего предсказания. В различных аспектах настоящего изобретения описаны способы, устройства, системы и компьютерные программные продукты для применения направленного внутреннего предсказания при видеокодировании и кодировании изображений, а также соответствующий сигнал, или структура данных.
Предпосылки создания изобретения
Настоящий раздел имеет целью представить предпосылки или контекст настоящего изобретения, заявленного в пунктах формулы изобретения. Это описание может включать концепции, которые могли быть рассмотрены, но не обязательно только уже предложенные или получившие развитие. Соответственно, в настоящем документе, если не указано на обратное, описание в данном разделе не является описанием существующего уровня техники для формулы изобретения настоящей заявки, и не признается существующим уровнем техники вследствие включения в данный раздел. В результате направленного внутреннего предсказания получают блоки предсказанных отсчетов (т.е. значений пикселей), которые основаны на декодированных значениях вокруг этого блока, путем экстраполяции граничных значений по направлению внутрь предсказываемого блока. Кодирование реального блока изображения может выполняться на основе предсказанного таким образом блока, при этом вместо непосредственного кодирования исходного блока может кодироваться ошибка предсказания между предсказанным блоком и исходным блоком. В общем случае, чем точнее предсказание, тем более эффективно кодирование изображения. Внутренне кодированные изображения, как правило, имеют больший объем по сравнению с изображениями, кодированными с использованием межкадрового предсказания.
Поэтому необходимы решения, позволяющие повысить эффективность видеокодирования и кодирования изображений на основе направленного внутреннего предсказания.
Сущность изобретения
В настоящем изобретении предложены улучшенный способ и технические средства, реализующие этот способ, при помощи которых по меньшей мере частично могут быть решены описанные выше проблемы. Различные аспекты настоящего изобретения включают способ, устройство, сервер, клиент и машиночитаемый носитель, на котором хранят компьютерную программу, имеющие отличительные признаки, перечисленные в независимых пунктах формулы изобретения. Различные варианты осуществления настоящего изобретения описаны в зависимых пунктах формулы изобретения. В настоящем изобретении предложены способы, устройства, системы и компьютерные программные продукты, а также сигналы, для направленного внутреннего предсказания изображений с «широкоугольными» направлениями предсказания. Под широким углом понимается то, что направление, по которому берут опорное значение для предсказываемого пикселя, образует тупой угол с направлением «влево-вверх» (направлением, лежащим посередине направлений «вверх» и «влево»). Указание на подобный широкоугольный режим (т.е. направление) предсказания может кодироваться непосредственно в битовом потоке, в качестве выбранного режима. Применяемые широкоугольные направления, их количество и точная направленность, а также их вероятности, могут определяться формой предсказываемого блока. Широкоугольные режимы могут соответствовать обычным узкоугольным режимам, будучи их «зеркальными режимами». Зеркальные режимы могут быть противоположными, по существу противоположными или расположенными под углом, но отчасти противоположными, основным узкоугольным режимам. Имеется возможность выбора конкретного используемого основного и широкоугольного режимов.
В соответствии с первым аспектом настоящего изобретения, предложен способ декодирования, включающий прием битового потока, содержащего кодированные данные изображения, формирование, из битового потока в компьютерной памяти, набора опорных пикселей, имеющих опорные значения пикселей для направленного внутреннего предсказания изображений, предсказание значения пикселя в предсказываемом блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей для формирования предсказанного значения пикселя, при этом выбранные опорные пиксели выбирают согласно направлению предсказания относительно предсказываемого пикселя, и при этом направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от предсказываемого пикселя, повторение предсказания пикселя для множества пикселей, чтобы получить предсказанный блок изображения, и использование предсказанного блока изображения при декодировании блока изображения из битового потока, чтобы получить декодированный блок изображения.
Предсказываемый блок изображения может иметь некоторую форму. Способ может включать определение его формы на основе битового потока. Способ может включать определение режимов направленного предсказания, используемых при направленном внутреннем предсказании изображений, на основе упомянутой формы, и при предсказании значения пикселя, выбор направления предсказания на основе режимов направленного предсказания. Способ может включать определение режимов предсказания, используемых при направленном внутреннем предсказании изображений, определение вероятных режимов предсказания на основе формы, декодирование индикатора из битового потока, указывающего, является ли направление предсказания одним из вероятных режимов предсказания, и выбор направления предсказания из вероятных режимов предсказания. Способ может включать определение режимов направленного предсказания, используемых при направленном внутреннем предсказании изображений, декодирование индикатора направления из битового потока, выбор направления предсказания для предсказания значения пикселя из основного направления и широкоугольного направления, при этом основное направление и широкоугольное направление связаны с индикатором направления. Способ может включать декодирование индикатора выбора направления предсказания из битового потока и выбор направления предсказания для предсказания значения пикселя из нормального направления и широкоугольного направления с использованием указателя выбора направления предсказания. Способ может включать выбор направления предсказания для предсказания значения пикселя из основного направления и широкоугольного направления на основе формы. Основное направление может быть связано с широкоугольным направлением таким образом, что основное направление и широкоугольное направление являются по существу противоположными направлениями.
Основное направление может быть связано с широкоугольным направлением таким образом, что основное направление и широкоугольное направление не являются по существу противоположными направлениями, но основное направление и широкоугольное направление лежат на противоположных сторонах от направления «влево-вверх». С одним основным направлением могут быть связаны несколько широкоугольных направлений, либо с несколькими основными направлениями может быть связано одно широкоугольное направление, либо и то, и другое одновременно. Способ может включать определение режимов направленного предсказания, используемых при направленном внутреннем предсказании изображений, декодирование индикатора направления из битового потока, формирование предсказанного направления предсказания для предсказания значения пикселя, которое может быть нормальным направлением или широкоугольным направлением, с использованием формы, при этом нормальное направление и широкоугольное направление связаны с индикатором направления, и выбор направления предсказания на основе предсказанного направления предсказания.
В соответствии со вторым аспектом настоящего изобретения, предложен способ кодирования, включающий прием битового потока, подлежащего кодированию, формирование, из данных изображения, в компьютерной памяти, набора опорных пикселей, имеющих опорные значения пикселей для направленного внутреннего предсказания изображений, предсказание значения пикселя в предсказываемом блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей для формирования предсказанного значения пикселя, при этом выбранные опорные пиксели выбирают согласно направлению предсказания относительно предсказываемого пикселя, при этом направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от предсказываемого пикселя, повторение предсказания пикселя для множества пикселей, чтобы получить предсказанный блок изображения, и использование предсказанного блока изображения при кодировании блока изображения в битовый поток. Способ кодирования может включать отличительные признаки, которые аналогичны способу декодирования, в качестве части способа кодирования, описанного ниже в пронумерованных примерах. В соответствии с третьим аспектом настоящего изобретения предложен декодер, сконфигурированный для выполнения способа декодирования, в соответствии с описанием в пронумерованных примерах.
В соответствии с четвертым аспектом настоящего изобретения предложен кодер, сконфигурированный для выполнения способа кодирования в соответствии с описанием в пронумерованных примерах. В соответствии с пятым аспектом настоящего изобретения предложена система декодирования, описанная в пронумерованных примерах. В соответствии с шестым аспектом настоящего изобретения предложена система кодирования, описанная в пронумерованных примерах.
В соответствии с седьмым аспектом настоящего изобретения предложен компьютерный программный продукт для декодирования, описанный в пронумерованных примерах.
В соответствии с восьмым аспектом настоящего изобретения предложен компьютерный программный продукт для кодирования, описанный в пронумерованных примерах.
В соответствии с девятым аспектом настоящего изобретения предложен сигнал, материализованный на машиночитаемом носителе, описанный в пронумерованных примерах.
Описание чертежей
Далее различные варианты осуществления настоящего изобретения будут описано более подробно со ссылками на приложенные чертежи, где:
на фиг. 1а и 1b показаны системы и устройства для кодирования и декодирования изображений и видео;
на фиг. 2а и 2b показаны блок-схемы кодера и декодера;
на фиг. 3а, 3b и 3с проиллюстрировано направленное внутреннее предсказание изображений;
на фиг. 4а, 4b, 4с и 4d проиллюстрировано широкоугольное направленное внутреннее предсказание изображений;
на фиг. 5а, 5b, 5с и 5d проиллюстрированы режимы широкоугольного направленного внутреннего предсказания; и
на фиг. 6а, 6b, 6с и 6d показаны блок-схемы алгоритмов кодирования и декодирования, в которых применяют широкоугольное направленное внутреннее предсказание.
Описание примеров осуществления изобретения
Далее будут описаны несколько вариантов осуществления настоящего изобретения в контексте кодирования и декодирования видео. Нужно, однако, понимать, что настоящее изобретение не ограничено кодированием и декодированием видео, и может применяться для кодирования и декодирования статичных изображений, а также для преобразования (перекодирования) в различные форматы изображений и видео. Фактически, различные варианты осуществления настоящего изобретения могут применяться в любых контекстах, где необходимо направленное внутреннее предсказание изображений или видео.
На фиг. 1а и 1b показаны система и устройства для кодирования и/или передачи изображений и/или видео в соответствии с примерами. На фиг. 1а различные устройства могут быть соединены по стационарной сети 110, например, Интернету или локальной вычислительной сети; или по сети 120 мобильной связи, например, глобальной системы мобильной связи (Global System for Mobile communications, GSM), сети третьего поколения (3rd Generation, 3G), сети поколения 3.5 (3.5th Generation, 3.5G), сети четвертого поколения (4th Generation, 4G), сети пятого поколения (5th Generation, 5G), беспроводной локальной вычислительной сети (Wireless Local Area Network, WLAN), Bluetooth или другой современной или разработанной в будущем сети. Различные сети соединены друг с другом при помощи интерфейса 180 связи. Сети имеют в своем составе сетевые элементы, такие как маршрутизаторы и коммутаторы, обрабатывающие данные, а также интерфейсы связи, такие как базовые станции 130 и 131, предоставляющие доступ к сети различным устройствам, при этом сами базовые станции 130, 131 подключены к мобильной сети 120 по стационарному соединению 176 или беспроводному соединению 177. К сети могут быть подключены множество серверов. Так, в примере фиг.1а показан сервер 140, предоставляющий в сети услуги доступа к изображениям или видео, или их потоковой передачи, и связанный со стационарной сетью 110, сервер 141 для обработки (например, кодирования или перекодирования) данных изображений/видео, и связанный со стационарной сетью 110, а также сервер 142, предоставляющий сетевые услуги, например, обмена изображениями/видео, и связанный с мобильной сетью 120. Некоторые из упомянутых выше устройств, например, компьютеры 140, 141, 142, могут быть частью сети Интернет, вместе с элементами связи, расположенными в стационарной или беспроводной сети 110.
Присутствуют также множество устройств оконечных пользователей, таких как мобильные телефоны или смартфоны 151, устройства 150 для доступа к Интернету (Интернет-планшеты), персональные компьютеры 160 различных размеров и форматов, телевизоры и другие воспроизводящие устройства 161, видеодекодеры и проигрыватели 162, а также видеокамеры 163 и другие кодеры. Эти устройства 150, 151, 160, 161, 162 и 163 могут также состоять из множества частей. Эти различные устройства могут быть подключены к сетям 110 и 120 по соединениям связи, например, по стационарному соединению 170, 171, 172 и 180 к сети Интернет, по беспроводному соединению 173 к сети Интернет 110, по стационарному соединению 175 с мобильной сетью 120, и по беспроводному соединению 178, 179 и 182 с мобильной сетью 120. Соединения 171-182 реализованы при помощи интерфейсов связи на соответствующих концах соединений связи. Упомянутые различные устройства могут формировать, преобразовывать, передавать, принимать, декодировать и отображать изображения и видео в соответствии с приведенными в настоящем документе примерами.
На фиг. 1b показаны устройства для кодирования и декодирования (а также перекодирования, то есть декодирования и кодирования в другом формате) данных изображений или видео. В соответствии с иллюстрацией фиг. 1b, сервер 140 имеет в своем составе память 145, один или более процессоров 146, 147, а также компьютерный программный код 148, размещенный в памяти 145 для реализации, например, функциональности кодирования и/или декодирования. Различные серверы 141, 142 могут иметь по меньшей мере эти же элементы для реализации соответствующей функциональности в каждом сервере. Аналогично, устройство 151 оконечного пользователя имеет памяти 152, по меньшей мере один процессор 153 и 156, а также компьютерный программный код 154, размещенный в памяти 152, например, для кодирования или декодирования данных изображений, поступающих с камеры устройства. Устройство оконечного пользователя может иметь одну или более камер 155 и 159 для захвата данных изображений, например, видеопотока, содержащего множество кадров, или стационарных изображений. Устройство оконечного пользователя может также иметь один, два или более микрофонов 157 и 158 для захвата звука. Различные устройства 150, 160 оконечного пользователя могут иметь по меньшей мере эти же элементы для реализации соответствующей функциональности в каждом устройстве. Устройства оконечных пользователей могут также иметь экран для отображения графического пользовательского интерфейса. Устройства оконечных пользователей и серверы могут также иметь в своем составе различные модули связи, или функциональность связи, реализованную в одном модуле, для связи с другими устройствами.
Различные устройства оконечных пользователей и серверы могут иметь форму устройств связи или других устройств с функциями связи. К примеру, такими устройствами могут быть игрушки, домашние приборы, например, кухонные комбайны, развлекательные устройства (телевизоры, музыкальные или мультимедийные устройства), а также элементы строений, одежды, транспортных средств или любые другие устройства, способные осуществлять связь друг с другом.
Нужно понимать, что в различных вариантах осуществления настоящего изобретения различные части могут быть реализованы в различных элементах. К примеру, прием и преобразование визуальных данных (изображений или видео) может выполняться полностью в одном пользовательском устройстве 150, 151 или 160, или в одном серверном устройстве 140, 141 или 142, или распределенно по множеству пользовательских устройств 150, 151, 161, или по множеству сетевых устройств 140, 141, 142 одновременно по пользовательским устройствам 150, 151, 160 и сетевым устройствам 140, 141, 142. К примеру, визуальные данные (изображения или видео) могут формироваться и храниться в одном устройстве, кодирование визуальных данных может происходить в другом устройстве, а декодирование в третьем (например, на сервере). Соответствующее программное обеспечение для реализации этой функциональности может размещаться в одном устройстве или быть распределенным по нескольким устройствам, как отмечалось выше, например, таким образом что устройства образуют так называемое «облако».
Различные варианты осуществления настоящего изобретения могут быть реализованы в виде программного обеспечения, исполняемого на мобильных устройствах, и опционально, на серверах. Мобильные телефоны могут быть оснащены по меньшей мере памятью, процессором, дисплеем, клавиатурой, аппаратурой регистрации движения и средствами связи, например, 2G, 3G, WLAN и т.п. Различные устройства могут иметь такое аппаратное обеспечение, как сенсорный экран («синглтач» или «мультитач»), а также средства позиционирования, например модуль сетевого позиционирования или модуль глобальной системы позиционирования (global positioning system, GPS). На устройствах могут присутствовать различные приложения, например, приложение календаря, приложение телефонной книги, приложение карты, приложения обмена сообщениями, приложение интернет-браузера, приложение галереи изображений, приложение видеопроигрывателя, а также другие различные приложения для корпоративного и/или частного применения. Эти устройства могут иметь различные модули связи для связи с другими устройствами.
Видеокодек состоит из кодера, при помощи которого входные видеоданные преобразуют в сжатое представление, подходящее для хранения и передачи, а также декодера, при помощи которого сжатое представление видеоданных распаковывают, возвращая их к форме, пригодной для просмотра пользователем. Как правило, в кодере часть информации исходной видеопоследовательности отбрасывается с целью представления видеоинформации в более компактной форме (т.е. с меньшим битрейтом).
Типовые гибридные видеокодеки, например, соответствующие стандартам ITU-T Н.263 и Н.264, кодируют видеоинформацию в два этапа. Сначала предсказывают значения пикселей в определенной области изображения (или «блоке пикселей»), например, с использованием механизмов компенсации движения (нахождение области в одном из предварительно закодированных видеокадров, которая близко соответствует кодируемому в текущий момент блоку пикселей, и указание на эту область) или с использованием средств пространственного предсказания (использование, заданным образом, значений пикселей вокруг кодируемого блока пикселей). Затем кодируют ошибку предсказания, т.е. разность между предсказанным блоком пикселей и исходным блоком пикселей. Как правило, это выполняется при помощи преобразования разности пиксельных значений с использованием заданного преобразования (например, дискретного косинусного преобразования (Discrete Cosine Transform, DCT), или его варианта), квантования его коэффициентов и энтропийного кодирования квантованных коэффициентов. Регулируя степень детализации в процедуре квантования, кодер может управлять балансом между точностью представления пикселей (качеством изображения) и размером результирующей кодированной видеорепрезентации (размером файла или битрейтом).
n
n
n
n
n
intra
n
-1
-1
Кодер и способ кодирования, который он выполняет, показаны на фиг. 2а. На фиг. 2а кодируемое изображение подают на вход кодера. Входное изображение может быть статичным изображением или кадром видеосигнала. Получают предсказанное представление блока Р' изображения, которое вычитают из входных данных изображения и получают сигнал D ошибки предсказания. Сигнал ошибки предсказания кодируют при помощи преобразования Т и квантования Q. Восстановленный сигнал D' ошибки предсказания получают при помощи обратного квантования Q и обратного преобразования Т, и используют для формирования предварительного восстановленного изображения I'. Предсказанное представление Р' блока изображения может быть получено либо при помощи внутреннего предсказания P, либо внешнего предсказания Pinter, в зависимости от режима (MS - mode selection (выбор режима)). При внешнем предсказании, когда это требуется, используют фильтрацию F и память опорных кадров (reference frame memory, RFM) для хранения окончательного восстановленного изображения R'. Изображения в памяти опорных кадров соответствуют изображениям, в конечном счете получаемым декодером в результате процедуры декодирования. Преобразованную и квантованную ошибку предсказания, а также выбор режима и другие параметры кодирования, кодируют энтропийно при помощи энтропийного кодера Е. Результирующий битовый поток сохраняют или передают, и затем декодируют декодером.
Кодер на фиг. 2а может иметь в своем составе декодер, который декодирует закодированные данные изображений, чтобы использовать эти декодированные данные изображений в процессе предсказания. Декодированные данные изображения хранят в буфере, например, в буфере опорных изображений. Когда кодер кодирует поступающие видеоданные с использованием предсказания, используют буферизованные декодированные данные из буфера. В кодере поступающие видеоданные могут также использоваться в качестве основы для предсказания, чтобы ускорить его работу, однако такой подход вносит ошибку кодирования, поскольку в качестве основы для предсказания в декодере применяются кодированные и декодированные видеоданные, отличающиеся от входных видеоданных кодера. В некоторых видеокодеках, например, HEVC [1], видеоизображения разделяют на блоки кодирования (CU), покрывающие область изображения. Каждый из блоков кодирования состоит из одного или более блоков предсказания (prediction unit, PU), определяющих процедуру предсказания отсчетов в блоке кодирования, а также одного или более блоков преобразования (transform units, TU), определяющих процедуру кодирования ошибки предсказания для отсчетов в блоке кодирования. Как правило, блок кодирования состоит из прямоугольного блока отсчетов, размер которого выбирается из заранее заданного множества допустимых размеров блока кодирования. Блок кодирования максимально допустимого размера, как правило, называется LCU (largest coding unit, наибольший блок кодирования) или блоком с древовидной структурой кодирования (coding tree unit, (CTU), при этом изображение в видео разбивается на неперекрывающиеся блоки LCU. Блок CTU может быть дополнительно разделен на комбинацию менее крупных блоков кодирования, например, при помощи рекурсивного разбиения CTU-блоков и результирующих блоков кодирования. Каждый из результирующих блоков кодирования, как правило, имеет связанными с ним по меньшей мере один блок предсказания и один блок преобразования. Каждый блок предсказания и блок преобразования могут быть разбиты на менее крупные блоки предсказания и блоки преобразования с целью повышения точности процедур предсказания и кодирования ошибки предсказания соответственно. Каждый блок предсказания имеет связанную с ним информацию предсказания, которая определяет, предсказание какого типа должно применяться к пикселям данного блока предсказания (например, информацию вектора движения в случае блока предсказания с внешним предсказанием, или информацию направления внутреннего предсказания в случае внутренне предсказываемого блока предсказания). Аналогично, каждый блок преобразования связан с информацией, описывающей процедуру декодирования ошибки предсказания для значений в данном блоке преобразования (включая, например, информацию о коэффициентах DCT-преобразования). Информацию о необходимости применения кодирования ошибки предсказания для каждого блока кодирования сигнализируют в синтаксических элементах, относящихся к блоку кодирования. Если остатка или ошибки предсказания, связанного с блоком кодирования нет, то можно считать, что для данного блока кодирования блоки преобразования отсутствуют. Информацию о разделении изображения на блоки кодирования, и о разделении блоков кодирования на блоки предсказания и блоки преобразования, сигнализируют, как правило, в битовом потоке, что позволяет декодеру воспроизводить заданную структуру этих блоков. Внешнее предсказание, которое может также называться временным предсказанием, компенсацией движения или предсказанием с компенсацией движения, позволяет понизить временную избыточность. Источником информации для внешнего предсказания являются ранее декодированные изображения. Для внешнего предсказания используют тот факт, что смежные пиксели в одном изображении с большой вероятностью являются коррелированными. Внутреннее предсказание может выполняться в пространственном или во временном домене, т.е. могут предсказываться либо значения элементов изображения, либо коэффициенты преобразования. Внутреннее предсказание обычно применяют при внутреннем кодировании, когда внешнее предсказание не применяется.
Одним из результатов процедуры кодирования является набор параметров кодирования, таких как векторы движения и коэффициенты преобразования. Энтропийное кодирование множества параметров может быть более эффективным, если сначала выполняется их предсказание на основе пространственно-смежных или соседних по времени параметров Например, вектор движения может предсказываться на основе пространственно смежных векторов движения, при этом кодироваться может только разность относительно предсказания вектора движения. В случае кодирования одного или более статичных изображений, выходные данные могут называться «битовым потоком изображений», а в случае видеокодирования, выходные данные могут называться «битовым видеопотоком».
Декодер восстанавливает выходную видеоинформацию, применяя средства предсказания, аналогично кодеру, для формирования предсказанного представления блоков пикселей (с использованием информации о движении или пространственной информации, созданной кодером и хранимой в сжатом представлении) и декодирования ошибки предсказания (операция, обратная кодированию ошибки предсказания, для восстановления квантованного сигнала ошибки предсказания в пространственном домене пикселей). После применения средств декодирования предсказания и ошибки предсказания пикселей в декодере выполняется суммирование сигналов (пиксельных значений) предсказания и ошибки предсказания с формированием выходного видеокадра. В декодере (и кодере) могут также применяться дополнительные средства фильтрации, имеющие целью повышение качества выходного видеоизображения перед передачей его на отображение и/или хранение в качестве опорного для предсказания последующих кадров видеопоследовательности.
-1
-1
-1
n
n
n
n
n
n
n
n
Декодер и выполняемый им способ декодирования проиллюстрированы на фиг. 2b. На фиг. 2b входной битовый поток декодируют энтропийным декодером Е и получают сигнал ошибки предсказания, а также информацию о режиме декодирования. Ошибку предсказания декодируют при помощи обратного квантования Q и обратного преобразования Т, чтобы получить восстановленный сигнал D' ошибки предсказания. В зависимости от режима для предсказания пикселей используют либо внутреннее, либо внешнее предсказание Р, получая предсказанное представление блока Р' изображения. Для хранения ранее декодированных изображений используют память опорных кадров (RFM). На основе восстановленного сигнала D' ошибки предсказания и предсказанного представления блока Р' изображения получают предварительное восстановленное изображение I'. Предварительное восстановленное изображение I' может применяться для внутреннего предсказания, а также для получения окончательного восстановленного изображения R' при помощи фильтрации F. Выходное окончательное восстановленное изображение R' может быть сохранено в памяти опорных кадров (RFM) и отображено пользователю.
Элементарной единицей для ввода в декодер H.264/AVC или Н.265 и вывода из декодера H.264/AVC или Н.265, соответственно, является изображение. Изображение может представлять собой кадр или поле. Кадр включает в себя матрицу значений яркости и соответствующих значений цветности. Поле представляет собой множество чередующихся строк отсчетов в кадре и может использоваться в качестве входных данных для кодера в случае, когда исходный сигнал является чересстрочным. В стандартах H.264/AVC и Н.265 макроблок представляет собой блок отсчетов яркости размером 16×16 и соответствующие блоки отсчетов цветности. Например, при схеме дискретизации 4:2:0 макроблок будет содержать один блок отсчетов размером 8×8 для каждого компонента цветности. В стандарте H.264/AVC и Н.265 изображение разбивается на одну или более групп слайсов, при этом каждая группа слайсов содержит один или более слайсов. В стандартах H.264/AVC и Н.265 слайс состоит из целого числа блоков.
Вместо подхода с использованием значения предсказания отсчета и кодирования с преобразованием для указания на значения кодированных отсчетов, или в дополнение к таким подходом, может использоваться кодирование на основе палитры. Под кодированием на основе палитры понимается набор методов, для которых определена палитра, т.е. набор цветов и соответствующих им индексов, и при этом значение каждого отсчета в блоке кодирования может быть выражено при помощи указания его индекса в палитре. Кодирование на основе палитры позволяет добиться высокой эффективности кодирования в блоках кодирования с относительно небольшим количеством цветов (например, в областях изображения, которые представляют собой информацию на компьютерном экране, такую как текст или простую графику). Для повышения эффективности кодирования с палитрой могут применяться различные типы предсказания индексов палитры, или индексы палитры могут кодироваться кодом переменной длины, что позволяет получить более экономичное представление крупных однородных областей изображения. Также, в том случае, когда блок кодирования содержит значения отсчетов, которые более не встречаются в этом блоке кодирования, может применяться внешнее кодирование. Внешне кодированные отсчеты передуют без ссылок на какие-либо индексы палитры. Вместо их значения указывают индивидуально для каждого отдельного внешне кодированного отсчета.
В типичных видеокодеках на информацию о движении указывают при помощи векторов движения, связанных с каждой из групп пикселей изображения, для которых используется компенсация движения. Каждый из таких векторов движения является представлением смещения блока пикселей в кодируемом изображении (в кодере) или декодируемом изображении (в декодере) и блока пикселей, являющегося исходным для предсказания, в одном из ранее кодированных иди декодированных изображениях. С целью эффективного представления векторов движения, как правило, применяют их разностное кодирование относительно вектора движения, предсказанного для конкретного блока пикселей. Как правило, в видеокодеках предсказанные векторы движения формируются заранее заданным способом, например, при помощи вычисления среднего вектора движения двух смежных кодируемых или декодируемых блоков пикселей. Другим способом создания предсказаний векторов движения является формирование списка кандидатных предсказаний на основе соседних блоков пикселей и/или сорасположенных блоков пикселей в опорных изображения временного предсказания и сигнализация выбранного кандидата в качестве предсказания вектора движения. В дополнение к предсказанию значений векторов движения может также выполняться предсказание указателя на опорное изображение ранее кодированного или декодированного изображения. Указатель на опорное изображение, как правило, предсказывается на основе соседних блоков пикселей и/или сорасположенных блоков пикселей в опорном изображении временного предсказания. При этом, обычно, в кодеках стандарта высокоэффективного видеокодирования применяют дополнительный механизм кодирования/декодирования информации о движении, часто называемый режимом слияния, в котором вся информация поля движения, включающая вектор движения и указатель на соответствующее опорное изображение для каждого имеющегося списка опорных изображений, является предсказываемой и применяется без какого-либо изменения или коррекции. Аналогично, предсказание информации поля движения выполняют с использованием информации поля движения соседних блоков и/или сорасположенных блоков в опорных изображениях временного предсказания, а использованную информацию поля движения сигнализируют в списке кандидатных полей движения вместе с информацией поля движения имеющихся смежных и/или сорасположенных блоков.
Как правило, видеокодеки поддерживают предсказание с компенсацией движения на основе одного исходного изображения (уни-предсказание) и двух источников (би-предсказание). В случае уни-предсказания применяют единственный вектор движения, тогда как в случае би-предсказания сигнализируют два вектора движения, и два предсказания с компенсацией движения усредняют, чтобы получить окончательное предсказанное значение. В случае взвешенного предсказания возможна коррекция относительных весов этих двух предсказаний, или к предсказанному сигналу может добавляться сигнализированное смещение.
В дополнение к применению компенсации движения для внешнего предсказания изображений, аналогичный подход может быть применен и для внутреннего предсказания изображений. В этом случае вектор смещения указывает на то, из какого места того же самого изображения может быть скопирован блок отсчетов, формирующий предсказание кодируемого или декодируемого блока. Такой тип копирования блоков отсчетов внутри изображения позволяет значительно повысить эффективность кодирования при наличии в кадре повторяющихся структур, таких как текст или другая графика.
В типовых видеокодеках остаток предсказания после компенсации движения или внутреннего предсказания сначала преобразуют с помощью ядра преобразования (например, DCT), и только затем кодируют. Причиной тому является частое наличие остаточной корреляции в остатке предсказания, а преобразование во многих случаях позволяет снизить эту корреляцию и дает в результате более эффективное кодирование. В типовых видекодерах для поиска режимов кодирования с оптимальным соотношением битовой скорости/потери качества, например, необходимого режима макроблоков и связанных с ними векторов движения, используется целевая функция Лагранжа. В целевой функции такого типа используется весовой коэффициент, или λ, связывающий (точное или предполагаемое) значение искажения изображения в результате кодирования с потерями и (точное или предполагаемое) количество информации, необходимое для представления значений пикселей в некоторой области изображения:
где С - оптимизируемое значение функции Лагранжа, D - искажение изображения (например, среднеквадратическая ошибка) с учетом режима и его параметров, a R - количество битов, необходимое для представления данных, требуемых для восстановления блока изображения в декодере (включая количество данных для представления кандидатных векторов движения).
Масштабируемым видеокодированием называется такая структура кодирования, в которой один битовый поток может содержать несколько представлений (или репрезентаций) контента с различным битрейтом, разрешением или частотой смены кадров. В этих случаях приемник может извлекать требуемое представление в зависимости от своих характеристик (например, разрешения, наиболее подходящего для дисплейного устройства). Альтернативно, сервер или сетевой элемент может извлекать части битового потока для передачи в приемник в зависимости, например, от характеристик сети или вычислительных возможностей приемника. Масштабируемый битовый поток состоит, как правило, из «базового уровня», обеспечивающего наименьшее из доступных качество видеоинформации, а также из одного или более уточняющих уровней, которые повышают качество видеоинформации при их приеме и декодировании вместе с нижними уровнями. С целью повышения эффективности кодирования уточняющих уровней их кодированные представления, как правило, кодируют в зависимости от нижних уровней. Например, информация о движении и режиме уточняющего уровня может предсказываться на основе нижележащих уровней. Аналогично, данные пикселей нижних уровней могут применяться для формирования предсказания уточняющего уровня.
Видеокодек с масштабируемостью качества (также называемой масштабируемостью соотношения сигнал/шум, или SNR (Signal-to-Noise) и/или пространственной масштабируемостью может быть реализован описанным ниже способом. Для базового уровня применяют традиционные видеокодер и видеодекодер без масштабирования. Восстановленные или декодированные изображения базового уровня кодирования вносят в буфер опорных изображений для уточняющего уровня. В кодеках, соответствующих стандартам H.264/AVC, HEVC, и аналогичных кодеках, где применяется список (или списки) опорных изображений для внешнего предсказания, декодированные изображения базового уровня кодирования могут вноситься в список (или списки) опорных изображений для кодирования/декодирования изображения уточняющего уровня, аналогично декодированным опорным изображениям уточняющего уровня. Следовательно, в кодере опорное изображение базового уровня кодирования может выбираться в качестве опорного для внешнего предсказания, при этом указание на его использование, как правило, осуществляется с помощью указателя на опорное изображение в кодированном битовом потоке. В декодере из битового потока, например, на основе указателя на опорное изображение декодируется информация о том, что в качестве опорного изображения внешнего предсказания для уточняющего уровня было использовано изображение базового уровня. При использовании декодированного изображения базового уровня в качестве опорного для предсказания уточняющего уровня, оно называется межуровневым опорным изображением.
В дополнение к масштабированию качества, существуют следующие режимы масштабируемости:
- Пространственная масштабируемость: изображения базового уровня кодируют с меньшим разрешением, чем изображения уточняющих уровней.
- Масштабируемость битовой глубины: изображения базового уровня кодирования кодируют с меньшей битовой глубиной (например, 8 бит), чем изображения уточняющих уровней (например, 10 или 12 бит).
- Масштабируемость формата цветности: изображения базового уровня кодирования обеспечивают более высокую детализацию в составляющей цветности (например, кодированы в формате цветности 4:4:4), чем изображения уточняющих уровней (например, формат 4:2:0).
Во всех описанных выше случаях масштабируемости информация базового уровня может использоваться для кодирования уточняющего уровня в целях минимизации битрейта служебных данных.
Масштабируемость может обеспечиваться двумя основными способами: либо при помощи введения новых режимов кодирования для выполнения предсказания значения пикселей или синтаксических элементов на основе нижних уровней кодирования масштабируемого представления, либо при помощи помещения изображений нижнего уровня в буфер опорных изображений (буфер декодированных изображений (decoded picture buffer, DPB)) вышележащего уровня. Первый подход более гибок, и следовательно, в большинстве случаев позволяет получить более эффективное кодирование. Однако второй подход, т.е. масштабируемость, основанная на опорных кадрах, может быть очень эффективно реализована, лишь с минимальными изменениями в одноуровневых кодеках и с сохранением большинства преимуществ в эффективности кодирования. По существу, кодек с масштабируемостью на основе опорных кадров может быть реализован с применением одинаковых аппаратных или программных реализаций для всех уровней, необходимо лишь решить вопрос управления буфером DPB с помощью внешних средств. Для возможности параллельной обработки изображения могут быть разбиты на независимо кодируемые и декодируемые сегменты (слайсы или тайлы). Слайсами обычно называют сегменты изображения, состоящие из определенного числа базовых блоков кодирования, которые обрабатывают в заданном по умолчанию порядке кодирования или декодирования, тогда как тайлами обычно называют сегменты изображения, определенные как прямоугольные области изображения, обрабатываемые, по меньшей мере в некотором смысле, как отдельные кадры.
При традиционном направленном внутреннем предсказании набор возможных направлений ограничен диапазоном от -45 до 45 градусов сверху блока и от -45 до 45 градусов слева от блока. Такой 180-градусный диапазон, от диагонали вправо-вверх до диагонали вниз-влево, хорошо подходит для традиционных квадратных блоков внутреннего предсказания. К примеру, в стандартах видеокодирования H.264/AVC и H.265/HEVC применяется традиционное пространственное внутреннее предсказание с квадратными блоками предсказания и направлениями внутреннего предсказания от -45 до +45 градусов сверху блока и от -45 до 45 градусов слева от блока.
На фиг. 3а показан набор направлений внутреннего предсказания, применяемый в стандарте видеокодирования H.265/HEVC. Численные значения для горизонтального предсказания от левой границы и вертикального предсказания от верхней границы лежат в диапазоне от -32 до 32 и позволяют задавать разницу проецирования на длину отсчета с точностью в 1/32 отсчета. Другими словами, опорный пиксель или пиксели, используемые для направленного внутреннего предсказания, могут быть заданы горизонтальным или вертикальным расстоянием от границы, используемой для предсказания, и используемым направлением внутреннего предсказания. Например, значение +32 соответствует отклонению опорной точки +32/32 для каждого блока отсчетов между предсказанным значением и опорным значением (то есть, использованием угла предсказания, равного +45 градусам). В качестве другого примера, значение -17 при горизонтальном предсказании означает, что пиксель, расположенный на расстоянии 4 пикселей от (вертикальной) границы имеет опорную точку -68/32 относительно предсказываемого пикселя. Это означает, что опорный пиксель расположен между 2-м и 3-м пикселем выше уровня предсказываемого пикселя, и значение предсказываемого пикселя может быть получено как взвешенное среднее значений 2-го и 3-го пикселей, т.е. (28*а2+4*а3)/32. Как правило, направление внутреннего предсказания используют для определения опорного пикселя или пикселей для предсказания. Опорный пиксель или пиксели затем используют для определения значения предсказываемого пикселя, например, как взвешенного среднего значений опорных пикселей. В качестве опорных пикселей могут использоваться пиксели, непосредственно прилегающие к границе блока (или лежащие на границе блока). Альтернативно, или в дополнение, могут использоваться пиксели, лежащие дальше от границы блока.
На фиг. 3b показан подход, в котором для каждого отсчета внутри блока предсказания в процессе предсказания используют одинаковые направления предсказания. На фиг. 3b круглые пиксели соответствуют блоку предсказываемых отсчетов, а черные квадраты строке опорных отсчетов. Также на фиг. 3b показаны проекции предсказания для первой и второй строки отсчетов, с фиксированным направлением предсказания. Как отмечалось выше, смещение от опорного отсчета, расположенного непосредственно сверху, вычисляют следующим образом: для первой строки предсказываемых отсчетов смещение равно d, для второй строки 2d и т.п. На фиг. 3с проиллюстрировано применение направления внутреннего предсказания, которое меняется в зависимости от расстояния предсказываемой строки отсчетов от опорной строки. На фиг. 3с проекции предсказания вычисляют на основе расстояния по вертикали до опорных отсчетов. Смещения для первой, второй, третьей и четвертной строки равны: d1, d1+d2, dl+d2+d3, dl+d2+d3+d4, где шаги изменения d1, d2, d3 и d4 смещения имеют различный размер, например, их размер увеличивается или уменьшается. Другими словами, направление предсказания внутри предсказываемого блока может меняться. К примеру, направление предсказания для первой предсказываемой строки может быть задано, а направления предсказания для других строк могут вычисляться на основе этого первого направления предсказания.
На фиг. 3d проиллюстрирован тот же подход, применяемый на уровне блока. Каждый блок предсказания размером 4×4 предсказываемых пиксельных значений имеет собственное направление предсказания, которое вычисляют на основе местоположения этого блока. Для блоков в первой строке в качестве опорных для предсказания могут использоваться опорные отсчеты сверху этой строки, тогда как для блоков ниже первой строки могут применяться отсчеты из блоков, расположенных непосредственно над ними. Каждый из блоков будет иметь собственное направление предсказания, которое определяют в зависимости от местоположения каждого блока относительно других (или относительно заданного начала координат). Направление предсказания, таким образом, может меняться при переходе от блока к блоку, при этом смещения для первой строки предсказываемых пикселей здесь равны d1, d2, d3 и d4.
Как отмечалось выше, для получения предсказанных значений пикселей на основе опорных значений может использоваться взвешенное среднее. Альтернативно или в дополнение, вместо одной строки опорных пикселей может использоваться несколько строк. Целью процедуры предсказания можно считать получение целостного гладко предсказанного блока, чтобы сигнал ошибки предсказания кодировался эффективно. Фактически, кодер может кодировать блок с различными направлениями предсказания и выбирать направление предсказания, дающее наибольшую эффективность кодирования.
Доступные направления предсказания, также называемые режимами направленного предсказания, можно рассматривать как набор режимов направленного предсказания. К примеру, набор направлений направленного внутреннего предсказания, или режимов направленного внутреннего предсказания, используемый в стандарте видеокодирования H.265/HEVC, следующий: -32, -26, -21, -17, -13, -9, -5, -2, 0, +2, +5, +9, +13, +17, +21, +26 и +32 для горизонтального предсказания, и -32, -26, -21, -17, -13, - 9, -5, -2, 0, +2, +5, +9, +13, +17, +21, +26 и +32 для вертикального предсказания. Направление -32 совпадает для горизонтального и вертикального направлений предсказания. Направление +32 горизонтального предсказания на фиг. 3а прямо противоположно направлению +32 вертикального предсказания. Могут также применяться и другие наборы направлений предсказания. К примеру алгоритм тестовой модели 4 группы совместных исследований (Joint Exploration Test model 4, JEM4) поддерживает прямоугольные (квадратные и неквадратные) блоки предсказания с направлениями внутреннего предсказания в том же диапазоне углов, что и H.265/HEVC, однако имеет дополнительные направления предсказания между направлениями H.265/HEVC.
В соответствии с иллюстрацией фиг. 3а, направление предсказания «влево-вверх» может рассматриваться как направление 45 градусов от центра квадратного предсказываемого блока к верхнему левому углу блока. Направление «влево-вверх» в более общем случае может пониматься как направление 45 градусов влево-вверх между горизонтальным направлением (влево) и вертикальным направлением (вверх). Это направление «влево-вверх» может использоваться в качестве опорного, и, например, все направления на фиг. 3а образуют нулевой угол, острый угол (менее 90 градусов) или прямой угол (90 градусов) с этим направлением «влево-вверх». На фиг. 3а угол α указывает направление горизонтального предсказания (предсказание на основе опорных отсчетов слева от блока), а угол β указывает направление вертикального предсказания (предсказание на основе опорных отсчетов сверху блока). Пунктирной линией на фиг. 3 обозначены горизонтальные и вертикальные границы, или расширение границы, а также линия прямого угла (90 градусов) относительно направления «влево-вверх». Числа для направлений предсказания на малом графике соответствуют числам на большом графике. На дальнейших чертежах также используются обозначения, приведенные на малом графике.
Однако в случаях, когда блоки не квадратны, особенно, если отношение горизонтального к вертикальному размеру блока предсказания велико, было замечено, что выбор направлений предсказания, проиллюстрированный на фиг. 3а, зачастую не является оптимальным. При неквадратных блоках предсказания часть традиционных режимов внутреннего предсказания, например, показанные на фиг. 3а, с направлениями между 0 и +45 градусов (между прямой вертикалью и 45-градусным направлением предсказания от направления «вправо-вверх», или прямой горизонталью и 45-градусным направлением предсказания от направления «влево-вниз») может иметь большое количество активных опорных отсчетов, не связанных напрямую ни с одной из границ блока. Было замечено, что в таких случаях предсказанный блок отсчетов со сходной структурой направлений, однако с более высокой корреляцией между предсказанными и исходными отсчетами, может быть получен, если «зеркально отобразить», или повернуть, направление предсказания на 180 градусов, и использовать опорные отсчеты с другой границы блока (верхней границы вместо левой границы, или левой границы вместо верхней границы). Фактически, это означает применение набора направлений предсказания, выходящего за рамки традиционного диапазона углов -45 до +45 градусов для вертикального и горизонтального предсказания, то есть за рамки диапазона -90 до 90 градусов от направления «влево-вверх». Для еще большего повышения эффективности кодирования, обеспечиваемого такими новыми направлениями предсказания, в настоящем документе также описано, каким образом подобные широкоугольные направления внутреннего предсказания могут сигнализироваться в битовом потоке, или комбинироваться вместе с получением би-предсказываемых блоков.
В настоящем изобретении предложен видеокодер, или кодер изображений, с набором направлений внутреннего предсказания, выходящих за рамки традиционных углов в 45 градусов от горизонтального или вертикального направления, или другими словами, с тупыми углами относительно направления «влево-вверх» (широкоугольное предсказание). Доступные режимы (направления) предсказания могут выбираться в зависимости от формы блока предсказания, например, острые углы из более узких диапазонов направлений предсказания могут зеркально отображаться, с получением широкоугольных направлений предсказания. Информация о режиме, в которой в первую очередь указывают общую направленность блока, может быть закодирована в битовый поток (она может использоваться для предсказания направленности последующих блоков предсказания). После общей направленности предсказания может следовать флаг, указывающий, доступны ли одновременно два противоположных направления этой направленности в качестве режимов предсказания, а также указание, какое из двух противоположных направлений следует использовать, если флаг сообщает, что оба они доступны. Основное направление и широкоугольное направление могут иметь различные вероятности, зависящие от формы или размеров блока.
Ниже будет описано широкоугольное предсказание, то есть предсказание с использованием опорных отсчетов лежащих под тупым углом относительно направления «вверх-влево» от предсказываемого пикселя. На фиг. 4а проиллюстрировано изображение с предсказываемым блоком Р, уже восстановленной областью R, которая может использоваться как опорная для процедуры предсказания, и недоступной областью U, которая еще не была обработана.
На фиг. 4b показаны опорные отсчеты на левой и верхней границах блока. Уже декодированные опорные отсчеты показаны закрашенными кружками. Недоступные опорные отсчеты показаны незакрашенными кружками. Эти недоступные опорные отсчеты еще не были декодированы, или обработаны, или они могут лежать за границами изображения. Недоступные опорные отсчеты могут быть получены заполнением ближайшими доступными опорными отсчетами на той же границе, то есть копированием значений из доступных опорных отсчетов, например, ближайших доступных опорных отсчетов. Необходимое количество опорных отсчетов, как для горизонтального, так и для вертикального предсказания, равно w+h+1, если направления предсказания лежат внутри прямого угла относительно направления «влево-вверх». Это связано с тем, что при вертикальном предсказании наибольшее смещение от пикселя, лежащего непосредственно сверху, равно высоте h блока (при 45-градусном направлении предсказания «влево-вправо) и ширине w блока, и та же самая логика остается верной для горизонтального предсказания. Пиксель, расположенный в левом верхнем углу, необходим всегда.
На фиг. 4 с показан неквадратный блок предсказания, а также горизонтальное предсказание по направлению +45 градусов для самого правого отсчета блока (длинная стрелка) и вертикальное предсказание по направлению +45 градусов для самого правого отсчета блока (короткая стрелка). В соответствии с иллюстрацией, имеется только один доступный опорный пиксель (самый нижний).
На фиг. 4d показан неквадратный блок предсказания и горизонтальное предсказание с углом в диапазоне между 0 и +45 градусами (длинная стрелка), то есть с острым углом относительно направления «влево-вверх», и его зеркальный режим (широкоугольный режим), с вертикальным углом более +45 градусов (короткая стрелка), то есть, с тупым углом относительно направления «влево-вверх». Как можно видеть, чтобы было возможно предсказание по широкоугольному направлению (короткая стрелка), нужен дополнительный опорный отсчет 410 (или несколько дополнительных опорных отсчетов - показаны черными кружками с белой сеткой). При таком широкоугольном предсказании, то есть внутреннем предсказании с тупоугольным направлением, для прямоугольных, но неквадратных блоков, достигается преимущество, заключающееся в том, что опорный пиксель, используемый для широкоугольного предсказания (самый правый пиксель 410 на фиг. 4d), ближе к большинству пикселей предсказываемого блока, и следовательно, способен дать большую корреляцию с предсказываемыми пикселями, чем основной опорный отсчет по узкоугольному направлению (третий опорный пиксель 420 внизу фиг. 4d).
Когда используют традиционные углы (направления от -32 до +32 на фиг. 3а), могут использоваться, например, максимум w+h опорных отсчетов, расположенных сверху и сверху-справа, плюс один отсчет в верхнем левом углу. В случае широкоугольного режима их нужно больше. Может выполняться проверка доступности отсчетов под верхними w+h отсчетами, и если они доступны, их используют в качестве опорных. Альтернативно, эти «далекие» опорные отсчеты могут рассматриваться как недоступные, и для них могут использоваться заполненные (скопированные) значения из ближайшего опорного отсчета, помеченного как доступный.
На фиг. 5а показан набор режимов (направлений) направленного внутреннего предсказания. Исходные режимы 510, 512, 515, 517, которые имеют соответствующие широкоугольные режимы 520, 522, 525, 527, обозначены кружками, а соответствующие им широкоугольные режимы - квадратиками. Каждый основной режим и широкоугольный режим могут образовывать так называемую пару широкоугольного направленного внутреннего предсказания, в данном случае пары следующие: (510, 520), (512, 522), (515, 525) и (517, 527). Пары могут иметь соответствующую общую направленность, например, обозначаемую остроугольным режимом, например, +21 для пары (510, 520). При этом горизонтальный и вертикальный режимы +45 градусов (смещение +32 отчета на фиг. 5а) могут быть представлены как пара из основного и широкоугольного режима, имеющая общую направленность (+32), а также может быть указано, какое из двух направлений следует использовать, вместо традиционного представления в виде двух отдельных режимов.
На фиг. 5b, 5с, 5d и 5е проиллюстрированы несколько примеров соответствующих широкоугольных режимов. На фиг. 5b слева показан непосредственно противоположный, «зеркальный», широкоугольный режим 540 для основного (остроугольного) режима 530. Угол относительно направления «влево-вверх» для широкоугольного режима 540 может быть получен на основе основного режима 530 вычитанием угла основного режима из 180 градусов. То есть, если угол основного режима равен α, где α - острый угол, то угол широкоугольного режима относительно направления «влево-вверх» равен 180°- α. В соответствии с иллюстрацией фиг. 5b, справа, широкоугольный режим 542 может быть не прямо противоположен соответствующему узкоугольному (или остроугольному) режиму 532, вместо этого он может быть приблизительно противоположным, или противоположным, но не прямо противоположным. Другими словами, широкоугольный режим может быть таким, что его направление образует тупой угол с направлением «влево-вверх» (направление, показанное на фиг. 5b), и расположено с противоположной стороны от основного режима относительно направления «влево-вверх». В соответствии с иллюстрацией фиг. 5с (изображение слева), соответствие между основным (узкоугольным) режимом и широкоугольным режимом может быть иным, т.е. они не обязательно образуют пару. К примеру, может присутствовать два основных режима (узкоугольных режима) 550, 552, которые имеют один и тот же соответствующий широкоугольный режим 560. Это позволяет повысить эффективность кодирования за счет снижения числа различных режимов. Также это позволяет выбирать опорные пиксели, расположенные ближе к предсказываемому блоку. Аналогично, с одним узкоугольным режимом 55 могут быть связаны несколько широкоугольных режимов 565, 567. Это позволяет повысить эффективность кодирования, поскольку имеется меньше основных режимов, имеющих соответствующий широкоугольный режим. На фиг. 5d проиллюстрировано понятие набора широкоугольных режимов направленного предсказания. Набор широкоугольных режимов обозначен квадратиками и включает набор широкоугольных режимов 580, 582, 584. Эти широкоугольные режимы могут соответствовать основным режимам 570, 572, 574, обозначенным кружками. Информация о подобных широкоугольных режимах может быть включена в битовый поток. Может присутствовать заданное количество наборов широкоугольных режимов, определенных и передаваемых в битовом потоке. Информация о наборе широкоугольных режимов, используемых для кодирования и декодирования, может передаваться в битовом потоке при помощи указателя набора широкоугольных режимов. Этот указатель может находиться, например, в заголовке изображения или заголовке слайса, или в наборе параметров, на который ведет ссылка из изображения или слайса. На фиг. 5е показано, что могут использоваться один или более наборов широкоугольных режимов. К примеру, в одном наборе широкоугольных режимов могут содержаться режимы 590, 591 и 592, а в другом - режимы 595, 596, 597. При кодировании и декодирования эти наборы режимов могут использоваться также таким образом, что используемый набор режимов передается непосредственно в битовом потоке, а также в битовом потоке может передаваться конкретный режим из этого набора режимов.
Декодер или кодер видео или изображений, функционирующий в соответствии с настоящим изобретением, может включать направления пространственного внутреннего предсказания в наборе режимов предсказания с диапазоном углов, выходящим за традиционные пределы +45 градусов. Это дает некоторые преимущества и при использовании обычных квадратных блоков предсказания, однако особенно эффективно для неквадратных прямоугольных блоков. Эффективность повышается, поскольку было найдено, что когда применяют традиционные направления предсказания, ведущие к короткой стороне блока, большинство опорных отсчетов оказываются не связаны с границей блока предсказания. Однако структура со сходной направленностью может быть получена, если использовать приблизительно обратное направление (путем зеркального отображения или поворота направления предсказания на 180 градусов, точно или приблизительно). Благодаря этой операции большинство опорных отсчетов становятся ближе к блоку предсказания и дают статистически лучшие предсказания, и в результате наблюдается повышение эффективности кодирования. Широкоугольные режимы предсказания с диапазоном углов более 45 градусов относительно строго горизонтального или строго вертикального направлений предсказания могут кодироваться при помощи традиционных средств внутреннего кодирования. То есть, они могут быть добавлены в список доступных режимов предсказания, каждому из этих режимов может быть присвоен индивидуальный номер, и когда при декодировании режим внутреннего предсказания указывает на широкоугольный режим, процедура внутреннего предсказания выполняет предсказание отсчетов по указанному направлению. В случае неквадратных блоков предсказания эта процедура может быть усовершенствована, и форма блока может рассматриваться как часть процедуры декодирования. Один из вариантов реализации этого включение широкоугольных режимов, с углами более +45 градусов, только для основного направления, соответствующего длинной стороне блока. К примеру, если ширина блока предсказания равна 16 отсчетам, а высота - 4, то набор режимов направленного внутреннего предсказания может быть определен как включающий узкоугольные горизонтальные режимы с углами от -45 до +45 градусов, узкоугольные вертикальные режимы с углами от -45 до 45 градусов и один или более широкоугольных вертикальных режимов с углами более +45 градусов (например, в соответствии с иллюстрацией фиг. 5е). Количество и направленность широкоугольных режимов может также зависеть от формы блока. Так, к примеру, если отношение ширины и высоты составляет 2:1, некоторое количество широкоугольных направлений может быть включено в список доступных режимов, а если отношение составляет 4:1, то в список может быть включено другое количество широкоугольных направлений. Аналогично, форма блока предсказания может определять, сколько узкоугольных режимов с направленностью в диапазоне от -45 до +45 градусов будет содержаться в списке доступных режимов внутреннего предсказания для блока, к примеру, чем более удлинен блок, тем больше включают широкоугольных режимов. Было найдено, что в случае неквадратных блоков выбор широкоугольного (или тупоугольного) направления позволяет получить более достоверное предсказание, чем при помощи узкоугольного направления предсказания.
Один из вариантов, при помощи которых можно указывать на широкоугольные режимы, разрешение традиционного набора узко угольных направлений внутреннего предсказания с углами от -45 до 45 градусов для всех размеров блоков и, в зависимости от формы блока, определение, какие из узкоугольных режимов будут иметь дополнительный соответствующий «зеркальный» широкоугольный режим (например, в соответствии с иллюстрацией фиг. 5d). Таким образом декодер может сначала декодировать узкоугольный режим предсказания, который задает общую направленность блока, и если этот режим указывает на соответствующий широкоугольный режим, декодер может также декодировать дополнительный указатель: «использовать широкоугольный режим вместо основного», который определяет, должен ли режим интерпретироваться как традиционный узкоугольный режим или широкоугольный зеркальный режим. Такой подход удобен, поскольку узкоугольный режим может использоваться для предсказания режимов последующих блоков предсказания, т.к. он определяет направленность текстуры, которую процедура предсказания отсчетов формирует для блока. В случае простого добавления широкоугольных направлений, с углами более +45 градусов, к списку режимов предсказания, как независимых режимов, результирующий список режимов будет иметь дублирующиеся режимы, дающие одинаковую направленность, но с различными опорными отсчетами. Это может снижать достоверность предсказания направленности последующих блоков. В качестве альтернативной реализации количество режимов внутреннего предсказания, доступных для блока предсказания, может поддерживаться постоянным, однако декодер может интерпретировать указанный номер режима по-разному, в зависимости от формы блока предсказания. К примеру, некоторые из направлений, относящихся к режимам предсказания, могут быть «отзеркалены» в точности или примерно на 180 градусов, в зависимости от формы блока (см. фиг. 5b). Например, в соответствии с иллюстрацией фиг. 5а, горизонтальные узкоугольные предсказания с соответствующими параметрами смещения +21 и +26 могут трактоваться, вместо этого, как вертикальные широкоугольные режимы с параметрами +48 и +39, соответственно, если ширина блока предсказания больше высоты блока предсказания (можно ожидать, что вертикальные предсказания будут более эффективны, поскольку блок предсказания имеет меньшее расстояние до верхних опорных отсчетов по сравнению с расстоянием до опорных отсчетов слева). Аналогично, вертикальные узкоугольные предсказания с их параметрами смещения +21 и +26 могут трактоваться, альтернативно, как горизонтальные широкоугольные режимы с параметрами +48 и +39, соответственно, если ширина блока предсказания меньше высоты блока предсказания. Выбор таких направлений предсказания рассмотрен исключительно в качестве примера, на практике в качестве потенциальных широкоугольных может быть выбрано другое количество режимов с другими узкоугольными или зеркальными параметрами смещения.
В качестве альтернативной реализации, количество режимов внутреннего предсказания, доступных для блока предсказания, может поддерживаться постоянным, однако энтропийное кодирование и декодирование этих режимов может меняться в зависимости от формы или размеров блока предсказания. К примеру, арифметическим декодером может использоваться другой контекст для декодирования направлений предсказания при отличающейся общей направленности. Декодер может сначала считывать из битового потока указание, следует ли использоваться горизонтальное или вертикальное основное направление, и переключаться в режимы с различными контекстами в зависимости от основного направления предсказания и формы блока. Альтернативно, в подходах, где используют предсказание наиболее вероятного режима, то есть имеется синтаксический элемент, определяющий, находится ли выбранный режим предсказания среди приоритетных режимов, построение списка приоритетных режимов может выполняться в зависимости от формы блока. Например, вертикальный кандидатный режим может быть включен в набор перед горизонтальным кандидатом, или вместо него, если ширина блока предсказания больше его высоты, а горизонтальный режим может включаться в набор перед вертикальным, или вместо него, если ширина блока меньше его высоты. Другими словами, информация о форме блока может влиять на следующее: количество применяемых режимов широкоугольного направленного предсказания, какие из режимов широкоугольного направленного предсказания используют, какие наборы режимов широкоугольного направленного предсказания используют, каковы вероятности различных режимов и т.п. Такое использованием информации о форме блока позволяет повысить эффективность кодирования, поскольку не всю информацию нужно явно кодировать, а также поскольку для более вероятных значений параметров могут быть выбраны более короткие кодовые слова.
Подход, в котором выбирают наиболее вероятные режимы на основе формы блока, может использоваться также совместно с традиционным узкоугольным внутренним направленным предсказанием изображений.
«Зеркальные» широкоугольные параметры смещения могут вычисляться на основе параметра смещения исходного узкоугольного режима путем обращения исходного режима с заданной точностью (см. левый график на фиг. 5b). К примеру, в случае параметров смещения, имеющих точность в 1/32 отсчета, широкоугольный параметр смещения, dW, может быть вычислен на основе исходного узкоугольного параметра, dN, в целочисленной арифметике, следующим образом: inverseAngle(dN)=(256*32)/dN
dW=32*inverseAngle(dN)»8,
где » - операция битового сдвига (она может соответствовать результату вычисления 1024 / dN, соответствующим образом округленному, или от которого взята целая часть, в зависимости от вычислительной архитектуры). Определение «зеркального» широкоугольного параметра смещения таким образом предпочтительно, поскольку при вычислении окончательного значения dW не нужно выполнять операций деления параметров, не являющихся степенью двойки. Таким образом, промежуточные значения inverseAngle(dN) могут быть вычислены заранее и сохранены в буфере памяти, чтобы их можно было использовать всякий раз, когда кодеру или декодеру необходимо вычислить dW. Значение dW может также определяться и другими способами. К примеру, оно не обязательно должно иметь линейную или обратную зависимость dN, и может определяться эвристически, при этом для него могут задаваться одинаковые значения в кодере и соответствующем декодере, в зависимости от dN.
В одной из альтернативных реализаций с единственным узкоугольным режимом может быть связано несколько широкоугольных режимов, или несколько узкоугольных режимов могут быть связаны с одним широкоугольным режимом (см. фиг. 5с). Кодер и декодер могут также формировать предсказания, комбинируя предсказания в узкоугольном режиме и соответствующем широкоугольном зеркальном режиме, и получая би-предсказанные отсчеты. Это может выполняться, например, при помощи взвешивания предсказанных отсчетов на основе их расстояния от опорных отсчетов, или при помощи иных подходов. Также, в случае би-предсказания, или, в более общем случае уни-предсказания, может присутствовать указание смещения для широкоугольного режима, что позволяет регулировать его для лучшего согласования с требуемой текстурой блока.
Для традиционного узкоугольного предсказания в диапазоне от -45 до +45 градусов максимальное количество отсчетов, которое необходимо, равно ширине блока плюс высота блока, отсчитывая от левого верхнего угла блока предсказания (в соответствии с иллюстрацией фиг. 2b и 2с). В случае широкоугольного предсказания с углами больше +45 градусов, могут также требоваться дополнительные опорные отсчеты, расположенные на большем удалении. Один из вариантов - использовать заполнение (копировать значения ближайших доступных опорных отсчетов) для формирования опорных отсчетов, расположенных дальше, чем ширина блока + высота блока от верхней левой координаты блока. Другой вариант - использовать уже обработанные отсчеты, условия доступности которых сходны с использованными для диапазона узко угольных опорных отсчетов.
Для еще большего повышения качества предсказания блоков может выполняться фильтрация и другие корректировочные операции перед (например, для опорных отсчетов) или после предсказания отсчета с использованием широкоугольных режимов внутреннего предсказания (например, фильтрация границ или внутренних частей блока предсказания).
Видеодекодер или декодер изображений может быть сконфигурирован для выбора между узкоугольными режимами направленного внутреннего предсказания, имеющими углы в диапазоне от -45 до +45 градусов относительно основного направления предсказания, и широкоугольными режимами, имеющими углы более +45 градусов относительно основного направления предсказания, при этом основное направление предсказания является либо строго горизонтальным, либо строго вертикальным направлением. Доступность одного или более широкоугольных режимов предсказания с углами более или равными +45 градусов зависит от формы блока предсказания.
Видеодекодер или декодер изображений может декодировать идентификатор режима предсказания, проверять, имеет ли декодированный режим связанный с ним доступный «зеркальный» режим (широкоугольный режим), и на основе этой проверки декодировать второй идентификатор, определяющий, следует ли использовать исходное направление предсказания или обратное ему направление.
Для исходного (основного) направления предсказания могут использоваться основные отсчеты на первой границе блока, с первым параметром смещения от предсказываемого отсчета, а для широкоугольного направления предсказания могут использоваться отсчеты на второй границе блока, со вторым параметром смещения от предсказываемого отсчета (см. фиг. 3b), при этом первая граница блока отличается от второй границы блока, а первый параметр смещения от предсказываемого отсчета может быть равен второму параметру смещения от предсказываемого отсчета или отличаться от него. Набор доступных режимов внутреннего предсказания может зависеть от формы блока предсказания (то есть, ширины и высоты блока предсказания в случае прямоугольной формы блока).
Режим направленного внутреннего предсказания с заданным идентификатором может трактоваться как имеющий первый диапазон углов, если ширина блока больше, чем его высота, и как второй диапазон углов, если ширина блока меньше его высоты, при этом первый диапазон углов отличается от второго диапазона углов.
Может присутствовать первый режим внутреннего предсказания, имеющий углы от в диапазоне -45 до +45 градусов относительно строго горизонтального или строго вертикального основное направление, которое имеет соответствующий широкоугольный режим с углами от по меньшей мере +45 градусов относительно другого основного направления, отличающегося от основного направления первого режима внутреннего предсказания.
Выбор контекста для энтропийного декодирования режима внутреннего предсказания может зависеть от формы блока. К примеру, двоичный арифметический декодер может использоваться различные расчетные вероятности для идентификаторов режима, в зависимости от того, является ли блок квадратным или нет: для квадратных режимов ожидают примерно равную вероятность направлений «вверх» и «влево», а если блок не квадратный, более вероятно направление, совпадающее с длинной стороной. На практике это позволяет повысить эффективность кодирования, поскольку для кодирования более вероятных символов используют менее длинные кодовые слова. Кодер и декодер могут определять набор наиболее вероятных режимов для блока предсказания на основе формы блока и кодировать/декодировать идентификатор, указывающий, является ли выбранный режим одним из наиболее вероятных режимов.
Кодер и декодер могут определять набор наиболее вероятных режимов для блока предсказания на основе формы блока и кодировать/декодировать идентификатор, указывающий, какой из упомянутых вероятных режимов выбран для данного блока.
Предложенные способы и устройства позволяют повысить точность направленного внутреннего предсказания. Они позволяют также получить эффективный механизм сигнализации для случаев, когда в списке доступных режимов предсказания имеются режимы направленного предсказания с противоположной направленностью.
На фиг. 6а показана блок-схема алгоритма для способа декодирования. На шаге 610 из принятого потока могут быть сформированы опорные пиксели для направленного внутреннего предсказания. На шаге 612 могут быть предсказаны значения пикселей, чтобы получить предсказанный блок. Предсказание может формироваться с использованием широкоугольного направления предсказания, согласно приведенному выше описанию. На шаге 614 полученный при помощи широкоугольного внутреннего предсказания блок может использоваться при декодировании блока изображения из битового потока. Из битового потока может быть декодирован сигнал ошибки предсказания, который суммируют с предсказанным блоком изображения и получают декодированный блок изображения.
На фиг. 6b показана блок-схема алгоритма для способа кодирования. На шаге 616 из данных изображения, подлежащих кодированию, могут быть сформированы опорные пиксели. Эти опорные пиксели могут применяться при последующем направленном внутреннем предсказании. На шаге 618 могут быть предсказаны значения пикселей, чтобы получить предсказанный блок, например, с использованием широкоугольного направления предсказания, согласно приведенному выше описанию. На шаге 619 полученный при помощи широкоугольного внутреннего предсказания блок может использоваться при кодировании блока изображения в битовый поток. Для кодирования предсказанный блок может быть вычтен из исходного блока изображения, чтобы получить сигнал ошибки предсказания. Сигнал ошибки предсказания, а также параметры и индикаторы для направленного внутреннего предсказания, могут быть кодированы в битовый поток.
На фиг. 6с показана блок-схема алгоритма для способа декодирования. На шаге 620 из принятого потока могут быть сформированы опорные пиксели для направленного внутреннего предсказания. На шаге 622, на основе битового потока, может быть определена форма предсказываемого блока. На шаге 624 на основе этой формы могут быть определены используемые режимы направленного предсказания. На шаге 626 может быть определено, находится ли применяемый режим направленного предсказания среди вероятных режимов, определяемых формой. На шаге 630 из битового потока может быть принят индикатор выбора режима. На шаге 634 может быть выбран используемый режим между основным и зеркальным по отношению к основному режимами. На шаге 636 используемый режим может быть выбран на основе формы блока. На шаге 638 используемый режим может быть выбран среди предсказанных режимов на основе формы блока. На шаге 640 могут быть предсказаны значения пикселей, чтобы получить предсказанный блок. Предсказание может формироваться с использованием широкоугольного направления предсказания согласно приведенному выше описанию. На шаге 642 полученный при помощи широкоугольного внутреннего предсказания блок может использоваться при декодировании блока изображения из битового потока. Из битового потока может быть декодирован сигнал ошибки предсказания, который суммируют с предсказанным блоком изображения и получают декодированный блок изображения. В способе, показанном на фиг. 6с, шаги могут выполняться в отличном от проиллюстрированного порядке. Отдельные шаги могут как выполняться, так и быть отброшены. Различные шаги могут быть объединены, или различные шаги могут рассматриваться как альтернативные.
На фиг. 6b показана блок-схема алгоритма для способа кодирования. На шаге 660 из данных изображения, подлежащих кодированию, могут быть сформированы опорные пиксели. Эти опорные пиксели могут применяться при последующем направленном внутреннем предсказании. На шаге 662 может быть определена форма предсказываемого блока, которую используют при последующем направленном предсказании. На шаге 664 на основе этой формы могут быть определены используемые режимы направленного предсказания. На шаге 667 может быть определено, находится ли применяемый режим направленного предсказания среди вероятных режимов, определяемых формой. На шаге 670 в битовый поток может быть закодирован индикатор выбора режима. На шаге 672 может быть выбран используемый режим между основным и зеркальным по отношению к основному режимами. На шаге 674 используемый режим может быть выбран на основе формы блока. На шаге 676 используемый режим может быть выбран среди предсказанных режимов, на основе формы блока. На шаге 680 могут быть предсказаны значения пикселей, чтобы получить предсказанный блок, например, с использованием широкоугольного направления предсказания, согласно приведенному выше описанию. На шаге 682 полученный при помощи широкоугольного внутреннего предсказания блок может использоваться при кодировании блока изображения в битовый поток. Для кодирования предсказанный блок может быть вычтен из исходного блока изображения, чтобы получить сигнал ошибки предсказания. Сигнал ошибки предсказания, а также параметры и индикаторы для направленного внутреннего предсказания, могут быть закодированы в битовый поток. В способе, показанном на фиг. 6d, шаги могут выполняться в отличном от проиллюстрированного порядке. Отдельные шаги могут как выполняться, так и быть отброшены. Различные шаги могут быть объединены, или различные шаги могут рассматриваться как альтернативные. Ниже приведены пронумерованные примеры.
1. Способ, включающий:
- прием битового потока, содержащего кодированные данные изображения,
- формирование, из упомянутого битового потока в компьютерной памяти, набора опорных пикселей, имеющих опорные значения пикселей для направленного внутреннего предсказания изображений,
- предсказание значения пикселя в предсказываемом блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей для формирования предсказанного значения пикселя, при этом выбранные опорные пиксели выбирают согласно направлению предсказания относительно предсказываемого пикселя, при этом направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от упомянутого предсказываемого пикселя,
- повторение предсказания пикселя для множества пикселей, чтобы получить предсказанный блок изображения,
- использование предсказанного блока изображения при декодировании блока изображения из битового потока, чтобы получить декодированный блок изображения.
2. Способ по примеру 1, в котором упомянутый предсказываемый блок изображения имеет форму, при этом способ включает:
- определение упомянутой формы из упомянутого битового потока,
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений, на основе упомянутой формы,
- при предсказании упомянутых значений пикселей, выбор упомянутого направления предсказания из упомянутых режимов направленного предсказания.
3. Способ по примерам 1 или 2, в котором упомянутый предсказываемый блок изображения имеет форму, при этом способ включает:
- определение упомянутой формы из упомянутого битового потока,
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- определение вероятных режимов предсказания на основе упомянутой формы,
- декодирование индикатора, из упомянутого битового потока, указывающего, является ли упомянутое направление предсказания одним из упомянутых вероятных режимов предсказания, и
- выбор упомянутого направления предсказания из упомянутых вероятных режимов предсказания. 4. Способ по примерам 1, 2 или 3, включающий:
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- декодирование индикатора направления из упомянутого битового потока,
- выбор упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления, при этом упомянутые основное направление и широкоугольное направление связаны с упомянутым индикатором направления.
5. Способ по примеру 4, включающий:
- декодирование индикатора выбора направления предсказания из упомянутого битового потока, и
- выбор упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из упомянутого нормального направления и упомянутого широкоугольного направления с использованием упомянутого индикатора выбора направления предсказания.
6. Способ по примеру 4, в котором упомянутый предсказываемый блок изображения имеет форму, включающий:
- определение упомянутой формы из упомянутого битового потока,
- выбор упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления на основе упомянутой формы.
7. Способ по любому из примеров 4-6, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление являются по существу противоположными направлениями.
8. Способ по любому из примеров 4-6, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление не являются по существу противоположными направлениями, и при этом упомянутое основное направление и упомянутое широкоугольное направление лежат на противоположных сторонах от упомянутого направления «влево-вверх».
9. Способ по любому из примеров 4-8, в котором с одним основным направлением могут связаны несколько широкоугольных направлений, либо с несколькими основными направлениями связано одно широкоугольное направление, либо и то, и другое одновременно.
10. Способ по любому из примеров 1-9, в котором упомянутый предсказываемый блок изображения имеет форму, при этом способ включает:
- определение упомянутой формы из упомянутого битового потока,
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- декодирование индикатора направления из упомянутого битового потока,
- формирование предсказанного направления предсказания для упомянутого предсказания упомянутого значения пикселя с выбором из нормального направления и широкоугольного направления с использованием упомянутой формы, при этом упомянутые нормальное направление и широкоугольное направление связаны с упомянутым индикатором направления, и
- выбор упомянутого направления предсказания на основе упомянутого предсказанного направления предсказания.
11. Способ, включающий:
- прием данных изображения, подлежащих кодированию,
- формирование, из упомянутых данных изображения, в компьютерной памяти, набора опорных пикселей, имеющих опорные значения пикселей для направленного внутреннего предсказания изображений,
- предсказание значения пикселя в предсказываемом блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей для формирования предсказанного значения пикселя, при этом выбранные опорные пиксели выбирают согласно направлению предсказания относительно предсказываемого пикселя, и при этом направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от упомянутого предсказываемого пикселя,
- повторение предсказания пикселя для множества пикселей, чтобы получить предсказанный блок изображения,
- использование упомянутого предсказанного блока изображения при кодировании блока изображений в битовый поток.
12. Способ по примеру 11, в котором упомянутый предсказываемый блок изображения имеет форму, при этом способ включает:
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений, на основе упомянутой формы,
- при предсказании упомянутых значений пикселей, выбор упомянутого направления предсказания из упомянутых режимов направленного предсказания.
13. Способ по примерам 11 или 12, в котором упомянутый предсказываемый блок изображения имеет форму, при этом способ включает:
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- определение вероятных режимов предсказания на основе упомянутой формы,
- выбор упомянутого направления предсказания из упомянутых вероятных режимов предсказания, и
- кодирование индикатора, в упомянутый битовый поток, указывающего, является ли упомянутое направление предсказания одним из упомянутых вероятных режимов предсказания. 14. Способ по примерам 11, 12 или 13, включающий:
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- выбор упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления, при этом упомянутые основное направление и широкоугольное направление связаны с упомянутым индикатором направления, и
- кодирование индикатора направления в упомянутый битовый поток.
15. Способ по примеру 14, включающий:
- выбор упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из упомянутого нормального направления и упомянутого широкоугольного направления с использованием упомянутого индикатора выбора направления предсказания, и
- кодирование индикатора выбора направления предсказания в упомянутый битовый поток.
16. Способ по примеру 14, в котором упомянутый декодированный блок изображения имеет форму, при этом способ включает:
- выбор упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления на основе упомянутой формы.
17. Способ по любому из примеров 14-16, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление являются по существу противоположными направлениями.
18. Способ по любому из примеров 14-16, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление не являются по существу противоположными направлениями, и при этом упомянутое основное направление и упомянутое широкоугольное направление лежат на противоположных сторонах от упомянутого направления «влево-вверх».
19. Способ по любому из примеров 14-18, в котором с одним основным направлением могут связаны несколько широкоугольных направлений, либо с несколькими основными направлениями связано одно широкоугольное направление, либо и то, и другое одновременно.
20. Способ по любому из примеров 11-19, в котором упомянутый декодированный блок изображения имеет форму, при этом способ включает:
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- формирование предсказанного направления предсказания для упомянутого предсказания упомянутого значения пикселя с выбором из нормального направления и широкоугольного направления с использованием упомянутой формы, при этом упомянутые нормальное направление и широкоугольное направление связаны с упомянутым индикатором направления, и
- выбор упомянутого направления предсказания на основе упомянутого предсказанного направления предсказания, и
- кодирование индикатора направления в упомянутый битовый поток.
21. Устройство, включающее по меньшей мере один процессор и память, которая содержит компьютерный программный код, при этом память и компьютерный программный код сконфигурированы для обеспечения выполнения устройством, с помощью упомянутого по меньшей мере одного процессора, по меньшей мере следующего:
- прием битового потока, включающего кодированные данные изображения,
- формирование, из упомянутого битового потока в компьютерной памяти, набора опорных пикселей, имеющих опорные значения пикселей для направленного внутреннего предсказания изображений,
- предсказание значения пикселя в предсказываемом блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей для формирования предсказанного значения пикселя, при этом выбранные опорные пиксели выбирают согласно направлению предсказания относительно предсказываемого пикселя, и при этом направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от упомянутого предсказываемого пикселя,
- повторение предсказания пикселя для множества пикселей, чтобы получить предсказанный блок изображения,
- использование предсказанного блока изображения при декодировании блока изображения из битового потока, чтобы получить декодированный блок изображения.
22. Устройство по примеру 21, в котором упомянутый предсказанный блок изображения имеет форму, при этом устройство включает компьютерный программный код, который обеспечивает выполнение этим устройством следующего:
- определение упомянутой формы из упомянутого битового потока,
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений, на основе упомянутой формы,
- при предсказании упомянутых значений пикселей, выбор упомянутого направления предсказания из упомянутых режимов направленного предсказания.
23. Устройство по примеру 21 или 22, в котором упомянутый предсказанный блок изображения имеет форму, при этом устройство включает компьютерный программный код, который обеспечивает выполнение этим устройством следующего:
- определение упомянутой формы из упомянутого битового потока,
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- определение вероятных режимов предсказания на основе упомянутой формы,
- декодирование индикатора, из упомянутого битового потока, указывающего, является ли упомянутое направление предсказания одним из упомянутых вероятных режимов предсказания, и
- выбор упомянутого направления предсказания из упомянутых вероятных режимов предсказания.
24. Устройство по примеру 21, 22 или 23, включающее компьютерный программный код для обеспечения выполнения этим устройством следующего:
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- декодирование индикатора направления из упомянутого битового потока,
- выбор упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления, при этом упомянутые основное направление и широкоугольное направление связаны с упомянутым индикатором направления.
25. Устройство по примеру 24, включающее компьютерный программный код для обеспечения выполнения этим устройством следующего:
- декодирование индикатора выбора направления предсказания из упомянутого битового потока, и
- выбор упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из упомянутого нормального направления и упомянутого широкоугольного направления с использованием упомянутого индикатора выбора направления предсказания.
26. Устройство по примеру 24, в котором упомянутый предсказанный блок изображения имеет форму, при этом устройство включает компьютерный программный код, который обеспечивает выполнение этим устройством следующего:
- определение упомянутой формы из упомянутого битового потока,
- выбор упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления на основе упомянутой формы.
27. Устройство по любому из примеров 24-26, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление являются по существу противоположными направлениями.
28. Устройство по любому из примеров 24-26, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление не являются по существу противоположными направлениями, и при этом упомянутое основное направление и упомянутое широкоугольное направление лежат на противоположных сторонах от упомянутого направления «влево-вверх».
29. Устройство по любому из примеров 24-28, в котором с одним основным направлением связаны несколько широкоугольных направлений, либо с несколькими основными направлениями связано одно широкоугольное направление, либо и то, и другое одновременно.
30. Устройство по любому из примеров 21-29, в котором упомянутый предсказанный блок изображения имеет форму, при этом устройство включает компьютерный программный код, который обеспечивает выполнение этим устройством следующего:
- определение режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- формирование предсказанного направления предсказания для упомянутого предсказания упомянутого значения пикселя с выбором из нормального направления и широкоугольного направления, с использованием упомянутой формы, при этом упомянутые нормальное направление и широкоугольное направление связаны с упомянутым индикатором направления, и
- выбор упомянутого направления предсказания на основе упомянутого предсказанного направления предсказания, и
- кодирование индикатора направления в упомянутый битовый поток.
31. Система, включающая по меньшей мере один процессор и память, которая содержит компьютерный программный код, при этом память и компьютерный программный код сконфигурированы для обеспечения, с помощью упомянутого по меньшей мере одного процессора, выполнения системой по меньшей мере следующего:
- прием битового потока, включающего кодированные данные изображения,
- формирование, из упомянутого битового потока в компьютерной памяти, набора опорных пикселей, имеющих опорные значения пикселей для направленного внутреннего предсказания изображений,
- предсказание значения пикселя в предсказываемом блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей для формирования предсказанного значения пикселя, при этом выбранные опорные пиксели выбирают согласно направлению предсказания относительно предсказываемого пикселя, и при этом направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от упомянутого предсказываемого пикселя,
- повторение предсказания пикселя для множества пикселей, чтобы получить предсказанный блок изображения,
- использование предсказанного блока изображения при декодировании блока изображения из битового потока, чтобы получить декодированный блок изображения.
32. Система, включающая по меньшей мере один процессор и память, которая содержит компьютерный программный код, при этом память и компьютерный программный код сконфигурированы для обеспечения, с помощью упомянутого по меньшей мере одного процессора, выполнения системой по меньшей мере следующего:
- прием данных изображения, подлежащих кодированию,
- формирование, из упомянутых данных изображения, в компьютерной памяти, набора опорных пикселей, имеющих опорные значения пикселей для направленного внутреннего предсказания изображений,
- предсказание значения пикселя в предсказываемом блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей для формирования предсказанного значения пикселя, при этом выбранные опорные пиксели выбирают согласно направлению предсказания относительно предсказываемого пикселя, и при этом направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от упомянутого предсказываемого пикселя,
- повторение предсказания пикселя для множества пикселей, чтобы получить предсказанный блок изображения,
- использование упомянутого предсказанного блока изображения при кодировании блока изображений в битовый поток.
33. Устройство, включающее:
- средства приема битового потока, включающего кодированные данные изображения,
- средства формирования, из упомянутого битового потока в компьютерной памяти, набора опорных пикселей, имеющих опорные значения пикселей для направленного внутреннего предсказания изображений,
- средства предсказания значения пикселя в предсказываемом блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей для формирования предсказанного значения пикселя, при этом выбранные опорные пиксели выбирают согласно направлению предсказания относительно предсказываемого пикселя, и при этом направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от упомянутого предсказываемого пикселя,
- средства повторения предсказания пикселя для множества пикселей, чтобы получить предсказанный блок изображения,
- средства для использования предсказанного блока изображения при декодировании блока изображения из битового потока, чтобы получить декодированный блок изображения.
34. Устройство по примеру 33, в котором упомянутый предсказываемый блок изображения имеет форму, при этом способ включает:
- средства определения упомянутой формы из упомянутого битового потока,
- средства определения режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений на основе упомянутой формы,
- средства выбора, при предсказании упомянутых значений пикселей, упомянутого направления предсказания из упомянутых режимов направленного предсказания.
35. Устройство по примеру 33 или 34, в котором упомянутый предсказываемый блок изображения имеет форму, при этом устройство включает:
- средства определения упомянутой формы из упомянутого битового потока,
- средства определения режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- средства определения вероятных режимов предсказания на основе упомянутой формы,
- средства декодирования индикатора, из упомянутого битового потока, указывающего, является ли упомянутое направление предсказания одним из упомянутых вероятных режимов предсказания, и
- средства выбора упомянутого направления предсказания из упомянутых вероятных режимов предсказания.
36. Устройство по примерам 33, 34 или 35, включающее:
- средства определения режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- средства декодирования указателя направления из упомянутого битового потока,
- средства выбора упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления, при этом упомянутые основное направление и широкоугольное направление связаны с упомянутым индикатором направления.
37. Устройство по примеру 36, включающее:
- средства декодирования индикатора выбора направления предсказания из упомянутого битового потока, и
- средства выбора упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из упомянутого нормального направления и упомянутого широкоугольного направления с использованием упомянутого индикатора выбора направления предсказания.
38. Устройство по примеру 36, в котором упомянутый предсказываемый блок изображения имеет форму, при этом устройство включает:
- средства определения упомянутой формы из упомянутого битового потока,
- средства выбора упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления на основе упомянутой формы.
39. Устройство по любому из примеров 36-38, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление являются по существу противоположными направлениями.
40. Устройство по любому из примеров 36-38, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление не являются по существу противоположными направлениями, при этом упомянутое основное направление и упомянутое широкоугольное направление лежат на противоположных сторонах от упомянутого направления «влево-вверх».
41. Устройство по любому из примеров 36-40, в котором с одним основным направлением связаны несколько широкоугольных направлений, либо с несколькими основными направлениями связано одно широкоугольное направление, либо и то, и другое одновременно.
42. Устройство по любому из примеров 33-41, в котором упомянутый предсказываемый блок изображения имеет форму, при этом устройство включает:
- средства определения упомянутой формы из упомянутого битового потока,
- средства определения режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- средства декодирования указателя направления из упомянутого битового потока,
- средства формирования предсказанного направления предсказания для упомянутого предсказания упомянутого значения пикселя с выбором из нормального направления и широкоугольного направления, с использованием упомянутой формы, при этом упомянутые нормальное направление и широкоугольное направление связаны с упомянутым индикатором направления, и
- средства выбора упомянутого направления предсказания на основе упомянутого предсказанного направления предсказания.
43. Устройство, включающее:
- средства приема данных изображения, подлежащих кодированию,
- средства формирования, из упомянутых данных изображения, в компьютерной памяти, набора опорных пикселей, имеющих опорные значения пикселей для направленного внутреннего предсказания изображений,
- средства предсказания значения пикселя в предсказываемом блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей для формирования предсказанного значения пикселя, при этом выбранные опорные пиксели выбирают согласно направлению предсказания относительно предсказываемого пикселя, и при этом направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от упомянутого предсказываемого пикселя,
- средства повтора предсказания пикселя для множества пикселей, чтобы получить предсказанный блок изображения,
- средства использования упомянутого предсказанного блока изображения при кодировании блока изображений в битовый поток.
44. Устройство по примеру 43, в котором упомянутый предсказываемый блок изображения имеет форму, при этом устройство включает:
- средства определения режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений на основе упомянутой формы,
- средства выбора, при предсказании упомянутых значений пикселей, упомянутого направления предсказания из упомянутых режимов направленного предсказания.
45. Устройство по примеру 43 или 44, в котором упомянутый предсказываемый блок изображения имеет форму, при этом устройство включает:
- средства определения режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- средства определения вероятных режимов предсказания на основе упомянутой формы,
- средства выбора упомянутого направления предсказания из упомянутых вероятных режимов предсказания, и
- средства кодирования индикатора, в упомянутый битовый поток, указывающего, является ли упомянутое направление предсказания одним из упомянутых вероятных режимов предсказания.
46. Устройство по примерам 43, 44 или 45, включающее:
- средства определения режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- средства выбора упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления, при этом упомянутые основное направление и широкоугольное направление связаны с упомянутым индикатором направления, и
- средства кодирования индикатора направления в упомянутый битовый поток.
47. Устройство по примеру 46, включающее:
- средства выбора упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из упомянутого нормального направления и упомянутого широкоугольного направления с использованием упомянутого индикатора выбора направления предсказания, и
- средства кодирования индикатора выбора направления предсказания в упомянутый битовый поток.
48. Устройство по примеру 46, в котором упомянутый декодированный блок изображения имеет форму, при этом устройство включает:
- средства выбора упомянутого направления предсказания для упомянутого предсказания упомянутого значения пикселя из основного направления и широкоугольного направления на основе упомянутой формы.
49. Устройство по любому из примеров 46-48, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление являются по существу противоположными направлениями.
50. Устройство по любому из примеров 46-48, в котором упомянутое основное направление связано с упомянутым широкоугольным направлением таким образом, что упомянутое основное направление и упомянутое широкоугольное направление не являются по существу противоположными направлениями, и при этом упомянутое основное направление и упомянутое широкоугольное направление лежат на противоположных сторонах от упомянутого направления «влево-вверх».
51. Устройство по любому из примеров 46-50, в котором с одним основным направлением связаны несколько широкоугольных направлений, либо с несколькими основными направлениями связано одно широкоугольное направление, либо и то, и другое одновременно.
52. Устройство по любому из примеров 43-51, в котором упомянутый декодированный блок изображения имеет форму, при этом устройство включает:
- средства определения режимов направленного предсказания, используемых при упомянутом направленном внутреннем предсказании изображений,
- средства формирования предсказанного направления предсказания для упомянутого предсказания упомянутого значения пикселя с выбором из нормального направления и широкоугольного направления, с использованием упомянутой формы, при этом упомянутые нормальное направление и широкоугольное направление связаны с упомянутым индикатором направления, и
- средства выбора упомянутого направления предсказания на основе упомянутого предсказанного направления предсказания, и
- средства кодирования индикатора направления в упомянутый битовый поток.
53. Сигнал битового потока, материализованный на машиночитаемом носителе, при этом упомянутый сигнал, при его декодировании в декодере, сконфигурирован для обеспечения декодирования декодером, данных изображений из упомянутого сигнала битового потока, при этом упомянутый сигнал включает сигнал кодированной ошибки предсказания, сформированный при помощи направленного внутреннего предсказания изображений, и при этом предсказанные значения пикселей были сформированы в предсказанном блоке изображения при помощи направленного внутреннего предсказания изображений с использованием значений одного или более выбранных опорных пикселей при формировании предсказанных значений пикселей, и при этом выбранные опорные пиксели были выбраны согласно направлению предсказания относительно предсказанного пикселя, при этом упомянутое направление предсказания является широкоугольным направлением предсказания, образующим тупой угол с направлением «влево-вверх» от упомянутого предсказанного пикселя, при этом сигнал битового потока сконфигурирован для обеспечения выбора, декодером, широкоугольного направления предсказания в качестве направления предсказания для декодирования битового потока.
54. Сигнал битового потока, материализованный на машиночитаемом носителе, при этом упомянутый сигнал, при его декодировании в декодере, сконфигурирован для обеспечения декодирования, декодером, данных изображений из упомянутого сигнала битового потока, при этом упомянутый сигнал включает информацию для определения формы декодируемого блока изображения, при этом для упомянутого декодирования применяют внутреннее направленное предсказание изображений с использованием направления предсказания, при этом вероятные режимы предсказания связаны с упомянутой формой, при этом упомянутый битовый поток включает индикатор, указывающий, является ли упомянутое направление предсказания одним из упомянутых вероятных режимов предсказания, связанных с упомянутой формой, в результате чего обеспечивается выбор, декодером, направления предсказания для декодирования битового потока.
Различные варианты осуществления настоящего изобретения могут быть реализованы с помощью компьютерного программного кода, размещенного в памяти и обеспечивающего осуществление настоящего изобретения соответствующими устройствами. Например, устройство может включать схемы и электронику для обработки, приема и передачи данных, компьютерный программный код и процессор, который при исполнении этого компьютерного кода обеспечивает реализацию элементов одного из вариантов осуществления настоящего изобретения данным устройством. Также сетевое устройство, такое как сервер, может включать схемы и электронику для обработки, приема и передачи данных, компьютерный программный код и процессор, который при исполнении этого компьютерного кода обеспечивает реализацию элементов одного из вариантов осуществления настоящего изобретения данным сетевым устройством.
Очевидно, что настоящее изобретение не ограничено исключительно представленными выше вариантами его осуществления, а может быть модифицировано в рамках приложенной формулы изобретения.