Усовершенствованное кодирование содержимого экрана с улучшенными способами кодирования таблицы палитры и индексной карты
Иллюстрации
Показать всеИзобретение относится к усовершенствованному кодированию с улучшенным кодированием таблицы цветов (палитры) и индексной карты. Технический результат заключается в снижении сложности кодера при вычислении и доступе к памяти. Предложено устройство (100) для выполнения способа (1700) кодирования содержимого, который состоит в том, что получают (1701) цветовую индексную карту (311, 601, 1301, 1600) на основе текущей единицы кодирования (CU) (101, 213, 401, 501), кодируют (1703) цветовую индексную карту, где по меньшей мере часть цветовой индексной карты кодируется с использованием первого метода кодирования, где первый индикатор указывает значительное расстояние первого метода кодирования, и объединяют (1705) закодированную цветовую индексную карту и первый индикатор для передачи в приемник (200). 4 н. и 20 з.п. ф-лы, 18 ил., 1 табл.
Реферат
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001] Настоящее изобретение относится в целом к кодированию содержимого экрана, а более конкретно, к усовершенствованному кодированию содержимого экрана с улучшенным кодированием таблицы цветов (палитры) и индексной карты.
УРОВЕНЬ ТЕХНИКИ
[0002] Кодирование содержимого экрана создает новые проблемы для сжатия видео из-за его особых характеристик сигнала по сравнению с обычными видеосигналами. Существует несколько существующих методов для усовершенствованного кодирования содержимого экрана, например, согласование псевдострок, кодирование цветовой палитры, и внутренняя компенсация движения или внутреннее блочное копирование. Среди этих методов, согласование псевдострок показывает самый высокий выигрыш для кодирования без потерь, но со значительными накладными расходами, связанными со сложностью, и трудностями в режиме кодирования с потерей данных. Кодирование цветовой палитры разработано для содержимого экрана при допущении, что не захваченное камерой содержимое (например, сгенерированное компьютером содержимое) обычно содержит ограниченное количество отдельных цветов, а не непрерывные или близкие к непрерывным цветовые тона, найденные во многих видеопоследовательностях. Несмотря на то, что способы согласования псевдострок и кодирования цветовой палитры показали большой потенциал, внутренняя компенсация движения или внутреннее блочное копирование были приняты в рабочий проект (WD) версии 4 и эталонное программное обеспечение продолжающегося расширения диапазона Высокоэффективного Видеокодирования (HEVC) для кодирования содержимого экрана. Однако производительность кодирования внутреннего блочного копирования ограничена из-за его фиксированной блочной декомпозиции. Выполнение блочного сравнения (подобно оценке движения во внутреннем изображении) также значительно увеличивает сложность кодера как при вычислении, так и при доступе к памяти.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] В соответствии с одним вариантом осуществления, предоставлен способ для кодирования содержимого экрана. Способ состоит в том, что получают цветовую индексную карту на основе текущей единицы кодирования (CU). Способ также состоит в том, что кодируют цветовую индексную карту, где по меньшей мере часть цветовой индексной карты кодируется с использованием первого метода кодирования, где первый индикатор указывает значительное расстояние первого метода кодирования. Способ дополнительно состоит в том, что объединяют закодированную цветовую индексную карту и первый индикатор для передачи в приемник.
[0004] В соответствии с другим вариантом осуществления, предоставлен способ для декодирования содержимого экрана. Способ состоит в том, что принимают битовый видеопоток, содержащий цветовую индексную карту. Способ также состоит в том, что принимают первый индикатор. Способ дополнительно состоит в том, что декодируют по меньшей мере часть цветовой индексной карты с использованием первого метода декодирования, где первый индикатор указывает значительное расстояние первого метода декодирования. Кроме того, способ состоит в том, что восстанавливают пиксели, связанные с текущей единицей кодирования (CU), на основе цветовой индексной карты.
[0005] Другие варианты осуществления включают в себя устройства, выполненные с возможностью выполнения этих способов.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0006] Для более полного понимания настоящего изобретения и его преимуществ, далее будет приведена ссылка на последующие описания, взятые в соединении с прилагаемыми чертежами, где схожие номера обозначают схожие объекты, и на которых:
[0007] ФИГУРА 1 иллюстрирует функциональную структурную схему примерного передатчика, который выполняет процесс кодирования содержимого экрана в соответствии с этим изобретением;
[0008] ФИГУРА 2 иллюстрирует функциональную структурную схему примерного приемника, который выполняет процесс декодирования содержимого экрана в соответствии с этим изобретением;
[0009] ФИГУРА 3 иллюстрирует пример различных модулей и потока обработки с использованием таблицы палитры и индексной карты, в соответствии с этим изобретением;
[0010] ФИГУРА 4 иллюстрирует примерную единицу кодирования (CU) с цветовыми компонентами, показанными отдельно и упакованными;
[0011] ФИГУРА 5A иллюстрирует опорную таблицу палитры и текущую таблицу палитры для использования в процессе кодирования содержимого экрана;
[0012] ФИГУРА 5B иллюстрирует пример предсказания таблицы палитры с использованием соседних восстановленных блоков;
[0013] ФИГУРА 6 иллюстрирует примерную цветовую индексную карту для CU 64×64, в которой может использоваться горизонтальное или вертикальное сканирование;
[0014] ФИГУРА 7 иллюстрирует часть одномерного (1D) цветового индексного вектора после 1D поиска с использованием горизонтального сканирования;
[0015] ФИГУРА 8 иллюстрирует пример базового блока обработки пикселей, называемого модулем U_PIXEL;
[0016] ФИГУРА 9 иллюстрирует пример модуля U_ROW;
[0017] ФИГУРА 10 иллюстрирует пример модуля U_CMP;
[0018] ФИГУРА 11 иллюстрирует пример модуля U_COL;
[0019] ФИГУРА 12 иллюстрирует пример модуля U_2D_BLOCK;
[0020] ФИГУРА 13 иллюстрирует примеры горизонтального и вертикального сканирования для обработки индексной карты.
[0021] ФИГУРЫ 14A и 14B иллюстрируют примеры форматов 4:2:0 и 4:4:4 выборки цветности;
[0022] ФИГУРА 15 иллюстрирует пример процесса интерполяции из 4:4:4 в 4:2:0 и наоборот;
[0023] ФИГУРА 16 иллюстрирует пример обработки цветовой индексной карты с использованием буфера строки верхнего индекса или буфера строки левого индекса;
[0024] ФИГУРА 17 иллюстрирует способ для кодирования содержимого экрана в соответствии с этим изобретением; и
[0025] ФИГУРА 18 иллюстрирует способ для декодирования содержимого экрана в соответствии с этим изобретением.
ПОДРОБНОЕ ОПИСАНИЕ
[0026] ФИГУРЫ с 1 по 18, обсужденные ниже, и различные варианты осуществления, используемые для описания принципов настоящего изобретения в этом патентном документе, приведены лишь в качестве иллюстрации и не должны быть истолкованы никоим образом как ограничение объема изобретения. Специалисты в данной области техники поймут, что принципы изобретения могут быть реализованы в любом типе подходящим образом организованного устройства или системы.
[0027] Следующие документы и описания стандартов настоящим включены в материалы настоящего изобретения как если бы это было полностью сформулировано здесь:
[0028] T. Lin, S. Wang, P. Zhang, K. Zhou, «AHG7: Полноцветный (YUV444) словарь+гибридное расширение HEVCс двумя кодерами», Документ JCT-VC, JCTVC-K0133, Шанхай, Китай, Октябрь 2012 (далее «ССЫЛКА1»);
[0029] W. Zhu, J. Xu, W. Ding, «RCE Test 2: Многоступенчатая Карта Базового Цвета и Индекса», Документ JCT-VC, JCTVC-N0287, Вена, Австрия, Июль 2013 (далее «ССЫЛКА2»);
[0030] L. Guo, M. Karczewicz, J. Sole, «RCE3: Результаты Теста 3.1 на Режиме Палитры для Кодирования Содержимого Экрана», Документ JCT-VC, JCTVC-N0247, Вена, Австрия, Июль 2013 (далее «ССЫЛКА3»);
[0031] L. Guo, M. Karczewicz, J. Sole, «Не-RCE3: Режим Измененной Палитры для Кодирования Содержимого Экрана», Документ JCT-VC, JCTVC-N0249, Вена, Австрия, Июль 2013 (далее «ССЫЛКА4»);
[0032] D.-K. Kwon, M. Budagavi, «RCE3: Результаты теста 3.3 на Внутренней компенсации движения», Документ JCT-VC, JCTVC-N0205, Вена, Австрия, Июль 2013 (далее «ССЫЛКА5»);
[0033] C. Pang, J. Sole, L. Guo, M. Karczewicz, R. Joshi, «Не-RCE3: Внутренняя Компенсация Движения с 2-D MV», Документ JCT-VC, JCTVC-N0256, Вена, Австрия, Июль 2013 (далее «ССЫЛКА6»);
[0034] C. Pang, J. Sole, L. Guo, M. Karczewicz, R. Joshi, «Не-RCE3: Дружественная для Конвейера Внутренняя Компенсация Движения», Документ JCT-VC, JCTVC-N0254, Вена, Австрия, Июль 2013 (далее «ССЫЛКА7»);
[0035] D. Flynn, J. Soel and T. Suzuki, «Проект 4 Расширения Диапазона», JCTVC-L1005, Август 2013 (далее «ССЫЛКА 8»); и
[0036] H. Yu, K. McCann, R. Cohen, and P. Amon, «Призыв для предложения для кодирования содержимого экрана и медицинского визуального содержимого», SO/IEC JTC1/SC29/WG11 N13829, Июль 2013 (далее ʺССЫЛКА9ʺ).
[0037] Варианты осуществления этого изобретения предоставляют усовершенствованный процесс кодирования содержимого экрана с улучшенным кодированием таблицы палитры и индексной карты. Раскрытые варианты осуществления значительно превосходят текущую версию Высокоэффективного Видеокодирования (HEVC версии 2). Раскрытые варианты осуществления включают в себя несколько алгоритмов, которые специально предназначены для кодирования содержимого экрана. Эти алгоритмы включают в себя представление пикселей с использованием таблицы палитры (или, эквивалентно, цветовой таблицы), сжатия таблицы палитры, сжатия цветовой индексной карты, сравнения строк и остаточного сжатия. Варианты осуществления, раскрытые в материалах настоящей заявки, разработаны, согласованы и интегрированы в Расширение Диапазона HEVC (RExt) как будущие расширения HEVC для поддержки эффективного кодирования содержимого экрана. Однако эти варианты осуществления могли бы дополнительно или альтернативно быть реализованы с помощью существующих видеостандартов или других подходящих видеостандартов. Для простоты объяснения, HEVC RExt используется в материалах настоящей заявки в качестве примера для описания различных вариантов осуществления. Подобным образом, программное обеспечение HEVC RExt используется для реализации различных вариантов осуществления, чтобы продемонстрировать эффективность сжатия.
[0038] ФИГУРА 1 иллюстрирует функциональную структурную схему примерного передатчика, который выполняет процесс кодирования содержимого экрана в соответствии с этим изобретением. ФИГУРА 2 иллюстрирует функциональную структурную схему примерного приемника, который выполняет процесс декодирования содержимого экрана в соответствии с этим изобретением. Варианты осуществления передатчика 100 и приемника 200 приведены лишь для иллюстрации. Другие варианты осуществления передатчика 100 и приемника 200 могли бы быть использованы, не выходя из объема этого изобретения.
[0039] Передатчик 100 выполнен с возможностью выполнения процесса высокоэффективного сжатия цветовой палитры (CPC), который может быть выполнен на каждой единице кодирования (CU) или единице дерева кодирования (CTU) в битовом потоке. Как показано на ФИГУРЕ 1, передатчик 100 начинает с CU 101 в битовом потоке. CU представляет собой базовую рабочую единицу в HEVC и HEVC RExt и представляет собой квадратный блок пикселей, который включает в себя три цветовых компонента (например, RGB, YUV, XYZ, или тому подобное, как известно в данной области техники). Примерная CU 101 показана на ФИГУРЕ 3. CU 101 представляет собой CU 8 пикселей x 8 пикселей, которая включает в себя явное цветовое значение (например, 47, 48, 49 и т.д.) для каждого пикселя. В других вариантах осуществления, размер CU 101 может быть отличным от 8×8 пикселей (например, 16×16 пикселей, 32×32 пикселей и т.д.). В некоторых вариантах осуществления, передатчик 100 может начинать с CTU 101 вместо CU 101. Для простоты объяснения, передатчик 100 будет описан с CU 101. Специалисты в данной области техники поймут, что передатчик 100 может выполнять по существу такой же процесс с CTU 101.
[0040] Блок 103 создания таблицы палитры использует CU 101 для получения или генерирования таблицы палитры (иногда называемой цветовой таблицей). Примерная цветовая таблица 303 показана на ФИГУРЕ 3. Чтобы получить таблицу 303 палитры, блок 103 создания таблицы палитры упорядочивает цветовые значения в соответствии с одним или более правилами упорядочения. Таблица 303 палитры может быть упорядочена в соответствии с частотой возникновения каждого цветового значения, фактической цветовой интенсивностью каждого пикселя CU 101, или любой другой метрики(метрик) упорядочения, чтобы повысить эффективность следующих операций кодирования.
[0041] На основе полученной таблицы 303 палитры, блок 105 классификатор цветов использует CU 101 для присвоения цветов или значений пикселей CU 101 в цветовую индексную карту 311 и одну или более остаточных карт 313 предсказаний. Блок 107 кодирования таблицы принимает таблицу 303 палитры и кодирует элементы в таблице 303 палитры. Блок 109 кодирования индексной карты кодирует цветовую индексную карту 311, созданную блоком 105 классификатором цветов. Эти операции описаны более подробно ниже.
[0042] Блок 111 остаточного кодирования кодирует каждую остаточную карту 313 предсказаний, созданную блоком 105 классификатором цветов. В некоторых вариантах осуществления, блок 111 остаточного кодирования выполняет адаптивную остаточную бинаризацию с фиксированной длиной или с переменной длиной, как указано на 321 на ФИГУРЕ 3. Затем блок 113 мультиплексирования (MUX) генерирует сжатый битовый поток с использованием сравнений 319 строк/блоков и закодированных остатков 321 предсказаний. В некоторых вариантах осуществления, способ 323 контекстно-ориентированного адаптивного бинарного арифметического кодирования (CABAC) может быть использован для объединения сравнений 319 строк/блоков и закодированных остатков 321 предсказаний, как показано на ФИГУРЕ 3.
[0043] Обращаясь к ФИГУРЕ 2, приемник 200 выполнен с возможностью выполнения процесса декодирования содержимого экрана аналогично процессу кодирования содержимого экрана, выполняемому передатчиком 100, как описано выше. Приемник 200 принимает сжатый битовый видеопоток, и затем, с использованием демультиплексора 201, разбирает битовый поток в закодированную таблицу палитры, цветовую индексную карту и закодированные остатки предсказаний. Блок 203 декодирования таблицы и блок 209 создания таблицы палитры выполняют процессы, обратные блоку 107 кодирования таблицы и блоку 103 создания таблицы палитры, чтобы восстановить, для каждой CU, полную таблицу палитры. Подобным образом, блок 205 декодирования индексной карты и блок 207 остаточного декодирования выполняют процессы, обратные блоку 109 кодирования индексной карты и блоку 111 остаточного кодирования, чтобы восстановить цветовую индексную карту. Блок 211 деклассификатор цветов получает значение пикселя в каждой позиции путем объединения цветовой индексной карты и таблицы палитры, тем самым восстанавливая CTU или CU 213.
[0044] Хотя ФИГУРЫ 1 и 2 иллюстрируют примеры передатчика 100 и приемника 200 для выполнения кодирования и декодирования содержимого экрана, различные изменения могут быть сделаны на ФИГУРАХ 1 и 2. Например, различные компоненты на ФИГУРАХ 1 и 2 могли бы быть объединены, дополнительно подразделены, или опущены, и дополнительные компоненты могли бы быть добавлены в зависимости от конкретных потребностей. В качестве конкретного примера, различные компоненты могли бы быть расположены вместе в одном корпусе или на одной печатной плате, или быть выполненным посредством одного процессора или блока обработки.
[0045] На основе полученной таблицы 303 палитры каждый пиксель в оригинальной CU 101 может быть преобразован в свой цветовой индекс в таблице 303 палитры. Варианты осуществления этого изобретения предоставляют способы для эффективного сжатия таблицы 303 палитры и цветовой индексной карты 311 (описанной ниже) для каждой CU 101 в поток. На стороне приемника, сжатый битовый поток может быть разобран, чтобы восстановить, для каждой CU 101, полную таблицу 303 палитры и цветовую индексную карту 311, и затем дополнительно получить значение пикселя в каждой позиции путем объединения цветовой индексной таблицы и таблицы палитры.
[0046] ФИГУРА 4 иллюстрирует другой пример CU 401 с цветовыми компонентами, показанными отдельно и упакованными. CU 401 может представлять CU 101. Как показано на ФИГУРЕ 4, CU 401 представляет собой CU 8 пикселей x 8 пикселей. Конечно, CU 401 могла бы быть NxN пикселей, где N=8, 16, 32, 64 для совместимости с HEVC. Каждый пиксель CU 401 включает в себя три цветовых компонента, при различных коэффициентах выборки (например, 4:4:4, 4:2:2, 4:2:0). То есть, CU 401 включает в себя отдельные красные (R) цветовые компоненты 402, зеленые (G) цветовые компоненты 403, и синие (B) цветовые компоненты 404. В других вариантах осуществления, цветовые компоненты могли бы быть Y, Cb, Cr, или X, Y, Z или другой подходящей комбинацией компонентов.
[0047] Для простоты, последовательности 4:4:4 используются в изобретении. Для видео 4:2:2 и 4:2:0, передискретизация цветности могла бы быть применена для получения последовательностей 4:4:4, или каждый компонент 402-404 цветности мог бы быть обработан независимо. В случае монохромных видео 4:0:0, они могут рассматриваться как отдельная плоскость 4:4:4 без двух других плоскостей. Все способы для 4:4:4 могут быть применены непосредственно.
[0048] Цветовые компоненты 402-404 могут чередоваться друг с другом в процессе упаковки, приводя к упакованной CU 401. В одном из вариантов осуществления, флаг, называемый enable_packed_component_flag, определен для каждой CU 101, чтобы указать, обрабатывается ли CU 101 с использованием упакованного режима (тем самым приводя к CU 401) или традиционного плоского режима (например, G, B, R или Y, U, V компоненты 402-404 обрабатываются независимо.)
[0049] Как упакованный режим, так и плоский режим могут иметь свои преимущества и недостатки. Например, плоский режим поддерживает параллельную обработку цветовых компонентов для G/B/R или Y/U/V. Однако плоский режим может приводить к низкой эффективности кодирования. Упакованный режим может совместно использовать информацию заголовка (такую как таблица 303 палитры и цветовая индексная карта 311) для CU 101 среди различных цветовых компонентов. Однако, упакованный режим может предотвратить, чтобы несколько цветовых компонентов обрабатывались одновременно или параллельным образом. Один простой способ, чтобы решить, должна ли текущая CU 101 быть закодирована в упакованном режиме, состоит в том, чтобы измерить стоимость случайного искажения (R-D).
[0050] enable_packed_component_flag используется для явной передачи режима кодирования в декодер. В дополнение к определению enable_packed_component_flag на уровне CU для низкоуровневой обработки, флаг может быть повторен в заголовке фрагмента или даже на уровне последовательности (например, Набор Параметров Последовательности или Набор Параметров Изображения), чтобы разрешить обработку на уровне фрагмента или уровне последовательности, в зависимости от требований конкретного применения.
[0051] ПОЛУЧЕНИЕ ТАБЛИЦЫ ПАЛИТРЫ И ИНДЕКСНОЙ КАРТЫ
[0052] Далее описаны операции в блоке 103 создания таблицы палитры и блоке 107 кодирования таблицы на ФИГУРЕ 1. Для каждой CU 101, пробегают по местоположениям пикселей, и получают таблицу 303 палитры и цветовую индексную карту 311 для последующей обработки. Каждый отдельный цвет упорядочивается в таблице 303 палитры, в зависимости либо от его гистограммы (например, частота возникновения), либо от его интенсивности, или любого произвольного способа с целью повышения эффективности процесса кодирования, который приведен ниже. Например, если процесс кодирования использует способ дифференциальной импульсно-кодовой модуляции (DPCM) для кодирования различия между смежными пикселями, оптимальный результат кодирования может быть получен, если смежным пикселям присваиваются смежные цветовые индексы в таблице 303 палитры.
[0053] Далее будет описано новое получение таблицы палитры на основе хэша, которое может быть использовано для эффективного определения основных цветов и уменьшения ошибки. Для каждой CU 101, блок 103 создания таблицы палитры проверяет цветовое значение каждого пикселя в CU 101 и создает цветовую гистограмму с помощью трех цветовых компонентов вместе, т.е. упакованных G, B, R или упакованных Y, Cb, Cr в соответствии с частотой возникновения каждого цвета в убывающем порядке. Для представления каждого 24-битного цвета, цветовые компоненты G и B (или цветовые компоненты Y и Cb) могут быть подвержены битовому сдвигу соответственно. То есть, каждый упакованный цвет может быть представлен в соответствии со значением (G<<16)+(B<<8)+(R) или (Y<<16)+(Cb<<8)+(Cr), где <<x представляет собой операцию левого битового сдвига. Гистограмма сортируется в соответствии с частотой возникновения цвета в убывающем порядке.
[0054] Для кодирования с потерей данных, блок 103 создания таблицы палитры затем применяет основанный на хэше процесс группировки соседних цветов на упорядоченных по гистограмме цветовых данных, чтобы получить более компактное представление таблицы палитры. Для каждого цветового компонента, наименее значащие X бит (в зависимости от параметра квантования (QP)) очищаются, и соответствующее представление хэша генерируется с использованием хэш-функции (G>>X<<(16+X))|(B>>X<<(8+X))|(R>>X<<X) или (Y>>X<<(16+X))|(Cb>>X<<(8+X))|(Cr>>X<<X), где >>x представляет собой операцию правого битового сдвига, и X определяется на основе QP. Хэщ-таблица или альтернативно структура данных дерева двоичного поиска (BST) используется для быстрого поиска цветов, имеющих одинаковое хэш-значение. Для любых двух хэш-значений, их расстояние определяется как максимальная абсолютная разница соответствующих цветовых компонентов.
[0055] Во время группировки соседних цветов блок 103 создания таблицы палитры обрабатывает упакованные цвета в убывающем порядке частоты возникновения до тех пор, пока не будут обработаны N цветов. Если количество цветов в текущей CU меньше, чем N, тогда все цвета в текущей CU обрабатываются. N ограничено предопределенным максимальным количеством цветов (max_num_of_colors). В некоторых вариантах осуществления, max_num_of_colors=128, т.е. N <= 128. После основанной на хэше группировки цветов, N выбранных цветов (или все цвета в том случае, если количество цветов в текущей CU меньше, чем N), затем переупорядочиваются путем сортировки цветов в возрастающем порядке на основе значения каждого упакованного цвета. Результат представляет собой таблицу палитры, такую как таблица 303 палитры, показанная на ФИГУРЕ 3. Таблица 303 палитры имеет размер четырех цветов (то есть N=4). Во многих варианта осуществления, N > 4. Однако, для простоты объяснения, N выбрано равным 4 на ФИГУРЕ 3.
[0056] Когда количество цветов, представленных в CU 101, больше, чем количество цветов N в таблице 303 палитры, менее часто возникающие цвета расположены как остатки за пределами таблицы 303 палитры. Например, цветовые значения 49, 53, 50, и 51 являются частью таблицы 303 палитры, тогда как цветовые значения 48, 52, 47, 54, 55, и 56 являются остаточными цветами 305 за пределами таблицы 303 палитры.
[0057] Получение таблицы 303 палитры, как выполнено блоком 103 создания таблицы палитры, может быть описано следующим псевдокодом.
(Псевдокод):
[0058] В псевдокоде выше, ComputeHash( C, QP ) применяет хэш-функцию (G>>X<<(16+X))|(B>>X<<(8+X))|(R>>X<<X) или (Y>>X<<(16+X))|(Cb>>X<<(8+X))|(Cr>>X<<X), чтобы сгенерировать хэш-значение, где X зависит от QP. Dist(хэш1, хэш2) получает максимальную абсолютную разницу соответствующих цветовых компонентов в хэше1 и хэше2. Здесь, структуры данных хэш-таблицы и дерева двоичного поиска используются для быстрого поиска цветов, удовлетворяющих определенному условию на основе его хэш-значения.
[0059] Как обсуждено выше, на основе полученной таблицы 303 палитры, блок 105 классификатор цветов использует CU 101 для присвоения цветов или значений пикселей CU 101 в цветовую индексную карту 311 и одну или более остаточных карт 313 предсказаний. То есть, блок 105 классификатор цветов присваивает каждый цвет в таблицы 303 палитры цветовому индексу в таблице 303 палитры. Например, как указано на 307 на ФИГУРЕ 3, цвету 49 присваивается цветовой индекс 0 (ColorIdx=0), цвету 53 присваивается цветовой индекс 1 (ColorIdx=1), цвету 50 присваивается цветовой индекс 2 (ColorIdx=2), и цвету 51 присваивается цветовой индекс 3 (ColorIdx=3). Как только цветам в таблице 303 палитры присвоен индекс, цветовая индексная карта 311 может быть сгенерирована из CU 101 с использованием индексов каждого цвета. Обработка цветовой индексной карты 311 описана более подробно ниже. Подобным образом, каждому остаточному цвету 305 за пределами таблицы 303 палитры присваивается остаточное значение предсказания, как указано в 309. Как только остаточным цветам 305 присвоено остаточное значение предсказания, остаточная карты 313 предсказаний может быть сгенерирована из CU 101.
[0060] Для плоской CU, каждый цветовой компонент может иметь свою собственную индивидуальную таблицу палитры, такую как colorTable_Y, colorTable_U, colorTable_V или colorTable_R, colorTable_G, colorTable_B. В некоторых вариантах осуществления, может быть получена таблица палитры для основного компонента, например, Y в YUV или G в GBR, и эта таблица может совместно использоваться для всех компонентов. Как правило, путем использования совместно используемой таблицы палитры Y или G, цветовые компоненты, отличные от Y или G, имели бы некоторые несоответствия, относящиеся к исходным цветам пикселей из находящихся в совместно используемой таблице палитры. Остаточный механизм (например, способы кодирования коэффициентов HEVC) могут затем быть применены для кодирования этих несогласованных остатков. В других вариантах осуществления, для упакованной CU, единственная таблица палитры может совместно использоваться всеми компонентами.
[0061] Следующий псевдокод иллюстрирует получение таблицы палитры и индексной карты.
(Псевдокод):
[0062] ОБРАБОТКА ТАБЛИЦЫ ПАЛИТРЫ
[0063] Для каждой CU 101, передатчик 100 может получить таблицу 303 палитры из текущей CU 101 (называемой явной кареткой таблицы палитры) или передатчик 100 может получить таблицу 303 палитры из левого или верхнего соседа текущей CU 101 (называемой неявной кареткой таблицы палитры). Блок 107 кодирования таблицы принимает таблицу 303 палитры и кодирует элементы в таблице 303 палитры.
[0064] Обработка таблицы палитры включает в себя кодирование размера таблицы 303 палитры (т.е. общее количество отдельных цветов) и самого каждого цвета. Большинство битов потребляются кодированием каждого цвета в таблице 303 палитры. Следовательно, основное внимание будет уделяться кодированию цвета (т.е. кодированию каждого элемента в таблице 303 палитры).
[0065] Самый простой способ для кодирования цветов в таблице палитры представляет собой использование алгоритма в стиле импульсно-кодовой модуляции (PCM), где каждый цвет кодируется независимо. Альтернативно, ближайшее предсказание для последующего цвета может быть применено, и затем дельта предсказания может быть закодирована вместо интенсивности цвета по умолчанию, что представляет собой так называемый стиль DPCM (дифференциальный PCM). Оба способа могут быть затем энтропийно закодированы с использованием модели равной вероятности или адаптивной контекстной модели, в зависимости от компромисса между затратами сложности и эффективностью кодирования.
[0066] Варианты осуществления этого изобретения предоставляют другую усовершенствованную схему, называемую Слияние Соседней Таблицы Палитры, где color_table_merge_flag определен для указания того, использует ли текущая CU (например, CU 101) таблицу палитры, связанную с ее левой соседней CU или ее верхней соседней CU. Если нет, текущая CU переносит сигналы таблицы палитры явно. Этот процесс также может называться как совместное использование соседней таблицы палитры. С помощью этого процесса слияния, флаг color_table_merge_direction указывает направление слияния, которое будет либо от верхней CU или от левой CU. Конечно, кандидаты направления слияния могли бы быть в направлениях, отличных от верхней CU или левой CU (например, верхняя-левая, верхняя-правая, и тому подобное). Однако, верхняя CU и левая CU используются в этом изобретении для демонстрации концепции. Каждый пиксель в текущей CU сравнивается с элементами в существующей таблице палитры, связанной с левой CU или верхней CU, и ему присваивается индекс, возвращающий наименьшую разницу предсказания (т.е. пиксель вычитает ближайший цвет в таблице палитры) через псевдокод deriveIdxMap(), показанный выше. Для случая, когда разница предсказания является ненулевой, все из остатков кодируются с использованием остаточного механизма Расширения Диапазона HEVC (RExt). Решение, использовать или нет процесс слияния таблиц, может быть определено посредством стоимости R-D.
[0067] Когда цветовая таблица переносится явно в битовом потоке, она может быть закодирована последовательно для каждого цветового компонента. Внутритабличное заполнение палитры или внутритабличный цветовой DPCM применяется, как описано ниже, для кодирования каждого элемента последовательно для всех трех цветовых компонентов.
[0068] ВНУТРИТАБЛИЧНОЕ ЗАПОЛНЕНИЕ ПАЛИТРЫ
[0069] Даже когда способ совместного использования таблицы палитры не используется, все еще могут существовать цвета, которые являются общими между таблицей 303 палитры и предсказателем палитры. Следовательно, применение метода внутритабличного заполнения палитры элемент-за-элементом может дополнительно улучшить эффективность кодирования. Здесь, предсказатель палитры получен из соседнего блока, такого как левая соседняя CU или верхняя соседняя CU. ФИГУРА 5A иллюстрирует предсказатель 551 палитры и текущую таблицу 553 палитры, которая может использоваться вместе с методом межтабличного заполнения палитры в соответствии с этим изобретением. Текущая таблица 553 палитры может представлять таблицу 303 палитры ФИГУРЫ 3. Предсказатель 551 палитры может быть построен из левой соседней CU текущей CU. На стороне декодера, палитра обновляется соответствующим образом в соответствии с предсказателем 551 палитры из опорных соседей. В некоторых вариантах осуществления, предсказатель палитры может быть выведен из восстановленной соседней CU или единицы дерева кодирования (CTU) или из глобальной таблицы на уровне фрагмента или последовательности. Как известно в области техники, фрагмент включает в себя несколько CU в изображении. Изображение может включать в себя один или более фрагментов. Последовательность включает в себя несколько фрагментов.
[0070] Пусть c(i) и r(j) представляют i-й элемент в текущей таблице 553 палитры и j-й элемент в предсказателе 551 палитры. Вновь следует отметить, что каждый элемент содержит три цветовых компонента (GBR, YCbCr, или тому подобное). Для каждого цветового элемента c(i), i<=N, в текущей таблице 553, блок 107 кодирования таблицы находит идентичное соответствие r(j) из предсказателя 551 палитры. Вместо передачи сигнала c(i), j кодируется предикативно. Предсказатель определяется как наименьший индекс k, который больше, чем ранее восстановленный j, и который удовлетворяет r(k)[0] >=c(i - 1)[0]. Разница (j - k) предсказания передается в сигнале в битовом потоке. Поскольку разница (j - k) неотрицательная, не требуется знакового бита.
[0071] Следует отметить, что либо контекстная адаптивная модель, либо обходная модель может использоваться для кодирования (j-k), как известно в области техники. Как правило, контекстная адаптивная модель используется в целях высокой эффективности, тогда как обходная модель используется для требования высокой пропускной способности и низкой сложности. В некоторых вариантах осуществления этого изобретения, две контекстные адаптивные модели могут использоваться для кодирования разницы (j-k) предсказания индекса с использованием динамической усеченной унарной схемы бинаризации.
[0072] ВНУТРИТАБЛИЧНАЯ ЦВЕТОВАЯ DPCM
[0073] Если не найдено соответствие в предсказателе 551 палитры для i-го элемента в текущей таблице 553 палитры, значение i-го элемента вычитается из предыдущего элемента ((i-1)-й элемент), и абсолютная разница (|d(i)|) кодируется с помощью цветовой DPCM для каждого компонента. В целом, меньшее число битов для абсолютной предсказывающей разницы и знаковый бит будут созданы и закодированы с использованием внутритабличной цветовой DPCM. Либо контекстная адаптивная модель, либо обходная модель могут использоваться для кодирования абсолютной предсказывающей разницы и связанного знакового бита, как известно в области техники. Кроме того, знаковый бит может быть скрыт или не закодирован для некоторых случаев. Например, при условии, что текущая таблица 553 палитры уже упорядочена в возрастающем порядке, разница компонента Y (или G) не требует битового знака вовсе. Подобным образом, разница компонента Cb (или B) не нуждается в знаковом бите, если соответствующая разница Y (or G) равна нулю. Кроме того, разница компонента Cr (или R) не нуждается в знаковом бите, если как разница Y (or G), так и разница Cb (or B) равны нулю. В качестве другого примера, знаковый бит может быть скрыт, если абсолютная разница равна нулю. В качестве еще одного примера, знаковый бит может быть скрыт, если удовлетворяется следующее граничное условие: c[i-1] -|d(i)| < 0 или c[i-1]+|d(i)| > 255.
[0074] Для первого элемента c(0) текущей таблицы 553, если способ межтабличного заполнения палитры не используется, каждый компонент c(0) может быть закодирован с использованием фиксированной 8-битной обходной контекстной модели. Дополнительно или альтернативно, он может быть закодирован с использованием адаптивной контекстной модели, чтобы дополнительно повысить производительность.
[0075] Чтобы лучше проиллюстрировать способы межтабличного заполнения палитры и внутритабличной цветовой DPCM, пример, использующий данные в текущей таблице 553 палитры, будет описан ниже.
[0076] Начиная с первого элемента c(0) текущей таблицы 553 палитры, т.е. (G, B, R)=(0, 0, 192), можно увидеть, что c(0) не имеет соответствия в предсказателе 551 палитры, следовательно, c(0) кодируется независимо. Второй элемент c(1) текущей таблицы 553 палитры, т.е. ((G, B, R)=(0, 0, 240), также не имеет соответствия в предсказателе 551 палитры. При условии, что первый элемент c(0) уже был закодирован, только разница предсказания между c(1) и c(0) должна быть перенесена в битовом потоке, т.е. (0, 0, 240) -(0, 0, 192)=(0, 0, 48). Для третьего элемента c(2) текущей таблицы 553, точное соответствие определено в предсказателе 551 палитры, где j=1. Предсказывающий индекс, использующий ранее закодированный цветовой элемент, равен 0, следовательно, только (1- 0)=1 должно быть закодировано. Эти способы кодирования применяются до тех пор, пока последний элемент текущей таблицы 553 (т.е. dx=12 на ФИГУРЕ 5A) не будет закодирован. Таблица 1 предоставляет пошаговую иллюстрацию того, как применить межтабличное совместное использование и внутритабличную DPCM на текущей таблице 553, используя доступный предсказатель 551 палитры.
Таблица 1: Способ кодирования для примерной таблицы на ФИГУРЕ 5A
i (текущий табличный индекс) | Способ кодирования | j (соответствующий индекс в ссылочной таблице (предсказатель палитры)) | k (предсказанный соответствующий индекс) | Элемент кодирования |
0 | Внутритабличный | (0, 0, 192) | ||
1 | Внутритабличный | (0, 0, 48) | ||
2 | Межтабличный | 1 | 0 | 1 |
3 | Межтабличный | 2 | 2 | 0 |
4 | Межтабличный | 3 | 3 | 0 |
5 | Внутритабличный | (0, 0, 2) | ||
6 | Внутритабличный | (60, 10, -12) | ||
7 | Межтабличный | 8 | 7 | 1 |
8 | Внутритабличный | (0, 30, -30) | ||
9 | Внутритабличный | (20, -50, 0) | ||
10 | Межтабличный | 9 | 9 | 0 |
11 | Внутритабличный | (30, 0, 0) | ||
12 | Межтабличный | 15 | 11 | 4 |
[0077] Явное кодирование цветовой таблицы суммируется в следующем псевдокоде, где N и M представляют собой количество элементов в текущей и ссылочной цветовой таблице, соответственно.
(Псевдокод):
[0078] Явное декодирование цветовой таблицы суммируется в следующем псевдокоде.
(Псевдокод):
[0079] Существует несколько способов для генерирования сосе