СПОСОБ КОДИРОВАНИЯ И СПОСОБ ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЙ, УСТРОЙСТВО ДЛЯ ЭТОГО, ПРОГРАММЫ ДЛЯ НЕГО И НОСИТЕЛЬ ИНФОРМАЦИИ ДЛЯ ХРАНЕНИЯ ПРОГРАММ
METHOD FOR CODING AND METHOD FOR DECODING OF IMAGES, DEVICE FOR THIS PURPOSE, PROGRAMS FOR THIS PURPOSE AND INFORMATION MEDIUM FOR STORAGE OF PROGRAMS

ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к методам кодирования и декодирования изображений с несколькими точками зрения и видеоизображений с несколькими точками зрения.
Данная заявка притязает на приоритет японской патентной заявки № 2006-254023, поданной 20 сентября 2006 г., содержание которой включено сюда посредством ссылки.
УРОВЕНЬ ТЕХНИКИ
Изображения с несколькими точками зрения это изображения, полученные путем фотографирования одного и того же объекта и его фона с использованием совокупности камер, и видеоизображения с несколькими точками зрения это видеоизображения, состоящие из изображений с несколькими точками зрения. Ниже, видеоизображение, полученное одной камерой, называется "двухмерным видеоизображением", и набор из нескольких двухмерных видеоизображений, полученных путем фотографирования одного и того же объекта и его фона, называется "видеоизображением с несколькими точками зрения".
Поскольку существует сильная корреляция между двухмерными видеоизображениями, эффективность их кодирования повышается с использованием такой корреляции. С другой стороны, когда камеры для получения изображений с несколькими точками зрения или видеоизображений с несколькими точками зрения синхронизированы друг с другом, изображения (камер), соответствующие одному и тому же времени, запечатлевают объект и его фон в совершенно одинаковом состоянии с разных позиций, поэтому между камерами существует сильная корреляция. Эффективность кодирования изображений с несколькими точками зрения или видеоизображений с несколькими точками зрения можно повысить с использованием этой корреляции.
Сначала представим традиционные подходы к кодированию двухмерных видеоизображений.
Во многих известных способах кодирования двухмерных видеоизображений, например, H.264, MPEG-2, MPEG-4 (которые являются международными стандартами кодирования) и пр., весьма эффективное кодирование осуществляется посредством компенсации движения, ортогонального преобразования, квантования, энтропийного кодирования и пр. Метод, именуемый "компенсацией движения", это метод, в котором используется корреляция по времени между кадрами.
В непатентном документе 1 подробно раскрыты методы компенсации движения, используемые в H.264. Общие пояснения в их отношении приведены ниже.
В соответствии с компенсацией движения в H.264, целевой кадр для кодирования делится на блоки произвольного размера. Для каждого блока выбирается ранее кодированный блок, именуемый "опорным кадром", и изображение прогнозируется с использованием векторных данных (именуемых "вектором движения"), которые указывают соответствующую точку. Релевантное разбиение на блоки имеет 7 возможных форм, например, 16×16 (пикселей), 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4, поэтому прогнозирование изображения можно осуществлять с учетом отличительного признака в позиции и размера изображаемого объекта с использованием конечного блока. Поэтому остаток цели кодирования, который представлен разностью между предсказанным изображением и исходным изображением, уменьшается, что позволяет реализовать высокий уровень эффективности кодирования.
Теперь объясним традиционный способ кодирования изображений с несколькими точками зрения или видеоизображений с несколькими точками зрения.
Различие между кодированием изображений с несколькими точками зрения и кодированием видеоизображений с несколькими точками зрения состоит в том, что видеоизображения с несколькими точками зрения имеют не только корреляцию между камерами, но и корреляцию по времени. Однако тот же способ с использованием корреляции между камерами можно применять как к изображениям с несколькими точками зрения, так и к видеоизображениям с несколькими точками зрения. Поэтому способы, используемые при кодировании видеоизображений с несколькими точками зрения, будут объяснены ниже.
Поскольку при кодировании видеоизображений с несколькими точками зрения используется корреляция между камерами, видеоизображения с несколькими точками зрения весьма эффективно кодируются известным способом, который предусматривает использование "компенсации параллакса (или диспаратности)", согласно которому компенсация движения применяется к изображениям, полученным разными камерами в одно и то же время. Здесь, "параллакс" (или диспаратность) это разность между позициями, в которые проецируется одна и та же точка изображаемого объекта, на плоскостях изображения камер, которые расположены в разных позициях.
На Фиг.21 показана схема, демонстрирующая понятие параллакса, возникающего между такими камерами. В схеме, показанной на Фиг.21, плоскости изображения камер, оптические оси которых параллельны друг другу, располагаются сверху вниз (по вертикали) с верхней стороны. В общем случае, такие точки, в которые проецируется одна и та же точка изображаемого объекта, на плоскостях изображения разных камер называются "корреспондирующими точками".
При компенсации параллакса, на основании вышеупомянутого соответствующего соотношения, каждое пиксельное значение целевого кадра для кодирования прогнозируется с использованием опорного кадра, и релевантные остаток предсказания и данные параллакса, которые указывают соответствующее соотношение, кодируются.
Во многих способах параллакс представляется вектором в плоскости изображения. Например, в непатентном документе 2 раскрыт способ осуществления компенсации параллакса для каждого блока, где параллакс для каждого блока представлен двухмерным вектором, т.е. двумя параметрами (компонентами x и y). Согласно этому способу, данные параллакса, имеющие два параметра, и остаток предсказания кодируются.
В непатентном документе 3 параметры камеры используются для кодирования, и вектор параллакса представлен одномерными данными на основании ограничения эпиполярной геометрии, что позволяет эффективно кодировать предсказанные данные. На Фиг.22 показана схема, демонстрирующая понятие ограничения эпиполярной геометрии.
В соответствии с ограничением эпиполярной геометрии, для двух камер (камеры A и камеры B), точка на одном из изображений, которая соответствует другой точке в другом изображении, ограничивается на прямой линии, именуемой "эпиполярной линией". Согласно способу, раскрытому в непатентном документе 3, для указания позиции на эпиполярной линии параллакс со всеми целевыми кадрами для кодирования представлен одним параметром, например расстоянием от камеры, посредством которой получен опорный кадр, до изображаемого объекта.
Непатентный документ 1: ITU-T Rec.H.264/ISO/IEC 11496-10, "Editor's Proposed Draft Text Modifications for Joint Video Specification (ITU-T Rec. H.264/ISO/IEC 14496-10 AVC), Draft 7", Final Committee Draft, Документ JVT-E022, стр. 10-13, и 62-68, сентябрь 2002.
Непатентный документ 2: Hideaki Kimata и Masaki Kitahara, "Preliminary results on multiple view video coding (3DAV)", документ M10976 MPEG Redmond Meeting, июль 2004.
Непатентный документ 3: Shinya SHIMIZU, Masaki KITAHARA, Kazuto KAMIKURA и Yoshiyuki YASHIMA, "Multi-view Video Coding based on 3-D Warping with Depth Map", в Proceedings of Picture Coding Symposium 2006, SS3-6, апрель 2006.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Задача изобретения
В традиционных способах кодирования видеоизображений с несколькими точками зрения, когда параметры камеры известны, компенсацию параллакса со всеми целевыми кадрами для кодирования можно реализовать посредством ограничения эпиполярной геометрии, т.е. только путем кодирования одномерных данных, например расстояния от камеры до изображаемого объекта для опорного кадра, независимо от количества камер. Соответственно, можно эффективно кодировать данные параллакса.
Однако, поскольку трудно точно измерить параметры камеры, они имеют некоторые ошибки. Соответственно, когда данные параллакса на основании ограничения эпиполярной геометрии для опорного кадра вычисляются для наиболее эффективного осуществления компенсации параллакса всех целевых кадров (для кодирования), полученных в одно и то же время, вычисленные данные параллакса включают в себя ошибки в параметрах камеры для всех камер.
Поэтому ошибка предсказания для компенсации параллакса, которая образуется при выборе одного целевого кадра, находится в зависимости от ошибки для другой камеры и, таким образом, ухудшается по сравнению с ошибкой предсказания, образующейся при использовании данных параллакса, полученных для набора из релевантного целевого кадра и опорного кадра.
Исходя из вышесказанного, задача настоящего изобретения, относящегося к кодированию видеоизображений с несколькими точками зрения, состоит в реализации точной компенсации параллакса с использованием меньших данных параллакса, даже когда существует искажение кодирования опорного кадра или ошибка измерения параметров камеры, и, таким образом, в обеспечении более высокой эффективности кодирования, чем та, которая получена традиционными способами.
Средство решения задачи
Способ кодирования изображений согласно первому аспекту настоящего изобретения содержит (i) этап определения и кодирования глобальных данных параллакса, которые, вероятно, являются верными данными параллакса с учетом ограничения эпиполярной геометрии между камерой стандартной точки зрения, которая выбирается из всех изображений с несколькими точками зрения, и изображений, полученных со всех остальных точек зрения; (ii) этап генерации базовых данных параллакса для каждой камеры в качестве точки зрения, отличной от стандартной точки зрения, где базовые данные параллакса, вероятно, являются верными данными параллакса с учетом ограничения эпиполярной геометрии между изображением релевантной камеры и изображениями всех остальных камер на основании глобальных данных параллакса и параметров камеры; (iii) этап определения и кодирования корректировочных данных параллакса, используемых для коррекции базовых данных параллакса, для представления данных параллакса между изображением релевантной камеры и ранее кодированным изображением опорной точки зрения, используемым для компенсации параллакса; и (iv) кодирование изображения релевантной камеры с использованием данных параллакса, полученных путем коррекции базовых данных параллакса посредством корректировочных данных параллакса.
Соответственно, корректировочные данные параллакса назначаются целевому изображению для кодирования только с учетом изображения (т.е. изображения опорной точки зрения), на основании которого осуществляется компенсация параллакса. Поэтому влияние на глобальные данные параллакса со стороны ошибок во всех параметрах камеры или со стороны искажения кодирования опорного кадра можно устранить для каждой камеры, что позволяет реализовать высокий уровень эффективности.
Кроме того, поскольку глобальные данные параллакса указывают общие данные параллакса как данные общего применения, величина коррекции, применяемой к базовым данным параллакса, мала, и, таким образом, объем кода, необходимый для корректировочных данных параллакса, мал.
Таким образом, по сравнению со случаем определения и кодирования данных параллакса для каждого целевого изображения для кодирования объем кода, необходимый для общей части, можно снизить, что позволяет снизить полный объем кода.
Способ кодирования изображений согласно второму аспекту настоящего изобретения содержит (i) этап определения и кодирования глобальных данных параллакса, которые, вероятно, являются верными данными параллакса с учетом ограничения эпиполярной геометрии между камерой стандартной точки зрения, которая выбирается из всех изображений с несколькими точками зрения, и изображений, полученных со всех остальных точек зрения; (ii) этап генерации базовых данных параллакса для каждой камеры в качестве точки зрения, отличной от стандартной точки зрения, где базовые данные параллакса, вероятно, являются верными данными параллакса с учетом ограничения эпиполярной геометрии между изображением релевантной камеры и изображениями всех остальных камер на основании глобальных данных параллакса и параметров камеры; (iii) этап определения и кодирования корректировочного вектора параллакса, используемого для коррекции соответствующей точки, обеспеченной с использованием базовых данных параллакса, для указания, для изображения релевантной камеры, оптимальной соответствующей точки (для компенсации параллакса) в ранее кодированном изображении опорной точки зрения, используемом для компенсации параллакса; и (iv) кодирование изображения релевантной камеры при выполнении компенсации параллакса путем коррекции соответствующей точки (обеспеченной с использованием базовых данных параллакса) посредством корректировочного вектора параллакса.
Соответственно, корректировочный вектор параллакса назначается целевому изображению для кодирования только с учетом изображения (т.е. изображения опорной точки зрения), на основании которого осуществляется компенсация параллакса. Поэтому влияние на глобальные данные параллакса со стороны ошибок во всех параметрах камеры или со стороны искажения кодирования опорного кадра можно устранить для каждой камеры, что позволяет реализовать высокий уровень эффективности.
Кроме того, поскольку глобальные данные параллакса указывают общие данные параллакса как данные общего применения, величина коррекции, применяемой к соответствующему соотношению, заданному базовыми данными параллакса, мала, и, таким образом, объем кода, необходимый для корректировочных данных параллакса, мал.
Таким образом, по сравнению со случаем определения и кодирования данных параллакса для каждого целевого изображения для кодирования, объем кода, необходимый для общей части, можно снизить, что позволяет снизить полный объем кода.
Согласно первому аспекту, для дополнительной коррекции данных корреспондирующей точки (т.е. вектора корреспондирующей точки), которые указаны данными параллакса, полученными с использованием базовых данных параллакса и корректировочных данных параллакса, дополнительно обеспечивается этап определения и кодирования двухмерного вектора коррекции.
Соответственно, можно скорректировать небольшое расхождение между корреспондирующими точками, которое обусловлено ошибкой в параметрах камеры или дисторсией объектива камеры, используемой для получения целевого изображения для кодирования, и не может быть представлено на основании ограничения эпиполярной геометрии. Это позволяет повысить эффективность предсказания компенсации параллакса, что позволяет реализовать высокий уровень эффективности.
В отличие от традиционного способа осуществления релевантной коррекции с использованием только двухмерного вектора, ошибка, обусловленная геометрическим ограничением, устраняется с использованием корректировочных данных параллакса. Поэтому вектор, используемый для коррекции, имеет очень малый размер, и высокоточное предсказание можно осуществлять с использованием меньшего объема кода.
Для каждого из вышеописанных аспектов можно обеспечить этап задания разбиения на области на изображении камеры стандартной точки зрения и этап, на котором кодируют данные, которые указывают разбиение на области, где глобальные данные параллакса можно определить и кодировать для каждой области разбиения.
Соответственно, данные параллакса, которые изменяются в соответствии с объектом, захваченным в изображении, можно точно указывать, что позволяет повысить точность глобальных данных параллакса. Это позволяет снизить объем кода, необходимый для данных, используемых для коррекции базовых данных параллакса, и, таким образом, реализовать высокий уровень эффективности.
Если все изображение стандартной точки зрения подвергается разбиению на области и каждая область разбиения обрабатывается и кодируется, то разбиение на области, заданное для кодирования изображения стандартной точки зрения, может совпадать с разбиением на области, которое указывает блок, используемый для определения глобальных данных параллакса, поэтому данные, которые указывают разбиение на области, заданное на изображении камеры стандартной точки зрения, повторно не кодируются.
Кроме того, поскольку само видеоизображение и данные параллакса не имеют полностью соответствующие характеристики, области, имеющие одинаковые характеристики для видеоизображения, могут не совпадать с соответствующими областями, имеющими одинаковые характеристики для данных параллакса. В таком случае, может быть предпочтительно немного изменить разбиение на области для определения глобальных данных параллакса, чтобы оно не полностью совпадало с разбиением на области, заданным для кодирования изображения стандартной точки зрения.
В этом случае можно кодировать только разность между разбиениями на области, чтобы снизить релевантный объем кода.
Кроме того, этап задания разбиения на области на изображении камеры в качестве целевой точки зрения для кодирования и этап, на котором кодируют данные, которые указывают разбиение на области, можно обеспечить, где корректировочные данные параллакса, корректировочный вектор параллакса или вектор коррекции можно определить и кодировать для каждой области разбиения.
Соответственно, данные корреспондирующей точки, которые используются при компенсации параллакса и изменяются в соответствии с объектом, захваченным в изображении, можно точно указывать, что позволяет повысить точность прогнозирования изображения, когда осуществляется компенсация параллакса. Это позволяет реализовать высокий уровень эффективности.
Если все изображение целевой точки зрения подвергается разбиению на области и каждая область разбиения обрабатывается и кодируется, то разбиение на области для кодирования релевантного изображения может совпадать с разбиением на области, которое указывает блок, используемый для определения данных параллакса, что позволяет упразднить кодирование данных, которые указывают блок для определения данных параллакса.
Кроме того, поскольку само видеоизображение и данные параллакса не имеют полностью соответствующие характеристики, области, имеющие одинаковые характеристики для видеоизображения, могут не совпадать с соответствующими областями, имеющими одинаковые характеристики для данных параллакса. В таком случае, может быть предпочтительно, чтобы разбиение на области, заданное для кодирования изображения, не полностью совпадало с разбиением на области, которое указывает блок для задания данных параллакса, поэтому они немного отличаются друг от друга. В этом случае можно кодировать только разность между разбиениями на области, чтобы снизить релевантный объем кода.
Для каждого из вышеописанных аспектов, можно обеспечить этап выбора камеры, на основании которой осуществляется компенсация параллакса, и этап кодирования индекса, который указывает выбранную камеру, где корректировочным данным параллакса, корректировочному вектору параллакса или вектору коррекции, который определяется для каждого целевого изображения для кодирования, можно придать значение, наиболее подходящее для компенсации параллакса, с использованием заранее кодированного изображения камеры, указанной вышеупомянутым индексом.
Соответственно, изображение не только камеры стандартной точки зрения, но и камеры, близкой к камере, используемой для получения целевого изображения для кодирования, может быть опорным изображением. Поэтому область, где нельзя задать корреспондирующую точку вследствие перекрытия и пр., мала, что позволяет реализовать точное предсказание. Таким образом, можно снизить остаток (подлежащий кодированию) компенсации параллакса и, таким образом, реализовать эффективное кодирование.
Кроме того, глобальные данные параллакса и базовые данные параллакса настоящего изобретения не зависят от опорного объекта, на которое осуществляется ссылка. Поэтому объем кода, необходимый для кодирования корректировочных данных параллакса или вектора коррекции, можно снизить для любого опорного объекта.
Если разбиение на области задается при определении данных параллакса для целевого изображения для кодирования, то можно выбрать опорную цель, наиболее пригодную для каждой области разбиения, для осуществления более точного предсказания и реализации эффективного кодирования.
Для каждого из вышеописанных аспектов можно обеспечить (i) этап определения локальных данных параллакса на основании ограничения эпиполярной геометрии до определения глобальных данных параллакса, где локальные данные параллакса являются данными параллакса для каждой камеры, и (ii) этап генерации кандидатов в глобальные данные параллакса с использованием локальных данных параллакса, определенных для каждой камеры, и на основании ограничения эпиполярной геометрии, где на этапе определения глобальных данных параллакса среднее кандидатов в глобальные данные параллакса, полученное для одной области, можно определить как глобальные данные параллакса, назначенные области.
Соответственно, сначала вычисляются локальные данные параллакса, которые должны представлять собой данные параллакса, наиболее пригодные для каждой камеры при компенсации параллакса, и глобальные данные параллакса генерируются с использованием локальных данных параллакса.
Это позволяет определить глобальные данные параллакса для минимизации данных параллакса, которые подлежат коррекции, в процессе, осуществляемом позже. Таким образом, бесполезные данные не кодируется, что позволяет реализовать эффективное кодирование.
При определении глобальных данных параллакса из кандидатов в глобальные данные параллакса можно выбрать кандидата в глобальные данные параллакса, которые чаще всего появляются в целевой области (вместо вычисления среднего), чтобы сократить данные параллакса, которые подлежат коррекции в процессе, осуществляемом позже.
Дополнительно, можно обеспечить этап определения разностных данных параллакса в соответствии с разностью между локальными данными параллакса и базовыми данными параллакса, где на этапе задания разбиения на области на изображении камеры целевой точки зрения для кодирования можно задать максимальное разбиение на области, благодаря которому разностные данные параллакса почти постоянны в каждой области разбиения, и на этапе определения корректировочных данных параллакса корректировочные данные параллакса можно определить с использованием разностных данных параллакса в релевантной области.
Соответственно, глобальные данные параллакса и корректировочные данные параллакса можно вычислить в одной операции. Поэтому, по сравнению со случаем вычисления их по отдельности (что требует большого объема вычислений), объем вычислений можно снизить.
Кроме того, если тип разбиения на области ограничен, дисперсию разностных данных параллакса можно вычислить для каждой области разбиения, и разбиение на области можно выбрать на основании значения дисперсии для осуществления высокоскоростного вычисления для задания разбиения на области.
Для каждого из вышеописанных аспектов на этапе определения базовых данных параллакса или на этапе определения глобальных данных параллакса непрерывность на изображении до преобразования, которому обеспечиваются данные параллакса, можно использовать для определения непрерывных данных параллакса на изображении после преобразования.
Например, в случае определения данных параллакса для пикселей, которые не соседствуют друг с другом, но соседствовали друг с другом до преобразования, данные параллакса, назначенные пикселю между вышеупомянутыми двумя пикселями, можно генерировать посредством интерполяции с использованием данных параллакса (определенных после преобразования) для двух пикселей.
В таком случае, количество областей, для которых обеспечены базовые данные параллакса и кандидаты в глобальные данные параллакса, возрастает, и данные, подлежащие коррекции, можно снизить. Это позволяет снизить релевантный объем кода и, таким образом, реализовать высокий уровень эффективности.
Кроме того, непрерывность можно очень точно определить с использованием не только отношения соседства, но и данных параллакса, которые указывают трехмерные данные. Это позволяет предотвратить увеличение данных, подлежащих коррекции, где такое увеличение может быть вызвано генерацией ошибочных базовых данных параллакса или кандидатов в глобальные данные параллакса.
В вышеописанном изображении (включая видеоизображение) кодирование и соответствующее декодирование изображения согласно настоящему изобретению различные типы данных параллакса, данных для коррекции данных параллакса или данных разбиения на области можно кодировать с учетом изменения в пространстве или времени.
Поскольку различные типы данных параллакса, данных для коррекции данных параллакса или данных разбиения на области зависят от захваченного изображения, корреляция в изображении или корреляция по времени очень высока.
Поэтому с использованием таких характеристик кодирование можно осуществлять путем устранения избыточности для различных типов данных параллакса, данных для коррекции данных параллакса или данных разбиения на области. Это позволяет сократить релевантный объем кода и реализовать высокий уровень эффективности.
Кроме того, можно обеспечить этап уменьшения заранее кодированного изображения стандартной точки зрения, где, при определении глобальных данных параллакса, можно вычислить расстояние от камеры в качестве стандартной точки зрения до изображаемого объекта для генерируемого уменьшенного изображения.
В таком случае, точные данные для релевантного изображения можно удалить благодаря уменьшению изображения. Это позволяет устранить ошибку или небольшую вариацию в данных параллакса, которая может быть обусловлена ошибками в параметрах камеры. В соответствии с глобальными данными параллакса, имеющими такие характеристики, можно получить соответствующее общее соотношение между камерами, не подверженное влиянию, например, ошибок в параметрах камеры.
Это позволяет сократить данные параллакса, подлежащие двойной коррекции с использованием корректировочных данных параллакса или вектора коррекции, который кодируется для каждой камеры, что позволяет повысить общую эффективность кодирования. Кроме того, использование уменьшенного изображения позволяет уменьшить количество пикселей, к которым применяется вычисление для определения релевантных данных параллакса, и, таким образом, также сократить объем вычислений.
При кодировании (или декодировании) видеоизображений с несколькими точками зрения набор кадров, принадлежащих одному и тому же времени, можно рассматривать как изображения с несколькими точками зрения, к которым можно применять способ кодирования (или декодирования) изображений согласно настоящему изобретению.
Дополнительно, для видеоизображений с несколькими точками зрения, все изображение можно кодировать без использования способа настоящего изобретения, но путем выбора, например, другого способа, например, компенсации движения, который предусматривает использование корреляции по времени для каждой цели кодирования, что позволяет повысить эффективность кодирования.
Преимущества изобретения
Согласно настоящему изобретению высокоэффективное кодирование полных изображений с несколькими точками зрения или видеоизображений с несколькими точками зрения можно осуществлять путем реализации компенсации параллакса, имеющей высокую точность предсказания с учетом влияния ошибок оценивания параметров камеры, одновременно препятствуя значительному увеличению объема данных, используемых для компенсации параллакса.
Краткое описание чертежей
Фиг.1 - схема, демонстрирующая каждый элемент данных, который определен в настоящем изобретении и используется для компенсации параллакса.
Фиг.2 - схема, демонстрирующая размещение камер, используемых согласно вариантам осуществления.
Фиг.3 - схема, демонстрирующая устройство кодирования видео согласно первому варианту осуществления настоящего изобретения.
Фиг.4 - схема, демонстрирующая подробную структуру блока определения глобальных данных компенсации параллакса, показанного на Фиг.3.
Фиг.5 - схема, демонстрирующая подробную структуру блока определения данных компенсации параллакса, показанного на Фиг.3.
Фиг.6 - логическая блок-схема кодирования изображения в первом варианте осуществления.
Фиг.7 - подробная логическая блок-схема этапа S2 на Фиг.6.
Фиг.8 - схема, демонстрирующая примеры разбиения на блоки, применяемого к макроблоку.
Фиг.9 - подробная логическая блок-схема этапа S4 на Фиг.6.
Фиг.10 - подробная логическая блок-схема этапа S5 на Фиг.6.
Фиг.11 - схема, демонстрирующая устройство кодирования видео согласно второму варианту осуществления настоящего изобретения.
Фиг.12 - схема, демонстрирующая подробную структуру блока определения локальных данных компенсации параллакса, показанного на Фиг.11.
Фиг.13 - схема, демонстрирующая подробную структуру блока определения глобальных данных компенсации параллакса, показанного на Фиг.11.
Фиг.14 - схема, демонстрирующая подробную структуру блока определения данных компенсации параллакса, показанного на Фиг.11.
Фиг.15 - логическая блок-схема кодирования изображения во втором варианте осуществления.
Фиг.16 - подробная логическая блок-схема этапа S402 на Фиг.15.
Фиг.17 - подробная логическая блок-схема этапа S403 на Фиг.15.
Фиг.18 - подробная логическая блок-схема этапа S406 на Фиг.15.
Фиг.19 - схема, демонстрирующая устройство декодирования видео согласно третьему варианту осуществления настоящего изобретения.
Фиг.20 - логическая блок-схема декодирования изображения согласно третьему варианту осуществления.
Фиг.21 - схема, демонстрирующая понятие параллакса, возникающего между камерами.
Фиг.22 - схема, демонстрирующая понятие ограничения эпиполярной геометрии.
Условные обозначения
100, 200 устройство кодирования изображений
101, 201 блок ввода изображения
102, 202 память изображений
103, 203 блок ввода изображения стандартной точки зрения
104, 204 память изображений стандартной точки зрения
105, 206 блок определения глобальных данных компенсации параллакса
106, 207 блок определения базовых данных параллакса
107, 208 блок определения данных компенсации параллакса
108, 209 блок кодирования изображений
109, 210 память декодированных изображений
205 блок определения локальных данных компенсации параллакса
1051 блок задания разбиения на блоки изображения стандартной точки зрения
1052 блок кодирования данных разбиения на блоки
1053 блок оценки глобальных данных параллакса
1054 блок кодирования глобальных данных параллакса
1071, 2081 блок задания разбиения на блоки целевого изображения
1072, 2082 блок кодирования данных разбиения на блоки
1073, 2085 блок задания индекса опорной точки зрения
1074, 2086 блок кодирования индекса точки зрения
1075, 2083 блок определения корректировочных данных параллакса
1076, 2084 блок кодирования корректировочных данных параллакса
1077, 2087 блок определения вектора коррекции
1078, 2088 блок кодирования вектора коррекции
1079, 2089 блок оценки эффективности компенсации параллакса
2051 блок задания разбиения на блоки локальных данных параллакса
2052 блок задания индекса опорной точки зрения
2053 блок определения локальных данных параллакса
2054 блок оценки эффективности компенсации параллакса
2061 блок задания разбиения на блоки изображения стандартной точки зрения
2062 блок кодирования данных разбиения на блоки
2063 блок оценки глобальных данных параллакса
2064 блок кодирования глобальных данных параллакса
300 устройство декодирования видео
301 блок ввода кодированных данных
302 блок ввода изображения стандартной точки зрения
303 память изображений
304 блок декодирования глобальных данных компенсации параллакса
305 блок определения базовых данных параллакса
306 блок декодирования данных компенсации параллакса
307 блок генерации изображений с компенсацией параллакса
308 блок декодирования изображений
Предпочтительные варианты осуществления изобретения
Один из наиболее отличительных признаков настоящего изобретения по сравнению с известными способами состоит в задании стандартной точки зрения; вычислении глобальных данных параллакса на основании ограничения эпиполярной геометрии для заранее кодированного изображения на стандартной точке зрения, для осуществления компенсации параллакса в отношении всех остальных целевых изображений (для кодирования), полученных в то же время; преобразования глобальных данных параллакса в базовые данные параллакса на основании ограничения эпиполярной геометрии для каждого целевого изображения; и кодировании данных параллакса, которые используются для коррекции базовых данных параллакса, для каждого целевого изображения в соответствии с признаком целевого изображения и ошибками в параметрах камеры.
Данные параллакса на основании ограничения эпиполярной геометрии можно представить расстоянием от точки зрения релевантного изображения до изображаемого объекта, причем расстояние измеряется от опорной точки на эпиполярной линии, и значения индекса соответствуют таким расстояниям.
Ниже "данные параллакса" указывают вышеупомянутые данные параллакса на основании ограничения эпиполярной геометрии. Будут объяснены понятия глобальных данных параллакса и базовых данных параллакса, используемые в настоящем изобретении.
Глобальные данные параллакса
Глобальные данные параллакса это данные параллакса, обеспечиваемые для изображения стандартной точки зрения. В нижеследующем объяснении, данные параллакса обеспечиваются для каждой области.
A
Если область A имеет данные параллакса "d", соответствующие области R(d,i) в изображениях, полученных в других точках зрения (i = 1, 2, 3,..., N) в то же время, вычисляются на основании ограничения эпиполярной геометрии. В таком случае, степень различия в изображениях соответствующих областей можно оценить с использованием, например, суммы абсолютных значений разностей, суммы квадратов разностей, дисперсии разностей или суммы взвешенных значений, относящихся к совокупности стандартов.
A
Для всех комбинаций {A, R(d, i)|i = 1, 2, …, N}, когда сумма вышеупомянутых степеней различия называется оценочным значением данных параллакса "d" для области A, данные параллакса, которые обеспечивают наименьшее оценочное значение, называются "глобальными данными параллакса D".
Кроме того, чтобы снизить влияние ошибки, оценочное значение можно вычислить после прибавления члена коррекции к данным параллакса "d", исходя из непрерывности объекта в фактическом пространстве.
При использовании ограничения эпиполярной геометрии для вычисления вышеупомянутых соответствующих областей происходят ошибки в релевантном вычислении и параметрах камеры. Поэтому, для конкретной точки зрения i=k, данные параллакса "d" для минимизации объема кода (Rate (A, d, k)) могут не совпадать с глобальными данными параллакса D.
Поэтому глобальные данные параллакса D представляют собой данные параллакса, которые обеспечивают наибольшее подобие между целевой областью и соответствующими (с целевой областью) областями из всех остальных точек зрения. В принципе, глобальные данные параллакса D указывают расстояние с низким уровнем точности, например приближенное расстояние от камеры до изображаемого объекта для целевой области.
Базовые данные параллакса
Базовые данные параллакса указывают ту же цель, что и глобальные данные параллакса. Однако они отличаются друг от друга только для одной точки, поэтому глобальные данные параллакса имеют в качестве стандарта стандартную точку зрения, тогда как базовые данные параллакса имеют в качестве стандарта другую точку зрения.
Глобальные данные параллакса и базовые данные параллакса в соответствующей области представляют собой все данные, указывающие одну и ту же трехмерную позицию. Однако, в общем случае, данные параллакса представлены расстоянием от камеры до изображаемого объекта. Поэтому точное значение данных параллакса изменяется со сменой точки зрения.
На Фиг.1 показана схема, демонстрирующая каждый элемент данных, который определен в настоящем изобретении и используется для компенсации параллакса.
Согласно способу кодирования изображений, отвечающему настоящему изобретению, кодирование осуществляется путем выбора стандартной точки зрения из целевых изображений с несколькими точками зрения для кодирования. Кодирование изображений, имеющих точки зрения, отличные от стандартной точки зрения, осуществляется посредством прогнозирования изображений с использованием заранее кодированного изображения, имеющего другую точку зрения.
Это заранее кодированное изображение другой точки зрения, которое используется для прогнозирования изображения, называется "изображением опорной точки зрения". Изображение опорной точки зрения может совпадать с изображением стандартной точки зрения или может отличаться от него. Для демонстрации общего случая, изображение стандартной точки зрения имеет другую точку зрения на Фиг.1.
Прежде всего, вышеописанные глобальные данные параллакса обеспечиваются для изображения стандартной точки зрения. Трехмерная позиция изображаемого объекта, которая обеспечивается глобальными данными параллакса, соответствует базовым данным параллакса, если рассматривать от целевой точки зрения для кодирования. Между каждым пикселем на целевом изображении для кодирования и изображением опорной точки зрения вычисляются данные параллакса (именуемые "локальными данными параллакса") для обеспечения максимального подобия между соответствующими пикселями, где разность между локальными данными параллакса и базовыми данными параллакса называется "корректировочными данными параллакса".
Данные параллакса для каждого пикселя на целевом изображении для кодирования ограничиваются ограничением эпиполярной геометрии. Поэтому, согласно Фиг.22, для любых обеспеченных данных параллакса соответствующая область изображения опорной точки зрения ограничивается на прямой линии в этом изображении. В таком случае, если параметры камеры имеют ошибку, на прямой линии не существует ни одной истинной корреспондирующей точки.
Соответственно, вектор от корреспондирующей точки, обеспеченной локальными данными параллакса до истинной корреспондирующей точки, называется "вектором коррекции".
Изображение пикселя на целевом изображении для кодирования прогнозируется с использованием не только глобальных данных параллакса (и преобразованных из них базовых данных параллакса), но и изображения данных корреспондирующей точки в изображении опорной точки зрения, которое вычисляется путем обеспечения корректировочных данных параллакса и вектора коррекции.
Хотя это не показано на Фиг.1, глобальные данные параллакса кодируются для одного из изображений с несколькими точками зрения (набора изображений, имеющих одинаковое время отображения в видеоизображениях с несколькими точками зрения), и корректировочные данные параллакса и вектор коррекции кодируются для каждого изображения каждой точки зрения за исключением стандартной точки зрения. Кроме того, базовые данные параллакса вычисляются с использованием глобальных данных параллакса и, таким образом, не кодируются.
Ниже настоящее изобретение будет подробно объяснено в соответствии с вариантами осуществления. В нижеследующих вариантах осуществления предполагается, что видеоизображения с несколькими точками зрения, полученные тремя камерами, кодируются, и изображения камер B и C кодируются для стандартной точки зрения камеры A.
На Фиг.2 показана схема, демонстрирующая размещение камер, используемых согласно вариантам осуществления. На Фиг.2 каждый прямоугольник указывает кадры релевантных камер, и изображения камер B и C вводятся в порядке, указанном показанными номерами.
Сначала поясним первый вариант осуществления. На Фиг.3, 4 и 5 показана структура устройства кодирования видео согласно первому варианту осуществления настоящего изобретения.
Согласно Фиг.3, устройство 100 кодирования видео согласно первому варианту осуществления имеет блок 101 ввода изображения, в который вводятся исходные изображения (в качестве целевых изображений для кодирования) камер B и C; память 102 изображений для сохранения входных изображений; блок 103 ввода изображения стандартной точки зрения, в который вводится декодированное изображение камеры A (в качестве стандартной точки зрения); память 104 изображений стандартной точки зрения для сохранения входного декодированного изображения стандартной точки зрения; блок 105 определения глобальных данных компенсации параллакса для определения глобальных данных параллакса, которые являются данными параллакса (для стандартной точки зрения) на основании ограничения эпиполярной геометрии; блок 106 определения базовых данных параллакса для определения базовых данных параллакса, которые формируются с использованием глобальных данных параллакса и являются данными параллакса (для точки зрения целевого изображения для кодирования) на основании ограничения эпиполярной геометрии; блок 107 определения данных компенсации параллакса для определения данных, используемых для осуществления компенсации параллакса на целевом изображении; блок 108 кодирования изображений для осуществления фактического предсказательного кодирования на каждом входном изображении; и память 109 декодированных изображений для сохранения изображения, декодированного из кодированного входного изображения.
На Фиг.4 показана схема, демонстрирующая подробную структуру блока определения глобальных данных компенсации параллакса 105.
Согласно Фиг.4, блок 105 определения глобальных данных компенсации параллакса имеет блок 1051 задания разбиения на блоки изображения стандартной точки зрения для задания разбиения на блоки в изображении стандартной точки зрения; блок 1052 кодирования данных разбиения на блоки для кодирования определенных данных разбиения на блоки; блок 1053 оценки глобальных данных параллакса для оценивания глобальных данных параллакса для каждого блока с использованием набора входных изображений; и блок 1054 кодирования глобальных данных параллакса для кодирования полученных глобальных данных параллакса.
Глобальные данные параллакса, полученные блоком 1053 оценки глобальных данных параллакса, поступают на блок 106 определения базовых данных параллакса.
Кроме того, кодированные данные, выводимые из блока 1052 кодирования данных разбиения на блоки и блока 1054 кодирования глобальных данных параллакса, составляют часть данных, выводимых из устройства 100 кодирования видео.
На Фиг.5 показана схема, демонстрирующая подробную структуру блока определения данных компенсации параллакса 107.
Согласно Фиг.5, блок 107 определения данных компенсации параллакса включает в себя блок 1071 задания разбиения на блоки целевого изображения для задания разбиения на блоки в целевом изображении для кодирования; блок 1072 кодирования данных разбиения на блоки для кодирования определенных данных разбиения на блоки; блок 1073 задания индекса опорной точки зрения для задания индекса точки зрения, который указывает точку зрения изображения, используемого в качестве опорного изображения при компенсации параллакса; блок 1074 кодирования индекса точки зрения для кодирования заданного индекса точки зрения; блок 1075 определения корректировочных данных параллакса для определения корректировочных данных параллакса, используемых для коррекции базовых данных параллакса на основании ограничения эпиполярной геометрии; блок 1076 кодирования корректировочных данных параллакса для кодирования определенных корректировочных данных параллакса; блок 1077 определения вектора коррекции для определения вектора коррекции, используемого для коррекции соответствующего соотношения, которое обеспечивается базовыми данными параллакса и корректировочными данными параллакса, независимо от ограничения эпиполярной геометрии; блок 1078 кодирования вектора коррекции для кодирования определенного вектора коррекции; и блок 1079 оценки эффективности компенсации параллакса для оценивания эффективности предсказания, когда компенсация параллакса осуществляется с использованием данных (определенных каждым релевантным блоком) для компенсации параллакса.
Изображение с компенсацией параллакса, в отношении которого определено, что оно имеет наивысшую эффективность компенсации параллакса блоком 1079 оценки эффективности компенсации параллакса, поступает на блок 103 кодирования изображений.
Кроме того, кодированные данные, выводимые из блока 1072 кодирования данных разбиения на блоки, блока 1074 кодирования индекса точки зрения, блока 1076 кодирования корректировочных данных параллакса и блока 1078 кодирования вектора коррекции, составляют часть данных, выводимых из устройства 100 кодирования видео.
На Фиг.6-10 показаны логические блок-схемы, выполняемые устройством 100 кодирования видео, имеющим вышеупомянутую структуру. Процессы, осуществляемые устройством 100 кодирования видео, будут подробно объяснены ниже.
На Фиг.6 показана общая последовательность операций всего процесса кодирования, осуществляемого в устройстве 100 кодирования видео согласно первому варианту осуществления. В этой последовательности операций одно изображение камеры B и одно изображение камеры C, полученные в одно и то же время, кодируются.
Сначала, одно изображение камеры B и одно изображение камеры C, полученные в одно и то же время, вводятся в блок 101 ввода изображения, и изображения сохраняются в памяти 102 изображений (см. этап S1). Здесь декодированное изображение изображения камеры A, которое получено в то же время, что и входные изображения, поступает на блок 103 ввода изображения стандартной точки зрения и сохраняется в памяти 104 изображений стандартной точки зрения.
Затем, на блоке 105 определения глобальных данных компенсации параллакса, глобальные данные параллакса (для изображения стандартной точки зрения), которые удовлетворяют ограничению эпиполярной геометрии, определяются и кодируются (см. этап S2). Этот процесс будет объяснен ниже со ссылкой на Фиг.7.
Процесс, осуществляемый на этапах S4-S7, применяется к каждому изображению в памяти изображений 102. При этом предполагается, что сначала кодируется изображение камеры B, и затем кодируется изображение камеры C.
Таким образом, изображение камеры B считывается из памяти 102 изображений и определяется как целевое изображение для кодирования (см. этап S3), и глобальные данные параллакса, определенные на этапе S2, преобразуются блоком 106 определения базовых данных параллакса в базовые данные параллакса, которые назначаются целевому изображению и основаны на ограничениях эпиполярной геометрии (см. этап S4). На основании базовых данных параллакса другие данные компенсации параллакса, например индекс опорной точки зрения, корректировочные данные параллакса и вектор коррекции, вычисляются с учетом эффективности кодирования и затем кодируются (см. этап S5). Затем блок 108 кодирования изображений осуществляет кодирование с использованием вычисленных данных параллакса (см. этап S6).
Затем кодированное изображение декодируется и сохраняется в памяти 109 декодированных изображений (см. этап S7). Если декодированное изображение принадлежит камере B (см. этап S8), изображение камеры C затем считывается из памяти изображений 102, и кодирование осуществляется посредством аналогичного процесса (см. этапы S4-S7) для завершения всей операции. Процессы, осуществляемые на этапах S4 и S5, будут подробно объяснены ниже.
На Фиг.7 показана подробная логическая блок-схема этапа S2, осуществляемого блоком 105 определения глобальных данных компенсации параллакса.
В первом варианте осуществления, разбиение на блоки задается для каждого макроблока, образованного 16×16 пикселями, и блоки формируются в каждом макроблоке путем разбиения на блоки. Глобальные данные параллакса определяются и кодируются для каждого блока разбиения (именуемого просто "блоком"). Можно использовать блок, имеющий больший размер, чем макроблок.
Для макроблока существует много возможных форм разбиения на блоки, и на Фиг.8 показаны их примеры. Согласно Фиг.8, "blkMode" является индексом, указывающим тип разбиения на блоки, и "maxBlk[blkMode]" представляет количество блоков для разбиения на блоки "blkMode". Дополнительно, "maxBlkMode" представляет количество типов разбиения на блоки.
Кроме того, "MBBlk" является индексом каждого макроблока, и "maxMBBlk" указывает количество макроблоков.
Поэтому, в релевантном процессе, после того, как индекс MBBlk макроблока инициализирован равным нулю (см. этап S101), процесс, осуществляемый на этапах S102-S115, повторно осуществляется с увеличением MBBlk на единицу (см. этап S116), пока MBBlk не достигнет "maxMBBlk" (см. этап S117).
После этого, определенные данные разбиения на блоки BLKMode и глобальные данные параллакса GDispInfo соответственно кодируются блоком 1052 кодирования данных разбиения на блоки и блоком 1054 кодирования глобальных данных параллакса (см. этап S118).
В процессе, применяемом к каждому макроблоку, разбиение на блоки оценивается для каждого кандидата в разбиение на блоки, и кандидат, имеющий наивысшее оценочное значение, определяется как разбиение на блоки, применяемое к макроблоку.
Таким образом, после того, как разбиение на блоки "blkMode" инициализировано равным нулю, и наилучшее оценочное значение "bValue" для макроблока инициализировано равным "wValue", соответствующему наихудшему оценочному значению, которое никогда не может быть получено (см. этап S102), нижеследующий процесс повторно осуществляется с увеличением blkMode на единицу (см. этап S114), пока blkMode не достигнет maxBlkMode (см. этап S115). В повторном процессе вычисляется оценочное значение, именуемое "value", для разбиения на блоки blkMode (см. этапы S103-S111), разбиение на блоки, которое обеспечивает наилучшее оценочное значение, определяется путем сравнения "value" с "bValue" (см. этап S112), определенное разбиение на блоки для релевантного макроблока сохраняется как BLKMode[MBBlk], и релевантные глобальные данные параллакса сохраняются как GDispInfo[MBBlk] (см. этап S113).
Оценочное значение, именуемое «value» для разбиения на блоки blkMode, можно получить путем вычисления полной суммы отдельных стоимостей скорости-дисторсии компенсации параллакса для блоков разбиения.
Таким образом, когда "blk" является индексом, указывающим каждый блок разбиения, "blk" инициализируется равным нулю, и «value» инициализируется равным оценочному значению InitValue[blkMode], обеспеченному для разбиения на блоки blkMode (см. этап S103). Затем процесс (см. этапы S104-S109) для определения глобальных данных параллакса, которые обеспечивают наилучшую стоимость скорости-дисторсии для каждого блока, повторно осуществляется при выполнении этапа S110, пока "blk" не достигнет maxBlk[blkMode] (см. этап S111). На этапе S110 1 прибавляется к "blk", наилучшая стоимость скорости-дисторсии "bestBlkCost", заданная для каждого блока, прибавляется к «value», и глобальные данные параллакса, которые обеспечивают наилучшую стоимость скорости-дисторсии для каждого блока, сохраняются в tempGDispInfo[blk].
Дополнительно, InitValue[blkMode] является заранее определенным значением, зависящим от объема кода, необходимого для кодирования данных, которые указывают, что разбиение на блоки равно blkMode.
В процессе определения (для релевантного блока) глобальных данных параллакса, которые обеспечивают наилучшую стоимость скорости-дисторсии, когда "maxGDispInfo" представляет максимальное значение индекса "gDispInfo", указывающее каждый кандидат в глобальные данные параллакса, gDispInfo инициализируется равным нулю, и наилучшая стоимость скорости-дисторсии "bestBlkCost" для блока инициализируется равным наихудшему значению "wBlkCost", которое никогда не может быть получено (см. этап S104). Затем нижеследующий процесс повторно осуществляется с увеличением gDispInfo на единицу (см. этап S108), пока gDispInfo не превысит maxGDispInfo (см. этап S109). В повторном процессе вычисляется стоимость скорости-дисторсии blkCost для глобальных данных параллакса gDispInfo (см. этап S105), глобальные данные параллакса, которые обеспечивают наилучшую стоимость скорости-дисторсии, определяются путем сравнения "blkCost" с "bestBlkCost" (см. этап S106), и определенные глобальные данные параллакса сохраняются как "bestGDispInfo" (см. этап S107).
Стоимость скорости-дисторсии blkCost для глобальных данных параллакса gDispInfo можно вычислить по следующей формуле:
[Формула 1]
.
1
Здесь λ - неопределенный множитель Лагранжа, имеющий заранее определенное значение. Кроме того, "Rate()" это функция, которая возвращает объем кода или его предсказанное значение, который необходим для кодирования глобальных данных параллакса, указанных аргументом.
cam
pix
Σ - сумма "cam ∈ {камера B, камера C}, и Σ - сумма "pix ∈ {пиксели в блоке}".
base
"d()" это функция, которая возвращает значение расстояния от стандартной точки зрения, которая указана индексом глобальных данных параллакса (обеспеченным в качестве аргумента), до изображаемого объекта.
"Value()" это функция, которая возвращает пиксельное значение в позиции пикселя (обеспеченной в качестве второго аргумента) в изображении точки зрения, обеспеченной в качестве первого аргумента.
В изображении точки зрения "src", когда расстояние от точки зрения пикселя в позиции "pix" до изображаемого объекта равно "d", Trans(src, dst, pix, d)" это функция, которая возвращает соответствующий пиксель "p" (пикселю "pix") в изображении точки зрения "dst". Здесь "p" можно вычислить по следующей формуле:
[Формула 2]
.
В формуле A, R и t указывают параметры камеры и, соответственно, представляют собой внутренний параметр, параметр поворота и параметр параллельного переноса. Внутренний параметр и параметр поворота являются матрицами 3×3, и "t" является трехмерным вектором.
Кроме того, "p" с тильдой указывает однородные координаты, и "pix" с "^" поверх конкретно указывает однородные координаты, третий компонент которых равен 1, среди всех однородных координат "pix".
Однородные координаты для двухмерных координат имеют три компонента. Координаты, первый и второй компоненты которых получены делением первого и второго компонентов однородных координат на третий компонент однородных координат, являются обычными координатами, соответствующими релевантным однородным координатам. Кроме того, параметры камеры можно представить в любой форме. В настоящем варианте осуществления применяются параметры камеры, позволяющие вычислить корреспондирующие точки между камерами по вышеприведенной формуле.
На Фиг.9 показана подробная логическая блок-схема этапа S4, осуществляемого блоком 106 определения базовых данных параллакса.
Этот процесс применяется к каждому пикселю в изображении, полученном из стандартной точки зрения.
Таким образом, после того, как пиксель индекс "bp" инициализируется равным нулю (см. этап S201), процесс, осуществляемый на этапах S202-S212, повторно осуществляется с увеличением "bp" на 1 (см. этап S213), пока "bp" не достигнет количества пикселей "numPix" в релевантном изображении (см. этап S214).
Кроме того, "BDispInfo" указывает полные базовые данные параллакса, и базовые данные параллакса для назначенной позиции представлены с использованием "[]". В начале последовательности операций базовые данные параллакса инициализируются равными большому значению, которое никогда не может быть получено (см. этап S201).
Хотя порядок обработки пикселей не ограничен, процесс осуществляется в первом варианте осуществления в форме растрового сканирования.
В повторном процессе, применяемом к каждому пикселю, сначала получается макроблок "MBBlk", который включает в себя пиксель "bp" и индекс блока "blk", определенный в соответствии с разбиением на блоки (которое было задано при определении глобальных данных параллакса) (см. этап S202).
Затем пиксель "tp" (на целевом изображении для кодирования), соответствующий пикселю "bp", и кандидат в базовые данные параллакса "bDispInfo" вычисляются на основании глобальных данных параллакса GDispInfo[MBBlk] [blk] с использованием следующей формулы (см. этап S203):
[Формула 3]
.
tar
В формуле "tar" указывает точку зрения целевого изображения для кодирования, и d() это функция, которая возвращает значение расстояния от точки зрения целевого изображения, которая указана индексом данных параллакса (т.е. кандидат в базовые данные параллакса "bDispInfo"), обеспеченным в качестве аргумента, до изображаемого объекта.
Таким образом, пиксель "tp" (его позиция) и кандидат в базовые данные параллакса на пикселе "tp" вычисляются с использованием (i) пикселя "bp" (его позиции), (ii) расстояния от стандартной точки зрения до изображаемого объекта, где расстояние указано глобальными данными параллакса для пикселя "bp", (iii) параметров камеры стандартной точки зрения, и (iv) параметров камеры точки зрения целевого изображения.
tar
Однако пиксель "tp" (его позиция) и расстояние от точки зрения целевого изображения до изображаемого объекта для пикселя "tp" вычисляются напрямую, и последнее значение преобразуется в кандидат в базовые данные параллакса (bDispInfo) для пикселя "tp" с использованием функции, обратной функции d.
Ранее вычисленный bDispInfo сравнивается с заранее вычисленными базовыми данными параллакса BDispInfo[tp] в релевантной позиции, где фактической мерой сравнения является расстояние (указанное базовыми данными параллакса (кандидатом)) от точки зрения целевого изображения до изображаемого объекта (см. этап S204). Если расстояние, указанное посредством bDispInfo, не меньше, делается вывод, что возникло перекрытие (т.е. часть, которую камера не может видеть), и операция, применяемая к релевантному пикселю, прекращается.
Если расстояние, указанное посредством bDispInfo, меньше, значение BDispInfo[tp] обновляется с использованием bDispInfo (см. этап S205).
Затем BDispInfo обновляется посредством непрерывности объекта в фактическом пространстве. Таким образом, генерируется NEIGHBOR, множество соседних пикселей, расположенных слева и выше "bp" (см. этап S206). Затем повторно осуществляется следующий процесс (этапы S208-S211), при этом пиксель, для которого релевантный процесс завершен, удаляется (см. этап S212), пока множество NEIGHBOR не станет пустым (см. этап S207).
В процессе, применяемом к каждому элементу NEIGHBOR, сначала, глобальные данные параллакса "nbp", который является элементом NEIGHBOR, получаются с использованием GDispInfo и сохраняются как nGDispInfo (см. этап S208).
Затем абсолютное значение разности между nGDispInfo и GDispInfo[MBBlk][blk] сравнивается с заранее определенным порогом TH (см. этап S209).
Если абсолютное значение больше или равно порогу, это указывает, что релевантный объект не обладает непрерывностью в фактическом пространстве, и операция для элемента заканчивается.
Если абсолютное значение меньше порога, пиксель "ntp" на целевом изображении, который соответствует пикселю "nbp", и базовые данные параллакса nbDispInfo для "ntp" вычисляются с использованием формулы на вышеупомянутом этапе S203 (см. этап S210).
Базовые данные параллакса для пикселя между "tp" и "ntp" вычисляются посредством интерполяции с использованием bDispInfo и nbDispInfo (см. этап S211).
Хотя можно использовать любой способ для осуществления интерполяции с использованием данных обоих релевантных концов, в наиболее простом способе центр линейно интерполируется с использованием базовых данных параллакса на обоих концах. Если базовые данные параллакса, имеющие значение, меньшее, чем вычисленное интерполированное значение, уже существуют, делается вывод, что произошло перекрытие, и обновление не осуществляется.
В первом варианте осуществления, для каждого пикселя, повторно осуществляется вычисление для получения соответствующего пикселя на целевом изображении и релевантные базовые данные параллакса с использованием позиции пикселя и глобальных данных параллакса. Однако вычисление на этапе S210 осуществляется с использованием формулы на вышеупомянутом этапе S203. Поэтому, если результат процесса на этапе S203 можно сохранить, повторение не требуется для каждого пикселя с использованием сохраненного значения, что позволяет сократить объем вычислений.
На Фиг.10 показана подробная логическая блок-схема этапа S5, осуществляемого на блоке 107 определения данных компенсации параллакса.
В первом варианте осуществления, разбиение на блоки определяется для каждого макроблока, и индекс опорной точки зрения, корректировочные данные параллакса и вектор коррекции вычисляются и кодируются для каждого блока. В настоящем варианте осуществления, индекс опорной точки зрения, корректировочные данные параллакса и вектор коррекции, которые получаются для каждого блока, называются "данными компенсации параллакса". Для каждого блока, данные, используемые для компенсации параллакса, это не только данные компенсации параллакса, но и базовые данные параллакса. Таким образом, данные компенсации параллакса используются для коррекции базовых данных параллакса.
Соответственно, после того, как индекс макроблока MBBlk инициализирован равным нулю (см. этап S301), процесс (на этапах S302-S315) для определения разбиения на блоки с учетом данных компенсации параллакса повторно осуществляется с увеличением MBBlk на 1 (см. этап S316), пока MBBlk не достигнет maxMBBlk (см. этап S317). Вычисленные данные компенсации параллакса кодируются блоком 1072 кодирования данных разбиения на блоки, блоком 1074 кодирования индекса точки зрения, блоком 1076 кодирования корректировочных данных параллакса и блоком 1078 кодирования вектора коррекции (см. этап S318).
В процессе определения разбиения на блоки с учетом данных компенсации параллакса, после того, как данные разбиения на блоки blkMode инициализируются равными нулю (см. этап S302), нижеследующий процесс повторно осуществляется с увеличением blkMode на 1 (см. этап S314), пока blkMode не достигнет maxblkMode (см. этап S315). В повторном процессе, стоимость скорости-дисторсии MBCost макроблока вычисляется с учетом данных компенсации параллакса (см. этапы S303-S311), после чего MBCost сравнивается с заранее вычисленной минимальной стоимостью bestMBCost (см. этап S312), и разбиение на блоки, которое создает меньшую стоимость, определяется как разбиение на блоки eBLKMode[MBBlk] релевантного макроблока (см. этап S313).
Кроме того, bestMBCost сначала инициализируется равным максимальному значению "wMBCost", которое никогда нельзя вычислить (см. этап S302).
В процессе вычисления стоимости скорости-дисторсии макроблока с учетом данных компенсации параллакса, после того, как индекс блока "blk" инициализирован равным нулю (см. этап S303), процесс (этапы S304-S309) вычисления (для каждого блока) данных компенсации параллакса bestEDispInfo, которые обеспечивают минимальную стоимость скорости-дисторсии, и соответствующей стоимости скорости-дисторсии "bestBlkECost" повторно осуществляется с увеличением "blk" на 1 (см. этап S310), пока "blk" не достигнет maxBlk[blkMode] (см. этап S311).
Стоимость скорости-дисторсии MBCost для каждого макроблока сначала инициализируется равной нулю (см. этап S303), а затем вычисляется путем накопления минимальной стоимости скорости-дисторсии bestBlkCost по завершении процесса для каждого блока (см. этап S310).
Кроме того, определенные данные компенсации параллакса сохраняются как tempEDispInfo[blk] (см. этап S310) и, если они имеют наилучшее значение с учетом окончательно полученной стоимости скорости-дисторсии макроблока, они сохраняются как EDispInfo[MBBlk] (см. этап S313).
В процессе вычисления минимальной стоимости скорости-дисторсии каждого блока, после того, как индекс данных компенсации параллакса "eDispInfo", который соответствует релевантному набору индексов опорной точки зрения, корректировочные данные параллакса и вектор коррекции, инициализированы равным нулю (см. этап S304), нижеследующий процесс повторно осуществляется с увеличением eDispInfo на 1 (см. этап S308), пока eDispInfo не достигнет maxEDispInfo, который указывает количество комбинаций между индексом опорной точки зрения, корректировочными данными параллакса и вектором коррекции (см. этап S309). В повторном процессе, вычисляется стоимость скорости-дисторсии blkECost для данных компенсации параллакса, соответствующих eDispInfo, (см. этап S305), и если blkECost меньше заранее вычисленной минимальной стоимости скорости-дисторсии bestblkECost (см. этап S306), то eDispInfo сохраняется как bestEDispInfo, и bestBlkECost обновляется с использованием blkECost (см. этап S307).
Кроме того, bestBlkECost сначала инициализируется равным максимальному значению "wBlkECost", которое никогда нельзя вычислить (см. этап S304).
Вычисление стоимости скорости-дисторсии на этапе S306 осуществляется с использованием следующей формулы:
[Формула 4]
.
2
Здесь λ - неопределенный множитель Лагранжа, имеющий заранее определенное значение. Кроме того, "tar" указывает точку зрения целевого изображения для кодирования, и "ref", "md" и "cmv" соответственно представляют индекс опорной точки зрения, корректировочные данные параллакса и вектор коррекции, которые указаны индексом данных компенсации параллакса "eDispInfo".
Далее будет объяснен второй вариант осуществления. На Фиг.11, 12, 13 и 14 показана структура устройства кодирования видео во втором варианте осуществления настоящего изобретения.
Согласно Фиг.11, устройство 200 кодирования видео согласно второму варианту осуществления содержит блок 201 ввода изображения, в который вводятся исходные изображения (в качестве целевых изображений для кодирования) камер B и C; память 202 изображений для сохранения входных изображений; блок 203 ввода изображения стандартной точки зрения, в который вводится декодированное изображение камеры A (в качестве стандартной точки зрения); память 204 изображений стандартной точки зрения для сохранения входного декодированного изображения стандартной точки зрения; блок 205 определения локальных данных компенсации параллакса для определения локальных данных параллакса, которые являются данными параллакса (для каждого целевого изображения для кодирования) на основании ограничения эпиполярной геометрии; блок 206 определения глобальных данных компенсации параллакса для определения и кодирования глобальных данных параллакса, которые являются данными параллакса (для стандартной точки зрения) на основании ограничения эпиполярной геометрии, с использованием локальных данных параллакса, определенных для каждого целевого изображения; блок 207 определения базовых данных параллакса для определения базовых данных параллакса, которые формируются путем преобразования глобальных данных параллакса и являются данными параллакса (для точки зрения каждого целевого изображения для кодирования) на основании ограничения эпиполярной геометрии; блок 208 определения данных компенсации параллакса для определения данных, используемых для осуществления компенсации параллакса на целевом изображении; блок 209 кодирования изображений для осуществления фактического предсказательного кодирования на каждом входном изображении; и память 210 декодированных изображений для сохранения изображения, декодированного из кодированного входного изображения.
Если 209 блок кодирования изображений имеет память для сохранения декодированного изображения, чтобы использовать заранее кодированное изображение, память также может функционировать как память 210 декодированных изображений.
На Фиг.12 показана схема, демонстрирующая подробную структуру блока 205 определения локальных данных компенсации параллакса.
Согласно Фиг.12, блок 205 определения локальных данных компенсации параллакса имеет блок 2051 задания разбиения на блоки локальных данных параллакса для задания разбиения на блоки в целевом изображении для кодирования, для определения локальных данных параллакса; блок 2052 задания индекса опорной точки зрения для задания индекса точки зрения, который указывает точку зрения изображения, используемого в качестве опорного изображения при компенсации параллакса; блок 2053 определения локальных данных параллакса для определения данных параллакса на основании ограничения эпиполярной геометрии; и блок 2054 оценки эффективности компенсации параллакса для оценивания эффективности, когда компенсация параллакса осуществляется с использованием заданного разбиения на блоки, индекса опорной точки зрения и компенсации параллакса, для обеспечения данных обратной связи для каждого блока задания или определения.
Индекс первой точки зрения, заданный блоком 2052 задания индекса опорной точки зрения, поступает на блок 208 определения данных компенсации параллакса, и локальные данные параллакса, определенные блоком 2053 определения локальных данных параллакса, поступают на блок 206 определения глобальных данных компенсации параллакса и блок 208 определения данных компенсации параллакса.
На Фиг.13 показана схема, демонстрирующая подробную структуру блока 206 определения глобальных данных компенсации параллакса.
Согласно Фиг.13, блок 206 определения глобальных данных компенсации параллакса имеет блок 2061 задания разбиения на блоки изображения стандартной точки зрения для задания разбиения на блоки в изображении стандартной точки зрения; блок 2062 кодирования данных разбиения на блоки для кодирования определенных данных разбиения на блоки; блок 2063 оценки глобальных данных параллакса для оценивания глобальных данных параллакса для каждого блока с использованием локальных данных параллакса, поступающих от блока 2053 определения локальных данных параллакса на блоке 205 определения локальных данных компенсации параллакса; и блок 2064 кодирования глобальных данных параллакса для кодирования определенных глобальных данных параллакса.
Глобальные данные параллакса, определенные блоком 2063 оценки глобальных данных параллакса, поступают на блок 207 определения базовых данных параллакса.
Кроме того, кодированные данные, выводимые из блока 2062 кодирования данных разбиения на блоки и блока 2064 кодирования глобальных данных параллакса, составляют часть данных, выводимых из устройства 200 кодирования видео.
На Фиг.14 показана схема, демонстрирующая подробную структуру блока 208 определения данных компенсации параллакса.
Согласно Фиг.14, блок 208 определения данных компенсации параллакса имеет блок 2081 задания разбиения на блоки целевого изображения для задания разбиения на блоки в целевом изображении для кодирования с использованием разности между базовыми данными параллакса, поступающими от блока 207 определения базовых данных параллакса, и локальными данными параллакса, поступающими от блока 2053 определения локальных данных параллакса; блок 2082 кодирования данных разбиения на блоки для кодирования определенных данных разбиения на блоки; блок 2083 определения корректировочных данных параллакса для определения корректировочных данных параллакса, используемых для коррекции базовых данных параллакса на основании ограничения эпиполярной геометрии с использованием определенных данных разбиения на блоки и вышеупомянутой разности; блок 2084 кодирования корректировочных данных параллакса для кодирования определенных корректировочных данных параллакса; блок 2085 задания индекса опорной точки зрения для задания индекса опорной точки зрения для каждого блока с использованием индекса первой точки зрения, поступающего от блока 2052 задания индекса опорной точки зрения на блоке 205 определения локальных данных компенсации параллакса и данных разбиения на блоки; блок 2086 кодирования индекса точки зрения для кодирования заданного индекса точки зрения; блок 2087 определения вектора коррекции для определения вектора коррекции, используемого для коррекции соответствующего соотношения независимо от ограничения эпиполярной геометрии, где соответствующее соотношение обеспечивается данными на основании ограничения эпиполярной геометрии; блок 2088 кодирования вектора коррекции для кодирования определенного вектора коррекции; и блок 2089 оценки эффективности компенсации параллакса для оценивания эффективности предсказания, когда компенсация параллакса осуществляется с использованием данных, определенных каждым релевантным блоком, для подачи данных обратной связи на блок 2087 определения вектора коррекции.
Изображение с компенсацией параллакса, в отношении которого определено блоком 2089 оценки эффективности компенсации параллакса, что оно имеет наивысшую эффективность компенсации параллакса, поступает на блок 209 кодирования изображений.
Кроме того, кодированные данные, выводимые из блока 2082 кодирования данных разбиения на блоки, блока 2084 кодирования корректировочных данных параллакса, блока 2086 кодирования индекса точки зрения и блока 2088 кодирования вектора коррекции, составляют часть данных, выводимых из устройства 200 кодирования видео.
На Фиг.15-18 показаны последовательности операций, осуществляемые устройством 200 кодирования видео, имеющим вышеописанную структуру. Процессы, осуществляемые устройством 200 кодирования видео, будет подробно объяснены в соответствии с логическими блок-схемами.
На Фиг.15 показана общая последовательность операций всего процесса кодирования, осуществляемого устройством 200 кодирования видео. В этой последовательности операций, изображение, полученное камерой B, и изображение, полученное камерой C, полученные в одно и то же время, кодируются.
Сначала, одно изображение камеры B и одно изображение камеры C, полученные в одно и то же время, вводятся в блок 201 ввода изображения, и изображения сохраняются в памяти 202 изображений (см. этап S401). Здесь декодированное изображение изображения камеры A, которое получено в то же время, что и входные изображения, поступает на блок 203 ввода изображения стандартной точки зрения и сохраняется в памяти 204 изображений стандартной точки зрения.
Затем, на блоке 205 определения локальных данных компенсации параллакса, локальные данные параллакса определяются для каждого изображения в памяти релевантных изображений с использованием изображений, хранящихся в памяти 202 изображений и в памяти 204 изображений стандартной точки зрения (см. этап S402). Этот процесс будет подробно объяснен ниже со ссылкой на Фиг.16.
Затем, на блоке 206 определения глобальных данных компенсации параллакса, глобальные данные параллакса для изображения стандартной точки зрения, которые удовлетворяют ограничению эпиполярной геометрии, вычисляются с использованием локальных данных параллакса, и глобальные данные параллакса кодируются (см. этап S403). Этот процесс будет подробно объяснен ниже со ссылкой на Фиг.17.
Следующий процесс (на этапах S405-S408) осуществляется для каждого изображения в памяти 202 изображений. В нижеследующем объяснении, сначала кодируется изображение камеры B, а потом кодируется изображение камеры C.
Таким образом, изображение камеры B считывается из памяти 202 изображений и задается как целевое изображение для кодирования (см. этап S404), и глобальные данные параллакса, вычисленные на этапе S403, преобразуются блоком определения базовых данных параллакса 207 в базовые данные параллакса (для целевого изображения) на основании ограничения эпиполярной геометрии (см. этап S405). На основании локальных данных параллакса и базовых данных параллакса, индекс опорной точки зрения, корректировочные данные параллакса и вектор коррекции, которые являются данными компенсации параллакса, вычисляются и кодируются блоком 208 определения данных компенсации параллакса с учетом эффективности кодирования (см. этап S406). Затем целевое изображение кодируется блоком 209 кодирования изображений с использованием вычисленных данных компенсации параллакса (см. этап S407). Затем кодированное изображение декодируется и сохраняется в памяти 210 декодированных изображений (см. этап S408).
Если кодированное изображение принадлежит камере B (см. этап S409), изображение камеры C считывается из памяти изображений 202 (см. этап S410) и кодируется посредством аналогичного процесса (этапы S405-S408), таким образом, выполняется общая операция.
Поскольку процесс на этапе S405 аналогичен процессу, осуществляемому на вышеописанном этапе S4 (см. Фиг.6), его объяснения будут опущены.
Кроме того, процесс на этапе S406 будет подробно объяснен со ссылкой на Фиг.18.
На Фиг.16 показана подробная логическая блок-схема этапа S402, осуществляемого блоком 205 определения локальных данных компенсации параллакса, который применяет релевантную операцию к каждому изображению, хранящемуся в памяти 202 изображений.
Во втором варианте осуществления, разбиение на блоки задается для каждого макроблока, образованного 16×16 пикселями, и блоки формируются в каждом макроблоке путем разбиения на блоки. Локальные данные параллакса определяются и кодируются для каждого блока разбиения. Существует много форм разбиения на блоки, применимых к макроблоку, и на Фиг.8 показано несколько примеров.
Аналогично первому варианту осуществления, "blkMode" является индексом, указывающим тип разбиения на блоки, и "maxBlk[blkMode]" представляет количество блоков для разбиения на блоки "blkMode". Дополнительно, «maxBlkMode» представляет количество типов разбиения на блоки.
Кроме того, «MBBlk» является индексом каждого макроблока, и «maxMBBlk» указывает количество макроблоков.
В релевантной операции, после того, как индекс MBBlk макроблока инициализирован равным нулю (см. этап S501), процесс (осуществляемый на этапах S502-S515) для определения разбиения на блоки и локальных данных параллакса повторно осуществляется при увеличении MBBlk на единицу (см. этап S516), пока MBBlk не достигнет количества "maxMBBlk" макроблоков в релевантном изображении (см. этап S517).
В процессе определения разбиения на блоки и локальных данных параллакса определяются локальные данные компенсации параллакса, которые наиболее пригодны для каждого разбиения на блоки, и выбирается разбиение на блоки, имеющее наиболее высокую оценку.
В частности, после того, как разбиение на блоки blkMode инициализировано равным нулю, и наилучшее оценочное значение "bestMBLCost" для макроблока инициализировано равным максимальному оценочному значению "wMBLCost", которое никогда не может быть получено (см. этап S502), нижеследующий процесс повторно осуществляется с увеличением blkMode на единицу (см. этап S514), пока blkMode не достигнет maxBlkMode (см. этап S515). В повторном процессе вычисляется оценочное значение "MBLCost" для разбиения на блоки blkMode (см. этапы S503-S511), и если MBLCost меньше, чем bestMBLCpst (см. этап S512), MBLCost сохраняется как "bestMBLCost", соответствующее разбиение на блоки blkMode сохраняется в IBLKMode[MBBlk], и соответствующие локальные данные компенсации параллакса tempLDispInfo (для каждого блока) сохраняются в LDispInfo[cam] (см. этап S513). Вышеупомянутый "cam" является индексом, назначаемым каждому изображению в памяти 202 изображений.
В процессе вычисления оценочного значения для каждого разбиения на блоки оптимальные локальные данные компенсации параллакса вычисляются для каждого блока, и их полная сумма используется в качестве оценочного значения для релевантного разбиения на блоки.
В частности, после того, как индекс блока «blk» инициализирован равным нулю, и оценочное значение MBLCost для разбиения на блоки также инициализировано равным нулю (см. этап S503), нижеследующий процесс повторно осуществляется с увеличением "blk" на 1 (см. этап S510), пока "blk" не достигнет maxBlk[blkMode] (см. этап S511). В повторном процессе, вычисляются наилучшие локальные данные компенсации параллакса bestLDispInfo и наилучшее оценочное значение bestBlkLCost для блока "blk" (см. этапы S504-S509), bestBlkLCost прибавляется к MBLCost, и bestLDispInfo сохраняется в tempLDispInfo[blk] (см. этап S510).
Здесь, если блок прогнозируется с использованием другого изображения, вышеописанные наилучшие локальные данные компенсации параллакса для блока представляют собой набор данных, которые указывают изображение, используемое для предсказания, и локальные данные параллакса на основании ограничения эпиполярной геометрии, которые позволяют минимизировать стоимость скорости-дисторсии.
Поэтому стоимость скорости-дисторсии играет роль оценочного значения для локальных данных компенсации параллакса, и процесс вычисления наилучших локальных данных компенсации параллакса и наилучшего оценочного значения целевого блока соответствует процессу вычисления набора индексов опорной точки зрения и локальных данных параллакса, которые позволяют минимизировать стоимость скорости-дисторсии.
Таким образом, после того, как индекс локальных данных компенсации параллакса "IDispInfo", соответствующий набору индексов точки зрения и локальных данных параллакса, инициализирован равным нулю, и наилучшая стоимость скорости-дисторсии "bestBlkLCost" инициализирована равной максимальному значению "wBlkLCost", которое никогда не может быть получено (см. этап S504), нижеследующий процесс повторно осуществляется с увеличением IDispInfo на 1 (см. этап S508), пока IDispInfo не достигнет "maxLDispInfo", т.е. количества комбинаций между индексом точки зрения и локальными данными параллакса (см. этап S509). В повторном процессе, вычисляется стоимость скорости-дисторсии "blkLCost" для IDispInfo (см. этап S505), и если blkLCost меньше, чем bestBlkLCost (см. этап S506), то blkLCost сохраняется как bestBlkLCost, и IDispInfo сохраняется как bestLDispInfo (см. этап S507).
Стоимость скорости-дисторсии blkLCost для IDispInfo можно вычислить по следующей формуле:
[Формула 5]
.
3
cam
В вышеприведенной формуле λ - неопределенный множитель Лагранжа, имеющий заранее определенное значение. Кроме того, "dist()" и "refer()" это функции, имеющие один и тот же аргумент (локальные данные компенсации параллакса) и, соответственно, возвращающие расстояние от точки зрения "cam" до изображаемого объекта и опорной точки зрения.
При фактическом кодировании можно обращаться только к заранее кодированным изображениям. Поэтому, во втором варианте осуществления, когда "cam" это камера B, только стандартная точка зрения может быть кандидатом опорной точки зрения, и когда "cam" это камера C, стандартная точка зрения и точка зрения камеры B могут быть кандидатами на опорную точку зрения.
На Фиг.17 показана подробная логическая блок-схема процесса на этапе S403, осуществляемого на блоке 206 определения глобальных данных компенсации параллакса. Аналогично первому варианту осуществления, во втором варианте осуществления, разбиение на блоки указывается для каждого макроблока, и глобальные данные параллакса вычисляются для каждого блока, сгенерированного при разбиении на блоки.
Сначала кандидат в глобальные данные параллакса tGDispInfo генерируется с использованием локальных данных параллакса на основании ограничения эпиполярной геометрии, где локальные данные параллакса являются элементом локальных данных компенсации параллакса LDispInfo, определенных блоком 205 определения локальных данных компенсации параллакса (см. этап S601).
Этот процесс выполняется с использованием процесса (см. Фиг.9) вычисления базовых данных параллакса, где локальные данные параллакса рассматриваются как глобальные данные параллакса, точка зрения, для которой обеспечиваются локальные данные параллакса, рассматривается в качестве стандартной точки зрения, и стандартная точка зрения рассматривается как целевая точка зрения для кодирования. В таком случае, результат, соответствующий базовым данным параллакса, действует как кандидат в глобальные данные параллакса. Вышеупомянутый процесс осуществляется для каждого изображения в памяти 202 изображений, и кандидат в глобальные данные параллакса для каждого изображения представлен посредством "tGDispInfo[cam]", где "cam" - индекс изображения.
Во втором варианте осуществления, вычисленный выше tGDispInfo используется для определения данных разбиения на блоки для каждого макроблока, и глобальные данные параллакса определяются для каждого блока.
Поэтому, после того, как индекс макроблока MBBlk инициализирован равным нулю (см. этап S602), процесс (этапы S603-S612) вычисления наилучшего разбиения на блоки и соответствующих глобальных данных параллакса среди всех возможных разбиений на блоки повторно осуществляется с увеличением MBBlk на 1 (см. этап S613), пока MBBlk не достигнет количества "maxMBBlk" макроблоков (см. этап S614).
После этого, вычисленные данные разбиения на блоки BLKMode и глобальные данные параллакса GDispInfo соответственно кодируются блоком 2062 кодирования данных разбиения на блоки и блоком 2064 кодирования глобальных данных параллакса (см. этап S615).
В процессе вычисления наилучшего разбиения на блоки и соответствующих глобальных данных параллакса среди всех возможных разбиений на блоки, разбиение на блоки каждого разбиения на блоки кандидат оценивается, и кандидат, имеющий наивысшее оценочное значение, выбирается как наилучшее разбиение на блоки.
Поэтому, после того, как разбиение на блоки blkMode инициализировано равным нулю, и наилучшее оценочное значение "bestValue" для макроблока инициализировано равным "wValue", соответствующему наихудшему оценочному значению, которое никогда не может быть получено (см. этап S603), нижеследующий процесс повторно осуществляется с увеличением blkMode на единицу (см. этап S611), пока blkMode не достигнет maxBlkMode (см. этап S612). В повторном процессе вычисляется оценочное значение, именуемое «value» для разбиения на блоки blkMode (см. этапы S604-S608), и если «value» меньше, чем "bestValue" (см. этап S609), то «value» и "bklkMode" соответственно сохраняются как "bestValue" и "BLKMode[MBBlk]", и вычисленные в данный момент глобальные данные параллакса tempGDispMo сохраняются в GDispInfo[MBBlk] (см. этап S610).
Оценочное значение, именуемое «value», для разбиения на блоки blkMode получается путем вычисления полной суммы стоимостей скорости-дисторсии для компенсации параллакса, применяемой к каждому блоку разбиения.
Поэтому, после того, как индекс блока «blk» инициализирован равным нулю и «value» инициализировано равным оценочному значению "InitValue[blkMode]", соответствующему разбиению на блоки blkMode (см. этап S604), следующий процесс, повторно осуществляемый при выполнении этапа S607, осуществляется, пока "blk" не достигнет maxBlk[blkMode] (см. этап S608). На этапе S607, 1 прибавляется к "blk", стоимость скорости-дисторсии "blkCost" для блока "blk" прибавляется к «value», и вычисленные в данный момент глобальные данные параллакса gDispInfo сохраняются в tempGDispInfo[blk]. В повторном процессе, gDispInfo вычисляется с использованием tGDispInfo для блока "blk" (см. этап S605), и вычисляется соответствующий blkCost (см. этап S606).
Дополнительно, InitValue[blkMode] является заранее определенным значением, зависящим от объема кода, необходимого для кодирования данных, которые указывают, что разбиение на блоки равно blkMode.
В процессе вычисления gDispInfo из tGDispInfo для блока "blk" среднее для tGDispInfo в блоке "blk" вычисляется и определяется как gDispInfo. Вместо среднего можно использовать значение, которое появляется чаще всего.
Можно применять способ вычисления стоимостей скорости-дисторсии обоих кандидатов для выбора наилучшего из них или способ вычисления стоимости скорости-дисторсии для каждого периферийного значения кандидата для выбора наилучшего из них, где каждый способ можно легко реализовать как разновидность настоящего варианта осуществления, и его объяснения будут опущены.
Стоимость скорости-дисторсии blkCost, когда глобальные данные параллакса для блока "blk" являются gDispInfo, можно вычислить по формуле, аналогичной той, которая используется на этапе S105 (см. Фиг.7) в первом варианте осуществления. Кроме того, для снижения объема вычислений, оценивание можно осуществлять с использованием следующей формулы:
[Формула 6]
.
На Фиг.18 показана подробная логическая блок-схема этапа S406, осуществляемого на блоке 208 определения данных компенсации параллакса.
Аналогично первому варианту осуществления, во втором варианте осуществления, разбиение на блоки выбирается для каждого макроблока, и данные компенсации параллакса, которые состоят из индекса опорной точки зрения, корректировочных данных параллакса и вектора коррекции, вычисляются и кодируются для каждого блока.
Отличительный признак по сравнению с первым вариантом осуществления состоит в вычислении вектора коррекции после того, как разбиение на блоки, индекс опорной точки зрения и корректировочные данные параллакса определены с использованием локальных данных параллакса, которые поступают от блока 2053 определения локальных данных параллакса, на блоке 205 определения локальных данных компенсации параллакса.
Таким образом, сначала кандидат в корректировочные данные параллакса tEDispInfo генерируется путем вычисления разности между локальными данными параллакса и базовыми данными параллакса (см. этап S701).
Затем, после того, как индекс макроблока MBBlk инициализирован равным нулю (см. этап S702), нижеследующий процесс повторно осуществляется с увеличением MBBlk на 1 (см. этап S710), пока MBBlk не достигнет количества maxMBBlk макроблоков, имеющихся в релевантном изображении (см. этап S711). В повторном процессе определяется разбиение на блоки eBLKMode[MBBlk] (см. этап S703) и вычисляются данные компенсации параллакса EDispInfo (см. этап S709).
После этого, данные разбиения на блоки eBLKMode и данные компенсации параллакса EDispInfo кодируются (см. этап S712).
В процессе на этапе S703, разбиение на блоки определяется равным единице, что создает минимальное количество блоков разбиения, среди форм разбиения на блоки, каждая из которых удовлетворяет условию, что все пиксели, включенные в каждый блок, имеют одно и то же значение tEDispInfo.
При наличии совокупности разбиений на блоки, которые удовлетворяют вышеупомянутому условию, выбирается разбиение на блоки, имеющее наибольший максимальный блок. Если одно разбиение на блоки нельзя определить по этому условию, любое разбиение на блоки выбирается, которое удовлетворяет условию.
Дополнительно, если ни одно разбиение на блоки не удовлетворяет первичному условию, выбирается разбиение на блоки, имеющее наибольшее количество блоков и наименьший минимальный размер блока.
В процессе вычисления данных компенсации параллакса, наилучшие данные компенсации параллакса вычисляются для каждого блока в соответствии с разбиением на блоки eBLKMode[MBBlk], определенным для релевантного макроблока.
Таким образом, после того, как индекс блока «blk» инициализирован равным нулю (см. этап S704), нижеследующий процесс повторно осуществляется с увеличением «blk» на 1 (см. этап S708), пока "blk" не достигнет количества "maxBlk[eBLKMode[MBBlk]]" блоков (см. этап S709). В повторном процессе (i) корректировочные данные параллакса "md" вычисляются с использованием tEDispInfo, и индекс опорной точки зрения "ref" вычисляется с использованием индекса первой точки зрения, поступающего от блока 2052 задания индекса опорной точки зрения на блоке 205 определения локальных данных компенсации параллакса (см. этап S705), (ii) вектор коррекции "cmv" для минимизации стоимости скорости-дисторсии блока "blk" вычисляется с использованием значений, вычисленных на этапе S705 (см. этап S706), и (iii) данные компенсации параллакса, соответствующие множеству {md, ref, cmv}, вычисляются и сохраняются в EDispInfo[MBBlk][blk] (см. этап S707).
Кроме того, стоимость скорости-дисторсии для блока, которая используется в процессе на этапе S706, можно вычислить по формуле, аналогичной той, которая используется для вычисления стоимости на этапе S306 (см. Фиг.10) согласно первому варианту осуществления.
В процессе на этапе S705, корректировочные данные параллакса определяются как значение tEDispInfo (присвоенное каждому пикселю в релевантном блоке), которое появляется чаще всего. Кроме того, индекс опорной точки зрения определяется как индекс первой точки зрения, соответствующий пикселю (в релевантном блоке), для которого определенные корректировочные данные параллакса совпадают с tEDispInfo. Хотя в вышеупомянутом случае выбирается значение tEDispInfo, которое появляется чаще всего, можно использовать среднее по блоку.
На блоке 208 определения данных компенсации параллакса согласно второму варианту осуществления, разбиение на блоки, корректировочные данные параллакса и индекс опорной точки зрения определяются с использованием данных, поступающих от блока 205 определения локальных данных компенсации параллакса, без учета стоимости скорости-дисторсии. Однако, аналогично блоку 107 определения данных компенсации параллакса в первом варианте осуществления, их можно определить с учетом стоимости скорости-дисторсии.
Дополнительно, в отличие от первого варианта осуществления, только часть разбиения на блоки, корректировочные данные параллакса и индекс опорной точки зрения можно определить с учетом стоимости скорости-дисторсии. Такой случай можно легко реализовать как вариант, обеспеченный путем частичного объединения первого варианта осуществления и второго варианта осуществления, и, таким образом, его объяснения будут опущены.
В первом и втором вариантах осуществления, форма разбиения на блоки определяется на блоке 1051 или 2061 задания разбиения на блоки изображения стандартной точки зрения, на блоке 105 или 206 определения глобальных данных компенсации параллакса, и данные разбиения на блоки в качестве его результатов кодируются на блоке 1052 или 2062 кодирования данных разбиения на блоки.
Однако данные разбиения на блоки можно не кодировать, если разбиение на блоки, заданное на блоке 1051 или 2061 задания разбиения на блоки изображения стандартной точки зрения, совпадает с разбиением на блоки, применяемым, когда изображение стандартной точки зрения закодировано для каждого блока.
В таком случае, объем кода можно снизить на величину, необходимую для указания данных разбиения на блоки.
Также в первом и втором вариантах осуществления, целевое изображение для кодирования подвергается компенсации параллакса с использованием заранее кодированного изображения другой точки зрения и кодируется. Однако для кодирования каждого блока в целевом изображении, между компенсацией параллакса и компенсацией движения можно выбрать ту, которая дает более высокую эффективность предсказания. В таком случае, данным компенсации параллакса для каждого блока, к которому не применяется компенсация параллакса, можно присвоить значение, которое обеспечивает минимальный объем кода, где этот способ можно легко реализовать как разновидности настоящего варианта осуществления, и его объяснения будут опущены.
Кроме того, не обязательно, чтобы типы разбиения на блоки, выбранные релевантными блоками в устройстве кодирования, были одинаковыми. В частности, если разбиение на блоки на изображении стандартной точки зрения, используемое для вычисления глобальных данных параллакса, имеет больший размер блока по сравнению с другими разбиениями на блоки, объем кода глобальных данных параллакса можно снизить, и можно представить общие данные параллакса, которые не подвержены ошибке параметров камеры и пр.
На Фиг.19 показано устройство 300 декодирования видео согласно третьему варианту осуществления настоящего изобретения.
Устройство 300 декодирования видео содержит блок 301 ввода кодированных данных, в который вводятся кодированные данные; блок 302 ввода изображения стандартной точки зрения, в который вводится декодированное изображение камеры A в качестве стандартной точки зрения; память 303 изображений для сохранения изображения (включая изображение стандартной точки зрения), на основании которого можно осуществлять компенсацию параллакса; блок 304 декодирования глобальных данных компенсации параллакса для декодирования (из входных кодированных данных) данных разбиения на блоки для стандартной точки зрения и глобальных данных параллакса на основании ограничения эпиполярной геометрии; блок 305 определения базовых данных параллакса для определения базовых данных параллакса, которые формируются с использованием глобальных данных параллакса и являются данными параллакса (для точки зрения каждого целевого изображения для декодирования) на основании ограничения эпиполярной геометрии; блок 306 декодирования данных компенсации параллакса для декодирования (входных кодированных данных) данных разбиения на блоки для целевого изображения для декодирования, индекса опорной точки зрения, который указывает опорное изображение, используемое для компенсации параллакса, корректировочных данных параллакса для коррекции данных параллакса в соответствии с ограничением эпиполярной геометрии, и вектора коррекции для коррекции соответствующей точки, используемого для компенсации параллакса; блок 307 генерации изображений с компенсацией параллакса для генерации изображения с компенсацией параллакса из точки зрения целевого изображения, на основании декодированных данных; и блок 308 декодирования изображений для декодирования целевого изображения с использованием входных кодированных данных и генерированного изображения с компенсацией параллакса.
При декодировании целевого изображения на основании заранее декодированного изображения, блок 308 декодирования изображения может включать в себя память для сохранения декодированных изображений. Такая память также может действовать как память 303 изображений.
На Фиг.20 показана логическая блок-схема процесса декодирования в настоящем варианте осуществления. В этой последовательности операций, кадры, полученные камерами B и C, в то же время, последовательно декодируются. Ниже последовательность операций будет подробно объяснена.
Кроме того, кадр камеры A, полученный в то же время, когда были декодированы декодированные кадры, и параметры камеры каждой камеры были получены.
Сначала кодированные данные вводятся в блок 301 ввода кодированных данных (см. этап S801). Кроме того, кадр камеры A, полученный в то же время, когда кадры, включенные во входные кодированные данные, были введены в блок 302 ввода изображения стандартной точки зрения, и был сохранен в памяти 303 изображений. Входные кодированные данные являются полными кодированными данными одного кадра, которые выводятся из устройства кодирования видео, что показано в первом или втором варианте осуществления.
Затем, на блоке 304 декодирования глобальных данных компенсации параллакса, данные разбиения на блоки для изображения стандартной точки зрения декодируются из входных кодированных данных, и, в соответствии с релевантным разбиением на блоки, глобальные данные параллакса для каждого блока декодируются для получения глобальных данных параллакса decGDispInfo для каждого пикселя изображения стандартной точки зрения (см. этап S802).
Затем, на блоке 305 определения базовых данных параллакса, базовые данные параллакса decBDispInfo для точки зрения камеры B вычисляются с использованием decGDispInfo (см. этап S803).
Этот процесс реализуется логической блок-схемой, которая объяснена со ссылкой на Фиг.9. Однако BDispInfo, GDispInfo и целевое изображение для кодирования на Фиг.9 соответственно рассматриваются как decBDispInfo, decGDispInfo и целевое изображение для декодирования.
После получения базовых данных параллакса, на блоке 306 декодирования данных компенсации параллакса, данные разбиения на блоки для камеры B декодируются из входных кодированных данных, и, в соответствии с релевантным разбиением на блоки, индекс опорной точки зрения, корректировочные данные параллакса и вектор коррекции декодируются для получения индекса опорной точки зрения "decRef", корректировочных данных параллакса "decMd" и вектора коррекции "decCmv" для каждого пикселя для камеры B (см. этап S804).
Затем на блоке 307 генерации изображений с компенсацией параллакса, изображение с компенсацией параллакса DCImage для камеры B генерируется на основании релевантного изображения в памяти 303 изображений с использованием следующих формул (см. этап S805):
,
где "camB" указывает точку зрения камеры B, и PIX указывает позицию пикселя на целевом изображении для декодирования.
На блоке 308 декодирования изображений, изображение B камеры B декодируется из входных кодированных данных с использованием изображения с компенсацией параллакса (см. этап S806). Декодированное изображение сохраняется в памяти 303 изображений.
После этого, процесс, аналогичный этапам S803-S806, применяется к камере C для декодирования изображения камеры C (см. этапы S807-S810).
Вышеописанные процессы кодирования и декодирования видео можно реализовать не только в оборудовании или программно-аппаратном обеспечении, но также в виде компьютера и прикладной программы. Такую программу можно обеспечить путем сохранения ее на компьютерно-считываемом носителе данных или посредством сети.
Хотя варианты осуществления настоящего изобретения были описаны со ссылкой на чертежи, следует понимать, что они являются иллюстративными вариантами осуществления изобретения и не подлежат рассмотрению в порядке ограничения. Дополнения, исключения или замены структурных элементов и другие модификации вышеописанных вариантов осуществления можно обеспечить, не выходя за рамки сущности и объема настоящего изобретения.
Промышленная применимость
Согласно настоящему изобретению высокоэффективное кодирование полных изображений с несколькими точками зрения или видеоизображений с несколькими точками зрения можно осуществлять путем реализации компенсации параллакса, имеющей высокую точность предсказания с учетом влияния ошибок оценивания параметров камеры, одновременно препятствуя значительному увеличению объема данных, используемых для компенсации параллакса.