Способ и устройство кодирования и способ и устройство декодирования
Иллюстрации
Показать всеИзобретение относится к средствам кодирования телевизионного изображения. Техническим результатом является повышение точности управления скоростью передачи битов и эффективности сжатия при кодировании и декодировании. Способ содержит получение кодером данных, представляющих собой наибольший элемент кодирования LCU, определение кодером параметра глубины квантования LCU и добавление указанного параметра в подлежащие кодированию данные, где параметр глубины квантования используется для указания размера минимального блока изображения, имеющего независимый параметр квантования, QP в LCU, определение кодером QP каждого элемента кодирования, CU в LCU согласно размеру минимального блока изображения и размеру каждого содержащегося CU, вычисление кодером разности QP каждого CU согласно QP каждого CU и значению прогнозирования QP каждого CU, сохранение кодером в каждом CU, удовлетворяющему заданному условию, разности QP упомянутого CU; кодирование кодером параметра глубины квантования. 4 н. и 22 з.п. ф-лы, 11 ил.
Реферат
ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ
Эта заявка является продолжением международной заявки № PCT/CN2011/081102, поданной 21 октября 2011 г., которая испрашивает приоритет по патентной заявке Китая № 2011100591949, поданной 11 марта 2011 г., обе из которых полностью включены в состав данного документа по ссылке.
ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к области обработки данных, и, в частности, к способу и устройству кодирования и к способу и устройству декодирования.
УРОВЕНЬ ТЕХНИКИ
В процессе кодирования телевизионного изображения в уровне техники, кодер должен выполнять пространственное преобразование для данных исходного блока изображения или данных разности блоков прогнозированного изображения, выполнять операцию квантования для коэффициента преобразования, и затем выполнять энтропийное кодирование для квантованного коэффициента. Декодер выполняет операцию обратного квантования для коэффициента, полученного после энтропийного декодирования, восстанавливает коэффициент для получения коэффициента преобразования, и затем выполняет операцию обратного преобразования для получения данных блока исходного изображения или данных разности блоков изображения.
Для выполнения операции обратного квантования декодер должен получить шаг квантования (QStep), используемый в процессе квантования в кодере. Следовательно, кодер должен вписывать информацию об использовании Qstep в поток битов. Поскольку различные Qstep могут быть указаны посредством различных параметров квантования (QP, Quantization Parameter), кодер может кодировать QP и передавать его в декодер.
В тестовой модели высокоэффективного кодирования видеосигнала (HM, High efficiency video coding test Model) изображение делится на наибольшие элементы кодирования (LCU, Large Coding Units) одного размера, причем каждый LCU может включать в себя один или несколько CU нефиксированных размеров.
В способе кодирования изображения в уровне техники минимальным блоком, который может иметь независимый QP, является LCU, то есть каждый LCU соответствует QP.
Во время кодирования кодер описывает относящуюся к QP информацию в наборе параметров изображения (PPS, Picture Parameter Set) следующим образом:
Описание в заголовке среза (SH, Slice Header) следующее:
Описание в LCU следующее:
После того как кодер завершил кодирование вышеописанным способом, закодированные данные отправляются в декодер. Для каждого LCU декодер вычисляет параметр квантования QPLCU текущего LCU следующим образом:
Декодер может выполнять декодирование после получения параметра QPLCU текущего LCU.
Как можно видеть из решения из уровня техники:
в уровне техники каждый LCU соответствует QP; при выполнении управления скоростью передачи битов посредством регулировки QP кодер может только использовать LCU в качестве самой тонкой степени детализации для управления. Поскольку LCU в действительных приложениях обычно устанавливается равным некоторому большому размеру, например, 64*64 пикселей (что дальше здесь сокращается до 64*64 для простоты описания; что справедливо и для других данных), решение уровня техники влияет на точность управления скоростью передачи битов.
В другом способе кодирования изображения в уровне техники каждый CU в LCU переносит информацию qp_delta CU, так что точность управления скоростью передачи битов может быть улучшена.
Однако в уровне техники из-за того, что минимальный CU может быть установлен равным 8*8, если каждый CU переносит информацию qp_delta этого CU, затраты ресурсов кодирования сильно увеличиваются, и, следовательно, оказывается негативное влияние на полную эффективность сжатия при кодировании изображения.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Варианты осуществления настоящего изобретения обеспечивают способ и устройство кодирования, способ и устройство декодирования и систему кодирования/декодирования, которые эффективно улучшают точность управления скоростью передачи битов и эффективность сжатия.
Способ кодирования, обеспеченный вариантом осуществления настоящего изобретения, включает в себя: получение кодером данных, которые должны быть кодированы, причем данные, которые должны быть кодированы, представляют собой по меньшей мере один наибольший элемент кодирования (LCU); определение кодером параметра глубины квантования LCU согласно заданному алгоритму управления скоростью передачи битов и вписывание параметра глубины квантования в данные, которые должны быть кодированы, причем параметр глубины квантования используется для указания некоторого размера минимального блока изображения, имеющего независимый QP в LCU; определение кодером QP каждого CU согласно размеру минимального блока изображения и размеру каждого CU, содержащегося в LCU; вычисление кодером разности QP каждого CU согласно QP каждого CU и некоторому значению прогнозирования QP каждого CU; для каждого CU, который удовлетворяет некоторому заданному условию, перенос кодером разности QP для CU в CU; и кодирование кодером параметра глубины квантования, разности QP для CU, который удовлетворяет заданному условию, и каждого CU для получения некоторого потока битов.
Способ декодирования, обеспеченный вариантом осуществления настоящего изобретения, включает в себя: анализ декодером принятого потока битов для получения параметра глубины квантования, причем параметр глубины квантования используется для указания некоторого размера минимального блока изображения, имеющего независимый QP в LCU; вычисление декодером значения прогнозирования QP каждого CU согласно размеру минимального блока изображения и размеру каждого CU, входящего в состав LCU; для каждого CU, который удовлетворяет некоторому заданному условию, анализ декодером потока битов для получения разности QP для CU; вычисление декодером QP каждого CU согласно значению прогнозирования QP каждого CU и разности QP, полученной посредством анализа; и декодирование декодером каждого CU согласно QP каждого CU.
Устройство кодирования, обеспеченное вариантом осуществления настоящего изобретения, включает в себя: блок получения данных, конфигурированный для получения данных, которые должны быть кодированы, причем данные, которые должны быть кодированы, представляют собой по меньшей мере один наибольший элемент кодирования LCU; блок обработки параметра глубины, конфигурированный для определения параметра глубины квантования LCU согласно заданному алгоритму управления скоростью передачи битов, и для вписывания параметра глубины квантования в данные, которые должны быть кодированы, которые получаются блоком получения данных, причем параметр глубины квантования используется для указания некоторого размера минимального блока изображения, имеющего независимый QP в LCU; блок определения параметра квантования, конфигурированный для определения QP каждого CU согласно размеру минимального блока изображения и размеру каждого CU, входящего в состав LCU; блок вычисления, конфигурированный для вычисления разности QP каждого CU согласно QP каждого CU, определенному блоком определения параметра квантования, и некоторому значению прогнозирования QP каждого CU; блок заполнения, конфигурированный для переноса, для каждого CU, который удовлетворяет некоторому заданному условию, разности QP для CU в CU; и блок кодирования, конфигурированный для кодирования параметра глубины квантования, разности QP для CU, который удовлетворяет заданному условию, и каждого CU для получения некоторого потока битов.
Устройство декодирования, обеспеченное вариантом осуществления настоящего изобретения, включает в себя: первый блок анализа, конфигурированный для выполнения анализа принятого потока битов для получения параметра глубины квантования, причем параметр глубины квантования используется для указания некоторого размера минимального блока изображения, имеющего независимый QP в LCU; блок прогнозирования параметра, конфигурированный для вычисления значения прогнозирования QP каждого CU согласно размеру минимального блока изображения и размеру каждого CU, входящего в состав LCU; второй блок анализа, конфигурированный для выполнения анализа, для каждого CU, который удовлетворяет некоторому заданному условию, потока битов для получения разности QP для CU; блок вычисления параметра, конфигурированный для вычисления QP каждого CU согласно значению прогнозирования QP каждого CU, полученному блоком прогнозирования параметра, и разности QP, полученной посредством анализа вторым блоком анализа; и блок декодирования, конфигурированный для декодирования каждого CU согласно QP каждого CU, полученному посредством вычисления блоком вычисления параметра.
Как можно видеть из вышеописанных технических решений, варианты осуществления настоящего изобретения имеют следующие преимущества:
В вариантах осуществления настоящего изобретения кодер может вписывать, во время кодирования, параметр глубины квантования в данные, которые должны быть кодированы, причем параметр глубины квантования используется для указания некоторого размера минимального блока изображения, имеющего независимый QP, и для каждого CU, который удовлетворяет некоторому заданному условию, переносить разность QP для CU в CU, так что каждый LCU не соответствует только одному QP, но CU, который удовлетворяет заданному условию в LCU, соответствует QP. Следовательно, кодер может использовать CU в качестве самой тонкой степени детализации для управления скоростью передачи битов. Поскольку один LCU обычно включает в себя многочисленные CU, точность управления скоростью передачи битов LCU может быть эффективно улучшена.
Дополнительно кодер переносит разность QP для CU только в CU, который удовлетворяет заданному условию, но не переносит разность QP во всех CU. Следовательно, затраты ресурсов кодирования могут быть уменьшены, и, следовательно, полная эффективность сжатия улучшена.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
фиг. 1 - блок-схема варианта осуществления способа кодирования согласно настоящему изобретению,
фиг. 2 - блок-схема варианта осуществления способа декодирования согласно настоящему изобретению,
фиг. 3 - блок-схема варианта осуществления способа кодирования/декодирования согласно настоящему изобретению,
фиг. 4 - блок-схема, показывающая соотношение положений между CU и смежными CU согласно настоящему изобретению,
фиг. 5 - структурная схема LCU согласно настоящему изобретению,
фиг. 6 - структурная схема кодированного потока битов согласно настоящему изобретению,
фиг. 7 - блок-схема другого варианта осуществления способа кодирования/декодирования согласно настоящему изобретению,
фиг. 8 - структурная схема другого кодированного потока битов согласно настоящему изобретению,
фиг. 9 - блок-схема варианта осуществления устройства кодирования согласно настоящему изобретению,
фиг. 10 - блок-схема другого варианта осуществления устройства кодирования согласно настоящему изобретению,
фиг. 11 - блок-схема другого варианта осуществления устройства кодирования согласно настоящему изобретению,
фиг. 12 - блок-схема варианта осуществления устройства декодирования согласно настоящему изобретению,
фиг. 13 - блок-схема другого варианта осуществления устройства декодирования согласно настоящему изобретению, и
фиг. 14 - блок-схема другого варианта осуществления устройства декодирования согласно настоящему изобретению.
ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Варианты осуществления настоящего изобретения обеспечивают способ и устройство кодирования и способ и устройство декодирования, которые эффективно улучшают точность управления скоростью передачи битов и эффективность сжатия.
Как показано на фиг. 1, вариант осуществления способа кодирования настоящего изобретения включает в себя следующие этапы:
101. Кодер получает данные, которые должны быть кодированы.
В этом варианте осуществления кодер может получать данные, которые должны быть кодированы, причем данные, которые должны быть кодированы, представляют собой по меньшей мере один LCU, то есть данные, которые должны быть кодированы, могут представлять собой LCU или данные, составленные из многочисленных LCU.
102. Кодер определяет параметр глубины квантования LCU согласно заданному алгоритму управления скоростью передачи битов и вписывает параметр глубины квантования в данные, которые должны быть кодированы.
Кодер получает параметр глубины квантования LCU согласно заданному алгоритму управления скоростью передачи битов, причем параметр глубины квантования используется для указания некоторого размера минимального блока изображения, имеющего независимый QP в LCU.
Следует отметить, что под размером, описанным в этом варианте осуществления и в последующих вариантах осуществления, подразумевается длина стороны, например, если CU представляет собой 32*32, то размер этого CU определяется как 32.
Кодер может получать параметр глубины квантования LCU, пытаясь выполнить замены, то есть постоянно регулируя значение параметра глубины квантования и выполняя аналоговое кодирование, так что скорость передачи битов после кодирования соответствует ожидаемому требованию. Специфический процесс не ограничивается в данном документе.
После определения параметра глубины квантования кодер может вписывать параметр глубины квантования в данные, которые должны быть кодированы, для отправки данных в декодер.
103. Кодер определяет QP каждого CU согласно размеру минимального блока изображения и размеру каждого CU, входящего в состав LCU.
После получения параметра глубины квантования LCU кодер может узнать размер минимального блока изображения, имеющего независимый QP, и соответствующий параметру глубины квантования, и определяет QP каждого CU согласно размеру минимального блока изображения и размеру каждого CU, входящего в состав LCU.
104. Кодер вычисляет разность QP каждого CU согласно QP каждого CU и некоторому значению прогнозирования QP каждого CU.
В этом варианте осуществления кодер может получать значение прогнозирования QP каждого CU посредством вычисления, согласно QP каждого CU, полученному на этапе 103, и затем получать разность QP каждого CU согласно значению прогнозирования QP и QP.
В этом варианте осуществления разность QP некоторого CU может быть задана как разность между QP для CU и значением прогнозирования QP для этого CU.
105. Для каждого CU, который удовлетворяет некоторому заданному условию, кодер переносит разность QP для CU в CU.
После определения разности QP каждого CU кодер может выбрать CU, который удовлетворяет заданному условию, из CU и переносить разность QP для CU в CU, который удовлетворяет заданному условию.
106. Кодер кодирует параметр глубины квантования, разность QP для CU, который удовлетворяет заданному условию, и каждый CU для получения некоторого потока битов.
В этом варианте осуществления после того как кодер вписывает параметр глубины квантования в данные, которые должны быть кодированы, и вписывает разность QP в CU, который удовлетворяет заданному условию, кодер может кодировать все данные, которые должны быть кодированы, то есть кодировать параметр глубины квантования, разность QP для CU, который удовлетворяет заданному условию, и каждый CU для получения некоторого потока битов.
В этом варианте осуществления кодер может вписывать, во время кодирования, параметр глубины квантования в данные, которые должны быть кодированы, причем параметр глубины квантования используется для указания некоторого размера минимального блока изображения, имеющего независимый QP, и для каждого CU, который удовлетворяет заданному условию, может переносить разность QP для CU в CU, так что каждый LCU не соответствует только одному QP, но CU, который удовлетворяет заданному условию в LCU, соответствует QP. Следовательно, кодер может использовать CU в качестве самой тонкой степени детализации для управления скоростью передачи битов. Поскольку один LCU обычно включает в себя многочисленные CU, точность управления скоростью передачи битов LCU может быть эффективно улучшена.
Дополнительно кодер переносит разность QP для CU только в CU, который удовлетворяет заданному условию, но не переносит разность QP во всех CU. Следовательно, затраты ресурсов кодирования могут быть уменьшены, и, следовательно, полная эффективность сжатия улучшена.
Вышесказанное описывает процесс кодирования согласно настоящему изобретению с перспективы кодера. Нижеследующее описывает процесс декодирования согласно настоящему изобретению с перспективы декодера. Как показано на фиг. 2, вариант осуществления способа декодирования согласно настоящему изобретению включает в себя:
201. Декодер выполняет анализ принятого потока битов для получения параметра глубины квантования.
В этом варианте осуществления декодер может принимать кодированный поток битов из кодера. Поскольку кодер вписывает, во время кодирования, параметр глубины квантования в данные, которые должны быть кодированы, декодер может выполнять анализ соответствующего положения потока битов для получения параметра глубины квантования согласно предварительному соглашению.
Параметр глубины квантования используется для указания некоторого размера минимального блока изображения, имеющего независимый QP в LCU.
202. Декодер вычисляет значение прогнозирования QP каждого CU согласно размеру минимального блока изображения и размеру каждого CU, входящего в состав LCU.
В этом варианте осуществления после получения параметра глубины квантования, посредством анализа, из потока битов декодер может узнать размер минимального блока изображения, имеющего независимый QP согласно параметру глубины квантования, и определить значение прогнозирования QP каждого CU согласно размеру минимального блока изображения и размеру каждого CU, входящего в состав LCU.
203. Для каждого CU, который удовлетворяет некоторому заданному условию, декодер выполняет анализ потока битов для получения разности QP для CU.
В этом варианте осуществления декодер может дополнительно выполнять анализ, для каждого CU, который удовлетворяет некоторому заданному условию, потока битов для получения разности QP для CU.
Следует отметить, что процесс получения разности QP декодером и процесс вычисления значения прогнозирования QP каждого CU декодером не ограничиваются порядком; процесс получения разности QP может исполняться первым, или процесс вычисления значения прогнозирования QP каждого CU может исполняться первым, или оба процесса могут быть исполнены одновременно, что определенным образом не ограничивается в данном документе.
204. Декодер вычисляет QP каждого CU согласно значению прогнозирования QP каждого CU и разности QP, полученной посредством анализа.
После того как декодер узнает значение прогнозирования QP каждого CU на этапе 202 и получает разность QP посредством анализа на этапе 203, декодер может вычислять QP каждого CU согласно этим параметрам.
205. Декодер декодирует каждый CU согласно QP каждого CU.
В этом варианте осуществления после выяснения QP каждого CU, декодер может выполнять обработку обратного квантования и последующий процесс декодирования для каждого CU, что определенным образом не ограничивается в данном документе.
В этом варианте осуществления кодер может вписывать, во время кодирования, параметр глубины квантования в данные, которые должны быть кодированы, причем параметр глубины квантования используется для указания некоторого размера минимального блока изображения, имеющего независимый QP, и для каждого CU, который удовлетворяет некоторому заданному условию, может переносить разность QP каждого CU в CU, так что каждый LCU не соответствует только одному QP. Следовательно, декодер может выполнять декодирование для каждого CU во время декодирования, без выполнения декодирования для всего LCU, и, следовательно, эффективность декодирования может быть улучшена.
Для простоты понимания обеспечивается последующее описание с перспективы кодирования/декодирования. Как показано на фиг. 3, вариант осуществления способа кодирования/декодирования согласно настоящему изобретению включает в себя следующие этапы:
301. Кодер получает последовательность, изображение или срез, которые должны быть кодированы.
В этом варианте осуществления данные, которые должны быть кодированы, которые получаются кодером, представляют собой последовательность или изображение или срез (фрагмент). Должно быть понятно, что последовательность включает в себя несколько изображений, изображение включает в себя несколько срезов, и срез включает в себя несколько LCU.
То есть в этом варианте осуществления данные, которые должны быть кодированы, которые получаются кодером, представляют собой многочисленные LCU.
302. Кодер определяет параметр lcu_qp_depth глубины квантования LCU согласно заданному алгоритму управления скоростью передачи битов.
Кодер получает соответствующее значение lcu_qp_depth согласно заданному алгоритму управления скоростью передачи битов. В частности, кодер может получать значение lcu_qp_depth, пытаясь выполнить замены, то есть постоянно регулируя значение lcu_qp_depth и выполняя аналоговое кодирование, так что скорость передачи битов после кодирования соответствует ожидаемому требованию. Специфический процесс не ограничивается в данном документе.
Диапазон значений lcu_qp_depth в этом варианте осуществления может составлять все целые числа от 0 до MaxSymbol, где MaxSymbol может быть вычислено с использованием следующего способа:
где max_coding_block_size указывает размер максимального CU, а именно размер LCU, и min_coding_block_size указывает размер минимального CU.
Следует отметить, что под размером, описанным в этом варианте осуществления и в последующих вариантах осуществления, подразумевается длина стороны, например, если CU представляет собой 32*32, то размер этого CU определяется как 32.
В этом варианте осуществления lcu_qp_depth используется для указания некоторого размера минимального блока изображения, имеющего независимый QP в LCU. Когда lcu_qp_depth равно 0, оно указывает, что минимальный блок изображения, имеющий независимый QP, представляет собой LCU; когда lcu_qp_depth равно 1, оно указывает, что LCU делится на четыре CU 32*32, с размером минимального блока изображения, равным 32, и т.д.
lcu_qp_depth в этом варианте осуществления представляет собой размер минимального блока изображения, имеющего независимый QP в каждом LCU в последовательности, изображении или срезе. То есть все LCU в последовательности, изображении или срезе используют одно и то же lcu_qp_depth.
303. Кодер вписывает lcu_qp_depth в набор параметров последовательности, набор параметров изображения или информацию заголовка среза.
В этом варианте осуществления после получения значения lcu_qp_depth кодер может вписывать lcu_qp_depth в данные, которые должны быть кодированы.
Кодер может вписывать lcu_qp_depth в набор параметров последовательности для последовательности (SPS, Sequence Parameter Set), в частности, следующим образом:
Или кодер может вписывать lcu_qp_depth в PPS (для) изображения, в частности, следующим образом:
Или кодер может вписывать lcu_qp_depth в информацию заголовка среза для среза, в частности, следующим образом:
Должно быть понятно, что этот вариант осуществления использует только несколько примеров для описания положения для вписывания lcu_qp_depth; в фактическом применении lcu_qp_depth также может быть вписан в другие положения последовательности, изображения или среза, которые определенным образом не ограничиваются в данном документе.
304. Кодер вычисляет размер минимального блока изображения QPBlkSize, имеющего независимый QP.
После получения lcu_qp_depth кодер может вычислять размер QPBlkSize QPBlk минимального блока изображения согласно lcu_qp_depth.
В предположении, что размер LCU представляет собой max_coding_block_size, QPBlkSize может быть получен путем вычисления с использованием следующего способа:
Например, когда max_coding_block_size равен 64 и lcu_qp_depth равно 2, тогда QPBlkSize равен 16, то есть минимальный блок изображения представляет собой CU 16*16.
305. Кодер получает QP каждого CU согласно QPBlkSize и размеру CU.
В этом варианте осуществления кодер может получать QP каждого CU в следующих ситуациях.
Кодер вычислят QP для CU, размер которого больше или равен QPBlkSize, согласно заданному алгоритму управления скоростью передачи битов.
Для CU, размер которого меньше QPBlkSize, кодер сначала определяет некоторый минимальный блок изображения, к которому принадлежит CU, затем вычисляет QP минимального блока изображения согласно заданному алгоритму управления скоростью передачи битов, и использует QP минимального блока изображения в качестве QP всех CU в минимальном блоке изображения.
В этом варианте осуществления процесс вычисления QP согласно заданному алгоритму управления скоростью передачи битов кодером является обычным для специалиста в данной области и определенным образом не ограничивается в данном документе.
306. Кодер получает значение прогнозирования QP каждого CU.
После получения QP каждого CU, кодер может использовать, согласно порядку кодирования (порядок кодирования и порядок декодирования одинаковы), QP кодированных CU смежных c каждым CU, для получения значения прогнозирования QP каждого CU. Обычно смежные кодированные CU включают в себя левый CU, верхний CU и верхний левый CU.
Для простоты описания сначала задается опорный CU:
Кодер использует каждый CU, размер которого больше или равен QPBlkSize, в качестве опорного CU, и для CU, размер которого меньше QPBlkSize, кодер определяет минимальный блок изображения, к которому принадлежит этот CU, и использует верхний левый CU минимального блока изображения в качестве опорного CU.
После того как задан опорный CU, кодер может вычислить значение прогнозирования QP каждого опорного CU согласно QP для CU, смежных с каждым опорным CU. Может быть много специфических способов вычисления, которые описаны с использованием нескольких примеров.
1. Вычисление с использованием левого CU, верхнего CU и верхнего левого CU:
Как показано на фиг. 4, CUC представляет собой опорный CU, причем CU может быть CU, размер которого больше или равен QPBlkSize, или может быть CU в верхнем левом углу минимального блока изображения.
CUU представляет собой верхний CU для CUC, CUL представляет собой левый CU для CUC, и CUUL представляет собой верхний левый CU для CUC. В этом варианте осуществления CU, смежные с CUC, представляют собой левый CU, верхний CU и верхний левый CU.
Координаты верхнего левого пикселя CUC представляют собой (xc, yc). Следовательно, CUL представляет собой CU, включающий в себя пиксель (xc-l, yc), CUU представляет собой CU, включающий в себя пиксель (xc, yc-1), и CUUL представляет собой CU, включающий в себя пиксель (xc-l,yc-l).
После определения CU, смежных с опорным CU, кодер может получать QP для CU согласно результату, вычисленному на этапе 305, где QP для CUC представляет собой QPC, QP для CUU представляет собой QPU, QP для CUL представляет собой QPL, и QP для CUUL представляет собой QPUL.
Следует отметить, что не для каждого CU может быть получен левый CU, верхний CU и верхний левый CU. Например, сам CU, расположенный на крайней левой стороне изображения или среза, не имеет левого CU. Следовательно, кодер может определять значение прогнозирования QP каждого CU согласно следующим специфическим условиям:
(1) Если не существует CU, смежных с CUC, определяют значение прогнозирования QP параметра квантования QPP для CUC согласно срезу и изображению, к которому принадлежит CUC.
В частности, QPp=slice_qp_delta + pic_init_qp_minus26 + 26, где slice_qp_delta представляет собой информацию, входящую в информацию заголовка среза, и pic_init_qp_minus26 представляет собой информацию, входящую в набор параметров изображения.
(2) Если в CUC существует только CUL, то QPL используется в качестве QPP.
(3) Если в CUC существует только CUU, то QPU используется в качестве QPP.
(4) Если существуют все CU, смежные с CUC, получают первую разность |QPL-QPUL| между QPL и QPUL, и вторую разность |QPU - QPUL| между QPU и QPUL.
Если |QPL-QPUL|<|QPU-QPUL|, это указывает, что разность между QPL и QPUL меньше, чем разность между QPU и QPUL. В этом случае очень вероятно, что CUL и CUUL принадлежат одному и тому же объекту в изображении. Поскольку край объекта расположен на краю CUU и CUUL, QPU может быть использован в качестве QPP.
Если |QPL-QPUL|≥|QPU-QPUL|, согласно вышеописанному выводу, QPL может быть использован в качестве QPP.
В фактическом применении следующие коды могут быть использованы для реализации вышеуказанной процедуры:
Понятно, что вышеупомянутые коды являются только примером в процессе реализации в фактическом применении, и для реализации могут быть использованы другие подобные коды, причем конкретная реализация не ограничивается в данном документе.
2. Вычисление с использованием левого CU, верхнего CU и ранее кодированного CU:
Также, как показано на фиг. 4, в этом варианте осуществления CUL и CUU могут быть использованы как CU, смежные с опорным CUC, причем CUC может быть CU, размер которого больше или равен QPBlkSize, или может быть CU в верхнем левом углу минимального блока изображения.
Координаты верхнего левого пикселя CUC представляют собой (xc, yc). Следовательно, CUL представляет собой CU, включающий в себя пиксель (xc-l, yc), CUU представляет собой CU, включающий в себя пиксель (xc, yc-1), QP для CUC представляет собой QPC, QP для CUU представляет собой QPU и QP для CUL представляет собой QPL.
Следует отметить, что не для каждого CU может быть получен левый CU и верхний CU. Например, сам CU, расположенный на крайней левой стороне изображения или среза, не имеет левого CU. Следовательно, кодер может определять значение прогнозирования QP каждого CU согласно следующим специфическим условиям:
(1) Если существует CUL для CUC, QPL используется в качестве QPP.
(2) Если не существует CUL для CUC, и существует CUU для CUC или ранее кодированный CU для CUC, QPU или QP ранее кодированного CU используется в качестве QPP.
(3) Если не существует CUL для CUC, и оба CUU для CUC и ранее кодированный CU для CUC существуют, QPU или QP ранее кодированного CU используется в качестве QPP. В частности, использовать ли QPU или QP ранее кодированного CU в качестве QPP, может быть определено заранее в кодере/декодере.
(4) Если никакой из CUL, CUU и ранее ранее кодированного CU для CUC не существует, QPP определяется согласно срезу и изображению, к которому принадлежит CUC.
В частности, QPp=slice_qp_delta + pic_init_qp_minus26 + 26, где slice_qp_delta представляет собой информацию, входящую в информацию заголовка среза, и pic_init_qp_minus26 представляет собой информацию, входящую в набор параметров изображения.
Выше используются только два примера для описания процесса вычисления значения прогнозирования QP каждого опорного CU кодером. Понятно, что в фактическом применении кодер может дополнительно использовать больше способов для вычисления значения прогнозирования QP каждого опорного CU, которые определенным образом не ограничиваются в данном документе.
307. Кодер записывает разность cu_qp_delta QP для CU, который удовлетворяет некоторому заданному условию, в CU.
Кодер получает QP каждого CU посредством вычисления на этапе 305 и получает значение прогнозирования QP каждого опорного CU посредством вычисления на этапе 306. Следовательно, кодер может дополнительно вычислять разность cu_qp_delta QP каждого CU согласно параметрам, и специфический способ вычисления может быть следующим.
Для каждого опорного CU кодер использует разность между QP опорного CU и значением прогнозирования QP опорного CU в качестве разности QP опорного CU, то есть cu_qp_delta=QPC-QPP.
Если другой CU входит в состав минимального блока изображения, к которому принадлежит опорный CU, то кодер использует разность QP опорного CU в качестве разности QP других CU в минимальном блоке изображения.
То есть для CU, размер которого больше или равен QPBlkSi, поскольку такие CU являются опорными CU, кодер может использовать разность между QP и значениями прогнозирования QP для CU в качестве cu_qp_delta для CU.
Для CU, размер которых меньше QPBlkSize, то есть несколько CU входят в состав минимального блока изображения, где CU в верхнем левом углу минимального блока изображения представляет собой опорный CU, значение прогнозирования QP опорного CU может быть получено на этапе 306. Затем cu_qp_delta=QPC-QPP опорного CU может быть получена в комбинации с QP, вычисленным на этапе 305, и после этого значение cu_qp_delta опорного CU назначается другим CU в минимальном блоке изображения. Следует отметить, что в фактическом применении, в дополнение к операции назначения значения, могут быть использованы другие способы для обработки, например, если определяется, что CU в минимальном блоке изображения удовлетворяет некоторому заданному условию, cu_qp_delta опорного CU минимального блока изображения, к которому принадлежит CU, переносится в CU.
В этом варианте осуществления после получения cu_qp_delta каждого CU, кодер может переносить cu_qp_delta для CU в CU, который удовлетворяет некоторому заданному условию. Специфический CU, который удовлетворяет заданному условию, может представлять собой CU, имеющий ненулевой квантованный коэффициент преобразования в сжатом потоке битов CU.
Если некоторый CU использует режим кодирования с пропуском, то не существует ненулевого квантованного коэффициента преобразования в сжатом потоке битов CU. Следовательно, такие CU не удовлетворяют заданному условию; если режим кодирования с пропуском не используется, то CU могут включать в себя ненулевой квантованный коэффициент преобразования в сжатом потоке битов CU, и CU удовлетворяют заданному условию.
В этом варианте осуществления для некоторого CU, который удовлетворяет заданному условию, кодер может вписывать cu_qp_delta CU в следующее положение CU:
где sig_coeff_num>0 представляет собой условие для оценки того, существует ли cu_qp_delta в потоке битов текущего CU; если условие оценки истинно, то это указывает, что cu_qp_delta существует в потоке битов текущего CU; или если условие оценки ложно, то это указывает, что cu_qp_delta не существует в потоке битов текущего CU.
Следует отметить, что для CU, размер которого меньше QPBlkSize, кодер делает оценку того, удовлетворяют ли CU в минимальном блоке изображения, которому принадлежит CU, заданному условию; если один CU не удовлетворяет заданному условию, продолжают оценивать, удовлетворяют ли последующие CU заданному условию; если последующие CU удовлетворяют заданному условию, вписывают cu_qp_delta CU в CU и останавливают оценку, то есть cu_qp_delta больше не вписывается в другие CU в минимальном блоке изображения независимо от того, удовлетворяют ли CU заданному условию или нет.
Следует отметить, что, поскольку не все CU удовлетворяют некоторому заданному условию, кодер не только может переносить cu_qp_delta CU в CU, который удовлетворяет некоторому заданному условию, но также может сбрасывать QP для CU, который не удовлетворяет настоящему условию. Специфический способ может заключаться в следующем.
Для каждого CU, который не удовлетворяет заданному условию, кодер устанавливает QP для CU следующим образом:
для некоторого CU, размер которого больше или равен QPBlkSize, кодер использует значение прогнозирования QP для CU в качестве QP для CU; и для некоторого CU, размер которого меньше QPBlkSize, если ни один из других CU в минимальном блоке изображения, к которому принадлежит CU, не удовлетворяет заданному условию, то кодер использует значение прогнозирования QP опорного CU в минимальном блоке изображения, к которому принадлежит CU, в качестве QP для CU.
Сброс QP для CU, который не удовлетворяет заданному условию, может гарантировать, что значение прогнозирования такое же, как у декодера, может быть получено во время прогнозирования QP в следующем кодируемом CU.
308. Кодер кодирует lcu_qp_depth, cu_qp_delta и каждый CU для получения потока битов.
После получения lcu_qp_depth и cu_qp_delta кодер может кодировать каждый CU. В этом варианте осуществления процесс кодирования lcu_qp_depth кодером может включать в себя: использование кодером кода с фиксированной длиной слова или код