аппаратура и способ оценки объема кода, а также носитель информации для его реализации
Классы МПК: | H04N7/30 с использованием кодирования с преобразованием H03M7/40 преобразование в коды переменной длины или из них, например код Шеннона-Фано, код Хафмана, код Морзе |
Автор(ы): | ТАНИДА Рюити (JP), СИМИЗУ Ацуси (JP) |
Патентообладатель(и): | НИППОН ТЕЛЕГРАФ ЭНД ТЕЛЕФОН КОРПОРЕЙШН (JP) |
Приоритеты: |
подача заявки:
2008-03-07 публикация патента:
10.06.2011 |
Изобретение относится к способу и устройству определения объема кода в кодировании видеосигнала, в котором видеоизображение подвергается ортогональному преобразованию и кодированию с использованием кода переменной длины. Техническим результатом является уменьшение вычислительных затрат при кодировании с использованием кода переменной длины. Указанный технический результат достигается тем, что предложен способ определения объема кода при кодировании квантованных значений коэффициентов ортогонального преобразования большего размера, чем размер ортогонального преобразования, назначенный таблице кодов переменной длины, квантованные значения преобразуют к одномерному виду для получения наборов Серия-Значение. На основе пропорции между площадью ортогонального преобразования, соответствующей размеру ортогонального преобразования, назначенному таблице кодов переменной длины, и площадью ортогонального преобразования для целевого объекта кодирования вычисляется количество групп. Длина кода каждого набора Серия-Значение в каждой группе определяется посредством обращения к таблице кодов переменной длины. Объем сформированного кода оценивается равным общей сумме длин кода всех групп. 3 н. и 2 з.п. ф-лы, 17 ил.
Формула изобретения
1. Способ определения объема кода, используемый в видеокодировании для определения объема кода, формируемого в первом способе кодирования источника информации, в котором множество размеров ортогонального преобразования является выбираемым и кодирование выполняется посредством переупорядочения квантованных коэффициентов двумерного ортогонального преобразования в одномерную форму, в котором объем кода определяется с использованием второго способа кодирования источника информации, вычислительные затраты которого ниже, чем у первого способа кодирования источника информации, и который выполняет кодирование с использованием таблицы кодов переменной длины, при этом способ определения объема кода содержит этапы, на которых
выполняют переупорядочение при кодировании квантованных величин коэффициентов ортогонального преобразования большего размера, чем размер ортогонального преобразования, назначенный таблице кодов переменной длины, посредством переупорядочения квантованных величин в одномерную форму в порядке, заданном в первом способе кодирования источника информации, причем в этой одномерной форме получают наборы Серия-Значение из количества Серия последовательных коэффициентов "0" и значимого коэффициента Значение, который следует за ними, и полученные наборы Серия-Значение сохраняют,
вычисляют количество групп на основе пропорции между площадью ортогонального преобразования, соответствующей размеру ортогонального преобразования, назначенному таблице кодов переменной длины, и площадью ортогонального преобразования для целевого объекта кодирования,
группируют наборы Серия-Значение в группы, количество которых равно упомянутому количеству групп,
делят Серию каждого набора Серия-Значение на данное количество групп и устанавливают полученное частное как Серию этого набора Серия-Значение,
определяют длину кода каждого набора Серия-Значение в каждой группе посредством обращения к таблице кодов переменной длины и
вычисляют общую сумму этих определенных длин кодов,
причем объем кода, сформированного в первом способе кодирования источника информации, определяется как равный общей сумме длин кода всех групп.
2. Способ определения объема кода по п.1, в котором на этапе группирования наборов Серия-Значение в группы назначают индекс каждому набору Серия-Значение в порядке обнаружения наборов Серия-Значение, делят каждый индекс на количество групп и группируют наборы Серия-Значение, имеющие одинаковый остаток отделения, в одну группу.
3. Способ определения объема кода по п.1, в котором на этапе группирования наборов Серия-Значение в группы накапливают величину, получаемую посредством прибавления 1 к каждой Серии в порядке обнаружения наборов Серия-Значение, делят каждую накопленную величину на количество групп и группируют наборы Серия-Значение, имеющие одинаковый остаток от деления, в одну группу.
4. Устройство определения объема кода, используемое в видеокодировании для определения объема кода, формируемого в первом способе кодирования источника информации, в котором множество размеров ортогонального преобразования является выбираемым, и кодирование выполняется посредством переупорядочения квантованных коэффициентов двумерного ортогонального преобразования в одномерную форму, в котором объем кода определяется с использованием второго способа кодирования источника информации, вычислительные затраты которого ниже, чем у первого способа кодирования источника информации, и который выполняет кодирование с использованием таблицы кодов переменной длины, при этом устройство определения объема кода содержит:
устройство, которое выполняет переупорядочение при кодировании квантованных величин коэффициентов ортогонального преобразования большего размера, чем размер ортогонального преобразования, назначенный таблице кодов переменной длины, посредством переупорядочения квантованных величин в одномерную форму в порядке, определенном в первом способе кодирования источника информации, причем в этой одномерной форме данное устройство получает наборы Серия-Значение из количества Серия последовательных коэффициентов "0" и значимого коэффициента Значение, который следует за ними, и сохраняет полученные наборы Серия-Значение,
устройство, которое вычисляет количество групп на основе пропорции между площадью ортогонального преобразования, соответствующей размеру ортогонального преобразования, назначенному таблице кодов переменной длины, и площадью ортогонального преобразования для целевого объекта кодирования,
устройство, которое группирует наборы Серия-Значение в группы, количество которых равно упомянутому количеству групп,
устройство, которое делит Серию каждого набора Серия-Значение на данное количество групп и устанавливает полученное частное как Серию этого набора Серия-Значение,
устройство, которое определяет длину кода каждого набора Серия-Значение в каждой группе посредством обращения к таблице кодов переменной длины, и
устройство, которое вычисляет общую сумму этих определенных длин кода,
причем объем кода, сформированного в первом способе кодирования источника информации, определяется как равный общей сумме длин кода всех групп.
5. Машиночитаемый носитель информации, на котором хранится программа определения объема кода, посредством которой компьютер выполняет способ определения объема кода по п.1.
Описание изобретения к патенту
Область техники, к которой относится изобретение
Настоящее изобретение относится к способу оценки объема кода и соответствующим аппаратуре, программе и носителю информации в кодировании видеосигнала, в котором видеоизображение подвергается ортогональному преобразованию и кодированию с использованием кода переменной длины.
Испрашивается приоритет по дате подачи японской патентной заявки № 2007-064283, поданной 14 марта 2007 г., содержимое которой включено в этот документ по ссылке.
Предшествующий уровень техники
В большинстве последних способов кодирования видеосигнала каждый кадр разделяется на малые области, и разностное изображение на основе предсказанного изображения подвергается ортогональному преобразованию, квантованию и затем энтропийному кодированию, посредством чего видеоданные сжимаются.
В стандарте кодирования видеосигнала Н.264 (см. непатентный документ 1) как текущем основном формате кодирования видеосигнала может выбираться не только способ контекстно-адаптивного кодирования с переменной длиной ("CAVLC") для выполнения энтропийного кодирования посредством обращения к таблице, но также и способ контекстно-адаптивного двоичного арифметического кодирования ("САВАС"), который может дополнительно улучшать эффективность кодирования.
Вышеупомянутый САВАС является способом кодирования, который может сжимать стационарный сигнал до логического ограничения и соответственно является основным способом для высокоэффективного кодирования. Однако по сравнению с CAVLC вычислительные затраты CABAC очень высокие (см. непатентный документ 2).
При кодировании видеоизображения и формировании потока, который может распространяться по сети, имеющей ограниченную полосу частот передачи, необходимо формировать постоянный объем формируемого кода в единицу времени, чтобы не превысить ограниченную полосу частот. Как правило, для управления объемом формируемого кода выполняется управление скоростью посредством изменения величины шага квантования ("Qstep").
Например, кодируется каждый целевой блок кодирования, вычисляется соответствующий объем формируемого кода, и корректируется Q step следующего блока на основе вычисленного результата, посредством чего сохраняется постоянный объем формируемого кода.
При использовании CABAC для получения объема формируемого кода требуется значительное количество времени, что увеличивает задержку кодирования. В известном предложенном способе для уменьшения задержки аппроксимируется соотношение между Qstep и объемом формируемого кода с использованием функции, чтобы оценить объем формируемого кода (см. патентный документ 1).
Однако использование приближенной функции дает вариацию в точности измерения, зависящую от каждого видеоизображения. Для выполнения оценки с улучшенной точностью может использоваться CAVLC, имеющий меньше вычислительных затрат, чем CABAC, для оценивания объема кода (то есть оценки объема кода). В таком случае используется результат, полученный посредством выполнения кодирования с переменной длиной, и соответственно может быть выполнена более высокая оценка объема кода.
На фиг.7A и фиг.7B изображена блок-схема операции кодирования, посредством которой может использоваться CAVLC для оценки объема кода CABAC. Здесь на фиг.7A изображена основная процедура, и на фиг.B изображен процесс CABAC.
Сначала будет объяснена основная процедура (этапы S101-S111) по фиг.7A.
Сначала определяются межкадровый способ предсказания и внутрикадровый способ предсказания (см. этапы S101 и S102).
После этого определяется способ предсказания посредством выполнения межкадрового/внутрикадрового определения (см. этап S103), и для определенного способа вычисляется остаток предсказания (см. этап S104) и подвергается DCT (см. этап S105).
К коэффициентам преобразования DCT применяется квантование с использованием предоставляемого Q step (см. этап 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 буфер "В" для хранения информации Run-Level
7 менеджер номера вида
8 счетчик
9 вычислитель номера набора
10 контроллер сравнения
11 блок оценки объема кода
12 оператор сдвига
13 буфер для хранения информации Run-Level
14 контроллер оценки объема кода
15 память для хранения таблицы VLC
16 блок вычисления оцененного объема кода
Предпочтительные варианты осуществления изобретения
В соответствии с настоящим изобретением 64 коэффициента САВАС могут давать результаты сканирования CAVLC. Соответственно процесс выполнения сканирования CAVLC независимо пропускается, и результаты сканирования CAVLC получаются с использованием результатов сканирования САВАС.
В иллюстративном способе вычисления количества групп в настоящем изобретении площадь ортогонального преобразования большого размера делится на площадь ортогонального преобразования небольшого размера, и полученное частное устанавливается как количество групп.
Например, если коэффициенты DCT 8×8 разделены на объекты DCT 4×4, то 64/16=4, и количество групп равно 4.
Кроме того, в иллюстративном способе деления наборов Run-Level на множество групп индексы последовательно назначаются наборам Run-Level в порядке обнаружения при сканировании наборов, и каждый индекс делится на количество групп для использования полученного остатка для группировки наборов Run-Level.
В Н.264 коэффициенты DCT 8×8 должны быть сгруппированы в четыре группы. В вышеупомянутом способе после сканирования САВАС для DCT 8×8 соответствующие наборы Run-Level группируются в четыре группы, которые включают в себя: первую группу, формируемую посредством извлечения 1-го, 5-го, , (4i+1)-го наборов Run-Level (i=0, 1, ), вторую группу, формируемую посредством извлечения 2-го, 6-го, , (4i+2)-го наборов Run-Level (i=0, 1, ), третью группу, формируемую посредством извлечения 3-го, 7-го, , (41+3)-го наборов Run-Level (i=0, 1, ), и четвертую группу, формируемую посредством извлечения 4-го, 8-го, , (4i+4)-го наборов Run-Level (i=0, 1, ).
Соответственно пример группировки наборов Run-Level в четыре группы включает в себя (i) процесс назначения номеров наборам Run-Level в порядке обнаружения результатов (т.е. наборов Run-Level) сканирования САВАС и одновременного распределения номеров группы 1, 2, 3, 4, 1, 2, 3, 4, вышеупомянутым назначенным номерам от их наименьшего до наибольшего, и (ii) процесс уменьшения длины каждого Run до его одной четверти.
В соответствии с настоящим изобретением наборы Run-Level, полученные для DCT большого размера, группируются в группы, соответствующие размеру ортогонального преобразования, для которого существует таблица кодов, и каждый Run из всех наборов Run-Level делится на количество групп, для установки полученного частного как Run. Соответственно наборы Run-Level, полученные для DCT большого размера, псевдосгруппированы в группы наборов Run-Level, соответствующие размеру ортогонального преобразования, для которого существует таблица кодов.
На фиг.1 изображен пример группировки коэффициентов DCT 8×8 в четыре группы DCT 4×4 с использованием остатка для 4.
В каждой полученной группе наборы Run-Level рассматриваются как информация Run-Level для размера DCT 4×4. Объем кода, требуемый для них, вычисляется посредством обращения к таблице CAVLC, и сумма четырех объемов выводится как оцененный объем кода.
В другом примере группировки наборов Run-Level во множество групп каждое значение, вычисленное посредством прибавления 1 к Run (Серия) каждого набора Run-Level, накапливается в порядке обнаружения сканирования, и наборы группируются на основе остатка, полученного посредством деления накопленного значения каждого набора (причем накопленное значение содержит значение, вычисленное для соответствующего набора) на количество групп.
На фиг.2 изображен пример группировки в четыре группы с использованием остатка для 4. Каждое накопленное значение получается посредством последовательного накопления значения, вычисляемого посредством прибавления 1 к каждому Run (Серии). Каждое накопленное значение делится на 4 для получения остатка. Наборы Run-Level, имеющие остаток 1, распределяются в группу 1, наборы Run-Level, имеющие остаток 2, распределяются в группу 2, наборы Run-Level, имеющие остаток 3, распределяются в группу 3, и наборы Run-Level, имеющие остаток 0, распределяются в группу 4.
Как описано выше, в настоящем изобретении результаты (т.е. наборы Run-Level) сканирования САВАС могут быть сгруппированы в четыре группы для формирования четырех псевдоодномерных объектов данных. Соответственно CAVLC можно использовать без повторного выполнения сканирования для оценки объема кода.
Следовательно, посредством настоящего изобретения можно уменьшить вычислительные затраты и оценивать объем кода с высокой точностью.
Ниже приведено объяснение конкретного варианта осуществления настоящего изобретения со ссылкой на чертежи.
В данной работе, в устройстве кодирования, использующем оценку объема кода в соответствии с настоящим изобретением, в основном объясняются отличительные структурные элементы настоящего изобретения, в то время как подробное объяснение других элементов, которые идентичны соответствующим элементам общепринятого способа и соответственно были уже объяснены, опущено.
В следующем варианте осуществления оценивается объем кода, требуемого при кодировании коэффициентов DCT 8×8 посредством САВАС, с использованием таблицы для DCT 4×4.
Количество групп устанавливается в "4", которое получается посредством деления площади DCT 8×8 на площадь DCT 4×4, и информация Run-Level группируется в четыре группы с использованием остатка для 4 по каждому индексу.
Фиг.4 является блок-схемой процессора предварительного кодирования в настоящем варианте осуществления.
Сначала оцененный объем Rate кода инициализируется в 0 (см. этап S1).
Далее, блок 8×8 подвергается зигзагообразному сканированию (см. этап S2) для формирования информации Run-Level. Этот процесс изображен на фиг.12, и справочная таблица порядка сканирования возвращает координаты в порядке, изображенном на фиг.14. Информация Run-Level блока 8×8 отправляется как информация кодирования в энтропийный кодер (см. этап S3).
Далее, полученная информация Run-Level для блока 8×8 группируется в четыре вида (вид 1 - вид 4) (см. этап S4). Пример этого процесса изображен на фиг.5.
Как изображено на фиг.5, сначала переменная m, которая обозначает номер вида, устанавливается в 1 (см. этап S21), и информация Run-Level вида 1 формируется посредством следующей операции.
После того, как переменная i инициализирована в 0 (см. этап S22), и переменная n установлена в "4·i+m", где "·" обозначает умножение (см. этап S23).
Если n меньше, чем количество N наборов информации Run-Level, полученных посредством DCT 8×8 (т.е. количество значимых коэффициентов) (см. этап S24), тогда для n-ой информации Run-Level (Run[n] и Level[n]), Run[n] сдвигается вправо на 2 бита, и результат сохраняется в Run_t[m][i], в то время как Level[n] сохраняется в Level_t[m][i]. Кроме того, i увеличивается на 1 (см. этап S25).
Вышеупомянутая операция (этапы S23-S25) выполняется неоднократно.
Когда n превышает N (см. этап S24), вид переключается на следующий вид.
После подтверждения того, что номер m вида меньше 4 (см. этап S26), m увеличивается на 1 (см. этап S27), и вышеописанная операция повторяется. Когда обработан последний вид 4, процесс группировки завершается.
Соответственно i-тый набор информации Run-Level номера m вида сохраняется в Run_t[m][i] и Level_t[m][i].
Теперь обратимся к фиг.4, переменная m снова устанавливается в 1 (см. этап S5). Для вида 1 информацию кодирования (т.е. количество ненулевых коэффициентов, количество конечной последовательности коэффициентов "1" или "-1" и ее положительный или отрицательный знак), отличную от наборов Run-Level, получают с использованием каждого набора Run_t[m][i] и Level_t[m][i] (i=0, 1, ) (см. этап S6), и объем r_tmp кода вычисляют с использованием таблицы VLC (см. этап S7).
Вычисленный объем r_tmp кода добавляется к оцененному объему Rate кода (см. этап S8). Далее, если номер m вида меньше 4 (см. этап S9), то m увеличивается на 1 (см. этап S10), и вышеописанная операция повторяется для следующего вида (см. этапы S6-S10).
Наконец, оцененный объем Rate кода отправляется в контроллер объема кода (см. этап S11).
Операция в соответствии с настоящим изобретением может быть реализована при использовании блок-схемы, как объяснялось выше.
Далее, будет представлен пример структуры для выполнения настоящей блок-схемы.
Структуру соответствующего устройства кодирования можно представить аналогично фиг.8 для общепринятого способа. Настоящий вариант осуществления применяется к процессору 109 предварительного кодирования, обозначенному полужирным блоком.
Следовательно, на фиг.6 изображен пример структуры процессора 109 предварительного кодирования. Настоящее изобретение применяется к части, окруженной полужирной пунктирной линией.
Процессор предварительного кодирования настоящего варианта осуществления имеет буфер 1 для хранения квантованных значений 8×8, контроллер 2 процесса предварительного кодирования, счетчик 3 сканирования 8×8, справочную таблицу 4 порядка сканирования 8×8, счетчик 5 серии, буфер "В" 6 для хранения информации Run-Level, менеджер (средство управления) 7 номера вида, счетчик 8, вычислитель 9 номера набора, контроллер 10 сравнения, блок 11 оценки объема кода, оператор 12 сдвига, буфер 13 для хранения информации Run-Level, контроллер 14 оценки объема кода, память 15 для хранения таблицы VLC и блок 16 вычисления оцененного объема кода.
Среди вышеупомянутых элементов структуры буфер 1 для хранения квантованных значений 8×8, контроллер 2 процесса предварительного кодирования, счетчик 3 сканирования 8×8, справочная таблица 4 порядка сканирования 8×8, счетчик 5 серии, блок 11 оценки объема кода, контроллер 14 оценки объема кода, память 15 для хранения таблицы VLC, буфер 13 для хранения информации Run-Level и блок 16 вычисления оцененного объема кода имеют функции, идентичные функциям вышеописанных элементов структуры, имеющих одинаковые названия.
Когда буфер "В" 6 для хранения информации Run-Level принимает сигнал сброса из контроллера 2 процесса предварительного кодирования, буфер "В" 6 для хранения информации Run-Level инициализирует хранящуюся информацию.
Далее, при приеме информации Run-Level из счетчика 5 серии, буфер "В" 6 для хранения информации Run-Level сохраняет информацию и отправляет количество наборов Run-Level, как информацию N набора, в контроллер 10 сравнения.
Аналогично, при приеме номера "n" набора из контроллера 10 сравнения буфер "В" 6 для хранения информации Run-Level отправляет n-ный набор информации Run-Level в оператор 12 сдвига.
Когда менеджер 7 номера вида принимает сигнал начала оценки из контроллера 2 процесса предварительного кодирования, менеджер 7 номера вида устанавливает номер "m" вида в 1 и отправляет его в счетчик 8 и вычислитель 9 номера набора.
Кроме того, при приеме управляющего сигнала из контроллера 10 сравнения менеджер 7 номера вида увеличивает номер m вида на 1 и отправляет этот увеличенный номер в счетчик 8 и вычислитель 9 номера набора.
Кроме того, при приеме управляющего сигнала после отправки "4" как номера m вида менеджер 7 номера вида отправляет номер «0» вида в счетчик 8 и вычислитель 9 номера набора для остановки соответствующей операции до тех пор, пока снова не будет принят сигнал начала оценки.
Когда счетчик 8 принимает номер вида m (т.е. 1-4), он сбрасывает "i" в 0 и отправляет i в вычислитель 9 номера набора, а также увеличивает i (от 0) на 1. При приеме 0 как номера вида счетчик 8 останавливает свой процесс.
Когда вычислитель 9 номера набора принимает номер m вида из менеджера 7 номера вида и значение i из счетчика 8, вычислитель 9 номера набора вычисляет номер n набора "n=4·i+m" и отправляет его в контроллер 10 сравнения.
Контроллер 10 сравнения сравнивает номер n набора, отправленный из вычислителя 9 номера набора, с числом N, отправленным из буфера "В" 6 для хранения информации Run-Level. Если n меньше или равно N, то контроллер 10 сравнения отправляет номер n набора в буфер "В" 6 для хранения информации Run-Level. Если n больше N, то контроллер 10 сравнения отправляет управляющий сигнал в менеджер 7 номера вида, а также отправляет сигнал начала оценки в контроллер 14 оценки объема кода.
Когда оператор 12 сдвига принимает информацию Run-Level из буфера "В" 6 для хранения информации Run-Level, оператор 12 сдвига сдвигает значение Run вправо на 2 бита и затем отправляет значения Run и Level как набор в буфер 13 для хранения информации Run-Level.
С использованием вышеупомянутой структуры может быть реализована операция, изображенная на фиг.4 и фиг.5.
Вышеописанная операция оценки объема кода может также быть реализована посредством компьютера и программного обеспечения. Такая компьютерная программа может быть обеспечена посредством сохранения ее в соответствующем машиночитаемом носителе информации или посредством сети.
В результате объем вычисления в соответствии с настоящим изобретением сокращается значительно, особенно при небольшом количестве значимых коэффициентов.
Например, в Н.264, даже когда получается только один набор информации Run-Level посредством DCT 8×8, в известном способе операция зигзагообразного сканирования (см. фиг.14) для оценки объема кода должна быть выполнена четыре раза. В сравнение, в настоящем изобретении объем кода может быть оценен только посредством сдвига одного набора информации Run-Level на 2-бита и обращения к таблице.
На фиг.3 изображены результаты оценки объема кода при применении настоящего изобретения к кодированию в Н.264.
А именно на фиг.3 изображено нанесение точек на график для всех макроблоков при выполнении DCT 8×8, где на горизонтальной оси указывается каждый оцененный объем кода в соответствии с настоящим изобретением, и на вертикальной оси указывается каждый объем кода, формируемый при использовании САВАС.
Группировка была выполнена с использованием остатка от деления на 4.
Изображенные результаты указывают, что значение, оцененное посредством настоящего изобретения, является пропорциональным фактическому объему кода, формируемого посредством САВАС, и оценка объема кода может быть точно выполнена способом в соответствии с настоящим изобретением.
Одна причина для точного выполнения оценки объема кода способом настоящего изобретения изображена ниже.
В спецификации CAVLC в Н.264 способ деления 64 элементов (8×8) на четыре группы приводит к результату, в котором низкочастотные и высокочастотные компоненты включены по мере возможности поровну в четыре полученные разделением одномерные группы данных.
Также в настоящем изобретении способ группировки результатов сканирования САВАС (т.е. наборов Run-Level) в четыре группы приводит к результату, в котором низкочастотные и высокочастотные компоненты соответствующих коэффициентов включены по мере возможности поровну в эти четыре группы.
Следовательно, как представлено в результатах оценки объема кода на фиг.3, могут быть получены высокоточные результаты оценки объема кода посредством CAVLC.
Промышленная применимость
В соответствии с настоящим изобретением при выполнении оценки объема кода с использованием таблицы кодов для ортогонального преобразования меньшего размера, чем фактически выполняемое ортогональное преобразование, оценка объема кода может выполняться с высокой точностью при уменьшении объема вычисления.
Класс H04N7/30 с использованием кодирования с преобразованием
Класс H03M7/40 преобразование в коды переменной длины или из них, например код Шеннона-Фано, код Хафмана, код Морзе