СПОСОБ СЖАТИЯ ЦИФРОВЫХ ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ ФИКСИРОВАННОГО ЧИСЛА БИТОВ В БЛОКЕ
METHOD OF COMPRESSING DIGITAL IMAGES USING FIXED NUMBER OF BITS PER BLOCK

Область техники, к которой относится изобретение
Настоящее изобретение относится к области обработки изображений. Более конкретно, настоящее изобретение относится к сжатию изображений с использованием фиксированного числа битов в блоке.
Уровень техники
Известные системы сжатия изображений имеют ряд недостатков. Они не позволяют использовать визуальное маскирование и другие свойства зрительной системы человека (HVS), которые пространственно изменяются в зависимости от содержания изображения. Одна причина заключается в том, что параметры квантования, используемые этими алгоритмами, являются обычно относительно постоянными по всему изображению. В результате изображения нельзя сжимать эффективно. К тому же для достижения целевой скорости передачи битов или визуального качества при использовании этого способа изображение необходимо сжимать много раз.
Раскрытие изобретения
Описан способ сжатия цифровых изображений с использованием фиксированного числа битов в блоке.
Для сжатия цифровых изображений используется интракодирование. Изображение разбивается на блоки с одинаковым размером. Кодер вырабатывает фиксированное и заданное число битов для каждого блока. Процесс кодирования включает в себя гамма-преобразование, которое применяется к входному изображению для выработки данных. Дополнительные этапы включают в себя предсказание, квантование, дифференциальную импульсно-кодовую модуляцию (ДИКМ), энтропийное кодирование и уточнение.
Согласно одному аспекту, способ сжатия изображений, запрограммированный в контроллере, расположенном в устройстве, содержит этапы, на которых разбивают изображение на один или более блоков и кодируют один или более блоков, при этом число битов в каждом из одного или более блоков является фиксированным. Способ дополнительно содержит этап применения гамма-преобразования для выработки 10-битовых данных. Способ дополнительно содержит этап вычисления значений предсказания для каждого пикселя в текущем блоке из одного или более блоков с использованием одного или более режимов предсказания. Режимы предсказания включают в себя, по меньшей мере, один из режимов предсказания: общий, DC, вправо-вверх, вправо-вверх-вверх, вверх, влево-вверх-вверх, влево-вверх, влево-влево-вверх и влево. Способ дополнительно содержит этап применения квантования. Способ дополнительно содержит этап вычисления дифференциальной импульсно-кодовой модуляции для выработки остатков квантованных значений. Способ дополнительно содержит этап выполнения энтропийного кодирования для выработки кода переменной длины для каждого остатка квантованного значения. Выполнение энтропийного кодирования разделяется на две части: вычисление значения/длины кода и выработка битового потока, но с одним этапом уточнения и одной выработкой битового потока. Способ дополнительно содержит этап выполнения уточнения. Выполнение уточнения включает в себя отдельный этап уточнения для каждого квантования. Выполнение уточнения включает в себя один этап уточнения. Способ дополнительно содержит этап вычисления импульсно-кодовой модуляции, включающей в себя сдвиг каждого значения пикселя на фиксированное число битов. Способ дополнительно содержит этап выработки битового потока. Этап выработки битового потока включает в себя выбор способа кодирования дифференциальной импульсно-кодовой модуляции или импульсно-кодовой модуляции. Контроллер выбирается из группы, состоящей из программируемого машиночитаемого носителя и схемы, зависящей от типа приложения. Устройство выбирается из группы, состоящей из персонального компьютера, портативного персонального компьютера типа "лаптоп" (laptop), автоматизированного рабочего места, сервера, универсальной вычислительной машины, карманного компьютера, персонального цифрового помощника, сотового/мобильного телефона, интеллектуального бытового прибора, игровой приставки, цифрового фотоаппарата, цифровой видеокамеры, мобильного телефона со встроенной видеокамерой, айфона (iPhone), айпода (iPod), видеопроигрывателя, DVD-устройства записи/воспроизведения, телевизора и домашней развлекательной системы.
Согласно другому аспекту, система для сжатия изображений, программируемая в контроллере, расположенном в устройстве, содержит модуль разбиения для разбиения изображения на один или более блоков и модуль кодирования для кодирования одного или более блоков, причем число битов в каждом из одного или более блоков является фиксированным. Система содержит вычислительный модуль для вычисления значений предсказания для каждого пикселя в текущем блоке из одного или более блоков с использованием одного или более режимов предсказания. Режимы предсказания включают в себя, по меньшей мере, один из режимов предсказания: общий, DC, вправо-вверх, вправо-вверх-вверх, вверх, влево-вверх-вверх, влево-вверх, влево-влево-вверх и влево.
Согласно другому аспекту, системы для сжатия изображений, программируемые в контроллере, расположенном в устройстве, содержат гамма-модуль для применения гамма-преобразования для выработки 10-битовых данных, модуль предсказания для вычисления значений предсказания для каждого пикселя в текущем блоке из одного или более блоков с использованием одного или более режимов предсказания, модуль квантования для применения квантования, модуль ДИКМ для вычисления дифференциальной импульсно-кодовой модуляции для выработки остатков квантованных значений, модуль уточнения для выполнения уточнения, модуль ИКМ для вычисления импульсно-кодовой модуляции, включающей в себя сдвиг каждого значения пикселя на фиксированное число битов, и модуль битового потока для выработки битового потока, при этом выработка битового потока включает в себя выбор способа кодирования дифференциальной импульсно-кодовой модуляции или импульсно-кодовой модуляции. Режимы предсказания включают в себя, по меньшей мере, один из режимов предсказания:
общий, DC, вправо-вверх, вправо-вверх-вверх, вверх, влево-вверх-вверх, влево-вверх, влево-влево-вверх и влево. Контроллер выбран из группы, состоящей из программируемого машиночитаемого носителя и схемы, зависящей от типа приложений. Устройство выбрано из группы, состоящей из персонального компьютера, портативного персонального компьютера типа "лаптоп" (laptop), автоматизированного рабочего места, сервера, универсальной вычислительной машины, карманного компьютера, персонального цифрового помощника, сотового/мобильного телефона, интеллектуального бытового прибора, игровой приставки, цифрового фотоаппарата, цифровой видеокамеры, мобильного телефона со встроенной видеокамерой, айфона (iPhone), айпода (iPod), видеопроигрывателя, DVD-устройства записи/воспроизведения, телевизора и системы домашнего развлечения.
Согласно еще одному аспекту, съемочное устройство содержит компонент получения видео для получения видео, память для хранения приложения, причем приложение предназначено для разбиения изображения на один или более блоков и кодирования одного или более блоков, при этом число битов в каждом одном или более блоках является фиксированным, и компонент обработки, связанный с памятью, причем компонент обработки выполнен с возможностью обработки приложения. Приложение дополнительно предназначено для вычисления значений предсказания для каждого пикселя в текущем блоке из одного или более блоков с использованием одного или более режимов предсказания. Режимы предсказания включают в себя, по меньшей мере, один из режимов предсказания: общий, DC, вправо-вверх, вправо-вверх-вверх, вверх, влево-вверх-вверх, влево-вверх, влево-влево-вверх и влево.
Краткое описание чертежей
Фиг.1 изображает семь возможных режимов предсказания, связанных с различными возможными направлениями в изображении, согласно некоторым вариантам осуществления.
Фиг.2 изображает пример вычисления VLC, согласно некоторым вариантам осуществления.
Фиг.3 изображает пример таблицы энтропийного кодирования, согласно некоторым вариантам осуществления
Фиг.4 изображает пример использования оставшихся битов для уточнения, согласно некоторым вариантам осуществления.
Фиг.5 изображает пример кодирования на основе ДИКМ и значения восстановления, согласно некоторым вариантам осуществления.
Фиг.6 изображает кодер и декодер, согласно некоторым вариантам осуществления.
Фиг.7 изображает ячейки и их значения восстановления для случаев e=0, 1, 2, 3, 4 и 5, согласно некоторым вариантам осуществления.
Фиг.8 изображает структуру битового потока для режимов ДИКМ, согласно некоторым вариантам осуществления.
Фиг.9 изображает порядок передачи битов для способа ИКМ для случая ширины блока равной 16 и значения битов в секунду равного 4, согласно некоторым вариантам осуществления.
Фиг.10 изображает восстановление блока для способа ИКМ, согласно некоторым вариантам осуществления.
Фиг.11 изображает структуру битового потока для режима ИКМ, согласно некоторым вариантам осуществления.
Фиг.12 изображает структуру кодера с многочисленными этапами уточнения, согласно некоторым вариантам осуществления.
Фиг.13 изображает структуру кодера с одной этапом уточнения, согласно некоторым вариантам осуществления.
Фиг.14 изображает кодер, в котором энтропийное кодирование разделено на две. части: вычисление значения/длины кода и выработка битового потока, согласно некоторым вариантам осуществления.
Фиг.15 изображает кодер, в котором вычисление значения и длины кода отделено от выработки битового потока, но с одним этапом уточнения и одной выработкой битового потока, согласно некоторым вариантам осуществления.
Фиг.16 изображает алгоритм способа сжатия с использованием фиксированного числа битов в блоке, согласно некоторым вариантам осуществления.
Фиг.17 изображает блок-схему примерного вычислительного устройства, выполненного с возможностью осуществления способа сжатия изображений с использованием фиксированного числа битов в блоке, согласно некоторым вариантам вычисления.
Осуществление изобретения
Ниже описан способ интракодирования цифровых изображений. Для интракодирования изображение разбивается на вертикальные полосы. Каждая линия каждой вертикальной полосы разбивается на маленькие линейные сегменты, которые называются блоками. Каждая полоса является декодируемой без потребности в информации относительно любых других полос. В некоторых вариантах осуществления все блоки имеют одинаковый размер. Кодер вырабатывают фиксированное и заданное число битов для каждого блока. Если кодек реализован в аппаратных средствах, то он имеет очень низкую сложность исходя из числа логических вентилей, необходимых для реализации. Кодек позволяет обеспечить сжатие без визуальных потерь для определенных скоростей передачи битов и для определенных приложений.
В некоторых вариантах осуществления первым этапом процесса кодирования является гамма-преобразование. Например, кодек использует 10-битовые гамма-преобразование. Гамма-преобразование применяется к пикселям входного изображения для выработки 10-битовых данных. Результат гамма-преобразования называется "первоначальными значениями пикселей". Значение 10 является примером и также возможны другие значения.
В некоторых вариантах осуществления аспекты кодирования и/или декодирования описаны более подробно в заявке на патент США №12/789091, поданной 27 мая 2010 года, озаглавленной "Способ сжатия изображений с возможностью случайного доступа"("АМ IMAGE COMPRESSION METHOD WITH RANDOM ACCESS CAPABILITY"), которая включена здесь в качестве ссылки во всей своей полноте.
Способ на основе дифференциальной импульсно-кодовой модуляции (ДИКМ) и предсказание
В некоторых вариантах осуществления кодер применяет предсказание, за которым следует квантование, за которым следует пиксельнообразная ДИКМ, за которой следует энтропийное кодирование и затем уточнение. Кодер сначала вычисляет значения 'предсказания' для всех пикселей в текущем блоке. Возможен любой способ предсказания, например, использующий восстановленные значения для самого близкого того же самого цветового пикселя слева от текущего пикселя. В некоторых вариантах осуществления в кодере используются несколько (например, 9) способов (или режимов) предсказания. Каждый режим предсказания имеет присвоенные имя и число. В примере девять режимов предсказания представляют собой: общий, DC, вправо-вверх, вправо-вверх-вверх, вверх, влево-вверх-вверх, влево-вверх, влево-влево-вверх и влево.
Для каждого блока кодер выбирает один из вышеупомянутых режимов предсказания и этот режим предсказания используется для предсказания квантованных значений пикселей в текущем блоке. Кодер выбирает режим предсказания с использованием первоначальных значений пикселей в текущем блоке и восстановленных значений пикселей для любых ранее восстановленных блоков. Кодер вычисляет предсказание для каждого из режимов предсказания. Вычисленные предсказания для каждого режима предсказания имеют обозначения. Если значения пикселей из всех пикселей в текущем блоке обозначены, то для каждого обозначенного режима предсказания кодер вычисляет: SAD(predNum)=сумме abs(Pred (PredNum) » (depth-predSelDepth) - В » (depth-predSelDepth)) для всех пикселей в текущем блоке. Здесь В включает в себя значения пикселей в текущем блоке, и predSelDepth представляет собой входной параметр для декодера. Это приводит к значению SAD для каждого режима предсказания. Кодер выбирает режим предсказания с наименьшим значением SAD. Если более чем один режим предсказания приводит к наименьшему значению SAD (например, если существует связь), то можно использовать любую связь, разрушающую правило, включая ту, которая выбирает режим предсказания ближе к началу predNumList, где predNumList - список режимов предсказания, разрешенных в декодере. Выбранный режим предсказания, обозначенный 'predNumBest', и соответствующее предсказание, обозначенное 'Pred(predNumBest),' затем используются в оставшейся части процесса для кодирования блока. Кодер затем использует Pred(predNumBest) для следующего этапа кодирования. В способе на основе ДИКМ predNumBest подает сигнал в декодер с использованием одного или более битов в битовом потоке.
Квантование в способе на основе ДИКМ
qn
Следующим этапом кодирования является квантование с коэффициентом квантования qf=2, где qn называется числом квантования. Кодер применяет квантование с числом qn квантования для каждого и любого значения qn, перечисленного в qnList. Затем для каждого значения qn кодер применяет все этапы, которые следуют за квантованием. Для квантования кодер равномерно квантует все пиксели в В и все значения в Pred(predNumBest). Квантование значения x с помощью числа qn квантования представляет собой вычисление при x»qn. Если х имеет битовую глубину 'depth', то квантованное значение x имеет битовую глубину qDepth=depth - qn.
Вычисление ДИКМ
Затем для всех пикселей в текущем блоке кодер вычисляет разность между квантованным первоначальным значением и квантованным значением предсказания:
Resq=(В » qn) - (Pred(predNumBest)» qn).
Это называется этапом ДИКМ. Разности Resq называются остатками квантованных значений для В. Resq может принимать отрицательное значение, 0 или положительное значение.
Энтропийное кодирование и точность кодирования
Resq представлено в качестве входного сигнала для энтропийного кодера. Энтропийный кодер вырабатывает код переменной длины (VLC) для каждого остатка квантованного значения. VLC является последовательностью битов, где число вырабатываемых битов и сами биты зависят от значения остатка квантованного значения. Для любых двух остатков квантованных значений а и b, если abs(a)>abs(b), то длина VLC, выработанного для а, больше, чем или равна длине VLC, выработанного для b. Кодер может использовать код VLC, выработанный с помощью энтропийного кодера для восстановления без потерь значений Resq. Декодер также позволяет восстановить без потерь (Pred(predNumBest)>>qn). Полагая Resq и (Pred(predNumBest)>>qn), декодер затем может восстановить без потерь B»qn. Это означает, что наиболее значимые биты qDepth пикселей в В можно кодировать и декодировать без потерь. В кодере, на этапе ДИКМ кодируют первоначальное значение пикселей с "точностью" битов qDepth.
Уточнение в способе на основе ДИКМ
Для каждого значения qn в qnList операция, упомянутая ранее, выполняется для всех пикселей в блоке, и затем измеряется общее число битов, выработанных для всего блока. Затем могут иметь место три возможных случая:
1. Число битов, выработанных для всего блока, больше, чем бюджет битов, выделенный для текущего блока, или число битов, выработанных, по меньшей мере, для одного из пикселей в блоке, больше, чем codeLengthLimit: то не разрешено ДИКМ с текущим значением qn.
2. Число битов, выработанных для всего блока, равно бюджету битов для текущего блока: тогда разрешается ДИКМ с текущим значением qn.
3. Число битов, выработанных для всего блока, меньше, чем бюджет битов, выделенных для текущего блока: затем разрешается ДИКМ с текущим значением qn. Однако в процессе, который называется "уточнением", будет затем вырабатываться больше битов. Этап уточнения позволяет израсходовать оставшиеся разрешенные биты. Если все оставшиеся биты не используются, то оставшаяся часть разрешенных битов заполняется нулями, которые называются "дополнением нулями".
Этап уточнения увеличивает точность кодирования пикселей в первоначальном блоке. Каждый бит данных, который вырабатывается на этапе уточнения, будет повышать точность кодирования пикселя на один бит.
Способ импульсно-кодовой модуляции (ИКМ)
Кроме способа на основе ДИКМ кодер также может использовать другой тип способа, который называется способом ИКМ. В способе ИКМ каждое значение пикселя сдвигается вправо на фиксированное число битов. Это фиксированное число битов является постоянным для каждого пикселя, но может отличаться от одного до другого пикселя в блоке. Сдвинутые значения пикселей затем помещаются в битовый поток без какой-либо дальнейшей обработки.
Точность, выбор режима и выработка битового потока
После того как кодер применяет способ на основе ДИКМ, использующий различные значения qn, и способ ИКМ, кодер измеряет точность кодирования для всех тестируемых сценариев. Для способа на основе ДИКМ, для блока изображения 'точность' или 'покрытие' определяется в виде общего числа первоначальных битов пикселей в блоке, который кодируется с помощью ДИКМ/ VLC или с помощью уточнения. Для способа ИКМ, для блока изображения 'точность' или 'покрытие' определяется в качестве общего числа первоначальных битов пикселей в блоках, которые кодируются. Если разрешена ДИКМ с любым из значений qn и достигается наилучшая точность кодирования с помощью способа на основе ДИКМ, кодер посылает '1', сигнализирующую способ на основе ДИКМ, один или более битов, которые подают сигнал наилучшего значения qn, один или более битов, которые подают сигнал predNumBest, биты, выработанные на этапе энтропийного кодирования всех пикселей в блоке, биты уточнения (если это имеет место) и дополнение нулями (если это имеет место). Если не разрешена ДИКМ ни с одним из значений qn, или если разрешена ДИКМ с одним или более значениями qn, но наилучшая точность кодирования достигается способом ИКМ, то кодер посылает '0', сигнализирующий способ ИКМ, за которым следуют биты, выработанные способом ИКМ.
Восстановление: случай ДИКМ
В способе на основе ДИКМ, после кодирования блока для каждого пикселя в блоке, qDepth=depth - qn битов кодируются с использованием ДИКМ/VLC. Биты между 0 и qn кодируются с использованием уточнения, и для каждого пикселя, число битов, которые кодируются с использованием уточнения, обозначается f. В этом случае используется обозначение е=qn-f, где е - 'эффективное qn' для пикселей. Для данного пикселя, глубина - е битов кодируется с помощью ДИКМ/VLC или уточнения, и е битов не кодируется совсем. С целью восстановления (в кодере и декодере) наиболее значимая глубина - е битов устанавливается на значения, кодированные с помощью кодера, наиболее значимый некодированный бит устанавливается на '1', и другие некодированные биты устанавливаются в '0'.
Восстановление: случай ИКМ
В способе ИКМ, после кодирования блока, для каждого пикселя в блоке, qDepth=depth - qnPCM битов кодируются с использованием способа ИКМ, и qnPCM битов не кодируются совсем. С целью восстановления (в кодере и декодере) наиболее значимая depth - qnPCM битов устанавливаются на значения, кодируемые с помощью кодера. Наиболее значимый некодированный бит устанавливается на '1', и другие некодированные биты устанавливаются в '0'.
Предсказание
Для каждого блока можно определить ряд режимов предсказания. Некоторые из режимов предсказания могут быть связаны с возможными краевыми направлениями на изображении. Например, фигура 1 показывает 7 возможных режимов предсказания, связанных с различными возможными направлениями на изображении. Некоторые другие режимы предсказания возможны для определения того, что не связано с возможными краевыми направлениями на изображении. Например, два режима предсказания являются 'общим предсказанием' и 'DC-предсказанием'. При использовании двух дополнительных образцовых случаев существует девять режимов предсказания.
Предсказание для первой линии
(depth-1)
Для предсказания, для большинства режимов предсказания кодеру и декодеру требуются восстановленные значения предыдущей линии. Однако для первой линии, отсутствует предыдущая линии, которая используется для предсказания. В этом случае необходимые восстановленные значения из предыдущей линии, которые не доступны, предполагаются равными 2. Для глубины (depth) равной 10, это дает результат равный 512.
Ограничение по схемам предсказания
Для получения предсказания для пикселя А в текущем блоке предсказание получается с помощью одного из двух возможностей предсказания. Первая использует одно или более восстановленных значений из ранее кодированных блоков, которые можно комбинировать любым необходимым способом. Вторая использует точно одно из первоначальных значений пикселей в текущем блоке, который расположен перед текущим пикселем.
Сигнализация qn и режим предсказания в битовом потоке
Если qn для текущего блока является таким же, как и qn блока наверху, посылается '1'. Для первой линии в изображении предполагается, что qn верхнего блока будет равно первому qn в qnList. Если верхний блок кодируется с использованием способа ИКМ (и, следовательно, не имеет qn, связанного с ним), то qn сверху верхней части используется вместо qn верхней части. Если qn, используемое для текущего блока, отличается от qn блока на верхней части, посылается '0', за которым следует двоичное представление 1-1, где I - индекс qn в qnList, когда qn верхнего блока удаляется из списка. Например, если qnList=[0 1 2 3 4 5 6 7] и qn верхнего блока равно 3, то в представленной ниже таблице показаны биты сигнализации, использующие восемь возможных значений qn для текущих блоков:
qn текущего блока
0
1
2
3
4
5
6
Сигнал для точного определения qn текущего блока
0000
0001
0010
1
0011
0100
0110
Сигнализация режима предсказания выполняется таким же образом.
Энтропийное кодирование
Для любого остатка квантованного значения энтропийный кодер вычисляет VLC.
1. Вычисляют общее число битов, которые используются для представления величины остатка квантованного значения (игнорируя нули слева от наиболее значимой '1'), которое дает значение К для остатка квантованного значения.
2. К нулей записывают в битовом потоке.
3. Записывают биты с величиной К.
4. Затем записывают бит знака, 0 для отрицательных значений и 1 для нуля или положительных значений.
Фиг. 2 изображает образцовое вычисление VLC согласно некоторым вариантам осуществления.
Фиг. 3 изображает образцовую таблицу энтропийного кодирования согласно некоторым вариантам осуществления. Как показано в таблице, самый левый столбец является остатком от ввода квантованного значения. Средние столбцы являются двоичным представлением ввода, величиной и битовым знаком, где бит знака равен 0 для отрицательных значений и 1 для положительных значений. Вывод включает в себя К нулей перед битами с величиной К и битом знака в конце.
Уточнение в кодере
После кодирования ДИКМ и энтропийного кодирования вырабатывают последовательности битов в кодере для сигнализации бита ИКМ/ДИКМ, сигнализации значения qn блока, сигнализации режима предсказания и битов, выработанных с помощью энтропийного кодера. Число этих битов может быть меньше, чем бюджет битов блока. Для использования оставшихся битов, кодер посылает биты первоначальных пикселей, начинающихся от наиболее значимых битов, которые не ДИКМ-кодируются как чередующиеся между левой частью и правой частью блока. Фиг. 4 изображает пример использования оставшихся битов для уточнения. Значение blockWidth равно 16, и qn равно 3. Показан порядок передачи битов уточнения. В этом примере столько битов, насколько позволяет бюджет (вплоть до 48 битов), можно передавать в качестве битов уточнения. Биты уточнения передаются во время этапа уточнения.
Кодирование на основе ДИКМ, значения восстановления
Фиг.5 изображает пример кодирования на основе ДИКМ и значения восстановления. Показанные числа указывают значения, присвоенные некодированным битам во время восстановления в кодере и декодере.
Как измеряется точность для принятия решения относительно режима
Как показано на фиг.5, существуют depth x blockWidth битов в первоначальном двоичном представлении пикселей блока. ДИКМ кодирует биты (depth - qn) x blockWidth поверх битов без потерь. Биты (depth - qn) × blockWidth называется битами, покрытыми ДИКМ. Этап уточнения также покрывает дополнительные биты, представленные R. R битов покрывают путем уточнения. Таким образом, из битов depth x blockWidth первоначального сигнала покрывается общее количество битов (depth - qn) × blockWidth+R, а оставшиеся блоки - нет.Общее число покрытых битов используется в качестве измерения точности кодирования для каждого способа на основе ДИКМ с заданным qn.
Распределение разностей значений пикселей между первоначальным и восстановленным изображениями
Изображение, полученное путем вычисления разности между восстановленным изображением и первоначальным изображением, обозначается D. Фиг. 6 изображает кодер и декодер согласно некоторым вариантам осуществления.
е
Для каждого пикселя в изображении, эффективное qn для этого пикселя, обозначенное е, равно числу битов в первоначальном значении пикселя, которые не кодируются во время процесса кодирования. Если пиксель находится в блоке, который ИКМ кодирован, е равно числу битов пикселей, которые не кодируются кодером. Если пиксель находится в блоке, который ДИКМ кодирован, е равно числу битов в первоначальном значении пикселя, который не кодируется с помощью ДИКМ или уточнения. Кодер (исключающий Гамма), по существу, равномерно квантует каждый пиксель в первоначальном изображении после гамма (Og) с размером шага s=2, где е (и поэтому s) могут отличаться от одного до другого пикселя.
е
Когда пиксель необходимо квантовать равномерно с размером шага s, для квантования определены две концепции. Ячейка квантования представляет собой группу значений s, которые все квантуются с одинаковым значением. Значение восстановления для этой ячейки равно значению, которое будет представлять все из элементов ячеек при восстановлении. Одинаковое распределение предполагается для значений пикселей в Og. Ячейки квантования имеют равный размер для каждой ячейки квантования, и значение восстановления находится в середине ячейки. Так как диапазон значений пикселей равен показателю степени 2, число значений в каждой ячейке квантования (которое равно s) равно также показателю степени 2 (например, s=2). Поэтому любое s=1, что представляет собой случай е=0, означающий квантование без потерь. В этом случае существует только одно значение в каждой ячейке, и значение является как первоначальным значением, так и восстановленным значением. Либо s является четным числом, в случае которого ни одна из первоначальных выборок не находится точно в середине ячейки. Середина ячейки находится справа между двумя значениями выборок. Чтобы выбрать значение восстановления, выбирают любое значение выборки непосредственно выше или только ниже средней точки.
Фиг. 7 изображает ячейки и их значения восстановления для случаев е=0, 1, 2, 3, 4 и 5. На фиг. 7 незакрашенные круги и черные круги представляют собой первоначальные значения, прямоугольники представляют собой ячейки, черные круги представляют собой восстановленное значение в каждой ячейке, и сегменты с пунктирной линией представляют собой среднюю точку каждой ячейки.
Результат смещения
Предполагая, что однородное распределение первоначальных значений пикселей находится во всем диапазоне 0-1023, если выбрано значение восстановления справа выше средней точки, то смещение +0,5 приводит в результате к восстановленному изображению. Аналогично, смещение будет равно -0,5, если значение восстановления выбрано справа ниже средней точки. Существуют различные способы для того, чтобы избежать смещения. Один способ представляет собой альтернативу между значениями выборок 'справа выше' и 'справа ниже'.
Роль Гаммы
В Гамма-функции и обратной Гамма-функции существуют определенные деления на два и четыре, которые применяются для определенных пикселей. Деления выполняют с использованием операций сдвига влево. Операция однократного сдвига влево дает результат смещения, равный -0,5 для пикселей, к которым он применим. Операция двукратного сдвига влево приводит к смещению, равному -1,5, для тех пикселей, к которым он применим. Другая роль Гаммы заключается в том, что она изменяет гистограмму первоначального входного изображения. После Гамма, в Og, определенные значения больше не возникают. Поэтому распределение значений пикселей в Og не является больше однородным.
Структура ДИКМ
Фиг. 8 изображает структуру 800 битового потока для режимов ДИКМ согласно некоторым вариантам осуществления. Структура 800 битового потока имеет длину blockBitBudget. Первый бит (который также называется наиболее значимым битом) принимает значение ''1' для того, чтобы указать режим ДИКМ. Затем биты используются для того, чтобы показать значения qn. Следующими являются биты, которые сигнализируют режим предсказания. Для каждого пикселя в блоке пиксель ДИКМ-кодируется: пиксель и его предсказания квантуются с помощью qn, и их разность подвергается энтропийному кодированию. Каждый пиксель вырабатывает '1' для codeLengthLimit битов в зависимости от остатка квантованного значения и значения qn. Если общее число битов в этой точке меньше, чем бюджет битов блока, то для дальнейшего повышения точности кодирования добавляются дополнительные биты уточнения. В итоге биты для дополнения нулями добавляются в конец, если блок кодируется без потерь.
ИКМ
Фиг. 9 изображает порядок передачи битов для способа ИКМ, для случая ширины блока, равной 16, и числа битов в секунду, равного 4 бит/с. Фиг. 10 изображает восстановление блока.
Фиг. 11 изображает структуру 1100 битового потока для режима ИКМ согласно некоторым вариантам осуществления. Структура 1100 битового потока имеет длину blockBitBudget. Первый бит (который также называется наиболее значимым битом) принимает значение '0' для указания режима ИКМ. Затем для оставшихся пикселей включены ИКМ-коды для всех пикселей в блоке.
Кодер
Структура образцового кодера показана на фиг. 12 с многочисленными этапами уточнения. Пример на фиг. 12 включает в себя этап уточнения для каждого из режимов. Фиг. 13 изображает структуру кодера с одним этапом уточнения. Таким образом, вместо этапа уточнения для каждого из режимов существует один этап уточнения. Фиг.14 изображает кодер с энтропийным кодированием, разделенным на две части: вычисление значения/длины кода и выработка битового потока. Фиг. 15 изображает кодер с вычислением значения и длины кода отдельно от выработки битового потока, но с одним этапом уточнения и одной выработкой битового потока. Примеры только означают иллюстрацию некоторых возможных примеров. Возможны и другие реализации, включающие в себя меньше или больше компонентов.
Фиг. 16 изображает алгоритм способа сжатия с использованием фиксированного числа битов в блоке согласно некоторым вариантам осуществления. На этапе 1600 изображение разбивается на блоки. В некоторых вариантах осуществления изображение сначала разбивается на вертикальные полосы, и затем каждая вертикальная полоса разбивается на маленькие линейные сегменты, которые называются блоками. На этапе 1602 гамма-преобразование применяется для выработки данных, таких как 10-битовые данные. На этапе 1604 вычисляют значения предсказания. Как описано выше, существует множество возможных способов предсказания. На этапе 1606 к пикселям применяют квантование. На этапе 1608 выполняют вычисление ДИКМ. На этапе 1608 вычисляют разность между квантованным пикселем и квантованным предсказанием и выполняют энтропийное кодирование для выработки кода переменной длины для каждого остатка квантованного значения. На этапе 1610 выполняют уточнение. На этапе 1612 производят вычисление ИКМ. На этапе 1614 вырабатывают битовый поток. Битовый поток зависит от того, какие результаты способов ДИКМ и ИКМ выше по точности. Порядок этапов может быть изменен, и в некоторых вариантах осуществления некоторые этапы могут быть пропущены.
Фиг. 17 изображает блок-схему образцового вычислительного устройства 1700, предназначенного для выполнения сжатия изображений с использованием способа фиксированного числа битов в блоке, согласно некоторым вариантам осуществления. Вычислительное устройство 1700 можно использовать для получения, хранения, вычисления, связи и/или отображения информации, такой как изображения и видео. Например, вычислительное устройство 1700 может получать и хранить изображение. Способ сжатия изображений можно использовать при получении или просмотре изображения на устройстве 1700. В общем, структура аппаратных средств, пригодная для реализации вычислительного устройства 1700, включает в себя сетевой интерфейс 1702, память 1704, процессор 1706, устройство(а) 1708 ввода/вывода, шину 1710 и запоминающее устройство 1712. Выбор процессора является некритичным до тех пор, пока не будет выбран подходящий процессор с достаточной скоростью. Память 1704 может быть любой известной компьютерной памятью, известной в технике. Запоминающее устройство 1712 может включать в себя накопитель на жестких дисках CDROM, CDRW, DVD, DVDRW, карту флэш-памяти или любое другое устройство запоминающее устройство. Вычислительное устройство 1700 может включать в себя один или более сетевых интерфейсов 1702. Пример сетевого интерфейса включает в себя сетевую плату, подсоединенную к Ethernet или любому типу локальной вычислительной сети (ЛВС). Устройство(а) 1708 ввода/вывода может включать в себя один или более из следующего: клавиатура, мышь, монитор, устройство отображения, принтер, модем, сенсорный экран, кнопочный интерфейс и другие устройства. Приложение(я) 1730 для сжатия изображений, которое используется для выполнения способа сжатия изображений, возможно, будет храниться в запоминающем устройстве 1712 и памяти 1704 и обрабатываться в качестве приложений, которые обычно обрабатываются. Больше или меньше компонентов, показанных на фиг. 17, можно включить в вычислительное устройство 1700, в некоторых вариантах осуществления включены аппаратные средства 1720 для сжатия изображений. Хотя вычислительное устройство 1700 на фиг. 17 включает в себя приложения 1730 и аппаратные средства 1720 для сжатия изображений, способ сжатия изображений можно реализовать в вычислительном устройстве в виде аппаратных средств, программно-аппаратных средств, программных средств или любой их комбинации. Например, в некоторых вариантах осуществления приложения 1730 для сжатия изображений запрограммированы в памяти и выполняются с использованием процессора. В другом примере, в некоторых вариантах осуществления аппаратные средства 1720 для сжатия изображений запрограммированы на уровне аппаратной логики, включая логические вентили, специально разработанные для реализации способа сжатия изображений.
В некоторых вариантах осуществления приложение(я) 1730 для сжатия изображений включает в себя несколько приложений и/или модулей. Как описано выше, модули включают в себя модуль разбиения, модуль кодирования, гамма-модуль, модуль предсказания, модуль квантования, ДИКМ-модуль, модуль уточнения, ИКМ-модуль и модуль битового потока, каждый из которых предназначен для выполнения соответствующих способов, описанных здесь. В некоторых вариантах осуществления отдельный модуль ДИКМ-кодирования существует для каждого коэффициента квантования. В некоторых вариантах осуществления модули включают в себя также один или более подмодулей. В некоторых вариантах осуществления могут быть включены меньше или больше дополнительных модулей.
Примеры подходящих вычислительных устройств включают в себя персональный компьютер, портативный персональный компьютер типа "лаптоп" (laptop), автоматизированное рабочее место, сервер, универсальную вычислительную машину, карманный микрокалькулятор, персональный цифровой помощник, сотовый/мобильный телефон, интеллектуальный бытовой прибор, игровую приставку, цифровой фотоаппарат, цифровую видеокамеру со встроенным видеомагнитофоном (камкордер), мобильный телефон со встроенной видеокамерой, айфон (iPhone), айпод (iPod), видеопроигрыватель, DVD-устройство записи/воспроизведения, телевизор, систему домашнего развлечения или другое подходящее вычислительное устройство.
Для использования способа сжатия изображений пользователь получает видео/изображение, такое как на цифровой видеокамере со встроенным видеомагнитофоном, и когда или после получения видео, способ сжатия изображений автоматически сжимает каждое изображение видео так, чтобы видео было сжато соответствующим образом для получения высококачественного видео. Способ сжатия изображений выполняется автоматически без привлечения пользователя. Аналогично, когда декодер декодирует видео, декодер автоматически декодирует видео так, чтобы видео отображалось соответствующим образом.
При работе способ сжатия изображений, описанный здесь, выполняет сжатие изображений с помощью аппаратных средств малой стоимости (например, не требуются многочисленные логические вентили) в некоторых вариантах осуществления, низкой сложностью, низкой задержкой, очень высоким визуальным качеством (например, визуально без потерь) и не зависит от других блоков для декодирования (например, для декодирования любого блока с фиксированным размером блока). Способ сжатия изображений можно использовать в любой реализации, включающей в себя, но не ограниченной, беспроводную высокую четкость (беспроводную HD).
Способ сжатия изображений, описанный здесь, можно использовать с видео и/или изображением.
Некоторые варианты осуществления способа сжатия цифровых изображений с использованием фиксированного числа битов в блоке:
1. Способ сжатия изображений, программируемый в контроллере устройства, содержащий этапы, на которых:
разбивают изображение на один или более блоков; и
кодируют один или более блоков, причем число битов в каждом из одного или более блоков является фиксированным.
2. Способ по п.1, дополнительно содержащий этап, на котором применяют гамма-преобразование для выработки 10-битовых данных.
3. Способ по п.1, дополнительно содержащий этап, на котором вычисляют значения предсказания для каждого пикселя в текущем блоке из одного или более блоков с использованием одного или более режимов предсказания.
4. Способ по п.3, в котором режимы предсказания включают в себя по меньшей мере один из следующих режимов предсказания:
общий;
DC;
вправо-вверх;
вправо-вверх-вверх;
вверх;
влево-вверх-вверх;
влево-вверх;
влево-влево-вверх; и
влево.
5. Способ по п.1, дополнительно содержащий этап, на котором применяют квантование.
6. Способ по п.1, дополнительно содержащий этап, на котором вычисляют дифференциальную импульсно-кодовую модуляцию для получения остатков квантованных значений.
7. Способ по п.6, дополнительно содержащий этап, на котором выполняют энтропийное кодирование для выработки кода переменной длины для каждого остатка квантованного значения.
8. Способ по п.7, в котором этап выполнения энтропийного кодирования разделен на две части: вычисление значения/длины кода и выработка битового потока.
9. Способ по п.7, в котором этап выполнения энтропийного кодирования разделен на две части: вычисление значения/длины кода и выработка битового потока, но с одним этапом уточнения и одной выработкой битового потока.
10. Способ по п.1, дополнительно содержащий этап выполнения уточнения.
11. Способ по п.10, в котором этап выполнения уточнения включает в себя отдельный этап уточнения для каждого квантования.
12. Способ по п.10, в котором этап выполнения уточнения включает в себя единственный этап уточнения.
13. Способ по п.1, дополнительно содержащий этап, на котором вычисляют импульсно-кодовую модуляцию, включающую в себя сдвиг каждого значения пикселя на фиксированное число битов.
14. Способ по п.1, дополнительно содержащий этап, на котором вырабатывают битовый поток.
15. Способ по п.14, в котором на этапе выработки битового потока выбирают способ кодирования из дифференциальной импульсно-кодовой модуляции или импульсно-кодовой модуляции.
16. Способ по п.1, в котором контроллер выбирают из группы, состоящей из программируемого машиночитаемого носителя и схемы, зависящей от типа приложения.
17. Способ по п.1, в котором устройство выбирают из группы, состоящей из персонального компьютера, портативного персонального компьютера типа "лаптоп", автоматизированного рабочего места, сервера, универсальной вычислительной машины, карманного компьютера, персонального цифрового помощника, сотового/мобильного телефона, интеллектуального бытового прибора, игровой приставки, цифрового фотоаппарата, цифровой видеокамеры, мобильного телефона со встроенной видеокамерой, айфона (iPhone), айпода (iPod), видеопроигрывателя, DVD-устройства записи/воспроизведения, телевизора и домашней развлекательной системы.
18. Система для сжатия изображений, программируемого в контроллере устройства, содержащая:
модуль разбиения для разбиения изображения на один или более блоков; и
модуль кодирования для кодирования одного или более блоков, причем число битов в каждом из одного или более блоках является фиксированным.
19. Система по п.18, дополнительно содержащая вычислительный модуль для вычисления значений предсказания для каждого пикселя в текущем блоке из одного или более блоков с использованием одного или более режимов предсказания.
20. Система по п.19, в которой режимы предсказания включают в себя по меньшей мере один из следующих режимов предсказания:
общий;
DC;
вправо-вверх;
вправо-вверх-вверх;
вверх;
влево-вверх-вверх;
влево-вверх;
влево-влево-вверх; и
влево.
21. Система для сжатия изображений, программируемого в контроллере устройства, содержащая:
гамма-модуль для применения гамма-преобразования для выработки 10-битовых данных;
модуль предсказания для вычисления значений предсказания для каждого пикселя в текущем блоке из одного или более блоков с использованием одного или более режимов предсказания;
модуль квантования для применения квантования;
модуль ДИКМ для вычисления дифференциальной импульсно-кодовой модуляции для выработки остатков квантованных значений;
модуль уточнения для выполнения уточнения;
модуль ИКМ для вычисления импульсно-кодовой модуляции, включающей в себя сдвиг каждого значения пикселя на фиксированное число битов; и
модуль битового потока для выработки битового потока, причем выработка битового потока включает в себя выбор способа кодирования из дифференциальной импульсно-кодовой модуляции или импульсно-кодовой модуляции.
22. Система по п.21, в которой режимы предсказания включают в себя по меньшей мере один из следующих режимов предсказания:
общий;
DC;
вправо-вверх;
вправо-вверх-вверх;
вверх;
влево-вверх-вверх;
влево-вверх;
влево-влево-вверх; и
влево.
23. Система по п.21, в которой контроллер выбран из группы, состоящей из программируемого машиночитаемого носителя и схемы, зависящей от типа приложения.
24. Система по п.21, в которой устройство выбрано из группы, состоящей из персонального компьютера, портативного персонального компьютера типа "лаптоп" (laptop), автоматизированного рабочего места, сервера, универсальной вычислительной машины, карманного компьютера, персонального цифрового помощника, сотового/мобильного телефона, интеллектуального бытового прибора, игровой приставки, цифрового фотоаппарата, цифровой видеокамеры со встроенным видеомагнитофоном, мобильного телефона со встроенной видеокамерой, айфона (iPhone), айпода (iPod), видеопроигрывателя, DVD-устройства записи/воспроизведения, телевизора и домашней развлекательной системы.
25. Съемочное устройство, содержащее:
компонент получения видео для получения видео;
память для хранения приложения, выполненного с возможностью:
разбиения изображения на один или более блоков; и
кодирования одного или более блоков, причем число битов в каждом из одного или более блоков является фиксированным; и
компонент обработки, связанный с памятью, причем компонент обработки выполнен с возможностью обработки приложения.
26. Съемочное устройство по п.25, в котором приложение дополнительно выполнено с возможностью вычисления значений предсказания для каждого пикселя в текущем блоке из одного или более блоков с использованием одного или более режимов предсказания.
27. Съемочное устройство по п.26, в котором режимы предсказания включают в себя по меньшей мере один из следующих режимов предсказания:
общий;
DC;
вправо-вверх;
вправо-вверх-вверх;
вверх;
влево-вверх-вверх;
влево-вверх;
влево-влево-вверх; и
влево.
Настоящее изобретение было описано исходя из специфических вариантов осуществления, содержащих в себе подробности для облегчения понимания принципов построения и работы изобретения. Такая ссылка здесь на специфические варианты осуществления и его подробности не предназначена для ограничения объема прилагаемой формулы изобретения. Специалистам в данной области техники будет ясно, что другие различные модификации можно выполнить в варианте осуществления, выбранном для иллюстрации без отклонения от сущности и объема настоящего изобретения в том виде, как определено формулой изобретения.