Аппаратура и способ оценки объема кода, а также носитель информации для его реализации
Иллюстрации
Показать всеИзобретение относится к способу и устройству определения объема кода в кодировании видеосигнала, в котором видеоизображение подвергается ортогональному преобразованию и кодированию с использованием кода переменной длины. Техническим результатом является уменьшение вычислительных затрат при кодировании с использованием кода переменной длины. Указанный технический результат достигается тем, что предложен способ определения объема кода при кодировании квантованных значений коэффициентов ортогонального преобразования большего размера, чем размер ортогонального преобразования, назначенный таблице кодов переменной длины, квантованные значения преобразуют к одномерному виду для получения наборов Серия-Значение. На основе пропорции между площадью ортогонального преобразования, соответствующей размеру ортогонального преобразования, назначенному таблице кодов переменной длины, и площадью ортогонального преобразования для целевого объекта кодирования вычисляется количество групп. Длина кода каждого набора Серия-Значение в каждой группе определяется посредством обращения к таблице кодов переменной длины. Объем сформированного кода оценивается равным общей сумме длин кода всех групп. 3 н. и 2 з.п. ф-лы, 17 ил.
Реферат
Область техники, к которой относится изобретение
Настоящее изобретение относится к способу оценки объема кода и соответствующим аппаратуре, программе и носителю информации в кодировании видеосигнала, в котором видеоизображение подвергается ортогональному преобразованию и кодированию с использованием кода переменной длины.
Испрашивается приоритет по дате подачи японской патентной заявки №2007-064283, поданной 14 марта 2007 г., содержимое которой включено в этот документ по ссылке.
Предшествующий уровень техники
В большинстве последних способов кодирования видеосигнала каждый кадр разделяется на малые области, и разностное изображение на основе предсказанного изображения подвергается ортогональному преобразованию, квантованию и затем энтропийному кодированию, посредством чего видеоданные сжимаются.
В стандарте кодирования видеосигнала Н.264 (см. непатентный документ 1) как текущем основном формате кодирования видеосигнала может выбираться не только способ контекстно-адаптивного кодирования с переменной длиной ("CAVLC") для выполнения энтропийного кодирования посредством обращения к таблице, но также и способ контекстно-адаптивного двоичного арифметического кодирования ("САВАС"), который может дополнительно улучшать эффективность кодирования.
Вышеупомянутый САВАС является способом кодирования, который может сжимать стационарный сигнал до логического ограничения и соответственно является основным способом для высокоэффективного кодирования. Однако по сравнению с CAVLC вычислительные затраты CABAC очень высокие (см. непатентный документ 2).
При кодировании видеоизображения и формировании потока, который может распространяться по сети, имеющей ограниченную полосу частот передачи, необходимо формировать постоянный объем формируемого кода в единицу времени, чтобы не превысить ограниченную полосу частот. Как правило, для управления объемом формируемого кода выполняется управление скоростью посредством изменения величины шага квантования ("Qstep").
Например, кодируется каждый целевой блок кодирования, вычисляется соответствующий объем формируемого кода, и корректируется Qstep следующего блока на основе вычисленного результата, посредством чего сохраняется постоянный объем формируемого кода.
При использовании CABAC для получения объема формируемого кода требуется значительное количество времени, что увеличивает задержку кодирования. В известном предложенном способе для уменьшения задержки аппроксимируется соотношение между Qstep и объемом формируемого кода с использованием функции, чтобы оценить объем формируемого кода (см. патентный документ 1).
Однако использование приближенной функции дает вариацию в точности измерения, зависящую от каждого видеоизображения. Для выполнения оценки с улучшенной точностью может использоваться CAVLC, имеющий меньше вычислительных затрат, чем CABAC, для оценивания объема кода (то есть оценки объема кода). В таком случае используется результат, полученный посредством выполнения кодирования с переменной длиной, и соответственно может быть выполнена более высокая оценка объема кода.
На фиг.7A и фиг.7B изображена блок-схема операции кодирования, посредством которой может использоваться CAVLC для оценки объема кода CABAC. Здесь на фиг.7A изображена основная процедура, и на фиг.B изображен процесс CABAC.
Сначала будет объяснена основная процедура (этапы S101-S111) по фиг.7A.
Сначала определяются межкадровый способ предсказания и внутрикадровый способ предсказания (см. этапы S101 и S102).
После этого определяется способ предсказания посредством выполнения межкадрового/внутрикадрового определения (см. этап S103), и для определенного способа вычисляется остаток предсказания (см. этап S104) и подвергается DCT (см. этап S105).
К коэффициентам преобразования DCT применяется квантование с использованием предоставляемого Qstep (см. этап S106).
Квантованные коэффициенты преобразования организуют в одномерном виде, и в блок вычисления CABAC подается информация о коэффициентах. Одновременно выполняется оценка объема кода на основе информации о коэффициентах (процесс предварительного кодирования) (см. этап S107).
Квантованные коэффициенты также подвергаются обратному квантованию (см. этап S108) и IDCT (см. этап S109) и после этого добавляются к предсказанному изображению, посредством чего формируется декодированное изображение (см. этап S110).
Наконец, декодированное изображение подвергается процессу фильтрации (см. этап S111).
Далее будет объясняться процесс CABAC (см. этапы S121-S125) по фиг.7B.
Сначала ожидается прием информации о коэффициентах, формируемой в процессе предварительного кодирования (S107) (см. этапы S121-S122). Когда соответствующие данные приняты, выполняется этап CABAC (см. этап S123), и передается сформированный поток (см. этап S124). Наконец, объем сформированного кода отправляют в контроллер объема кода (см. этап S125).
На фиг.8 изображен пример структуры для реализации вышеупомянутой операции.
Изображенное устройство содержит блок 101 определения межкадрового способа предсказания, блок 102 определения внутрикадрового способа предсказания, блок выбора 103 способа предсказания, переключатель 104, вычитатель 105, блок 106 DCT, квантователь 107, контроллер 108 объема кода, процессор 109 предварительного кодирования, энтропийный кодер 110, обратный квантователь 111, блок 112 IDCT, сумматор 113, буфер 114 для хранения декодированного изображения, фильтр 115 и буфер 116 для хранения опорного изображения.
Блок 101 определения межкадрового способа предсказания выполняет предсказание с компенсацией движения с использованием опорного изображения в буфере 116, предназначенном для хранения опорного изображения, определяет межкадровый способ предсказания, отправляет информацию о способе предсказания в блок выбора 103 способа предсказания, а также отправляет предсказанное изображение в переключатель 104.
Блок 102 определения внутрикадрового способа предсказания определяет внутрикадровый способ предсказания с использованием декодированного изображения в буфере 114 для хранения опорного изображения, отправляет информацию о способе предсказания в блок выбора 103 способа предсказания, а также отправляет предсказанное изображение в переключатель 104.
Блок выбора 103 способа предсказания определяет способ предсказания и выбирает один из внутрикадрового способа предсказания и межкадрового способа предсказания посредством отправки управляющего сигнала в переключатель 104.
На основе управляющего сигнала из блока выбора 103 способа предсказания переключатель 104 выбирает одно из изображения межкадрового предсказания, отправленного из блока 101 определения межкадрового способа предсказания, и изображения внутрикадрового предсказания, отправленного из блока 102 определения внутрикадрового способа предсказания.
Вычитатель 105 формирует предсказанное остаточное изображение посредством вычисления разности между исходным изображением и предсказанным изображением и отправляет сформированное изображение в блок 106 DCT.
Блок 106 DCT применяет преобразование DCT к отправленному предсказанному остаточному изображению и отправляет изображение в квантователь 107.
Квантователь 107 выполняет квантование коэффициентов преобразования DCT с использованием величины шага квантования Qstep, отправленной из контроллера 108 объема кода, и отправляет квантованный результат в процессор 109 предварительного кодирования и обратный квантователь 111.
На основе оцененного объема кода (оцененный объем кода), отправленного из процессора 109 предварительного кодирования, контроллер 108 объема кода вычисляет Qstep следующего макроблока и отправляет вычисленный Qstep в квантователь 107 и обратный квантователь 111. Контроллер 108 объема кода также принимает объем сформированного кода, отправленного из энтропийного кодера 110, и исправляет разность, исходя из оцененного объема кода.
Процессор 109 предварительного кодирования вычисляет оцененный объем кода на основе квантованных коэффициентов DCT, отправленных из квантователя 107, и отправляет вычисленное значение в контроллер 108 объема кода. Процессор 109 предварительного кодирования также формирует информацию о коэффициентах посредством организации квантованных коэффициентов DCT (двумерные данные) в одномерном виде и отправляет сформированную информацию в энтропийный кодер 110.
Энтропийный кодер 110 кодирует информацию о коэффициентах, которая отправлена из процессора 109 предварительного кодирования, посредством CABAC и выводит закодированные данные как закодированный поток.
Обратный квантователь 111 выполняет обратное квантование посредством умножения соответствующего квантованного значения на Qstep и отправляет результат в блок 112 IDCT.
Блок 112 IDCT применяет IDCT к принятым данным и отправляет результат в сумматор 113.
Сумматор 113 добавляет предсказанное остаточное изображение, отправленное из блока 112 IDCT, к предсказанному изображению, отправленному из переключателя 104, и отправляет результат как декодированное изображение в буфер 114 для хранения декодированного изображения.
Буфер 114 для хранения декодированного изображения сохраняет декодированное изображение, отправленное из сумматора 113, и отправляет изображение в фильтр 115. Буфер 114 для хранения декодированного изображения также отправляет информацию о смежном пикселе в блок 102 определения внутрикадрового способа предсказания.
Фильтр 115 применяет процесс фильтрации к декодированному изображению, сохраненному в буфере 114 для хранения декодированного изображения, и отправляет отфильтрованное изображение в буфер 116 для хранения опорного изображения.
Буфер 116 для хранения опорного изображения сохраняет отфильтрованное декодированное изображение и отправляет изображение как опорное изображение в блок 101 определения межкадрового способа предсказания.
В соответствии с вышеупомянутыми функциями реализована операция, изображенная на фиг.7A и фиг.7B.
Ниже будет объясняться процессор 109 предварительного кодирования, к которому может быть применено настоящее изобретение.
Процессор 109 предварительного кодирования организует двумерные данные квантованных коэффициентов DCT в одномерном виде, формирует информацию о коэффициентах, отправляет информацию в энтропийный кодер 110 и оценивает объем кода посредством обращения к таблице.
Сначала будет объясняться способ формирования информации о коэффициентах из двумерных данных.
В примере, в котором коэффициенты DCT имеют форму блока 4×4, коэффициенты организованы в одномерном виде, в порядке, который изображен на фиг.9, и последовательно проверяются значения коэффициентов от нулевого коэффициента для сохранения количества последовательных коэффициентов, имеющих значение 0, и коэффициента (ненулевой коэффициент), который следует за этими коэффициентами и имеет значение, отличное от нуля, как набора. Здесь количество последовательных коэффициентов «0» называется Серией (Run), а коэффициент, отличный от 0, называется Значением (Level). Такая операция сканирования значений коэффициентов в зигзагообразной форме для организации их в одномерном виде и преобразования их в данные Run-Level называется "зигзагообразным сканированием".
Конкретный пример изображен на фиг.10, где перед коэффициентами "5" и "3" не существует «0», и им назначен 0 (как Run).
Кроме того, при обращении к таблице в Н.264 необходимы не только Run и Level, но также необходимы (i) количество ненулевых коэффициентов и (ii) количество окончательной последовательности коэффициентов "1" или "-1" и соответствующий знак. На основе необходимых данных объем кода оценивается посредством обращения к таблице. Кроме того, информация Run-Level кодируется посредством арифметического кодирования.
На фиг.11 изображен пример блок-схемы вышеупомянутой операции.
Сначала выполняется зигзагообразное сканирование соответствующего блока 4×4, и получают наборы Run-Level (см. этап S151). Результаты отправляют в энтропийный кодер 110 (см. этап S152).
Для полученных наборов Run-Level определяется количество ненулевых коэффициентов, количество окончательной последовательности коэффициентов "1" или "-1" и их положительный или отрицательный знак (см. этап S153) и вычисляется соответствующий объем кода с использованием таблицы кодов переменной длины (называемой "таблица VLC") (см. этап S154).
Вычисленный объем кода отправляют как оцененный объем кода в контроллер 108 объема кода (см. этап S155).
На фиг.12 изображена блок-схема зигзагообразного сканирования.
Сначала счетчики i и n каждый инициализируются в 0 (см. этап S201). Кроме того, переменная "run" также инициализируется в 0 (см. этап S202).
Далее, получают координаты S_i(x, y) i-го коэффициента в сканировании посредством обращения к таблице, и значение коэффициента в полученных координатах сохраняется в k[i] (см. этап S204). В примере обработки блока 4×4 коэффициенты последовательно вводятся в k[i] в порядке, изображенном на фиг.9.
Если k[i]=0 (см. этап S205), то run увеличивается на 1 (см. этап S206), и i также увеличивается на 1 (см. этап S209).
Если k[i] не равно нулю (см. этап S205), то значение run сохраняется в Run[n] для сохранения информации о Серии, и ненулевой коэффициент k[i] сохраняется в Level[n] для сохранения информации о Значении (см. этап S207). После этого i увеличивается на 1 (см. этап S209).
Когда сканирование достигло последнего коэффициента, операция заканчивается (см. этап S210). Когда сканирование еще не достигло последнего коэффициента, вышеупомянутый процесс повторяется от этапа S203 до S210.
В соответствии с вышеупомянутой операцией наборы Run-Level могут быть получены посредством зигзагообразного сканирования.
На фиг.13 изображен пример структуры процессора 109 предварительного кодирования по фиг.8.
Структура включает в себя буфер 201 для хранения квантованных значений, счетчик 202 серии, контроллер 203 процесса предварительного кодирования, счетчик 204 сканирования 4×4, справочную таблицу 205 порядка сканирования 4×4, буфер 206 для хранения информации Run-Level, контроллер 207 оценки объема кода, блок 208 оценки объема кода и память 209 для хранения таблицы VLC.
Буфер 201 для хранения квантованных значений хранит квантованные (значения) коэффициентов DCT. При получении информации о координатах из справочной таблицы 205 порядка сканирования 4×4 буфер 201 для хранения квантованных значений отправляет квантованное значение, соответствующее соответственным координатам, в счетчик 202 серии. Когда квантованное значение принято, буфер 201 для хранения квантованных значений отправляет сигнал начала операции в контроллер 203 процесса предварительного кодирования.
Счетчик 202 серии сохраняет переменную "run" и принимает квантованное значение из буфера 201 для хранения квантованных значений. Когда принятое квантованное значение равно 0, счетчик 202 серии увеличивает run на 1. Когда принятое квантованное значение не равно 0, счетчик 202 серии отправляет соответствующий коэффициент и текущую сохраненную Серию (Run) в буфер 206 для хранения информации Run-Level как информацию Run-Level и сбрасывает run в 0. Счетчик 202 серии также сбрасывает run в 0 при приеме сигнала сброса из контроллера 203 процесса предварительного кодирования.
Когда контроллер 203 процесса предварительного кодирования принимает сигнал начала из буфера 201 для хранения квантованных значений, контроллер 203 процесса предварительного кодирования отправляет сигнал сброса в счетчик 202 серии и буфер 206 для хранения информации Run-Level для их сброса и после этого отправляет сигнал начала операции в счетчик 204 сканирования 4×4. Кроме того, при приеме сигнала окончания из счетчика 204 сканирования 4×4 контроллер 203 процесса предварительного кодирования отправляет сигнал начала оценки в контроллер 207 оценки объема кода.
При приеме сигнала начала операции из контроллера 203 процесса предварительного кодирования счетчик 204 сканирования 4×4 последовательно отправляет числовые значения от 0 до 15 в справочную таблицу 205 порядка сканирования 4×4. Когда отправлено последнее "15", счетчик 204 сканирования 4×4 отправляет сигнал окончания в контроллер 203 процесса предварительного кодирования.
Справочная таблица 205 порядка сканирования 4×4 принимает координаты, соответствующие числовым значениям, из счетчика 204 сканирования 4×4 и отправляет координаты в буфер 201 для хранения квантованных значений.
При приеме информации Run-Level из счетчика 202 серии буфер 206 для хранения информации Run-Level сохраняет эту информацию и отправляет ее в блок 208 оценки объема кода в соответствии с управляющим сигналом из контроллера 207 оценки объема кода. Буфер 206 для хранения информации Run-Level также отправляет информацию Run-Level в энтропийный кодер 110. Кроме того, при приеме сигнала сброса из контроллера 203 процесса предварительного кодирования буфер 206 для хранения информации Run-Level удаляет содержимое буфера.
Когда контроллер 207 оценки объема кода принимает сигнал начала оценки из контроллера 203 процесса предварительного кодирования, контроллер 207 оценки объема кода отправляет сигнал начала оценки в блок 208 оценки объема кода, а также отправляет управляющий сигнал в буфер 206 для хранения информации Run-Level для отправки информации Run-Level в блок 208 оценки объема кода.
При приеме сигнала начала оценки из контроллера 207 оценки объема кода блок 208 оценки объема кода принимает информацию VLC из памяти 209 для хранения таблицы VLC на основе информации Run-Level, отправленной из буфера 206 для хранения информации Run-Level, и оценивает и выводит объем кода.
Память 209 для хранения таблицы VLC сохраняет таблицу VLC и отправляет ее как информацию VLC в блок 208 оценки объема кода.
В соответствии с вышеупомянутой структурой может быть реализована операция, как показано на фиг.11.
Непатентный документ 1: Sakae Okubo, Shinya Kadono, Yoshihiro Kikuchi, and Teruhiko Suzuki, "H.264/AVC TEXTBOOK", Impress, pp.144-146, 2004.
Непатентный документ 2: САВАС: Detlev Marpe, Heiko Schwarz, Thomas Wiegand, "Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, Vol.13, No.7, pp.620-636, July 2003.
Патентный документ 1: Japanese Unexamined Patent Application, First Publication No. H07-264579.
Раскрытие изобретения
Проблемы, которые решаются посредством изобретения
Даже когда множество размеров для ортогонального преобразования можно выбирать, таблицы кодов переменной длины, соответствующие всем размерам, не всегда готовы. Соответственно может быть не готова таблица кодов переменной длины, соответствующая ортогональному преобразованию большого размера, и таблица кодов переменной длины, соответствующая ортогональному преобразованию небольшого размера, может быть также назначена ортогональному преобразованию большого размера.
Соответственно в системе кодирования видеосигнала, имеющей множество выбираемых способов кодирования с переменной длиной, способ формирования Run-Level может изменяться в зависимости от способа кодирования с переменной длиной даже с одинаковым размером ортогонального преобразования. В таком случае объем кода, требуемый в кодировании с переменной длиной, имеющем большие вычислительные затраты, может быть оценен с использованием кодирования с переменной длиной, имеющего небольшие вычислительные затраты, и такая оценка может увеличить вычислительные затраты.
Например, в Н.264 может использоваться не только DCT 4×4, но также DCT 8×8. На фиг.14 изображен порядок сканирования, используемый при кодировании коэффициентов квантования DCT 8×8 посредством САВАС. Как понято из фиг.14, для определения Run и Level выполняется зигзагообразное сканирование от 0 до 63.
В сравнение, при кодировании коэффициентов квантования DCT 8×8 посредством CAVLC не существует особой таблицы кодов переменной длины для DCT 8×8, и целевой объект кодирования разделяют на четыре части для использования таблицы кодов переменной длины, подготовленной для DCT 4×4. Следовательно, когда выполняется кодирование DCT 8×8 с использованием CAVLC, сканирование, порядок которого полностью отличается от порядка САВАС, выполняется четыре раза, и соответственно должны быть заданы четыре разделенных и псевдокоэффициента DCT 4×4.
На фиг.15 изображен порядок сканирования CAVLC. 64 (8×8) коэффициента группируются в четыре группы (А0-А15, В0-В15, C0-CIS и D0-D15) и обрабатываются.
На фиг.15 последовательно сканируются первый блок от А0 до А15, второй блок от В0 до В15, третий блок от С0 до С15 и четвертый блок от D0 до D15, то есть сканирование выполняется четыре раза. После задания четырех разделенных блоков вычисляется объем кода, требуемого для каждого набора коэффициентов DCT 4×4 четырех блоков, посредством обращения к таблице VLC для DCT 4×4, и после этого вычисляются общие затраты.
Следовательно, при использовании CAVLC для оценки объема кода, требуемого в кодировании САВАС, независимое от САВАС сканирование должно быть выполнено четыре раза, что увеличивает вычислительные затраты.
На фиг.16 изображен пример потока операций общепринятого способа, выполняемого процессором 109 предварительного кодирования для DCT 8×8.
Сначала оцененный объем Rate (Расход) кода инициализируется в 0 (см. этап S301). После этого для фактического кодирования выполняется зигзагообразное сканирование (см. этап S302). Этот этап выполняется аналогично потоку по фиг.12, и справочная таблица порядка сканирования возвращает координаты в порядке, изображенном на фиг.14. Полученную информацию Run-Level отправляют в энтропийный кодер 110 (см. этап S303).
Далее, выполняется процесс оценки объема кода.
Сначала счетчик цикла i инициализируется в 0 (см. этап S304), и выполняется сканирование первого (0-ого) блока (см. этап S305). Этот этап выполняется аналогично потоку по фиг.12, и справочная таблица порядка сканирования возвращает координаты в A0-А15 по фиг.15.
На основе полученной информации Run-Level вычисляются количество ненулевых коэффициентов, количество конечной последовательности коэффициентов "1" или "-1" и положительный или отрицательный знак этой последовательности (см. этап S306), и вычисляется объем кода с использованием таблицы VLC (см. этап S307).
Вычисленный объем кода добавляется к Rate (см. этап S308), i увеличивается на 1 (см. этап S310), и второй блок подвергается операции, аналогичной вышеупомянутой (см. этапы S305-S310), куда справочная таблица порядка сканирования возвращает координаты в ВО-В15 по фиг.15.
После этого С0-С15 и D0-D15 каждый подвергается операции, аналогичной вышеупомянутой (см. этапы S305-S310), и, наконец, передается значение оцененного объема Rate кода (см. этап S311).
На фиг.17 изображен пример структуры, которая реализует вышеупомянутую операцию.
Эта структура включает в себя буфер 301 для хранения квантованных значений 8×8, счетчик 302 серии, контроллер 303 процесса предварительного кодирования, счетчик 304 сканирования 8×8, справочную таблицу 305 порядка сканирования 8×8, счетчик 306 сканирования 4×4, переключатель "А" 307, справочную таблицу "а" 308 порядка сканирования 4×4, справочную таблицу "b" 309 порядка сканирования 4×4, справочную таблицу "с" 310 порядка сканирования 4×4, справочную таблицу "d" 311 порядка сканирования 4×4, буфер 312 для хранения информации Run-Level, контроллер 313 оценки объема кода 8×8, блок 314 оценки объема кода, память 315 для хранения таблицы VLC и блок 316 вычисления оцененного объема кода.
Среди вышеупомянутых элементов структуры счетчик 302 серии, контроллер 303 процесса предварительного кодирования, счетчик 306 сканирования 4×4, буфер 312 для хранения информации Run-Level, блок 314 оценки объема кода и память 315 для хранения таблицы VLC имеют функции, идентичные функциям вышеописанных элементов структуры, имеющих те же самые названия.
Буфер 301 для хранения квантованных значений 8×8 хранит квантованные значения коэффициентов DCT 8×8. При приеме информации о координатах из справочной таблицы 305 порядка сканирования 8×8 и справочных таблиц "а" 308, "b" 309, "с" 310 и "d" 311 порядка сканирования 4×4, буфер 301 для хранения квантованных значений 8×8 отправляет квантованные значения, сохраненные с соответствующими координатами, в счетчик 302 серии.
Когда счетчик 304 сканирования 8×8 принимает сигнал начала операции из контроллера 303 процесса предварительного кодирования, счетчик 304 сканирования 8×8 последовательно отправляет числовые значения 0-63 в справочную таблицу 305 порядка сканирования 8×8.
Справочная таблица 305 порядка сканирования 8×8 отправляет координаты, соответствующие каждому числовому значению (отправленные из счетчика 304 сканирования 8×8), в буфер 301 для хранения квантованных значений 8×8.
Переключатель "А" 307 выполняет переключение между входами a-d на основе управляющего сигнала, отправленного из счетчика 306 сканирования 4×4.
Справочная таблица "а" 308 порядка сканирования 4×4 отправляет координаты, соответствующие каждому числовому значению (отправленные из счетчика 306 сканирования 4×4), в 301 буфер для хранения квантованных значений 8×8. Упомянутые координаты соответствуют А0-А15 по фиг.15.
Справочная таблица "b" 309 порядка сканирования 4×4 отправляет координаты, соответствующие каждому числовому значению (отправленные из счетчика 306 сканирования 4×4), в буфер 301 для хранения квантованных значений 8×8. Координаты соответствуют В0-В15 по фиг.15.
Справочная таблица "с" 310 порядка сканирования 4×4 отправляет координаты, соответствующие каждому числовому значению (отправленные из счетчика 306 сканирования 4×4), в буфер 301 для хранения квантованных значений 8×8. Координаты соответствуют С0-С15 по фиг.15.
Справочная таблица "d" 311 порядка сканирования 4×4 отправляет координаты, соответствующие каждому числовому значению (отправленные из счетчика 306 сканирования 4×4), в буфер 301 для хранения квантованных значений 8×8. Координаты соответствуют D0-D15 по фиг.15.
Когда контроллер 313 оценки объема кода 8×8 принимает сигнал начала оценки из контроллера 303 процесса предварительного кодирования, контроллер 313 оценки объема кода 8×8 отправляет управляющий сигнал в переключатель "А" 307 для выбора входа переключателя и после этого отправляет сигнал начала в счетчик 306 сканирования 4×4.
При приеме сигнала окончания из счетчика 306 сканирования 4×4 контроллер 313 оценки объема кода 8×8 отправляет сигнал начала оценки в блок 314 оценки объема кода и отправляет управляющий сигнал в буфер 312 для хранения информации Run-Level для подачи информации Run-Level в блок 314 оценки объема кода.
После этого контроллер 313 оценки объема кода 8×8 отправляет управляющий сигнал в переключатель "А" 307 для выбора входа b переключателя и после этого отправляет сигнал начала в счетчик 306 сканирования 4×4.
При приеме сигнала окончания из счетчика 306 сканирования 4×4 контроллер 313 оценки объема кода 8×8 отправляет сигнал начала оценки в блок 314 оценки объема кода, а также отправляет управляющий сигнал в буфер 312 для хранения информации Run-Level для подачи информации Run-Level в блок 314 оценки объема кода.
После этого вход переключателя "А" 307 переключается на с и затем на d для выполнения операций, аналогичных операциям, объясненным выше.
Когда блок 316 вычисления оцененного объема кода принимает оцененный объем кода из блока 314 оценки объема кода, блок 316 вычисления оцененного объема кода прибавляет принятое значение. Соответственно после суммирования соответствующих четырех объемов кода блок 316 вычисления оцененного объема кода передает их сумму как оцененный объем кода. Кроме того, при приеме сигнала сброса из контроллера 303 процесса предварительного кодирования блок 316 вычисления оцененного объема кода сбрасывает хранящееся значение в 0.
В соответствии с вышеупомянутой структурой может быть реализована операция, изображенная на фиг.16.
Однако сканирование должно быть выполнено пять раз, как объяснялось выше, объем обработки увеличивается, и структура является сложной.
Способы, относящиеся к настоящему изобретению, и проблемы известных способов, которые были описаны, будут снова кратко описаны в соответствии с конкретным примером оценки объема кода посредством способа кодирования Н.264.
Способы, относящиеся к настоящему изобретению
По сравнению с кодированием с переменной длиной (CAVLC) арифметическое кодирование (САВАС) имеет большую степень эффективности кодирования, но требует больших вычислительных затрат. Однако для управления объемом кода необходимо быстро обнаруживать объем формируемого кода. Следовательно, объем кода оценивается с использованием кодирования с переменной длиной (CAVLC), которое выполняет высокоскоростную операцию и требует небольших вычислительных затрат, а фактическое кодирование выполняется посредством выполнения САВАС в отдельном процессе. Соответственно в основном способе, относящемся к настоящему изобретению, фактическое кодирование выполняется с использованием высокоэффективного САВАС (который дает большую задержку), а оценка объема кода выполняется с использованием высокоскоростного CAVLC (который дает небольшую задержку).
При оценке объема кода на основе вышеупомянутого основного способа должны быть учтены следующие спецификации САВАС и CAVLC.
Спецификация CAVLC в Н.264
В Н.264, DCT 4×4 и DCT 8×8 являются выбираемыми. Однако не существует таблицы кодов переменной длины (таблицы VLC) для DCT 8×8.
Следовательно, для использования таблицы VLC для DCT 8×8 взамен 64 (8×8) элемента разделяются на четыре части (не просто делением на четыре) для формирования наборов из 16 элементов и выполнения сканирования четыре раза. Соответственно обрабатываются четыре псевдообъекта DCT 4×4.
Соответственно можно обращаться к таблице VLC для DCT 4×4 (к которой необходимо обращаться четыре раза).
Спецификация САВАС в Н.264
В САВАС в Н.264 коэффициенты DCT 8×8 перегруппировывают с использованием зигзагообразного сканирования, аналогичного сканированию, используемому в MREG-2, для выполнения кодирования.
Соответственно при сканировании САВАС 64 коэффициента располагают в одну прямую линию. В сравнение, в CAVLC, которое выполняет сканирование четыре раза, формируются четыре линии коэффициентов, в каждой из которых 16 коэффициентов располагают в одну прямую линию.
Проблема, возникающая при использовании CAVLC в оценке объема кода САВАС.
При кодировании коэффициентов DCT 8×8 в Н.264 посредством VLC не существует таблицы VLC для DCT 8×8, как описано выше, и соответственно 64 (8×8) элемента перегруппировывают в четыре одномерных массива. Каждый из четырех массивов рассматривается как результат зигзагообразного сканирования и кодируется посредством обращения к таблице VLC для DCT 4×4.
С другой стороны, при кодировании коэффициентов DCT 8×8 в Н.264 посредством САВАС 64 коэффициента перегруппировывают в одномерный вид и кодируют. При оценке соответствующего объема кода (требуемой при применении САВАС к кодированию) с использованием таблицы VLC для CAVLC организация одномерных данных, то есть вид сканирования, отличается между САВАС и CAVLC.
В САВАС 64 коэффициента просто последовательно сканируются зигзагом. В сравнение, в CAVLC выполняются четыре операции сканирования для 16 коэффициентов для формирования четырех одномерных объектов данных.
Следовательно, в известном способе, который использует CAVLC для оценки объема кода САВАС, не только сканирование для САВАС, но также и сканирование для CAVLC должно выполняться только для оценки объема кода, что увеличивает вычислительные затраты.
В свете вышеупомянутых обстоятельств целью настоящего изобретения является обеспечение нового способа кодирования для точной оценки объема формируемого кода с меньшим объемом работы, чем в вышеописанном известном способе.
Средство решения упомянутой проблемы
Для достижения вышеупомянутой цели настоящее изобретение относится к системе видеокодирования сигнала и имеет два таких способа реализации кодирования коэффициентов ортогонального преобразования большого размера, как: первый способ кодирования источника информации, в котором кодирование выполняется после переупорядочения коэффициентов в одномерный вид, и второй способ кодирования источника информации, в котором коэффициенты разделяются на множество групп с одномерной организацией, и кодирование выполняется с использованием таблицы кодов переменной длины для ортогонального преобразования меньшего размера. Настоящее изобретение имеет:
(i) устройство, которое выполняет ортогональное преобразование большего размера, переупорядочивает квантованные коэффициенты в одномерный вид в порядке, определенном в первом способе кодирования с переменной длиной, и сохраняет наборы Run-Level из количества Run (Серия) последовательных коэффициентов «0» и значимого коэффициента Level (Значение), который следует за ними,
(ii) устройство, которое вычисляет количество групп на основе пропорции площадей между размером ортогонального преобразования, имеющим таблицу кодов переменной длины, и целевым размером ортогонального преобразования,
(iii) устройство, которое группирует наборы Run-Level в группы, имеющие количество групп,
(iv) устройство, которое делит каждый Run на это количество групп и устанавливает полученное частное как Run,
(v) устройство, которое определяет длину кода каждого набора Run-Level в каждой группе посредством обращения к таблице кодов переменной длины, второго способа кодирования источника информации, и
(vi) устройство, которое вычисляет общую сумму определенных длин кода,
причем объем кода, сформированного в первом способе кодирования источника информации, оценивается равным общей сумме длин кода всех групп.
Далее следуют примеры группировки наборов Run-Level в группы:
(i) первый пример включает в себя назначение индекса каждому набору Run-Level в порядке обнаружения наборов Run-Level, деления каждого индекса на количество групп и группировку наборов Run-Level, имеющих одинаковый остаток от деления, в одну группу, и
(ii) второй пример включает в себя накопление значения, получаемого посредством прибавления 1 к каждому Run (Серия) в порядке обнаружения наборов Run-Level, деление каждого накопленного значения на количество групп и группировку наборов Run-Level, имеющих одинаковый остаток от деления, в одну группу.
Эффект от изобретения
В соответствии с настоящим изобретением при выполнении оценки объема кода с использованием таблицы кодов для ортогонального преобразования меньшего размера, чем фактически выполняемое ортогональное преобразование, оценка объема кода может выполняться с высокой точностью при уменьшении объема вычисления.
Краткое описание чертежей
Фиг.1 - схема, изображающая пример группировки наборов Run-Level в DCT 8×8 в четыре группы.
Фиг.2 - схема, изображающая еще один пример группировки наборов Run-Level в DCT 8×8 в четыре группы.
Фиг.3 - график, изображающий результаты оценки объема кода при применении настоящего изобретения к Н.264.
Фиг.4 - блок-схема процессора предварительного кодирования в варианте осуществления настоящего изобретения.
Фиг.5 - блок-схема, изображающая иллюстративный процесс группировки коэффициентов DCT 8×8 в четыре вида.
Фиг.6 - схема, изображающая пример структуры устройства в соответствии с настоящим изобретением.
Фиг.7А - логическая блок-схема основной процедуры в операции кодирования, посредством которой CAVLC может использоваться для оценки объема кода САВАС.
Фиг.7В - логическая блок-схема процесса САВАС в операции кодирования.
Фиг.8 - схема, изображающая пример устройства кодирования для реализации операции по фиг.7А и фиг.7В.
Фиг.9 - схема, изображающая порядок сканирования для каждого блока 4×4.
Фиг.10 - схема, изображающая пример зигзагообразного сканирования.
Фиг.11 - схема, изображающая пример потока операций, выполняемых процессором предварительного кодирования для блока 4×4.
Фиг.12 - схема, изображающая пример потока операций для зигзагообразного сканирования.
Фиг.13 - схема, изображающая пример структуры процессора предварительного кодирования по фиг.8.
Фиг.14 - схема, изображающая порядок сканирования САВАС.
Фиг.15 - схема, изображающая порядок сканирования CAVLC.
Фиг.16 - блок-схема процессора предварительного кодирования для DCT 8×8 в соответствии с общепринятым способом.
Фиг.17 - схема, изображающая иллюстративную структуру процессора предварительного кодирования для DCT 8×8 в соответствии с общепринятым способом.
1 буфер для хранения квантованных значений 8×8
2 контроллер процесса предварительного кодирования
3 счетчик сканирования 8×8
4 справочная таблица порядка сканирования 8×8
5 счетчик серии
6 буфер "В" д