СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ БЛОКА КОДИРОВАНИЯ ГРАНИЦЫ КАРТИНКИ
METHOD AND APPARATUS FOR ENCODING AND DECODING CODING UNIT OF PICTURE BOUNDARY

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Устройства и способы, соответствующие примерным вариантам осуществления относятся к кодированию и декодированию изображения, и более конкретно к способу и устройству для кодирования и декодирования блока кодирования изображения границы картинки.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
В способах сжатия изображения, таких как Moving Pictures Experts Group (Экспертная группа по движущемуся изображению)(MPEG)-1, MPEG-2 и MPEG-4, H.264/MPEG-4 Advanced Video Coding (AVC) (Усовершенствованное Видео Кодирование) изображение делят на блоки, имеющие предварительно определенный размер, чтобы кодировать изображение. Затем каждый из блоков кодируют с предсказанием, используя внешнее (inter) предсказание или внутреннее (intra) предсказание.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
РЕШЕНИЕ ПРОБЛЕМЫ
Примерные варианты осуществления обеспечивают способ и устройство для кодирования и декодирования блока кодирования границы картинки.
Примерные варианты осуществления также обеспечивают считываемый компьютером носитель записи, имеющий записанную на нем программу для выполнения способа кодирования и декодирования блока кодирования границы картинки.
ПОЛЕЗНЫЕ ЭФФЕКТЫ ИЗОБРЕТЕНИЯ
В соответствии с настоящим изобретением блок границы может быть эффективно кодирован без возникновения служебных затрат.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Приведенные выше и другие аспекты станут более очевидными, посредством подробного описания их примерных вариантов осуществления со ссылкой на прилагаемые чертежи, на которых:
Фиг.1 является блок-схемой устройства для кодирования изображения, в соответствии с примерным вариантом осуществления;
Фиг.2 является блок-схемой устройства для декодирования изображения, в соответствии с примерным вариантом осуществления;
Фиг.3 иллюстрирует иерархические блоки кодирования, в соответствии с примерным вариантом осуществления;
Фиг.4 является блок-схемой кодера изображения на основе блока кодирования, согласно примерному варианту осуществления;
Фиг.5 является блок-схемой декодера изображения на основе блока кодирования, согласно примерному варианту осуществления;
Фиг.6 иллюстрирует максимальный блок кодирования, подблок кодирования и блок предсказания, в соответствии с примерным вариантом осуществления;
Фиг.7 иллюстрирует блок кодирования и блок преобразования, в соответствии с примерным вариантом осуществления;
Фиг.8A и 8B иллюстрирует формы деления блока кодирования, блока предсказания и блока частотного преобразования, в соответствии с примерным вариантом осуществления;
Фиг.9 является блок-схемой устройства для кодирования изображения, в соответствии с другим примерным вариантом осуществления;
Фиг.10A и 10B иллюстрируют кодирующий блок границы картинки, в соответствии с примерным вариантом осуществления;
Фиг.11A и 11B иллюстрируют способ деления блока кодирования границы картинки, в соответствии с примерным вариантом осуществления;
Фиг.12A и 12B иллюстрируют способ деления блока кодирования границы картинки, в соответствии с другим примерным вариантом осуществления;
Фиг.13A и 13B иллюстрируют способ внутреннего предсказания, в соответствии с примерным вариантом осуществления;
Фиг.14 иллюстрирует индексацию максимального блока кодирования, в соответствии с примерным вариантом осуществления;
Фиг.15 является блок-схемой последовательности операций, иллюстрирующей способ кодирования изображения, в соответствии с примерным вариантом осуществления;
Фиг.16 является блок-схемой устройства для декодирования изображения, в соответствии с другим примерным вариантом осуществления;
Фиг.17 является блок-схемой последовательности операций, иллюстрирующей способ декодирования изображения, в соответствии с примерным вариантом осуществления;
Фиг.18А-18G иллюстрируют режимы предсказания в первом блоке кодирования, включающем в себя область, которая отклоняется от границы текущей картинки;
Фиг.19 является блок-схемой последовательности операций, иллюстрирующей способ кодирования изображения, в соответствии с другим примерным вариантом осуществления;
Фиг.20A и 20B иллюстрируют способ кодирования блока кодирования границы картинки, в соответствии с примерным вариантом осуществления;
Фиг.21 является блок-схемой последовательности операций, иллюстрирующей способ декодирования изображения, в соответствии с другим примерным вариантом осуществления;
Фиг.22 является блок-схемой последовательности операций, иллюстрирующей способ кодирования изображения, в соответствии с другим примерным вариантом осуществления;
Фиг.23A и 23B иллюстрируют способ кодирования блока кодирования границы картинки, в соответствии с другим примерным вариантом осуществления; и
Фиг.24 является блок-схемой последовательности операций, иллюстрирующей способ декодирования изображения, в соответствии с другим примерным вариантом осуществления.
ЛУЧШИЙ ВАРИАНТ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
В соответствии с аспектом примерных вариантов осуществления, предложен способ кодирования изображения, причем способ включает в себя этапы, на которых: определяют, содержит ли первый блок кодирования область, которая отклоняется от границы текущей картинки; делят первый блок кодирования для получения по меньшей мере одного второго блока кодирования на основании результата определения; и кодируют только второй блок кодирования, который не отклоняется от границы текущей картинки, из числа по меньшей мере одного второго блока кодирования, генерируемого в результате деления.
Когда выполняют кодирование второго блока кодирования, который не отклоняется от границы текущей картинки, информацию о делении первого блока кодирования не кодируют.
Определение того, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки, включает в себя определение, отклоняется ли левая или правая граница первого блока кодирования от левой или правой границы текущей картинки.
Определение того, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки, включает в себя определение, отклоняется ли верхняя или нижняя граница первого блока кодирования от верхней или нижней границы текущей картинки.
В соответствии с другим аспектом примерных вариантов осуществления предложен способ декодирования изображения, причем способ включает в себя этапы, на которых: определяют, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки; анализируют данные, касающиеся второго блока кодирования, который не отклоняется от границы текущей картинки, из числа по меньшей мере одного второго блока кодирования, сгенерированного посредством деления первого блока кодирования на основании результата определения; и декодируют данные, относящиеся ко второму блоку кодирования, который не отклоняется от границы текущей картинки.
В соответствии с другим аспектом примерных вариантов осуществления предложено устройство для кодирования изображения, причем устройство включает в себя: определитель, который определяет, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки; контроллер, который делит первый блок кодирования для получения по меньшей мере одного второго блока кодирования на основании результата определения; и кодер, который кодирует только второй блок кодирования, который не отклоняется от границы текущей картинки, из числа по меньшей мере одного второго блока кодирования, генерируемого в результате деления.
В соответствии с другим аспектом примерных вариантов осуществления предложено устройство для декодирования изображения, причем устройство включает в себя: определитель, который определяет, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки; анализатор, который анализирует данные, касающиеся второго блока кодирования, который не отклоняется от границы текущей картинки, из числа по меньшей мере одного второго блока кодирования, сгенерированного делением первого блока кодирования на основании результата определения; и декодер, который декодирует данные, касающиеся второго блока кодирования, который не отклоняется от границы текущей картинки.
В соответствии с другим аспектом примерных вариантов осуществления предложен считываемый компьютером носитель записи, имеющий реализованную на нем программу для выполнения способа кодирования и декодирования изображения.
ВАРИАНТЫ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
Сейчас примерные варианты осуществления будут описаны более подробно со ссылкой на прилагаемые чертежи, на которых показаны примерные варианты осуществления. Такие выражения, как "по меньшей мере один из", когда предшествуют списку элементов, модифицируют весь список элементов и не модифицируют отдельные элементы списка. В настоящем описании "изображение" может обозначать неподвижное изображение для видео или движущееся изображение, то есть само видео.
Фиг.1 является блок-схемой устройства для кодирования изображения 100 в соответствии с примерным вариантом осуществления.
На Фиг.1, устройство для кодирования изображения 100 включает в себя делитель 110 максимального блока кодирования, определитель 120 глубины кодирования, кодер 130 данных изображения и кодер 140 информации кодирования.
Делитель 110 максимального блока кодирования может делить текущую картинку или срез на основании максимального блока кодирования, который является блоком кодирования максимального размера. То есть делитель 110 максимального блока кодирования может делить текущую картинку или срез, чтобы получать по меньшей мере один максимальный блок кодирования.
Согласно примерному варианту осуществления блок кодирования может быть представлен с использованием максимального блока кодирования и глубины. Как описано выше, максимальный блок кодирования указывает блок кодирования, имеющий максимальный размер из числа блоков кодирования текущей картинки, и глубина указывает степень, полученную иерархическим уменьшением блока кодирования. С увеличением глубины, блок кодирования может уменьшаться от максимального блока кодирования до минимального блока кодирования, при этом глубину максимального блока кодирования задают как минимальную глубину и глубину минимального блока кодирования задают как максимальную глубину. Поскольку размер блока кодирования в соответствии с глубинами уменьшается от максимального блока кодирования с увеличением глубины, подблок кодирования k-ой глубины может включать в себя множество подблоков кодирования (k+n)-ой глубины (k и n являются целыми числами, равными или большими, чем 1).
В соответствии с увеличением размера картинки, которая должна быть кодирована, кодирование изображения в большем блоке кодирования может привести к более высокому коэффициенту сжатия изображения. Однако, если фиксируют больший блок кодирования, изображение может не быть эффективно кодировано, отражая постоянно меняющиеся характеристики изображения.
Например, когда кодируют гладкую зону, такую как море или небо, чем больше блок кодирования, тем больше коэффициент сжатия может увеличиться. Однако, когда кодируют сложную зону, такую как человек или здания, чем меньше блок кодирования, тем больше коэффициент сжатия может увеличиться.
Таким образом, в соответствии с примерным вариантом осуществления, максимальный блок кодирования изображения и максимальную глубину, имеющие разные размеры, устанавливают для каждой картинки или среза. Поскольку максимальная глубина обозначает максимальное число раз, в которое блок кодирования может уменьшиться, размер каждого минимального блока кодирования, включенного в максимальный блок кодирования изображения, может быть установлен переменно, в соответствии с максимальной глубиной.
Определитель 120 глубины кодирования определяет максимальную глубину. Максимальная глубина может быть определена на основе вычисления затрат в виде искажения в зависимости от скорости (Rate-Distortion (R-D)). Максимальная глубина может быть определена различно для каждой картинки или среза, или для каждого максимального блока кодирования. Определенную максимальную глубину обеспечивают в кодер 140 информации кодирования и данные изображения в соответствии с максимальными блоками кодирования обеспечивают в кодер 130 данных изображения.
Максимальная глубина обозначает блок кодирования, имеющий наименьший размер, который может быть включен в максимальный блок кодирования, то есть минимальный блок кодирования. Другими словами, максимальный блок кодирования может быть разделен на подблоки кодирования, имеющие различные размеры в соответствии с различными глубинами. Это подробно описано далее со ссылкой на Фиг.8А и 8Б. Кроме того, подблоки кодирования, имеющие различные размеры, которые включены в максимальный блок кодирования, могут быть преобразованы по предсказанию или частоте на основе блоков обработки, имеющих разные размеры (значения пиксельных областей могут быть преобразованы в значения частотных областей, например посредством выполнения дискретного косинусного преобразования (DCT)). Другими словами, устройство 100 для кодирования изображения может выполнять множество операций обработки для кодирования изображения на основе блоков обработки, имеющих различные размеры и различные формы. Для кодирования данных изображения, выполняют операции обработки, такие как предсказание, частотное преобразование и энтропийное кодирование, при этом блоки обработки, имеющие один и тот же размер, могут быть использованы для каждой операции или блоки обработки, имеющие разные размеры, могут быть использованы для каждой операции.
Например, устройство 100 для кодирования изображения может выбрать блок обработки, который отличается от предварительно определенного блока кодирования, для предсказания предварительно определенного блока кодирования.
Когда размер блока кодирования составляет 2N×2N (где N это положительное целое число), блоки обработки для предсказания могут быть 2N×2N, 2N×N, N×2N, и N×N. Другими словами, предсказание движения может быть выполнено на основе блока обработки, имеющего форму, посредством которой по меньшей мере одно из высоты и ширины блока кодирования делится поровну на два. Далее, блок обработки, который является основой предсказания, определяется как «блок предсказания».
Режим предсказания может быть по меньшей мере одним из внутреннего режима, внешнего режима, а также режима пропуска, и особый режим предсказания может быть выполнен только для блока предсказания, имеющего особый размер или форму. Например, внутренний режим может быть выполнен только для блоков предсказания, имеющих размеры 2N×2N и N×N форма которых является квадратом. Дополнительно, режим пропуска может быть выполнен только для блока предсказания, имеющего размер 2N×2N. Если множество блоков предсказания существуют в блоке кодирования, режим предсказания с наименьшими ошибками кодирования может быть выбран после выполнения предсказания для каждого блока предсказания.
В качестве альтернативы, устройство 100 для кодирования изображения может выполнять частотное преобразование данных изображения на основе блока обработки, имеющего размер отличный от блока кодирования. Для частотного преобразования в блоке кодирования, частотное преобразование может быть выполнено на основе блока данных, имеющего размер, равный или меньший чем размер блока кодирования. Далее, блок обработки, который является основой частотного преобразования, определяется как «блок преобразования».
Определитель 120 глубины кодирования может определять подблоки кодирования, включенные в максимальный блок кодирования, используя R-D оптимизацию на основе множителя Лагранжа. Другими словами, определитель 120 глубины кодирования может определять, какую форму имеет множество подблоков кодирования, полученное разделением максимального блока кодирования, при этом множество подблоков кодирования имеют разные размеры в соответствии с их глубинами. Кодер 130 данных изображения выводит битовый поток посредством кодирования максимального блока кодирования на основе форм деления, определяемых определителем 120 глубины кодирования.
Кодер 140 информации кодирования кодирует информацию о режиме кодирования максимального блока кодирования, определяемого определителем 120 глубины кодирования. Другими словами, кодер 140 информации кодирования выводит битовый поток посредством кодирования информации о форме деления максимального блока кодирования, информации о максимальной глубине и информации о режиме кодирования подблока кодирования для каждой глубины. Информация о режиме кодирования подблока кодирования может включать в себя информацию о блоке предсказания подблока кодирования, информацию о режиме предсказания для каждого блока предсказания и информацию о блоке преобразования подблока кодирования.
Информацией о формах деления максимального блока кодирования может быть информация, которая указывает, будет ли разделен каждый блок кодирования или нет. Например, при делении и кодировании максимального блока кодирования кодируют информацию, которая указывает, будет ли разделен каждый блок кодирования или нет, и даже когда подразделяют и кодируют подблок кодирования, который сгенерирован посредством деления максимального блока кодирования, кодируют информацию, которая указывает, будет ли разделен каждый подблок кодирования или нет. Информация, которая указывает деление, может представлять собой форму информации флага, которая указывает деление.
Поскольку подблоки кодирования, имеющие разные размеры, существуют для каждого максимального блока кодирования и информация о режиме кодирования должна быть определена для каждого подблока кодирования, информация, по меньшей мере, об одном режиме кодирования может быть определена для одного максимального блока кодирования.
Устройство 100 для кодирования изображения может генерировать подблоки кодирования посредством равного деления и высоты и ширины максимального блока кодирования на два, в соответствии с увеличением глубины. То есть, когда размер блока кодирования k-ой глубины составляет 2N×2N, размер блока кодирования (k+1)-ой глубины составляет N×N.
Таким образом, устройство 100 для кодирования изображения в соответствии с примерным вариантом осуществления может определять оптимальную форму деления для каждого максимального блока кодирования на основе размеров максимальных блоков кодирования и максимальной глубины при рассмотрении характеристик изображения. Посредством изменяемого управления, размер максимального блока кодирования при рассмотрении характеристик изображения и кодирования изображения, путем деления максимального блока кодирования на подблоки кодирования разных глубин, изображения, имеющие различные разрешения, могут быть более эффективно кодированы.
Фиг.2 является блок-схемой устройства 200 для декодирования изображения в соответствии с примерным вариантом осуществления.
На Фиг.2 устройство 200 для декодирования изображения включает в себя блок 210 сбора данных изображения, блок 220 извлечения информации кодирования и декодер 230 данных изображения.
Блок 210 сбора данных изображения собирает данные изображения в соответствии с максимальными блоками кодирования посредством анализа битового потока, принимаемого устройством 200 для декодирования изображения, и выводит данные изображения на декодер 230 данных изображения. Блок 210 сбора данных изображения может извлекать информацию о максимальном блоке кодирования текущей картинки или среза из заголовка текущей картинки или среза. Другими словами, блок 210 сбора данных изображения делит битовый поток в максимальном блоке кодирования так, что декодер 230 данных изображения может декодировать данные изображения в соответствии с максимальными блоками кодирования.
Блок 220 извлечения информации кодирования извлекает информацию о максимальном блоке кодирования, максимальной глубине, форме деления максимального блока кодирования, режиме кодирования подблоков кодирования из заголовка текущей картинки, посредством анализа битового потока, принимаемого устройством 200 для декодирования изображения. Информацию о форме деления и информацию о режиме кодирования предоставляют декодеру 230 данных изображения.
Информация о форме деления максимального блока кодирования может включать в себя информацию о подблоках кодирования, имеющих разные размеры в соответствии с глубинами, включенными в максимальный блок кодирования. Как описано выше, информация о форме деления максимального блока кодирования может представлять собой информацию, которая указывает деление кодируемой информации для каждого блока кодирования, например, информацию флага.
Информация о режиме кодирования может включать в себя информацию о блоке предсказания в соответствии с подблоком кодирования, информацию о режиме предсказания и информацию о блоке преобразования.
Декодер 230 данных изображения восстанавливает текущую картинку посредством декодирования данных изображения каждого максимального блока кодирования на основе информации, извлеченной посредством блока 220 извлечения информации кодирования.
Декодер 230 данных изображения может декодировать подблоки кодирования, включенные в максимальный блок кодирования, на основе информации о форме деления максимального блока кодирования. Процесс декодирования может включать в себя процесс предсказания движения, включающий в себя внутреннее предсказание и компенсацию движения, а также процесс обратного частотного преобразования.
Декодер 230 данных изображения может выполнять внутреннее предсказание или внешнее предсказание на основе информации о блоке предсказания в соответствии с подблоками кодирования и информации о режиме предсказания для того, чтобы предсказывать подблок кодирования. Декодер 230 данных изображения также может выполнять обратное частотное преобразование для каждого подблока кодирования на основе информации о блоке предсказания подблока кодирования.
Фиг.3 иллюстрирует иерархические блоки кодирования в соответствии с примерным вариантом осуществления.
На Фиг.3 иерархические блоки кодирования в соответствии с примерным вариантом осуществления могут включать в себя блоки кодирования, чьи размеры ширина × высота составляют 64×64, 32×32, 16×16, 8×8, и 4×4. Кроме этих блоков кодирования, имеющих правильные квадратные формы, также могут существовать блоки кодирования, чьи размеры ширина × высота составляют 64×32, 32×64, 32×16, 16×32, 16×8, 8×16, 8×4, 4×8.
На Фиг.3, для данных 310 изображения, разрешение которых составляет 1920×1080, размер максимального блока кодирования устанавливают равным 64×64 и максимальную глубину устанавливают равной 2.
Для данных 320 изображения, разрешение которых составляет 1920×1080, размер максимального блока кодирования устанавливают равным 64×64 и максимальную глубину устанавливают равной 3. Для данных 330 изображения, разрешение которых составляет 352×288, размер максимального блока кодирования устанавливают равным 16×16 и максимальную глубину устанавливают равной 1.
Когда разрешение является высоким или объем данных является большим, желательно, чтобы максимальный размер блока кодирования являлся относительно большим для увеличения коэффициента сжатия и точного отражения характеристик изображения. Соответственно, для данных 310 и 320 изображения, имеющих более высокое разрешение, чем данные 330 изображения, 64×64 может быть выбран в качестве размера максимального блока кодирования.
Максимальная глубина указывает общее число уровней в иерархических блоках кодирования. Поскольку максимальная глубина данных 310 изображения составляет 2, блок 315 кодирования данных 310 изображения может включать в себя максимальный блок кодирования, размер более длинной оси которого составляет 64, и подблоки кодирования, размеры более длинных осей которых составляют 32 и 16, в соответствии с увеличением в глубине.
С другой стороны, поскольку максимальная глубина данных 330 изображения составляет 1, блок 335 кодирования данных 330 изображения может включать в себя максимальный блок кодирования, размер более длинной оси которого составляет 16 и блоки кодирования, размеры более длинных осей которых составляют 8 и 4, в соответствии с увеличением в глубине.
Однако, поскольку максимальная глубина данных 320 изображения составляет 3, блок 325 кодирования данных 320 изображения может включать в себя максимальный блок кодирования, размер более длинной оси которого составляет 64 и подблоки кодирования, размеры более длинных осей которых составляют 32, 16, 8 и 4 в соответствии с увеличением в глубине. Поскольку изображение кодируют на основе меньшего подблока кодирования с увеличением глубины, примерный вариант осуществления подходит для кодирования изображения, включающего в себя более детальные сцены.
Фиг.4 блок-схема кодера 400 изображения на основе блока кодирования согласно примерному варианту осуществления.
Блок 410 внутреннего предсказания выполняет внутреннее предсказание по блокам предсказания внутреннего режима в текущем кадре 405, а блок 420 оценки движения и компенсатор 425 движения выполняют внешнее предсказание и компенсацию движения по блокам предсказания внешнего режима, используя текущий кадр 405 и опорный кадр 495.
Остаточные значения генерируют на основе вывода блоков предсказания из блока 410 внутреннего предсказания, блока 420 оценки движения и компенсатора 425 движения, и сгенерированные остаточные значения выводят в качестве квантованных коэффициентов преобразования посредством пропуска через блок 430 частотного преобразования и квантователь 440.
Квантованные коэффициенты преобразования восстанавливают до остаточных значений посредством пропуска через обратный квантователь 460 и блок 470 обратного частотного преобразования, и восстановленные остаточные значения подвергают последующей обработке посредством пропуска через блок 480 деблокирования и блок 490 фильтрации с подавлением блочности, и выводят в качестве опорного кадра 495. Квантованные коэффициенты преобразования могут быть выведены в качестве битового потока 455 посредством пропуска через энтропийный кодер 450.
Для того чтобы выполнять кодирование на основе способа кодирования в соответствии с примерным вариантом осуществления, компоненты кодера 400 изображения, т.е. блок 410 внутреннего предсказания, блок 420 оценки движения, компенсатор 425 движения, блок 430 частотного преобразования, квантователь 440, энтропийный кодер 450, обратный квантователь 460, блок 470 обратного частотного преобразования, блок 480 деблокирования и блок 490 фильтрации с подавлением блочности, выполняют процессы кодирования изображения на основе максимального блока кодирования, подблока кодирования в соответствии с глубинами, блоком предсказания и блоком преобразования.
Фиг.5 является блок-схемой декодера 500 изображения на основе блока кодирования в соответствии с примерным вариантом осуществления.
Битовый поток 505 проходит через анализатор 510 так, что анализируют кодированные данные изображения, которые должны быть декодированы, и информацию кодирования необходимую для декодирования. Кодированные данные изображения выводят в качестве обратно квантованных данных посредством пропуска через энтропийный декодер 520 и обратный квантователь 530 и восстанавливают до остаточных значений посредством пропуска через блок 540 обратного частотного преобразования. Остаточные значения восстанавливают по блокам кодирования посредством их добавления к результату внутреннего предсказания блока 550 внутреннего предсказания или результату компенсации движения компенсатора 560 движения. Восстановленные блоки кодирования используют для предсказания следующих блоков кодирования или следующей картинки посредством пропуска через блок 570 деблокирования и блок 580 фильтрации с подавлением блочности.
Для выполнения декодирования на основе способа декодирования согласно примерному варианту осуществления, компоненты декодера 500 изображения, т.е. анализатор 510, энтропийный декодер 520, обратный квантователь 530, блок 540 обратного частотного преобразования, блок 550 внутреннего предсказания, компенсатор 560 движения, блок 570 деблокирования и блок 580 фильтрации с подавлением блочности, выполняют процессы декодирования изображения на основе максимального блока кодирования, подблока кодирования в соответствии с глубинами, блоком предсказания и блоком преобразования.
В частности, блок 550 внутреннего предсказания и компенсатор 560 движения определяют блок предсказания и режим предсказания в подблоке кодирования, учитвая максимальный блок кодирования и глубину, и блок 540 обратного частотного преобразования выполняет обратное частотное преобразование, учитывая размер блока преобразования.
Фиг.6 иллюстрирует максимальный блок кодирования, подблок кодирования и блок предсказания в соответствии с примерным вариантом осуществления.
Устройство 100 для кодирования изображения и устройство 200 для декодирования изображения в соответствии с примерным вариантом осуществления используют иерархические блоки кодирования, чтобы выполнять кодирование и декодирование при рассмотрении характеристик изображения. Максимальный блок кодирования и максимальная глубина могут быть адаптивно установлены в соответствии с характеристиками изображения или установлены по-разному в соответствии с требованиями пользователя.
Иерархическая структура 600 блока кодирования в соответствии с примерным вариантом осуществления иллюстрирует максимальный блок 610 кодирования, высота и ширина которого составляют 64×64 и максимальная глубина составляет 4. Глубина увеличивается вдоль вертикальной оси структуры 600 иерархических блоков кодирования, и с увеличением глубины, уменьшается высота и ширина подблоков 620-650 кодирования. Блоки предсказания максимального блока 610 кодирования и подблоки 620-650 кодирования показаны вдоль горизонтальной оси структуры 600 иерархических блоков кодирования.
Максимальный блок 610 кодирования имеет глубину 0 и размер блока кодирования, т.е. высоту и ширину, 64×64. Глубина увеличивается вдоль вертикальной оси, и существует подблок 620 кодирования, размер которого составляет 32×32 и глубина составляет 1, подблок 630 кодирования размер которого составляет 16×16 и глубина составляет 2, подблок 640 кодирования, размер которого составляет 8×8 и глубина составляет 3, и подблок 650 кодирования, размер которого составляет 4×4 и глубина составляет 4. Подблок 650 кодирования, размер которого составляет 4×4 и глубина составляет 4, является минимальным блоком кодирования.
На Фиг.6, примеры блока предсказания показаны вдоль горизонтальной оси в соответствии с каждой глубиной. То есть, блок предсказания максимального блока 610 кодирования, глубина которого составляет 0, может быть блоком предсказания размер которого равен блоку 610 кодирования, т.е. 64×64, или блоком 612 предсказания размер которого составляет 64×32, блоком 614 предсказания размер которого составляет 32×64, или блоком 616 предсказания размер которого составляет 32×32, которые имеют размеры меньше, чем блок 610 кодирования, размер которого составляет 64×64.
Блок предсказания блока 620 кодирования, глубина которого составляет 1 и размер составляет 32×32, может быть блоком предсказания, размер которого равен блоку 620 кодирования, т.е. 32×32, или блоком 622 предсказания, размер которого составляет 32×16, блоком 624 предсказания, размер которого составляет 16×32, или блоком 626 предсказания, размер которого составляет 16×16, которые имеют размеры меньше, чем блок 620 кодирования, размер которого составляет 32×32.
Блок предсказания блока 630 кодирования, глубина которого составляет 2 и размер составляет 16×16, может быть блоком предсказания, размер которого равен блоку 630 кодирования, т.е. 16×16, или блоком 632 предсказания, размер которого составляет 16×8, блоком 634 предсказания, размер которого составляет 8×16, или блоком 636 предсказания, размер которого составляет 8×8, которые имеют размеры меньше, чем блок 630 кодирования, размер которого составляет 16×16.
Блок предсказания блока 640 кодирования, глубина которого составляет 3 и размер составляет 8×8, может быть блоком предсказания, размер которого равен блоку 640 кодирования, т.е. 8×8, или блоком 642 предсказания, размер которого составляет 8×4, блоком 644 предсказания, размер которого составляет 4×8, или блоком 646 предсказания, размер которого составляет 4×4, которые имеют размеры меньше, чем блок 640 кодирования, размер которого составляет 8×8.
Наконец, блок 650 кодирования, глубина которого составляет 4 и размер составляет 4×4, является минимальным блоком кодирования и блоком кодирования максимальной глубины, и блок предсказания блока 650 кодирования является блоком 650 предсказания, размер которого составляет 4×4.
Фиг.7 иллюстрирует блок кодирования и блок преобразования в соответствии с примерным вариантом осуществления.
Устройство 100 для кодирования изображения и устройство 200 для декодирования изображения, в соответствии с примерным вариантом осуществления, выполняют кодирование с самим максимальным блоком кодирования или с подблоками кодирования, которые равны или меньше, чем максимальный блок кодирования и получены разделением от максимального блока кодирования.
В процессе кодирования, размер блока преобразования для частотного преобразования выбирают, чтобы он был не больше, чем размер соответствующего блока кодирования. Например, когда текущий блок 710 кодирования имеет размер 64×64, частотное преобразование может быть выполнено с использованием блока 720 преобразования, имеющего размер 32×32.
Фиг.8А и 8B иллюстрируют формы деления блока кодирования, блока предсказания и блока частотного преобразования в соответствии с примерным вариантом осуществления.
Фиг.8А иллюстрирует кодирующий блок и блок предсказания согласно примерному варианту осуществления.
Левая сторона Фиг.8A показывает форму деления, выбранную устройством 100 для кодирования изображения, в соответствии с примерным вариантом осуществления для того, чтобы кодировать максимальный блок 810 кодирования. Устройство 100 для кодирования изображения делит максимальный блок 810 кодирования на различные формы, выполняет кодирование и выбирает оптимальную форму деления посредством сравнения результатов кодирования различных форм деления друг с другом на основе потерь R-D. Когда это является оптимальным, что максимальный блок 810 кодирования кодируют как есть, максимальный блок 810 кодирования может быть кодирован без деления максимального блока 810 кодирования, как показано на Фиг.8А и 8Б.
Ссылаясь на левую сторону Фиг.8А, максимальный блок 810 кодирования, глубина которого составляет 0, кодируют посредством деления его на подблоки кодирования, глубины которых равны или больше чем 1. То есть, максимальный блок 810 кодирования делят на 4 подблока кодирования, глубины которых составляют 1, и все или некоторые из подблоков кодирования, глубины которых составляют 1, делят на подблоки кодирования, глубины которых составляют 2.
Подблок кодирования, расположенный в верхней правой стороне, и подблок кодирования, расположенный в нижней левой стороне, из числа блоков кодирования, глубины которых составляют 1, делят на подблоки кодирования, глубины которых равны или больше чем 2. Некоторые из подблоков кодирования глубины которых равны или больше чем 2, могут быть разделены на подблоки кодирования, глубины которых равны или больше чем 3.
Правая сторона Фиг.8A показывает форму деления блока 860 предсказания для максимального блока 810 кодирования.
На правой стороне Фиг.8А, блок 860 предсказания для максимального блока 810 кодирования может быть поделен отлично от максимального блока 810 кодирования. Другими словами, блок предсказания для каждого подблока кодирования может быть меньше, чем соответствующий подблок кодирования.
Например, блок предсказания для подблока 854 кодирования, расположенный в нижней правой стороне, среди подблоков кодирования, глубины которых составляют 1, может быть меньше, чем подблок 854 кодирования блока 810 кодирования. В дополнение, блоки предсказания для некоторых (814, 816, 850 и 852) подблоков 814, 816, 818, 828, 850 и 852 кодирования, глубины которых составляют 2, могут быть меньше, чем соответственно подблоки 814, 816, 850, и 852 кодирования. В дополнение, блоки предсказания для подблоков 822, 832 и 848 кодирования, глубины которых составляют 3, могут быть меньше, чем соответственно подблоки 822, 832 и 848 кодирования. Блоки предсказания могут иметь форму, посредством которой соответствующие подблоки кодирования делят ровно на два в направлении высоты или ширины, или иметь форму, посредством которой соответствующие подблоки кодирования делят ровно на четыре в направлениях высоты и ширины.
Фиг.8B иллюстрирует блок предсказания и блок преобразования в соответствии с примерным вариантом осуществления.
Левая сторона Фиг.8B показывает форму деления блока предсказания для максимального блока 810 кодирования, показанного в правой стороне Фиг.8А, и правая сторона Фиг.8B показывает форму деления блока преобразования максимального блока 810 кодирования.
На правой стороне Фиг.8B, форма деления блока 870 преобразования может быть установлена отлично от блока 860 предсказания.
Например, даже если блок предсказания для блока 854 кодирования, глубина которого составляет 1, выбирают с формой, посредством которой высоту блока 854 кодирования делят ровно на два, блок преобразования может быть выбран с таким же размером, что и блок 854 кодирования. Кроме того, даже если блоки предсказания для блоков 814 и 850 кодирования, глубины которых составляют 2, выбирают с формой, посредством которой высоту каждого из блоков 814 и 850 кодирования делят ровно на два, блок преобразования может быть выбран с таким же размером, что и оригинальный размер каждого из блоков 814 и 850 кодирования.
Блок преобразования может быть выбран с меньшим размером, чем блок предсказания. Например, когда блок предсказания для блока 852 кодирования, глубина которого составляет 2, выбирают с формой, посредством которой ширину блока 852 кодирования делят ровно на два, блок преобразования может быть выбран с формой, посредством которой блок 852 кодирования делят ровно на четыре в направлениях высоты и ширины, и которая имеет меньший размер, чем форма блока предсказания.
Фиг.9 является блок-схемой устройства 900 для кодирования изображения в соответствии с его другим вариантом осуществления.
На Фиг.9, устройство 900 для кодирования изображения в соответствии с текущим примерным вариантом осуществления включает в себя определитель 910, контроллер 920 и кодер 930. Устройство 900 для кодирования изображения может быть устройством для кодирования изображения на основе блока кодирования, блока предсказания и блока преобразования, размеры которых ступенчато изменяют в соответствии с глубинами описанными выше.
Определитель 910 определяет, включает ли в себя ввод первого блока кодирования на устройство 900 для кодирования изображения для выполнения кодирования область, которая отклоняется от границы текущей картинки.
Когда первый блок кодирования не включает в себя область, которая отклоняется от границы текущей картинки, устройство 900 для кодирования изображения кодирует первый блок кодирования как есть. Устройство 900 для кодирования изображения может также выполнять предсказание и преобразование, например, DCT, без деления первого блока кодирования или также может делить первый блок кодирования на множество блоков кодирования в соответствии с предварительно определенной глубиной, как описано выше со ссылкой на Фиг.2, 6, 8A и 8B.
Однако, когда первый блок кодирования включает в себя область, которая отклоняется от границы текущей картинки, устройство 900 для кодирования изображения делит первый блок кодирования на вторые блоки кодирования и кодирует только второй блок кодирования, который не отклоняется от границы текущей картинки.
Другими словами, устройство 900 для кодирования изображения кодирует первый блок кодирования с использованием различных способов кодирования в зависимости от того, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки. Таким образом, определитель 910 сначала определяет, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки. Это будет описано ниже со ссылкой на Фиг.10A и 10B.
Фиг.10A и 10B иллюстрируют блок кодирования границы картинки в соответствии с примерным вариантом осуществления.
На Фиг.10A и 10B, первый блок 1020 кодирования распространяется за границу 1010 текущей картинки. Когда размер текущей картинки не является кратным размеру максимального блока кодирования, например, когда размер максимального блока кодирования установлен в 32×32 для кодирования текущей картинки и ширина или высота текущей картинки не является кратной 32, максимальный блок кодирования может включать в себя область 1024, которая отклоняется от границы 1010 текущей картинки. Кроме того, первый блок 1040 кодирования может включать в себя область 1044, которая отклоняется от границы 1030 текущей картинки, как проиллюстрировано на Фиг.10B. На Фиг.10А, левая сторона границы 1010 текущей картинки является внутренней областью текущей картинки, а правая сторона границы 1010 текущей картинки является внешней областью текущей картинки. На Фиг.10В, верхний участок границы 1030 текущей картинки является внутренней областью текущей картинки, а нижний участок границы 1030 текущей картинки является внешней областью текущей картинки.
Фиг.10A и 10B иллюстрируют случай, когда первый блок 1020 или 1040 кодирования распространяется за правую и нижнюю границы текущей картинки. Однако, первый блок 1020 или 1040 кодирования может также распространяться за левую и верхнюю границы текущей картинки.
Определитель 910 сравнивает границу первого блока 1020 или 1040 кодирования с границей текущей картинки, чтобы определить, включает ли в себя первый блок 1020 или 1040 кодирования область, которая отклоняется от границы 1010 или 1030 текущей картинки.
Когда правая граница первого блока 1020 кодирования отклоняется от правой границы текущей картинки или левая граница первого блока 1020 кодирования отклоняется от левой границы текущей картинки, определитель 910 может определять, что первый блок 1020 кодирования включает в себя область, которая отклоняется от границы 1010 текущей картинки. Дополнительно, когда нижняя граница первого блока 1040 кодирования отклоняется от нижней границы текущей картинки или верхняя граница первого блока 1040 кодирования отклоняется от верхней границы текущей картинки, определитель 910 может определять, что первый блок 1040 кодирования включает в себя область, которая отклоняется от границы 1030 текущей картинки.
Возвращаясь к Фиг.9, когда определитель 910 определяет, что первый блок 1020 или 1040 кодирования включает в себя область, которая отклоняется от границы 1010 или 1030 текущей картинки, контроллер 920 делит первый блок 1020 или 1040 кодирования на вторые блоки кодирования.
Устройство для кодирования изображения 900 в соответствии с примерным вариантом осуществления может кодировать и декодировать изображение посредством использования иерархических блоков кодирования, описанных выше. Устройство для кодирования изображения 900 может кодировать и декодировать изображение путем деления максимального блока кодирования на подблоки кодирования, имеющие предварительно определенные глубины. В этой связи глубины указывают степени ступенчатого уменьшения от размера максимального блока кодирования до размера предварительно определенного подблока кодирования.
Контроллер 920 делит первый блок 1020 кодирования на вторые блоки кодирования в соответствии с глубинами. Например, когда первый блок 1020 кодирования является максимальным блоком кодирования, имеющим глубину 0, контроллер 1020 может делить первый блок 1020 кодирования, по меньшей мере, на один блок кодирования, имеющий глубину 1. Контроллер 920 также может делить первый 1020 блок кодирования на блок кодирования, имеющий большую глубину, чем блок кодирования, имеющий глубину 1, т.е. на блок кодирования, имеющий глубину 2 и более. Это будет подробно описано ниже со ссылкой на Фиг.11A и 11B.
Фиг.11A и 11B иллюстрируют способ деления блока кодирования границы картинки в соответствии с примерным вариантом осуществления.
Фиг.11A иллюстрирует случай, в котором первый блок 1020 кодирования, проиллюстрированный на Фиг.10A, делят на вторые блоки 1110, 1120, 1130 и 1140 кодирования. Когда первый блок 1020 кодирования распространяется за границу картинки, первый блок 1020 кодирования включает в себя область 1024, которая отклоняется от границы текущей картинки, как описано со ссылкой на Фиг.10А.
Первый блок 1020 кодирования делят на вторые блоки 1110, 1120, 1130 и 1140 кодирования, имеющие разные глубины, и отличают от вторых блоков 1110 и 1120 кодирования в области, которая не отклоняется от границы текущей картинки, и отличают от вторых блоков 1130 и 1140 кодирования в области, которая отклоняется от границы текущей картинки.
Фиг.11B иллюстрирует случай, в котором первый блок 1040 кодирования, проиллюстрированный на Фиг.10В, делят на вторые блоки 1150, 1160, 1170 и 1180 кодирования.
Первый блок 1040 кодирования делят на вторые блоки 1150, 1160, 1170 и 1180 кодирования, имеющие разные глубины, и отличают от вторых блоков 1150 и 1160 кодирования в области, которая не отклоняется от границы текущей картинки, и отличают от вторых блоков 1170 и 1180 кодирования в области, которая отклоняется от границы текущей картинки.
Фиг.11A и 11B иллюстрируют случай, в котором первый блок 1020 или 1040 кодирования делят на четыре вторых блока кодирования, имеющих одинаковый размер, причем первый блок 1020 или 1040 кодирования может быть отличен от вторых блоков кодирования в области, которая не отклоняется от границы текущей картинки, и отличен от вторых блоков кодирования в области, которая отклоняется от границы текущей картинки. Однако, даже когда первый блок 1020 или 1040 кодирования делят на четыре вторых блоков кодирования, имеющих одинаковый размер, первый блок 1020 или 1040 кодирования может не быть отличен от второго блока кодирования в области, которая не отклоняется от границы текущей картинки, или отличен от области, которая отклоняется от границы текущей картинки. Это будет описано со ссылкой на Фиг.12А и 12В более подробно.
Фиг.12A и 12B иллюстрируют способ деления блока кодирования границы картинки в соответствии с другим примерным вариантом осуществления.
Как проиллюстрировано на Фиг.12A, когда первый блок 1220 кодирования располагается на границе картинки, даже когда первый блок 1220 кодирования делят на вторые 1230, 1240, 1250 и 1260 блоки кодирования, первый блок 1220 кодирования может не быть отличен от вторых блоков кодирования в области, которая отклоняется от границы текущей картинки, или отличен от вторых блоков кодирования в области, которая не отклоняется от границы текущей картинки. Причиной этого является то, что вторые блоки 1250 и 1260 кодирования все еще включают в себя область, которая отклоняется от границы текущей картинки, и область, которая не отклоняется от границы текущей картинки.
Таким образом, когда первый блок 1220 кодирования расположен на границе картинки, первый блок 1220 кодирования неоднократно делят, как проиллюстрировано на Фиг.12А. На Фиг.12A, вторые блоки 1250 и 1260 кодирования дополнительно делят для того, чтобы генерировать третьи блоки с 1252 по 1258 и с 1262 по 1268 кодирования.
Посредством дополнительного деления вторых блоков 1250 и 1260 кодирования на третьи блоки кодирования, имеющие меньшие размеры, чем размеры вторых блоков 1250 и 1260 кодирования, первый блок 1220 кодирования может быть отличен от блоков 1230, 1240, 1252, 1254, 1262 и 1264 кодирования в области, которая не отклоняется от границы текущей картинки, и отличен от блоков 1256, 1258, 1266 и 1268 кодирования в области, которая отклоняется от границы текущей картинки.
Возвращаясь к Фиг.9, когда первый блок 1020, 1040 или 1220 кодирования разделяется контроллером 920 для того, чтобы отличить его от блоков кодирования в области, которая отклоняется от границы текущей картинки, и отличить от блоков кодирования в области, которая не отклоняется от границы текущей картинки, как проиллюстрировано на Фиг.11A, 11B, 12B, кодер 930 кодирует только блоки кодирования, которые находятся в области, которая не отклоняется от границы текущей картинки, из числа блоков кодирования, сгенерированных делением первого блока кодирования.
Когда первый блок кодирования не включает в себя область, которая отклоняется от границы текущей картинки, кодируют все первые блоки кодирования. Устройство для кодирования изображения 900 может также выполнять предсказание и частотное преобразование, например, DCT, без деления первого блока кодирования или может также делить первый блок кодирования на множество блоков кодирования в соответствии с предварительно определенной глубиной, как описано выше со ссылкой на Фиг.2, 6, 8А и 8B.
Однако, когда первый блок кодирования включает в себя область, которая отклоняется от границы текущей картинки, только пиксельные значения области, которая не отклоняется от границы текущей картинки, кодируют в соответствии с результатом деления контроллера 920.
Кодируют вторые блоки 1110 и 1120 кодирования, расположенные на левой стороне Фиг.11А, и кодируют вторые блоки 1150 и 1160 кодирования, расположенные в верхнем участке Фиг.11В. Кодируют вторые блоки 1230 и 1240 кодирования, расположенные на левой стороне Фиг.12B и третьи блоки 1252, 1254, 1262 и 1264 кодирования, расположенные на левой стороне Фиг.12B. Блок кодирования, который не отклоняется от границы текущей картинки, предсказывают на основе предварительно определенного блока предсказания и преобразуют остаточные значения, сгенерированные в соответствии с результатом предсказания, на основе предварительно определенного блока преобразования.
Устройство для кодирования изображения 900 согласно примерному варианту осуществления может кодировать только пиксельные значения, которые не отклоняются от границы текущей картинки, из числа первых пиксельных блоков, расположенных на границе картинки так, что коэффициент сжатия может быть предохранен от снижения, обуславливаемого кодированием ненужных пиксельных значений, которые отклоняются от границы текущей картинки.
Кроме того, информация о делении кодера 930, например, информация флага, которая указывает деление кодера 930, в необязательном порядке может быть кодирована. Когда первый блок кодирования распространяется за границу картинки, первый блок кодирования разделяется контроллером 920. Поскольку деление необходимо для кодирования только пиксельных значений области, которые не отклоняются от границы текущей картинки, информация о делении первого блока кодирования не нуждается в кодировании. Причиной этого является то, что даже когда информацию о делении кодера 930 не кодируют отдельно, декодер может знать, что делят первый блок кодирования. Однако, согласно другому примерному варианту осуществления, даже когда необходимо деление первого блока кодирования, информация о делении кодера 930 также может быть кодирована отдельно.
Однако, поскольку кодер 930 не кодирует пиксельные значения в области, которая отклоняется от границы текущей картинки, посредством использования способа кодирования изображения, описанного выше, первый блок кодирования, который распространяется за границу текущей картинки, может не быть использован в предсказании других блоков кодирования. Это будет подробно описано со ссылкой на Фиг.13А и 13В.
Фиг.13A и 13B иллюстрируют способ внутреннего предсказания согласно примерному варианту осуществления.
На Фиг.13А, в способе внутреннего предсказания в соответствии с текущим примерным вариантом осуществления, когда предварительно определенный блок 1310 предсказания является внутренне- предсказанным, смежные пиксельные значения 1320, которые были предварительно кодированы, могут быть использованы. В частности, во внутреннем предсказании, в соответствии с текущим примерным вариантом осуществления, пиксели, имеющие высоту "PuSize", могут быть дополнительно использованы в продольном направлении нижней левой стороны блока 1310 предсказания.
В способе кодирования изображения в соответствии с примерными вариантами осуществления изображение кодируют, используя иерархический блок кодирования, как проиллюстрировано на Фиг.8А. Таким образом, внутреннее предсказание может быть выполнено с использованием пикселей, которые являются смежными с левой стороной блока 1310 предсказания, а также пикселей, которые являются смежными с нижней левой стороной блока 1310 предсказания. Например, когда подблок 830 кодирования, проиллюстрированный на Фиг.8А внутренне-предсказывают, внутреннее предсказание может быть выполнено с использованием пикселей, которые являются смежными с левой стороной и нижней левой стороной подблока 830 кодирования, т.е. пикселей, включенных в подблок 828 кодирования, а также пикселей, которые являются смежными с верхним участком и верхней правой стороной подблока 830 кодирования, т.е. пикселей, включенных в подблок 812 кодирования.
Однако пиксели, которые являются смежными с верхней правой стороной и нижней левой стороной блока кодирования, могут быть недоступны. Когда кодируют блок 1330 кодирования, как проиллюстрировано на Фиг.13В, некоторые пиксельные значения 1346 из числа пиксельных значений, которые являются смежными с верхней правой стороной блока 1330 кодирования, могут не быть использованы. Причина этого заключается в том, что когда кодируют блок 1340 кодирования, который расположен в верхней правой стороне блока 1340 кодирования, блок 1344 кодирования в области, которая отклоняется от границы 1350 текущей картинки, не кодируют. Таким образом, смежными пикселями, которые могут быть использованы во внутреннем предсказании блока 1330 кодирования, могут быть только пиксели, которые являются смежными с верхним участком, левой стороной и нижней левой стороной блока 1330 кодирования.
Кодер 930 определяет, больше ли «cux+cuSize+cuSize» чем «Frame_width», описанный выше, чтобы определить, могут ли быть использованы пиксели, которые являются смежными с верхней правой стороной блока 1330 кодирования. «cux» является X-координатой левой границы блока 1330 кодирования, и «cuSize» является шириной и высотой блока 1330 кодирования, и «Frame_width» является шириной текущей картинки.
Кодер 930 определяет, больше ли «cuy+cuSize+cuSize» чем «Frame_height», описанный выше, чтобы определить, могут ли быть использованы пиксели, которые являются смежными с нижней левой стороной блока 1330 кодирования. «cuy» является Y-координатой верхней границы блока 1330 кодирования, и «cuSize» является шириной и высотой блока 1330 кодирования, и «Frame_ height» является высотой текущей картинки.
Кодер 930 может кодировать информацию о способе кодирования, т.е. информацию о режиме кодирования, на основе того, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки. Когда первый блок кодирования включает в себя область, которая отклоняется от границы текущей картинки, кодер 930 может кодировать информацию о режиме кодирования так, что первый режим кодирования может указывать второй режим кодирования.
Случай, в котором информацию о режиме предсказания кодируют в первом блоке кодирования, будет описан со ссылкой на Фиг.18А-18G.
Фиг.18А-18G иллюстрируют режимы предсказания в первом блоке кодирования, имеющем размер 2N×2N, включающий в себя область, которая отклоняется от границы текущей картинки. Заштрихованные участки по Фиг.18А-18H указывают области, которые отклоняются от границы текущей картинки.
На Фиг.18А, правая область N×2N первого блока кодирования, имеющего размер 2N×2N, является областью, которая отклоняется от границы текущей картинки. Когда кодер 930 кодирует первый блок кодирования, проиллюстрированный на Фиг.18А, и выбирает режим предсказания в первом блоке кодирования, имеющем размер 2N×2N, предсказание не выполняют в области, которая отклоняется от границы текущей картинки. Таким образом, кодер 930 выполняет предсказание в режиме предсказания N×2N.
Другими словами, даже когда кодер 930 устанавливает режим предсказания первого блока кодирования в режим предсказания 2N×2N, предсказание осуществляют таким же методом, что и метод, в котором режим предсказания первого блока кодирования устанавливают в режим предсказания N×2N. Таким образом, не нужно, чтобы был отдельно установлен N×2N, и информация о режиме предсказания 2N×2N может быть использована в качестве информации о режиме предсказания N×2N. Это является идентичным эффекту того, что тип режима предсказания уменьшается. Таким образом, кодер 930 может уменьшать число битов, которые необходимы для кодирования информации о режиме предсказания.
Кроме того, на Фиг.18B, кодер 930 может заменять режим предсказания 2N×N, посредством установки режима предсказания первого блока кодирования в режим предсказания 2N×2N.
На Фиг.18C, кодер 930 может заменять режим предсказания 2N×2N/2, посредством установки режима предсказания первого блока кодирования в режим предсказания 2N×2N. На Фиг.18С, высота предсказываемой области уменьшается на 1/2 по сравнению с Фиг.18B. Однако, как и на Фиг.18B, предсказание выполняют только в области, которая не отклоняется от границы текущей картинки. Таким образом, режим предсказания 2N×N/2 может быть заменен посредством установки режима предсказания первого блока кодирования в режим предсказания 2N×2N.
На Фиг.18D, кодер 930 может заменять режим предсказания 2N×N, посредством установки режима предсказания первого блока кодирования в режим предсказания N×N. Когда первый блок кодирования, проиллюстрированный на Фиг.18D, предсказывают в режим предсказания 2N×N и правую половину первого блока кодирования включают в область, которая отклоняется от границы текущей картинки, первый блок кодирования, имеющий размер N×N, предсказывают как в режиме предсказания N×N. Таким образом, режим предсказания 2N×N может быть заменен режимом предсказания N×N.
На Фиг.18E, кодер 930 может заменять режим предсказания 2N×N/2, посредством установки режима предсказания первого блока кодирования в режим предсказания 2N×N. Предсказание выполняют на основе двух блоков предсказания, высоты которых уменьшают в 1/2 по сравнению с Фиг.18Б. Таким образом, режим предсказания первого блока кодирования может быть установлен в 2N×N режим предсказания, высоту которого уменьшают в 1/2 от режима предсказания 2N×2N, установленного на Фиг.18B.
На Фиг.18F, кодер 930 может заменять режим предсказания N×N посредством установки режима предсказания первого блока кодирования в режим предсказания 2N×2N. Предсказание первого блока кодирования, проиллюстрированного на Фиг.18F, также выполняют только в области, которая не отклоняется от границы текущей картинки, как на Фиг.18A, 18B и 18C. Таким образом, режим предсказания N×N может быть заменен посредством установки режима предсказания первого блока кодирования в режим предсказания 2N×2N.
На Фиг.18G, кодер 930 может заменять режим предсказания N/2×N посредством установки режима предсказания первого блока кодирования в режим предсказания N×2N. Предсказание выполняют на основе двух блоков предсказания, ширины которых уменьшают в 1/2 по сравнению с Фиг.18F. Таким образом, режим предсказания в первом блоке кодирования может быть установлен в режим предсказания N×2N, ширину которого уменьшают в 1/2 от режима предсказания 2N×2N, установленного на Фиг.18B.
Кодирование посредством устройства 900 для кодирования изображения, описанное выше со ссылкой на Фиг.9-13, может быть выполнено со следующим синтаксисом программирования.
UInt uiLPelX
UInt uiRPelX
UInt uiTPelY
UInt uiBPelY
if(!((uiRPelX<pcCU->getSlice()->getWidth())&&(uiBPelY<pcCU-> getSlice()->getHeight())))
{
go_next_depth_process();
}
Обращаясь к синтаксису программирования, X-координату левой границы, X-координату правой границы, Y-координату верхней границы и нижнюю Y-координату нижней границы первого блока кодирования получают посредством использования функций, таких как 'UInt uiLPeLX', 'UInt uiRPeLX', 'UInt uiTPeLY' и 'UInt uiBPeLY', а ширину и высоту текущей картинки получают используя 'pcCU->getSlice()->getWidth()' и 'pcCU->getSlice()->getHeight()'.
Затем X-координату левой границы первого блока кодирования и ширину текущей картинки сравнивают друг с другом, и Y-координату нижней границы первого блока кодирования и высоту текущей картинки сравнивают друг с другом. Когда X-координата левой границы первого блока кодирования больше, чем ширина текущей картинки, или Y-координата нижней границы первого блока кодирования больше, чем высота текущей картинки, посредством вызова функции 'go_next_depth_process()', первый блок кодирования делят на второй блок кодирования, имеющий следующую глубину, то есть глубину 'k+1', которая больше, чем глубина 'k' первого блока кодирования, и кодируют только второй блок кодирования, который не отклоняется от границы текущей картинки.
Однако, даже когда устройство 900 для кодирования изображения кодирует только область, которая не отклоняется от границы текущей картинки, как проиллюстрировано на Фиг.9-13, адрес максимального блока кодирования устанавливают исходя из предположения, что область, которая отклоняется от границы текущей картинки, также кодируют. Это будет описано со ссылкой на Фиг.14 более подробно.
Фиг.14 иллюстрирует индексацию максимального блока кодирования в соответствии с примерным вариантом осуществления.
Обращаясь к Фиг.14, когда текущую картинку 1410 делят на максимальный блок кодирования, имеющий предварительно определенный размер, и кодируют, если ширина текущей картинки 1410 'Frame_width' и ее высота 'Frame_height' не являются кратными ширине максимального блока кодирования, максимальные блоки кодирования распространяется по правой и нижней границам текущей картинки 1410, как проиллюстрировано на Фиг.14.
На Фиг.9-13, когда устройство 900 для кодирования изображения кодирует максимальный блок кодирования, который распространяется по границе текущей картинки, кодирование выполняют только в области, которая не отклоняется от границы текущей картинки. Однако, когда устанавливают адрес максимального блока кодирования, адрес максимального блока кодирования основывается не на 'Frame_width' и 'Frame_height', а на 'Frame_widthN' и 'Frame_heightN'. Другими словами, адрес максимального блока кодирования устанавливают посредством назначения адреса максимальному блоку кодирования, который распространяется за правую границу и нижнюю границу текущей картинки.
Например, максимальный блок кодирования, который расположен на самом правом участке первого ряда, распространяется по правой границе текущей картинки, кодирование выполняют только в области, которая не отклоняется от границы текущей картинки, и 'P' назначают максимальному блоку кодирования в качестве адреса. Таким образом, адрес максимального блока кодирования, который расположен на самом левом участке второго ряда является 'P+1'. 'Frame_widthN' и 'Frame_heightN' могут быть вычислены следующим образом.
Если Frame_width%LcuSize не равен to 0,
Frame_widthN=(Frame_width/LcuSize+1)*LcuSize
Если Frame_height%LcuSize не равен to 0,
Frame_heightN=(Frame_height/LcuSize+1)*LcuSize
В приведенном выше вычислении, 'Frame_width%LcuSize' представляет собой остаток, который получается отделения 'Frame_width' на 'LcuSize' и 'Frame_height%LcuSize' представляет собой остаток, который получается от деления 'Frame_height' на 'LcuSize'. 'Frame_width/LcuSize' представляет собой коэффициент, который получают посредством деления 'Frame_width' на 'LcuSize', и 'Frame_height/LcuSize' представляет собой коэффициент, который получают посредством деления 'Frame_height' на 'LcuSize'. 'LcuSize' представляет собой ширину и высоту максимального блока кодирования, когда максимальный блок кодирования имеет совершенную прямоугольную форму.
Фиг.15 представляет блок-схему последовательности операций, иллюстрирующую способ кодирования изображения в соответствии с примерным вариантом осуществления.
Обращаясь к Фиг.15, на этапе 1510 устройство 900 для кодирования изображения определяет, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки. Поскольку первый блок кодирования распространяется за границу картинки, как проиллюстрировано на Фиг.10А, 10В и 12А, устройство 900 для кодирования изображения определяет, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки. Для того чтобы определить, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки, границу текущей картинки и границу первого блока кодирования сравнивают друг с другом. Устройство 900 для кодирования изображения определяет, отклоняется ли левая или правая граница первого блока кодирования от левой или правой границы текущей картинки, или отклоняется ли верхняя или нижняя граница первого блока кодирования от верхней или нижней границы текущей картинки.
На этапе 1520 устройство 900 для кодирования изображения делит первый блок кодирования, чтобы получить вторые блоки кодирования на основе результатов определения на этапе 1510. Устройство 900 кодирования изображения может делить первый блок кодирования, чтобы получать вторые блоки кодирования, каждый из которых имеет глубину 'k+1', которая больше, чем глубина 'k' первого блока кодирования. Несмотря на то, что первый блок кодирования был разделен для получения второго блока кодирования, если определено еще раз, что второй блок кодирования включает в себя область, которая отклоняется от границы картинки, первый блок кодирования делят до тех пор, пока блок кодирования, генерируемый повторяющимся делением, не перестанет включать в себя область, которая отклоняется от границы картинки.
На этапе 1530 устройство 900 для кодирования изображения кодирует только второй блок кодирования, который не отклоняется от границы картинки, из числа вторых блоков кодирования, генерируемых в результате деления на этапе 1520. Устройство 900 для кодирования изображения предсказывает вторые блоки кодирования, генерирует остаточные значения и выполняет преобразование, квантование и энтропийное кодирование по остаточным значениям. Кроме того, поскольку деление первого блока кодирования, который распространяется за границу картинки, является необходимым в устройстве 900 для кодирования изображения, устройство 900 для кодирования изображения может не кодировать информацию о делении первого блока кодирования.
Кроме того, устройство 900 для кодирования изображения может кодировать информацию о режиме кодирования в зависимости от того, включает ли в себя первый блок кодирования область, которая отклоняется от границы картинки, как описано выше со ссылкой на Фиг.18А-18G.
Фиг.16 представляет собой блок-схему устройства 1600 для декодирования изображения в соответствии с другим примерным вариантом осуществления.
Обращаясь к Фиг.16, устройство 1600 для декодирования изображения в соответствии с текущим примерным вариантом осуществления включает в себя определитель 1610, анализатор 1620 и декодер 1630.
Определитель 1610 определяет, включает ли в себя первый блок кодирования, который должен быть кодирован, область, которая отклоняется от границы текущей картинки. Определитель 1610 может определить, содержит ли первый блок кодирования, который должен быть кодирован, область, которая отклоняется от границы текущей картинки, на основе блока кодирования, который был предварительно декодирован. Например, на Фиг.14, когда блок кодирования, который был немедленно декодирован, представляет собой блок кодирования 'Р-1', поскольку первый блок кодирования, который должен быть декодирован, распространяется за границу текущей картинки, определитель 1610 может определять, что первый блок кодирования включает в себя область, которая отклоняется от границы текущей картинки.
Другими словами, определитель 1610 определяет, отклоняется ли левая и правая граница первого блока кодирования, который должен быть декодирован в настоящий момент, от левой или правой границы текущей картинки, или отклоняется ли верхняя или нижняя граница первого блока кодирования от верхней или нижней границы текущей картинки, тем самым определяя, распространяется ли первый блок кодирования, который должен быть декодирован, за границу текущей картинки.
Анализатор 1620 принимает битовый поток изображения и обрабатывает только данные, касающиеся второго блока кодирования, который не отклоняется от границы картинки, из числа вторых блоков кодирования, генерируемых посредством деления первого блока кодирования, если определено, что первый блок кодирования включает в себя область, которая отклоняется от границы текущей картинки. Второй блок кодирования может быть блоком кодирования, имеющим глубину 'k+1', которая больше, чем глубина 'k' первого блока кодирования. Кроме того, если определено, что первый блок кодирования не включает в себя область, которая отклоняется от границы картинки, анализатор 1620 анализирует все данные, касающиеся первого блока кодирования.
Когда определено, что первый блок кодирования включает в себя область, которая отклоняется от границы картинки, и анализатор 1620 анализирует только данные, касающиеся второго блока кодирования, который не отклоняется от границы картинки, информация о делении первого блока кодирования, например, информация флага, может не быть анализирована. Когда деление первого блока кодирования, который распространяется за границу картинки, является необходимым, и не кодируют информацию о делении первого блока кодирования, нет информации, которая должна быть анализирована, и информации о делении первого блока кодирования не нужно быть проанализированной.
Однако, если определено, что первый блок кодирования включает в себя область, которая отклоняется от границы картинки, деление первого блока кодирования является необходимым и информацию о делении первого блока кодирования кодируют раздельно, а также информация о делении первого блока кодирования может быть проанализирована.
Поскольку кодируют остаточные значения второго блока кодирования, который не отклоняется от границы картинки, только данные, касающиеся второго блока кодирования, который не отклоняется от границы картинки, из числа вторых блоков кодирования, генерируемых посредством деления первого блока кодирования, анализируют независимо от анализа информации о делении первого блока кодирования.
Декодер 1630 декодирует данные, относящиеся ко второму блоку кодирования, который не отклоняется от границы текущей картинки, анализируемые анализатором 1620. Декодер 1630 выполняет энтропийное декодирование, обратное квантование и обратное преобразование, например, обратное DCT, в отношении данных, относящихся ко второму блоку кодирования, который не отклоняется от границы текущей картинки, чтобы восстановить остаточные значения и добавить значение предсказания, которое генерируют посредством выполнения внутреннего или внешнего предсказания по второму блоку кодирования, к восстановленным остаточным значениям, чтобы восстановить второй блок кодирования.
Способ установки адреса блока кодирования, который используют при декодировании, является таким же, что и на Фиг.14, и смежные пиксели, которые могут быть использованы для внутреннего предсказания во время декодирования, являются такими же, что и на Фиг.13А и 13В.
Информация о режиме кодирования первого блока кодирования, который используется, когда декодер 1630 выполняет декодирование, может быть информацией о режиме кодирования, кодируемой в зависимости от того, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки, как описано выше со ссылкой на Фиг.18А-18G.
Фиг.17 представляет собой блок-схему, иллюстрирующую способ декодирования изображения в соответствии с примерным вариантом осуществления.
Обращаясь к Фиг.17, на этапе 1710 устройство 1600 для декодирования изображения определяет, включает ли в себя первый блок кодирования, который должен быть декодирован, область, которая отклоняется от границы текущей картинки. Устройство 1600 для декодирования изображения определяет, отклоняется ли правая или левая граница первого блока кодирования от правой или левой границы текущей картинки, или отклоняется ли верхняя или нижняя граница первого блока кодирования от верхней или нижней границы текущей картинки, посредством обращения к блоку кодирования, который был предварительно декодирован.
На этапе 1720 устройство 1600 для декодирования изображения анализирует данные, относящиеся ко второму блоку кодирования, который не отклоняется от границы картинки, из числа блоков кодирования, генерируемых посредством деления первого блока кодирования, на основе результатов определения на этапе 1710. Если определено на этапе 1710, что первый блок кодирования включает в себя область, которая отклоняется от границы текущей картинки, анализируют данные, относящиеся ко второму блоку кодирования, который не отклоняется от границы картинки, из числа вторых блоков кодирования, генерируемых посредством деления первого блока кодирования. Как описано выше, второй блок кодирования может быть блоком кодирования, имеющим глубину 'k+1', которая больше, чем глубина 'k' первого блока кодирования.
На этапе 1730 устройство 1600 для декодирования изображения декодирует только данные, относящиеся ко второму блоку кодирования, который не отклоняется от границы текущей картинки, которые проанализированы на этапе 1720. Устройство 1600 для декодирования изображения выполняет энтропийное декодирование, обратное квантование и обратное преобразование в отношении данных, относящихся по второму блоку кодирования, который не отклоняется от границы картинки, чтобы восстановить остаточные значения и добавить значения предсказания, которые генерируют в результате предсказания, к восстановленным остаточным значениям, чтобы восстановить второй блок кодирования.
Информацией о режиме кодирования первого блока кодирования, которую используют, когда устройство 1600 для декодирования изображения выполняет декодирование, может быть информация о режиме кодирования, кодируемая в зависимости от того, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки, как описано выше со ссылкой на Фиг.18А-18G.
Фиг.19 представляет блок-схему, иллюстрирующую способ кодирования изображения в соответствии с другим примерным вариантом осуществления.
Обращаясь к Фиг.19, на этапе 1910 устройство 900 для кодирования изображения определяет, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки.
На этапе 1920 устройство 900 для кодирования изображения делит первый блок кодирования на вторые блоки кодирования на основе результатов определения на этапе 1910. Первый блок кодирования может быть разделен на второй блок кодирования, имеющий глубину 'k+1', которая больше, чем глубина 'k' первого блока кодирования.
На этапе 1930 устройство 900 для кодирования изображения дополняет область, которая отклоняется от границы вторых блоков кодирования, сгенерированных в результате деления на этапе 1920, предварительно определенными значениями. Это будет описано со ссылкой на Фиг.20A и 20B более подробно.
Фиг.20A и 20B иллюстрируют способ кодирования блока кодирования из границы картинки в соответствии с примерным вариантом осуществления.
Если определитель 910 устройства 900 для кодирования изображения определяет, что первый блок 2020 кодирования распространяется за границу картинки, контроллер 920 делит первый блок 2020 кодирования для получения вторых блоков кодирования, имеющих меньшие размеры, чем первый блок 2020 кодирования, то есть, вторых блоков кодирования, имеющих большую глубину, чем глубина первого блока 2020 кодирования. Однако, когда второй блок кодирования является минимальным блоком кодирования, контроллер 920 не может делить второй блок кодирования для получения меньших блоков кодирования, чем второй блок кодирования и не может делить второй блок кодирования как-либо дополнительно. Таким образом, второй блок кодирования не может быть отличен от области, которая отклоняется от границы картинки, или области, которая не отклоняется от границы картинки.
Таким образом, кодер 930 дополняет область, которая отклоняется от границы 2010, из числа вторых блоков 2024 и 2028 кодирования, как проиллюстрировано на Фиг.20B. Все пиксельные значения области, которая отклоняется от границы 2010 текущей картинки, устанавливают в '0', или пиксельные значения области, которая отклоняется от границы 2010 текущей картинки устанавливают такими же, что и смежные пиксельные значения области, которая не отклоняется от границы 2010 текущей картинки.
Возвращаясь к Фиг.19, на этапе 1940 устройство 900 для кодирования изображения кодирует по меньшей мере один второй блок кодирования, включающий в себя область, дополненную на этапе 1930.
Кодер 930 устройства 900 для кодирования изображения генерирует остаточные значения посредством предсказания вторых блоков с 2022 по 2028 кодирования и выполняет частотное преобразование по остаточным значениям. Кодер 930 выполняет квантование и энтропийное кодирование по коэффициентам частотного преобразования, генерируемым посредством выполнения частотного преобразования, тем самым кодируя вторые блоки с 2022 по 2028 кодирования.
Когда кодируют вторые блоки 2024 и 2028, которые распространяются за границу 2010 текущей картинки, все вторые блоки 2024 и 2028 кодирования могут быть предсказаны, либо предсказание может быть выполнено только в области, которая не отклоняется от границы 2010 текущей картинки. Например, когда второй блок 2024 кодирования, который распространяется за границу 2010 текущей картинки, составляет 8×8, второй блок 2024 кодирования может быть предсказан, чтобы иметь размер 8×8, включающий в себя область, которая отклоняется от границы 2010 текущей картинки, или чтобы иметь размер 4×8, который не включает в себя область, которая отклоняется от границы 2010 текущей картинки.
Дополнительно, все вторые блоки 2024 и 2028 кодирования, которые распространяются за границу 2010 текущей картинки, могут быть преобразованы, или преобразование может быть выполнено только в области, которая не отклоняется от границы 2010 текущей картинки.
Например, когда минимальный блок 2024 кодирования, который распространяется за границу 2010 текущей картинки, составляет 8×8, преобразование может быть выполнено в отношении размера 8×8, включающего в себя область, которая отклоняется от границы 2010 текущей картинки. Когда предсказывают область, которая отклоняется от границы 2010, область, которая отклоняется от границы 2010 текущей картинки, включает в себя остаточные значения. Таким образом, преобразование может быть выполнено в отношении размера второго блока кодирования. Когда не предсказывают область, которая отклоняется от границы 2010 текущей картинки, и нет остаточных значений, область, которая отклоняется от границы 2010 текущего изображения, может быть установлена в произвольное остаточное значение, например, '0' и преобразование может быть выполнено в размере второго блока кодирования. Поскольку остаточные значения в области, которая отклоняется от границы 2010 текущей картинки, не имеют смысла вне зависимости от предсказания, преобразование может быть выполнено посредством установки остаточных значений в области, которая отклоняется от границы 2010 текущей картинки на произвольные значения, имеющие наивысшую эффективность при преобразовании.
Кодер 930 может также выполнять преобразование в отношении размера 4×8 исключая область, которая отклоняется от границы 2010 текущей картинки. Как описано выше, в соответствии с примерными вариантами изображения, поскольку размеры блока кодирования, блока предсказания и блока преобразования могут быть определены независимо, преобразование, в необязательном порядке, может быть выполнено только в области, которая не отклоняется от границы 2010 текущей картинки, посредством использования блока преобразования, имеющего меньший размер, чем минимальный блок кодирования. Так же, как кодирование второго блока кодирования на этапе 1940, кодер 930 может кодировать информацию о режиме кодирования, кодируемую в зависимости от того, включает ли в себя второй блок кодирования область, которая отклоняется от границы 2010 текущей картинки, как описано выше со ссылкой на Фиг.18А и 18G.
Фиг.21 является блок-схемой, иллюстрирующей способ декодирования изображения в соответствии с другим примерным вариантом осуществления.
Обращаясь к Фиг.21, на этапе 2110 определитель 1610 устройства 1600 для декодирования изображения определяет, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки.
На этапе 2120 анализатор 1620 устройства 1600 для декодирования изображения анализирует данные, относящиеся ко вторым блокам кодирования, включающим в себя дополненную область из числа вторых блоков кодирования, сгенерированных посредством деления первого блока кодирования, на основе результатов определения на этапе 2110. Как проиллюстрировано на Фиг.20A, когда второй блок кодирования является минимальным блоком кодирования и распространяется за границу текущей картинки, некоторая часть второго блока кодирования является областью, которая отклоняется от границы текущей картинки. Область может быть дополнена предварительно определенным значением, как описано выше со ссылкой на Фиг.19. Таким образом, анализатор 1620 устройства 1600 для декодирования изображения анализирует данные, относящиеся ко вторым блокам кодирования, включающим в себя дополненную область.
На этапе 2130 декодер 1630 устройства 1600 для декодирования изображения декодирует второй блок кодирования на основе данных, относящихся ко второму блоку кодирования, которые проанализированы на этапе 2120. Декодер 1630 выполняет энтропийное декодирование, обратное квантование, и обратное преобразование в отношении данных, относящихся к проанализированному второму блоку кодирования, чтобы восстановить остаточные значения, и добавляет значения предсказания, генерируемые в результате предсказания, к восстановленным остаточным значениям, чтобы восстановить второй блок кодирования. Декодер 1630 может декодировать информацию о режиме кодирования, кодируемую в зависимости от того, включает ли в себя второй блок кодирования область, которая отклоняется от границы текущей картинки, как описано выше со ссылкой на Фиг.18А и 18G.
Как и в преобразовании, описанном со ссылкой на Фиг.19, обратное преобразование может быть выполнено по всем вторым блокам кодирования, или только в области, которая не отклоняется от границы текущей картинки. Кроме того, предсказание может быть выполнено по всем вторым блокам кодирования, или только в области, которая не отклоняется от границы текущей картинки.
Фиг.22 представляет блок-схему последовательности операций, иллюстрирующую способ кодирования изображения в соответствии с другим примерным вариантом осуществления.
Обращаясь к Фиг.22, на этапе 2210 определитель 910 устройства 900 для кодирования изображения определяет, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки.
На этапе 2220, устройство 900 для кодирования изображения дополняет область, которая отклоняется от границы первого блока кодирования, на основе результатов определения на этапе 2210 предварительно определенным значением. Это будет описано более подробно со ссылкой на Фиг.23А.
Фиг.23A и 23B иллюстрируют способ кодирования блока кодирования из границы картинки в соответствии с другим примерным вариантом осуществления.
Обращаясь к Фиг.23A, когда определитель 910 устройства 900 для кодирования изображения определяет, что первый блок 2320 кодирования распространяется за границу 2310 текущей картинки, кодер 930 дополняет область 2322, которая отклоняется от границы 2310 первого блока 2320 кодирования. Все пиксельные значения области, которая отклоняется от границы 2310 текущей картинки, устанавливают в '0', или смежные пиксельные значения области, которая отклоняется от границы 2310 текущей картинки, устанавливают такими же, что и смежные пиксельные значения области, которая не отклоняется от границы 2010 текущей картинки.
Возвращаясь к Фиг.22, на этапе 2230 кодер 930 устройства 900 для кодирования изображения кодирует первый блок 2320 кодирования, в котором дополняют область 2322, которая отклоняется от границы 2310 первого блока 2320 кодирования на этапе 2220, в режиме кодирования, в котором используют второй блок кодирования, имеющий меньший размер, чем размер первого блока 2320 кодирования. Если правило для способа дополнения совместно используется кодером и декодером, декодер может восстанавливать дополненную область 2322 без кодирования дополненной области 2322 первого блока 2320 кодирования. Таким образом, для необязательного кодирования второго блока 2324 кодирования, который не отклоняется от границы 2310 первого блока 2320 кодирования, кодер 930 устройства 900 для кодирования изображения кодирует первый блок 2320 кодирования в режиме кодирования, в котором используют второй блок кодирования, имеющий меньший размер, чем размер первого блока 2320 кодирования. Это будет описано со ссылкой на Фиг.23B более подробно.
Обращаясь к Фиг.23B, кодер 930 кодирует первый блок 2320 кодирования в режиме кодирования, в котором используют вторые блоки с 2322 по 2328 кодирования, имеющие меньшие размеры, чем размер первого блока 2320 кодирования. Кодер 930 предсказывает каждый второй блок с 2322 по 2328 кодирования в соответствии с режимом кодирования, в котором используют вторые блоки с 2322 по 2328 кодирования, и выполняет частотное преобразование по остаточным значениям, генерируемым в соответствии с результатом предсказания. Кодер 930 выполняет квантование по коэффициентам преобразования, которые генерируют в результате преобразования, и затем выполняет энтропийное кодирование по ним.
Когда кодируют каждый из вторых блоков кодирования, предсказание может быть выполнено только по вторым блокам 2336 и 2338 кодирования области, которая не отклоняется от границы 2310 первого блока 2320 кодирования, и вторые блоки 2336 и 2338 кодирования области, которая не отклоняется от границы 2310 первого блока 2320 кодирования, могут быть кодированы на основе результатов предсказания. Остаточные значения могут быть установлены в предварительно определенное значение, например, '0', без выполнения предсказания по вторым блокам 2332 и 2334 кодирования области, которая отклоняется от границы 2310 первого блока 2320 кодирования.
Дополнительно, только информация о векторе движения и пиксельном значении, относящаяся ко вторым блокам 2336 и 2338 кодирования области, которая не отклоняется от границы 2310 первого блока 2320 кодирования, может быть кодирована, и информация о векторе движения и пиксельном значении, относящаяся ко вторым блокам 2332 и 2334 кодирования области, которая отклоняется от границы 2310 первого блока 2320 кодирования, может не быть кодирована. Информация о пиксельном значении может представлять собой коэффициенты преобразования, например, коэффициенты дискретного косинусного преобразования, которые генерируются посредством выполнения преобразования по пиксельным значениям, включенным в каждый из вторых блоков с 2332 по 2338 кодирования.
На этапе 2230 кодер 930 также может кодировать информацию о режиме кодирования в зависимости от того, включает ли в себя второй блок кодирования область, которая отклоняется от границы, как описано выше со ссылкой на Фиг.18А и 18G.
Фиг.24 представляет собой блок-схему, иллюстрирующую способ декодирования изображения в соответствии с другим примерным вариантом осуществления.
Обращаясь к Фиг.24, на этапе 2410 определитель 1610 устройства 1600 для декодирования изображения определяет, включает ли в себя первый блок кодирования область, которая отклоняется от границы текущей картинки.
На этапе 2420, анализатор 1620 устройства 1600 для декодирования изображения анализирует данные, относящиеся к первому блоку кодирования, включающему в себя область, которая дополняется предварительно определенным значением, на основе результатов определения на этапе 2410.
Проанализированные данные могут включать в себя только информацию о вторых блоках 2336 и 2338 кодирования области, которая не отклоняется от границы 2310 первого блока 2320 кодирования, проиллюстрированной на Фиг.23B. Проанализированные данные могут также включать в себя только информацию о векторе движения и пиксельном значении, относящуюся ко вторым блокам 2336 и 2338 кодирования области, которая не отклоняется от границы 2310 первого блока 2320 кодирования.
На этапе 2430 декодер 1630 устройства 1600 для декодирования изображения декодирует первый блок кодирования в соответствии с режимом кодирования, в котором используют вторые блоки кодирования, имеющие меньшие размеры, чем размер первого блока кодирования, посредством использования проанализированных данных на этапе 2420. Декодер 1630 декодирует первый блок кодирования посредством выполнения энтропийного декодирования, обратного квантования, обратного преобразования и предсказания по вторым блокам кодирования первого блока кодирования в соответствии с режимом кодирования, в котором используются вторые блоки кодирования. Декодер 1630 может декодировать информацию о режиме кодирования, кодируемую в зависимости от того, включает ли в себя второй блок кодирования область, которая отклоняется от границы, и может декодировать второй блок кодирования в соответствии с декодированной информацией о режиме кодирования, как описано выше со ссылкой на Фиг.18А и 18G.
Когда проанализированные данные включают в себя только информацию о вторых блоках 2336 и 2338 кодирования области, которая не отклоняется от границы 2310, декодер 1630 декодирует только вторые блоки 2336 и 2338 кодирования области, которая не отклоняется от границы 2310 в соответствии с режимом кодирования, в котором используются вторые блоки кодирования.
Несмотря на то что примерные варианты осуществления были подробно показаны и описаны со ссылкой на их примерные варианты осуществления, специалистам в данной области техники должно быть понятно, что различные изменения в форме и деталях могут быть сделаны в них, без отклонения от сущности и объема примерных вариантов осуществления, которые определены нижеследующей формулой изобретения. Дополнительно, система в соответствии с примерными вариантами осуществления может быть реализована с использованием считываемого компьютером кода на считываемом компьютером носителе данных.
Например, устройство для кодирования изображения и устройство для декодирования изображения в соответствии с примерными вариантами осуществления, могут включать в себя шину, связанную с каждым из блоков устройств, показанных на Фиг.1, 2, 4, 5, 9 и 16, и по меньшей мере один процессор, соединенный с шиной. Дополнительно, память, связанная, по меньшей мере, с одним процессором для выполнения команд, как описано выше, может быть включена в состав и соединена с шиной для хранения команд и принятых сообщений или сгенерированных сообщений.
Считываемый компьютером носитель данных представляет собой любое устройство хранения данных, которое может хранить данные, которые затем можно считать компьютерной системой. Примеры считываемого компьютером носителя данных включают в себя постоянное запоминающее устройство (ROM), оперативное запоминающее устройство (RAM), CD-ROM, магнитные ленты, дискеты и оптические устройства хранения данных и т.д. Считываемый компьютером носитель данных также может быть распределен по сети, связывающей компьютерные системы, чтобы считываемый компьютером код хранился и исполнялся в распределенном режиме.