СЖАТИЕ ТЕКСТУРЫ НА ОСНОВАНИИ ДВУХ ОТТЕНКОВ С МОДИФИЦИРОВАННОЙ ЯРКОСТЬЮ
COMPRESSION OF TEXTURE BASED ON TWO SHADES WITH MODIFIED BRIGHTNESS

Область техники
Настоящее изобретение в целом относится к обработке изображения, и в частности, к способам и системам для кодирования и декодирования изображений.
Уровень техники
Воспроизведение (визуализация) трехмерной графики в реальном масштабе времени имеет множество привлекательных применений на подвижных терминалах, включая игры, человекомашинные интерфейсы, обмен сообщениями и торговлю через сеть мобильной связи. Так как трехмерное воспроизведение является в вычислительном отношении дорогой задачей, назначенное оборудование должно быть часто сформировано так, чтобы достичь значительной производительности. Инновационные пути понижения сложности и использования пропускной способности этой архитектуры аппаратного обеспечения имеют, таким образом, большую важность.
Основным узким местом, особенно для портативных телефонов, является пропускная способность памяти. Обычным способом для снижения использования пропускной способности памяти является сжатие текстуры. Текстурирование относится к процессу "склеивания" изображений (здесь названных как текстуры) на воспроизводимых треугольниках. Если текстуры сжаты в памяти и затем во время доступа к ним их декомпрессируют, можно избежать значительных затрат пропускной способности.
Существуют несколько схем сжатия текстуры, доступных сегодня, и наиболее практические защищены патентами.
Схема S3TC (также называемая DXTC) является наиболее популярной [1]. Она использует 64 бита на 4×4 пикселей, и коэффициент составляет 4 бита на пиксель (bpp). Во время декомпрессии используются два основных цвета (сохраненных в 16 битах), и между ними (в пространстве красный, зеленый, синий, - RGB) еще два цвета интерполируют. Это дает цветовую палитру из четырех цветов. Каждый пиксель в блоке 4×4 затем хранит 2-битный индекс в локальной цветовой палитре. Во время интерполяции этих еще двух цветов выполняется умножение на 1/3 и 2/3, что не является идеальным при аппаратной реализации. Кроме того, сжатие, использующее S3TC, является относительно требующим затрат времени.
Недавно, Strom и Akenine-Moller [2] представили схему сжатия текстуры, названную PACKMAN. Она кодирует блок из 2×4 (текселей) элементов текстуры в 32 бита. Только один цвет возможен для блока, но в каждом пикселе этот цвет может быть модифицирован в значение интенсивности. Главная цель PACKMAN состояла в том, чтобы учесть минимальную сложность декомпрессии, и эта цель была достигнута. Однако качество было приблизительно на 2,5 дБ хуже, чем в S3TC в терминах отношения пикового сигнала к шуму (PSNR). Главная проблема в смысле качества был тот факт, что цветность так тяжело квантовалась. Это вводило блочные артефакты.
Чтобы смягчать это, Strom и Akenine-Moller ввели улучшенную версию PACKMAN, названную iPACKMAN или Сжатие Текстуры от Ericsson (ETC) [3, 4]. Основная уловка заключалась в том, чтобы закодировать два 2×4 блока вместе, что разрешено для дифференциального (разностного) кодирования цветов. Это сделало возможным иметь более точное квантование цветов, что привело к увеличению качества на 3 дБ. Это увеличение качества было достигнуто ценой некоторой сложности аппаратного обеспечения, хотя iPACKMAN/ETC является, наиболее вероятно, все еще более низкой в терминах сложности, чем S3TC.
Даже при том, что iPACKMAN/ETC обеспечивает высокое качество в терминах PSNR, все еще желательно обеспечить обработку изображений, которая может или использоваться единственное или использоваться как дополнение для улучшения схемы iPACKMAN/ETC. Эта обработка изображений должна, в частности, быть приспособленной к управлению теми изображениями, для которых iPACKMAN/ETC производит артефакты, которые являются ясно видимыми для зрителя.
Сущность изобретения
Настоящее изобретение преодолевает эти и другие недостатки известных устройств.
Общей задачей настоящего изобретения является обеспечение способов и системы кодирования изображения и декодирования изображения.
Другой задачей изобретения является обеспечение таких способов и системы, которые применимы для обработки блоков изображения, содержащих два различных оттенка.
Эти и другие задачи решаются в соответствии с изобретением, которое определено прилагаемой формулой изобретения.
Вкратце, настоящее изобретение использует обработку изображения в форме кодирования (сжатия) изображения и декодирования (декомпрессии) закодированного (сжатого) изображения.
m
n
m
n
P
Согласно изобретению изображение, которое должно быть закодировано, подвергается декомпозиции на множество блоков изображения, содержащих множество элементов изображения (пиксели, элементы текстуры - тексели, или элементы объемного изображения - воксели). Блок изображения предпочтительно содержит шестнадцать элементов изображения и имеет размер 2×2 элементов изображения, где m=4-n и n=0, 1, 2, 3, 4, или 2×2×2 элементов изображения, где m, n, p=0, 1, 2, 3, 4 при условии, что все m, n, p не равны нулю. Каждый элемент изображения в блоке характеризуется цветом, например, 24-битным RGB (красный, зеленый, синий) цветом. Блоки изображения затем кодируют.
В этом блочном кодировании с потерями первое кодовое слово цвета определяется как представление первого основного цвета. Второе кодовое слово цвета также определяется как представление второго основного цвета. Первый и второй основные цвета расположены на первой линии в цветовом пространстве, имеющем первое направление.
Кодовое слово модификатора цвета обеспечивается как представление по меньшей мере одного модификатора цвета, применимого для модификации первого основного цвета вдоль второй линии, имеющей второе направление в цветовом пространстве, чтобы получить множество представлений цвета по этой второй линии. Второе направление отличается от первого направления.
Индекс цвета выбран для предпочтительно каждого элемента изображения в блоке изображения. Этот индекс цвета связан с представлением цвета, выбранным из i) множества представлений цвета вдоль второй линии и ii) по меньшей мере одного представления цвета на основании второго основного цвета.
Это сжатие изображения является особенно подходящим для обработки блока изображения, имеющего два отличных оттенка или сигналов цветности и где первоначальные цвета элементов изображения распределены вокруг этих двух значений цветности.
Во время декодирования закодированный(ые) блок(и) изображения, который должен быть декодирован, идентифицируют и выбирают из, например, ячейки памяти. Как только корректный закодированный блок изображения идентифицирован, первый и второй основные цвета определяют на основании двух кодовых слова цвета. Кодовое слово модификатора цвета используется для обеспечения по меньшей мере одного модификатора цвета, который используется для модификации первого основного цвета вдоль второй линии, чтобы сформировать множество представлений цвета вдоль этой второй линии. Последовательность индексов цвета может быть затем использована для выбора, для каждого элемента изображения, который нужно декодировать, представления цвета из i) множества представлений цвета вдоль второй линии и ii) по меньшей мере одного представления цвета на основании второго основного цвета.
Настоящее изобретение относится к способам и системе для кодирования/сжатия и декодирования/декомпрессии изображений и блоков изображений, терминалу пользователя, содержащему такую систему, и сигнальному представлению блока изображения, как определяется независимыми пунктами формулы изобретения.
Краткое описание чертежей
Изобретение вместе с дополнительными задачами и его преимуществами может лучше всего быть понято со ссылками на нижеследующее описание, взятое вместе с сопроводительными чертежами, на которых:
Фиг.1 иллюстрирует блок-схему, иллюстрирующую способ кодирования изображения и способ сжатия блока изображения согласно настоящему изобретению;
Фиг.2 иллюстрирует вариант осуществления блока изображения согласно настоящему изобретению;
фиг.3 иллюстрирует вариант осуществления закодированного представления блока изображения согласно настоящему изобретению;
Фиг.4A является диаграммой, иллюстрирующей распределение цветов элементов изображения блока изображения, который может быть выгодно сжат согласно настоящему изобретению;
Фиг.4B является диаграммой, иллюстрирующей представления цвета, сгенерированные согласно настоящему изобретению и подходящие для представления цветов элементов изображения, проиллюстрированных на фиг.4A;
Фиг.5A является диаграммой, иллюстрирующей распределение цветов элементов изображения другого блока изображения, который может быть выгодно сжат согласно настоящему изобретению;
Фиг.5B является диаграммой, иллюстрирующей представления цвета, сгенерированные согласно настоящему изобретению и подходящие для представления цветов элементов изображения, проиллюстрированных на фиг.5A;
Фиг.6 иллюстрирует блок-схему, иллюстрирующую вариант осуществления этапа обеспечения согласно фиг.1 более подробно;
Фиг.7 иллюстрирует блок-схему, иллюстрирующую вариант осуществления этапов обеспечения и выбора согласно фиг.1 более подробно для многорежимного аспекта изобретения;
Фиг.8 иллюстрирует другой вариант осуществления закодированного представления блока изображения согласно настоящему изобретению;
Фиг.9 является диаграммой, иллюстрирующей представления цвета, которые могут быть получены согласно варианту осуществления изобретения;
фиг.10 является диаграммой, иллюстрирующей представления цвета, которые могут быть получены согласно другому варианту осуществления изобретения;
Фиг.11 является диаграммой, иллюстрирующей представления цвета, которые могут быть получены согласно еще одному варианту осуществления изобретения;
Фиг.12 является диаграммой, иллюстрирующей представления цвета, которые могут быть получены согласно другому варианту осуществления изобретения;
Фиг.13 иллюстрирует блок-схему, иллюстрирующую вариант осуществления этапов обеспечения и выбора согласно фиг.1 более подробно для другого многорежимного аспекта изобретения;
Фиг.14A - 14D иллюстрируют варианты осуществления закодированного представления блока изображения согласно многорежимному аспекту настоящего изобретения;
Фиг.15 схематично иллюстрирует распределение частых цветов, пригодных в радиусном сжатии для определения сжатого представления блока изображения;
Фиг.16 иллюстрирует блок-схему, иллюстрирующую способ декодирования изображения и способ декомпрессии блока согласно настоящему изобретению;
Фиг.17 иллюстрирует блок-схему, иллюстрирующую вариант осуществления этапа формирования согласно фиг.16 более подробно;
Фиг.18 иллюстрирует блок-схему, иллюстрирующую вариант осуществления этапа формирования согласно фиг.16 более подробно согласно многорежимному аспекту настоящего изобретения;
Фиг.19 иллюстрирует блок-схему, иллюстрирующую вариант осуществления этапа формирования согласно фиг.16 более подробно согласно другому многорежимному аспекту настоящего изобретения;
фиг.20 схематично иллюстрирует пример терминала пользователя с кодером и декодером изображения согласно настоящему изобретению;
Фиг.21 иллюстрирует блок-схему, иллюстрирующую вариант осуществления кодера изображения согласно настоящему изобретению;
Фиг.22 иллюстрирует блок-схему, иллюстрирующую вариант осуществления кодера блоков согласно настоящему изобретению;
Фиг.23 иллюстрирует блок-схему, иллюстрирующую другой вариант осуществления кодера блоков согласно настоящему изобретению;
Фиг.24 иллюстрирует блок-схему, иллюстрирующую вариант осуществления декодера изображения согласно настоящему изобретению;
Фиг.25 иллюстрирует блок-схему, иллюстрирующую вариант осуществления декодера блоков согласно настоящему изобретению;
Фиг.26 является блок-схемой аппаратного обеспечения, схематично иллюстрирующей вариант осуществления декодера блоков согласно настоящему изобретению; и
Фиг.27 является сравнением изображений, сжатых согласно настоящему изобретению, с соответствующими изображениями, сжатыми согласно схемам S3TC и iPACKMAN предшествующего уровня техники.
Подробное описание
На всех чертежах одинаковые ссылочные позиции используются для соответствующих или подобных элементов.
Настоящее изобретение относится к обработке изображения и графики, и в частности, к кодированию или сжатию изображений и блоков изображений и декодированию или декомпрессированию закодированных (сжатых) изображений и блоков изображений.
Вообще, согласно изобретению, во время кодирования изображения изображение подвергается декомпозиции или разделяется на множество блоков изображения. Каждый такой блок изображения после этого содержит множество элементов изображения, имеющих, помимо прочего, некоторый цвет. Блоки изображения кодируют или сжимают, чтобы сформировать закодированное/сжатое представление изображения.
Когда закодированное изображение или графический примитив впоследствии должны быть воспроизведены (визуализированы), например, отображены на экране, релевантные элементы изображения закодированных блоков изображения идентифицируются и декодируются. Эти декодированные элементы изображения затем используются, чтобы сформировать декодированное представление первоначального изображения или графического примитива.
Настоящее изобретение хорошо адаптировано для использования с трехмерной (3D) графикой, такой как игры, трехмерные карты и сцены, трехмерные сообщения, например, анимированные сообщения, "хранители" экрана, человекомашинные интерфейсы (MMI) и т.д., но не ограничиваются ими. Таким образом, изобретение может также использоваться для кодирования других типов изображений или графики, например одномерных (1D), двумерных (2D) или 3D изображений.
В обработке трехмерной (3D) графики обычно создают несколько треугольников и определяют соответствующие координаты углов экранного изображения этих треугольников. На каждый треугольник отображается ("приклеивается") изображение (или часть изображения) или так называемая текстура. Управление текстурами, тем не менее, является дорогостоящим для графической системы как в терминах используемой памяти для хранения текстур, так и в терминах пропускной способности памяти во время обращений к памяти, когда текстуры выбирают из памяти. Это является проблемой особенно для тонких клиентов, таких как мобильные устройства и телефоны, с ограниченной емкостью памяти и пропускной способностью. Как следствие, часто используется схема кодирования текстуры или изображения. В такой схеме текстура обычно подвергается декомпозиции или разделяется на множество блоков изображения, содержащих множество текселей (элементов текстуры). Блоки изображения затем кодируют и сохраняют в памяти. Следует заметить, что размер закодированного (версия) блока изображения меньше, чем соответствующий размер не кодированной версии блока изображения.
В настоящем изобретении выражение "элемент изображения" относится к элементу в блоке изображения или закодированном представлении блока изображения. Этот блок изображения, в свою очередь, соответствует части изображения или текстуре. Таким образом, согласно изобретению элемент изображения может быть текселем (элементом текстуры) (1D, 2D, 3D)-текстуры, пикселем (1D или 2D)-изображения или вокселем (элементом объема) 3D-изображения. Обычно элемент изображения характеризуется некоторыми свойствами элемента изображения, таким как значение цвета. Кроме того, ниже термин "изображение" используется для обозначения любого из 1D, 2D или 3D изображения или текстуры, которые могут быть закодированы и декодированы посредством настоящего изобретения, включая в себя, но не ограничиваясь, фотографии, текстуры игрового типа, текст, чертежи, изображения и текстуры расширенного динамического диапазона и т.д.
Настоящее изобретение обеспечивает обработку изображения, которое является в частности, подходящим для сжатия и декомпрессии изображений и блоков изображения с двумя различными значениями цветности или оттенками в расчете на (приходящиеся на) блок изображения. В предпочтительной реализации обработка изображения согласно настоящему изобретению полезна в качестве вспомогательного режима к схеме обработки изображений, содержащей один заданный по умолчанию режим и по меньшей мере один вспомогательный режим. В таком случае обработка изображения согласно настоящему изобретению может использоваться для обработки блоков изображения, имеющих два отличных оттенка, в то время как заданный по умолчанию режим или другой вспомогательный режим используются для блоков изображения, имеющих другие распределения цвета и шаблоны.
Сжатие
m
n
m
n
m
n
P
Фиг.1 иллюстрирует способ (с потерями) кодирования изображения согласно настоящему изобретению. На первом этапе S1 изображение подвергается декомпозиции или разделению на множество блоков изображения. Каждый такой блок изображения содержит множество, то есть по меньшей мере два, элементов изображения. В предпочтительном варианте осуществления изобретения блок изображения содержит шестнадцать элементов изображения (пикселей, текселей или вокселей) и имеет размер 2×2 элементов изображения, где m=4-n и n=0, 1, 2, 3, 4. Более предпочтительно, m и n оба равны 2. Может быть также возможно использовать блок изображения размера 2×2 или 2×2×2 элементов изображения, где m, n и p равны нулю или являются положительными целыми числами с условием, что не все m, n и p могут одновременно быть равны нулю. Фиг.2 схематично иллюстрирует пример блока изображения с шестнадцатью элементами 610 изображения согласно настоящему изобретению. В альтернативном варианте осуществления настоящего изобретения изображение подвергается декомпозиции на множество субблоков изображения, предпочтительно имеющих размер 2×4 или 4×2 элементов изображения. В этом случае два таких субблока могут быть обработаны вместе во время сжатия, чтобы сформировать блок 4×4, как иллюстрируется на фиг.2. Возвращаясь к фиг.1, целый блок изображения предпочтительно разделяется на (не накладывающиеся) блоки изображения на этапе S1. Однако в некоторых приложениях только часть изображения кодируется и, таким образом, только эта часть разделяется на блоки изображения.
Следующие этапы S2 и S4 выполняют кодирование или сжатие блоков изображения. Сначала, на этапе S2 определяют кодовое слово первого и второго цвета. Кодовое слово первого цвета является представлением первого основного цвета, и второе кодовое слово цвета аналогично является представлением второго основного цвета. Эти два основных цвета расположены на первой линии в цветовом пространстве, где первая линия имеет первое направление.
В предпочтительном варианте осуществления цветами элементов изображения в блоке, который должен быть сжат, являются цвета RGB (Красный, Зеленый, Синий). В таком случае эти два основных цвета являются предпочтительно также двумя RGB цветами и поэтому два кодовых слова цвета, определенных на этапе S2, представляют две цветовые точки в цветовом пространстве RGB. Однако настоящее изобретение может также использоваться для любого другого частного цветового пространства, обычно используемого в обработке и управлении изображениями и графики, включая в себя пространство YUV или пространство YCrCb. Кодовые слова цвета предпочтительно находятся в одинаковом цветовом формате (пространстве), что и изображение. Однако в некоторых случаях может быть полезно преобразовать изображение к отличному цветовому формату, то есть имеющему кодовые слова цвета в первом цветовом пространстве и первоначальное изображение во втором отличном цветовом пространстве. В предпочтительной реализации настоящего изобретения первоначальные цвета элементов изображения в блоке состоят из трех компонентов цвета, таких как красный, зеленый и синий. В другой предпочтительной реализации эти первоначальные цвета находятся в формате RGB888, подразумевая, что 8 битов используются на (каждый) компонент цвета и что такой компонент цвета может иметь значение в интервале от 0 до 255. Соответственно, первый и второй основные цвета тогда находятся предпочтительно в формате RGB888. В альтернативном варианте осуществления первоначальные цветовые компоненты представлены как допуски или половина допусков.
Первое и второе кодовые слова цвета обычно содержат множество цветовых компонентов, предпочтительно тех же самых цветовых компонентов, что и первоначальные цвета элементов изображения, такие как RGB. Однако по сравнению с первоначальными цветами кодовые слова цвета предпочтительно находятся в квантованной форме, такой как RGBXYZ, где, по меньшей мере одно из X, Y, Z меньше чем 8. Например, два кодовых слова цвета могут быть в формате RGB555, RGB554 или RGB444. Это означает, что первое и второе кодовые слова цвета могут быть тогда расценены как квантованные представления первого и второго основных цветов, соответственно. Во время декомпрессии значения основного цвета в формате RGB888 могут быть получены посредством удлинения или расширения кодовых слов цвета, как описано ниже.
На следующем этапе S3 обеспечивается кодовое слово модификатора цвета. Это кодовое слово модификатора является представлением по меньшей мере одного модификатора цвета, который является применимым во время декомпрессии блока изображения для модификации первого основного цвета, представленного первым кодовым словом цвета вдоль второй линии в цветовом пространстве. Эта вторая линия имеет второе направление, и второе направление отличается от первого направления. Другими словами, первая и вторая линии являются двумя отдельными линиями в цветовом пространстве и являются, кроме того, двумя непараллельными линиями в цветовом пространстве. Это означает, что, если две линии пересекаются, это имеет место при минимальном угле α, где 0°<α<90°.
Модифицируя первый основной цвет вдоль второй линии, используя по меньшей мере один модификатор цвета, представленный кодовым словом модификатора, обеспеченным на этапе S3, множество представлений цвета или цветов палитры получают вдоль второй линии. В соответствии с описанным выше, если первоначальные цвета элементов изображения в блоке и предпочтительно первый и второй основной цвет являются RGB цветами, получаемые множество представлений цвета предпочтительно являются также RGB цветами.
На следующем этапе S4 выбирают индекс цвета для текущего элемента изображения в блоке изображения. Этот индекс цвета связан с представлением цвета, выбранным из набора представлений цвета, содержащего i) множество представлений цвета, получаемых посредством модификации первого основного цвета по меньшей мере одним модификатором цвета вдоль второй линии, и ii) по меньшей мере одно представление цвета, которое является основанным на втором основном цвете. На этом этапе S4, таким образом, выбирают представление цвета для элемента изображения в блоке и используют в качестве представления "истинного" первоначального цвета этого элемента изображения. Согласно настоящему изобретению представление цвета для использования для элемента изображения может быть, таким образом, выбрано из представлений цвета, получаемых из первого основного цвета (и найденных на второй линии), и одного или более представлений цвета на основании второго основного цвета. Это означает, что доступные представления цвета для выбора могут быть расценены как разделенные на два набора. Первый набор содержит представления цвета, получаемые из первого основного цвета и присутствующие на второй линии. Второй набор вместо этого содержит представления цвета, получаемые из второго основного цвета. Следует заметить, что первый набор может фактически включать в себя первый основной цвет в качестве доступного представления цвета и/или второй набор может включать в себя второй основной цвет в качестве доступного представления цвета.
Этап S4 предпочтительно повторяют для всех элементов изображения в блоке изображения (схематично проиллюстрировано линией L1). Результатом кодирования этапов S2 -S4 является закодированный блок изображения или, более точно, закодированное (сжатое) представление блока изображения. Такое закодированное представление 700 блока иллюстрируется на фиг.3. Это представление 700 (закодированный блок изображения) содержит первое кодовое слово 710 цвета, второе кодовое слово 720 цвета, кодовое слово 730 модификатора цвета и последовательность или битовая карта 730 индексов цвета (предпочтительно один индекс цвета для каждого элемента изображения в блоке). Следует заметить, что взаимный порядок первого кодового слова 710 цвета, второго кодового слова 720, кодового слова модификатора цвета и последовательности 740 индексов цвета закодированного блока изображения может отличаться от той, что проиллюстрирована на этом чертеже.
Со ссылками на фиг.1, этапы S2-S4 предпочтительно повторяют для всех блоков изображения, обеспеченных во время декомпозиции на этапе S1 (схематично иллюстрируется линией L2). Результатом тогда является последовательность или файл закодированных блоков изображения. Результирующие закодированные блоки изображения (закодированные представления блоков изображения) могут быть упорядочены в файле слева направо и сверху вниз в том же самом порядке, в котором в отношении них осуществлялась декомпозиция блока на этапе S1. Способ затем завершается.
Закодированное изображение затем может быть подано в память для сохранения там до последующего воспроизведения, например отображения, изображения. Кроме того, закодированное изображение можно выдавать в качестве сигналов закодированных представлений блоков на передатчик для (беспроводной или проводной) передачи к другому блоку.
Фиг.4A является диаграммой, иллюстрирующей часть RGB пространства, представленного RB плоскостью пространства RGB, чтобы упростить чертеж. На этой диаграмме шестнадцать цветовых точек были отмечены как заполненные серым или черным кружки. Эти цветовые точки представляют первоначальные цвета блока изображения, который предпочтительно сжимается согласно настоящему изобретению. Как было отмечено выше, настоящее изобретение особенно адаптировано для обработки (сжатия и декомпрессии) блоков изображения, где первоначальные цвета включенных элементов изображения в общем случае имеют два отличных оттенка или значения цветности. Это случается, например, если первоначальный цвет может быть сгруппирован в две цветовые группы 2, 4 как иллюстрируется на фиг.4A. Цвета двух цветовых точек в пределах такой цветовой группы 2, 4 находятся относительно близко в цветовом пространстве, в то время как цвета двух цветовых точек, принадлежащих к отличным группам 2, 4, являются намного более отдаленными.
Фиг.4B является соответствующей диаграммой той же самой части RGB пространства, что и на фиг.4A, и иллюстрирует, как настоящее изобретение может использоваться для представления шестнадцати первоначальных цветов из двух цветовых групп согласно фиг.4A. Согласно настоящему изобретению первое кодовое слово цвета определено как представление первого основного цвета 10, используемое для представления первой цветовой группы 2. Соответственно, второе кодовое слово цвета определено как представление второго основного цвета 20, используемое для представления второй цветовой группы 4. Из этого чертежа очевидно, что первый 10 и второй 20 основные цвета присутствуют на первой линии 40, имеющей первое направление 45 в цветовом пространстве. На фиг.4B это направление 45 было неограничивающим образом проиллюстрировано вектором 45, направленным от второго основного цвета 20 и к первому основному цвету 10. Это однако должно быть замечено как просто иллюстративный пример и направление 45 может быть фактически противоположным тому, что иллюстрировано на этом чертеже, то есть вектором, указывающим от первого основного цвета 10 и ко второму основному цвету 20.
Кодовое слово модификатора цвета является в этом варианте осуществления настоящего изобретения представлением i) по меньшей мере одного модификатора цвета, применимого для модификации первого основного цвета 10 вдоль второй линии 12, имеющей второе направление 15 в цветовом пространстве, и ii) по меньшей мере одного модификатора цвета, применимого для модификации второго основного цвета 20 вдоль третьей линии 22, имеющей третье направление 25 в цветовом пространстве.
Модификация первого основного цвета 10 вдоль второй линии 12 приводит к множеству, двум на этом чертеже, представлениям 30, 32 цвета вдоль второй линии 12. Соответственно, модификация второго основного цвета 20 вдоль третьей линии 22 приводит к множеству, двум на этом чертеже, представлениям 31, 33 цвета вдоль третьей линии 22. В предпочтительном варианте осуществления вторая линия 12 (третья линия 22) пересекает первую линию 40 в точке, где первый основной цвет 10 (второй основной цвет 20) расположен на первой линии 40. Это в свою очередь означает, что первый основной цвет 10 предпочтительно расположен на второй линии 12 в дополнение к первой линии 40, и что второй основной цвет 20 расположен, в этом варианте осуществления как на первой 40, так и третьей 22 линиях. Как также очевидно из этого чертежа, третья линия 22 отличается от второй линии 12, но может, возможно, иметь то же самое направление 25 в цветовом пространстве, как и первая линия 12. Таким образом, третья 22 и вторая 12 линии могут быть параллельны.
Два представления 30, 32 цвета на второй линии 12 предпочтительно расположены с обеих сторон первого основного цвета 10 на этой линии, и эти представления 31, 33 на третьей линии 22, соответственно, предпочтительно расположены с обеих сторон второго основного цвета 20 на третьей линии 22.
В этом иллюстративном примере четыре представления 30, 31, 32, 33 цвета таким образом доступны для представления шестнадцати первоначальных цветов элементов изображения. В типовом реальном случае элементам изображения, имеющим цвета, присутствующие в первой группе 2 на фиг.4A, обычно назначается индекс цвета, связанный с любым из представлений 30, 32 цвета, существующих на второй линии 12 и полученных из первого основного цвета 10. Соответственно, элементам изображения в блоке, имеющем цвета во второй группе 4 на фиг.4A, будет обычно назначаться индекс цвета, связанный с представлением 31 или 33 цвета на третьей линии 22 и получаемый из второго основного цвета 20. Таким образом, два представления 30, 32 цвета являются хорошими приближениями цветовых точек в первой цветовой группе 2, но не цветовыми точками, присутствующими во второй цветовой группе 4. Однако, для последнего, два представления 31, 33 цвета являются хорошими приближениями.
Это означает, что блок изображения, имеющей два отличных оттенка, как иллюстрируется на фиг.4A, может быть выгодно обработан согласно настоящему изобретению. Как видно из фиг.4B, линии 12, 22 между представлениями 30, 31, 32, 33 цвета и линией 40 между двумя основными цветами 10, 20 все вместе формируют H. Как следствие, этот вариант осуществления настоящего изобретения обозначен как шаблон H или режим H.
Фиг.5A представляет соответствующую диаграмму части RB-плоскости пространства RGB. По сравнению с фиг.4A первая цветовая группа 6 содержит большее количество цветовых точек, и эти цветовые точки распределены в удлиненном эллиптическом наборе 6. Однако цветовые точки второй цветовой группы 8 распределены вокруг и близко к цветовой точке. В этом случае модификация первого основного цвета, описанная выше, для получения двух представлений цвета, может быть обычно разумной аппроксимацией цветов первой цветовой группы 6. Однако применение такой процедуры также для второго основного цвета, чтобы получить два представления цвета, может быть обычно расточительным, так как цвета второй цветовой группы 8 могут быть хорошо представлены только одиночным представлением цвета.
Настоящее изобретение может, однако, также использоваться для управления блоком изображения, имеющем распределения цветов, как иллюстрировано на фиг.5A так как этот блок также имеет два отличных цветовых оттенка.
Результаты такой аппроксимации цветов и представление согласно этому варианту осуществления изобретения представлены на фиг.5B. Подобно вышеупомянутому, первое кодовое слово цвета определено как представление первого основного цвета 10, причем этот основной цвет 10 обычно найден в или близко к первой цветовой группе 6 в цветовом пространстве. Соответственно, второе кодовое слово цвета определяется как представление второго основного цвета 20, который обычно располагается в или близко к второй цветовой группе 8. Два основных цвета 10, 20 расположены на первой линии 40, имеющей первое направление 45 в цветовом пространстве.
В этом варианте осуществления кодовым словом модификатора цвета является представление по меньшей мере одного модификатора цвета, применимого для модификации первого основного цвета 10 вдоль второй линии 12, имеющей второе направление 15, отличное от первого направления 45. Эта модификация цвета приводит к трем представлениям цвета 30, 32, 34, расположенным на второй линии 12. Первое из этих представлений 34 цвета является фактически первым основным цветом 10. Это означает, что для этого представления модификация цвета дает тот же самый выходной результат, что и входной (первый основной цвет 10). Другие два представления 30, 32 цвета предпочтительно расположены с обеих сторон первого представления 34 цвета (первый основной цвет 10) на второй линии 12. Это означает, что три представления 30, 32, 34 цвета являются доступными в качестве аппроксимаций для цветов элемента изображения первой цветовой группы 6.
В этом варианте осуществления одиночное представление цвета 31 получают из второго основного цвета 20, предпочтительно являющегося равным второму основному цвету 20. Таким образом, цвета второй цветовой группы 8 будут затем обычно выбирать индекс цвета, связанный этим представлением 31 цвета.
По сравнению с ситуацией, представленной на фиг.4A и 4B, большее количество представлений цвета обеспечивается в области цветового пространства, где большинство цветов элемента изображения присутствует в пространстве за счет обеспечения меньшего количества представлений цвета в окрестности второго основного цвета.
Как видно из фиг.5B, линии 12 между представлениями 30, 32 цвета и линией 40 между двумя основными цветами 10, 20 все вместе формируют T. Как следствие, этот вариант осуществления настоящего изобретения обозначен шаблон T или режим T.
В варианте осуществления настоящего изобретения кодовое слово модификатора цвета является представлением набора из по меньшей мере одного модификатора цвета, который используется (во время декодирования) для модификации цвета элементов изображения в блоке изображения. В предпочтительной реализации модификатор цвета используется для модификации яркости или интенсивности элементов изображения в блоке изображения.
В этом варианте осуществления изобретения кодовым словом модификатора цвета может быть индекс таблицы, допускающей идентификацию набора модификаторов цвета. Этот индекс мог также идентифицировать или указывать на набор в таблице или кодовой книге, содержащей несколько различных наборов модификаторов цвета. Каждый набор содержит одно или более значений модификатора цвета, предпочтительно одно или два значения модификатора.
Фактические значения модификатора цвета для наборов в таблице могут быть найдены, начиная со случайных значений и затем оптимизируя эти значения, используя множество различных схем и алгоритмов оптимизации, такие как версии LBG-алгоритма (Linde, Buzo и Gray) [5], модельной "закалки" и поиска координат, которые известны специалисту в данной области техники. Небольшое количество изображений различных типов, например, фотографии, игровые текстуры, такие как текст и т.д., может использоваться в качестве обучающих данных.
Таблица 1 иллюстрирует теперь предпочтительный пример таблицы, содержащей 7 наборов модификаторов цвета, с одним значением модификатора цвета в каждом наборе.
Таблица 1Таблица модификаторов
Набор
Кодовое слово модификатора цвета
Значение модификатора цвета
0
000<sub>bin</sub>
3
1
001<sub>bin</sub>
6
2
010<sub>bin</sub>
11
3
011<sub>bin</sub>
16
4
100<sub>bin</sub>
23
5
101<sub>bin</sub>
32
6
110<sub>bin</sub>
41
7
111<sub>bin</sub>
64
bin
bin
bin
Если таблица содержит самое большее 8 различных наборов модификаторов интенсивности, кодовое слово модификатора цвета предпочтительно является 3-битным индексом (000-111), идентифицирующим один из (8) наборов, например [3] для кодового слова 000 (000 в двоичной системе) этой таблицы.
Настоящее изобретение, тем не менее, не ограничено использованием Таблицы 1, и может использовать другие таблицы с другими наборами и значениями модификатора цвета. Кроме того, для более или менее чем 8 наборов в таблице размер кодового слова модификатора цвета должен быть изменен. Например, если таблица содержит два (3-4 или больше чем 8) наборов модификаторов цвета, размер кодового слова может быть ограничен одним битом (двумя битами или более чем тремя битами). Кроме того, в Таблице 1 каждый набор модификаторов только содержит одиночное значение модификатора цвета. Настоящее изобретение, однако, не ограничено этим, так как набор модификаторов может включать в себя два, три, четыре или более значений модификатора.
В предпочтительном варианте осуществления значение модификатора цвета в каждом наборе является представлением расстояния. Таким образом, значение модификатора представляет расстояние для перемещения вдоль второй линии (или третьей линии) в цветовом пространстве от первого основного цвета (или второго основного цвета), чтобы получить представление цвета на этой линии. Если набор содержит только одиночное значение модификатора, как иллюстрируется Таблицей 1, расстояние, представленное выбранным значением модификатора, предпочтительно перемещается вдоль второй линии (или третьей линии) с обеих сторон первого основного цвета (второго основного цвета). Со ссылками снова на фиг.4B, в таком случае два представления 30, 32 цвета на второй линии 12 предпочтительно расположены на одном и том же расстоянии d от первого основного цвета 10, но с обеих сторон основного цвета 10 на линии 12. То же самое применимо к двум представлениям 31, 33 цвета на третьей линии 22.
Модификатор цвета, представленный кодовым словом модификатора цвета, может тогда представлять это значение d расстояния, используемое в модификации цвета двух основных цветов 10, 20.
Предполагается настоящим изобретением, что набор модификаторов цвета, представленный кодовым словом цвета, может содержать два модификатора цвета, то есть два различных значения d1 и d2 расстояния. В таком случае первое значение d1 расстояния может использоваться для модификации первого основного цвета 10 вдоль второй линии 12, чтобы получить два представления 30, 32 цвета. Два представления 31, 33 цвета могут быть тогда получены посредством изменения второго основного цвета 20 вдоль третьей линии 22 на значение d2 расстояния.
Вместо использования первого значения d1 расстояния для только первого основного цвета это значение d1 расстояния может перемещаться вдоль второй линии 12 во втором направлении 15, чтобы получить представление 32 цвета, и может перемещаться вдоль третьей линии 22 в третьем направлении 25, чтобы получить представление 33 цвета. Соответственно, другое значение d2 расстояния используется для получения представлений 30, 31 цвета. Эта концепция может быть конечно расширена далее так, чтобы набор модификаторов цвета, представленный кодовым словом модификатора цвета, содержал четыре различных значения d1, d2, d3, d4 расстояния, где d1 и d2 используются для модификации первого основного цвета 10 вдоль второй линии, чтобы получить представления 30 и 32 цвета, соответственно. Оставшиеся два значения d3, d4 расстояния используются вместе со вторым основным цветом 20 и третьим направлением 25, чтобы получить два представления 31, 33 цвета вдоль третьей линии.
Кроме того, кодовое слово модификатора цвета не должно быть индексом или указателем на модификатор цвета, установленный в таблице, но может быть само фактически набором модификаторов цвета, например, содержит одно значение расстояния.
Как очевидно из описания выше, модификация цвета выполняется в отношении обоих основных цветов в режиме H, но предпочтительно только для первого основного цвета в режиме T.
bin
В другом варианте осуществления настоящего изобретения кодовое слово модификатора цвета является представлением количества раз, когда комбинация битов сдвигается, чтобы получить значение модификатора, предпочтительно значение расстояния. Например, кодовое слово может определить сколько раз значение 1 должно быть сдвинуто влево, чтобы получить значение модификатора. В таком случае доступными значениями модификатора является те, что приведены в Таблице 2 ниже.
Таблица 2Таблица сдвига
Кодовое слово модификатора цвета
Значение сдвига
Значение модификатора цвета
000<sub>bin</sub>
00000001<sub>bin</sub>
1
001<sub>bin</sub>
00000010<sub>bin</sub>
2
010<sub>bin</sub>
00000100<sub>bin</sub>
4
011<sub>bin</sub>
00001000<sub>bin</sub>
8
100<sub>bin</sub>
00010000<sub>bin</sub>
16
101<sub>bin</sub>
00100000<sub>bin</sub>
32
110<sub>bin</sub>
01000000<sub>bin</sub>
64
111<sub>bin</sub>
10000000<sub>bin</sub>
128
bin
Таким образом, используя 3-битовое кодовое слово модификатора цвета и смещение числа 1 допускает представление значений 1, 2, 4, 8, 16, 32, 64 и 128 модификатора. Это значение модификатора предпочтительно представляет предварительно описанное значение d расстояния, используемое для модификации первого основного цвета вдоль второй линии, чтобы получить два представления цвета и возможно модификации второго основного цвета вдоль третьей линии в режиме H, получить два представления цвета.
Оба варианта осуществления дают сходную эффективность и результирующее качество изображения и фактический выбор между таблицей аппаратного обеспечения и сдвигом битов может быть выбором (аппаратной) реализации.
Фиг.6 иллюстрирует блок-схему, иллюстрирующую этап обеспечения кодового слова согласно фиг.1 более подробно. Способ продолжается от этапа S2 на фиг.1. На следующем этапе S10 определяют по меньшей мере одно значение расстояния. Это по меньшей мере одно значение расстояния используется для получения представлений цвета на основании первого основного цвета (в режиме H и T) и возможно также представления цвета на основании второго основного цвета (в режиме H). В предпочтительной реализации одиночное значение d расстояния определяют на этапе S10. Однако для некоторых приложений два d1, d2 или даже четыре d1, d2, d3, d4 или больше могут быть определены на этом этапе S10. Следующий этап S11 определяет кодовое слово модификатора цвета в качестве представления значения расстояния. В первом варианте осуществления кодовое слово является индексом таблицы к одному из множества наборов модификаторов, каждый содержащий одно (или более) значений расстояния. Во втором варианте осуществления кодовое слово является количеством сдвигов, определяющих, сколько раз битовая комбинация сдвигается, чтобы получить значение расстояния. Способ затем переходит к этапу S4 на фиг.1.
Как было описано выше и иллюстрировано на фиг.4B и 5B, настоящее изобретение может предпочтительно быть в форме многорежимной схемы сжатия, подразумевающей выбор между режимом H (фиг.4B) и режимом T (фиг.5B). В этом случае режим H согласно настоящему изобретению предпочтительно используется для блоков изображения, где первоначальные цвета элемента изображения распределены в два расширенных кластера цвета, см. фиг.4A. Режим T тогда предпочтительно используется, если цвета элемента изображения вместо этого распределены в двух кластерах цвета и где цветовые точки в одном из кластеров являются достаточно центрованы вокруг одной цветовой точки, см. фиг.5A. Это означает, что два режима настоящего изобретения дополняют друг друга и могут вместе обрабатывать много различных блоков изображения, имеющих два отличных оттенка или значений цветности.
Фиг.7 иллюстрирует блок-схему, иллюстрирующую этап обеспечения и выбора согласно фиг.7 более подробно согласно такой многорежимной реализации. Способ продолжается от этапа S1 на фиг.2. На следующем этапе S20 текущий блок изображения сначала сжимают согласно шаблону или режиму H. Это подразумевает определение кандидатов первого и второго кодовых слов цвета, как описано выше. Кроме того, кандидат - кодовое слово модификатора цвета обеспечивается в качестве представления i) по меньшей мере одного модификатора цвета, применимого для модификации первого основного цвета, представленного первым кодовым словом цвета, и ii) по меньшей мере одного модификатора цвета, применимого для модификации второго основного цвета, представленного вторым кодовым словом цвета. Эта модификация цвета приведет по меньшей мере к двум представлениям цвета вдоль второй линии, предпочтительно проходящей через первый основной цвет, и по меньшей мере двум представлениям цвета по третьей отличной линии, предпочтительно проходящей через второй основной цвет в цветовом пространстве. Индекс цвета, связанный с одним из этих по меньшей мере четырех представлений цвета, выбирают предпочтительно для каждого элемента изображения в блоке изображения.
На следующем этапе S21 представление ошибки вычисляется или по меньшей мере оценивается. Эта ошибка является показательной для представления блока изображения со сжатым блоком, определенным согласно режиму H на этапе S20, то есть двух кандидатов - кодовых слов цвета, кандидата - кодового слова модификатора цвета и кандидата - последовательности индексов цвета. Это вычисление ошибки может быть выполнено посредством декомпрессии сжатого блока изображения, чтобы получить декомпрессированную версию первоначального блока изображения, и затем сравнения полученных цветов с первоначальными цветами блока изображения, например согласно уравнению 1 ниже:
<img file="00000001.tif" he="12" wi="92" img-content="undefined" img-format="tif" />
(1)
где , ,  представляют первоначальный красный, зеленый и синий компонент цвета первоначального цвета для элемента изображения (x, y), соответственно, , ,  представляет красный, зеленый и синий компонент цвета назначенного представления цвета для элемента изображения (x, y), x=0, 1, 2, 3 и y=0, 1, 2, 3, и является вычисленным представлением ошибки.
Параллельно или последовательно с этапами S20 и S21 текущий блок изображения также сжимают согласно режиму T на этапе S22. Это включает в себя определение первого и второго кандидатов кодового слова цвета как описано выше. Кроме того, кандидат - кодовое слово модификатора цвета обеспечивают в качестве представления по меньшей мере одного модификатора цвета, применимого для модификации первого основного цвета, представленного первым кодовым словом цвета. Эта модификация цвета приведет по меньшей мере к двум представлениям цвета вдоль второй линии, предпочтительно проходящей через первый основной цвет. Индекс цвета, связанный с одним из i) этими по меньшей мере двумя представлениями цвета, ii) первого основного цвета и iii) второго основного цвета, выбранного для предпочтительно каждого элемента изображения в блоке изображения.
На следующем этапе S23 представление ошибки вычисляют или по меньшей мере оценивают. Эта ошибка является показательной для представления блока изображения со сжатым блоком, определенным согласно режиму T на этапе S22, то есть двух кандидатов кодовых слов цвета, кандидата кодового слова модификатора цвета и кандидата последовательности индексов цвета. Это вычисление ошибки выполняют способом, подобным тому, что был описан выше со ссылками на этап S21.
На этапе S24 одно из этих двух сжатых представлений выбирают и используют в качестве сжатой версии текущего блока. Этот этап выбора выполняют на основании значения ошибки, вычисленных на этапах S21 и S23. Таким образом, сжатое представление, связанное с самым маленьким значением ошибки, обычно выбирается на этапе S23, то есть какое-либо представление блоков или согласно режиму H или согласно режиму T. На следующем необязательном этапе индекс режима или шаблона, представляющий режим сжатия, используемый для формирования выбранного сжатого представления, обеспечивается и включается в сжатый блок изображения, то есть в битовую последовательность, представляющую блок изображения. Эта процедура предпочтительно выполняется для каждого блока изображения, который должно быть сжат. Способ затем завершается.
Это означает, что каждый блок изображения какого-либо изображения предпочтительно анализируют и сжимают индивидуально, что в наиболее обычных приложениях (в зависимости от фактического изображения, которое должно быть закодировано) приводит к мозаике блоков изображения, сжатых согласно различным режимам. Таким образом, первый набор блоков изображения сжимают согласно режиму H и второй оставшийся набором блоков сжимают согласно режиму T. Для других приложений только один из режимов будет использоваться для различных блоков изображения.
В этом варианте осуществления сжатый блок-кандидат формируется для каждого доступного режима сжатия. Однако в другом варианте осуществления выбор режима сжатия для использования для текущего блока выполняется до фактического сжатия блоков. В этом случае выполняют первый этап анализа, где первоначальные цвета элементов изображения в блоке, и в частности - их распределение в цветовом пространстве исследуется и анализируется. Выбор режима сжатия выполняется на основании этого анализа. Этот вариант осуществления возможен, так как два режима сжатия приспособлены к отчасти различным распределениям цвета, как видно из сравнения Фиг.4A и 5A.
Вариант осуществления анализа имеет то преимущество, что только один, а не два сжатых кандидатов блоков должны быть сгенерированы, хотя и за счет анализа блока и цвета и риска выбора неоптимальной схемы сжатия.
Как было отмечено выше, этапы S20-S21 и S22-S23 могут быть выполнены параллельно или последовательно. В другом варианте осуществления один из режимов H и T может быть выбран как заданный по умолчанию режим, подразумевая, что текущий блок изображения сначала сжимают согласно этому режиму. В этом случае способ продолжается на этапах S20 и S21, если режим H расценивается как заданный по умолчанию режим, или на этапах S22 и S23, если режим T является заданным по умолчанию режимом. Результирующее вычисленное представление ошибки затем сравнивают с максимально разрешенным значением ошибки. Если вычисленная ошибка меньше, чем эта максимальная ошибка, сжатый блок, определенный согласно заданным по умолчанию (H или T) режимом, должен использоваться в качестве сжатого представления блока изображения без проверки другого доступного режима. Однако, если представление ошибки превышает максимальную ошибку, текущий блок изображения также сжимают согласно другому режиму сжатия. Этот заново определенный сжатый блок может затем использоваться непосредственно в качестве сжатого представления блока. Альтернативно, представление ошибки, показательное для сжатого блока, вычисляют и сравнивают с предварительно вычисленной ошибкой для другого режима. Представление, приводящее к самому маленькому значению ошибки, затем обычно выбирается и используется для текущего блока изображения.
Для настоящего изобретения предполагается, что сжатие изображения может быть реализовано исключительно согласно режиму H, описанному выше. В этом случае никакого выбора между режимом H и T не требуется. В другом варианте осуществления только режим T, описанный выше, используется для всех блоков изображения. В этих двух вариантах осуществления никакой индекс режима или шаблона конечно не требуется в результирующем сжатом блоке изображения. Однако предпочтительно имеется выбор между этими двумя режимами, как раскрыто со ссылками на фиг.7.
bin
bin
Фиг.8 иллюстрирует более подробно сжатый блок изображения, определенный согласно режиму H или T настоящего изобретения. Этот сжатый блок содержит первое 710 и второе 720 кодовые слова цвета, каждое включающее в себя красный 712, 722, зеленый 714, 724 и синий 716, 726 цветовые компоненты, соответственно. Кодовое слово 730 модификатора цвета и последовательность 740 индексов цвета также включены в сжатый блок. Чтобы проводить различие между режимом H и T, индекс 750 режима или шаблона предпочтительно включают в сжатый блок. В обычной реализации 14 битов могут быть заняты кодовым словом 710, 720 цвета, предпочтительно 5 битов для красного 712, 722 и зеленого 714, 724 компонентов и 4 бита на синий компонент 716, 726. Кодовое слово 730 модификатора цвета предпочтительно включает в себя 3 бита в этой реализации и последовательность 740 индекса цвета содержит 16 2-битовых индексов цвета, давая полный размер последовательности 32 бита. Кроме того, индекс 750 шаблона может быть одним битом, чтобы проводить различие между этими двумя режимами, например, 0 для H (T) режима и 1 для T (H) режима. Это составляет всего 64 бита для блока изображения и норму сжатия (коэффициент) 4 бита на элемент изображения (bpp).
28
1
3
2
34
Вообще, проблема сжатия блока состоит в том, чтобы найти лучшую возможную пару основных цветов для использования для блока изображения. В наиболее типовых практических приложениях полный перебор не может быть выполним из-за количества комбинаций, которые должны быть проверены. Например, принимая вышеописанные размеры кодового слова, последовательности и индекса режима, потребовалось бы выполнение итерации по всем возможным основным цветам, 2 комбинаций; режимам, 2 комбинаций; кодовым словам модификатора цвета, 2 комбинаций; и индексам цвета, 2 комбинаций. Это означает, что до 2 различных комбинации должны были быть попробованы для каждого элемента изображения в блоке. Поэтому, для наиболее практических реализаций предпочтительно используется неисчерпывающий способ сжатия, такой как один из этих трех способов, описанных здесь.
LBG сжатие
6
LBG-алгоритм квантования вектора [5] используется, чтобы найти два кодовых слова цвета. Поскольку используются только два значения реконструкции (кодовых слов цвета), алгоритм сходится весьма быстро. Например, начиная с двух случайных основных цветов, наиболее часто необходимы только десять итераций, чтобы получить удовлетворяющий результат. После того как два основных цвета найдены, все возможные режимы, кодовые слова модификатора цвета и индексы цвета пробуют, что требует только 2 различных комбинаций для каждого элемента изображения в блоке. Конкретную комбинацию, дающую самую низкую среднюю квадратическую ошибку (MSE), выбирают для блока изображения. Использование этого подхода для кодирования текстуры 512×512 занимает меньше чем пять секунд, используя 800 МГц персональный компьютер с 256 Мбайт ОЗУ.
Радиусное сжатие
6
Этот способ медленнее, чем LBG сжатие, но также дает лучший результат в терминах качества изображения. Первоначально, два кандидата кодовых слова цвета определяют, используя LBG алгоритм, как описано выше. Затем для каждого кодового слова цвета пробуют все возможные цвета в пределах куба (2К+1)×(2К+1)×(2К+1), центрированного вокруг кандидата основных цветов, представленных кандидатами кодовыми словами цвета. Грубо говоря, k может называться радиусом куба, отсюда и следует название этого способа. Время кодирования увеличивается очень быстро относительно k, в то время как улучшение в качестве изображение выравнивается. Так как имеются два кодовых слова цвета на блок изображения и они не проверяются независимо, радиусное сжатие становится в (2К+1) раз медленнее, чем LBG сжатие. Например, радиусное сжатие с k=1 в 729 раз медленнее, чем LBG сжатие, с k=2 - в 15 625 раз медленнее, и так далее. На практике время дополнительного кодирования для уровня радиусов более чем два не будет выровнено маленьким улучшением в качестве. Улучшение в качестве изображения с использованием первого уровня радиуса (k=1) находится в среднем около 1 дБ в терминах отношения максимального сигнала к шуму (PSNR), по сравнению с LBG сжатием.
Избирательное сжатие
Это решение использует факт, что все окружающие цвета в сжатии радиуса не одинаково вероятны. Эмпирические исследования показывают, что для почти всех блоков изображения, где используется первый уровень радиусов, достаточно пробовать только цветовые точки, показанные на фиг.15. Это означает, что только девять различных цветов должны быть проверены для каждого кодового слова цвета вместо 27. Таким образом, время кодирования уменьшается на коэффициент, хорошо сравнимый с радиусным сжатием. Потеря в качестве изображения по сравнению с радиусным сжатием составляет только приблизительно 0,05 дБ.
Фиг.9 является диаграммой RB-части RGB пространства, иллюстрирующей другой возможный вариант осуществления режима H согласно настоящему изобретению. По сравнению с фиг.4B кодовое слово модификатора цвета содержит в этом случае отличные значения модификатора цвета (значения d1, d2 расстояния) для модификации первого основного цвета 10 по сравнению со вторым основным цветом 20. Как иллюстрируется на этом чертеже, значение d1 модификатора цвета, используемое для модификации первого основного цвета 10, приводящее к двум представлениям 30, 32 цвета вдоль второй линии 12, является сравнительно большим, чем соответствующее значение d2 модификатор цвета, используемое для модификации второго основного цвета 20 вдоль третьей линии, чтобы получить представления 31, 33 цвета.
В этом контексте кодовое слово модификатора цвета может быть представлением двух различных значений d1, d2 модификатора цвета, например являющихся индексом таблицы для набора модификаторов, содержащего эти два значения модификатора. В альтернативной реализации кодовое слово модификатора цвета является представлением одиночного значения модификатора цвета, такого как d2, и другое значение d1 модификатора может затем быть вычислено из d2. Например, d1=h×d2, где h - заранее определенная фиксированная константа, например 2, или определяется в сжатом представлении блока.
Как иллюстрируется на фиг.9, первое значение d1 модификатора может быть в этом варианте осуществления быть определено так, чтобы всегда быть больше второго значения d2 модификатора.
1
1
1
1
1
1
На фиг.9 вторая 12 и третья 22 линии параллельны, то есть эти два направления 15 и 25 являются одинаковыми. В предпочтительном таком случае второе 15 и предпочтительно также третье 25 направления являются направлением яркости или интенсивности в цветовом пространстве, то есть, v=[1, 1, 1]. В этом случае модификация цвета двух основных цветов 10, 12 может просто быть реализована, добавляя (суммируя) значения d1, d2 модификатора цвета, представленные кодовым словом модификатора цвета, к каждому компоненту цвета основных цветов 10, 20, например (R+d1, G+d1, B+d1), где R, G, B представляют три цветовых компонента первого основного цвета 10.
В другом варианте осуществления настоящего изобретения вторая 12 и третья 22 линии параллельны, но их соответствующие направления 15, 25 не являются направлением яркости. В этом случае это направление 15, 25 может быть заранее определенным и одинаковым для всех блоков изображения, сжатых согласно этому режиму H согласно настоящему изобретению. В альтернативном варианте осуществления направление может быть закодировано в сжатом блоке изображения, чтобы учесть различные векторы направления для различных блоков изображения. Это означает, что сжатый блок изображения может содержать кодовое слово направления.
Этот принцип может быть дополнительно расширен, что иллюстрируется на фиг.10. На этой диаграмме вторая 12 и третья линия 13 не параллельны, то есть два вектора 15, 25 направления различны. В этом случае два различных направления 15, 25 могут быть заранее определенными и обычно одинаковыми для всех блоков, сжатых согласно такому режиму. Альтернативно, одно или оба из направлений 15, 25 могут быть закодированы в кодовом слове направления для конкретного блока изображения.
В описанных выше диаграммах два представления цвета были представлены на второй 12 линии (и третьей линии 22 в режиме H) с обеих сторон первого основного цвета 10 (и второго основного цвета 20). Настоящее изобретение, однако, не ограничено этим. Фиг.11 иллюстрирует эту концепцию для режима T, но может аналогично применяться к режиму H настоящего изобретения. В этом иллюстративном примере три представления 30, 32, 34, 35, 36, 38 цвета присутствуют на второй линии 12 с обеих сторон первого основного цвета 10. Это конечно учитывает большее количество представлений 32, 34, 35, 36, 38 цвета для выбора среди элементов изображения, имеющих цвета в этой части RGB пространства и поэтому обычно более высокое доступное качество изображения, но при более высоком количестве битов на пиксель (bpp).
Различные представления 32, 34, 35, 36, 38 цвета на второй линии 12 могут быть эквидистантными от первого основного цвета 10. Другими словами, первая пара 34, 36 представления цвета может быть позиционирована на расстоянии d от первого основного цвета 10 (одно представление 34, 36 цвета с обеих сторон основного цвета 10 на линии 12). Вторая пара 32, 38 представления цвета располагается на 2хd от основного цвета 10 и третья пара 30, 35 представления цвета располагается на расстоянии 3xd от основного цвета 10. В этом случае кодовое слово модификатора цвета только должно быть представлением d.
В альтернативном подходе другое распределение, а не эквидистантное, используется для представлений 32, 34, 35, 36, 38 цвета, позиционированных на второй линии 12. На фиг.11 Гауссово-подобное распределение использовалось для представлений 32, 34, 35, 36, 38 цвета второй линии 12. Это означает, что расстояние между представлениями 32, 34, 35, 36, 38 цвета и первым основным цветом 10 увеличивается для более отдаленных представлений цвета. Другими словами, расстояние между самыми внутренними представлениями 34, 36 цвета и основным цветом 10 является меньшим, чем расстояние между вторыми самыми внутренними представлениями 38, 32 цвета и самой внутренней парой 34, 36 представления цвета, и так далее.
Этот подход особенно подходит для обработки блоков изображения, где первоначальные цвета изображения элементов изображения кластеризованы вокруг точки в цветовом пространстве, но некоторые цвета позиционированы несколько более отдаленными от этой точки.
2
2
2
2
2
2
На предыдущих чертежах представления цвета пары были позиционированы с одинаковым расстоянием от релевантного основного цвета, но с обеих сторон основного цвета на линии. Настоящее изобретение, однако, не ограничено таким решением. Фиг.12 иллюстрирует диаграмму, показывающую вариант осуществления режима H согласно настоящему изобретению, для которого различные модификаторы d1, d2 цвета использовались для модификации второго основного цвета 20 вдоль третьей линии 22, чтобы получить соответствующее представление 31, 33 цвета с обеих сторон основного цвета 20 на линии 22. Таким образом, если направление линии 25 является направлением яркости, первое представление 31 цвета имеет следующие значения цвета (R-d1, G-d1, B-d1) и другое представление 33 цвета имеет значения цвета (R+d1, G+d1, B+d1).
Эта диаграмма также иллюстрирует использование более чем двух эквидистантных представлений 30, 32, 34, 36 цвета, получаемых посредством изменения основного цвета 10.
Описание вышеупомянутых вариантов осуществления и реализации настоящего изобретения, которые далее иллюстрируются на фиг.9-12, могут быть скомбинированы. Например, использование различных значений модификатора для первого и второго основного цвета или использования больше чем двух (эквидистантных или распределенных по Гауссу) представлений цвета, получаемых из одиночного основного цвета, может применяться к не параллельным второй и третьей линиям. Специалист в данной области техники понимает, как такие различные комбинации могут быть реализованы на основании описания, представленного выше, и такие комбинации поэтому находятся в пределах объема настоящего изобретения.
Как было описано выше, настоящее изобретение выгодно используется как дополнительный или вспомогательный режим к схеме сжатия iPACKMAN/ETC [3, 4]. В этом случае настоящее изобретение должно использоваться для сжатия и декомпрессии блоков изображения, имеющих два отличных оттенка и значения цветности. Для других блоков изображения может вместо этого использоваться iPACKMAN/ETC или другой вспомогательный режим.
Фиг.13 схематично иллюстрирует такую реализацию. Способ продолжается от этапа S1 на фиг.1. Поданный блок изображения, который должен быть сжат, затем обрабатывается согласно различным схемам, обычно параллельно. Другими словами, блок изображения на этапе S30 является сжатым согласно шаблону или режиму H согласно настоящему изобретению. Этот этап S30 в основном соответствует этапу S20 на фиг.7 и далее здесь не описан. На следующем этапе S31 значение ошибки, представляющее представления блока изображения с этим первым сжатым блоком, оценивается. Кроме того, тот же самый блок изображения дополнительно сжимают согласно по меньшей мере одному другому режиму сжатия, три других режима на этом чертеже. Таким образом, блок изображения сжимают согласно режиму T из настоящего изобретения на следующем этапе S32. Этот этап S32 соответствует предварительно описанному этапу S22 на фиг.7 и не описан далее. Следующий этап S33 вычисляет значение ошибки, представляющей представление блока изображения в качестве сжатого блока, получаемого согласно режиму T.
В дополнение к этому сжатию блока согласно двум различным режимам настоящего изобретения блок изображения сжимают согласно режиму iPACKMAN/ETC на этапе S34. Этот режим сжатия использует определение первого кодового слова цвета в качестве представления значения первого основного цвета. Кроме того, также определяют второе кодовое слово цвета. Однако это второе кодовое слово является представлением дифференциального (разностного) цвета. Значение второго основного цвета затем получают как сумму значения первого цвета и дифференциального цвета. Элементам изображения в первом субблоке (2×4 или 4×2 элементах изображения) назначают значение первого основного цвета, в то время как элементам изображения во втором субблоке (2×4 или 4×2 элементах изображения) назначают значение второго основного цвета.
Кодовое слово интенсивности обеспечивается для блока изображения, где кодовое слово интенсивности является представлением набора множества модификаторов интенсивности. Эти модификаторы интенсивности применимы для модификации интенсивности значения первого или второго основного цвета для генерирования множества представлений цвета. В предпочтительной реализации кодовое слово интенсивности является индексом таблицы к таблице интенсивности, содержащей множество наборов модификаторов, где наборы модификаторов имеют различные модификаторы интенсивности. Кроме того, индекс интенсивности выбирают для каждого элемента изображения в блоке, где индекс интенсивности связан с модификатором интенсивности из набора модификаторов интенсивности, представленного кодовым словом интенсивности.
Следующий этап S35 вычисляет значение ошибки, представляющей представление блока изображения в качестве сжатого блока, получаемого согласно режиму iPACKMAN/ETC.
Наконец, блок изображения предпочтительно сжимают согласно режиму сжатия, обозначенному как PLANAR (плоский) и описанному в ссылке [6], на этапе S36. Этот режим сжатия использует назначение весов цвета по меньшей мере поднабору элементов изображения в блоке изображения. Веса цвета предпочтительно определяют на основании относительных положений элементов изображения, которые по меньшей мере один поднабор имеет в блоке изображения. Эти веса цвета будут использоваться во время декомпрессии для взвешивания различных цветов, определенных для блока изображения, чтобы сформировать представления цвета, используемые для представления оригинальных ("истинных") цветов элементов изображения.
Веса цвета предпочтительно назначают для каждого элемента изображения в по меньшей мере одном поднаборе элементов изображения в блоках. В первом варианте осуществления блок изображения содержит N, например 16, элементов изображения, N является целым числом большим, чем единица, и поднабор содержит М элементов изображения, где 0<М<N. Это означает, что никакие веса цвета не назначаются для оставшихся N-M элемента(ов) изображения. В этом случае первоначальный цвет этого (этих) оставшегося(ихся) элемента(ов) изображения представлен одним из кодовых слов цвета, которые должны быть определены для блока изображения. Однако это в основном соответствует установке всех элементов компонентов одного из векторов веса цвета в 1 и установке всех элементов компонентов другого(их) вектора(ов) веса(ов) цвета в 0.
Поэтому, в другой предпочтительной реализации веса цвета назначают всем элементам изображения в блоке. В этом варианте осуществления по меньшей мере один из весов цвета, назначенных по меньшей мере одному элементу изображения, предпочтительно отличается от 0, 1 и -1.
После этого по меньшей мере два кодовых слова цвета определяют для блока изображения на основании или использования назначенных весов цвета. В первом варианте осуществления этого режима сжатия определяют два кодовых слова цвета. Однако в предпочтительной реализации настоящего изобретения три, или иногда четыре или больше, кодовых слова цвета вместо этого определяют на основании веса цвета. Эти множество кодовых слов затем представляют три, четыре или больше значений цвета. Согласно этому режиму сжатия, возможно, основывая определение кодового слова цвета на назначенных весах цвета, определить кодовые слова цвета, приводящие к более высокому качеству изображения и разрешающие генерацию представлений цвета, имеющих медленно изменяющиеся цветовые переходы.
Первоначальные цвета множества элементов изображения в блоке представлены (аппроксимированными) представлениями цвета, выводимыми из по меньшей мере двух значений цвета, в свою очередь представляемых по меньшей мере двумя определенными кодовыми словами цвета. Кроме того, представления цвета элементов изображения в по меньшей мере одном поднаборе, то есть тех элементах изображения, для которых веса цвета были назначены, являются выводимыми из комбинаций по меньшей мере двух значений цвета, взвешенных посредством назначенных весов цвета.
Если по меньшей мере один поднабор содержит первый поднабор элемента изображения в блоке, представления цвета этих элементов изображения являются выводимыми из комбинаций по меньшей мере двух значений цвета, взвешенных назначенными весами цвета. Однако представления цвета элементов изображения во втором оставшемся наборе элементов изображения в блоке выбирают непосредственно из значений цвета, и поэтому не составляют комбинации множества значений цвета.
В настоящее время предпочтительной реализации PLANAR'а, веса цвета предпочтительно выбирают так, чтобы только одиночный элемент изображения в блоке имел веса цвета, состоящие из 1, и оставшиеся 0. Это означает, что этот одиночный элемент изображения, предпочтительно угловой элемент изображения, имеет свой первоначальный цвет, представленный значением цвета, выведенным только из одного из трех кодовых слов цвета, которые используются в этой реализации.
Способ позиционирования значений цвета для этой реализация приводит к следующей формуле для вычисления представлений цвета и весов цвета элементов изображения в блоке изображения:
H
0
V
0
0
R (x, y)=(R-R)+(R-R)+R
H
0
V
0
0
G (x, y)=(G-G)+(G-G)+G
H
0
V
0
0
B (x, y)=(B-B)+(B-B)+B
=1--
=
=
V
V
V
H
H
H
0
0
0
где (R, G, B), (R, G, B), (R, G, B) представляют три кодовых слова цвета, R (x, y), G (x, y), B (x, y) представляют представления цвета для элемента изображения (x, y), x=0, 1, 2, 3 и y=0, 1, 2, 3, и , ,  - веса цвета для трех различных кодовых слов цвета для элемента изображения (x, y) в блоке изображения. Это означает, что представления цвета блока изображения, иллюстрированного на фиг.2, будут иметь красные компоненты согласно Таблице 3 ниже.
Таблица 3Представления цвета
R<sub>0</sub>
<img file="00000002.tif" he="5" wi="3" img-content="undefined" img-format="tif" /><img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>0 </sub>+<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>
<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>
<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>
<img file="00000002.tif" he="5" wi="3" img-content="undefined" img-format="tif" /><img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>+<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>+<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
<img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>+<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>+<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>+<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
-<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>+<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>+<img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
-<img file="00000016.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>+<img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
-<img file="00000017.tif" he="10" wi="4" img-content="undefined" img-format="tif" />R<sub>0</sub>+<img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>H</sub>+<img file="00000015.tif" he="9" wi="4" img-content="undefined" img-format="tif" />R<sub>V</sub>
Z
Z
Z
Синие и зеленые компоненты предпочтительно обрабатывают таким же образом, то есть в основном, меняя R на B или G, где z=0, 1, 2, 3.
На следующем этапе S37 вычисляют значение ошибки, указывающее использование этого PLANAR-сжатого блока изображения в качестве представления блока изображения.
Теперь четыре (или в альтернативных вариантах осуществления два, три или больше чем четыре) различных сжатых представлений являются доступными. На следующем этапе S38 одно из этих четырех сжатых представлений выбирают и используют в качестве сжатой версии текущего блока. Этот этап выбора выполняют на основании значений ошибки, вычисленных на этапах S31, S33, S35 и S37. Таким образом, сжатое представление, связанное с самым маленьким значением ошибки, должно быть выбрано на этапе S38. В следующем необязательном этапе индекс режима, представляющий режим сжатия, используемый для формирования выбранного сжатого представления, обеспечивают и включают в сжатый блок изображения, то есть в битовую последовательность, представляющую блок изображения. Эта процедура предпочтительно выполняется для каждого блока изображения, который должно быть сжат. Способ затем завершается.
Это означает, что каждый блок изображения для изображения предпочтительно анализируется и сжимается индивидуально, что в наиболее типовых приложениях (в зависимости от фактического изображения, которое должно быть закодировано), приводит к мозаике блоков изображения, сжатых согласно различным режимам. Таким образом, первый набор блоков изображения сжимают согласно режиму H, второй набор блоков сжимают согласно режиму T, третий набор блоков сжимают согласно режиму iPACKMAN/ETC и четвертый набор блоков сжимают согласно режиму PLANAR. Для других приложений только один, два или три из этих режимов будут использоваться для различных блоков изображения.
В этом варианте осуществления сжатый кандидат - блок генерируется в доступном режиме сжатия. Однако в другом варианте осуществления выбор режима сжатия для использования для текущего блока выполняется перед фактическими сжатиями блоков. В этом случае выполняется первый этап анализа, где первоначальные цвета элементов изображения в блоке и, в частности, их распределение в цветовом пространстве, исследуется и анализируется. Выбор режима сжатия выполняется на основании этого анализа.
Этот вариант осуществления возможен, так как различные доступные режимы сжатия являются особенно подходящими и эффективными для заданных типов блоков. Например, схема PLANAR является эффективной в обработке блоков с медленно изменяющимися цветовыми переходами. Схема iPACKMAN/ETC очень эффективна для обработки блоков изображения, где цвета элементов изображения имеют слегка похожие значения цветности, но изменяющуюся яркость. Настоящее изобретение адаптировано для управления блоками изображения, имеющими два отличных значения цветности (цвета), и эти два режима, T и H, управляют различными распределениями групп цвета.
Этот вариант осуществления имеет то преимущество, что только один, а не четыре сжатых кандидата блоков должны быть сгенерированы, хотя за счет анализа блока и цвета и риска выбора неоптимальной схемы сжатия.
bin
bin
bin
bin
Фиг.14A схематично иллюстрирует возможное сжатое представление 700 блока для дифференциального режима iPACKMAN/ETC. Сжатый блок 700 включает в себя первое кодовое слово 710 цвета, включающее в себя три цветовых компонента, красный 712, зеленый 714 и синий 716, предпочтительно каждый представленный пятью битами. Кодовое слово 720 второго цвета или дифференциального цвета аналогично включает в себя три компонента, красный 722, зеленый 724 и синий 726, предпочтительно каждый представленный тремя битами. Сжатый блок также включает в себя два кодовых слова 730A, 730B интенсивности, один для каждого 2×4/4×2 из субблоков, предпочтительно каждый из 3 битов. Последовательность 740 индексов интенсивности, предпочтительно один 2-битовый индекс интенсивности на каждый элемент изображения в блоке, также включена в сжатый блок, приводя к 32 битам. Бит 770 переключения (flipbit) определяет, являются ли два субблока блока изображения двумя 2×4 блоками или двумя 4×2 блоками, то есть размещенными вертикально, если бит переключения =0, или горизонтально, если бит переключения =1. iPACKMAN/ETC содержит два так называемых заданных по умолчанию режима, которые были описаны и раскрыты в существующем документе. Бит различения (diffbit) 760 различает эти два заданных по умолчанию режима. На фиг.14A-14D, этот бит diffbit 760 равен и установлен в 1 (или 0). Следует заметить, что взаимный порядок кодовых слов 710, 720, 730A, 730B, последовательности 740 индексов, flipbit 770 и diffbit 760 закодированного блока изображения может отличаться от того, что проиллюстрировано на чертеже. Полный размер сжатого блока равен 64 бита.
bin
bin
В режиме iPACKMAN/ETC, упомянутом выше, компоненты 712, 714, 716 цвета из первого кодового слова 710 цвета предпочтительно каждый содержит 5 битов, в основном представляя любое значение в интервале 0-31 (00000-11111). Компоненты 722, 724, 726 второго кодового слова 720 предпочтительно каждый содержит 3 бита, которые используются для представления значения в интервале от -4 до +3. Компоненты цвета второго значения цвета являются получаемыми посредством суммирования компонентов 712, 714, 716; 722, 724, 726 из этих двух кодовых слов:
Красный компонент =R+dR
Зеленый компонент =G+dG
Синий компонент =B+dB
Так как эти цветовые компоненты представляют информацию интенсивности, они могут принимать значения от 0 (нет интенсивности) до 31 (полная интенсивность). Это означает, что комбинации битов первого кодового слова 710 цвета и второго кодового слова 720 цвета, которые приводят к тому, что суммы R+dR, G+dG, B+dB будут давать переполнение, то есть должны быть <0 или >31, никогда не должны использоваться кодером, работающим в этом режиме iPACKMAN/ETC. Это позволяет вводить три вспомогательных режима, которые могут использоваться, чтобы дополнить iPACKMAN/ETC.
В первом вспомогательном режиме красный компонент переполняется, то есть R+dR является меньшим, чем нуль, или большим, чем 31. Если это случается, первые три бита красного компонента 712 из первого кодового слова 710 цвета равны и отличны от первого бита красного компонента 722 из второго кодового слова 720 цвета.
bin
bin
На фиг.14B этот принцип используется для использования H-шаблона/режима согласно настоящему изобретению в качестве вспомогательного режима к iPACKMAN/ETC. Таким образом, в этом режиме четыре бита 790 не могут быть выбраны свободно, так как для красных компонентов должны быть переполнения, и они должны быть равны или 1110 или 0001. Сжатое представление 700 блока предпочтительно имеет всего 64 бита, из которых четыре используются согласно вышеупомянутому. Оставшиеся 60 битов предпочтительно разделяются между включенными частями согласно следующему: 4 бита назначены каждому компоненту 712, 714, 716; 722, 724, 726 цвета первого 710 и второго 720 кодовых слов цвета. Кодовое слово 730 модификатора цвета содержит три бита, diffbit 760 - один бит (который имеет то же самое значение как на фиг.14A) и последовательность 740 индексов цвета - предпочтительно 32 бита.
Второй вспомогательный режим получают, если зеленый компонент переполняется, то есть G+dG меньше, чем нуль, или больше, чем 31, и красному компоненту не позволяют переполняться, то есть 0<R+dR<31. В этом режиме первый бит красного компонента 712 из первого кодового слова цвета на фиг.14A установлен отличным от второго или третьего бита красного компонента 712, делая переполнение невозможным для красного компонента. Кроме того, первые три бита зеленого компонента 714 первого кодового слова 710 цвета должны быть равны и отличны от первого бита зеленого компонента 724 второго кодового слова 720 цвета. Кроме того нужно проверить, чтобы зеленый компонент фактически переполнился.
На фиг.14C бит 0 (соответствует первому биту красного компонента в первом кодовом слове цвета на фиг.14A), бит 8 - бит 10 (соответствуют трем первым битам зеленого компонента в первом кодовом слове цвета на фиг.14A) и бит 13 (соответствует первому биту зеленого компонента во втором кодовом слове цвета на фиг.14A), все вместе представленные ссылочной позицией 790 на этом чертеже, не могут быть установлены свободно. Поэтому 59 битов остаются для использования для других частей сжатого блока. Эти 59 битов предпочтительно используются согласно режиму T настоящего изобретения. Разделение битов по кодовым словам 710, 720 цвета, кодовому слову 730 модификатора цвета, diffbit 760 и последовательности 740 индексов цвета является предпочтительно таким же, как на фиг.14C, за исключением того, что кодовое слово 730 модификатора цвета в этом случае только содержит два бита вместо трех.
Третий вспомогательный режим, использующий схему режима PLANAR, доступен, если синий компонент переполняется, то есть B+dB меньше, чем нуль, или больше, чем 31, но красному и зеленому компонентам не позволяют переполниться. Это означает, что первый бит красного 712 и зеленого 714 компонента первого кодового слова 710 цвета на фиг.14A должны отличаться от второго или третьего компонента в красном 712 и зеленом 714 компонентах. Кроме того, синий компонент переполняется, то есть B+dB меньше, чем нуль, или больше, чем 31.
На фиг.14D поэтому бит 0 (соответствует первому биту красного компонента в первом кодовом слове цвета на фиг.14A), бит 8 (соответствует первому биту зеленого компонента в первом кодовом слове цвета на фиг.14A), бит 16 - бит 18 (соответствуют трем первым битам синего компонента в первом кодовом слове цвета на фиг.14A) и бит 21 (соответствует первому биту синего компонента во втором кодовом слове цвета на фиг.14), все вместе обозначенные 790, не могут быть установлены свободно. Красному 712, 722, 782 и синему 716, 726, 786 компонентам трех кодовых слов 710, 720, 730 цвета предпочтительно назначают 6 битов каждому, в то время как соответствующие зеленые компоненты 714, 724, 784 содержат 7 битов каждый и diffbit 780 - один бит. Это составляет всего 64 бита.
Если четыре различных сжатых представления, проиллюстрированные на фиг.14A-14D, возможны, индекс режима, используемый для проведения различия между этими четырьмя режимами, предпочтительно включает в себя определенные позиции в битовой последовательности. Эти битовые позиции включают в себя первое 710 и второе 720 кодовые слова цвета на фиг.14A. Кроме того, diffbit (бит различения) предпочтительно используется, чтобы проводить различие между другим доступным режимом iPACKMAN/ETC. Следует заметить, однако, что некоторые из битов этого индекса режима могут использоваться для кодирования сжатого блока в различных режимах.
Декомпрессия
Фиг.16 иллюстрирует блок-схему способа декодирования закодированного изображения или закодированной версии первоначального изображения согласно настоящему изобретению. Закодированное изображение в основном содержит несколько закодированных представлений блоков изображения. Эти закодированные представления блоков предпочтительно сформированы способом кодирования изображения, описанным выше.
Способ в общем случае начинается с идентификации закодированного(ых) блока(ов) изображения для декодирования. Возможно, что все закодированные блоки изображения закодированного изображения должны быть декодированы, чтобы сформировать декодированное представление первоначального изображения. Альтернативно, только к части первоначального изображения должен быть доступ. Как следствие, только выбранное количество блоков изображения должно быть декодировано (или более точно, выбранное количество элементов изображения некоторых блоков изображения должно быть декодировано).
Как только правильный закодированный(ые) (представление(я)) блок(и) изображения идентифицированы, на этапе S40 определяют первый основной цвет на основании первого кодового слова цвета в сжатом представлении блоков. На следующем этапе S41 аналогично определяют второй основной цвет на основании второго кодового слова цвета. Эти два определенных основных цвета расположены на первой линии, имеющей первое направление в цветовом пространстве.
bin
bin
В предпочтительной реализации этапов S40 и S41 квантованные цвета кодовых слов цвета предпочтительно из 12 битов или 14 битов удлиняются или расширяются предпочтительно в 24 бита. Для случая с цветом RGB и кодовыми словами цвета RGB444, каждый 4-битовый квантованный компонент цвета кодовых слов цвета расширяется до 8 битового компонента цвета. Это расширение цвета может быть реализовано посредством умножения 4-битовых квантованных компонентов цвета на 17 для реализации с 256 различными цветами ((256-1)/(16-1)=17). Это то же самое, что копирование 4-битового шаблона в первые (старшие) и последние (младшие) 4 бита расширенного 8-и битового слова цвета. Другими словами, 4-битовый компонент цвета 1011 расширяется в 10111011.
На следующем этапе S42 по меньшей мере один модификатор цвета обеспечивается на основании кодового слова модификатора цвета и используется для модификации первого основного цвета вдоль второй линии, имеющей второе направление в цветовом пространстве, чтобы получить множество представлений цвета, расположенных на второй линии. Это второе направление отличается от первого направления.
Модификация цвета может быть реализована посредством суммирования обеспеченного по меньшей мере одного модификатора цвета, или его производного, такого как отрицание значения модификатора, с первым основным цветом вдоль второго направления. В типовой реализации второе направление является направлением яркости [1, 1, 1], подразумевая, что по меньшей мере одно значение модификатора просто суммируется к трем компонентам основного цвета или вычитается из трех компонентов цвета. Вместо просто суммирования значений модификатора в некоторых применениях может быть предпочтительно взвешиванию значения модификатора перед суммированием его к компонентам. В этом случае различные веса могут использоваться для различных компонентов цвета. В альтернативном варианте осуществления другой тип модификации, чем простое добавление, может использоваться, например, перемножение, исключающее ИЛИ, или другая модификация. На следующем необязательном этапе результирующие значения компонентов цвета с модифицированным цветом фиксируются между минимальным цветовым порогом и максимальным цветовым порогом. Например, если после суммирования (возможно взвешенного) значения модификатора цвета к компоненту цвета результирующее значение меньше, чем минимальный порог, значение фиксируется равным значению этого порога. Соответственно, если результирующее значение больше, чем максимальный порог, значение порога должно вместо этого использоваться для этого компонента. Неограничивающим примером минимального и максимального порога являются 0 и 255, соответственно, для случая с 256 различными цветовыми уровнями на компонент цвета.
На следующем этапе S43 представление цвета выбирают из i) множества представлений цвета вдоль второй линии, сформированной на этапе S42, и ii) по меньшей мере одного представления цвета, основанного на втором основном цвете. Этот выбор представления выполняют на основании последовательности индексов цвета сжатого блока изображения и, более точно, на основании индекса цвета, назначенного текущему элементу изображения, который нужно декодировать.
Этап S43 может быть выполнен для нескольких элементов изображения в блоке изображения (схематично иллюстрируется линией L3). В соответствии с изобретением предполагается, что в некоторых применениях только одиночный элемент изображения декодируют из конкретного блока изображения, множество элементов изображения конкретного блока изображения декодируют и /или декодируют все элементы изображения конкретного блока.
Этапы S40-S43 затем предпочтительно повторяют для всех блоков изображения, которые содержат элементы изображения, которые должны быть декодированы (схематично иллюстрируется линией L4). Это означает, что цикл этапов S40-S43 может быть выполнен однократно, но наиболее часто - несколько раз для различных закодированных блоков изображения и/или несколько раз для конкретного закодированного блока изображения.
На необязательном этапе S44 декодированное представление первоначального изображения или его части формируют на основании декодированных элементов изображения и блоков. Следует заметить, что в некоторых применениях несколько элементов изображения должны быть декодированы, чтобы воспроизвести одиночный пиксель декодированного представления. Например, во время трилинейной интерполяции восемь элементов изображения декодируют и для билинейной интерполяции соответствующим количеством являются четыре элемента изображения, как известно специалисту в данной области техники. Способ затем завершается.
Фиг.17 иллюстрирует блок-схему, иллюстрирующую вариант осуществления этапа формирования S42 согласно фиг.16 более подробно. Способ продолжается от этапа S41 на фиг.16. На следующем этапе S50 по меньшей мере один модификатор цвета обеспечивается на основании кодового слова модификатора цвета. Этот этап обеспечения может быть реализован посредством использования кодового слова модификатора цвета в качестве индекса таблицы для процедуры поиска в таблице. В этом случае набор модификаторов, содержащий по меньшей мере один модификатор цвета, извлекают из таблицы модификаторов на основании кодового слова модификатора. В другой реализации кодовое слово модификатора цвета является представлением количества сдвигов для сдвига определенной комбинации битов. Это означает, что кодовое слово модификатора затем используется для вычисления желательного(ых) значения(й) модификатора. Настоящее изобретение также предлагает варианты осуществления, в которых само кодовое слово модификатора цвета в основном является одним или более значениями модификатора цвета или квантованных версий таких значений.
В любом случае, обеспеченный(е) модификатор(ы) цвета используется (используются) на следующем этапе S51 для модификации первого основного цвета вдоль второй линии, чтобы получить множество представлений цвета вдоль второй линии. В первом варианте осуществления модификация цвета использует добавление (суммирование) обеспеченного по меньшей мере одного значения модификатора, или его производного, такого как его отрицание или его взвешенный коэффициент, к основному цвету вдоль второй линии. Если эта вторая линия имеет ассоциированный вектор направления, равный направлению яркости v=[1, 1, 1], суммирование может быть реализовано, просто добавляя значение модификатора к каждому компоненту цвета первого основного цвета. В других вариантах осуществления, где вектор яркости является отличным от v=[1, 1, 1], например, v=[0.299, 0.587, 0.114], или вектор направления неяркости используется для второй линии, значение модификации цвета может рассматриваться как расстояние для перемещения вдоль второй линии основного цвета.
В варианте осуществления кодовое слово модификатора цвета представляет одиночное значение модификатора цвета. В этом случае это одиночное значение модификатора используется для модификации первого основного цвета вдоль второй линии, чтобы получить представления цвета. Множество представлений могут быть получены из такого одиночного значения модификатора, например, посредством добавления значения модификатора непосредственно к основным компонентам цвета, чтобы получить первое представление цвета, и добавления производного значения модификатора, такого как его отрицание, к компонентам цвета, чтобы получить второе представление цвета.
Во втором варианте осуществления кодовое слово модификатора представляет множество значений модификатора цвета. В этом случае каждое такое значение модификатора может использоваться для модификации первого основного цвета с целью получения по меньшей мере одного представления цвета. Это означает, что может затем иметься отношение один-к-одному или один-ко-многим (например, "один к двум") между значениями модификатора и представлениями цвета.
В этом контексте значения модификатора могут быть выбраны так, что эквидистантные или не эквидистантные (например, распределенные по Гауссу) представления цвета будут доступны на второй линии, как было подробно описано. В любом случае, способ затем переходит к этапу S43 согласно фиг.16.
В другом варианте осуществления этапа формирования на фиг.16 первый набор множества представлений цвета формируют вдоль второй линии посредством модификации первого основного цвета по меньшей мере одним модификатором цвета, представленным кодовым словом модификатора. Второй соответствующий набор множества представлений цвета вдоль третьей линии в цветовом пространстве аналогично формируют посредством модификации второго основного цвета по меньшей мере одним модификатором цвета, представленным кодовым словом модификатора. Как было описано выше, эта третья линия отличается от второй линии, но может быть параллельна или не параллельна второй линии. В этом контексте по меньшей мере один модификатор цвета, используемый для модификации второго основного цвета по третьей линии, может быть тем же самым или отличным от значения(й) модификатора, используемого(ых) для модификации первого основного цвета. В последнем случае кодовое слово модификатора цвета предпочтительно является представлением по меньшей мере двух значений модификатора цвета.
Представление цвета для использования в качестве первоначального приближения цвета элемента изображения в блоке затем выбирают на основании последовательности индексов цвета из первого и второго наборов множества представлений цвета.
bin
bin
Фиг.18 иллюстрирует блок-схему, иллюстрирующую вариант осуществления этапа формирования на фиг.16 согласно многорежимному режиму реализации настоящего изобретения. В этой многорежимной реализации первый режим декомпрессии предварительно представлен режимом T и второй режим декомпрессии - режимом H. Способ продолжается от этапа S41 на фиг.16. На следующем этапе S60 выбирают режим выбора для использования для текущего блока изображения. Этот выбор режима предпочтительно выполняют на основании индекса режима или шаблона, включенного в сжатое представление блока изображения. Например, одиночный бит может использоваться, чтобы проводить различие между режимами T и H, при этом бит режима равен 1, представляющей первый из режимов, и 0, представляющему второй режим.
Если режим T выбран на этапе S60, способ переходит к этапу S61. Этот этап S61 включает в себя обеспечение по меньшей мере одного модификатора цвета на основании кодового слова модификатора и использование по меньшей мере одного модификатора для формирования множества представлений цвета вдоль второй линии в цветовом пространстве, как описано выше. Способ затем переходит к этапу S43, где представление цвета выбирают для текущего элемента изображения из i) множества представлений цвета, сформированных из первого основного цвета, предпочтительно включающего в себя сам первый основной цвет, и ii) второго основного цвета или представления цвета, сформированного из него.
Если этап выбора S60 вместо этого ведет к использованию режима H для декомпрессии текущего блока, как определяется из бита режима, способ переходит к этапу S62. Этот этап S62 использует i) модификацию первого основного цвета вдоль второй линии, чтобы получить первый набор множества представлений цвета вдоль второй линии, и ii) модификацию второго основного цвета по третьей линии, чтобы получить второй набор множества представлений цвета. Способ затем переходит к этапу S43 на фиг.16, где представление цвета выбирают из первого и второго наборов на основании индекса цвета, назначенного элементу изображения, который нужно декодировать.
Фиг.19 является блок-схемой другой многорежимной реализации декодирования/декомпрессии изображения и блока согласно настоящему изобретению. Способ начинается на этапе S70, где режим декомпрессии для использования для текущего блока выбирают на основании индекса режима. Если возможны четыре различных сжатых представления, иллюстрированные на фиг.14A-14D, индекс режима включает в себя бит различия (diffbit), первое кодовое слово цвета и второе кодовое слово цвета на фиг.14A. Таким образом, декодер исследует эти битовые позиции в битовой последовательности, которая составляет сжатое представление блоков и выбирает режим декомпрессии на основании исследованных битов. В предпочтительной реализации выбирают режим PLANAR декомпрессии, если синий компонент цвета переполняется, но не красный и зеленый. Режим H выбирают, если красный компонент переполняется, и режим T согласно изобретению выбирают, если зеленый компонент переполняется, но не красный. Если ни один из компонентов не переполняется, выбирают режим iPACKMAN/ЕТС декомпрессии на этапе S70.
Если режим H выбран на этапе S70, способ переходит к этапу S71, где блок декомпрессируют согласно этому режиму. Это соответствует реализации этапов S40-S43, проиллюстрированных на фиг.16, где этап формирования S42 выполняется, как описано со ссылками на этап S62 на фиг.18. Если вместо этого режим T по изобретению выбран на этапе S70, способ переходит к этапу S72, где блок декомпрессируют согласно режиму T изобретения. Этот этап S72 в основном соответствует этапам S40-S43 на фиг.16 и где этап S42 формирования предпочтительно выполняют, как было описано выше со ссылками на этап S61 на фиг.18.
Способ продолжается от этапа S70 к этапу S73, если выбран режим PLANAR декомпрессии. Этот режим декомпрессии использует определение по меньшей мере двух значений цвета на основании по меньшей мере двух кодовых слов цвета в сжатых представлениях блоков (см. фиг.14D). В предпочтительной реализации этот этап определения использует расширение квантованного цвета кодового слова цвета, такого как RGB676, в предпочтительно 24 бита (RGB888). В предпочтительной реализации PLANAR сжатое представление блоков содержит три кодовых слова цвета. Это означает, что три значения цвета определены посредством расширения каждого из кодовых слов. После этого, обеспечиваются веса цвета, назначенные элементу(ам) изображения, который(которые) нужно декодировать. Веса цвета предпочтительно являются заранее определенными весами, которые зависят от фактической позиции элемента изображения в блоках:
0
=f(x,y)
H
=f(x,y)
V
=f(x,y)
Таким образом, все блоки изображения для изображения, сжатого согласно этому режиму PLANAR, имеют предпочтительно одинаковое назначение весов цвета, так чтобы элемент изображения в, например, позиции (2, 1) в первом блоке имел бы те же самые веса цвета как элемент изображения в позиции (2, 1) во втором блоке, если эти два блока были сжаты согласно PLANAR режиму сжатия.
Представление(я) цвета, используемое(ые) для представления первоначального цвета элемента(ов) изображения, который(ые) нужно декодировать, вычисляют на основании обеспеченных весов цвета и определенных по меньшей мере двух значений цвета. В предпочтительной реализации представление цвета вычисляют как взвешенное, используя обеспеченные веса, (линейную) комбинацию определенных значений цвета. В этом контексте все значения цвета предпочтительно используются в этом вычислении, но может быть возможно использовать только их поднабор.
Наконец, iPACKMAN/ETC режим декомпрессии используется на этапе S74, если этот режим выбран на этапе S70. Декомпрессия использует определение значения цвета на основании первого кодового слова цвета или первого и второго кодовых слов цвета. Значение цвета, если элемент изображения, который нужно декодировать, присутствует в первом (2×4/4×2) субблоке, определяют на основании первого кодового слова цвета, предпочтительно, расширяя битовую последовательность кодового слова из RGB555 в RGB888. Если элемент изображения вместо этого присутствует во втором (2×4/4×2) субблоке, значение цвета определяют на основании и первого и второго кодовых слов цвета, в основном суммируя красные компоненты, зеленые компоненты и синие компоненты первого и второго кодовых слов и затем расширяя результат в RGB888 (или альтернативно сначала расширяя компоненты кодового слова и затем суммируя их). Сжатый блок содержит в этом режиме два кодовых слова интенсивности, один на субблок. Кодовое слово интенсивности, назначенное на субблок, содержащий элемент изображения, который нужно декодировать, используется, чтобы обеспечить набор множества модификаторов интенсивности. Это предпочтительно содержит обеспечение, на основании кодового слова интенсивности, набора модификаторов из таблицы, содержащей множество таких наборов модификаторов. Модификатор интенсивности для использования для элемента изображения выбирают из обеспеченного набора модификаторов на основании индекса интенсивности, назначенного элементу изображения. После этого определенное значение цвета является интенсивностью, модифицированной выбранным модификатором, чтобы сформировать представление цвета для элемента изображения, и необязательно фиксированным, в случае необходимости, между минимальным и максимальным разрешенными значениями компонента цвета.
Способ затем завершается или новый блок изображения выбирают для декомпрессии, как схематично иллюстрируется линией L5.
Примеры декомпрессии
Ниже представлены примеры декомпрессии, использующие компоновки битовых последовательностей, как иллюстрируется на фиг.14A-14D.
iPACKMAN/ETC
Сжатый блок изображения представлен следующей битовой последовательностью:
10110 010 11010 110 00100 000 101 110 1 1
10 01 11 00 01 01 10 11 10 00 11 00 01 01 00 01
Во-первых, бит 1 - бит 2, бит 6, биты 8-10, бит 13, биты 16-18, бит 21 и бит различения (diffbit) 760 исследуют, чтобы определить, какой режим декомпрессии использовать для этого блока изображения. Так как ни один из компонентов цвета не переполняется и diffbit 760 не установлен в 1, должен быть выбран заданный по умолчанию дифференциальный (разностный) режим iPACKMAN/ETC.
Во-первых, компоненты 712, 714, 716 цвета из первого кодового слова 710 цвета расширяют в RGB888, чтобы сформировать первое значение цвета:
bin
bin
Красный: 10110=>10110101=181
bin
bin
Зеленый: 11010=>11010110=214
bin
bin
Синий: 00100=>00100001=33
Дифференциальные (разностные) компоненты 722, 724, 726 второго кодового слова 720 цвета суммируют к этим компонентам, чтобы получить второе значение цвета:
bin
bin
bin
bin
Красный: 10110+010=11000=>11000110=198
bin
bin
bin
bin
Зеленый: 11010+110=100000=>10000010=130
bin
bin
bin
bin
Синий: 00100+000=00100=>00100001=33
bin
Бит переключения flipbit установлен в 1, что подразумевает, что первое значение цвета назначено восьми элементам изображения в двух самых верхних линиях блока 4x4, в то время как второе значение цвета используется для восьми элементов изображения в двух самых нижних линиях.
Два кодовых слова интенсивности 730A, 730B указывают таблицу интенсивности, иллюстрируемую Таблицей 4 ниже:
Таблица 4Таблица интенсивности
Кодовое слово интенсивности
11<sub>bin</sub>
10<sub>bin</sub>
00<sub>bin</sub>
01<sub>bin</sub>
000<sub>bin</sub>
-8
-2
2
8
001<sub>bin</sub>
-12
-4
4
12
010<sub>bin</sub>
-31
-6
6
31
011<sub>bin</sub>
-34
-12
12
34
100<sub>bin</sub>
-50
-8
8
50
101<sub>bin</sub>
-57
-19
19
57
110<sub>bin</sub>
-80
-28
28
80
111<sub>bin</sub>
-127
-42
42
127
bin
Первое кодовое слово 730A интенсивности, применимое для элементов изображения в первом 2×4 субблоке, есть 101, представляющее модификаторы интенсивности -57, -19, 19, 57. Второе кодовое слово интенсивности 730B вместо этого представляет модификаторы интенсивности -80, -28, 28, 80.
bin
Первый элемент изображения в позиции (0,0) имеет ассоциированный индекс 10 цвета и будет иметь следующее представление цвета:
(181, 214, 33)+(-19, -19, -19)=(162, 195, 14)
bin
Соответственно, представление цвета последнего элемента изображения (в позиции (3,3)) имеет индекс цвета 01 и вычисляется следующим образом:
(198, 130, 33)+(80, 80, 80)=(255, 210, 113)
После ограничения вычисленных значений компонентов цвета между минимально разрешенным значением 0 и максимальным значением 255.
Эта процедура затем продолжается для остальной части элементов изображения в блоках изображения.
H-шаблон THUMB
Этот сжатый блок изображения представлен следующей битовой последовательностью:
111 10 0 10 1101 0110 0010 0000 1011 101 1
10 01 11 00 01 01 10 11 10 00 11 00 01 01 00 01
bin
bin
В этом случае красный компонент при интерпретации битовой последовательности согласно фиг.14A, то есть iPACKMAN/ETC, первого кодового слова цвета представляет собой 11110=30, и красный компонент второго кодового слова цвета есть 010=2, подразумевая что красный компонент переполняется, так как 30+2=32>31, и должен использоваться первый вспомогательный режим, то есть H-шаблон THUMB. Битовая последовательность, представленная выше, иллюстрирует компоновку как на фиг.14B.
Первое и второе значения цвета формируют посредством расширения компонентов 712, 714, 716; 722, 724, 726 двух кодовых слов 710, 720 цвета:
bin
bin
Красный 0: 1010=>10101010=170
bin
bin
Зеленый 0: 1101=>11011101=221
bin
bin
Синий 0: 0110=>01100110=102
bin
bin
Красный 1: 0010=>00100010=34
bin
bin
Зеленый 1: 0000=>00000000=0
bin
Синий 1: 1011bin=>10111011=187
Первое значение цвета, таким образом, равно (170, 221, 102) и второе значение - (34, 0, 187).
bin
bin
bin
Кодовое слово модификатора 730 101=5 подразумевает, что число 1 должно быть сдвинуто пять раз влево, чтобы получить 100000=32. Это значение используется, чтобы модифицировать эти два значения цвета, чтобы получить четыре представления цвета:
С0:(170, 221, 102)-(32, 32, 32)=(138, 189, 70)
C1:(170, 221, 102)+(32, 32, 32)=(202, 253, 134)
C2:(34, 0, 187)-(32, 32, 32)=(2, 0, 155)
C3:(34, 0, 187)+(32, 32, 32=(66, 32, 219)
bin
bin
bin
bin
bin
Первый элемент изображения имеет индекс 10 цвета, который подразумевает, что представление C2 цвета используется для этого элемента изображения. Эта процедура продолжается для остальной части элементов изображения (индекс 00<->C0, 01<->C2, 10<->C2 и 11<->C3).
T-шаблон THUMB
Сжатый блок изображения представлен следующей битовой последовательностью:
1 0110 010 1 11 1 0 0 100 0100 0001 0111 01 1
10 01 1 1 00 01 01 10 1 1 10 00 11 00 01 01 00 01
bin
bin
В этом случае зеленый компонент переполняется, так как зеленый компонент при интерпретации битовой последовательности согласно фиг.14A, то есть iPACKMAN/ETC, первого кодового слова цвета, есть 11110=30, и зеленый компонент второго кодового слова цвета есть 010=2, подразумевая что зеленый компонент переполняется, так как 30+2=32>31. Кроме того, красный компонент не переполняется, так как бит 0 отличается от бита 1. Это означает, что второй вспомогательный режим декомпрессии в форме T-шаблона THUMB должен быть выбран, и битовая последовательность интерпретируется как имеющая вид согласно фиг.14C.
Эти два значения цвета вычисляют таким же образом как выше для Н-шаблона:
bin
bin
Красный 0: 0110=>01100110=102
bin
bin
Зеленый 0: 0101=>01010101=85
bin
bin
Синий 0: 0100=>01000100=68
bin
bin
Красный 1: 0100=>01000100=68
bin
bin
Зеленый 1: 0001=>00010001=17
bin
bin
Синий 1: 0111=>01110111=119
bin
bin
bin
bin
В этом случае модификатор цвета 730 включает в себя только два бита 01=1. Если то же самое число 1 как в H-режиме должно быть сдвинуто, только относительно маленькие значения модификатора цвета достижимы (от 0 до 8). Поэтому, в этом случае другая битовая последовательность, представляющая большее число, такое как 5 или 6, предпочтительно сдвигается. Например, число 110=6 может быть сдвинуто влево на один разряд, чтобы получить 1100=12. Два из четырех возможных представлений цвета вычисляют, используя это значение модификатора, в то время как другие два представления равны этим двум значениям цвета:
С0: (102, 85, 68)
C1: (102, 85, 68)-(12, 12, 12)=(90, 73, 56)
C2: (102, 85, 68)+(12, 12, 12)=(114, 97, 80)
C3: (68, 17, 119)
bin
Первый элемент изображения имеет индекс цвета 10, который соответствует C2. Процедура затем повторяется для остальной части элементов изображения в блоке.
PLANAR
Сжатый блок изображения представлен следующей битовой последовательностью:
1 011001 0 0 101011 0 000 00 1 010 111001 1
1001110 001011 011100 0110001 010001
bin
bin
В этом примере синий компонент при интерпретации битовой последовательности согласно фиг.14A, то есть iPACKMAN/ETC, переполняется, так как синий компонент первого кодового слова цвета есть 00000=0, и синий компонент второго кодового слова цвета есть 101=-3, подразумевая что синий компонент переполняется, так как 0-3=-3<0. Кроме того, бит 0 отличается от бита 1 (красный не переполняется) и бит 8 отличается от бита 9 (зеленый не переполняется). Как следствие, должен использоваться PLANAR.
В этом примере три значения цвета вычисляют посредством расширения компонентов 712, 714, 716; 722, 724, 726; 782, 784, 786 цвета трех кодовых слов 710, 720, 780 цвета в RGB888.
bin
bin
Ro: 011001=>01100101=101
bin
bin
G0: 0101011=>01010110=86
bin
bin
B0: 000010=>00001000=8
H
bin
bin
R: 111001=>11100111=231
H
bin
bin
G: 1001110=>10011101=157
H
bin
bin
B: 001011=>00101100 = 44
V
bin
bin
R: 011100=>01110001=113
V
bin
bin
G: 0110001=>01100010=98
V
bin
bin
B: 010001=>01000101=69
Эти значения цвета затем взвешивают и объединяют согласно Таблице 3 выше. Представление цвета для первого элемента изображения (0,0) является просто первым значением (101, 86, 8). Представление цвета для элемента изображения (1,0) есть три четвертых первого значения цвета и одна четвертая второго значения цвета, то есть -(101, 86, 8)+(231, 157, 44)=(133, 104, 17).
Эта процедура продолжается для остальной части элементов изображения, чтобы обеспечить декодированное представление блока изображения.
Аспекты реализации
Схема кодирования изображения (кодирование блока изображения) и декодирования изображения (декодирование блока изображения или обработка) согласно настоящему изобретению может быть обеспечена в обычной системе обработки данных, например, в терминале пользователя или другом модуле, сконфигурированном для обработки и/или воспроизведения (визуализации) изображений. Такой терминал может быть компьютером, например, персональным компьютером, игровым пультом или тонким клиентом, таким как персональный цифровой ассистент (PDA), мобильный блок и телефон.
Терминал пользователя
Фиг.20 иллюстрирует терминал пользователя 100, представленный мобильным устройством. Однако изобретение не ограничено мобильными устройствами, но может быть осуществлено в других терминалах и устройствах обработки данных, таких как персональные компьютеры и игровые пульты. Только средства и элементы в мобильном модуле 100 непосредственно используемые в настоящем изобретении, иллюстрируются на этом чертеже.
Мобильный модуль 100 содержит (центральный) процессор (ЦП, CPU) 200 для обработки данных, включая данные изображения, в мобильном модуле 100. Графическая система 130 обеспечивается в мобильном модуле 100 для управления изображением и графическими данными. В частности, графическая система 130 приспособлена для визуализации (воспроизведения) или отображения изображений на подсоединенном экране 120 или другом блоке отображения. Мобильный модуль 100 также содержит запоминающее устройство или память 140 для сохранения в ней данных. В этой памяти 140 данные изображения могут быть сохранены, в частности, закодированные данные изображения (закодированные блоки изображения) согласно настоящему изобретению.
Кодер 210 изображения согласно настоящему изобретению обычно обеспечивается в мобильном модуле 100. Этот кодер 210 сконфигурирован для кодирования изображения или текстуры в кодированное представление изображения (или текстуру). Как было описано выше, такое закодированное представление содержит последовательность или файл множества закодированных блоков изображения. Этот кодер 210 изображения можно обеспечивать в качестве программного обеспечения, выполняющегося на ЦП 200, как иллюстрируется на этом чертеже. Альтернативно, или дополнительно, кодер 210 может размещаться в графической системе 130 или в другом месте в мобильном модуле 100.
Закодированное представление изображения от кодера блоков 210 можно выдавать к памяти 140 по шине (памяти) 150, для сохранения там до последующей визуализации изображения. Альтернативно, или дополнительно, закодированные данные изображения могут быть направлены на блок ввода-вывода (В/В, I/O) 110 для (беспроводной или проводной) передачи на другие внешние терминалы или модули. Этот блок 110 ввода/вывода может также быть выполнен с возможностью приема данных изображения от внешнего модуля. Этими данными изображения может быть изображение, которое должно быть закодировано кодером изображения 210, или кодированными данными изображения, которые должны быть декодированы. Возможно также хранить закодированное представление изображения в выделенной памяти текстур, обеспеченной, например, в графической системе 130. Кроме того, части закодированного изображения могут быть также, или альтернативно, (временно) сохранены в кэш-памяти текстур, например в графической системе 130.
Декодер 220 изображения согласно настоящему изобретению обычно обеспечивается в мобильном модуле 100 для декодирования закодированного изображения, чтобы сформировать декодированное представление изображения. Это декодированное представление может соответствовать целому первоначальному изображению или его части. Декодер 220 изображения выдает декодированные данные изображения к графической системе 130, которая, в свою очередь, обычно обрабатывает данные прежде, чем они визуализируются или представляются на экране 120. Декодер 220 изображения может размещаться в графической системе 130, как иллюстрируется на этом чертеже. Альтернативно, или дополнительно, декодер 200 можно обеспечивать как программное обеспечение, выполняющееся на ЦП 200 или в другом месте в мобильном модуле 100.
Мобильный модуль 100 может быть оборудован и кодером изображения 210 и декодером 220 изображения, как иллюстрируется на этом чертеже. Однако некоторые терминалы 100 возможно будут включать в себя только кодер 210 изображения. В этом случае закодированные данные изображения могут быть переданы на другой терминал, который выполняет декодирование и, возможно, визуализацию изображения. Соответственно, терминал 100 может только включать в себя декодер 220 изображения, то есть не содержать кодер. Такой терминал 100 затем принимает сигнал, содержащий закодированные данные изображения, от другого объекта и декодирует его, чтобы сформировать декодированное представление изображения. Таким образом, закодированный сигнал изображения может быть передан беспроводным образом между терминалами, используя радиопередатчик и приемник. Альтернативно, могут использоваться другие способы для распределения изображений и закодированных представлений изображения между терминалами согласно изобретению, такие как Bluetooth (R), IR-методы, использующие ИК порты и проводную передачу данных изображения между терминалами. Также карточки с памятью или микросхемами, которые могут быть соединены и выполнять обмен между терминалами, могут использоваться для этого распределения данных изображения между терминалами.
Модули 110, 130, 200, 210 и 220 мобильного модуля 100 можно обеспечивать как программное обеспечение, аппаратное обеспечение или их комбинацию.
Кодер изображения
Фиг.21 иллюстрирует блок-схему варианта осуществления кодера 210 изображения согласно настоящему изобретению. Кодер 210 обычно содержит блок 215 декомпозиции изображения для декомпозиции или разделения входного изображения на несколько блоков изображения. Блок 215 декомпозиции предпочтительно сконфигурирован для декомпозиции изображения на блоки изображения, содержащие шестнадцать элементов изображения (пиксели, тексели или воксели), то есть имеющей общий размер элементов изображения 4×4. Этот блок 215 декомпозиции может быть приспособлен для декомпозиции различных входных изображений на блоки изображения с различными размерами. В этом случае блок 215 декомпозиции предпочтительно принимает входную информацию, разрешая идентификацию того, какой формат блока изображения использовать для заданного изображения.
Этот вариант осуществления кодера 210 изображения содержит один кодер 300 блоков. Этот кодер 300 блоков кодирует блок(и) изображения, принятый(ые) от блока 215 декомпозиции изображения, чтобы сформировать закодированное(ые) схематическое(ие) представление(я). Полный размер представления блока меньше, чем соответствующий размер некодированного блока изображения. Кодер 300 блоков предпочтительно сконфигурирован для обработки (кодирования) каждого блока изображения от блока 215 декомпозиции последовательно.
В альтернативной реализации кодер 210 включает в себя множество кодеров 300 блоков для обработки множества блоков изображения от блока 215 декомпозиции изображения параллельно, что уменьшает полное время кодирования изображения.
Модули 215 и 300 кодера изображения 210 можно обеспечивать как программное обеспечение, аппаратное обеспечение или их комбинацию. Модули 215 и 300 могут быть реализованы вместе в кодере 210 изображения. Альтернативно, распределенная реализация также возможна с некоторыми из модулей, обеспеченных в другом месте в мобильном модуле.
Кодер блоков
Фиг.22 иллюстрирует блок-схему варианта осуществления кодера 300 блоков согласно настоящему изобретению, например, кодера блоков в кодере изображения на фиг.21. Кодер 300 содержит блок 310 квантования цвета, который выполнен с возможностью определения первого кодового слова цвета в качестве представления первого основного цвета и для определения второго кодового слова цвета в качестве представления второго основного цвета. Кроме того, эти два представления цвета, представленные кодовыми словами, определенными блоком 310 квантования, расположены на первой линии, имеющей первое направление в цветовом пространстве. Этот блок 22 квантования цвета предпочтительно определяет два кодовых слова цвета как квантованные версии первого и второго основных цветов, например как RGB444 или RGB554 версии основного цвета RGB888.
Блок 320 квантования модификатора цвета размещается в кодере 300 блоков для обеспечения кодового слова модификатора цвета. Это обеспеченное кодовое слово модификатора цвета является представлением по меньшей мере одного модификатора цвета, применимого для модификации первого основного цвета и необязательно (в режиме H) - второго основного цвета. Такая модификация цвета реализуется посредством изменения первого основного цвета по меньшей мере одним модификатором цвета вдоль второй линии, имеющей второе направление в цветовом пространстве. Это второе направление отличается от упомянутого выше первого направления, подразумевая, что первая и вторая линии не параллельны.
В обычной реализации блок 320 квантования модификатора осуществлен для обеспечения кодового слова модификатора цвета в качестве индекса таблицы, указывающего на или ассоциированного с набором модификаторов, имеющимся в таблице 500 модификаторов, содержащей множество таких различных наборов модификаторов. Ассоциированный набор модификаторов также содержит по меньшей мере один модификатор цвета или его квантованную(ые) версию(и). В этом случае кодер 300 блоков предпочтительно содержит или по меньшей мере имеет доступ к таблице 500 модификаторов.
Кодер 300 блоков может содержать одну таблицу 500 модификаторов. Альтернативно, несколько различных таблиц могут иметь место в кодере 300, где модификаторы цвета этих таблиц приспособлены к различным типам изображения, или таблица может быть адаптирована к конкретному изображению. Например, первая таблица интенсивности может использоваться во время кодирования первого типа изображения, например фотографии, в то время как вторая таблица используется для кодирования изображения второго типа, например текста. В этом случае идентификатор таблицы предпочтительно включают в сформированное закодированное представление изображения, причем этот идентификатор допускает идентификацию таблицы 500 модификаторов, используемую для текущего изображения. В этом контексте фактически возможно включить записи таблицы (значения модификатора цвета) в сформированное закодированное представление изображения или по меньшей мере ассоциацию записей таблицы с ним. Однако, чтобы сэкономить память, одна таблица 500 модификаторов цвета, сформированная с обучающимися данными от нескольких различных типов изображения, предпочтительно используется в кодере 300.
В другой реализации блок 320 квантования модификатора обеспечивает кодовое слово модификатора цвета в качестве количества сдвигов, представляющих количество раз, когда битовая комбинация сдвигается, чтобы получить по меньшей мере один модификатор цвета.
Также предполагается настоящим изобретением, что кодовое слово модификатора, обеспеченное блоком 320 квантования модификатора цвета, может фактически представлять по меньшей мере одно значение модификатора само или его квантованную версию, так чтобы никакой процедуры поиска в таблице или сдвига битов не требовалось для определения значения(й) модификатора из кодового слова.
В этом контексте кодовое слово модификатора цвета может быть расценено как представление по меньшей мере одного расстояния для перемещения вдоль второй линии от первого основного цвета, для получения для каждого из по меньшей мере одного расстояния, одного или больше, предпочтительно двух, представлений цвета вдоль второй линии.
Кодовое слово модификатора цвета может представлять множество модификаторов цвета или одиночный модификатор. В последнем случае множество представлений цвета вдоль второй линии могут быть получены посредством определения других значений модификации из этого одиночного модификатора, такие как и отрицательной версии модификатора, или значения модификатора, умноженного на определенный коэффициент.
Кодер 300 блоков также содержит блок 330 выбора индекса для выбора индексов цвета для элементов изображения в блоке, который должен быть сжат кодером 300 блоков. Этот блок 330 выбора выбирает для элемента изображения индекс цвета, ассоциированный с или допускающий идентификацию представления цвета, выбираемого из i) множества представлений цвета вдоль второй линии (получаемой посредством цвета, модифицирующего первый основной цвет по меньшей мере одним модификатором цвета) и ii) по меньшей мере одного представления цвета, которое основано на втором основном цвете (такой как сам второй основной цвет или представление(я) цвета, получаемого посредством цвета, модифицирующего второй основной цвет по третьей линии в цветовом пространстве).
Операция выбора блока 330 выбора индекса предпочтительно выполняется для всех элементов изображения в блоке изображения, подразумевая, что каждому элементу изображения должен быть назначен индекс цвета.
Модули 310, 320, 330 и 500 из кодера 300 блоков можно обеспечивать как программное обеспечение, аппаратное обеспечение или их комбинация. Модули 310, 320, 330 и 500 могут быть осуществлены вместе в кодере 300 блоков. Альтернативно, распределенная реализация также возможна с некоторыми из модулей, обеспеченных в другом месте в кодере изображения.
В предпочтительной реализации кодер 300 блоков может использоваться согласно множеству различных режимов сжатия, таких как упомянутые выше режимы H и T. Это схематично иллюстрируется вариантом осуществления кодера 300 блоков согласно фиг.23.
В первой многорежимной реализации работа блока 310 квантования цвета аналогична той, что была описана со ссылками на фиг.22, то есть она определяет два кодовых слова цвета. В режиме работы T по меньшей мере один модификатор цвета, представленный кодовым словом модификатора, обеспеченным блоком 320 квантования модификатора, используется для модификации первого основного цвета вдоль второй линии для получения по меньшей мере двух представлений цвета по этой линии. Блок 330 выбора индекса затем разрешает выбор индекса цвета, ассоциированного с i) этими по меньшей мере двумя представлениями цвета вдоль второй линии, ii) предпочтительно первым основным цветом, предпочтительно также расположенным на второй линии, и iii) вторым основным цветом.
Однако в режиме H блок 320 квантования модификатора приспособлен для обеспечения кодового слова модификатора цвета в качестве представления i) по меньшей мере одного модификатора, применимого для модификации первого основного цвета вдоль второй линии, чтобы получить первый набор множества представлений цвета. Кодовое слово далее является представлением ii) по меньшей мере одного модификатора, применимого для модификации второго основного цвета по третьей линии, чтобы получить второй набор множества модификаторов цвета по этой третьей линии. Третья линия отличается от второй линии, но может иметь то же самое направление в цветовом пространстве, что и вторая линия. Кроме того, направление третьей линии является отличающимся от направления вышеупомянутой первой линии. Блок 330 выбора индекса будет выбирать представление цвета из i) первого набора или ii) второго набора. В этом варианте осуществления одинаковые или различные модификаторы цвета могут быть представлены в кодовом слове модификатора для модификации первого и второго основных цветов.
Блок 350 выбора режимов затем реализуется для выбора - какой из кандидатов представления должен использоваться в качестве сжатого представления для блока изображения. Этот выбор предпочтительно выполняется на основании сравнения оценок ошибки, одна такая оценка на режим сжатия. Кодер 300 блоков поэтому предпочтительно содержит блок 340 оценки функции ошибки для оценки значения ошибки, указывающего представление блока изображения с кандидатом блока, сжатым в режиме T, и значения ошибки для представления блока со сжатым блоком в режиме H. Сжатый блок-кандидат, который приводит к самой маленькой ошибке, предпочтительно выбирается блоком 350 выбора режимов. Администратор 360 индекса режима затем компилирует индекс режима, представляющий режим сжатия, приводящий к самой маленькой ошибке, то есть режиму, используемому при формировании кандидата, выбираемого блоком 350 выбора режимов. Этот индекс режима составляет часть сжатого блока изображения.
Этот вариант осуществления кодера блоков может также использоваться согласно другой многорежимной реализации, в которой режимы H и T согласно настоящему изобретению дополнены режимами iPACKMAN/ETC и PLANAR сжатия.
В режиме iPACKMAN/ETC сжатия блок 310 квантования цвета используется для определения первого кодового слова цвета, которое является представлением первого значения цвета, и для определения второго кодового слова цвета в качестве представления дифференциального (разностного) цвета, который может быть добавлен к первому значению цвета, чтобы получить второе значение цвета. Блок 330 квантования модификатора используется в этом режиме для определения по меньшей мере одного, предпочтительно двух, кодовых слов интенсивности в качестве представления по меньшей мере одного набора из множества модификаторов интенсивности, используемых для модификации первого или второго значения цвета, чтобы получить представления цвета. Кодовые слова интенсивности предпочтительно являются индексами таблицы в таблице 500 модификаторов, содержащей множество таких наборов модификаторов. Блок 330 выбора индекса обеспечивается в кодере 300 блоков для определения, для каждого элемента изображения в блоке, индекса интенсивности, ассоциированного с одним из модификаторов интенсивности в наборе(ах) модификаторов, представленном кодовым(ыми) словом(ами) интенсивности.
В режиме PLANAR блок 370 назначения веса назначает веса цвета по меньшей мере одному поднабору элементов изображения в блоке изображения, который должен быть сжат. В предпочтительной реализации блок 370 назначения веса назначает N весов цвета на каждый элемент изображения в блоке, где N - кратное число, которое равно количеству кодовых слов цвета, которые блок 310 квантования цвета определяет для блока изображения. В другом предпочтительном варианте осуществления блок 370 назначения назначает веса цвета элементам изображения в блоке так, чтобы значения компонентов цвета по меньшей мере одного цветного компонента из представлений цвета, используемых для представления первоначальных цветов элементов изображения, изменялись монотонно по строке или/и столбцу элементов изображения в блоке. Назначение веса, выполненное блоком 370 назначения из кодера 300 блоков, на элементы изображения в блоке, предпочтительно проводится на основании позиции элементов изображения, то есть относительных координат элементов изображения в блоке.
Блок 310 квантования цвета из кодера 300 блоков в этом режиме выполнен с возможностью определения, по меньшей мере частично, на основании весов цветов, назначенных блоком 370 назначения, по меньшей мере двух кодовых слова цвета для блока изображения. В предпочтительной реализации блок 320 квантования цвета определяет три кодовых слова цвета, предпочтительно три кодовые слова RGB676.
Блок 340 оценки функции ошибки затем обеспечивается для вычисления значений ошибки также для iPACKMAN/ETC и PLANAR кандидатов сжатых блоков так, чтобы блок 350 выбора режимов принял четыре входных значения ошибки и выполнил сделанный выбор на основании этих значений ошибки.
Модули 310-370 и 500 кодера 300 блоков можно обеспечивать как программное обеспечение, аппаратное обеспечение или их комбинацию. Модули 310-370 и 500 могут быть осуществлены вместе в кодере 300 блоков. Альтернативно, распределенная реализация также возможна с некоторыми из модулей, обеспеченных в другом месте в кодере изображения.
Декодер изображения
Фиг.24 иллюстрирует блок-схему варианта осуществления декодера 220 изображения согласно настоящему изобретению. Декодер 220 изображения предпочтительно содержит блок выбора 222 блоков, который приспособлен для выбора, например из памяти, какой(ие) кодированный(ые) блок(и) изображения нужно выдать к декодеру 400 блоков для декодирования. Блок выбора 222 блоков предпочтительно принимает входную информацию, ассоциированную с закодированными данными изображения, например из заголовка или механизма визуализации. Адрес закодированного блока изображения, имеющего желательный(ые) элемент(ы) изображения, затем вычисляют на основании входной информации. Этот вычисленный адрес является предпочтительно зависимым от координат элемента изображения (пикселя, текстеля или вокселя) в пределах изображения. Используя этот адрес, блок выбора 222 блоков идентифицирует закодированный блок изображения из памяти. Этот идентифицированный закодированный блок изображения затем выбирают из памяти и подают к декодеру 400 блока.
(Случайный) доступ к элементам изображения блока изображения выгодно разрешает избирательное декодирование только тех частей изображения, которые необходимы. Кроме того, изображение может быть декодировано в любом требуемом порядке данных. Например, в отображении текстуры только части текстуры могут требоваться, и эти части будут обычно требоваться в не последовательном порядке. Таким образом, декодирование изображения согласно настоящему изобретению может быть выгодно применено к обработке только части или секции изображения. Выбранный закодированный блок изображения затем направляют к декодеру 400 блоков. В дополнение к блоку изображения декодер 400 предпочтительно принимает информацию, определяющую элементы изображения блока, который должен быть декодирован. Информация может определить, что целый блок изображения, то есть все элементы изображения, должен быть декодирован. Однако принятая информация может идентифицировать только одну или несколько из элементов изображения, которые должны быть декодированы. Декодер 400 блоков затем генерирует декодированное представление элемента(ов) изображения в блоке. Это декодированное представление имеет предпочтительно P-битный цвет, где P - количество битов на элемент изображения в первоначальном изображении, например 24-битный цвет RGB.
Необязательный блок 224 компоновки изображения может быть обеспечен в декодере 220 изображения. Этот блок компоновки принимает декодированные элементы изображения от декодера 400 блоков и компонует их так, чтобы сформировать пиксель, который может быть визуализирован или отображен на экране. Этот блок 224 компоновки изображения может быть альтернативно обеспечен в графической системе.
Альтернативно, декодер 220 изображения содержит множество декодеров 400 блоков. При наличии доступа к множеству декодеров 400 блоков декодер 220 изображения может обрабатывать (декодировать) множество кодированных блоков изображения параллельно. Эти множество декодеров 400 блоков обеспечивают параллельную обработку, которая увеличивает производительность и эффективность декодера 220 изображения.
Модули 222, 224 и 400 декодера 220 изображения можно обеспечивать как программное обеспечение, аппаратное обеспечение или их комбинацию. Модули 222, 224 и 400 могут быть реализованы вместе в декодере 220 изображения. Альтернативно, распределенная реализация также возможна с некоторыми из модулей, обеспеченных в другом месте в терминале пользователя.
Декодер блоков
Фиг.25 является иллюстрацией варианта осуществления декодера 400 блоков согласно настоящему изобретению. Декодер 400 блоков содержит формирователь 410 цвета, приспособленный для формирования первого цвета, оцененного на основании первого кодового слова цвета, во входной последовательности сжатых блоков и для формирования второго значения цвета на основании второго кодового слова. Эта генерация цвета предпочтительно выполняется посредством расширения или удлинения квантованных кодовых слов в значения основного цвета RGB888. Два основных цвета расположены на первой линии, имеющей первое направление в цветовом пространстве.
В первом варианте осуществления формирователь 410 цвета только генерирует первый или второй основной цвет в зависимости от того элемента изображения в блоке, который должен быть декодирован. В этом случае формирователь 410 цвета или некоторый другой модуль в декодере 400 блоков выполняет этот выбор на основании индекса цвета, назначенного на этот элемент изображения. Однако во многих случаях множество элементов изображения должны быть декодированы из одного и того же сжатого блока изображения, подразумевая, что это должен быть более эффективный процесс формирования обоих основных цветов вместо реализации выбора в расчете на элемент изображения.
Модификатор 420 основного цвета осуществлен в декодере 400 блоков для обеспечения по меньшей мере одного модификатора цвета на основании кодового слова модификатора цвета. Модификатор 420 цвета затем формирует множество представлений цвета вдоль второй линии, имеющей второе направление в цветовом пространстве, посредством модификации первого основного цвета по меньшей мере одним модификатором цвета. Кроме того, это второе направление отличается от первого направления.
Действие модификации цвета модификатора 420 может быть в форме добавления (суммирования) значения модификатора цвета с каждым компонентом цвета значения первого основного цвета (полагая второе направление равным направлению яркости v=[1, 1, 1]). Если второе направление отлично от направления яркости, это по меньшей мере одно значение модификатора может быть расценено как по меньшей мере одно расстояние. В этом случае модификатор 420 цвета формирует представление цвета посредством перехода на расстояние, определенное кодовым словом модификатора цвета вдоль второй линии, вдоль первого основного цвета.
Если кодовое слово модификатора цвета находится в форме индекса таблицы модификаторов, модификатор 420 цвета предпочтительно использует кодовое слово в таблице 500 просмотра, чтобы извлечь набор, содержащий по меньшей мере один модификатор цвета, из таблицы 500 модификаторов, реализованной в декодере 400 блоков или по меньшей мере доступной для модификатора 420 основного цвета. Если кодовое слово вместо этого находится в форме количества сдвигов, модификатор 420 цвета сдвигает определенную комбинацию битов несколько раз, соответствующее этому количеству, чтобы получить значение модификатора цвета. Другие такие значения модификатора могут быть затем получены из него, как различные разложенные на множители или взвешенные версии значения модификатора.
То же самое описание, приведенное выше для кодеров блоков, касающееся использования одной или множества различных таблиц 500 модификаторов цвета, применяется с соответствующими изменениями к декодеру 400 блоков.
В первом варианте осуществления (режим T) модификатор 420 цвета предпочтительно модифицирует первый основной цвет вдоль второй линии, чтобы получить множество представлений цвета по этой линии. В другом варианте осуществления (режим H), в дополнение к этой модификации цвета первого основного цвета, модификатор 420 цвета также изменяет второй основной цвет по третьей линии по меньшей мере одним значением модификатора цвета, чтобы получить множество представлений цвета на третьей линии.
Блок 430 выбора цвета декодера 400 блоков обеспечивается для выбора, для по меньшей мере одного элемента изображения в блоке и на основании последовательности индексов цвета, представления цвета из i) множества представлений цвета вдоль второй линии и ii) по меньшей мере одного представления цвета на основании второго основного цвета.
Согласно режиму T блок 430 выбора цвета выполняет выбор среди i) множества представлений цвета, определенных модификатором 420 цвета вдоль второй линии, ii) предпочтительно первого основного цвета и iii) второго основного цвета. В режиме H блок 430 выбора выполнен с возможностью выбора среди i) множества представлений цвета вдоль второй линии и ii) множества представлений цвета вдоль третьей линии.
Декодер 400 блоков может работать согласно множеству режимов декомпрессии. Например, входные сжатые блоки могут быть сжаты согласно режимам H или T. В этом случае блок 440 выбора режимов предпочтительно размещается в декодере 400 блоков для определения того, какой режим декомпрессии использовать для текущего блока на основании индекса режима или шаблона, содержащегося в сжатом блоке. Блок 400 выбора режимов может затем сформировать сигнал режима, который подается к другим модулям в декодере 400 блоков для воздействия на операцию. Этот сигнал режима в частности подается на блок 430 выбора цвета для информирования блока 430 выбора - какие представления цвета доступны для текущего блока.
В дополнение к режимам H и T, декодер 400 блоков может предпочтительно также использоваться согласно режимам PLANAR и iPACKMAN/ETC.
Если блок 440 выбора режимов выбирает режим декомпрессии iPACKMAN/ETC, формирователь 410 цвета определяет значение цвета на основании первого кодового слова цвета или на основании первого и второго кодовых слов цвета (в зависимости от фактической позиции элемента изображения в блоке). В первом случае цвета компонента блока квантования просто расширяют предпочтительно в RGB888. В последнем случае дифференциальные (разностные) компоненты второго кодового слова суммируют с компонентами цвета от первого кодового слова, и сумму расширяют, например, до RGB888, для определения значения цвета. Модификатор 420 цвета используется в этом режиме для обеспечения, на основании одного из по меньшей мере одного из: кодовых слов интенсивности, набора множества модификаторов интенсивности, предпочтительно из таблицы 500 модификаторов. Блок 430 выбора цвета выбирает, используя индекс интенсивности, ассоциированный с текущим элементом изображения, один из модификаторов интенсивности из обеспеченного набора. Модификатор 420 цвета затем использует этот выбранный модификатор интенсивности для модификации интенсивности значения цвета, чтобы вычислить представление цвета для элемента изображения.
Если вместо этого блок 440 выбора режимов выбирает режим PLANAR на основании индекса режима, формирователь 410 цвета генерирует по меньшей мере два значения цвета на основании по меньшей мере двух кодовых слов цвета в сжатом представлении блоков. Этот формирователь 410 цвета предпочтительно сконфигурирован для расширения или удлинения квантованных компонентов цвета кодовых слов цвета в, предпочтительно, RGB888. Администратор 450 веса размещается в декодере 400 блоков для обеспечения, для каждого элемента изображения, который должен быть декодирован, весов цвета, назначенных на элемент(ы) изображения. В предпочтительной реализации соответствующие элементы изображения в заданной позиции в различных блоках изображения имеют одинаковые назначенные веса цвета. Таким образом, веса цвета зависят от координат или позиций элементов изображения в блоке, но не изменяются для различных блоков, сжатых согласно настоящему изобретению. Администратор 450 веса поэтому предпочтительно обеспечивает веса цвета на основании позиций/ координат элементов изображения в блоке изображения.
Модификатор 420 цвета использует обеспеченные веса цвета и сформированные значения цвета для определения представления цвета для использования в качестве аппроксимации первоначального цвета элемента изображения. Модификатор 420 предпочтительно реализуется для объединения значений цвета от формирователя 410, но взвешенных весами цвета от администратора 450 веса.
Модули 410, 420, 430, 440, 450 и 500 декодера 400 блоков можно обеспечивать как программное обеспечение, аппаратное обеспечение или их комбинацию. Модули 410, 420, 430, 440, 450 и 500 могут быть реализованы вместе в декодере 400 блоков. Альтернативно, распределенная реализация также возможна с некоторыми из модулей, обеспеченных в другом месте в декодере изображения.
Реализация аппаратного обеспечения
Фиг.26 схематично иллюстрирует возможную реализацию аппаратного обеспечения декодера 400 блоков согласно настоящему изобретению, которое может использоваться согласно режимам H или T. Входным для декодера 400 блоков является закодированное представление 700 блоков, содержащее 14-битовое первое кодовое слово 710 цвета (5 битов для каждого из красного и зеленого компонентов и 4 бита для синего компонента), 14-битовое второе кодовое слово цвета, 3-битовое кодовое слово модификатора 730 цвета, 1-битовый индекс 750 режима и 32-битовую последовательность индексов 740 цвета.
Кодовые слова цвета подаются на формирователь 410 цвета, который реализован шестью расширителями битов 411-416. Первый расширитель 411 битов принимает красный компонент первого кодового слова цвета, второй 412 и третий 413 расширители принимают зеленые и синие компоненты первого кодового слова, соответственно. Эти три расширителя 411-413 все вместе формируют первый основной цвет. Оставшиеся три расширителя битов 414-416 обрабатывают компоненты цвета второго кодового слова, чтобы сформировать второй основной цвет. Выходной сигнал соответствующего расширителя 411-416 является 8-битовым компонентом цвета. Расширители 411, 412, 414, 415 битов "пять в восемь" могут быть осуществлены, используя копию этих трех старших значащих битов в 5-битовом цветовом компоненте в качестве трех наименьших значащих бита результирующего 8-битового компонента цвета. Расширители 413, 416 битов "четыре в восемь" просто повторяют 4-битовый шаблон компонента цвета, чтобы получить 8-битовый выходной компонент.
Таблица 425 просмотра представляет таблицу 500 модификаторов цвета декодера блоков. При использовании входного кодового слова модификатора цвета таблица 425 просмотра выбирает корректное значение модификатора цвета из одного из наборов модификаторов в таблице, в этом случае выбирают одиночное значение модификатора. Это значение модификатора подается на средство 427 отрицания модификатора 420 цвета. Неинвертированное значение модификатора цвета подается на два сумматора 421, 426. Первый сумматор 421 суммирует входное значение модификатора с первым основным цветом, который выводится из первых трех расширителей 411-413 битов. Это суммирование предпочтительно выполняется посредством суммирования значения модификатора к каждому компоненту цвета первого основного цвета, чтобы сформировать первое представление цвета вдоль второй линии. Выходной сигнал сумматора затем подают на фиксатор 423. Этот фиксатор 423 фиксирует компоненты цвета первого представления цвета, в случае необходимости, между 0 и 255.
Второе представление цвета вдоль второй линии получают от второго сумматора 422, который принимает первый основной цвет и инвертированное значение модификатора цвета в качестве входных данных. Инвертированное значение модификатора добавляют (суммируют) к трем компонентам первого основного цвета, чтобы сформировать второе представление цвета, которое выводится на второй фиксатор 424.
Два других сумматора 426, 428 принимают второй основной цвет от расширителей 414-416 битов и значение модификатора или инвертированные значения модификатора. Выходные данные этих двух сумматоров 426, 428 представляют третье и четвертое представление цвета, расположенное на третьей линии в цветовом пространстве. Эти цветовые значения представления аналогично фиксируются между 0 и 255 соответствующим фиксатором 429A, 429B.
bin
Блок 400 выбора режимов реализован в этой иллюстративной реализации аппаратного обеспечения в виде двух мультиплексоров 442, 440. Первый мультиплексор 442 принимает первый основной цвет от расширителей 411-413 битов и третье представление цвета от фиксатора 429A. Мультиплексор 442 использует индекс 450 режима сжатого блока, чтобы сделать выбор между этими двумя значениями цвета. Если индекс режима указывает режим T (0), мультиплексор 442 выдает первый основной цвет, иначе, в режиме H, он выдает третье представление цвета.
Второй мультиплексор 444 принимает второй основной цвет от расширителей 414-416 и четвертое представление цвета в качестве входных данных. Если индекс режима указывает режим T, мультиплексор 444 выдает второй основной цвет. Согласно режиму H вместо этого выдается четвертое представление цвета.
Первое и второе представления цвета вдоль второй линии в выходном сигнале цветового пространства формируют фиксаторы 423, 424, направляют вместе с выходными данными мультиплексора из мультиплексоров 442, 444 на мультиплексор 434, образующий часть блока 430 выбора цвета в кодере блоков. Мультиплексор 434 выбирает, какой из этих четырех входных значений цвета использовать в качестве аппроксимации/представления первоначального цвета элемента изображения. При этом выборе мультиплексор 434 принимает сигнал выбора от второго мультиплексора 432 из блока 430 выбора цвета. Четырехбитовый адресный индекс подают на вход на этот второй мультиплексор 432. На основании индекса адреса мультиплексор 432 выбирает, какой из шестнадцати элементов изображения декодировать. Двухбитный индекс цвета, ассоциированный с выбранным элементом изображения, затем направляют первому мультиплексору 434 и используют мультиплексором 434 для идентификации корректного значения цвета для этого элемента изображения.
Аппаратное решение для кодера 400 блока на фиг.27 является очень простым, несмотря на разрешение двухрежимной операции. Это может быть реализовано относительно небольшим количеством известных типовых элементов.
Экспериментальные результаты
Эксперименты проводились с целью сравнения качества изображения различных схем сжатия. Реализацию с двумя режимами настоящего изобретения (обозначенная THUMB) и объединенное решение THUMB - iPACKMAN/ETC сравнивали с iPACKMAN и S3TC. Чтобы максимизировать качество изображения, использовался самый медленный режим сжатия iPACKMAN [3, 4]. THUMB кодируют с радиусным сжатием, используя второй уровень радиуса. Это также имеет место для THUMB-режимов в объединенном решении. S3TC кодируют, используя пакет программ Compressonator от ATI. Режим DirectX использовался при этом сравнении, устанавливая веса равными (1, 1, 1) для самого низкого количества ошибок.
Результаты представлены как отношение максимального сигнала к шуму (PSNR).
Результаты сравнения между различными схемами приведены в Таблице 5. Может быть замечено, что объединенное решение превосходит по быстродействию S3TC более чем на 0,5 дБ. Использование THUMB в отдельности почти на 1 дБ хуже, чем использование объединенного решения. Одинаковое количество для iPACKMAN/ETC - только 0.21 дБ. Вообще в кодировании изображения разность ниже 0.25 дБ трудно заметить.
Таблица 5PSNR различных схем
Kodakизобр.1
Kodak изобр.2
Kodak изобр.3
Kodak изобр.4
Kodak изобр.5
Lena
Lorikeet
Среднееусиление
S3TC
34,78
36,86
38,53
37,96
32,80
35,97
34,37
+0,61
iPACKMAN
36,29
38,09
38,62
38,59
34,12
35,17
33,25
+0,21
THUMB
34,80
36,86
37,88
37,34
32,97
35,31
33,69
+0,96
Комбинир.
36,26
38,12
38,92
38,66
34,08
35,66
33,99
-
Самая правая колонка показывает среднее усиление в дБ при сравнении различных схем сжатия с объединенным решением iPACKMAN-THUMB.
Одна конкретная задача настоящего изобретения состоит в том, чтобы обеспечить схему обработки изображения, которая может обрабатывать конкретные блоки, которые являются наиболее проблематичными для iPACKMAN/ETC. Эта цель хорошо достигается, как видно из фиг.27. На этом чертеже иллюстрируются три примера типовых проблемных блоков. Сверху: в этом примере, который показывает дорогу, может быть замечена основная проблема iPACKMAN/ETC. Блоки изображения, содержащие два отличных оттенка, не кодируются оптимально. В середине: имеется пример мощи iPACMAN/ETC. Малые переходы в яркости кодируются хорошо, как можно видеть вокруг глаза и на щеке. Схемы THUMB и S3TC имеют большую степень проявления блочности. Большой артефакт изображения может также быть замечен на ухе для S3TC. Так как объединенное решение наследует силу iPACKMAN/ЕТС, эти блоки кодируются хорошо. Внизу: этот последний пример является разрезом взрыва. Здесь S3TC работает лучше всего благодаря его линейной интерполяции между основными цветами. Поскольку блоки содержат больше чем один оттенок, результат имеет тенденцию быть блочным для iPACKMAN. THUMB и объединенное решение кодируют изображение лучше даже при том, что могут быть замечены некоторые грани.
Специалисту должно быть понятно, что различные модификации и изменения могут быть сделаны в настоящем изобретении без отклонения от его сущности и объема, которые определены прилагаемой формулой изобретения.
Ссылки
1. Патент США US 5956431.
2. Международная Патентная заявка WO 2005/059836.
3. Международная Патентная заявка WO 2006/006915.
4. Strom, Akenine-M[omicron]ller: iPACKMAN high-quality, low complexity texture compression for mobile phones, Graphics Hardware 05, Los Angeles, USA, June 2005.
5. Y. Linde, A. Buzo and R. Gray, "An algorithm for vector quantizer design", IEEE Transactions on Communications, Vol. 28, p. 84-94, January, 1980.
6. Международная Патентная заявка № PCT/SE2006/000613.