СПОСОБ И УСТРОЙСТВО ДЛЯ ВЫПОЛНЕНИЯ ИНТЕРПОЛЯЦИИ НА ОСНОВЕ ПРЕОБРАЗОВАНИЯ И ОБРАТНОГО ПРЕОБРАЗОВАНИЯ
METHOD AND APPARATUS FOR PERFORMING INTERPOLATION BASED ON TRANSFORMATION AND INVERSE TRANSFORMATION

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Устройства и способы, связанные с иллюстративными вариантами осуществления, относятся к интерполяции изображения, и, более конкретно, к интерполяции между пиксельными значениями целочисленных пиксельных единиц.
УРОВЕНЬ ТЕХНИКИ
В соответствующем способе кодирования и декодирования изображений из уровня техники, один снимок (картинка) разделяется на множество макроблоков так, чтобы кодировать изображение. Затем, каждый из множества макроблоков кодируется с предсказанием посредством выполнения внешнего предсказания или внутреннего предсказания над ним.
Внешнее предсказание является способом сжатия изображения посредством удаления временной избыточности между снимками. Показательным примером внешнего предсказания является кодирование с оценкой движения. В кодировании с оценкой движения каждый блок текущего снимка предсказывается посредством использования по меньшей мере одного опорного снимка. Опорный блок, который является наиболее подобным текущему блоку, ищется в предварительно определенном диапазоне поиска посредством использования предварительно определенной функции оценки.
Текущий блок предсказывается на основе опорного блока, остаточный блок получается посредством вычитания предсказанного блока, который является результатом предсказания, из текущего блока, и затем остаточный блок кодируется. В этом случае, чтобы точно предсказывать текущий блок, подпиксели, которые являются более маленькими, чем целочисленные пиксельные единицы, генерируются посредством выполнения интерполяции в диапазоне поиска опорного снимка, и внешнее предсказание выполняется на основе подпикселей.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Решение проблемы
Аспекты одного или более иллюстративных вариантов осуществлений обеспечивают способ и устройство для генерирования пиксельных значений дробных пиксельных единиц посредством интерполяции пиксельных значений целочисленных пиксельных единиц.
Аспекты одного или более иллюстративных вариантов осуществлений также обеспечивают машиночитаемый носитель записи, имеющий записанную на нем компьютерную программу для выполнения способа.
ПРЕДПОЧТИТЕЛЬНЫЕ ЭФФЕКТЫ ИЗОБРЕТЕНИЯ
Согласно настоящей заявке, дробная пиксельная единица может генерироваться более точно.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Вышеописанные и другие признаки станут более ясными из подробного описания иллюстративных вариантов осуществления со ссылкой на прилагаемые чертежи, на которых:
Фиг.1 является блок-схемой устройства для кодирования изображения согласно одному иллюстративному варианту осуществления;
Фиг.2 является блок-схемой устройства для декодирования изображения согласно одному иллюстративному варианту осуществления;
Фиг.3 иллюстрирует иерархические блоки кодирования согласно одному иллюстративному варианту осуществления;
Фиг.4 является блок-схемой кодера изображений на основе блока кодирования согласно одному иллюстративному варианту осуществления;
Фиг.5 является блок-схемой декодера изображений на основе блока кодирования согласно одному иллюстративному варианту осуществления;
Фиг.6 иллюстрирует максимальный блок кодирования, подблок кодирования и блок предсказания согласно одному иллюстративному варианту осуществления;
Фиг.7 иллюстрирует блок кодирования и блок преобразования согласно одному иллюстративному варианту осуществления;
Фиг.8A-8D иллюстрируют формы разделения блока кодирования, блока предсказания и блока преобразования согласно одному иллюстративному варианту осуществления;
Фиг.9 является блок-схемой устройства интерполяции изображений согласно одному иллюстративному варианту осуществления;
Фиг.10 является диаграммой, иллюстрирующей способ двумерной (2D) интерполяции, выполняемый посредством устройства интерполяции изображений из Фиг.9 согласно одному иллюстративному варианту осуществления;
Фиг.11 является диаграммой, иллюстрирующей область интерполяции согласно одному иллюстративному варианту осуществления;
Фиг.12 является диаграммой, иллюстрирующей способ одномерной (1D) интерполяции согласно одному иллюстративному варианту осуществления;
Фиг.13 является диаграммой, конкретно иллюстрирующей способ интерполяции 1D, выполняемый посредством устройства интерполяции изображений из Фиг.9 согласно одному иллюстративному варианту осуществления;
Фиг.14 является блок-схемой устройства интерполяции изображений согласно одному иллюстративному варианту осуществления;
Фиг.15 иллюстрирует фильтры интерполяции 2D согласно одному иллюстративному варианту осуществления;
Фиг.16A-16F иллюстрируют фильтры интерполяции 1D согласно иллюстративным вариантам осуществления;
Фиг.17A-17Y иллюстрируют оптимизированные фильтры интерполяции 1D согласно иллюстративным вариантам осуществления;
Фиг.18A и 18B иллюстрируют способы интерполяции пиксельных значений в различных направлениях посредством использования фильтра интерполяции 1D согласно иллюстративным вариантам осуществления;
Фиг.19A иллюстрирует способ интерполяции 2D согласно одному иллюстративному варианту осуществления;
Фиг.19B иллюстрирует способ интерполяции 2D с использованием фильтра интерполяции 1D согласно другому иллюстративному варианту осуществления;
Фиг.19C иллюстрирует способ интерполяции 2D с использованием фильтра интерполяции 1D согласно другому иллюстративному варианту осуществления;
Фиг.20 является блок-схемой последовательности операций, иллюстрирующей способ интерполяции изображений согласно иллюстративному варианту осуществления;
Фиг.21 является блок-схемой последовательности операций, иллюстрирующей способ интерполяции изображений согласно другому иллюстративному варианту осуществления;
Фиг.22 является блок-схемой последовательности операций, иллюстрирующей способ интерполяции изображений согласно другому иллюстративному варианту осуществления; и
Фиг.23A-23E иллюстрируют способы выполнения масштабирования и округления в отношении фильтра интерполяции 1D согласно иллюстративным вариантам осуществления.
НАИЛУЧШИЙ ВАРИАНТ ОСУЩЕСТВЛЕНИЯ ДЛЯ ВЫПОЛНЕНИЯ ИЗОБРЕТЕНИЯ
Согласно одному аспекту иллюстративного варианта осуществления обеспечивается способ интерполяции изображения, при этом способ включает в себя: выбор первого фильтра, из множества разных фильтров, для интерполяции между пиксельными значениями целочисленных пиксельных единиц согласно местоположению интерполяции; и генерирование по меньшей мере одного пиксельного значения по меньшей мере одной дробной пиксельной единицы посредством интерполяции между пиксельными значениями целочисленных пиксельных единиц посредством использования выбранного первого фильтра для интерполяции между пиксельными значениями целочисленных пиксельных единиц.
Способ может дополнительно включать в себя выбор второго фильтра, из множества разных фильтров, для интерполяции между сгенерированным, по меньшей мере, одним пиксельным значением упомянутой по меньшей мере одной дробной пиксельной единицы согласно местоположению интерполяции; и интерполяцию между сгенерированным, по меньшей мере, одним пиксельным значением упомянутой по меньшей мере одной дробной пиксельной единицы посредством использования выбранного второго фильтра для интерполяции между сгенерированным по меньшей мере одним пиксельным значением упомянутой по меньшей мере одной дробной пиксельной единицы.
Первый фильтр для интерполяции между пиксельными значениями целочисленных пиксельных единиц может являться фильтром пространственной области для преобразования пиксельных значений целочисленных пиксельных единиц посредством использования множества базисных функций, имеющих разные частоты, и обратного преобразования множества коэффициентов, которые получены посредством преобразования пиксельных значений целочисленных пиксельных единиц, посредством использования множества базисных функций, фазы которых сдвинуты.
Второй фильтр для интерполяции между сгенерированным, по меньшей мере, одним пиксельным значением упомянутой по меньшей мере одной дробной пиксельной единицы может являться фильтром пространственной области для преобразования сгенерированного, по меньшей мере, одного пиксельного значения упомянутой по меньшей мере одной дробной пиксельной единицы посредством использования множества базисных функций, имеющих разные частоты, и обратного преобразования множества коэффициентов, которые получены посредством преобразования сгенерированного, по меньшей мере, одного пиксельного значения упомянутой, по меньшей мере, одной дробной пиксельной единицы, посредством использования множества базисных функций, фазы которых сдвинуты.
Согласно одному аспекту другого иллюстративного варианта осуществления, обеспечивается устройство для интерполяции изображения, при этом устройство включает в себя: селектор фильтров, который выбирает первый фильтр из множества разных фильтров для интерполяции между пиксельными значениями целочисленных пиксельных единиц согласно местоположению интерполяции; и интерполятор, который генерирует по меньшей мере одно пиксельное значение по меньшей мере одной дробной пиксельной единицы посредством интерполяции между пиксельными значениями целочисленных пиксельных единиц посредством использования выбранного первого фильтра для интерполяции между пиксельными значениями целочисленных пиксельных единиц.
Селектор фильтров может выбирать второй фильтр, из множества разных фильтров, для интерполяции между сгенерированным, по меньшей мере, одним пиксельным значением упомянутой, по меньшей мере, одной дробной пиксельной единицы согласно местоположению интерполяции, и интерполятор может интерполировать между сгенерированным, по меньшей мере, одним пиксельным значением упомянутой, по меньшей мере, одной дробной пиксельной единицы посредством использования выбранного второго фильтра для интерполяции между сгенерированным, по меньшей мере, одним пиксельным значением упомянутой, по меньшей мере, одной дробной пиксельной единицы.
Согласно одному аспекту другого иллюстративного варианта осуществления, обеспечивается машиночитаемый носитель записи, имеющий воплощенную на нем компьютерную программу для выполнения способа, описанного выше.
Согласно одному аспекту другого иллюстративного варианта осуществления, обеспечивается способ интерполяции изображения, при этом способ включает в себя: преобразование пиксельных значений в пространственной области посредством использования множества базисных функций, имеющих разные частоты; сдвиг фаз множества базисных функций; и обратное преобразование множества коэффициентов, полученных посредством преобразования пиксельных значений, посредством использования сдвинутых по фазе множества базисных функций.
ВАРИАНТ ОСУЩЕСТВЛЕНИЯ ДЛЯ ИЗОБРЕТЕНИЯ
Ниже, со ссылкой на сопроводительные чертежи будут более полно описаны один или более иллюстративных вариантов осуществления. Выражения, такие как "по меньшей мере, один из", когда предшествуют списку элементов, модифицируют полный список элементов, но не модифицируют индивидуальные элементы списка. В настоящем описании, "изображение" может обозначать неподвижное изображение для видео или движущееся изображение, то есть, само видео.
Фиг.1 является блок-схемой устройства 100 для кодирования изображения согласно одному иллюстративному варианту осуществления. Ссылаясь на Фиг.1, устройство 100 для кодирования изображения включает в себя блок 110 разделения максимального блока кодирования, блок 120 определения глубины кодирования, кодер 130 данных изображения, и кодер 140 информации кодирования.
Блок 110 разделения максимального блока кодирования может разделять текущий кадр или вырезку на основе максимального блока кодирования, который является блоком кодирования наибольшего размера. То есть, блок 110 разделения максимального блока кодирования может разделять текущий кадр или вырезку на, по меньшей мере, один максимальный блок кодирования.
ой
ой
Согласно одному иллюстративному варианту осуществления, блок кодирования может представляться с использованием максимального блока кодирования и глубины. Как описано выше, максимальный блок кодирования показывает блок кодирования, имеющий наибольший размер, из блоков кодирования текущего кадра, и глубина показывает степень иерархического уменьшения блока кодирования. По мере того, как глубина увеличивается, блок кодирования может уменьшаться от максимального блока кодирования к минимальному блоку кодирования, при этом глубина максимального блока кодирования определяется как минимальная глубина и глубина минимального блока кодирования определяется как максимальная глубина. Так как размер блока кодирования уменьшается от максимального блока кодирования по мере того, как глубина увеличивается, подблок кодирования k глубины может включать в себя множество подблоков кодирования (k+n) глубины (где k и n являются целыми числами, равными или большими, чем 1.
Согласно увеличению размера кадра, подлежащего кодированию, кодирование изображения в более большом блоке кодирования может быть причиной более высокого коэффициента сжатия изображения. Однако, если фиксируется более большой блок кодирования, изображение может не эффективно кодироваться посредством отражения непрерывного изменяющихся характеристик изображения.
Например, когда кодируется гладкая область, такая как море или небо, чем большим является блок кодирования, тем больше коэффициент сжатия может увеличиваться. Однако, когда кодируется сложная область, такая как люди или здания, чем меньшим является блок кодирования, тем больше коэффициент сжатия может увеличиваться.
Соответственно, согласно одному иллюстративному варианту осуществления, другой максимальный блок кодирования изображения и другая максимальная глубина могут устанавливаться для каждого кадра или вырезки. Так как максимальная глубина обозначает максимальное количество раз, посредством которых блок кодирования может уменьшаться, размер каждого минимального блока кодирования, включенного в максимальный блок кодирования изображения, может устанавливаться переменным образом согласно максимальной глубине. Максимальная глубина может определяться различным образом для каждого кадра или вырезки или для каждого максимального блока кодирования.
Блок 120 определения глубины кодирования определяет форму разделения максимального блока кодирования. Форма разделения может определяться на основе вычисления затрат согласно зависимости искажение-скорость (RD). Определенная форма разделения максимального блока кодирования обеспечивается в кодер 140 информации кодирования, и данные изображения согласно максимальным блокам кодирования обеспечиваются в кодер 130 данных изображения.
Максимальный блок кодирования может разделяться на подблоки кодирования, имеющие разные размеры согласно разным глубинам, и подблоки кодирования, имеющие разные размеры, которые содержатся в максимальном блоке кодирования, может предсказываться или преобразовываться на основе блоков обработки, имеющих разные размеры. Другими словами, устройство 100 для кодирования изображения может выполнять множество операций обработки для кодирования изображения на основе блоков обработки, имеющих различные размеры и различные формы. Чтобы кодировать данные изображения, выполняются операции обработки, такие как по меньшей мере одно из предсказания, преобразования, и энтропийного кодирования, при этом для операций обработки могут использоваться блоки обработки, имеющие один и тот же размер или разные размеры, соответственно.
Например, устройство 100 для кодирования изображения может выбирать блок обработки, который является отличным от блока кодирования, чтобы предсказывать блок кодирования.
Когда размер блока кодирования равняется 2N×2N (где N является положительным целым числом), блоки обработки для предсказания могут быть 2N×2N, 2N×N, N×2N, и N×N. Другими словами, предсказание движения может выполняться на основе блока обработки, имеющего некоторую форму, в силу чего, по меньшей мере, одно из высоты и ширины блока кодирования равным образом разделяется на два. Ниже, блок обработки, который является основой предсказания, определяется как 'блок предсказания'.
Режим предсказания может быть, по меньшей мере, одним из внутреннего режима, внешнего режима, и режима пропуска, и конкретный режим предсказания может выполняться только для блока предсказания, имеющего конкретный размер или форму. Например, внутренний режим может выполняться только для блоков предсказания, имеющих размеры 2N×2N и N×N, чья форма является квадратом. Дополнительно, режим пропуска может выполняться только для блока предсказания, имеющего размер 2N×2N. Если в блоке кодирования существуют множество блоков предсказания, режим предсказания с наименьшими ошибками кодирования может выбираться после выполнения предсказания для каждого блока предсказания.
Альтернативно, устройство 100 для кодирования изображения может выполнять преобразование над данными изображения, на основе блока обработки, имеющего другой размер, нежели блок кодирования. Для преобразования в блоке кодирования преобразование может выполняться на основе блока обработки, имеющего размер, равный или более маленький, чем размер блока кодирования. В дальнейшем, блок обработки, который является основой преобразования, определяется как 'блок преобразования'. Преобразование может быть дискретным косинусным преобразованием (DCT) или преобразованием Кархунена (Karhunen) Леве (Loeve) (KLT) или любым другим пространственным преобразованием фиксированной точки.
Блок 120 определения глубины кодирования может определять подблоки кодирования, включенные в максимальный блок кодирования, посредством использования оптимизации RD на основе множителя Лагранжа. Другими словами, блок 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 изображений на основе блока кодирования согласно одному иллюстративному варианту осуществления. Ссылаясь на Фиг.5, осуществляется синтаксический разбор битового потока 505 посредством блока 510 синтаксического разбора, чтобы получать закодированные данные изображения, подлежащие декодированию, и информацию кодирования, которая необходима для декодирования. Закодированные данные изображения выводятся как обратным образом квантованные данные посредством прохождения через энтропийный декодер 520 и блок 530 обратного квантования, и восстанавливаются в остаточные значения посредством прохождения через обратный преобразователь 540. Остаточные значения восстанавливаются согласно блокам кодирования посредством добавления к результату внутреннего предсказания блока 550 внутреннего предсказания или результату компенсации движения блока 560 компенсации движения. Восстановленные блоки кодирования используются для предсказания следующих блоков кодирования или следующего кадра посредством прохождения через блок 570 удаления блочности и блок 580 контурной фильтрации.
Чтобы выполнять декодирование на основе способа декодирования согласно одному иллюстративному варианту осуществления, компоненты декодера 500 изображений, т.е. блок 510 синтаксического разбора, энтропийный декодер 520, блок 530 обратного квантования, обратный преобразователь 540, блок 550 внутреннего предсказания, блок 560 компенсации движения, блок 570 удаления блочности, и блок 580 контурной фильтрации, могут выполнять обработки декодирования изображения на основе максимального блока кодирования, подблоков кодирования согласно глубинам, блока предсказания, и блока преобразования.
В частности, блок 550 внутреннего предсказания и блок 560 компенсации движения определяют блок предсказания и режим предсказания в подблоке кодирования учитывая максимальный блок кодирования и глубину, и обратный преобразователь 540 выполняет обратное преобразование учитывая размер блока преобразования.
Фиг.6 иллюстрирует максимальный блок кодирования, подблок кодирования и блок предсказания согласно одному иллюстративному варианту осуществления. Устройство 100 для кодирования изображения, проиллюстрированное на Фиг.1, и устройство 200 для декодирования изображения, проиллюстрированное на Фиг.2, используют иерархические блоки кодирования, чтобы выполнять кодирование и декодирование с учетом характеристик изображения. Максимальный блок кодирования и максимальная глубина могут адаптивно устанавливаться согласно характеристикам изображения или различным образом устанавливаться согласно требованиям пользователя.
На Фиг.6, структура 600 иерархического блока кодирования имеет максимальный блок 610 кодирования, чья высота и ширина равняются 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, блоком 652 предсказания, имеющим размер 4×2, блоком 654 предсказания, имеющим размер 2×4, или блоком 656 предсказания, имеющим размер 2×2.
Фиг.7 иллюстрирует блок кодирования и блок преобразования согласно одному иллюстративному варианту осуществления. Устройство 100 для кодирования изображения, проиллюстрированное на Фиг.1, и устройство 200 для декодирования изображения, проиллюстрированное на Фиг.2, выполняют кодирование и декодирование с самым максимальным блоком кодирования или с подблоками кодирования, которые являются равными или более маленькими, чем максимальный блок кодирования, разделенными из максимального блока кодирования. В кодировании и обработке декодирования, размер блока преобразования для преобразования может выбираться, чтобы не быть более большим, чем размер соответствующего блока кодирования. Например, ссылаясь на Фиг.7, когда текущий блок 710 кодирования имеет размер 64×64, преобразование может выполняться с использованием блока 720 преобразования, имеющего размер 32×32.
Фиг.8A-8D иллюстрируют формы разделения блока кодирования, блока предсказания и блока преобразования согласно одному иллюстративному варианту осуществления. Конкретно, Фиг.8A и 8B иллюстрируют блок кодирования и блок предсказания согласно одному иллюстративному варианту осуществления.
Фиг.8A показывает форму разделения, выбранную посредством устройства 100 для кодирования изображения, проиллюстрированного на Фиг.1, чтобы кодировать максимальный блок 810 кодирования. Устройство 100 для кодирования изображения разделяет максимальный блок 810 кодирования на различные формы, выполняет над этим кодирование, и выбирает оптимальную форму разделения посредством сравнения результатов кодирования различных форм разделения друг с другом на основе затрат согласно RD. Когда является оптимальным, чтобы максимальный блок 810 кодирования кодировался как он есть, максимальный блок 810 кодирования может кодироваться без разделения максимального блока 810 кодирования, как проиллюстрировано на Фиг.8A-8D.
Ссылаясь на Фиг.8B, максимальный блок 810 кодирования, чья глубина равняется 0, кодируется посредством разделения его на подблоки кодирования, чьи глубины являются равными или большими, чем 1. То есть максимальный блок 810 кодирования разделяется на четыре подблока кодирования, чьи глубины равняются 1, и все или некоторые подблоки кодирования, чьи глубины равняются 1, разделяются на подблоки кодирования, чьи глубины равняются 2.
Подблок кодирования, расположенный в верхней правой стороне, и подблок кодирования, расположенный в нижней левой стороне, среди подблоков кодирования, чьи глубины равняются 1, разделяются на подблоки кодирования, чьи глубины равны или больше, чем 2. Некоторые из подблоков кодирования, чьи глубины являются равными или большими, чем 2, могут разделяться на подблоки кодирования, чьи глубины равны или больше, чем 3.
Фиг.8B показывает форму разделения блока предсказания для максимального блока 810 кодирования. Ссылаясь на Фиг.8B, блок 860 предсказания для максимального блока 810 кодирования может разделяться отлично от максимального блока 810 кодирования. Другими словами, блок предсказания для каждого из подблоков кодирования может быть более маленьким, чем соответствующий подблок кодирования.
Например, блок предсказания для подблока 854 кодирования, расположенного в нижней правой стороне среди подблоков кодирования, чьи глубины равняются 1, может быть более маленьким, чем подблок 854 кодирования. В дополнение, блоки предсказания для некоторых подблоков 814, 816, 850, и 852 кодирования из подблоков 814, 816, 818, 828, 850, и 852 кодирования, чьи глубины равняются 2, могут быть более маленькими, чем подблоки 814, 816, 850, и 852 кодирования, соответственно.
В дополнение, блоки предсказания для подблоков 822, 832, и 848 кодирования, чьи глубины равняются 3, могут быть более маленькими, чем подблоки 822, 832, и 848 кодирования, соответственно. Блоки предсказания могут иметь некоторую форму, в силу чего соответствующие подблоки кодирования равным образом разделяются на два в направлении высоты или ширины, или иметь форму, в силу чего соответствующие подблоки кодирования равным образом разделяются на четыре в направлениях высоты и ширины.
Фиг.8C и 8D иллюстрируют блок предсказания и блок преобразования согласно одному иллюстративному варианту осуществления.
Фиг.8C показывает форму разделения блока предсказания для максимального блока 810 кодирования, показанного на Фиг.8B, и Фиг.8D показывает форму разделения блока преобразования максимального блока 810 кодирования.
Ссылаясь на Фиг.8D, форма разделения блока 870 преобразования может устанавливаться отлично от блока 860 предсказания.
Например, даже хотя блок предсказания для блока 854 кодирования, чья глубина равняется 1, выбирается с некоторой формой, в силу чего высота блока 854 кодирования равным образом разделяется на два, блок преобразования может выбираться с таким же размером как блок 854 кодирования. Подобным образом, даже хотя блоки предсказания для блоков 814 и 850 кодирования, чьи глубины равняются 2, выбираются с некоторой формой, в силу чего высота каждого из блоков 814 и 850 кодирования равным образом разделяется на два, блок преобразования может выбираться с таким же размером как исходный размер каждого из блоков 814 и 850 кодирования.
Блок преобразования может выбираться с более маленьким размером, чем блок предсказания. Например, когда блок предсказания для блока 852 кодирования, чья глубина равняется 2, выбирается с некоторой формой, в силу чего ширина блока 852 кодирования равным образом разделяется на два, блок преобразования может выбираться с некоторой формой, в силу чего блок 852 кодирования равным образом разделяется на четыре в направлениях высоты и ширины, которая имеет более маленький размер, чем форма блока предсказания.
Фиг.9 является блок-схемой устройства 900 интерполяции изображений согласно одному иллюстративному варианту осуществления. Интерполяция изображений может использоваться, чтобы преобразовывать изображение, имеющее низкое разрешение, в изображение, имеющее высокое разрешение. Также, интерполяция изображений может использоваться, чтобы преобразовывать чересстрочное изображение в построчное изображение, или может использоваться, чтобы увеличивать количество пикселей в изображении, имеющем низкое разрешение, для получения более высокого разрешения. Когда кодер 400 изображений из Фиг.4 кодирует изображение, блок 420 оценки движения и блок 425 компенсации движения могут выполнять внешнее предсказание посредством использования интерполированного опорного кадра. То есть, ссылаясь на Фиг.4, изображение, имеющее высокое разрешение, может генерироваться посредством интерполяции опорного кадра 495, и оценка и компенсация движения могут выполняться на основе изображения, имеющего высокого разрешения, тем самым увеличивая точность внешнего предсказания. Подобным образом, когда декодер 500 изображений из Фиг.5 декодирует изображение, блок 550 компенсации движения может выполнять компенсацию движения посредством использования интерполированного опорного кадра, тем самым увеличивая точность внешнего предсказания.
Ссылаясь на Фиг.9, устройство 900 интерполяции изображений включает в себя преобразователь 910 и обратный преобразователь 920.
Преобразователь 910 преобразовывает пиксельные значения посредством использования множества базисных функций, имеющих разные частоты. Преобразование может быть одним из различных обработок преобразования пиксельных значений в пространственной области в коэффициенты частотной области, и может быть, например, DCT, как описано выше. Пиксельные значения целочисленной пиксельной единицы преобразуются с использованием множества базисных функций. Пиксельные значения могут быть пиксельными значениями компонентов яркости или компонентов хроматичности. Тип множества базисных функций не ограничивается, и может быть одним из различных типов функций для преобразования пиксельных значений в пространственной области в значение (значения) частотной области. Например, множество базисных функций могут быть косинусными функциями для выполнения DCT или обратного DCT. Также, могут использоваться различные типы базисных функций, такие как синусоидальные базисные функции или полиномиальные базисные функции. Примеры DCT могут включать в себя модифицированное DCT, и модифицированное DCT, которое использует окна.
Обратный преобразователь 920 сдвигает фазы множества базисных функций, используемых для выполнения преобразования, посредством преобразователя 910, и осуществляет обратное преобразование множества коэффициентов, т.е. значений частотной области, которые генерируются посредством преобразователя 910, посредством использования множества базисных функций, фазы которых сдвинуты. Преобразование, выполненное посредством преобразователя 910, и обратное преобразование, выполненное посредством обратного преобразователя 920, теперь будут описываться посредством использования двумерного (2D) DCT и одномерного (1D) DCT.
<DCT 2D и обратное DCT 2D>
x
y
Фиг.10 является диаграммой, иллюстрирующей способ интерполяции 2D, выполняемый посредством устройства 900 интерполяции изображений из Фиг.9 согласно одному иллюстративному варианту осуществления. Ссылаясь на Фиг.10, устройство 900 интерполяции изображений генерирует пиксельные значения в местоположениях X, т.е. местоположениях интерполяции, посредством интерполяции между пиксельными значениями целочисленных пиксельных единиц в пространственной области, например, пиксельными значениями в местоположениях O в элементе 1000. Пиксельные значения в местоположениях X являются пиксельными значениями дробных пиксельных единиц, местоположения интерполяции которых определяются посредством 'α' и 'α'. Хотя Фиг.10 иллюстрирует случай, где элемент 1000 имеет размер 4×4, размер элемента 1000 не ограничен 4×4, и специалистам в данной области техники должно быть очевидно, что пиксельные значения дробных пиксельных единиц могут генерироваться посредством выполнения DCT 2D и обратного DCT 2D над элементом, который является более маленьким или более большим, чем элемент 1000.
Сначала, преобразователь 910 выполняет DCT 2D над пиксельными значениями целочисленных пиксельных единиц. DCT 2D может выполняться согласно следующему уравнению:
где 'C' обозначает блок, который включает в себя коэффициенты частотной области, полученные посредством выполнения DCT 2D, 'REF' обозначает элемент 1000, над которым выполняется DCT, 'D(x)' является матрицей для выполнения DCT в направлении оси X, т.е. горизонтальном направлении, и 'D(y)' обозначает матрицу для выполнения DCT в направлении оси Y, т.е. вертикальном направлении. Здесь, 'D(x)' и 'D(y)' могут определяться посредством следующего уравнения (2):
kl
x
ую
ый
где 'k' и 'l' обозначают целые числа, при этом каждое удовлетворяет условию, выраженному в Уравнении (2), 'D(x)' обозначает k строку и l столбец квадратной матрицы D(x), и S обозначает горизонтальный и вертикальный размеры квадратной матрицы D(x).
kl
ую
ый
где 'k' и 'l' обозначают целые числа, при этом каждое удовлетворяет условию, выраженному в Уравнении (3), D(y) обозначает k строку и l столбец квадратной матрицы D(y), и Sy обозначает горизонтальный и вертикальный размеры квадратной матрицы D(y).
Преобразователь 910 выполняет DCT 2D над элементом 1000 посредством вычисления Уравнения (1), и обратный преобразователь 920 выполняет обратное DCT 2D над коэффициентами частотной области, сгенерированными посредством преобразователя 910, посредством вычисления следующего уравнения:
где 'P' обозначает элемент, включающий в себя пиксельные значения в местоположении интерполяции, т.е. местоположении X, которые получены посредством выполнения обратного DCT. По сравнению с Уравнением (1), Уравнение (4) получается посредством умножения обоих сторон элемента C на 'W(x)' и 'W(y)', соответственно, так, чтобы выполнять обратное DCT над элементом C. Здесь, 'W(x)' обозначает матрицу для выполнения обратного DCT в горизонтальном направлении, и 'W(y)' обозначает выполнение обратного DCT в вертикальном направлении.
Как описано выше, обратный преобразователь 920 использует множество базисных функций, фазы которых сдвинуты, так, чтобы выполнять обратное DCT 2D. 'W(x)' и 'W(y)' могут определяться посредством следующих уравнений (5) и (6):
lk
ую
ый
где 'l' и 'k' обозначают целые числа, при этом каждое удовлетворяет условию, выраженному в Уравнении (5), 'W(x)' обозначает l строку и k столбец квадратной матрицы W(x), и Sx обозначает горизонтальный и вертикальный размеры квадратной матрицы W(x). αx обозначает горизонтальное местоположение интерполяции, как проиллюстрировано на Фиг.10, и может быть дробным числом, например, 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16, или.... Однако дробное число не является ограниченным этим, и αx может быть вещественным числом.
lk
y
y
y
ую
ый
где 'l' и 'k' обозначают целые числа, при этом каждое удовлетворяет условию, выраженному в Уравнении (6), 'W(y)' обозначает l строку и k столбец квадратной матрицы W(y), и S обозначает горизонтальный и вертикальный размеры квадратной матрицы W(y). α обозначает вертикальное местоположение интерполяции, как проиллюстрировано на Фиг.10, и может быть дробным числом, например, 1/2, 1/4, 3/4,1/8, 3/8, 5/8, 7/8, 1/16, или.... Однако дробное число не является ограниченным этим, и α может быть вещественным числом.
x
y
По сравнению Уравнениями (2) и (3), фазы множества базисных функций, используемых обратным преобразователем 920, т.е. множества косинусных функций, сдвигаются посредством 2α и 2α, соответственно, в Уравнениях (5) и (6). Если обратный преобразователь 920 выполняет обратное DCT 2D на основе множества косинусных функций, фазы которых сдвинуты, как выражено в Уравнениях (5) и (6), то генерируются пиксельные значения местоположений X.
Фиг.11 является диаграммой, иллюстрирующей область 1110 интерполяции согласно одному иллюстративному варианту осуществления. Когда преобразователь 910 и обратный преобразователь 920 из Фиг.9 генерируют пиксельные значения над местоположениями интерполяции посредством выполнения DCT 2D и обратного DCT 2D, соответственно, может использоваться область 1120, которая является более большой, чем элемент, который должен интерполироваться, т.е. область 1110 интерполяции. В общем, точность интерполяции может понижаться на границах области 1110 интерполяции, и, таким образом, корреляция между пиксельными значениями, смежными с местоположением интерполяции, может рассматриваться для интерполяции. Устройство 900 интерполяции изображений из Фиг.9 выполняет DCT 2D над пиксельными значениями, включенными в область 1110 интерполяции, и затем выполняет обратное DCT 2D над результатом выполнения DCT 2D, при этом корреляция между пиксельными значениями, содержащимися в области 1110 интерполяции, и пиксельными значениями вне области 1110 интерполяции не рассматривается.
Таким образом, устройство 900 интерполяции изображений выполняет интерполяцию над областью 1120, которая является более большой, чем область 1110 интерполяции, и включает в себя область 1110 интерполяции и область, смежную с областью 1110 интерполяции, и использует пиксельные значения в области 1110 интерполяции для компенсации движения.
<DCT 1D и обратное DCT 1D>
Фиг.12 является диаграммой, иллюстрирующей способ интерполяции 1D согласно одному иллюстративному варианту осуществления. Ссылаясь на Фиг.12, устройство 900 интерполяции изображений из Фиг.9 генерирует пиксельное значение 1200 в местоположении интерполяции посредством интерполяции между пиксельным значением 1210 и пиксельным значением 1220 целочисленных пиксельных единиц в пространственной области. Пиксельное значение 1200 является пиксельным значением дробной пиксельной единицы, местоположение интерполяции которого определяется посредством 'α'. Способ интерполяции 1D согласно текущему иллюстративному варианту осуществления будет подробно описываться ниже со ссылкой на Фиг.13.
ого
тое
ым
ым
Фиг.13 является диаграммой, конкретно иллюстрирующей способ интерполяции 1D, выполняемый посредством устройства 900 интерполяции изображений из Фиг.9 согласно одному иллюстративному варианту осуществления. Ссылаясь на Фиг.13, множество смежных пиксельных значений 1310 и 1320, которые включают в себя пиксельные значения 1210 и 1220 целочисленных пиксельных единиц, соответственно, используются, чтобы генерировать пиксельное значение 1200 дробной пиксельной единицы посредством интерполяции между двумя пиксельными значениями 1210 и 1220. Другими словами, DCT 1D выполняется над пиксельными значениями с -(M-1) по M, т.е. 2M пиксельными значениями, обратное DCT 1D выполняется над результатом выполнения DCT 1D, на основе множества базисных функций, фазы которых сдвинуты, тем самым, интерполируя между 0 пикселем и 1 пикселем. Фиг.13 иллюстрирует случай, где M=6, но 'M' не ограничено 6 и может являться любым положительным целым числом, большим, чем 0.
Также, Фиг.12 и 13 иллюстрируют случаи, где интерполяция выполняется между пиксельными значениями, смежными в горизонтальном направлении, но специалистам в данной области техники должно быть очевидно, что могут использоваться способы интерполяции 1D из Фиг.12 и 13, чтобы интерполировать между пиксельными значениями, смежными в вертикальном направлении или диагональном направлении (см. Фиг.18A и 18B для больших подробностей).
Преобразователь 910 выполняет DCT 1D над пиксельными значениями целочисленных пиксельных единиц. DCT 1D может выполняться посредством вычисления следующего уравнения:
ого
тое
ое
ое
k
где 'p(l)' обозначает пиксельные значения с -(M-1) по M, например, с -5 по 6 пиксельные значения 1310 и 1320, проиллюстрированные на Фиг.13, и 'C' обозначает множество коэффициентов, полученных посредством выполнения DCT 1D над пиксельными значениями. Здесь, 'k' обозначает положительное целое число, удовлетворяющее условию, выраженному в Уравнении (7).
Когда преобразователь 910 выполняет DCT 1D над пиксельными значениями 1310 и 1320 посредством вычисления Уравнения (7), обратный преобразователь 920 выполняет обратное DCT 1D над коэффициентами частотной области, сгенерированными посредством преобразователя 910, посредством вычисления следующего уравнения (8).
где 'α' обозначает местоположение интерполяции между двумя пиксельными значениями, как описано выше со ссылкой на Фиг.13, и может быть одним из различных дробных чисел, например, 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16,.... Дробные числа не ограничены, и 'α' может быть вещественным числом. 'P(α)' обозначает пиксельное значение 1200 в местоположении интерполяции, сгенерированном посредством выполнения обратного DCT 1D. По сравнению Уравнением (7), фаза косинусной функции, выраженной в Уравнении (8), которая является базисной функцией, используемой для выполнения обратного DCT 1D, определяется посредством дробного числа 'α', другого, нежели целое число 'l', и, таким образом, является отличной от фазы базисной функции, используемой для выполнения DCT 1D.
Фиг.14 является блок-схемой устройства 1400 интерполяции изображений согласно одному иллюстративному варианту осуществления. Ссылаясь на Фиг.14, устройство 1400 интерполяции изображений включает в себя селектор 1410 фильтров и интерполятор 1420. Устройство 900 интерполяции изображений из Фиг.9 преобразовывает изображение и обратным образом преобразовывает результат преобразования на основе множества базисных функций, фазы которых сдвинуты. Однако, если преобразование и обратное преобразование выполняются всякий раз, когда пиксельные значения вводятся в устройство 900 интерполяции изображений, требуемая величина вычисления является большой, тем самым, уменьшая рабочую скорость системы обработки изображений.
Таким образом, интерполяция изображений может быстро выполняться в пространственной области без необходимости преобразовывать пространственную область в частотную область посредством вычисления коэффициентов фильтра для выполнения преобразования и обратного преобразования, описанных выше, и затем фильтрации пиксельных значений в пространственной области, которые подлежат вводу в устройство 1400 интерполяции изображений, посредством использования вычисленных коэффициентов фильтра.
Селектор 1410 фильтров принимает информацию относительно местоположения интерполяции и выбирает фильтр, подлежащий использованию для интерполяции. Как описано выше, фильтр используется, чтобы преобразовывать пиксельные значения на основе множества базисных функций, имеющих разные частоты, и чтобы обратным образом преобразовывать множество коэффициентов, которые получены посредством преобразования, на основе множества базисных функций, фазы которых сдвинуты. Коэффициенты фильтра могут изменяться согласно местоположению интерполяции, и фильтр выбирается согласно местоположению интерполяции.
Как описано выше со ссылкой на Фиг.9, пиксельные значения преобразовываются с использованием множества базисных функций, имеющих разные частоты, и фазы множества базисных функций, имеющих разные частоты, сдвигаются согласно местоположению интерполяции так, чтобы выполнять обратное преобразование. Затем, пиксельные значения в местоположении интерполяции могут интерполироваться посредством обратного преобразования множества коэффициентов посредством использования множества базисных функций, фазы которых сдвинуты. Другими словами, если преобразование выполняется на основе пиксельных значений целочисленных пиксельных единиц и обратное преобразование выполняется на основе множества базисных функций, фазы которых сдвинуты, согласно местоположению интерполяции, тогда пиксельные значения, по меньшей мере, одной дробной пиксельной единицы могут генерироваться для различных местоположений интерполяции. Таким образом, селектор 1410 фильтров из Фиг.14 заранее задает множество фильтров для выполнения преобразования и выполнения обратного преобразования на основе разных базисных функций, и выбирает один из заранее заданных фильтров, на основе информации относительно местоположения интерполяции.
x
y
Интерполятор 1420 выполняет интерполяцию посредством использования фильтра, выбранного посредством селектора 1410 фильтров. Конкретно, интерполяция выполняется посредством фильтрации множества пиксельных значений целочисленных пиксельных единиц на основе выбранного фильтра. В результате интерполяции получают пиксельное значение (значения) в предварительно определенном местоположении интерполяции, т.е. пиксельное значение (значения) дробной пиксельной единицы,. Ссылаясь на Фиг.10, если элемент, который включает в себя множество пиксельных значений целочисленных пиксельных единиц, фильтруется с помощью фильтра 2D, то генерируются множество пиксельных значений в местоположениях интерполяции, каждое из которых определяется посредством 'α' и 'α'. Ссылаясь на Фиг.13, если строка или столбец, включающий в себя множество пиксельных значений целочисленных пиксельных единиц, фильтруется с помощью фильтра 1D, то генерируются множество пиксельных значений на интерполяциях α. Теперь ниже со ссылкой на сопровождающие чертежи будут описываться способы интерполяции, выполняемые с использованием фильтра 2D и фильтра 1D, соответственно.
<Фильтр 2D>
, как описано выше в отношении Уравнения (4). Это уравнение также может быть выражено следующим образом:
где 'F(x)' обозначает фильтр для преобразования элемента REF в горизонтальном направлении и для обратного преобразования результата преобразования в горизонтальном направлении посредством использования множества базисных функций, фазы которых сдвинуты. 'F(y)' обозначает фильтр для преобразования элемента REF в вертикальном направлении и для обратного преобразования результата преобразования в вертикальном направлении посредством использования множества базисных функций, фазы которых сдвинуты. Например, 'F(x)' может обозначать фильтр для выполнения DCT над элементом REF в горизонтальном направлении, и выполнения обратного DCT над результатом выполнения в горизонтальном направлении посредством использования множества косинусных функций, фазы которых сдвинуты. 'F(y)' может обозначать фильтр для выполнения DCT над элементом REF в вертикальном направлении, и выполнения обратного DCT над результатом выполнения в вертикальном направлении посредством использования множества косинусных функций, фазы которых сдвинуты.
Согласно Уравнениям (2), (3), (5), и (6), фильтры F(x) и F(y) могут определяться посредством следующих Уравнений (10) и (11):
kl
x
kn
nl
ую
ый
ую
ый
ую
ый
где 'k' и 'l' обозначают целые числа, при этом каждое удовлетворяет условию, выраженному в Уравнении (10), 'F(x)' обозначает k строку и l столбец матрицы F(x), и S обозначает горизонтальные и вертикальные размеры квадратных матриц W(x) и D(x). Так как квадратные матрицы W(x) и D(x) имеют один и тот же размер, их горизонтальные и вертикальные размеры являются также одинаковыми. 'W(x)' обозначает k строку и n столбец квадратной матрицы W(x), описанной выше в отношении Уравнения (5). D(x) обозначает n строку и l столбец квадратной матрицы D(x), описанной выше в отношении Уравнения (2).
kl
y
nl
kn
ую
ый
ую
ый
ую
ый
где 'k' и 'l' обозначают целые числа, при этом каждое удовлетворяет условию, выраженному в Уравнении (11), 'F(y)' обозначает k строку и l столбец матрицы F(y), и S обозначает горизонтальные и вертикальные размеры квадратных матриц W(y) и D(y). Так как квадратные матрицы W(y) и D(y) имеют один и тот же размер, их горизонтальные и вертикальные размеры также являются одинаковыми. 'W(y)' обозначает n строку и l столбец квадратной матрицы W(y), описанной выше в отношении Уравнения (5). 'D(y)' обозначает k строку и n столбец квадратной матрицы D(y), описанной выше в отношении Уравнения (2).
Если интерполяция выполняется посредством увеличения битовых глубин фильтров F(x) и F(y), точность фильтрации может улучшаться. Таким образом, согласно одному иллюстративному варианту осуществления, коэффициенты фильтров F(x) и F(y) увеличиваются посредством умножения их на предварительно определенное значение, и изображение может интерполироваться с использованием этих фильтров, содержащих увеличенные коэффициенты. В этом случае, Уравнение (9) может изменяться следующим образом:
2
где 'F'(x)' обозначает фильтр, масштабированный посредством умножения коэффициентов фильтра F(x) на масштабирующий коэффициент 'S' и округления результата умножения до целого числа, и 'F'(y)' обозначает фильтр, полученный посредством умножения коэффициентов фильтра F(y) на 'S' и округления результата умножения до целого числа. Так как интерполяция выполняется с использованием масштабированного фильтра, пиксельные значения в местоположениях интерполяции вычисляются и затем разделяются на 'S', чтобы компенсировать эффект масштабирования.
x
y
13
Фиг.15 иллюстрирует фильтры интерполяции 2D согласно одному иллюстративному варианту осуществления. Конкретно, Фиг.15 иллюстрирует коэффициенты фильтра, масштабированные согласно Уравнению (2). То есть, Фиг.15 иллюстрирует фильтры интерполяции 2D F'(x), когда 'α' равняется 1/4, 1/2, и 3/4, при этом фильтры интерполяции 2D F'(x) генерируются посредством умножения коэффициентов фильтра интерполяции 2D F(x) на масштабирующий коэффициент 2. Фильтр интерполяции 2D F'(y), когда 'α' равняется 1/4, 1/2, и 3/4, может использоваться посредством транспонирования фильтра F'(x).
Ссылаясь на Фиг.14, если селектор 1410 фильтров выбирает один из фильтров интерполяции 2D из Фиг.15 на основе местоположения интерполяции, интерполятор 1420 генерирует пиксельные значения над местоположением интерполяции посредством вычисления Уравнения (9) или (12).
<Фильтр 1D>
DCT 1D согласно Уравнению (7) может быть выражено как следующий определитель:
-(M-1)
M
где 'C' обозначает матрицу (2M×1) для 2M коэффициентов, описанных выше в отношении Уравнения (7), и 'REF' обозначает матрицу (2M×1) для пиксельных значений целочисленных пиксельных единиц, описанных выше в отношении Уравнения (7), т.е. P,... по P. Полное количество пиксельных значений, используемых для интерполяции, т.е. 2M, обозначает полное количество выводов фильтра интерполяции 1D. 'D' обозначает квадратную матрицу для DCT 1D, которая может определяться следующим образом:
kl
ую
ый
где 'k' и 'l' обозначают целые числа, при этом каждое удовлетворяет условию, выраженному в Уравнении (14), 'D' обозначает k строку и l столбец квадратной матрицы D для DCT 1D, выраженного в Уравнении (13), и 'M' было описано выше в отношении Уравнения (13).
DCT 1D с использованием множества базисных функций, фазы которых сдвинуты, согласно Уравнению (8) может выражаться как следующий определитель:
где 'P(α)' является таким же как 'P(α)', выраженное в Уравнении (8), и 'W(α)' обозначает матрицу (1×2M) для обратного DCT 1D с использованием множества базисных функций, фазы которых сдвинуты. 'W(α)' может определяться следующим образом:
k
ый
где 'k' обозначает целое число, удовлетворяющее условию, выраженному в Уравнении (16), и 'W(α)' обозначает k столбец матрицы W(α), описанной выше в отношении Уравнения (15). Фильтр интерполяции 1D F(α) для выполнения DCT 1D и обратного DCT 1D, который использует множество базисных функций, фазы которых сдвинуты, на основе Уравнений (13) и (15), может определяться следующим образом:
l
ый
где 'k' и 'l' обозначают целые числа, при этом каждое удовлетворяет условию, выраженному в Уравнении (17), 'F(α)' обозначает l столбец фильтра F(α), и 'W(α)' и 'D' являются такими же как 'W(α)' и 'D', выраженные в Уравнении (13).
Точность фильтрации может улучшаться посредством увеличения битовой глубины фильтра интерполяции 1D F(α) аналогично фильтру интерполяции 2D. Изображение может интерполироваться посредством увеличения коэффициентов фильтра интерполяции 1D F(α) посредством умножения их на предварительно определенное значение и с использованием фильтра интерполяции 1D F(α), содержащего увеличенные коэффициенты.
ScalingBits
Например, интерполяция может выполняться посредством умножения фильтра интерполяции 1D F(α) на масштабирующий коэффициент '2' (ScalingBits-биты масштабирования). В этом случае, , выраженное в Уравнении (17), может изменяться следующим образом:
l
l
l
ScalingBits
ый
ScalingBits-1
ScalingBits-1
где F'(α) обозначает фильтр, масштабированный посредством умножения коэффициентов фильтра интерполяции 1D F(α) на масштабирующий коэффициент '2' и округления результата умножения до целого числа, 'REF' обозначает l столбец REF матрицы, выраженной в Уравнении (17), и '2' обозначает добавляемое значение для округления фильтрованного пиксельного значения. Пиксельное значение в местоположении интерполяции α вычисляется посредством умножения масштабированного фильтра F'(α) на матрицу для пиксельных значений, результат вычисления округляется посредством добавления к нему значения '2', и результирующее значение сдвигается посредством бита 'ScalingBits' так, чтобы компенсировать эффект масштабирования.
Округление, используемое в Уравнениях, описанных выше, является только примером способа квантования коэффициентов фильтра. Чтобы обобщить способ квантования коэффициентов фильтра для облегчения понимания, коэффициенты фильтра могут модифицироваться и оптимизироваться, как выражено в последующих Уравнениях (19) и (20):
l
l
l
l
l
l
l
ый
ый
ый
ый
ый
ый
где 'F(α)' обозначает l коэффициент фильтра, который не квантуется, 'f'(α)' обозначает l коэффициент фильтра, который квантуется, и 'ε' обозначает любое вещественное число, которое может выбираться согласно степени квантизации и может быть, например, 0,2*F(α). Согласно Уравнению (19), когда l коэффициент F(α), который является вещественным числом, вычисляется согласно Уравнению с (13) по (17), тогда l коэффициент F(α) изменяется на l коэффициент f'(α), удовлетворяющий Уравнению (19), тем самым, квантуя l коэффициент F(α).
Когда коэффициенты фильтра масштабируются посредством предварительно определенного масштабирующего коэффициента, квантизация согласно Уравнению (19) может изменяться следующим образом:
ScalingBits
l
l
l
где 'p' обозначает масштабирующий коэффициент (который может быть '2' и p*F(α) обозначает масштабированный коэффициент фильтра. Согласно Уравнению (20), 'p*F(α)' преобразовывается в 'F'(α)'.
Фиг.16A-16F иллюстрируют фильтры интерполяции 1D согласно иллюстративным вариантам осуществления. На Фиг.16A-16F, масштабированные фильтры, описанные выше в отношении Уравнения (18), иллюстрируются согласно количеству выводов и местоположению интерполяции. Конкретно, Фиг.16A-16F иллюстрируют фильтр с 4 выводами, фильтр с 6 выводами, фильтр с 8 выводами, фильтр с 10 выводами, фильтр с 12 выводами, и фильтр с 14 выводами, соответственно. На Фиг.16A-16F, масштабирующий коэффициент для коэффициентов фильтра устанавливается на '256', т.е. ScalingBits устанавливается на '8'.
На Фиг.16A-16F, коэффициенты фильтра включают в себя коэффициенты для высокочастотных компонентов, в силу чего точность интерполяции и предсказания может увеличиваться, но эффективность сжатия изображения может деградировать вследствие высокочастотных компонентов. Однако интерполяция выполняется, чтобы увеличивать эффективность сжатия изображения, как описано выше со ссылкой на Фиг.9. Чтобы решать эту проблему, коэффициенты фильтра, проиллюстрированные на Фиг.16A-16F, могут регулироваться, чтобы увеличивать эффективность сжатия изображения в этом случае.
Например, абсолютное значение каждого из коэффициентов фильтра может уменьшаться, и каждый коэффициент фильтра в средней точке каждого фильтра может умножаться на более большое взвешенное значение, чем взвешенные значения, назначенные другим коэффициентам фильтра. Например, ссылаясь на Фиг.16B, в фильтре с 6 выводами для генерирования пиксельных значений в местоположении интерполяции 1/2, коэффициенты фильтра, {11, -43, 160, 160, -43, 11,} регулируются таким образом, что абсолютные значения для '11', '-43', и '160' могут уменьшаться и только '160' в средней точке фильтра с 6 выводами умножается на взвешенное значение.
Фиг.17A-17Y иллюстрируют оптимизированные фильтры интерполяции 1D согласно иллюстративным вариантам осуществления. Фильтры, проиллюстрированные на Фиг.16A-16F, также могут регулироваться, чтобы легко осуществлять фильтр посредством аппаратного обеспечения. Когда Уравнение (17) или (18) вычисляется с использованием компьютера, коэффициенты фильтра могут оптимизироваться, чтобы минимизировать арифметическую операцию, например, битовый сдвиг двоичных чисел и сложение.
На Фиг.17A и 17B, величина вычисления, необходимая, чтобы выполнять фильтрацию для интерполяции каждого фильтра, показывается в обоих блоках "сложения" и "сдвига". Каждый из фильтров из Фиг.17A-17M включает в себя коэффициенты, оптимизированные, чтобы минимизировать блоки "сложения" и "сдвига" на соответствующем местоположении интерполяции.
Фиг.17A и 17B иллюстрируют фильтр с 6 выводами и фильтр с 12 выводами, оптимизированные, чтобы интерполировать изображение с точностью 1/4 пикселя, масштабированного посредством смещения 8 бит, соответственно. Фиг.17C, 17D, и 17E иллюстрируют фильтры с 8 выводами, оптимизированные, чтобы интерполировать изображение с точностью 1/4 пикселя, масштабированного посредством смещения 8 бит. Фильтры с 8 выводами из Фиг.17C-17E классифицируются согласно, по меньшей мере, одному из тому, являются ли коэффициенты фильтра подлежащими оптимизации, и способу оптимизации коэффициентов фильтра. Фиг.17F и 17G иллюстрируют фильтры с 8 выводами, оптимизированные, чтобы интерполировать изображение с точностью 1/4 пикселя, масштабированного посредством смещения 6 бит. Фильтры Фиг.17F и 17G могут классифицироваться согласно способу оптимизации коэффициентов фильтра.
Фиг.17H иллюстрирует фильтр с 6 выводами, оптимизированный, чтобы интерполировать изображение с точностью 1/8 пикселя, масштабированного посредством смещения 6 бит. Фиг.17I иллюстрирует фильтр с 6 выводами, оптимизированный, чтобы интерполировать изображение с точностью 1/8 пикселя, масштабированного посредством смещения 8 бит.
Фиг.17J и 17K иллюстрируют фильтры с 4 выводами, оптимизированные, чтобы интерполировать изображение с точностью 1/8 пикселя, масштабированного посредством смещения 5 бит. Фильтры Фиг.17J и 17K могут классифицироваться согласно способу оптимизации коэффициентов фильтра. Фиг.17L и 17M иллюстрируют фильтры с 4 выводами, оптимизированные, чтобы интерполировать изображение с точностью 1/8 пикселя, масштабированного посредством смещения 8 бит. Фильтры Фиг.17L и 17M также могут классифицироваться согласно способу оптимизации коэффициентов фильтра.
Фиг.17N-17Y иллюстрируют фильтр с 4 выводами, фильтр с 6 выводами, фильтр с 8 выводами, фильтр с 10 выводами, и фильтр с 12 выводами, оптимизированные, чтобы интерполировать изображение с точностью 1/8 пикселя, масштабированного посредством смещения 8 бит, соответственно. Фильтры Фиг.17N-17Y являются отличающимися от фильтров из Фиг.17A-17M в том, что некоторые из коэффициентов фильтра являются другими, но являются такими же как фильтры из Фиг.17A-17M в том, что коэффициент фильтра для интерполяции местоположения интерполяции 1/8 является симметричным с коэффициентом фильтра для интерполяции местоположения интерполяции 7/8, коэффициент фильтра для интерполяции местоположения интерполяции 2/8 является симметричным с коэффициентом фильтра для интерполяции местоположения интерполяции 6/8, и коэффициент фильтра для интерполяции местоположения интерполяции 3/8 является симметричным с коэффициентом фильтра для интерполяции местоположения интерполяции 5/8.
Фиг.23A-23E иллюстрируют способы выполнения масштабирования и округления в отношении фильтра интерполяции 1D согласно иллюстративным вариантам осуществления.
ScalingBits
Как описано выше, фильтрация интерполяции использует DCT и обратное DCT, и фильтр интерполяции 1D, таким образом, включает в себя коэффициенты фильтра, абсолютные значения которых меньше, чем '1'. Таким образом, как описано выше в отношении Уравнения (12), коэффициенты фильтра масштабируются посредством умножения их на '2', округляются до целых чисел, соответственно, и затем используются для интерполяции.
ScalingBits
Фиг.23A иллюстрирует коэффициенты фильтра, масштабированные посредством '2', когда фильтры интерполяции 1D являются фильтрами с 12 выводами. Ссылаясь на Фиг.23A, коэффициенты фильтра масштабировались, но не округлялись до целых чисел.
Фиг.23B иллюстрирует результат округления масштабированных коэффициентов фильтра из Фиг.23A до целых чисел посредством округления их до десятых десятичной точки. Ссылаясь на Фиг.23B, некоторые фильтры интерполяции, сумма округления масштабированных коэффициентов фильтра которых меньше, чем '256' среди фильтров интерполяции 1D. Конкретно, сумма всех коэффициентов фильтра каждого из: фильтра для интерполяции пиксельных значений в местоположении интерполяции 1/8, фильтра для интерполяции пиксельных значений в местоположении интерполяции 3/8, фильтра для интерполяции пиксельных значений в местоположении интерполяции 5/8, и фильтра для интерполяции пиксельных значений в местоположении интерполяции 7/8, - меньше, чем '256'. То есть сумма коэффициентов фильтра, масштабированного посредством смещения 8 бит, должна быть '256', но в течение округления коэффициентов фильтра происходит ошибка.
То, что суммы коэффициентов фильтра не являются одинаковыми, означает, что пиксельные значения могут изменяться согласно местоположению интерполяции. Чтобы решать эту проблему, нормализованный фильтр может генерироваться посредством регулировки коэффициентов фильтра. Фиг.23C иллюстрирует нормализованный фильтр, сгенерированный посредством коэффициентов фильтра фильтров, проиллюстрированных на Фиг.23B.
Сравнение Фиг.23B и 23C выявляет, что суммы всех коэффициентов фильтра нормализуются до '256' посредством регулировки некоторых из коэффициентов фильтра для интерполяции пиксельных значений в местоположении интерполяции 1/8, фильтра для интерполяции пиксельных значений в местоположении интерполяции 3/8, фильтра для интерполяции пиксельных значениях в местоположении интерполяции 5/8, и фильтра для интерполяции пиксельных значений в местоположении интерполяции 7/8.
сдвиг
Фиг.23D и 23E иллюстрируют фильтры с 8 выводами, которые масштабированы, и результат нормализации фильтров с 8 выводами, соответственно. Если фильтры с 8 выводами, которые масштабируются посредством 2 являются такими, как проиллюстрировано на Фиг.23D, то результат округления коэффициентов фильтра для фильтров с 8 выводами из Фиг.23D до целочисленного значения и нормализации результата округления таким образом, что суммы коэффициентов фильтра равняются '256', может быть, как проиллюстрирован на Фиг.23E. Ссылаясь на Фиг.23E, некоторые из коэффициентов фильтра являются отличными от результата округления коэффициентов фильтра фильтров с 8 выводами, проиллюстрированных на Фиг.23D. Это означает, что некоторые из коэффициентов фильтра регулируются таким образом, что суммы всех коэффициентов фильтра равняются '256'.
Как проиллюстрировано на Фиг.23B и 23C, по меньшей мере, один из результирующих коэффициентов фильтра, полученных посредством, по меньшей мере, одного из масштабирования и округления коэффициентов фильтра, может быть отличным от результата нормализации результирующих коэффициентов фильтра. Таким образом, специалистам в данной области техники должно быть очевидно, что должно пониматься, что фильтр интерполяции 1D, по меньшей мере, один из коэффициентов фильтра которого изменяется в предварительно определенном диапазоне ошибки, например, +-1 или +-2, среди фильтров, проиллюстрированных на Фиг.16A-16F, или фильтров, проиллюстрированных на Фиг.17A-17M, попадает в пределы объема иллюстративных вариантов осуществления.
Если селектор 1410 фильтров выбирает один из фильтров, проиллюстрированных на Фиг.16A-16F или Фиг.17A-17Y или Фиг.23A-23E, на основе местоположения интерполяции, то интерполятор 1420 генерирует пиксельные значения в местоположении интерполяции посредством вычисления Уравнения (17) или (18). Другие различные коэффициенты (такие как направление внешнего предсказания, тип контурного фильтра, положение пикселя в элементе) могут дополнительно рассматриваться для селектора 1410 фильтров, чтобы выбирать один из фильтров. Размер, т.е. количество выводов, фильтра, который должен выбираться, может определяться посредством либо размера элемента, который должен интерполироваться, либо направления фильтрации для интерполяции. Например, может выбираться большой фильтр, когда элемент, который должен интерполироваться, является большим, и может выбираться маленький фильтр, чтобы минимизировать доступ к памяти, когда интерполяция должна выполняться в вертикальном направлении.
Согласно одному иллюстративному варианту осуществления, информация относительно выбора фильтра может дополнительно кодироваться. Например, если изображение интерполировалось в течение кодирования изображения, декодирующая сторона должна знать тип фильтра, используемого, чтобы интерполировать изображение так, чтобы интерполировать и декодировать изображение посредством использования одного и того же фильтра, используемого в течение кодирования изображения. С этой целью, информация, определяющая фильтр, используемый, чтобы интерполировать изображение, может кодироваться вместе с изображением. Однако, когда выбор фильтра выполняется на основе результата предыдущего кодирования другого элемента, то есть, контекста, информация относительно выбора фильтра не должна дополнительно кодироваться.
Если пиксельное значение, сгенерированное посредством выполнения интерполяции, меньше, чем минимальное пиксельное значение или больше, чем максимальное пиксельное значение, то пиксельное значение изменяется на минимальное или максимальное пиксельное значение. Например, если сгенерированное пиксельное значение меньше, чем минимальное пиксельное значение 0, оно изменяется на '0', и если сгенерированное пиксельное значение больше, чем максимальное пиксельное значение 255, оно изменяется на '255'.
Когда интерполяция выполняется, чтобы точно выполнять внешнее предсказание в течение кодирования изображения, информация, определяющая фильтр интерполяции, может кодироваться вместе с изображением. Другими словами, информация относительно типа фильтра, выбранного посредством селектора 1410 фильтров, может кодироваться как параметр изображения вместе с изображением. Так как разный тип фильтра интерполяции может выбираться в блоках кодирования или в вырезках или блоках снимка, информация относительно выбора фильтра также может кодироваться в блоках кодирования или вырезках или блоках снимка, вместе с изображением. Однако, если выбор фильтра выполняется согласно подразумеваемому правилу, информация относительно выбора фильтра может не кодироваться вместе с изображением.
Теперь со ссылкой на Фиг.18A, 18B, и 19 будут подробно описываться способы выполнения интерполяции посредством интерполятора 1420 согласно иллюстративным вариантам осуществления.
Фиг.18A и 18B иллюстрируют способы интерполяции пиксельных значений в различных направлениях посредством использования фильтра интерполяции 1D согласно иллюстративным вариантам осуществления. Ссылаясь на Фиг.18A и 18B, пиксельные значения в местоположениях интерполяции в различных направлениях могут генерироваться посредством использования фильтра интерполяции 1D, который может выполнять DCT 1D над пиксельными значениями 1D и выполнять обратное DCT 1D над результатом выполнения посредством использования множества базисных функций, фазы которых сдвинуты.
0
1
Ссылаясь на Фиг.18A, пиксельное значение P(α) 1800 в местоположении интерполяции α в вертикальном направлении может генерироваться посредством интерполяции между пиксельным значением P 1802 и пиксельным значением P 1804, которые являются смежными в вертикальном направлении. По сравнению со способом интерполяции 1D из Фиг.13, интерполяция выполняется с использованием пиксельных значений 1810 и 1820, расположенных в вертикальном направлении, вместо пиксельных значений 1310 и 1320, расположенных в горизонтальном направлении, но способ интерполяции, описанный выше в отношении Уравнений с (13) по (18), также может применяться к способу из Фиг.18A.
Аналогично, по сравнению со способом интерполяции 1D из Фиг.13, в способе из Фиг.18B, интерполяция выполняется с использованием пиксельных значений 1840 и 1850, расположенных в диагональном направлении, вместо пиксельных значений 1310 и 1320, расположенных в горизонтальном направлении, но пиксельное значение P(α) 1830 в местоположении интерполяции α может генерироваться посредством интерполяции между двумя смежными пиксельными значениями 1832 и 1834, как описано выше в отношении Уравнений с (13) по (18).
Фиг.19A иллюстрирует способ интерполяции 2D согласно одному иллюстративному варианту осуществления. Ссылаясь на Фиг.19A, пиксельные значения с 1910 по 1950 дробных пиксельных единиц могут генерироваться на основе пиксельных значений с 1900 по 1906 целочисленных пиксельных единиц.
Конкретно, во-первых, селектор 1410 фильтров устройства 1400 интерполяции изображений, проиллюстрированный на Фиг.14, выбирает фильтр интерполяции 1D, чтобы генерировать пиксельные значения 1910, 1920, 1930, и 1940 дробных пиксельных единиц, которые присутствуют между пиксельными значениями с 1900 по 1906 целочисленных пиксельных единиц. Как описано выше со ссылкой на Фиг.14, разный фильтр может выбираться согласно местоположению интерполяции. Например, разные фильтры могут выбираться для пиксельных значений 1912, 1914, и 1916 дробной пиксельной единицы, соответственно, так, чтобы интерполировать пиксельное значение 1910 между двумя верхними пиксельными значениями 1900 и 1902. Например, фильтр для генерирования пиксельного значения 1914 1/2 пиксельной единицы может быть отличным от фильтра для генерирования пиксельных значений 1912 и 1916 той же 1/4 пиксельной единицы. Также, пиксельные значения 1912 и 1916 одной и той же 1/4 пиксельной единицы могут генерироваться с использованием разных фильтров, соответственно. Как описано выше со ссылкой на Фиг.14, степень сдвига фаз базисных функций, используемых, чтобы выполнять обратное DCT, изменяется согласно местоположению интерполяции, и, таким образом, фильтр для выполнения интерполяции выбирается согласно местоположению интерполяции.
Аналогично, пиксельные значения 1920, 1930, и 1940 разных дробных пиксельных единиц, присутствующих между пиксельными значениями с 1900 по 1906 целочисленных пиксельных единиц, могут генерироваться на основе фильтра интерполяции 1D, выбранного согласно местоположению интерполяции.
Если селектор 1410 фильтров выбирает фильтр для генерирования пиксельных значений 1910, 1920, 1930, и 1940 дробных пиксельных единиц, присутствующих между пиксельными значениями с 1900 по 1906 целочисленных пиксельных единиц, то интерполятор 1420 генерирует пиксельные значения 1910, 1920, 1930, и 1940 дробных пиксельных единиц в местоположениях интерполяции, соответственно, на основе выбранного фильтра. Согласно одному иллюстративному варианту осуществления, так как фильтр для генерирования пиксельного значения на каждом из местоположений интерполяции был вычислен ранее, пиксельные значения на всех из местоположений интерполяции могут генерироваться на основе пиксельных значений целочисленных пиксельных единиц.
Другими словами, так как пиксельные значения 1912 и 1916 1/4 пиксельной единицы могут генерироваться напрямую из пиксельных значений 1900 и 1920 целочисленной пиксельной единицы, не имеется необходимости сначала вычислять пиксельное значение 1914 1/2 пиксельной единицы и затем генерировать пиксельные значения 1912 и 1916 1/4 пиксельной единицы на основе пиксельных значений 1900 и 1902 целочисленных пиксельных единиц и пиксельного значения 1914 1/2 пиксельной единицы. Так как интерполяция изображений не должна выполняться последовательно согласно размеру пиксельного блока, интерполяция изображений может выполняться на высокой скорости.
Согласно другому иллюстративному варианту осуществления, способ интерполяции на основе местоположения интерполяции согласно одному иллюстративному варианту осуществления может комбинироваться со связанным способом интерполяции. Например, пиксельное значение 1/2 пиксельной единицы и пиксельное значение 1/4 пиксельной единицы могут генерироваться напрямую из пиксельных значений 1900 и 1920 целочисленной пиксельной единицы посредством использования фильтра интерполяции согласно одному иллюстративному варианту осуществления, и пиксельное значение 1/8 пиксельной единицы может генерироваться из пиксельного значения 1/4 пиксельной единицы посредством использования связанного линейного фильтра интерполяции. Иным образом, только пиксельное значение 1/2 пиксельной единицы может генерироваться напрямую из пиксельных значений 1900 и 1920 целочисленной пиксельной единицы посредством использования фильтра интерполяции согласно одному иллюстративному варианту осуществления, пиксельное значение 1/4 пиксельной единицы может генерироваться из пиксельного значения 1/2 пиксельной единицы посредством использования линейного фильтра интерполяции предшествующего уровня техники, и пиксельное значение 1/8 пиксельной единицы может генерироваться из пиксельного значения 1/4 пиксельной единицы посредством использования линейного фильтра интерполяции предшествующего уровня техники.
Если все из пиксельных значений 1910, 1920, 1930, и 1940 дробных пиксельных единиц, присутствующих между пиксельными значениями с 1900 по 1906 целочисленных пиксельных единиц, генерируются посредством выполнения интерполяции, то селектор 1410 фильтров выбирает фильтр интерполяции 1D снова для интерполяции между пиксельными значениями 1910, 1920, 1930, и 1940 дробных пиксельных единиц. В этом случае, другой фильтр выбирается согласно местоположению интерполяции аналогично способу, в котором фильтр выбирается, чтобы интерполировать между пиксельными значениями с 1900 по 1906 целочисленных пиксельных единиц.
Интерполятор 1420 генерирует пиксельное значение 1950 дробной пиксельной единицы, соответствующего каждому из местоположений интерполяции, посредством использования фильтра, выбранного посредством селектора 1410 фильтров. То есть генерируются пиксельное значение 1950 дробных пиксельных единиц между пиксельными значениями 1910, 1920, 1930, и 1940 дробных пиксельных единиц.
Фиг.19B иллюстрирует способ интерполяции 2D с использованием фильтра интерполяции 1D согласно другому иллюстративному варианту осуществления. Ссылаясь на Фиг.19B, пиксельное значение в местоположении интерполяции 2D может генерироваться посредством повторного выполнения интерполяции в вертикальном и горизонтальном направлениях с использованием фильтра интерполяции 1D.
(i,j)
(i,j)
(i+1,j)
(i,j+1)
(i,j+1)
(i+1,j+1)
(i,j)
(i,j)
(i,j+1)
Конкретно, пиксельное значение Temp генерируется посредством интерполяции между пиксельным значением REF 1960 и пиксельным значением REF 1964 целочисленной пиксельной единицы в горизонтальном направлении. Также, пиксельное значение Temp генерируется посредством интерполяции между пиксельным значением REF 1962 и пиксельным значением REF 1966 в горизонтальном направлении. Затем, пиксельное значение P в местоположении интерполяции 2D генерируется посредством интерполяции между пиксельным значением Temp и пиксельным значением Temp в вертикальном направлении.
Фильтр интерполяции 1D может быть фильтром для выполнения DCT 1D и выполнения обратного DCT 1D на основе множества базисных функций, фазы которых сдвинуты. Также, фильтр интерполяции 1D может являться масштабированным фильтром, как описано выше в отношении Уравнения (17). Когда интерполяция выполняется в горизонтальном и вертикальном направлениях на основе масштабированного фильтра, интерполяция может выполняться посредством вычисления следующего Уравнения (21):
l
x
l
y
l
где F'(α) и F'(α) соответствуют F'(α), выраженному в Уравнении (18). Однако, так как вертикальное местоположение интерполяции может быть отличным от горизонтального местоположения интерполяции, другой фильтр интерполяции 1D может выбираться согласно местоположению интерполяции.
Когда выполняются горизонтальная интерполяция и вертикальная интерполяция, первый битовый сдвиг выполняется согласно StageBits1 (биты этапа 1) после горизонтальной интерполяции и второй битовый сдвиг выполняется согласно StageBits2 (биты этапа 2) после вертикальной интерполяции. (TotalBits (общее количество битов) = StageBits1 + StageBits2). Если StageBits1 установлен на нуль, первый битовый сдвиг не выполняется.
l
y
l
x
bit1
bit2
Таким образом, если масштабирующий коэффициент для F'(α) - это '2' и масштабирующий коэффициент для F'(α) - это '2' в Уравнении (21), то 'TotalBits'='bit1'(бит1)+'bit2'(бит2).
Фиг.19C иллюстрирует способ интерполяции 2D с использованием фильтра интерполяции 1D согласно другому иллюстративному варианту осуществления. Ссылаясь на Фиг.19C, пиксельное значение в местоположении интерполяции 2D может генерироваться посредством повторного выполнения интерполяции в вертикальном и горизонтальном направлениях посредством использования фильтра интерполяции 1D.
(i,j)
(i,j)
(i,j+1)
(i+1,j)
(i,j+1)
(i+1,j+1)
(i,j)
(i,j)
(i+1,j)
Конкретно, пиксельное значение Temp генерируется посредством интерполяции между пиксельными значениями REF 1960 и пиксельным значением REF 1962 целочисленной пиксельной единицы в вертикальном направлении. Далее, Temp генерируется посредством интерполяции между пиксельным значением REF 1964 и пиксельным значением REF 1966 в вертикальном направлении. Затем, пиксельное значение P в местоположении интерполяции 2D генерируется посредством интерполяции между пиксельным значением Temp и пиксельным значением Temp. Когда интерполяция выполняется в горизонтальном и вертикальном направлениях на основе масштабированного фильтра, интерполяция может выполняться посредством вычисления следующего Уравнения (22):
Фиг.20 является блок-схемой последовательности операций, иллюстрирующей способ интерполяции изображений согласно иллюстративному варианту осуществления. Ссылаясь на Фиг.20, в операции 2010, устройство 900 интерполяции изображений из Фиг.9 преобразовывает пиксельные значения в пространственной области посредством использования множества базисных функций, имеющих разные частоты. Пиксельные значения могут быть множеством пиксельных значений, включенных в предварительно определенный элемент, или могут быть строками или столбцами пиксельных значений, расположенных в горизонтальном или вертикальном направлении.
Здесь, преобразование может быть DCT 2D или DCT 1D, описанным выше в отношении преобразователя 910 и Уравнений (1), (2), (3), и (7).
x
y
В операции 2020, устройство 900 интерполяции изображений сдвигает фазы множества базисных функций, используемых в операции 2010. Фазы множества базисных функций могут сдвигаться согласно местоположению интерполяции 2D, определенному посредством 'α' и 'α', или согласно местоположению интерполяции 1D, определенному посредством 'α'.
В операции 2030, устройство 900 интерполяции изображений обратным образом преобразовывает коэффициенты DCT, которые были получены посредством преобразования пиксельных значений в пространственной области в операции 2010, посредством использования множества базисных функций, фазы которых были сдвинуты в операции 2020. То есть, пиксельные значения в местоположениях интерполяции генерируются посредством обратного преобразования коэффициентов DCT, полученных в операции 2010.
Если преобразование, выполненное в операции 2010, является DCT 2D, то в операции 2030, устройство 900 интерполяции изображений генерирует пиксельные значения в местоположениях интерполяции 2D посредством выполнения обратного DCT 2D над коэффициентами DCT посредством использования множества косинусных функций, фазы которых сдвинуты.
Если преобразование, выполненное в операции 2010, является DCT 1D, выполненным в строках или столбцах пиксельных значений, то в операции 2030, устройство 900 интерполяции изображений генерирует пиксельные значения в местоположениях интерполяции 1D посредством выполнения обратного DCT 1D над коэффициентами DCT посредством использования множества косинусных функций, фазы которых сдвинуты.
Множество базисных функций, фазы которых сдвинуты, и обратное преобразование, основанное на них, были описаны выше в отношении обратного преобразователя 920 и Уравнений (4), (5), (6), и (8).
x
y
Фиг.21 является блок-схемой последовательности операций, иллюстрирующей способ интерполяции изображений согласно другому иллюстративному варианту осуществления. Ссылаясь на Фиг.21, в операции 2110, устройство 1400 интерполяции изображений из Фиг.14 выбирает фильтр для выполнения преобразования и выполнения обратного преобразования на основе множества базисных функций, фазы которых сдвинуты, согласно местоположению интерполяции. Например, фильтр для выполнения DCT и выполнения обратного DCT на основе множества косинусных функций, фазы которых сдвинуты, выбирается согласно местоположению интерполяции. Если пиксельные значения, которые подлежат интерполяции, содержатся предварительно определенном элементе, то фильтр для выполнения DCT 2D и обратного DCT 2D выбирается на основе 'α' и 'α'. Если пиксельные значения, которые подлежат интерполяции, являются строками или столбцами пиксельных значений, то фильтр для выполнения DCT 1D и обратного DCT 1D выбирается на основе 'α'. Согласно местоположению интерполяции может выбираться один из фильтров, описанных выше со ссылкой на Фиг.15, Фиг.16A-16F, и Фиг.17. Однако размер фильтра может определяться посредством различных других коэффициентов, не говоря уже о местоположении интерполяции, как описано выше в отношении селектора 1410 фильтров и со ссылкой на Фиг.17.
В операции 2120, устройство 1400 интерполяции изображений выполняет интерполяцию на основе фильтра, выбранного в операции 2110. Пиксельные значения в местоположении интерполяции 2D или пиксельное значение в местоположении интерполяции 1D могут генерироваться посредством фильтрации пиксельных значений в пространственной области посредством использования фильтра, выбранного в операции 2110. Интерполяция, выполненная с использованием фильтрации, была описана выше в отношении Уравнений с (9) по (19).
Фиг.22 является блок-схемой последовательности операций, иллюстрирующей способ интерполяции изображений согласно другому иллюстративному варианту осуществления. Ссылаясь на Фиг.22, в операции 2210, устройство 1400 интерполяции изображений из Фиг.14 выбирает отличающийся фильтр для интерполяции между пиксельными значениями с 1900 по 1906 целочисленных пиксельных единиц согласно местоположению интерполяции. В текущем иллюстративном варианте осуществления, пиксельные значения 1910, 1920, 1930, и 1940, по меньшей мере, одной дробной пиксельной единицы могут генерироваться напрямую из пиксельных значений с 1900 по 1906 целочисленных пиксельных единиц. Таким образом, устройство 1400 интерполяции изображений выбирает фильтры интерполяции, соответствующие местоположениям интерполяции, соответственно, в операции 2210.
В операции 2220, устройство 1400 интерполяции изображений генерирует пиксельные значении 1910, 1920, 1930, и 1940 упомянутой, по меньшей мере, одной дробной пиксельной единицы посредством интерполяции между пиксельными значениями с 1900 по 1906 целочисленных пиксельных единиц, на основе разного фильтра, выбираемого согласно каждому из местоположений интерполяции в операции 2210.
В операции 2230, устройство 1400 интерполяции изображений выбирает разный фильтр для интерполяции между пиксельными значениями 1910, 1920, 1930, и 1940 упомянутой, по меньшей мере, одной дробной пиксельной единицы, сгенерированной в операции 2220 согласно местоположению интерполяции. Отличающийся фильтр для генерирования пиксельных значений 1950 другой дробной пиксельной единицы, проиллюстрированного на Фиг.19, которые присутствуют между пиксельными значениями 1910, 1920, 1930, и 1940 упомянутой, по меньшей мере, одной дробной пиксельной единицы, выбирается согласно местоположению интерполяции.
В операции 2240, устройство 1400 интерполяции изображений генерирует пиксельные значения 1950 другой дробной пиксельной единицы посредством интерполяции пиксельных значений 1910, 1920, 1930, и 1940 упомянутой, по меньшей мере, одной дробной пиксельной единицы, на основе фильтра, выбранного в операции 2230.
В то время как иллюстративные варианты осуществления были конкретно показаны и описаны выше, специалисту в данной области техники следует понимать, что там могут быть выполнены различные изменения в форме и деталях без отхода от сущности и объема новой концепции, как определено посредством последующих пунктов формулы изобретения и их эквивалентов. Также, система согласно одному иллюстративному варианту осуществления может осуществляться как машиночитаемый код на машиночитаемом носителе записи.
Например, каждое из: устройства для кодирования изображения, устройства для декодирования изображения, кодера изображений, и декодера изображений согласно иллюстративным вариантам осуществления, как проиллюстрировано на Фиг.1, 2, 4, 5, 9, и 14, - может включать в себя шину, соединенную с его блоками, по меньшей мере, один процессор, соединенный с шиной, и память, которая соединена с шиной, чтобы хранить команду или принятое или сгенерированное сообщение, и соединяется с упомянутым, по меньшей мере, одним процессором, чтобы выполнять команду.
Машиночитаемый носитель записи может быть любым устройством хранения данных, которое может хранить данные, подлежащие считыванию посредством компьютерной системы. Примеры машиночитаемого носителя записи включают в себя постоянное запоминающее устройство (ROM), оперативное запоминающее устройство (RAM), компакт-диск (CD)-ROM, магнитные ленты, гибкие диски, и оптические устройства хранения данных. Машиночитаемый носитель записи может также быть распределенным по соединенным сетью компьютерным системам, так что машиночитаемый код может храниться и выполняться распределенным способом.