RU2701087C1 - Method and device for encoding and decoding motion vector based on reduced motion vector predictors-candidates - Google Patents
Method and device for encoding and decoding motion vector based on reduced motion vector predictors-candidates Download PDFInfo
- Publication number
- RU2701087C1 RU2701087C1 RU2019101175A RU2019101175A RU2701087C1 RU 2701087 C1 RU2701087 C1 RU 2701087C1 RU 2019101175 A RU2019101175 A RU 2019101175A RU 2019101175 A RU2019101175 A RU 2019101175A RU 2701087 C1 RU2701087 C1 RU 2701087C1
- Authority
- RU
- Russia
- Prior art keywords
- motion vector
- vector predictor
- current block
- block
- predictor candidates
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
Область техникиTechnical field
[1] Устройства и способы, в соответствии с иллюстративными вариантами осуществления, относятся к кодированию и декодированию вектора движения и, в частности, к предсказательному кодированию и декодированию вектора движения текущего блока.[1] Devices and methods, in accordance with illustrative embodiments, relate to encoding and decoding a motion vector and, in particular, to predictive encoding and decoding of a motion vector of the current block.
Уровень техникиState of the art
[2] В таком кодеке, как «усовершенствованное кодирование видеосигнала» MPEG-4 H.264/MPEG-4 (AVC), векторы движения ранее закодированных блоков, соседствующих с текущим блоком, можно использовать для предсказания вектора движения текущего блока. Медиана векторов движения ранее закодированных блоков, соседствующих с левой стороной, верхней стороной и правой верхней стороной текущего блока используется в качестве предсказателя вектора движения текущего блока. Вектор движения текущего блока непосредственно не кодируется а, вместо этого, кодируется разность между вектором движения и предсказателем вектора движения.[2] In a codec such as "advanced video encoding" MPEG-4 H.264 / MPEG-4 (AVC), the motion vectors of previously encoded blocks adjacent to the current block can be used to predict the motion vector of the current block. The median of the motion vectors of previously encoded blocks adjacent to the left side, upper side and upper right side of the current block is used as a predictor of the motion vector of the current block. The motion vector of the current block is not directly encoded, but instead, the difference between the motion vector and the motion vector predictor is encoded.
Раскрытие изобретенияDisclosure of invention
Решение проблемыSolution
[3] Один или более иллюстративных вариантов осуществления предусматривают способ и устройство для предсказательного кодирования и декодирования вектора движения, и машиночитаемый носитель записи, на котором записана компьютерная программа для выполнения способа.[3] One or more illustrative embodiments provides a method and apparatus for predictively encoding and decoding a motion vector, and a computer-readable recording medium on which a computer program for executing the method is recorded.
Преимущественные результаты изобретенияAdvantageous Results of the Invention
[4] Согласно иллюстративному варианту осуществления, когда предсказатели-кандидаты вектора движения используются для предсказательного кодирования и декодирования вектора движения, количество предсказателей-кандидатов вектора движения можно уменьшить для предсказательного кодирования и декодирования вектора движения. Соответственно, информацию, необходимую для указания предсказателя вектора движения, используемого для предсказания вектора движения текущего блока из предсказателей-кандидатов вектора движения, можно кодировать с минимальным числом битов, благодаря чему коэффициент сжатия кодирования/декодирования вектора движения увеличивается что позволяет повышать коэффициент сжатия при кодировании/декодировании изображения.[4] According to an illustrative embodiment, when motion vector candidate predictors are used to predictively encode and decode a motion vector, the number of motion vector predictor candidates can be reduced to predictively encode and decode a motion vector. Accordingly, the information necessary to indicate the motion vector predictor used to predict the motion vector of the current block from the motion vector predictor candidates can be encoded with a minimum number of bits, due to which the compression ratio of the encoding / decoding of the motion vector is increased, which allows to increase the compression ratio when encoding / image decoding.
Краткое описание чертежейBrief Description of the Drawings
[5] Вышеперечисленные и другие признаки и преимущества станут ясны из подробного описания иллюстративных вариантов осуществления со ссылкой на прилагаемые чертежи, в которых:[5] The above and other features and advantages will become apparent from the detailed description of illustrative embodiments with reference to the accompanying drawings, in which:
[6] фиг. 1 - блок-схема устройства для кодирования изображения, согласно иллюстративному варианту осуществления;[6] FIG. 1 is a block diagram of an apparatus for encoding an image according to an illustrative embodiment;
[7] фиг. 2 - блок-схема устройства для декодирования изображения, согласно иллюстративному варианту осуществления;[7] FIG. 2 is a block diagram of an apparatus for decoding an image according to an illustrative embodiment;
[8] фиг. 3 иллюстрирует иерархические единицы кодирования согласно иллюстративному варианту осуществления;[8] FIG. 3 illustrates hierarchical coding units according to an illustrative embodiment;
[9] фиг. 4 - блок-схема кодера изображения на основе единицы кодирования, согласно иллюстративному варианту осуществления;[9] FIG. 4 is a block diagram of an image encoder based on a coding unit according to an illustrative embodiment;
[10] фиг. 5 - блок-схема декодера изображения на основе единицы кодирования, согласно иллюстративному варианту осуществления;[10] FIG. 5 is a block diagram of an image decoder based on a coding unit, according to an illustrative embodiment;
[11] фиг. 6 иллюстрирует максимальную единицу кодирования, единицу кодирования более низкого уровня и единицу предсказания, согласно иллюстративному варианту осуществления;[11] FIG. 6 illustrates a maximum coding unit, a lower level coding unit, and a prediction unit, according to an illustrative embodiment;
[12] фиг. 7 иллюстрирует единицу кодирования и единицу преобразования, согласно иллюстративному варианту осуществления;[12] FIG. 7 illustrates a coding unit and a conversion unit, according to an illustrative embodiment;
[13] фиг. 8A - 8D иллюстрируют формы разделения единицы кодирования, единицы предсказания и единицы преобразования, согласно иллюстративному варианту осуществления;[13] FIG. 8A to 8D illustrate separation forms of a coding unit, a prediction unit, and a conversion unit, according to an illustrative embodiment;
[14] фиг. 9 - блок-схема устройства для кодирования вектора движения, согласно иллюстративному варианту осуществления;[14] FIG. 9 is a block diagram of an apparatus for encoding a motion vector according to an illustrative embodiment;
[15] фиг. 10A и 10B иллюстрируют предсказатели-кандидаты вектора движения, согласно иллюстративному варианту осуществления;[15] FIG. 10A and 10B illustrate motion vector predictor candidates according to an illustrative embodiment;
[16] фиг. 10C-10E иллюстрируют блоки различных размеров, которые соседствуют с текущим блоком, согласно иллюстративному варианту осуществления;[16] FIG. 10C-10E illustrate blocks of various sizes that are adjacent to the current block, according to an illustrative embodiment;
[17] фиг. 11A-11C иллюстрируют предсказатели-кандидаты вектора движения, согласно другому иллюстративному варианту осуществления;[17] FIG. 11A-11C illustrate motion vector predictor candidates according to another illustrative embodiment;
[18] фиг. 12 иллюстрирует способ уменьшения количества предсказателей-кандидатов вектора движения, согласно иллюстративному варианту осуществления;[18] FIG. 12 illustrates a method for reducing the number of motion vector predictor candidates according to an illustrative embodiment;
[19] фиг. 13A-13D иллюстрируют местоположение текущего блока, включенного в единицу кодирования заранее определенного размера, согласно иллюстративному варианту осуществления;[19] FIG. 13A-13D illustrate the location of a current block included in a coding unit of a predetermined size, according to an illustrative embodiment;
[20] фиг. 14 - блок-схема устройства для декодирования вектора движения, согласно иллюстративному варианту осуществления;[20] FIG. 14 is a block diagram of an apparatus for decoding a motion vector according to an illustrative embodiment;
[21] фиг. 15 - блок-схема, иллюстрирующая способ кодирования вектора движения, согласно иллюстративному варианту осуществления; и[21] FIG. 15 is a flowchart illustrating a method of encoding a motion vector according to an illustrative embodiment; and
[22] фиг. 16 - блок-схема, иллюстрирующая способ декодирования вектора движения, согласно иллюстративному варианту осуществления.[22] FIG. 16 is a flowchart illustrating a method for decoding a motion vector according to an illustrative embodiment.
Предпочтительные варианты осуществления изобретенияPreferred Embodiments
[23] Согласно аспекту иллюстративного варианта осуществления, предусмотрен способ кодирования вектора движения, причем способ включает в себя этапы, на которых: генерируют информацию о векторе движения на основании вектора движения текущего блока и предсказателя вектора движения текущего блока путем оценивания вектора движения текущего блока и определения первого предсказателя-кандидата вектора движения из множества предсказателей-кандидатов вектора движения в качестве предсказателя вектора движения текущего блока на основании результата оценивания; генерируют виртуальный вектор движения с использованием второго предсказателя-кандидата вектора движения из множества предсказателей-кандидатов вектора движения и информации о векторе движения, генерируют векторные разности между виртуальным вектором движения и множеством предсказателей-кандидатов вектора движения, сравнивают векторные разности с информацией о векторе движения, и выборочно исключают второй предсказатель-кандидат вектора движения из множества предсказателей-кандидатов вектора движения; и кодируют информацию о векторе движения и информацию о предсказателе вектора движения текущего блока.[23] According to an aspect of an illustrative embodiment, a method for encoding a motion vector is provided, the method comprising the steps of: generating information about the motion vector based on the motion vector of the current block and the motion vector predictor of the current block by estimating the motion vector of the current block and determining a first motion vector predictor candidate from a plurality of motion vector predictor candidates as a motion vector predictor of the current block based on ultat assessment; generating a virtual motion vector using a second motion vector predictor candidate from a plurality of motion vector predictor candidates and motion vector information, generating vector differences between a virtual motion vector and a plurality of motion vector predictors, comparing the vector differences with motion vector information, and selectively excluding a second motion vector predictor candidate from a plurality of motion vector predictor candidates; and encode motion vector information and motion vector predictor information of the current block.
[24] Согласно аспекту другого иллюстративного варианта осуществления, предусмотрен способ декодирования вектора движения, причем способ включает в себя этапы, на которых: декодируют информацию о векторе движения текущего блока; генерируют виртуальный вектор движения с использованием заранее определенного предсказателя-кандидата вектора движения из множества предсказателей-кандидатов вектора движения и декодированной информации о векторе движения, генерируют векторные разности между виртуальным вектором движения и множеством предсказателей-кандидатов вектора движения, сравнивают сгенерированные векторные разности с декодированной информацией о векторе движения, и выборочно исключают заранее определенный предсказатель-кандидат вектора движения из множества предсказателей-кандидатов вектора движения; и определяют предсказатель вектора движения предсказателей-кандидатов вектора движения, которые не исключаются из множества предсказателей-кандидатов вектора движения, в качестве предсказателя вектора движения текущего блока и восстанавливают вектор движения текущего блока на основании определенного предсказателя вектора движения и декодированной информации о векторе движения.[24] According to an aspect of another illustrative embodiment, a method for decoding a motion vector is provided, the method including the steps of: decoding information about a motion vector of a current block; generating a virtual motion vector using a predetermined motion vector predictor candidate from a plurality of motion vector predictor candidates and decoded motion vector information, generating vector differences between a virtual motion vector and a plurality of motion vector predictors, comparing the generated vector differences with decoded information about motion vector, and selectively exclude a predetermined predictor candidate motion vector from a set of motion vector predictor candidates; and determining the motion vector predictor of the motion vector predictor candidates that are not excluded from the plurality of motion vector predictors as the motion vector predictor of the current block, and restoring the motion vector of the current block based on the determined motion vector predictor and decoded motion vector information.
[25] Согласно аспекту другого иллюстративного варианта осуществления, предусмотрено устройство для кодирования вектора движения, причем устройство включает в себя: блок оценки вектора движения, который генерирует информацию о векторе движения на основании вектора движения текущего блока и предсказателя вектора движения текущего блока путем оценивания вектора движения текущего блока и определяет первый предсказатель-кандидат вектора движения из множества предсказателей-кандидатов вектора движения в качестве предсказателя вектора движения текущего блока на основании результата оценивания; блок определения кандидата, который генерирует виртуальный вектор движения с использованием второго предсказателя-кандидата вектора движения из множества предсказателей-кандидатов вектора движения и информации о векторе движения, генерирует векторные разности между виртуальным вектором движения и множеством предсказателей-кандидатов вектора движения, сравнивает векторные разности с информацией о векторе движения, и выборочно исключает второй предсказатель-кандидат вектора движения из множества предсказателей-кандидатов вектора движения; и кодер вектора движения, который кодирует информацию о векторе движения и информацию о предсказателе вектора движения текущего блока.[25] According to an aspect of another illustrative embodiment, there is provided an apparatus for encoding a motion vector, the apparatus including: a motion vector estimator that generates motion vector information based on a motion vector of the current block and a motion vector predictor of the current block by estimating the motion vector the current block and determines the first predictor candidate motion vector from the set of predictor candidates of the motion vector as a predictor of the vector d izheniya current block based on the estimation result; a candidate determination unit that generates a virtual motion vector using a second motion vector predictor candidate from a plurality of motion vector predictor candidates and motion vector information generates vector differences between a virtual motion vector and a plurality of motion vector predictors, compares vector differences with information about the motion vector, and selectively excludes the second predictor candidate motion vector from the set of predictor candidates vector motion; and a motion vector encoder that encodes motion vector information and motion vector predictor information of the current block.
[26] Согласно аспекту другого иллюстративного варианта осуществления, предусмотрено устройство для декодирования вектора движения, причем устройство включает в себя: декодер вектора движения, который декодирует информацию о векторе движения текущего блока; блок определения кандидата, который генерирует виртуальный вектор движения с использованием заранее определенного предсказателя-кандидата вектора движения из множества предсказателей-кандидатов вектора движения и декодированной информации о векторе движения, генерирует векторные разности между виртуальным вектором движения и множеством предсказателей-кандидатов вектора движения, сравнивает сгенерированные векторные разности с декодированной информацией о векторе движения, и выборочно исключает заранее определенный предсказатель-кандидат вектора движения из множества предсказателей-кандидатов вектора движения; и блок восстановления вектора движения, который определяет предсказатель-кандидат вектора движения предсказателей-кандидатов вектора движения, которые не исключаются из множества предсказателей-кандидатов вектора движения, в качестве предсказателя вектора движения текущего блока и восстанавливает вектор движения текущего блока на основании определенного предсказателя вектора движения и декодированной информации о векторе движения.[26] According to an aspect of another illustrative embodiment, an apparatus for decoding a motion vector is provided, the apparatus including: a motion vector decoder that decodes information about a motion vector of a current block; a candidate determination unit that generates a virtual motion vector using a predetermined motion vector predictor candidate from a plurality of motion vector predictor candidates and decoded motion vector information generates vector differences between a virtual motion vector and a plurality of motion vector predictors, compares the generated vector differences with decoded motion vector information, and selectively excludes a predetermined prediction spruce candidate motion vector from the set of predictor candidates motion vector; and a motion vector recovery unit that determines a motion vector predictor candidate of the motion vector predictor candidates that are not excluded from the plurality of motion vector predictor candidates as a motion vector predictor of the current block and restores a motion vector of the current block based on the determined motion vector predictor and decoded motion vector information.
[27] Согласно аспекту другого иллюстративного варианта осуществления, предусмотрен машиночитаемый носитель записи, в котором содержится компьютерная программа для выполнения способов кодирования и декодирования вектора движения.[27] According to an aspect of another illustrative embodiment, a computer-readable recording medium is provided that contains a computer program for performing motion vector encoding and decoding methods.
Варианты осуществления изобретенияEmbodiments of the invention
[28] Далее, один или более иллюстративных вариантов осуществления будет описан более полно со ссылкой на прилагаемые чертежи. Такие выражения, как “по меньшей мере, один из”, предшествующие списку элементов, изменяют список элементов в целом и не изменяют отдельные элементы списка.[28] Next, one or more illustrative embodiments will be described more fully with reference to the accompanying drawings. Expressions such as “at least one of” preceding the list of items change the list of items as a whole and do not change individual items in the list.
[29] Далее, 'изображение' может обозначать неподвижное изображение для видео или движущееся изображение, то есть само видео.[29] Further, the 'image' may mean a still image for a video or a moving image, that is, the video itself.
[30] на фиг. 1 показана блок-схема устройства 100 для кодирования изображения, согласно иллюстративному варианту осуществления.[30] in FIG. 1 is a block diagram of an image encoding
[31] Согласно фиг. 1, устройство 100 для кодирования изображения включает в себя блок 110 разделения на максимальные единицы кодирования, блок 120 определения глубины кодирования, кодер 130 данных изображения, и кодер 140 информации кодирования.[31] Referring to FIG. 1, an
[32] Блок 110 разделения на максимальные единицы кодирования может делить текущий кадр или срез на основе максимальной единицы кодирования, то есть единицы кодирования наибольшего размера. Таким образом, блок 110 разделения на максимальные единицы кодирования может делить текущий кадр или срез на по меньшей мере одну максимальную единицу кодирования.[32] The maximum coding
[33] Согласно иллюстративному варианту осуществления, единицу кодирования можно представлять с использованием максимальной единицы кодирования и глубины. Как описано выше, максимальная единица кодирования указывает единицу кодирования, имеющую наибольший размер из единиц кодирования текущего кадра, и глубина указывает степень иерархического снижения единицы кодирования. С увеличением глубины, единица кодирования может уменьшаться от максимальной единицы кодирования до минимальной единицы кодирования, причем глубина максимальной единицы кодирования определяется как минимальная глубина, и глубина минимальной единицы кодирования определяется как максимальная глубина. Поскольку размер единицы кодирования уменьшается от максимальной единицы кодирования с увеличением глубины, единица кодирования более низкого уровня k-й глубины может включать в себя множество единиц кодирования более низкого уровня (k+n)-й глубины (k и n - целые числа, большие или равные 1).[33] According to an illustrative embodiment, a coding unit may be represented using a maximum coding unit and depth. As described above, the maximum coding unit indicates the coding unit having the largest size of the coding units of the current frame, and the depth indicates the degree of hierarchical reduction of the coding unit. As the depth increases, the coding unit may decrease from the maximum coding unit to the minimum coding unit, wherein the depth of the maximum coding unit is defined as the minimum depth, and the depth of the minimum coding unit is determined as the maximum depth. Since the size of the coding unit decreases from the maximum coding unit with increasing depth, the coding unit of a lower level of the kth depth may include many coding units of a lower level of the (k + n) th depth (k and n are integers greater than or equal to 1).
[34] Согласно увеличению размера кадра, подлежащего кодированию, кодирование изображения в более крупной единице кодирования может приводить к более высокому коэффициенту сжатия изображения. Однако если более крупная единица кодирования фиксирована, эффективное кодирование изображения, отражающее непрерывно изменяющиеся характеристики изображения, может оказаться невозможным.[34] According to the increase in the size of the frame to be encoded, encoding an image in a larger encoding unit may result in a higher image compression ratio. However, if a larger coding unit is fixed, efficient coding of an image reflecting continuously changing image characteristics may not be possible.
[35] Например, при кодировании гладкой области, например, моря или неба, чем больше единица кодирования, тем больше можно повысить коэффициент сжатия. Однако при кодировании сложной области, например, людей или зданий, чем меньше единица кодирования, тем больше можно повысить коэффициент сжатия.[35] For example, when encoding a smooth area, such as the sea or sky, the larger the coding unit, the more the compression ratio can be increased. However, when encoding a complex area, such as people or buildings, the smaller the coding unit, the more the compression ratio can be increased.
[36] Соответственно, согласно иллюстративному варианту осуществления, для каждого кадра или среза можно устанавливать разную максимальную единицу кодирования и разную максимальную глубину. Поскольку максимальная глубина обозначает максимальное число раз, в которое может уменьшаться единица кодирования, размер каждой минимальной единицы кодирования, включенной в максимальную единицу кодирования, можно устанавливать по-разному согласно максимальной глубине.[36] Accordingly, according to an illustrative embodiment, for each frame or slice, a different maximum coding unit and a different maximum depth can be set. Since the maximum depth indicates the maximum number of times that a coding unit can be reduced, the size of each minimum coding unit included in the maximum coding unit can be set differently according to the maximum depth.
[37] Блок 120 определения глубины кодирования определяет максимальную глубину. Максимальную глубину можно определять на основании вычисления издержек «скорость-искажение» (RD). Максимальную глубину можно определять по-разному для каждого кадра или среза или для каждой максимальной единицы кодирования. Определенная максимальная глубина поступает на кодер 140 информации кодирования, и данные изображения согласно максимальным единицам кодирования поступают на кодер 130 данных изображения.[37]
[38] Максимальная глубина может обозначать единицу кодирования наименьшего размера, которая может быть включена в максимальную единицу кодирования, то есть минимальную единицу кодирования. Другими словами, максимальная единица кодирования может делиться на единицы кодирования более низкого уровня, имеющие разные размеры согласно разным глубинам, что будет описано ниже со ссылкой на фиг. 8A и 8B. Кроме того, единицы кодирования более низкого уровня, имеющие разные размеры, которые включены в максимальную единицу кодирования, можно предсказывать или преобразовывать на основе единиц обработки, имеющих разные размеры. Преобразование осуществляется для преобразования пиксельных значений пространственной области в коэффициенты частотной области и может представлять собой дискретное косинусное преобразование или преобразование Карунена-Лоэва (KLT). Другими словами, устройство 100 для кодирования изображения может осуществлять множество операций обработки для кодирования изображения на основе единиц обработки, имеющих различные размеры и различные формы. Для кодирования данных изображения осуществляются, такие операции обработки, как по меньшей мере одно из предсказание, преобразование и статистическое кодирование, причем для каждой операции можно использовать единицы обработки, имеющие одинаковый размер или разные размеры.[38] The maximum depth may indicate the smallest encoding unit that can be included in the maximum encoding unit, that is, the minimum encoding unit. In other words, the maximum coding unit may be divided into lower level coding units having different sizes according to different depths, which will be described below with reference to FIG. 8A and 8B. In addition, lower level coding units having different sizes that are included in the maximum coding unit can be predicted or converted based on processing units having different sizes. The conversion is performed to convert the pixel values of the spatial domain to the coefficients of the frequency domain and may be a discrete cosine transform or Karunen-Loeve transform (KLT). In other words, the
[39] Например, устройство 100 для кодирования изображения может выбирать единицу обработки, которая отличается от единицы кодирования для предсказания единицы кодирования.[39] For example, the
[40] Когда размер единицы кодирования равен 2N×2N (где N - положительное целое число), единицами обработки для предсказания могут быть 2N×2N, 2N×N, N×2N и N×N. Другими словами, предсказание движения может осуществляться на основе единицы обработки, имеющей такую форму, что по меньшей мере одна из высоты и ширины единицы кодирования делится на две равные части. В дальнейшем, единица обработки, являющаяся основой предсказания, определяется как ‘единица предсказания’.[40] When the size of the coding unit is 2N × 2N (where N is a positive integer), the processing units for prediction may be 2N × 2N, 2N × N, N × 2N, and N × N. In other words, motion prediction can be based on a processing unit having a shape such that at least one of the height and width of the coding unit is divided into two equal parts. Hereinafter, the processing unit, which is the basis of the prediction, is defined as ‘prediction unit’.
[41] Режим предсказания может представлять собой по меньшей мере одно из внутреннего режима, взаимного режима и режима пропуска, и конкретный режим предсказания может осуществляться только для единицы предсказания, имеющей конкретный размер или конкретную форму. Например, внутренний режим может осуществляться только для единицы предсказания, размерами 2N×2N и N×N и квадратной формы. Кроме того, режим пропуска может осуществляться только для единицы предсказания размером 2N×2N. Если в единице кодирования существует множество единиц предсказания, то после осуществления предсказания для каждой единицы предсказания можно выбрать режим предсказания с наименьшими ошибками кодирования.[41] The prediction mode can be at least one of an internal mode, a mutual mode, and a skip mode, and a specific prediction mode can be performed only for a prediction unit having a specific size or specific shape. For example, the internal mode can be carried out only for the unit of prediction, sizes 2N × 2N and N × N and square. In addition, the skip mode can only be performed for a prediction unit of size 2N × 2N. If there are many prediction units in the coding unit, then after the prediction is completed, for each prediction unit, the prediction mode with the least coding errors can be selected.
[42] Альтернативно, устройство 100 для кодирования изображения может осуществлять преобразование данных изображения на основе единицы обработки, отличающейся размером от единицы кодирования. Для преобразования в единице кодирования, преобразование может осуществляться на основе единицы обработки, размер которой меньше или равен размеру единицы кодирования. В дальнейшем, единица обработки, являющаяся основой преобразования, определяется как ‘единица преобразования’.[42] Alternatively, the
[43] Блок 120 определения глубины кодирования может определять единицы кодирования более низкого уровня, включенные в максимальную единицу кодирования, с использованием оптимизации RD на основании множителя Лагранжа. Другими словами, блок 120 определения глубины кодирования может определять форму множественных единиц кодирования более низкого уровня, полученных разделением максимальной единицы кодирования, причем множество единиц кодирования более низкого уровня имеют различные размеры согласно их глубинам. Кодер 130 данных изображения выводит битовый поток путем кодирования максимальной единицы кодирования на основании форм разделения, определенных блоком 120 определения глубины кодирования.[43] The coding
[44] Кодер 140 информации кодирования кодирует информацию о режиме кодирования максимальной единицы кодирования, определенной блоком 120 определения глубины кодирования. Другими словами, кодер 140 информации кодирования выводит битовый поток, кодируя информацию о форме разделения максимальной единицы кодирования, информацию о максимальной глубине и информацию о режиме кодирования единицы кодирования более низкого уровня для каждой глубины. Информация о режиме кодирования единицы кодирования более низкого уровня может включать в себя информацию о единице предсказания единицы кодирования более низкого уровня, информацию о режиме предсказания для каждой единицы предсказания и информацию о единице преобразования единицы кодирования более низкого уровня.[44] The
[45] Информация о форме разделения максимальной единицы кодирования может представлять собой информацию, указывающую, делится ли каждая единица кодирования. Например, когда максимальная единица кодирования делится и кодируется, информация, указывающая, делится ли максимальная единица кодирования, кодируется. Кроме того, когда единица кодирования более низкого уровня, полученная делением максимальной единицы кодирования, делится и кодируется, информация, указывающая делится ли единица кодирования более низкого уровня, кодируется. Информация, указывающая, делится ли единица кодирования более низкого уровня, может представлять собой информацию флага.[45] Information about the separation form of the maximum coding unit may be information indicating whether each coding unit is divided. For example, when the maximum coding unit is divided and encoded, information indicating whether the maximum coding unit is divided is encoded. Furthermore, when a lower level coding unit obtained by dividing the maximum coding unit is divided and encoded, information indicating whether the lower level coding unit is divided is encoded. Information indicating whether a lower level coding unit is divided may be flag information.
[46] Поскольку единицы кодирования более низкого уровня, имеющие разные размеры, существуют для каждой максимальной единицы кодирования, и информацию о режиме кодирования нужно определять для каждой единицы кодирования более низкого уровня, информацию о по меньшей мере одном режиме кодирования можно определять для одной максимальной единицы кодирования.[46] Since lower level coding units having different sizes exist for each maximum coding unit, and coding mode information needs to be determined for each lower coding unit, information about at least one coding mode can be determined for one maximum unit coding.
[47] Устройство 100 для кодирования изображения может генерировать единицы кодирования более низкого уровня путем деления на две равные части высоту и ширину максимальной единицы кодирования согласно увеличению глубины. Таким образом, когда размер единицы кодирования k-й глубины равен 2N×2N, размер единицы кодирования (k+1)-й глубины равен N×N.[47] The
[48] Соответственно, устройство 100 для кодирования изображения может определять оптимальную форму разделения для каждой максимальной единицы кодирования на основании размеров максимальных единиц кодирования и максимальной глубины с учетом характеристик изображения. Гибко регулируя размер максимальной единицы кодирования с учетом характеристик изображения, и кодируя изображение путем разделения максимальной единицы кодирования на единицы кодирования более низкого уровня разных глубин, можно более эффективно кодировать изображения, имеющие различные разрешения.[48] Accordingly, the
[49] На фиг. 2 показана блок-схема устройства 200 для декодирования изображения, согласно иллюстративному варианту осуществления.[49] In FIG. 2 is a block diagram of an
[50] Согласно фиг. 2, устройство 200 для декодирования изображения включает в себя блок 210 получения данных изображения, блок 220 выделения информации кодирования и декодер 230 данных изображения.[50] Referring to FIG. 2, an
[51] Блок 210 получения данных изображения получает данные изображения согласно максимальным единицам кодирования, анализируя битовый поток, принятый устройством 200 для декодирования изображения, и выводит данные изображения на декодер 230 данных изображения. Блок 210 получения данных изображения может выделять информацию о максимальной единице кодирования текущего кадра или среза из заголовка текущего кадра или среза. Другими словами, блок 210 получения данных изображения делит битовый поток в максимальной единице кодирования, что позволяет декодеру 230 данных изображения декодировать данные изображения согласно максимальным единицам кодирования.[51] The image
[52] Блок 220 выделения информации кодирования выделяет информацию о максимальной единице кодирования, максимальной глубине, форме разделения максимальной единицы кодирования, режиме кодирования единиц кодирования более низкого уровня из заголовка текущего кадра, анализируя битовый поток, принятый устройством 200 для декодирования изображения. Информация о форме разделения и информация о режиме кодирования поступают на декодер 230 данных изображения.[52] The coding
[53] Информация о форме разделения максимальной единицы кодирования может включать в себя информацию о единицах кодирования более низкого уровня, имеющих разные размеры согласно глубинам и включенных в максимальную единицу кодирования, и может представлять собой информацию (например, информацию флага), указывающую, делится ли каждая единица кодирования. Информация о режиме кодирования может включать в себя информацию о единице предсказания согласно единицам кодирования более низкого уровня, информацию о режиме предсказания и информацию о единице преобразования.[53] Information on the separation form of the maximum coding unit may include information on lower level coding units having different sizes according to depths and included in the maximum coding unit, and may be information (eg, flag information) indicating whether each coding unit. The coding mode information may include prediction unit information according to coding units of a lower layer, prediction mode information, and transform unit information.
[54] Декодер 230 данных изображения восстанавливает текущий кадр, декодируя данные изображения каждой максимальной единицы кодирования на основании информации, выделяемой блоком 220 выделения информации кодирования.[54] The
[55] Декодер 230 данных изображения может декодировать единицы кодирования более низкого уровня, включенные в максимальную единицу кодирования, на основании информации о форме разделения максимальной единицы кодирования. Процесс декодирования может включать в себя процесс взаимного предсказания, включающий в себя внутреннее предсказание и компенсацию движения, и процесс обратного преобразования.[55] The
[56] Декодер 230 данных изображения может осуществлять внутреннее предсказание или взаимное предсказание на основании информации о единице предсказания согласно единицам кодирования более низкого уровня и информации о режиме предсказания для предсказания единицы кодирования более низкого уровня. Декодер 230 данных изображения также может осуществлять обратное преобразование для каждой единицы кодирования более низкого уровня на основании информации о единице преобразования единицы кодирования более низкого уровня.[56] The
[57] Фиг. 3 иллюстрирует иерархические единицы кодирования согласно иллюстративному варианту осуществления.[57] FIG. 3 illustrates hierarchical coding units according to an illustrative embodiment.
[58] Согласно фиг. 3, иерархические единицы кодирования могут включать в себя единицы кодирования, для которых ширина×высота составляет 64×64, 32×32, 16×16, 8×8 и 4×4. Помимо этих единиц кодирования, имеющих правильную квадратную форму, также могут существовать единицы кодирования, для которых ширина×высота составляет 64×32, 32×64, 32×16, 16×32, 16×8, 8×16, 8×4 и 4×8. [58] Referring to FIG. 3, hierarchical coding units may include coding units for which the width × height is 64 × 64, 32 × 32, 16 × 16, 8 × 8, and 4 × 4. In addition to these coding units having the correct square shape, coding units may also exist for which the width × height is 64 × 32, 32 × 64, 32 × 16, 16 × 32, 16 × 8, 8 × 16, 8 × 4, and 4 × 8.
[59] На фиг. 3, для данных 310 изображения с разрешением 1920×1080, размер максимальной единицы кодирования задан равным 64×64, и максимальная глубина задана равной 2.[59] In FIG. 3, for
[60] Для данных изображения 320 с разрешением 1920×1080, размер максимальной единицы кодирования задан равным 64×64, и максимальная глубина задана равной 3. Для данных 330 изображения с разрешением 352×288, размер максимальной единицы кодирования задан равным 16×16, и максимальная глубина задана равной 2.[60] For
[61] При высоком разрешении или большом объеме данных, максимальный размер единицы кодирования может быть относительно велик, чтобы повышать коэффициент сжатия и точно отражать характеристики изображения. Соответственно, для данных 310 и 320 изображения, имеющих более высокое разрешение, чем данные 330 изображения, в качестве размера максимальной единицы кодирования можно выбирать 64×64.[61] At high resolution or a large amount of data, the maximum size of a coding unit can be relatively large to increase the compression ratio and accurately reflect image characteristics. Accordingly, for
[62] Максимальная глубина указывает суммарное количество уровней в иерархических единицах кодирования. Поскольку максимальная глубина данных 310 изображения равна 2, единица 315 кодирования данных 310 изображения может включать в себя максимальную единицу кодирования, размер которой по длинной оси равен 64, и единицы кодирования более низкого уровня, размеры которых по длинной оси равны 32 и 16, согласно увеличению глубины.[62] The maximum depth indicates the total number of levels in hierarchical coding units. Since the maximum depth of the
[63] С другой стороны, поскольку максимальная глубина данных 330 изображения равна 2, единица 335 кодирования данных 330 изображения может включать в себя максимальную единицу кодирования, размер которой по длинной оси равен 16, и единицы кодирования, размеры которых по длинной оси равны 8 и 4, согласно увеличению глубины.[63] On the other hand, since the maximum depth of the
[64] Однако, поскольку максимальная глубина данных изображения 320 равна 4, единица 325 кодирования данных изображения 320 может включать в себя максимальную единицу кодирования, размер которой по длинной оси равен 64, и единицы кодирования более низкого уровня, размеры которых по длинной оси равны 32, 16, 8 и 4, согласно увеличению глубины. Поскольку изображение кодируется на основе меньшей единицы кодирования более низкого уровня с увеличением глубины, иллюстративный вариант осуществления пригоден для кодирования изображения, включающего в себя больше малых сцен.[64] However, since the maximum depth of
[65] На фиг. 4 показана блок-схема кодера 400 изображения на основе единицы кодирования, согласно иллюстративному варианту осуществления.[65] In FIG. 4 shows a block diagram of an
[66] Блок 410 внутреннего предсказания осуществляет внутреннее предсказание на единицах предсказания внутреннего режима в текущем кадре 405, и блок 420 оценки движения и блок 425 компенсации движения осуществляют взаимное предсказание и компенсацию движения на единицах предсказания взаимного режима с использованием текущего кадра 405 и эталонного кадра 495.[66] The
[67] Остаточные значения генерируются на основании единиц предсказания, выводимых из блока 410 внутреннего предсказания, блока 420 оценки движения и блока 425 компенсации движения, и сгенерированные остаточные значения выводятся как квантованные коэффициенты преобразования посредством пропускания через преобразователь 430 и блок 440 квантования.[67] The residual values are generated based on the prediction units output from the
[68] Квантованные коэффициенты преобразования восстанавливаются к остаточным значениям путем пропускания через блок 460 обратного квантования и обратный преобразователь 470, и восстановленные остаточные значения подвергаются последующей обработке посредством пропускания через блок 480 устранения разделения на блоки и блок 490 контурной фильтрации и выводятся в качестве эталонного кадра 495. Квантованные коэффициенты преобразования могут выводиться в качестве битового потока 455 путем пропускания через статистический кодер 450.[68] The quantized transform coefficients are restored to residual values by passing through
[69] Для осуществления кодирования на основании способа кодирования согласно иллюстративному варианту осуществления, компоненты кодера 400 изображения, т.е. блок 410 внутреннего предсказания, блок 420 оценки движения, блок 425 компенсации движения, преобразователь 430, блок 440 квантования, статистический кодер 450, блок 460 обратного квантования, обратный преобразователь 470, блок 480 устранения разделения на блоки и блок 490 контурной фильтрации, осуществляют процессы кодирования изображения на основе максимальной единицы кодирования, единицы кодирования более низкого уровня согласно глубинам, единицы предсказания и единицы преобразования.[69] To encode based on the encoding method according to an illustrative embodiment, the components of the
[70] На фиг. 5 показана блок-схема декодера 500 изображения на основе единицы кодирования, согласно иллюстративному варианту осуществления.[70] In FIG. 5 shows a block diagram of an
[71] Согласно фиг. 5, битовый поток 505 проходит через анализатор 510, что позволяет декодировать кодированные данные изображения и анализировать информацию кодирования, используемую для декодирования. Кодированные данные изображения выводятся в качестве обратно-квантованных данных путем пропускания через статистический декодер 520 и блок 530 обратного квантования и восстанавливаются до остаточных значений путем пропускания через обратный преобразователь 540. Остаточные значения восстанавливаются согласно единицам кодирования путем суммирования с результатом внутреннее предсказание блока 550 внутреннего предсказания или результатом компенсации движения блока 560 компенсации движения. Восстановленные единицы кодирования используются для предсказания следующих единиц кодирования или следующего кадра путем пропускания через блок 570 устранения разделения на блоки и блок 580 контурной фильтрации.[71] Referring to FIG. 5,
[72] Для осуществления декодирования на основании способа декодирования согласно иллюстративному варианту осуществления, компоненты декодера 500 изображения, т.е. анализатор 510, статистический декодер 520, блок 530 обратного квантования, обратный преобразователь 540, блок 550 внутреннего предсказания, блок 560 компенсации движения, блок 570 устранения разделения на блоки и блок 580 контурной фильтрации, осуществляют процессы декодирования изображения на основе максимальной единицы кодирования, единицы кодирования более низкого уровня согласно глубинам, единицы предсказания и единицы преобразования.[72] For decoding based on a decoding method according to an illustrative embodiment, the components of the
[73] В частности, блок 550 внутреннего предсказания и блок 560 компенсации движения определяют единицу предсказания и режим предсказания в единице кодирования более низкого уровня с учетом максимальной единицы кодирования и глубины, и обратный преобразователь 540 осуществляет обратное преобразование с учетом размера единицы преобразования.[73] In particular, the
[74] Фиг. 6 иллюстрирует максимальную единицу кодирования, единицу кодирования более низкого уровня и единицу предсказания, согласно иллюстративному варианту осуществления.[74] FIG. 6 illustrates a maximum coding unit, a lower level coding unit, and a prediction unit, according to an illustrative embodiment.
[75] Устройство 100 для кодирования изображения, проиллюстрированное на фиг. 1, и устройство 200 для декодирования изображения, проиллюстрированное на фиг. 2, используют иерархические единицы кодирования для осуществления кодирования и декодирования с учетом характеристик изображения. Максимальная единица кодирования и максимальная глубина могут адаптивно устанавливаться согласно характеристикам изображения или переменно устанавливаться согласно требованиям пользователя.[75] The
[76] На фиг. 6, структура 600 иерархических единиц кодирования имеет максимальную единицу 610 кодирования, высота и ширина которой составляют 64, и максимальная глубина которой равна 4. Глубина увеличивается по вертикальной оси структуры 600 иерархических единиц кодирования, и с увеличением глубины, значения высоты ширины единиц 620 - 650 кодирования более низкого уровня уменьшаются. Единицы предсказания максимальной единицы 610 кодирования и единицы 620 - 650 кодирования более низкого уровня показаны вдоль горизонтальной оси структуры 600 иерархических единиц кодирования.[76] In FIG. 6, the hierarchical
[77] Максимальная единица 610 кодирования имеет глубину 0 и размер единицы кодирования, т.е. высоту и ширину, 64×64. Глубина увеличивается по вертикальной оси, и существуют единица 620 кодирования более низкого уровня размером 32×32 и глубиной 1, единица 630 кодирования более низкого уровня размером 16×16 и глубиной 2, единица 640 кодирования более низкого уровня размером 8x8 и глубиной 3, и единица 650 кодирования более низкого уровня размером 4×4 и глубиной 4. Единица 650 кодирования более низкого уровня размером 4×4 и глубиной 4 является минимальной единицей кодирования.[77] The
[78] Согласно фиг. 6, примеры единицы предсказания показаны вдоль горизонтальной оси согласно каждой глубине. Таким образом, единица предсказания максимальной единицы 610 кодирования, глубина которой равна 0, может представлять собой единицу предсказания такого же размера, как единица 610 кодирования, т.е. 64×64, или единица 612 предсказания размером 64×32, единица 614 предсказания размером 32×64 или единица 616 предсказания размером 32×32, размер которой меньше, чем у единицы 610 кодирования размером 64×64.[78] Referring to FIG. 6, examples of a prediction unit are shown along a horizontal axis according to each depth. Thus, the prediction unit of the
[79] Единица предсказания единицы 620 кодирования, глубина которой равна 1 и размер равен 32×32, может представлять собой единицу предсказания такого же размера, как единица 620 кодирования, т.е. 32×32, или единица 622 предсказания размером 32×16, единица 624 предсказания размером 16×32 или единица 626 предсказания размером 16×16, размер которой меньше, чем у единицы 620 кодирования размером 32×32.[79] The prediction unit of the coding unit 620, the depth of which is 1 and the size is 32 × 32, may be a prediction unit of the same size as the coding unit 620, i.e. 32 × 32, or a 32 × 16 prediction unit 622, a 16 × 32
[80] Единица предсказания единицы 630 кодирования, глубина которой равна 2 и размер равен 16×16, может представлять собой единицу предсказания такого же размера, как единица 630 кодирования, т.е. 16×16, или единица 632 предсказания размером 16×8, единица 634 предсказания размером 8×16 или единица 636 предсказания размером 8×8, размер которой меньше, чем у единицы 630 кодирования размером 16×16.[80] A prediction unit of a coding unit 630 whose depth is 2 and a size of 16 × 16 may be a prediction unit of the same size as the coding unit 630, ie 16 × 16, or a 16 × 8 prediction unit 632, an 8 × 16
[81] Единица предсказания единицы 640 кодирования, глубина которой равна 3 и размер равен 8×8, может представлять собой единицу предсказания такого же размера, как единица 640 кодирования, т.е. 8×8, или единица 642 предсказания размером 8×4, единица 644 предсказания размером 4×8 или единица 646 предсказания размером 4×4, размер которой меньше, чем у единицы 640 кодирования размером 8×8.[81] A prediction unit of a
[82] Наконец, единица 650 кодирования, глубина которой равна 4 и размер равен 4×4, является единицей кодирования максимальной глубины, и единица предсказания единицы 650 кодирования может представлять собой единицу предсказания 650 размером 4×4. Однако единица кодирования максимальной глубины не всегда может иметь такой же размер, как единица предсказания. Аналогично единицам 610 - 650 кодирования, единица кодирования максимальной глубины может делиться на единицы предсказания, имеющие меньшие размеры, чем единица кодирования, и может осуществлять предсказание.[82] Finally, a
[83] Фиг. 7 иллюстрирует единицу кодирования и единицу преобразования, согласно иллюстративному варианту осуществления.[83] FIG. 7 illustrates a coding unit and a conversion unit, according to an illustrative embodiment.
[84] Устройство 100 для кодирования изображения, проиллюстрированное на фиг. 1, и устройство 200 для декодирования изображения, проиллюстрированное на фиг. 2, осуществляют кодирование и декодирование с самой максимальной единицей кодирования или с единицами кодирования более низкого уровня, которые меньше или равны максимальной единице кодирования, полученными разделением максимальной единицы кодирования. В процессе кодирования и декодирования, размер единицы преобразования для преобразования выбираются так, чтобы обеспечивать наибольший коэффициент сжатия независимо от единицы кодирования и единицы предсказания. Например, согласно фиг. 7, когда текущая единица 710 кодирования имеет размер 64×64, преобразование может осуществляться с использованием единицы 720 преобразования размером 32×32.[84] The
[85] Фиг. 8A - 8D иллюстрируют формы разделения единицы 810 кодирования, единицы 860 предсказания и единицы 870 преобразования, согласно иллюстративному варианту осуществления.[85] FIG. 8A through 8D illustrate separation forms of a coding unit 810, a prediction unit 860, and a conversion unit 870, according to an illustrative embodiment.
[86] Фиг. 8A и 8B иллюстрируют единицу 810 кодирования и единицу 860 предсказания, согласно иллюстративному варианту осуществления.[86] FIG. 8A and 8B illustrate a coding unit 810 and a prediction unit 860, according to an illustrative embodiment.
[87] На фиг. 8A показана форма разделения, выбранная устройством 100 для кодирования изображения, проиллюстрированного на фиг. 1, для кодирования максимальной единицы 810 кодирования. Устройство 100 для кодирования изображения делит максимальную единицу 810 кодирования на различные формы, осуществляет кодирование и выбирает оптимальную форму разделения, сравнивая результаты кодирования различных форм разделения друг с другом на основании издержек RD. Когда оптимально кодировать максимальную единицу 810 кодирования как есть, максимальную единицу 810 кодирования можно кодировать без разделения максимальной единицы 810 кодирования как проиллюстрировано на фиг. 8A - 8D.[87] In FIG. 8A shows a separation form selected by
[88] Согласно фиг. 8B, максимальная единица 810 кодирования, глубина которой равна 0, кодируется путем ее разделения на единицы кодирования более низкого уровня, глубины которых больше или равны 1. Таким образом, максимальная единица 810 кодирования делится на 4 единицы кодирования более низкого уровня глубины которых равны 1, и все или некоторые из единиц кодирования более низкого уровня, глубины которых равны 1, делятся на единицы кодирования более низкого уровня, глубины которых равны 2.[88] Referring to FIG. 8B, the maximum coding unit 810, the depth of which is 0, is encoded by dividing it into lower coding units whose depths are greater than or equal to 1. Thus, the maximum coding unit 810 is divided into 4 coding units of a lower depth level of 1, and all or some of the coding units of a lower level whose depths are 1 are divided into coding units of a lower level whose depths are 2.
[89] Единица кодирования более низкого уровня, расположенная на верхней правой стороне, и единица кодирования более низкого уровня, расположенная на нижней левой стороне, из единиц кодирования более низкого уровня, глубины которых равны 1, делятся на единицы кодирования более низкого уровня, глубины которых больше или равны 2. Некоторые из единиц кодирования более низкого уровня, глубины которых больше или равны 2, могут делиться на единицы кодирования более низкого уровня, глубины которых больше или равны 3.[89] The lower-level coding unit located on the upper right side and the lower-level coding unit located on the lower left side, from lower-level coding units whose depths are 1, are divided into lower-level coding units whose depths greater than or equal to 2. Some of the lower level encoding units whose depths are greater than or equal to 2 can be divided into lower level encoding units whose depths are greater than or equal to 3.
[90] На фиг. 8B показана форма разделения единицы 860 предсказания для максимальной единицы 810 кодирования.[90] In FIG. 8B shows a separation form of a prediction unit 860 for a maximum coding unit 810.
[91] Согласно фиг. 8B, единица 860 предсказания для максимальной единицы 810 кодирования может делиться иначе, чем максимальная единица 810 кодирования. Другими словами, единица предсказания для каждой из единиц кодирования более низкого уровня, может быть меньше соответствующей единицы кодирования более низкого уровня.[91] Referring to FIG. 8B, the prediction unit 860 for the maximum coding unit 810 may be divided differently than the maximum coding unit 810. In other words, the prediction unit for each of the lower level coding units may be less than the corresponding lower level coding unit.
[92] Например, единица предсказания для единицы 854 кодирования более низкого уровня, расположенной на нижней правой стороне, из единиц кодирования более низкого уровня, глубины которых равны 1, может быть меньше единицы 854 кодирования более низкого уровня. Кроме того, единицы предсказания для некоторых единиц 814, 816, 850 и 852 кодирования более низкого уровня из единиц 814, 816, 818, 828, 850 и 852 кодирования более низкого уровня, глубины которых равны 2, могут быть меньше единиц 814, 816, 850 и 852 кодирования более низкого уровня, соответственно.[92] For example, a prediction unit for a lower
[93] Кроме того, единицы предсказания для единиц 822, 832 и 848 кодирования более низкого уровня, глубины которых равны 3, могут быть меньше единиц 822, 832 и 848 кодирования более низкого уровня, соответственно. Единицы предсказания могут иметь форму, при которой соответствующие единицы кодирования более низкого уровня делятся на две равные части в направлении высоты или ширины или иметь форму, при которой соответствующие единицы кодирования более низкого уровня делятся на четыре равные части в направлениях высоты и ширины.[93] Furthermore, prediction units for lower
[94] Фиг. 8C и 8D иллюстрируют единицу 860 предсказания и единицу 870 преобразования, согласно иллюстративному варианту осуществления.[94] FIG. 8C and 8D illustrate a prediction unit 860 and a transform unit 870, according to an illustrative embodiment.
[95] На фиг. 8C показана форма разделения единицы 860 предсказания для максимальной единицы 810 кодирования, показанной на фиг. 8B, и на фиг. 8D показана форма разделения единицы 870 преобразования максимальной единицы 810 кодирования.[95] In FIG. 8C shows a separation form of the prediction unit 860 for the maximum coding unit 810 shown in FIG. 8B, and in FIG. 8D shows a separation form of a conversion unit 870 of a maximum coding unit 810.
[96] Согласно фиг. 8D, форму разделения единицы 870 преобразования можно устанавливать иначе, чем для единицы 860 предсказания.[96] Referring to FIG. 8D, the division form of the transform unit 870 can be set differently than for the prediction unit 860.
[97] Например, хотя единица предсказания для единицы кодирования 854, глубина которой равна 1, выбирается с формой, при которой высота единицы кодирования 854 делится на две равные части, единицу преобразования можно выбирать такого же размера, как единица кодирования 854. Аналогично, хотя единицы предсказания для единиц 814 и 850 кодирования, глубины которых равны 2 выбираются с формой, при которой высота каждой из единиц 814 и 850 кодирования делится на две равные части, единицу преобразования можно выбирать такого же размера, как первоначальный размер каждой из единиц 814 и 850 кодирования.[97] For example, although the prediction unit for the
[98] Единицу преобразования можно выбирать с меньшим размером, чем единица предсказания. Например, когда единица предсказания для единицы 852 кодирования, глубина которой равна 2, выбирается с формой, при которой ширина единицы 852 кодирования делится на две равные части, единицу преобразования можно выбирать с формой, при которой единица 852 кодирования делится в направлениях высоты и ширины на четыре равные части, которые имеют меньший размер, чем форма единицы предсказания.[98] A conversion unit can be selected with a smaller size than a prediction unit. For example, when a prediction unit for a
[99] На фиг. 9 показана блок-схема устройства 900 для кодирования вектора движения, согласно иллюстративному варианту осуществления.[99] In FIG. 9 is a block diagram of an
[100] Устройство 900 для кодирования вектора движения может входить в состав устройства 100 для кодирования изображения, проиллюстрированного на фиг. 1, или кодера 400 изображения, проиллюстрированного на фиг. 4, подробно изображено на фиг. 9. Согласно фиг. 9, устройство 900 для кодирования вектора движения включает в себя блок 910 оценки вектора движения, блок 920 определения кандидата и кодер 930 вектора движения.[100] The
[101] Для декодирования кодированных блоков с использованием взаимного предсказания, т.е. временного предсказания, требуется информация о векторе движения, которая указывает относительную разность местоположений между текущим блоком и аналогичным блоком в эталонном изображении. Соответственно, информация о векторе движения кодируется с одновременным кодированием изображения и внедряется в битовый поток. При непосредственном кодировании и внедрении информации о векторе движения, служебная нагрузка, используемая для кодирования информации о векторе движения, увеличивается, и, таким образом, коэффициент сжатия данных изображения снижается.[101] For decoding encoded blocks using mutual prediction, ie temporal prediction, information is required on the motion vector, which indicates the relative difference of locations between the current block and a similar block in the reference image. Accordingly, information about the motion vector is encoded with simultaneous encoding of the image and embedded in the bitstream. With the direct encoding and implementation of information about the motion vector, the overhead used to encode information about the motion vector increases, and thus, the compression ratio of the image data is reduced.
[102] Соответственно, при кодировании изображения, предсказывается вектор движения текущего блока, и кодированию и внедрению подвергается только разность первоначального вектора движения между предсказателем вектора движения, сгенерированным в результате предсказания, и первоначальным вектором движения, что позволяет сжимать информацию о векторе движения.[102] Accordingly, when encoding an image, the motion vector of the current block is predicted, and only the difference of the initial motion vector between the motion vector predictor generated by the prediction and the original motion vector is subjected to encoding and embedding, which allows compressing information about the motion vector.
[103] В предсказательном кодировании вектора движения, могут существовать явный режим и неявный режим.[103] In predictive coding of a motion vector, an explicit mode and an implicit mode may exist.
[104] В таком кодеке, как «усовершенствованное кодирование видеосигнала» MPEG-4 H.264/MPEG-4 (AVC), векторы движения ранее закодированных блоков, соседствующих с текущим блоком, можно использовать для предсказания вектора движения текущего блока. Медиана векторов движения ранее закодированных блоков, соседствующих с левой стороной, верхней стороной и правой верхней стороной текущего блока, используется в качестве предсказателя вектора движения текущего блока. Поскольку векторы движения всех блоков, закодированных с использованием взаимного предсказания, предсказываются с использованием одного и того же способа, информация о предсказателе вектора движения текущего блока может не кодироваться отдельно. Однако, устройство 100 для кодирования изображения или кодер 400 изображения согласно одному или более иллюстративным вариантам осуществления использует как неявный режим, в котором информация о предсказателе вектора движения не кодируется отдельно, так и явный режим, в котором информация о предсказателе вектора движения не кодируется, для точного предсказания вектора движения. В явном режиме, информация о предсказателе вектора движения, используемом в качестве предсказателя вектора движения текущего блока из множества предсказателей-кандидатов вектора движения, кодируется и внедряется в битовый поток в качестве параметра последовательности, параметра среза или параметра блока.[104] In a codec such as Advanced Video Coding MPEG-4 H.264 / MPEG-4 (AVC), motion vectors of previously encoded blocks adjacent to the current block can be used to predict the motion vector of the current block. The median of the motion vectors of previously encoded blocks adjacent to the left side, upper side, and upper right side of the current block is used as a predictor of the motion vector of the current block. Since the motion vectors of all blocks encoded using mutual prediction are predicted using the same method, information about the motion vector predictor of the current block may not be encoded separately. However, the
[105] Фиг. 9 иллюстрирует устройство, которое осуществляет предсказательное кодирование, в то время как вектор движения кодируется согласно явному режиму.[105] FIG. 9 illustrates a device that performs predictive coding, while a motion vector is encoded according to an explicit mode.
[106] Блок 910 оценки вектора движения оценивает вектор движения текущего блока. Поиск блока, аналогичного или идентичного текущему блоку, осуществляется в по меньшей мере одном эталонном изображении, и, в результате поиска, оценивается вектор движения, который является относительной разностью местоположений между текущим блоком и искомым эталонным изображением. Поиск блока, аналогичного или идентичного текущему блоку, осуществляется на основании вычисления суммы абсолютной разности (SAD), и, в результате поиска, можно оценивать вектор движения текущего блока.[106] The
[107] Кроме того, блок 910 оценки вектора движения предсказывает вектор движения текущего блока на основании векторов движения блоков, включенных в ранее закодированную область, соседствующую с текущим блоком. Другими словами, векторы движения блоков, включенных в ранее закодированную область, соседствующую с текущим блоком, задаются как предсказатели-кандидаты вектора движения, и определяется предсказатель-кандидат вектора движения, который наиболее аналогичен оцененному вектору движения текущего блока из предсказателей-кандидатов вектора движения.[107] In addition, the
[108] В таком кодеке, как MPEG-4 H.264/MPEG-4 AVC, медиана векторов движения ранее закодированных блоков, соседствующих с левой стороной, верхней стороной и правой верхней стороной текущего блока используется в качестве предсказателя вектора движения текущего блока. Поскольку вектор движения закодированного блока предсказывается с использованием векторов движения ранее закодированных блоков, и используется только один предсказатель вектора движения, информация о предсказателе вектора движения, может не кодироваться отдельно. Другими словами, количество предсказателей вектора движения блока, закодированного с использованием взаимного предсказания, равно единице.[108] In a codec such as MPEG-4 H.264 / MPEG-4 AVC, the median of the motion vectors of previously encoded blocks adjacent to the left side, upper side, and upper right side of the current block is used as a predictor of the motion vector of the current block. Since the motion vector of the encoded block is predicted using the motion vectors of the previously encoded blocks, and only one motion vector predictor is used, information about the motion vector predictor may not be separately encoded. In other words, the number of predictors of the motion vector of a block encoded using mutual prediction is one.
[109] Однако, когда вектор движения текущего блока точно предсказан, вектор движения можно кодировать с высоким коэффициентом сжатия. В связи с этим, согласно иллюстративному варианту осуществления, один из множества предсказателей-кандидатов вектора движения выбирается и используется в качестве предсказателя вектора движения текущего блока, что позволяет кодировать вектор движения текущего блока с высоким коэффициентом сжатия. Далее, будет подробно описан способ кодирования вектора движения текущего блока с использованием множества предсказателей-кандидатов вектора движения.[109] However, when the motion vector of the current block is accurately predicted, the motion vector can be encoded with a high compression ratio. In this regard, according to an illustrative embodiment, one of the plurality of motion vector predictor candidates is selected and used as a motion vector predictor of the current block, which allows encoding a motion vector of the current block with a high compression ratio. Next, a method for encoding a motion vector of a current block using a plurality of motion vector predictor candidates will be described in detail.
[110] Фиг. 10A и 10B иллюстрируют предсказатели-кандидаты вектора движения, согласно иллюстративному варианту осуществления.[110] FIG. 10A and 10B illustrate motion vector predictor candidates according to an illustrative embodiment.
[111] Согласно фиг. 10A, согласно способу предсказания вектора движения, один из векторов движения ранее закодированных блоков, соседствующих с текущим блоком, можно использовать в качестве предсказателя вектора движения текущего блока.[111] Referring to FIG. 10A, according to the motion vector prediction method, one of the motion vectors of previously encoded blocks adjacent to the current block can be used as a predictor of the motion vector of the current block.
[112] Из блоков, соседствующих с верхней стороной текущего блока, все векторы движения блока a0 на самой левой стороне, блок b0 на самой верхней стороне, соседствующей с левой стороной, блок c, соседствующий с правой верхней стороной, блок d, соседствующий с левой верхней стороной, и блок e, соседствующий с левой нижней стороной, можно использовать в качестве предсказателей-кандидатов вектора движения текущего блока.[112] Of the blocks adjacent to the upper side of the current block, all the motion vectors of block a0 are on the very left side, block b0 is on the highest side, adjacent to the left side, block c is adjacent to the upper right side, block d is adjacent to the left the upper side, and block e adjacent to the lower left side can be used as predictor candidates for the motion vector of the current block.
[113] Согласно способу кодирования и декодирования изображения согласно одному или более иллюстративным вариантам осуществления, кодирование и декодирование изображения осуществляются на основе единиц кодирования, имеющих различные размеры, и отличающихся глубинами, и, таким образом, вектор движения блока, соседствующего с левой нижней стороной, можно использовать в качестве кандидата в предсказатели вектора движения.[113] According to the method of encoding and decoding an image according to one or more illustrative embodiments, the encoding and decoding of the image is carried out on the basis of coding units having different sizes and different depths, and thus a motion vector of a block adjacent to the lower left side, can be used as a candidate for motion vector predictors.
[114] Согласно фиг. 10B, векторы движения всех блоков, соседствующих с текущим блоком, можно использовать в качестве предсказателей-кандидатов вектора движения. Другими словами, векторы движения не только блока a0 на самой левой стороне из блоков, соседствующих с верхней стороной, но и все блоки a0 - aN, соседствующие с верхней стороной, можно использовать в качестве предсказателей-кандидатов вектора движения. Кроме того, векторы движения не только блока b0 на самой верхней стороне из блоков, соседствующих с левой стороной, но и все блоки b0 - bN, соседствующие с левой стороной, можно использовать в качестве предсказателей-кандидатов вектора движения.[114] Referring to FIG. 10B, the motion vectors of all blocks adjacent to the current block can be used as motion vector predictor candidates. In other words, the motion vectors not only of the block a0 on the left side of the blocks adjacent to the upper side, but also all blocks a0 - aN adjacent to the upper side, can be used as motion vector predictor candidates. In addition, the motion vectors of not only the block b0 on the uppermost side of the blocks adjacent to the left side, but also all the blocks b0 - bN adjacent to the left side, can be used as motion vector predictor candidates.
[115] Кроме того, медиану векторов движения соседних блоков можно использовать в качестве предсказателей-кандидатов вектора движения. Другими словами, медиану mv_a0, mv_b0 или mv_c можно использовать в качестве кандидата в предсказатели вектора движения текущего блока. Здесь, mv_a0 это вектор движения блока a0, mv_b0 это вектор движения блока b0, и mv_c это вектор движения блока c.[115] In addition, the median of the motion vectors of neighboring blocks can be used as predictor candidates for the motion vector. In other words, the median mv_a0, mv_b0 or mv_c can be used as a candidate for the predictors of the motion vector of the current block. Here, mv_a0 is the motion vector of block a0, mv_b0 is the motion vector of block b0, and mv_c is the motion vector of block c.
[116] Однако предсказатели-кандидаты вектора движения текущего блока могут быть ограничены согласно размерам текущего блока и соседних блоков, что будет подробно описано со ссылкой на фиг. 10C-10E.[116] However, candidate motion vector predictors of the current block may be limited according to the sizes of the current block and neighboring blocks, which will be described in detail with reference to FIG. 10C-10E.
[117] Фиг. 10C-10E иллюстрируют блоки различных размеров, которые соседствуют с текущим блоком, согласно иллюстративному варианту осуществления.[117] FIG. 10C-10E illustrate blocks of various sizes that are adjacent to the current block, according to an illustrative embodiment.
[118] Как описано выше, согласно способу кодирования и декодирования изображения согласно одному или более иллюстративным вариантам осуществления, единицы кодирования и единица предсказания, имеющие различные размеры, определенные согласно глубинам, можно использовать для кодирования изображения. Соответственно, поскольку блоки, соседствующие с текущим блоком, могут иметь различные размеры, когда размер текущего блока и размеры некоторых соседних блоков, значительно отличаются друг от друга, векторы движения некоторых соседних блоков можно не использовать в качестве предсказателей-кандидатов вектора движения.[118] As described above, according to the method of encoding and decoding an image according to one or more illustrative embodiments, coding units and a prediction unit having different sizes determined according to depths can be used to encode the image. Accordingly, since the blocks adjacent to the current block may have different sizes, when the size of the current block and the sizes of some neighboring blocks are significantly different from each other, the motion vectors of some neighboring blocks may not be used as motion vector predictor candidates.
[119] Согласно фиг. 10C, блоки 1014-1018, соседствующие с верхней стороной текущего блока 1010 меньше текущего блока 1010. Поскольку вектор движения блока 1012, соседствующего с текущим блоком 1010 и имеющего такой же размер, как текущий блок 1010, может быть идентичен или аналогичен вектору движения текущего блока 1010, блок 910 оценки вектора движения может использовать только вектор движения блока 1012 в качестве кандидата в предсказатели вектора движения.[119] Referring to FIG. 10C, blocks 1014-1018 adjacent to the upper side of the
[120] Хотя размеры не одинаковы, в качестве предсказателей-кандидатов вектора движения можно использовать только векторы движения соседних блоков, имеющих заранее определенные размеры или более. Например, в качестве предсказателей-кандидатов вектора движения можно использовать только векторы движения блоков 1012 и 1018, размеры которых составляют 1/4 размера текущего блока 1010 или более.[120] Although the sizes are not the same, only motion vectors of neighboring blocks having predetermined sizes or more can be used as predictor candidates for the motion vector. For example, only motion vectors of
[121] Согласно фиг. 10D, размер блока 1022, соседствующего с левой стороной текущего блока 1020, превышает размер текущего блока 1020 в 16 раз, в связи с чем, существует большая разница в размерах. Вследствие этого большого различия, вектор движения блока 1022, соседствующего с левой стороной, может не быть идентичным или аналогичным вектору движения текущего блока 1020. Соответственно, вектор движения блока 1022, соседствующего с левой стороной, не используется в качестве предсказателя-кандидата вектора движения текущего блока 1020, и в качестве предсказателей-кандидатов вектора движения можно использовать только векторы движения блока 1024, соседствующего с верхней стороной, и блока 1026, соседствующего с левой верхней стороной.[121] Referring to FIG. 10D, the size of the
[122] Согласно фиг. 10E, размер текущего блока 1030 превышает размеры всех соседних блоков 1031-1037. Здесь, когда векторы движения всех соседних блоков 1031-1037 используются в качестве предсказателей-кандидатов вектора движения текущего блока 1030, количество предсказателей-кандидатов вектора движения текущего блока 1030 может быть велико. При увеличении различия в размерах между текущим блоком 1030 и соседними блоками 1031-1037, количество предсказателей-кандидатов вектора движения также увеличивается. Соответственно, блок 910 оценки вектора движения может не использовать векторы движения некоторых блоков из соседних блоков в качестве предсказателей-кандидатов вектора движения текущего блока 1030.[122] Referring to FIG. 10E, the size of the
[123] Например, на фиг. 10E, векторы движения блока 1031, соседствующего с левой нижней стороной, и блока 1037, соседствующего с правой верхней стороной, можно не использовать в качестве предсказателей-кандидатов вектора движения текущего блока 1030.[123] For example, in FIG. 10E, the motion vectors of
[124] В более общем случае, когда размер текущего блока 1030 превышает заранее определенный размер, векторы движения блоков, соседствующих в конкретном направлении, из соседних блоков, можно не использовать в качестве предсказателей-кандидатов вектора движения текущего блока 1030.[124] In a more general case, when the size of the
[125] Фиг. 11A-11C иллюстрируют предсказатели-кандидаты вектора движения, согласно другому иллюстративному варианту осуществления.[125] FIG. 11A-11C illustrate motion vector predictor candidates according to another illustrative embodiment.
[126] Фиг. 11A иллюстрирует способ определения предсказателя-кандидата вектора движения изображения с двусторонним предсказанием (изображения B). Когда текущее изображение, включающее в себя текущий блок, является изображением B, которое осуществляет двустороннее предсказание, вектор движения, генерируемый на основании временного расстояния, может быть предсказателем кандидатом вектора движения.[126] FIG. 11A illustrates a method for determining a predictor candidate of a two-way image motion vector (image B). When the current image including the current block is an image B that performs two-way prediction, the motion vector generated based on the time distance may be a motion vector predictor candidate.
[127] Предсказатель-кандидат вектора движения mv_temporal текущего блока 1100 текущего изображения 1110 можно определять с использованием вектора движения блока 1120, находящегося рядом с текущим блоком 1100 изображения 1112, которое предшествует по времени текущему изображению 1110. Например, когда вектор движения mv_colA блока 1120 находящегося рядом с текущим блоком 1100, генерируется по отношению к искомому блоку 1122 изображения 1114, которое следует по времени после текущего изображения 1110, mv_L0A и mv_L1A, которые являются предсказателями кандидатами вектора движения текущего блока 1100, можно определить следующим образом:[127] The predictor candidate of the motion vector mv_temporal of the
[128] mv_L1A=(t1/t2)*mv_colA[128] mv_L1A = (t1 / t2) * mv_colA
[129] mv_L0A=mv_L1A-mv_colA[129] mv_L0A = mv_L1A-mv_colA
[130] Здесь, mv_L0A обозначает предсказатель-кандидат вектора движения текущего блока 1110 по отношению к изображению 1112, которое предшествует по времени текущему изображению 1110, и mv_L1A обозначает предсказатель-кандидат вектора движения текущего блока 1100 по отношению к изображению 1114, которое следует по времени после текущего изображения 1110.[130] Here, mv_L0A denotes a predictor candidate motion vector of the
[131] На фиг. 11A, текущее изображение 1110, которое является изображением B, вставлено между изображением 1112, которое предшествует по времени текущему изображению 1110, и изображением 1114, которое следует по времени после текущего изображения 1110. Здесь, когда вектор движения mv_colA блока 1120, находящегося рядом с текущим блоком 1100, генерируется по отношению к изображению 1114, которое следует по времени после текущего изображения 1110, вектор движения текущего блока 1100 можно точно предсказывать на основании mv_L1A. Другими словами, вектор движения текущего блока 1100 можно более точно предсказывать, когда mv_colA является вектором движения в направлении, проиллюстрированном на фиг. 11 A, по сравнению со случаем, когда mv_colA является вектором движения, направление которого противоположно направлению, проиллюстрированному на фиг. 11 A, то есть когда mv_colA генерируется по отношению к другому изображению до изображения 1112, которое предшествует по времени текущему изображению 1110.[131] In FIG. 11A, the
[132] Соответственно, когда направление от текущего блока 1110 к блоку 1120, находящемуся рядом с текущим блоком 1100, является List0, вектор движения mv_colA должен быть ориентирован в направлении List1, и, таким образом, текущее изображение 1110 может быть вставлено между изображением 1112 и изображением 1114, как проиллюстрировано на фиг. 11A, что позволяет точно предсказывать вектор движения текущего блока 1100 на основании mv_colA.[132] Accordingly, when the direction from the
[133] Кроме того, изображения 1110 - 1114, проиллюстрированные на фиг. 11A, представлены согласно временному порядку, и, таким образом, предсказатель-кандидат вектора движения mv_temporal текущего блока может генерироваться на основании порядкового номера изображения (POC). Изображение, ссылка на которое обеспечивается текущим блоком, может быть изображением, отличным от соседних изображений 1112 и 1114, проиллюстрированных на фиг. 11A, и, таким образом, предсказатель-кандидат вектора движения текущего блока генерируется на основании POC.[133] In addition,
[134] Например, когда POC текущего изображения равен CurrPOC, и POC изображения, ссылка на которое обеспечивается текущим изображением, равен CurrRefPOC, предсказатель-кандидат вектора движения текущего блока может генерироваться следующим образом:[134] For example, when the POC of the current image is CurrPOC, and the POC of the image referenced by the current image is CurrRefPOC, a motion vector predictor predictor of the current block can be generated as follows:
[135] Scale=(CurrPOC-CurrRefPOC)/(ColPOC-ColRefPOC)[135] Scale = (CurrPOC-CurrRefPOC) / (ColPOC-ColRefPOC)
[136] mv_temporal=Scale*mv_colA[136] mv_temporal = Scale * mv_colA
[137] Здесь, ColPOC это POC изображения 1112, которое предшествует по времени текущему изображению 1110 и включает в себя блок 1120 и ColRefPOC это POC изображения 1114, которое следует по времени после текущего изображения 1110 и включает в себя блок 1122, ссылка на который обеспечивается блоком 1120.[137] Here, ColPOC is a POC of an
[138] Фиг. 11B иллюстрирует другой способ генерации предсказателя-кандидата вектора движения изображения B. Способ, представленный на фиг. 11B, отличается от способа, представленного на фиг. 11A тем, что изображение 1114, которое следует по времени после текущего изображения 1110, включает в себя блок, находящийся рядом с текущим блоком 1100.[138] FIG. 11B illustrates another method for generating a motion vector predictor predictor of image B. The method illustrated in FIG. 11B is different from the method shown in FIG. 11A in that the
[139] Согласно фиг. 11B, предсказатель-кандидат вектора движения текущего блока 1100 текущего изображения 1110 может генерироваться с использованием вектора движения блока 1130, находящегося рядом с текущим блоком 1100 изображения 1114, которое следует по времени после текущего изображения 1110. Например, когда вектор движения mv_colB блока 1130, находящегося рядом с текущим блоком 1100, генерируется по отношению к искомому блоку 1132 изображения 1112, которое предшествует по времени текущему изображению 1110, mv_L0B и mv_L1B, которые являются предсказателями кандидатами вектора движения текущего блока 1100, можно определить следующим образом:[139] Referring to FIG. 11B, the motion vector predictor candidate of the
[140] mv_L0B=(t3/t4)*mv_colB[140] mv_L0B = (t3 / t4) * mv_colB
[141] mv_L1B=mv_L0B-mv_colB[141] mv_L1B = mv_L0B-mv_colB
[142] Здесь, mv_L0B обозначает предсказатель-кандидат вектора движения текущего блока 1110 по отношению к изображению 1112, которое предшествует по времени текущему изображению 1110, и mv_L1B обозначает предсказатель-кандидат вектора движения текущего блока 1100 по отношению к изображению 1114, которое следует по времени после текущего изображения 1110.[142] Here, mv_L0B denotes the predictor candidate motion vector of the
[143] Аналогично фиг. 11A, на фиг. 11B, текущее изображение 1110, которое является изображением B, вставлено между изображением 1112, которое предшествует по времени текущему изображению 1110, и изображением 1114, которое следует по времени после текущего изображения 1110. Соответственно, когда вектор движения mv_colB блока 1130, находящегося рядом с текущим блоком 1100, генерируется по отношению к изображению 1112, которое предшествует по времени текущему изображению 1110, вектор движения текущего блока 1100 можно точно предсказывать на основании mv_L0B. Другими словами, вектор движения текущего блока 1100 можно более точно предсказывать, когда mv_colB это вектор движения в направлении, проиллюстрированном на фиг. 11B, по сравнению со случаем, когда mv_colB является вектором движения, направление которого противоположно направлению, проиллюстрированному на фиг. 11B, то есть, когда mv_colB генерируется по отношению к другому изображению после изображения 1114, которое следует по времени после текущего изображения 1110.[143] Similarly to FIG. 11A, in FIG. 11B, the
[144] Соответственно, когда направление от текущего блока 1110 к блоку 1130, находящемуся рядом с текущим блоком 1100, является List1, вектор движения mv_colB блока 1130 должен быть ориентирован в направлении List0 и, таким образом, текущее изображение 1110 может быть вставлено между изображением 1112 и изображением 1114, как проиллюстрировано на фиг. 11B, что позволяет точно предсказывать вектор движения текущего блока 1100 на основании mv_colB.[144] Accordingly, when the direction from the
[145] Кроме того, изображение, ссылка на которое обеспечивается текущим блоком, может быть изображением, отличным от соседних изображений 1112 и 1114, проиллюстрированных на фиг. 11B, и, таким образом, предсказатель-кандидат вектора движения текущего блока генерируется на основании POC.[145] Furthermore, the image referenced by the current unit may be an image different from the neighboring
[146] Например, когда POC текущего изображения равен CurrPOC, и POC изображения, ссылка на которое обеспечивается текущим изображением, равен CurrRefPOC, предсказатель-кандидат вектора движения текущего блока может генерироваться следующим образом:[146] For example, when the POC of the current image is CurrPOC, and the POC of the image referenced by the current image is CurrRefPOC, a motion vector predictor predictor of the current block can be generated as follows:
[147] Scale=(CurrPOC-CurrRefPOC)/(ColPOC-ColRefPOC)[147] Scale = (CurrPOC-CurrRefPOC) / (ColPOC-ColRefPOC)
[148] mv_temporal=Scale*mv_colB[148] mv_temporal = Scale * mv_colB
[149] Здесь, ColPOC это POC изображения 1114, которое следует по времени после текущего изображения 1110 и включает в себя блок 1130, и ColRefPOC это POC изображения 1112, которое предшествует по времени текущему изображению 1110 и включает в себя блок 1132, ссылка на который обеспечивается блоком 1130.[149] Here, ColPOC is a POC of an
[150] Фиг. 11C иллюстрирует предсказатель-кандидат вектора движения предсказательного изображения (изображения P).[150] FIG. 11C illustrates a candidate predictor of a motion vector of a predictive image (image P).
[151] Согласно фиг. 11C, предсказатель-кандидат вектора движения текущего блока 1100 текущего изображения 1110 можно определять с использованием вектора движения блока 1140, находящегося рядом с текущим блоком 1100 изображения 1112, которое предшествует по времени текущему изображению 1110. Например, когда вектор движения mv_colC блока 1140 находящегося рядом с текущим блоком 1100, генерируется по отношению к искомому блоку 1142 изображения 1116, которое предшествует по времени текущему изображению 1110, mv_L0C, который является предсказателем кандидатом вектора движения текущего блока 1100, можно определить следующим образом:[151] Referring to FIG. 11C, the motion vector predictor candidate of the
[152] mv_L0C=(t6/t5)*mv_colC[152] mv_L0C = (t6 / t5) * mv_colC
[153] Как описано в связи с фиг. 11A и 11B, mv_L0C можно определять на основании POC. mv_L0C можно определять на основании POC текущего изображения 1110, POC изображения, ссылка на которое обеспечивается текущим изображением 1110, POC изображения 1112, которое предшествует по времени текущему изображению 1110, и POC изображения 1116, которое предшествует по времени текущему изображению 1110.[153] As described in connection with FIG. 11A and 11B, mv_L0C may be determined based on the POC. mv_L0C can be determined based on the POC of the
[154] Поскольку текущее изображение 1110 является изображением P, определяется только один предсказатель-кандидат вектора движения текущего блока 1100, в отличие от фиг. 11A и 11B.[154] Since the
[155] Кроме того, для использования предсказателя-кандидата вектора движения, генерируемого на основании временного расстояния на фиг. 11A и 11B для предсказания вектора движения текущего блока, также можно кодировать информацию, указывающую, какой блок из блоков 1120 и 1130, находящихся рядом с текущим блоком 1100, используется для генерации предсказателя вектора движения. Такая информация может входить в состав заголовка среза или заголовка последовательности в качестве параметра среза или параметра последовательности.[155] In addition, to use the motion vector predictor predictor generated based on the time distance in FIG. 11A and 11B for predicting a motion vector of a current block, it is also possible to encode information indicating which block of
[156] В целом, группа C предсказателей-кандидатов вектора движения согласно фиг. 10A, 10B и 11A-11C может иметь следующий вид:[156] In general, the motion vector predictor group C of FIG. 10A, 10B and 11A-11C may have the following form:
[157] C={median(mv_a0, mv_b0, mv_c), mv_a0, mv_a1, …, mv_aN, mv_b0, mv_b1, …, mv_bN, mv_c, mv_d, mv_e, mv_temporal}[157] C = {median (mv_a0, mv_b0, mv_c), mv_a0, mv_a1, ..., mv_aN, mv_b0, mv_b1, ..., mv_bN, mv_c, mv_d, mv_e, mv_temporal}
[158] Кроме того, группа C может представлять собой группу с уменьшенным количеством предсказателей-кандидатов вектора движения:[158] In addition, group C may be a group with a reduced number of motion vector predictor candidates:
[159] C={median(mv_a', mv_b', mv_c'), mv_a', mv_b', mv_c', mv_temporal}[159] C = {median (mv_a ', mv_b', mv_c '), mv_a', mv_b ', mv_c', mv_temporal}
[160] Здесь, mv_x обозначает вектор движения блока x, median() обозначает среднее значение, и mv_temporal обозначает предсказатели-кандидаты вектора движения, генерируемые с использованием временного расстояния, описанного в связи с фиг. 11A-11C. mv_a' обозначает первый эффективный вектор движения из mv_a0, mv_a1, …, и mv_aN. Например, когда блок a0 кодируется с использованием внутреннего предсказания и указывает текущий блок и другое изображение, вектор движения mv_a0 блока a0 не является эффективным, и, таким образом, mv_a'=mv_a1. Кроме того, когда вектор движения блока a1 не является эффективным, mv_a'=mv_a2. Аналогично, mv_b' является первым эффективным вектором движения из mv_b0, mv_b1, …, и mv_bN и mv_c' является первым эффективным вектором движения из mv_c, mv_d и mv_e.[160] Here, mv_x denotes the motion vector of block x, median () denotes an average value, and mv_temporal denotes motion vector predictor candidates generated using the time distance described in connection with FIG. 11A-11C. mv_a 'denotes the first effective motion vector of mv_a0, mv_a1, ..., and mv_aN. For example, when block a0 is encoded using intra prediction and indicates the current block and another image, the motion vector mv_a0 of block a0 is not effective, and thus mv_a '= mv_a1. In addition, when the motion vector of block a1 is not effective, mv_a '= mv_a2. Similarly, mv_b 'is the first effective motion vector of mv_b0, mv_b1, ..., and mv_bN and mv_c' is the first effective motion vector of mv_c, mv_d and mv_e.
[161] Вектор движения блока, который указывает изображение, отличное от текущего блока из векторов движения блоков, соседствующих с текущим блоком, может неэффективно предсказывать вектор движения текущего блока. Соответственно, вектор движения блока, который указывает изображение, отличное от текущего блока можно исключить из группы C предсказателей-кандидатов вектора движения.[161] A motion vector of a block that indicates an image different from the current block from the motion vectors of blocks adjacent to the current block may inefficiently predict the motion vector of the current block. Accordingly, a motion vector of a block that indicates an image different from the current block can be excluded from the group C of motion vector predictor candidates.
[162] Когда устройство 900 для кодирования вектора движения кодирует вектор движения согласно явному режиму, устройство 900 также кодирует информацию, указывающую, какой предсказатель-кандидат вектора движения в группе C используется для предсказания вектора движения текущего блока. Другими словами, когда устройство 900 для кодирования вектора движения кодирует вектор движения, устройство 900 присваивает двоичные числа соответствующим элементам группы C, то есть предсказателям кандидатам вектора движения, и кодирует двоичные числа, соответствующие предсказателю кандидату вектора движения, используемому для предсказания вектора движения текущего блока.[162] When the
[163] Для указания одного из элементов в группе C, присваиваются и выводятся двоичные числа, каждое из которых соответствует предсказателям кандидатам вектора движения. Таким образом, по мере уменьшения количества элементов в группе C, элементы в группе C можно указывать двоичными числами с меньшим количеством битов.[163] To indicate one of the elements in group C, binary numbers are assigned and displayed, each of which corresponds to the predictors of the motion vector candidates. Thus, as the number of elements in group C decreases, elements in group C can be indicated with binary numbers with fewer bits.
[164] Соответственно, при наличии перекрывающихся предсказателей-кандидатов вектора движения в группе C, двоичные числа могут присваиваться после исключения перекрывающихся предсказателей-кандидатов вектора движения из группы C. Например, когда группа C является C={median(mv_a', mv_b', mv_c'), mv_a', mv_b', mv_c', mv_temporal}, как описано выше, и mv_a', mv_b' и mv_c' совпадают друг с другом, можно определить, что в группе C существует два элемента, а именно, C={mv_a', mv_temporal} и двоичные числа могут присваиваться. Когда пять элементов в группе C можно указывать с использованием 3 битов до исключения перекрывающихся предсказателей-кандидатов вектора движения, два элемента можно указывать с использованием 1 бита после исключения перекрывающихся предсказателей-кандидатов вектора движения.[164] Accordingly, in the presence of overlapping predictor candidates of the motion vector in group C, binary numbers can be assigned after excluding the overlapping predictor candidates of the motion vector from group C. For example, when the group C is C = {median (mv_a ', mv_b', mv_c '), mv_a', mv_b ', mv_c', mv_temporal}, as described above, and mv_a ', mv_b' and mv_c 'coincide with each other, it can be determined that there are two elements in group C, namely, C = {mv_a ', mv_temporal} and binary numbers may be assigned. When five elements in group C can be indicated using 3 bits before excluding overlapping motion vector predictors, two elements can be indicated using 1 bit after eliminating overlapping motion vector predictors.
[165] Для повышения вероятности определения перекрывающегося предсказателя-кандидата вектора движения в качестве предсказателя вектора движения текущего блока, вместо исключения перекрывающегося предсказателя-кандидата вектора движения, ему можно присваивать заранее определенный вес. Как описано выше, поскольку mv_a', mv_b' и mv_c' совпадают друг с другом и только mv_a' включен в группу C, mv_a' присваивается заранее определенный вес, и, таким образом, вероятность того, что mv_a' используется для предсказания вектора движения текущего блока, может увеличиваться.[165] To increase the likelihood of determining an overlapping motion vector predictor candidate as a motion vector predictor of the current block, instead of eliminating the overlapping motion vector predictor candidate, a predetermined weight can be assigned to it. As described above, since mv_a ', mv_b' and mv_c 'are the same and only mv_a' is included in group C, mv_a 'is assigned a predetermined weight, and thus the probability that mv_a' is used to predict the motion vector of the current block may increase.
[166] Кроме того, при наличии одного предсказателя-кандидата вектора движения, двоичное число, используемое для указания одного из предсказателей-кандидатов вектора движения, может не кодироваться. Например, когда группа C является C={median(mv_a0, mv_b0, mv_c), mv_a0, mv_a1, …, mv_aN, mv_b0, mv_b1, …, mv_bN, mv_c, mv_d, mv_e, mv_temporal}, и блоки a0-aN, блоки b0-bN, блок c, блок d и блок e все подлежат взаимному предсказанию, группа C является C={mv_temporal} и, таким образом, по существу, включает в себя один элемент. Соответственно, в этом случае, устройство 900 для кодирования вектора движения может не кодировать двоичное число, используемое для указания одного из предсказателей-кандидатов вектора движения.[166] Furthermore, if there is one motion vector predictor candidate, the binary number used to indicate one of the motion vector predictor candidates may not be encoded. For example, when the group C is C = {median (mv_a0, mv_b0, mv_c), mv_a0, mv_a1, ..., mv_aN, mv_b0, mv_b1, ..., mv_bN, mv_c, mv_d, mv_e, mv_temporal}, and blocks a0-aN, and b0-bN, block c, block d, and block e are all subject to mutual prediction, group C is C = {mv_temporal} and, thus, essentially includes one element. Accordingly, in this case, the
[167] Специалисту в данной области техники очевидно, что векторы движения, отличные от вышеописанных предсказателей-кандидатов вектора движения, можно использовать в качестве предсказателей-кандидатов вектора движения.[167] It will be apparent to those skilled in the art that motion vectors other than the motion vector predictor candidates described above can be used as motion vector predictor candidates.
[168] Кроме того, согласно другому иллюстративному варианту осуществления, блок 920 определения кандидата может уменьшать количество предсказателей-кандидатов вектора движения на основании оценки результата кодирования.[168] Furthermore, according to another exemplary embodiment, the
[169] Как описано выше, отдельная информация кодируется и включается в битовый поток для указания предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока из множества предсказателей-кандидатов вектора движения. Соответственно, по мере уменьшения количества элементов в группе C, информацию, необходимую для указания предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока в группе C, можно кодировать с малым числом битов. В связи с этим, блок 920 определения кандидата может выборочно исключать заранее определенные предсказатели-кандидаты вектора движения из всех предсказателей-кандидатов вектора движения с использованием заранее определенной оценочной функции, которая будет подробно описана со ссылкой на фиг. 12.[169] As described above, individual information is encoded and included in the bitstream to indicate a motion vector predictor candidate used to predict a motion vector of a current block from a plurality of motion vector predictor candidates. Accordingly, as the number of elements in group C decreases, the information necessary to indicate the motion vector predictor candidate used to predict the motion vector of the current block in group C can be encoded with a small number of bits. In this regard, the
[170] Фиг. 12 иллюстрирует способ уменьшения количества предсказателей-кандидатов вектора движения, согласно иллюстративному варианту осуществления.[170] FIG. 12 illustrates a method for reducing the number of motion vector predictor candidates according to an illustrative embodiment.
[171] На фиг. 12, предполагается, что существует три элемента MVP1, MVP2 и MVP3 в группе C, и вектор движения текущего блока обозначается MV. Поскольку предсказатель-кандидат вектора движения, который наиболее аналогичен вектору движения текущего блока, используется для предсказания вектора движения текущего блока, MVP3, который наиболее аналогичен MV, используется для предсказания вектора движения текущего блока.[171] In FIG. 12, it is assumed that there are three elements MVP1, MVP2, and MVP3 in group C, and the motion vector of the current block is denoted by MV. Since the motion vector predictor candidate that is most similar to the motion vector of the current block is used to predict the motion vector of the current block, MVP3, which is most similar to MV, is used to predict the motion vector of the current block.
[172] Соответственно, векторная разность (далее именуемая ‘разностью первоначального вектора движения’) между вектором движения текущего блока и предсказателем кандидатом вектора движения, используемым для предсказания вектора движения текущего блока, равна (2,0). Поскольку MV равен (5,0), и MVP3 равен (3,0), разность первоначального вектора движения равна (2,0).[172] Accordingly, the vector difference (hereinafter referred to as первонач initial motion vector difference ’) between the motion vector of the current block and the predictor motion vector candidate used to predict the motion vector of the current block is (2.0). Since MV is (5.0) and MVP3 is (3.0), the difference of the initial motion vector is (2.0).
[173] Блок 920 определения кандидата выборочно исключает по меньшей мере один предсказатель-кандидат вектора движения из всех предсказателей-кандидатов вектора движения с использованием разности первоначального вектора движения и заранее определенной оценочной функции. В частности, разность первоначального вектора движения и заранее определенный предсказатель-кандидат вектора движения используются для генерации виртуального вектора движения, и разности (далее именуемые ‘разности виртуального вектора движения’) между сгенерированным виртуальным вектором движения и всеми предсказателями кандидатами вектора движения генерируются по отношению ко всем кандидатам. Разность первоначального вектора движения и заранее определенный предсказатель-кандидат вектора движения суммируются друг с другом для генерации виртуального вектора движения, и вычисляются разности виртуального вектора движения между сгенерированным виртуальным вектором движения и всеми предсказателями кандидатами вектора движения. Сравнивая разность первоначального вектора движения с разностями виртуального вектора движения, вычисленными по отношению ко всем кандидатам, заранее определенный предсказатель-кандидат вектора движения можно выборочно исключать из всех предсказателей-кандидатов вектора движения.[173] The
[174] Согласно фиг. 12, блок 920 определения кандидата определяет, исключается ли MVP1, один из предсказателей-кандидатов вектора движения, из общего количества кандидатов.[174] Referring to FIG. 12, the
[175] Когда разность виртуального вектора движения, сгенерированная вычитанием предсказателя-кандидата вектора движения из виртуального вектора движения на основании MVP1, меньше разности первоначального вектора движения, MVP1 можно не использовать для предсказания вектора движения текущего блока. Например, когда разность виртуального вектора движения, сгенерированная вычитанием MVP3 из виртуального вектора движения, генерируемого суммированием MVP1 и разности первоначального вектора движения, меньше разности первоначального вектора движения, MVP3 предсказывает виртуальный вектор движения точнее, чем MVP1, и в этом случае, MVP1 не может быть предсказателем вектора движения.[175] When the difference of the virtual motion vector generated by subtracting the motion predictor candidate of the motion vector from the virtual motion vector based on MVP1 is less than the difference of the initial motion vector, MVP1 can not be used to predict the motion vector of the current block. For example, when the difference of the virtual motion vector generated by subtracting MVP3 from the virtual motion vector generated by summing MVP1 and the difference of the initial motion vector is less than the difference of the initial motion vector, MVP3 predicts the virtual motion vector more accurately than MVP1, in which case MVP1 cannot be motion vector predictor.
[176] На фиг. 12, когда MVP1 и разность первоначального вектора движения суммируются друг с другом, виртуальный вектор движения на основании MVP1 равен (2,0). Соответственно, когда виртуальный вектор движения генерируется на основании MVP1, разность виртуального вектора движения для MVP2 равна (2,0), и разность виртуального вектора движения для MVP3 равна (-1,0). Здесь, поскольку разность виртуального вектора движения (-1,0) для MVP3 меньше разности первоначального вектора движения (2,0), MVP1 может не быть предсказателем вектора движения текущего блока. Соответственно, MVP1 можно исключить из всех предсказателей-кандидатов вектора движения. Другими словами, предсказатель-кандидат вектора движения, который соответствует MVP1, можно исключить из группы C.[176] In FIG. 12, when MVP1 and the difference of the initial motion vector are added together, the virtual motion vector based on MVP1 is (2.0). Accordingly, when the virtual motion vector is generated based on MVP1, the difference of the virtual motion vector for MVP2 is (2.0), and the difference of the virtual motion vector for MVP3 is (-1.0). Here, since the difference of the virtual motion vector (-1.0) for MVP3 is less than the difference of the initial motion vector (2.0), MVP1 may not be a predictor of the motion vector of the current block. Accordingly, MVP1 can be excluded from all motion vector predictor candidates. In other words, the motion vector predictor candidate that corresponds to MVP1 can be excluded from group C.
[177] Здесь, сама по себе разность виртуального вектора движения, вычисленная для MVP1, равна (2,0) и всегда идентичная разности первоначального вектора движения, поэтому разность виртуального вектора движения может не быть меньше разности первоначального вектора движения. Соответственно, когда разности виртуального вектора движения вычисляются для всех предсказателей-кандидатов вектора движения, саму по себе разность виртуального вектора движения для MVP1 можно не вычислять.[177] Here, in itself, the difference of the virtual motion vector calculated for MVP1 is (2.0) and is always identical to the difference of the initial motion vector, so the difference of the virtual motion vector can be no less than the difference of the initial motion vector. Accordingly, when the differences of the virtual motion vector are calculated for all predictors-candidates of the motion vector, the difference of the virtual motion vector for MVP1 per se can not be calculated.
[178] По завершении определения исключается ли MVP1, блок 920 определения кандидата определяет, исключается ли MVP2 из всех предсказателей-кандидатов вектора движения. Когда MVP2 и разность первоначального вектора движения суммируются друг с другом, виртуальный вектор движения на основании MVP2 равен (2,0). Соответственно, разность виртуального вектора движения для MVP1 равна (2,0), и разность виртуального вектора движения для MVP3 равна (-1,0). Поскольку разность виртуального вектора движения для MVP3 меньше разности первоначального вектора движения, MVP2 можно исключить из всех предсказателей-кандидатов вектора движения, как и в случае MVP1. При определении, исключается ли MVP2, разность виртуального вектора движения для MVP1 можно выборочно сравнивать с разностью первоначального вектора движения. Поскольку уже определено, что MVP1 должен быть исключен, разности виртуального вектора движения для кандидатов, отличных от MVP1, можно сравнивать с разностью первоначального вектора движения.[178] Upon completion of determining whether MVP1 is excluded,
[179] Кроме того, блок 920 определения кандидата определяет, исключается ли MVP3. Виртуальный вектор движения на основании MVP3 идентичен первоначальному вектору движения текущего блока. Хотя другой предсказатель-кандидат вектора движения (то есть MVP1 или MVP2) вычитается из первоначального вектора движения, разность виртуального вектора движения, которая меньше разности первоначального вектора движения, может не генерироваться. Таким образом, MVP3 не исключается из предсказателей-кандидатов вектора движения. Кроме того, согласно другому иллюстративному варианту осуществления, поскольку MVP3, согласно результату определения, подлежащий использованию для предсказания вектора движения текущего блока, не исключается из предсказателей вектора движения, блок 920 определения кандидата может пропустить определение, исключается ли MVP3, предсказатель-кандидат вектора движения, используемый для предсказания вектора движения текущего блока.[179] In addition, the
[180] Короче говоря, когда блок 920 определения кандидата определяет, исключается ли второй предсказатель-кандидат вектора движения, один из предсказателей-кандидатов вектора движения, второй предсказатель-кандидат вектора движения и разность первоначального вектора движения суммируются друг с другом для генерации виртуального вектора движения, и разности между виртуальным вектором движения и другими предсказателями кандидатами вектора движения вычисляются для всех кандидатов для генерации множества разностей виртуального вектора движения. Когда существует по меньшей мере одна разность виртуального вектора движения, которая меньше разности первоначального вектора движения, из множества разностей виртуального вектора движения, второй предсказатель-кандидат вектора движения не является предсказателем вектора движения текущего блока и исключается из предсказателей-кандидатов вектора движения.[180] In short, when the
[181] Кроме того, блок 920 определения кандидата повторяющимся образом осуществляет определение исключения для предсказателей-кандидатов вектора движения, что позволяет уменьшить количество предсказателей-кандидатов вектора движения, то есть элементов группы C. Согласно порядку размещения предсказателей-кандидатов вектора движения группы C, необходимость исключения определяется по порядку. Например, когда C={median(mv_a', mv_b', mv_c'), mv_a', mv_b', mv_c', mv_temporal}, определяется необходимость исключения median(mv_a', mv_b', mv_'), и по завершении определения, определяется необходимость исключения mv_a'. Затем определяется необходимость исключения mv_b'. Согласно порядку размещения группы C, определение исключения повторяется до mv_temporal.[181] In addition, the
[182] Когда определение осуществляется повторяющимся образом, сравнение между разностью виртуального вектора движения и разностью первоначального вектора движения для кандидатов, уже исключенных при определении, можно опустить, как описано в связи с исключением MVP2.[182] When the determination is carried out in a repeated manner, the comparison between the difference of the virtual motion vector and the difference of the initial motion vector for candidates already excluded in the determination can be omitted, as described in connection with the exception of MVP2.
[183] Кроме того, группу C можно переупорядочить согласно заранее определенному критерию, что будет описано ниже со ссылкой на фиг. 13A-13D. Когда группа C переупорядочена, определение исключения повторяется согласно переупорядоченному порядку.[183] In addition, group C can be reordered according to a predetermined criterion, which will be described below with reference to FIG. 13A-13D. When group C is reordered, the definition of the exception is repeated according to the reordered order.
[184] Сравнение между разностью виртуального вектора движения и разностью первоначального вектора движения, описанное в связи с фиг. 12, можно применять не только к одномерному вектору движения, но и к двухмерному вектору движения. Другими словами, абсолютная величина разности виртуального вектора движения, заданного x-координатами и y-координатами, сравнивается с абсолютной величиной разности первоначального вектора движения, и, таким образом, заранее определенный предсказатель вектора движения можно выборочно исключать из общего количества кандидатов.[184] The comparison between the difference of the virtual motion vector and the difference of the initial motion vector described in connection with FIG. 12, can be applied not only to the one-dimensional motion vector, but also to the two-dimensional motion vector. In other words, the absolute value of the difference of the virtual motion vector specified by x-coordinates and y-coordinates is compared with the absolute value of the difference of the initial motion vector, and thus, a predetermined motion vector predictor can be selectively excluded from the total number of candidates.
[185] Однако, абсолютная величина, используемая для сравнения разности виртуального вектора движения с разностью первоначального вектора движения, приведена только в качестве примера, и для сравнения разности виртуального вектора движения с разностью первоначального вектора движения можно использовать различные критерии. Когда оценочная функция, которая генерирует значение для разности виртуального вектора движения и значение для разности первоначального вектора движения на основании заранее определенного критерия, равна ‘A’, разность виртуального вектора движения можно сравнивать с разностью первоначального вектора движения согласно нижеследующему уравнению 1:[185] However, the absolute value used to compare the difference of the virtual motion vector with the difference of the initial motion vector is given only as an example, and various criteria can be used to compare the difference of the virtual motion vector with the difference of the initial motion vector. When the evaluation function that generates the value for the difference of the virtual motion vector and the value for the difference of the initial motion vector based on a predetermined criterion is ‘A’, the difference of the virtual motion vector can be compared with the difference of the initial motion vector according to the following equation 1:
[186] (уравнение 1)[186] (equation 1)
[187] A(mvx+MVD-mvy)<A(MVD)[187] A (mvx + MVD-mvy) <A (MVD)
[188] Блок 920 определения кандидата определяет, существует ли по меньшей мере один 'mvy' во всех кандидатах, для определения, исключается ли 'mvx', один из предсказателей-кандидатов вектора движения, из предсказателей-кандидатов вектора движения. В уравнении 1, 'MVD' обозначает разность первоначального вектора движения. Для определения необходимости исключения 'mvx', 'A(mvx+MVD-mvy)', которое является значением, полученным путем оценивания 'mvx+MVD-mvy', то есть разности виртуального вектора движения между 'mvx+MVD', виртуальным вектором движения на основании 'mvx', и 'mvy', другим предсказателем кандидатом вектора движения, вычисляется с использованием заранее определенной оценочной функции ‘A’, и значения, генерируемые в результате вычисления, сравниваются с 'A(MVD)', значением для разности первоначального вектора движения. Предсказатели-кандидаты вектора движения, отличные от 'mvx' из всех кандидатов, повторяющимся образом подставляются вместо 'mvy', и определяется, существует ли в общем количестве кандидатов по меньшей мере один 'mvy', который удовлетворяет уравнению 1.[188] The
[189] Как описано выше, разность виртуального вектора движения и разность первоначального вектора движения, оцененные согласно ‘A’, могут задаваться x-координатами и y-координатами. В этом случае, оценочная функция может задаваться суммой оценочного значения x-координат и оценочного значения y-координат, согласно нижеследующему уравнению 2:[189] As described above, the difference of the virtual motion vector and the difference of the initial motion vector estimated according to ‘A’ can be specified by x-coordinates and y-coordinates. In this case, the estimated function may be defined by the sum of the estimated x-coordinate value and the estimated y-coordinate value, according to the following equation 2:
[190] (уравнение 2)[190] (equation 2)
[191] A(p, q)=f(p)+f(q)[191] A (p, q) = f (p) + f (q)
[192] Когда разность виртуального вектора движения или разность первоначального вектора движения задается x-координатами ‘p’ и y-координатами ‘q’, каждое значение координаты вводится в заранее определенную функцию ‘f’, и оценочная функция ‘A’ задается суммой, полученной посредством подстановки.[192] When the difference of the virtual motion vector or the difference of the initial motion vector is specified by the x-coordinates 'p' and y-coordinates 'q', each coordinate value is entered into a predetermined function 'f', and the estimated function 'A' is given by the sum obtained through substitution.
[193] Согласно иллюстративному варианту осуществления, оценочная функция ‘A’ в уравнении 1 и уравнении 2, может быть оценочной функцией, которая оценивает результат, полученный путем статистического кодирования разности виртуального вектора движения, и результат, полученный путем статистического кодирования разности первоначального вектора движения. Блок 920 определения кандидата оценивает результат, полученный путем статистического кодирования разности виртуального вектора движения и разности первоначального вектора движения на основании оценочной функции ‘A’, и количество предсказателей-кандидатов вектора движения можно уменьшить на основании результата оценивания. Это подробно описано со ссылкой на нижеследующее уравнение 3:[193] According to an illustrative embodiment, the estimated function ‘A’ in
[194] (уравнение 3)[194] (equation 3)
[195] Length=1;[195] Length = 1;
[196] Temp=(val<=0) ? (-val<<1)+1: (val<<1);[196] Temp = (val <= 0)? (-val << 1) +1: (val << 1);
[197] while ( 1 != Temp) {[197] while (1! = Temp) {
[198] Temp>>=1;[198] Temp >> = 1;
[199] Length += 2;[199] Length + = 2;
[200] }[200]}
[201] f(val)=Length[201] f (val) = Length
[202] Функция ‘f’, которая оценивает результат, полученный путем статистического кодирования по отношению к значению x-координаты или значениям y-координаты, может задаваться согласно уравнению 3. Когда 'val', значение x-координаты или y-координаты, вводится в функцию ‘f’, которая оценивает кодирование переменной длины, результат (например, универсальное кодирование переменной длины), 'Length' вычисляется согласно уравнению 3.[202] The function 'f', which evaluates the result obtained by statistical coding with respect to the x-coordinate value or y-coordinate values, can be specified according to
[203] Уравнение 3 можно представить следующим образом:[203]
[204][204]
[205] Значение x-координаты или y-координаты может быть значением x-координаты или y-координаты разности виртуального вектора движения или разности первоначального вектора движения.[205] The x-coordinate or y-coordinate value may be the x-coordinate or y-coordinate value of the difference of the virtual motion vector or the difference of the initial motion vector.
[206] Согласно уравнению 3, когда 'val' является отрицательным числом или ‘0’, 'val' становится положительным числом и затем умножается на ‘2’ путем сдвига влево на 1 бит. И прибавляется ‘1’, что позволяет сохранить результат в 'Temp'. Когда 'val' является положительным числом, 'val' умножается на ‘2’ путем сдвига влево на 1 бит, что позволяет сохранить результат в 'Temp'.[206] According to
Затем циклы 'while' повторяются, пока 'Temp' не станет равной 1, и вычисляется 'Length'.Then the 'while' loops are repeated until the 'Temp' is equal to 1, and the 'Length' is computed.
[207] Например, когда разность виртуального вектора движения или разность первоначального вектора движения равна (2,0), A(2,0)=f(2)+f(0).[207] For example, when the difference of the virtual motion vector or the difference of the initial motion vector is (2.0), A (2.0) = f (2) + f (0).
[208] f(2) вычисляется следующим образом. Значение ‘2’ f(2) является положительным числом и, таким образом, сдвигается влево на 1 бит, вследствие чего 'Temp' устанавливается равным ‘4’. В первом цикле 'while' 'Temp' равна ‘4’, то есть не равна ‘1’, и, таким образом, '4' умножается на '1/2' путем сдвига вправо, вследствие чего 'Temp' устанавливается равным ‘2’. Поскольку начальное значение 'Length' задано равным ‘1’, 'Length' в первом цикле 'while' равна '3'.[208] f (2) is calculated as follows. ‘2’ f (2) is a positive number and thus shifts to the left by 1 bit, so that 'Temp' is set to ‘4’. In the first loop, 'while' 'Temp' is equal to '4', that is, not equal to '1', and thus, '4' is multiplied by '1/2' by shifting to the right, as a result of which 'Temp' is set to '2 '. Since the initial value of 'Length' is set to ‘1’, 'Length' in the first cycle of 'while' is equal to '3'.
[209] Во втором цикле 'while' 'Temp' равна ‘2’, то есть не равна ‘1’, и, таким образом '2' умножается на '1/2' путем сдвига вправо, вследствие чего 'Temp' устанавливается равным ‘1’. Поскольку текущее значение 'Length' равно 3, во втором цикле 'while' 'Length' равна '5'. Третий цикл 'while' не осуществляется, поскольку 'Temp' равна ‘1’, и f(2) равна '5'.[209] In the second loop, 'while' 'Temp' is equal to '2', that is, not equal to '1', and thus '2' is multiplied by '1/2' by shifting to the right, as a result of which 'Temp' is set equal to 'one'. Since the current value of 'Length' is 3, in the second loop, 'while' 'Length' is '5'. The third cycle of 'while' is not implemented, since 'Temp' is ‘1’, and f (2) is '5'.
[210] f(0) вычисляется следующим образом. Поскольку входное значение координаты f(0) равно ‘0’, '0' сдвигается влево на 1 бит, и прибавляется ‘1’, вследствие чего 'Temp' устанавливается равным ‘1’. Соответственно, циклы 'while' не осуществляются. f(0) равна ‘1’ согласно начальному значению 'Length'.[210] f (0) is calculated as follows. Since the input value of the coordinate f (0) is ‘0’, '0' is shifted left by 1 bit, and ‘1’ is added, so that 'Temp' is set to ‘1’. Accordingly, while loops are not implemented. f (0) is ‘1’ according to the initial value of 'Length'.
[211] Заранее определенная оценочная функция ‘f’, описанная в связи с уравнением 3, это функция для оценивания результата статистического кодирования с использованием кодирования переменной длины. Соответственно, блок 920 определения кандидата оценивает результат, полученный путем кодирования переменной длины разностей виртуального вектора движения с использованием оценочной функции ‘A’, для определения, исключается ли 'mvx' из предсказателей-кандидатов вектора движения. В результате оценивания, когда существует по меньшей мере одна разность виртуального вектора движения, согласно оценке, подлежащая кодированию на меньшую длину, чем разность первоначального вектора движения, 'mvx' исключается из всех предсказателей-кандидатов вектора движения.[211] The predefined evaluation function ‘f’ described in connection with
[212] Однако, специалисту в данной области техники очевидно, что результат статистического кодирования оценивается с использованием способов, отличных от результата кодирования переменной длины. Например, для оценивания и сравнения результата статистического кодирования разности виртуального вектора движения и результата статистического кодирования разности первоначального вектора движения, можно использовать другую оценочную функцию ‘h’. Здесь, ‘h’ может быть функцией, которая оценивает результат контекстно-адаптивного двоичного арифметического кодирования.[212] However, it is obvious to a person skilled in the art that the result of statistical coding is evaluated using methods other than the result of coding of variable length. For example, to evaluate and compare the result of statistical coding of the difference of the virtual motion vector and the result of statistical coding of the difference of the initial motion vector, you can use another evaluation function ‘h’. Here, ‘h’ may be a function that evaluates the result of context adaptive binary arithmetic coding.
[213] Кроме того, согласно другому иллюстративному варианту осуществления, для повышения точности результата оценивания на основании заранее определенной оценочной функции, результат, полученный путем оценивания информации индекса, также можно оценивать. Информация индекса используется для указания заранее определенного предсказателя-кандидата вектора движения из всех предсказателей-кандидатов вектора движения. Это подробно описано со ссылкой на уравнение 4:[213] Furthermore, according to another exemplary embodiment, to improve the accuracy of the evaluation result based on a predetermined evaluation function, the result obtained by evaluating the index information can also be evaluated. Index information is used to indicate a predetermined motion vector predictor candidate from all motion vector predictor candidates. This is described in detail with reference to equation 4:
[214] (уравнение 4)[214] (equation 4)
[215] A(mvx+MVD-mvy, mvyIdx)<A(MVD, mvxIdx)[215] A (mvx + MVD-mvy, mvyIdx) <A (MVD, mvxIdx)
[216] Блок 920 определения кандидата определяет, существует ли в общем количестве кандидатов по меньшей мере один 'mvy', который удовлетворяет уравнению 4, для определения, исключается ли 'mvx', один из предсказателей-кандидатов вектора движения, из предсказателей-кандидатов вектора движения. В уравнении 4, 'MVD' обозначает разность первоначального вектора движения, и mvxIdx и mvyIdx обозначают информацию индекса, используемую для указания ‘mvx’ и 'mvy', соответственно, из всех предсказателей-кандидатов вектора движения. Для определения необходимости исключения 'mvx', 'mvx+MVD-mvy', то есть разность виртуального вектора движения между 'mvx+MVD', виртуальным вектором движения на основании 'mvx', и 'mvy', другим предсказателем кандидатом вектора движения, и информация индекса для указания ‘mvy’ из всех кандидатов оценивается с использованием заранее определенной оценочной функции ‘A’. Кроме того, разность первоначального вектора движения и информация индекса для указания ‘mvx’ из общего количества кандидатов оценивается с использованием заранее определенной оценочной функции ‘A’. В результате оценивания определяется, существует ли по меньшей мере один 'mvy' в общем количестве кандидатов.[216] The
[217] Как описано выше, разность виртуального вектора движения и разность первоначального вектора движения оцененная согласно ‘A’ могут быть заданы x-координатами и y-координатами и могут задаваться согласно нижеследующему уравнению 5:[217] As described above, the difference of the virtual motion vector and the difference of the initial motion vector estimated according to ‘A’ can be given by x-coordinates and y-coordinates and can be set according to the following equation 5:
[218] (уравнение 5)[218] (equation 5)
[219] A(mvx+MVD-mvy, mvyIdx)=f(p1)+f(q1)+g(mvyIdx)[219] A (mvx + MVD-mvy, mvyIdx) = f (p1) + f (q1) + g (mvyIdx)
[220] A(MVD, mvxIdx)=f(p2)+f(q2)+g(mvxIdx)[220] A (MVD, mvxIdx) = f (p2) + f (q2) + g (mvxIdx)
[221] По сравнению с уравнением 2, A(mvx+MVD-mvy) в левой стороне уравнения 2 оценивает только разность виртуального вектора движения, тогда как A(mvx+MVD-mvy, mvyIdx) уравнения 5 оценивает разность виртуального вектора движения и информацию для указания 'mvy' из всех предсказателей-кандидатов вектора движения. Оценочная функция ‘A’ может быть функцией для оценивания результата статистического кодирования. Здесь, функция ‘f’ может быть функцией для оценивания результата статистического кодирования на основании значения x-координат или значения y-координат разности виртуального вектора движения, как описано в связи с уравнением 2, и функция ‘g’ может быть функцией для оценивания результата статистического кодирования 'mvxIdx'. Когда значение x-координат и значение y-координат 'mvx+MVD-mvy' равны 'p1' и 'q1', соответственно, A(mvx+MVD-mvy, mvxIdx) можно вычислять согласно уравнению 5.[221] Compared to
[222] A(MVD) в правой стороне уравнения 2 оценивает только разность первоначального вектора движения, тогда как A(MVD, mvxIdx) уравнения 5 оценивает разность первоначального вектора движения и информацию для указания 'mvx' из всех предсказателей-кандидатов вектора движения. Функция ‘f’ может быть функцией для оценивания результата статистического кодирования на основании значения x-координат или значения y-координат разности первоначального вектора движения, как описано в связи с уравнением 2, и функция ‘g’ может быть функцией для оценивания результата статистического кодирования 'mvxIdx'. Когда значение x-координат и значение y-координат 'MVD' равны 'p2' и 'q2', соответственно, A(MVD, mvxIdx) можно вычислять согласно уравнению 5.[222] A (MVD) on the right side of
[223] Определение исключения согласно уравнениям 4 и 5 можно дополнительно использовать при определении исключения согласно уравнению 2. Другими словами, исключается ли 'mvx' из всех предсказателей-кандидатов вектора движения, сначала определяется на основании уравнений 2, и исключение можно снова определять согласно уравнениям 4 и 5. Например, в результате определения согласно уравнению 2, когда ‘A(mvx+MVD-mvy)’ больше или равна ‘A(MVD)’, и ‘A(mvx+MVD-mvy)’ не меньше ‘A(MVD)’, ‘mvx’ не исключается из всех предсказателей-кандидатов вектора движения согласно уравнению 2. Однако, хотя ‘A(mvx+MVD-mvy)’ и ‘A(MVD)’ одинаковы, ‘mvx’ можно исключить из всех предсказателей-кандидатов вектора движения на основании результата определения согласно уравнениям 4 и 5.[223] The definition of an exception according to
[224] Когда блок 920 определения кандидата определяет исключение для предсказателей-кандидатов вектора движения на основании уравнений 1-5, определение исключения для предсказателей-кандидатов вектора движения повторяющимся образом осуществляется согласно порядку размещения группы C. Согласно другому иллюстративному варианту осуществления, блок 920 определения кандидата переупорядочивает группу C согласно заранее определенному критерию, и определение исключения может повторяться согласно переупорядоченному порядку. Это подробно описано со ссылкой на фиг. 13A-13D.[224] When the
[225] Фиг. 13A-13D иллюстрируют местоположение текущего блока, включенного в единицу кодирования заранее определенного размера, согласно иллюстративному варианту осуществления.[225] FIG. 13A-13D illustrate the location of a current block included in a coding unit of a predetermined size, according to an illustrative embodiment.
[226] Когда все предсказатели-кандидаты вектора движения образуют C={median(mv_a', mv_b', mv_c'), mv_a', mv_b', mv_c', mv_temporal}, каждое из двоичных чисел присваивается предсказателям кандидатам вектора движения группы C, и, таким образом, можно указывать предсказатель-кандидат вектора движения, используемый для предсказания вектора движения текущего блока, из предсказателей-кандидатов вектора движения, как описано выше.[226] When all the motion vector predictor candidates form C = {median (mv_a ', mv_b', mv_c '), mv_a', mv_b ', mv_c', mv_temporal}, each of the binary numbers is assigned to the predictors as candidates for the motion vector of group C, and thus, the motion vector predictor candidate used to predict the motion vector of the current block from the motion vector predictor candidates can be indicated, as described above.
[227] Здесь, двоичные числа присваиваются согласно порядку размещения предсказателей-кандидатов вектора движения, включенных в группу C, и могут представлять собой код переменной длины на основе кода Хаффмана. Соответственно, малое число битов могут присваиваться предсказателям кандидатам вектора движения, расположенным спереди в порядке размещения группы C. Например, бит '0' может присваиваться 'median(mv_a', mv_b', mv_c')', бит '00' может присваиваться mv_a', и бит '01' может присваиваться mv_b'. Соответственно, блок 920 определения кандидата организует предсказатели-кандидаты вектора движения согласно заранее определенному порядку, благодаря чему, предсказатель вектора движения, с высокой вероятностью используемый в предсказании вектора движения текущего блока из предсказателей-кандидатов вектора движения, располагается спереди в группе C.[227] Here, binary numbers are assigned according to the order of placement of motion vector predictor candidates included in group C, and may be a variable-length code based on a Huffman code. Accordingly, a small number of bits can be assigned to motion vector predictor candidates located in front in the order of group C. For example, bit '0' can be assigned to 'median (mv_a', mv_b ', mv_c') ', bit' 00 'can be assigned to mv_a' , and bit '01' may be assigned to mv_b '. Accordingly, the
[228] Предсказатель вектора движения, с высокой вероятностью используемый в предсказании вектора движения текущего блока, можно определять согласно местоположению текущего блока в единице кодирования. Местоположение текущего блока можно выразить с использованием индекса разбиения текущего блока. Индексы разбиения присваиваются блокам в единице кодирования согласно заранее определенному порядку. Таким образом, предсказатель вектора движения, с высокой вероятностью используемый в предсказании вектора движения текущего блока, можно определять согласно индексу разбиения текущего блока. Согласно фиг. 13A, когда текущий блок располагается на нижней стороне единицы кодирования, вектор движения текущего блока может быть идентичен или аналогичен вектору движения блока, соседствующему с левой стороной единицы кодирования, или вектору движения блока, соседствующему с нижней левой стороной единицы кодирования. Соответственно, порядок размещения можно, при необходимости, изменить так, чтобы предсказатель-кандидат вектора движения, который соответствует вектору движения блока, соседствующего с левой стороной, или вектору движения блока, соседствующего с нижней левой стороной, располагался спереди в группе C. Поскольку mv_b' из предсказателей-кандидатов вектора движения в группе C является предсказателем кандидатом вектора движения, который соответствует вектору движения блока, соседствующего с левой стороной, порядок mv_b' и median(mv_a', mv_b', mv_c') изменяется в группе C, что позволяет переупорядочить группу C в виде C={mv_b', mv_a', median(mv_a', mv_b', mv_c'), mv_c', mv_temporal}.[228] The motion vector predictor used with high probability in predicting the motion vector of the current block can be determined according to the location of the current block in the coding unit. The location of the current block can be expressed using the partition index of the current block. Split indices are assigned to blocks in a coding unit according to a predetermined order. Thus, the motion vector predictor, with a high probability used in predicting the motion vector of the current block, can be determined according to the partition index of the current block. According to FIG. 13A, when the current block is located on the lower side of the coding unit, the motion vector of the current block may be identical or similar to the block motion vector adjacent to the left side of the coding unit, or the block motion vector adjacent to the lower left side of the coding unit. Accordingly, the placement order can, if necessary, be changed so that the candidate predictor of the motion vector, which corresponds to the motion vector of the block adjacent to the left side, or to the motion vector of the block adjacent to the lower left side, is located in front in group C. Since mv_b ' Of the predictor candidates of the motion vector in group C, the predictor is the candidate motion vector, which corresponds to the motion vector of the block adjacent to the left side, the order of mv_b 'and median (mv_a', mv_b ', mv_c') group C, which allows us to reorder group C in the form C = {mv_b ', mv_a', median (mv_a ', mv_b', mv_c '), mv_c', mv_temporal}.
[229] Аналогично, когда текущий блок располагается на левой стороне единицы кодирования, как показано на фиг. 13B, предсказатель-кандидат вектора движения, который соответствует вектору движения блока, соседствующему с левой стороной единицы кодирования, и вектору движения блока, соседствующему с верхней стороной единицы кодирования, можно использовать для предсказания вектора движения текущего блока. Поскольку mv_b' из предсказателей-кандидатов вектора движения в группе C является предсказателем кандидатом вектора движения, который соответствует вектору движения блока, соседствующего с левой стороной, порядок mv_b' и median(mv_a', mv_b', mv_c') изменяется в группе C, что позволяет переупорядочить группу C в виде C={mv_b', mv_a', median(mv_a', mv_b', mv_c'), mv_c', mv_temporal}.[229] Similarly, when the current block is located on the left side of the coding unit, as shown in FIG. 13B, a motion vector predictor candidate that corresponds to a block motion vector adjacent to the left side of the coding unit and a block motion vector adjacent to the upper side of the coding unit can be used to predict the motion vector of the current block. Since mv_b 'from the motion vector predictor candidates in group C is the predictor of the motion vector candidate that corresponds to the motion vector of the block adjacent to the left side, the order of mv_b' and median (mv_a ', mv_b', mv_c ') changes in group C, which allows reordering the group C in the form C = {mv_b ', mv_a', median (mv_a ', mv_b', mv_c '), mv_c', mv_temporal}.
[230] Согласно фиг. 13C, когда текущий блок располагается на верхней стороне единицы кодирования, предсказатель-кандидат вектора движения, который соответствует вектору движения блока, соседствующему с левой стороной единицы кодирования и вектору движения блока, соседствующему с верхней стороной единицы кодирования, можно использовать в качестве предсказателя вектора движения текущего блока. Поскольку mv_a' из предсказателей-кандидатов вектора движения в группе C является предсказателем кандидатом вектора движения, который соответствует вектору движения блока, соседствующего с верхней стороной, порядок mv_a' и median(mv_a', mv_b', mv_c') изменяется в группе C, что позволяет переупорядочить группу C в виде C={mv_a', median(mv_a', mv_b', mv_c'), mv_b', mv_c', mv_temporal}.[230] Referring to FIG. 13C, when the current block is located on the upper side of the coding unit, a motion vector predictor candidate that corresponds to a block motion vector adjacent to the left side of the coding unit and a block motion vector adjacent to the upper side of the coding unit can be used as a predictor of the current motion vector block. Since mv_a 'of the motion vector predictor candidates in group C is the predictor of the motion vector candidate that corresponds to the motion vector of the block adjacent to the upper side, the order of mv_a' and median (mv_a ', mv_b', mv_c ') changes in group C, which allows reordering the group C in the form C = {mv_a ', median (mv_a', mv_b ', mv_c'), mv_b ', mv_c', mv_temporal}.
[231] Согласно фиг. 13D, когда текущий блок располагается на правой стороне единицы кодирования, предсказатель-кандидат вектора движения, который соответствует вектору движения блока, соседствующему с верхней стороной единицы кодирования, можно использовать для предсказания вектора движения текущего блока. Поскольку mv_c' из предсказателей-кандидатов вектора движения в группе C является предсказателем кандидатом вектора движения, который соответствует вектору движения блока, соседствующему с верхней правой стороной, порядок mv_c' и median(mv_a', mv_b', mv_c') изменяется в группе C, что позволяет переупорядочивать группу C в виде C={mv_c', mv_a', mv_b', median(mv_a', mv_b', mv_c'), mv_temporal}.[231] Referring to FIG. 13D, when the current block is located on the right side of the coding unit, the motion vector predictor candidate that corresponds to the block motion vector adjacent to the upper side of the coding unit can be used to predict the motion vector of the current block. Since mv_c 'of the motion vector predictor candidates in group C is the motion vector predictor candidate that corresponds to the block motion vector adjacent to the upper right side, the order of mv_c' and median (mv_a ', mv_b', mv_c ') changes in group C, which allows reordering the group C in the form C = {mv_c ', mv_a', mv_b ', median (mv_a', mv_b ', mv_c'), mv_temporal}.
[232] Местоположение текущего блока в единице кодирования в качестве критерия, используемого для переупорядочивания предсказателей-кандидатов вектора движения, приведено в порядке примера. Другими словами, для переупорядочивания предсказателей-кандидатов вектора движения можно использовать различные критерии. Различные критерии, используемые для размещения предсказателя-кандидата вектора движения, который с высокой вероятностью аналогичен вектору движения текущего блока, спереди в группе C, можно использовать в качестве критериев для переупорядочивания предсказателей-кандидатов вектора движения. Предсказатель-кандидат вектора движения, который с высокой вероятностью аналогичен вектору движения текущего блока, определяется на основании заранее определенной информации, относящейся к другим блокам, закодированным до текущего блока, и группу C можно переупорядочить согласно определению.[232] The location of the current block in the coding unit as a criterion used to reorder the motion vector predictors is shown as an example. In other words, various criteria can be used to reorder the motion vector predictors. Various criteria used to place a motion vector predictor candidate, which is very likely to be similar to the motion vector of the current block, in front of group C, can be used as criteria for reordering motion vector predictor candidates. A motion vector predictor candidate, which is very likely similar to the motion vector of the current block, is determined based on predetermined information relating to other blocks encoded before the current block, and group C can be reordered according to the definition.
[233] Кроме того, предсказатель-кандидат вектора движения, который с высокой вероятностью аналогичен вектору движения текущего блока, определяется на основании другой информации, кодированной или декодированной по отношению к текущему блоку, до кодирования вектора движения текущего блока, и группу C можно переупорядочить согласно определению.[233] Furthermore, the motion vector predictor candidate, which is highly likely to be similar to the motion vector of the current block, is determined based on other information encoded or decoded with respect to the current block, before encoding the motion vector of the current block, and group C can be reordered according to definition.
[234] Кроме того, группу C можно переупорядочить путем исключения перекрывающихся предсказателей-кандидатов вектора движения. При наличии перекрывающихся предсказателей-кандидатов вектора движения во всех предсказателях кандидатах вектора движения, перекрывающиеся предсказатели-кандидаты вектора движения исключаются в первую очередь, и необходимость исключения предсказателей-кандидатов вектора движения можно определять согласно уравнениям 1-5.[234] In addition, group C can be reordered by eliminating overlapping motion vector predictor candidates. If there are overlapping motion vector predictor candidates in all motion vector predictor candidates, overlapping motion vector predictor candidates are eliminated first, and the need to exclude motion vector predictor candidates can be determined according to equations 1-5.
[235] Возвращаясь к фиг. 9, кодер 930 вектора движения кодирует информацию о векторе движения и информацию о предсказателе вектора движения. Информация о векторе движения является разностью первоначального вектора движения между первоначальным вектором движения текущего блока и первоначальным предсказателем вектора движения. Информация о предсказателе вектора движения это информация для указания предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока среди предсказателей-кандидатов вектора движения, из которых исключен по меньшей мере один предсказатель вектора движения. Другими словами, информация для указания предсказателя вектора движения текущего блока среди предсказателей-кандидатов вектора движения, которые не исключаются на блоке 920 определения кандидата, кодируется как информация о предсказателе вектора движения.[235] Returning to FIG. 9, the
[236] Разность первоначального вектора движения принимается от блока 910 оценки вектора движения и кодируется согласно заранее определенному способу статистического кодирования. Кроме того, кодируется информация для указания предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока из предсказателей-кандидатов вектора движения, определенных путем выборочного исключения по меньшей мере одного предсказателя-кандидата вектора движения на блоке 920 определения кандидата.[236] The difference of the initial motion vector is received from the
[237] Когда блок 920 определения кандидата определяет предсказатели-кандидаты вектора движения путем исключения по меньшей мере одного предсказателя-кандидата вектора движения из всех предсказателей-кандидатов вектора движения согласно уравнениям 1-5, кодируется информация для указания предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока из определенных предсказателей-кандидатов вектора движения. Кодер 930 вектора движения может индексировать каждый из предсказателей-кандидатов вектора движения, которые не исключаются на блоке 920 определения кандидата, и статистически кодирует информацию индекса как информацию о предсказателе вектора движения. Индексирование означает присвоение заранее определенных двоичных чисел каждому из предсказателей-кандидатов вектора движения, и информация о предсказателе вектора движения означает двоичное число, присваиваемое предсказателю кандидату вектора движения, используемому для предсказания вектора движения текущего блока. Когда один предсказатель-кандидат вектора движения остается после того, как блок 920 определения кандидата выборочно исключает по меньшей мере один предсказатель-кандидат вектора движения, информация о предсказателе вектора движения может не кодироваться отдельно на кодере 930 вектора движения, поскольку предсказатель-кандидат вектора движения, подлежащий использованию для предсказания вектора движения текущего блока, неявно определяется.[237] When the
[238] Кроме того, как описано в связи с фиг. 13A-13D, блок 920 определения кандидата может индексировать каждый из предсказателей-кандидатов вектора движения, генерируемый путем переупорядочивания всех предсказателей-кандидатов вектора движения согласно заранее определенному критерию и путем выборочного исключения по меньшей мере одного предсказателя вектора движения из всех переупорядоченных предсказателей-кандидатов вектора движения, и может статистически кодировать информацию индекса.[238] Furthermore, as described in connection with FIG. 13A-13D, the
[239] В результате переупорядочивания, осуществляемого блоком 920 определения кандидата, двоичные числа с наименьшим количеством битов могут присваиваться предсказателю кандидату вектора движения, с высокой вероятностью используемому для предсказания вектора движения текущего блока, и, таким образом, информацию о предсказателе вектора движения можно кодировать с высоким коэффициентом сжатия.[239] As a result of the reordering carried out by the
[240] На фиг. 14 показана блок-схема устройства 1400 для декодирования вектора движения, согласно иллюстративному варианту осуществления.[240] In FIG. 14 is a block diagram of an
[241] Устройство 1400 для декодирования вектора движения, показанное на фиг. 14, включено в устройство 200 для декодирования изображения, показанное на фиг. 2, или декодер 500 изображения, показанный на фиг. 5. Согласно фиг. 14, устройство 1400 для декодирования вектора движения включает в себя декодер 1410 вектора движения, блок 1420 определения кандидата и блок 1430 восстановления вектора движения.[241] The
[242] Устройство 1400 для декодирования вектора движения декодирует вектор движения текущего блока, когда вектор движения текущего блока кодируется согласно явному режиму из вышеописанных явного режима и неявного режима.[242] A
[243] Декодер 1410 вектора движения принимает битовый поток для вектора движения текущего блока и декодирует принятый битовый поток. Информация о векторе движения, включенная в битовый поток, декодируется. Декодируется разность первоначального вектора движения текущего блока. Разность первоначального вектора движения можно декодировать согласно заранее определенному способу статистического декодирования. Разность первоначального вектора движения это векторная разность между вектором движения текущего блока и предсказателем кандидатом вектора движения, используемым для предсказания вектора движения текущего блока. Согласно способу декодирования вектора движения согласно иллюстративному варианту осуществления по меньшей мере один предсказатель-кандидат вектора движения исключается из всех предсказателей-кандидатов вектора движения согласно уравнениям 1-5, и определяются предсказатели-кандидаты вектора движения. Предсказатели-кандидаты вектора движения не являются фиксированными и декодируются поблочно, благодаря чему, предсказатели-кандидаты вектора движения могут непрерывно изменяться. Соответственно, хотя информация о предсказателях кандидатах вектора движения одинакова, если предсказатели-кандидаты вектора движения не определены, предсказатель-кандидат вектора движения, используемый для предсказания вектора движения текущего блока, может восстанавливаться неточно.[243] The
[244] Таким образом, блок 1420 определения кандидата определяет предсказатели-кандидаты вектора движения до определения предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока. По меньшей мере, один предсказатель-кандидат вектора движения из всех векторов кандидатов движения выборочно исключается согласно уравнениям 1 - 5, и определяются предсказатели-кандидаты вектора движения. Предсказатель-кандидат вектора движения, который не используется для предсказания вектора движения текущего блока, из всех кандидатов, определенных на основании векторов движения блоков, включенных в ранее закодированную область, соседствующую с текущим блоком, исключается на основании заранее определенной оценочной функции.[244] Thus, the
[245] Виртуальный вектор движения генерируется на основании заранее определенного вектора движения и из всех предсказателей-кандидатов вектора движения и информации о предсказателе вектора движения, декодированной на декодере вектора движения, и разности виртуального вектора движения, которые являются разностями между сгенерированным виртуальным вектором движения и другим предсказателем кандидатом вектора движения, вычисляются для всех кандидатов. Вычисленные разности виртуального вектора движения сравниваются с информацией о векторе движения, декодированной на декодере 1410 вектора движения, которая является информацией о разности первоначального вектора движения, и заранее определенный предсказатель-кандидат вектора движения выборочно исключается. Результат, полученный путем статистического кодирования разностей виртуального вектора движения, сравнивается с результатом, полученным путем статистического кодирования разности первоначального вектора движения, что позволяет определить необходимость исключения заранее определенного предсказателя-кандидата вектора движения. Кроме того, для повышения точности оценки результата статистического кодирования, результат, полученный путем статистического кодирования информация индекса, также оценивается и используется при определении исключения. Способ исключения предсказателей-кандидатов вектора движения описан в связи с уравнениями 1-5.[245] A virtual motion vector is generated based on a predetermined motion vector and from all motion vector predictors and information about the motion vector predictor decoded at the motion vector decoder and the difference of the virtual motion vector, which are the differences between the generated virtual motion vector and another motion vector predictor predictors are calculated for all candidates. The calculated differences of the virtual motion vector are compared with the information about the motion vector decoded on the
[246] Кроме того, согласно другому иллюстративному варианту осуществления, блок 1420 определения кандидата переупорядочивает все предсказатели-кандидаты вектора движения согласно заранее определенному критерию, повторяющимся образом осуществляет определение исключения для всех переупорядоченных предсказателей-кандидатов вектора движения согласно уравнениям 1-5, и может выборочно исключать по меньшей мере один предсказатель-кандидат вектора движения. Перекрывающиеся предсказатели-кандидаты вектора движения можно исключить из всех переупорядоченных предсказателей-кандидатов вектора движения, и определение исключения можно повторяющимся образом осуществлять согласно уравнениям 1-5.[246] In addition, according to another exemplary embodiment, the
[247] Когда множество предсказателей-кандидатов вектора движения из всех предсказателей-кандидатов вектора движения остается после того, как блок 1420 определения кандидата исключает по меньшей мере один предсказатель-кандидат вектора движения из всех предсказателей-кандидатов вектора движения, декодер 1410 вектора движения декодирует информацию о предсказателе вектора движения. Информация о предсказателе вектора движения декодируется согласно заранее определенному способу статистического декодирования. Информация о предсказателе вектора движения это информация для указания предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока из предсказателей-кандидатов вектора движения, из которых исключен по меньшей мере один предсказатель-кандидат вектора движения. Информация для указания предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока из предсказателей-кандидатов вектора движения, которые не исключаются на блоке 1420 определения кандидата, декодируется.[247] When a plurality of motion vector predictor candidates from all motion vector predictor candidates remains after the
[248] Когда один предсказатель-кандидат вектора движения остается после того, как блок 1420 определения кандидата исключает по меньшей мере один предсказатель-кандидат вектора движения из всех предсказателей-кандидатов вектора движения, оставшийся предсказатель-кандидат вектора движения используется для предсказания вектора движения текущего блока, и, таким образом, декодер 1410 вектора движения может не выборочно декодировать информацию о предсказателе кандидате вектора движения.[248] When one motion vector predictor candidate remains after the
[249] Блок 1430 восстановления вектора движения восстанавливает вектор движения текущего блока на основании информации о векторе движения, декодированной на декодере 1410 вектора движения. Разность первоначального вектора движения, декодированная на декодере 1410 вектора движения, и предсказатель-кандидат вектора движения, используемый для предсказания вектора движения текущего блока, суммируются друг с другом для восстановления вектора движения текущего блока. Предсказатель-кандидат вектора движения, подлежащий использованию в предсказании вектора движения текущего блока, определяется из предсказателей-кандидатов вектора движения, определенных на блоке 1420 определения кандидата, и определенный предсказатель-кандидат вектора движения прибавляется к разности первоначального вектора движения. Когда в результате исключения на блоке 1420 определения кандидата остается не один предсказатель-кандидат вектора движения, а множество предсказателей-кандидатов вектора движения, предсказатели-кандидаты вектора движения, используемые для предсказания вектора движения текущего блока, можно определять на основании информации о предсказателе вектора движения, декодированной на декодере 1410 вектора движения.[249] The motion
[250] Поскольку предсказатели-кандидаты вектора движения определяются блоком 1420 определения кандидата, даже если декодированная информация о предсказателе вектора движения одинакова, предсказатели-кандидаты вектора движения, используемые для предсказания вектора движения текущего блока, могут представлять собой векторы движения соседних блоков в разных положениях.[250] Since motion vector predictor candidates are determined by
[251] На фиг. 15 показана логическая блок-схема, иллюстрирующая способ кодирования вектора движения, согласно иллюстративному варианту осуществления.[251] In FIG. 15 is a flowchart illustrating a method for encoding a motion vector according to an illustrative embodiment.
[252] Согласно фиг. 15, в операции 1510, устройство для кодирования вектора движения оценивает вектор движения текущего блока и определяет предсказатель-кандидат вектора движения, используемый для предсказания вектора движения текущего блока, из всех предсказателей-кандидатов вектора движения. Поиск блока, идентичного или аналогичного текущему блоку осуществляется на множестве эталонных изображений и, в результате поиска, оценивается вектор движения, который представляет собой относительную разность местоположений между текущим блоком и эталонным блоком.[252] Referring to FIG. 15, in
[253] Затем вектор движения текущего блока предсказывается на основании векторов движения блоков, включенных в ранее закодированную область, соседствующую с текущим блоком. Другими словами, векторы движения блоков, включенных в ранее закодированную область, соседствующую с текущим блоком, задаются как предсказатели-кандидаты вектора движения, и определяется предсказатель-кандидат вектора движения, который наиболее аналогичен вектору движения оцененного текущего блока из предсказателей-кандидатов вектора движения. Генерируется векторная разность между вектором движения текущего блока и определенным предсказателем кандидатом вектора движения, который является разностью первоначального вектора движения.[253] Then, the motion vector of the current block is predicted based on the motion vectors of the blocks included in a previously encoded region adjacent to the current block. In other words, the motion vectors of blocks included in a previously encoded region adjacent to the current block are set as motion vector predictors, and a motion vector predictor is determined that is most similar to the motion vector of the estimated current block from motion vector predictor candidates. A vector difference is generated between the motion vector of the current block and the motion vector candidate determined by the predictor, which is the difference of the initial motion vector.
[254] В операции 1520, устройство для кодирования изображения выборочно исключает по меньшей мере один предсказатель-кандидат вектора движения из всех предсказателей-кандидатов вектора движения. Предсказатель-кандидат вектора движения, который не используется для предсказания вектора движения текущего блока исключается из всех предсказателей-кандидатов вектора движения.[254] In
[255] Устройство для кодирования изображения генерирует виртуальный вектор движения с использованием заранее определенного предсказателя-кандидата вектора движения из всех предсказателей-кандидатов вектора движения и разности первоначального вектора движения, сгенерированной в операции 1510. Сгенерированный виртуальный вектор движения и другой предсказатель-кандидат вектора движения используются для генерации разности виртуального вектора движения. Генерируются разности виртуального вектора движения для каждого из всех предсказателей-кандидатов вектора движения, и сгенерированные разности виртуального вектора движения сравниваются с разностью первоначального вектора движения, что позволяет выборочно исключить заранее определенный предсказатель-кандидат вектора движения.[255] An image encoding apparatus generates a virtual motion vector using a predetermined motion vector predictor candidate from all motion vector predictor candidates and the difference of the initial motion vector generated in
[256] Процесс генерации виртуального вектора движения и выборочного исключения предсказателя-кандидата вектора движения в операции 1520 повторяющимся образом осуществляется для всех кандидатов, и, таким образом по меньшей мере один предсказатель-кандидат вектора движения можно исключить из всех кандидатов. При осуществлении процесса исключения повторяющимся образом, вычисляются разности виртуального вектора движения для предсказателей-кандидатов вектора движения, отличных от предсказателей вектора движения, которые уже исключены, и вычисленные разности виртуального вектора движения можно сравнивать с разностью первоначального вектора движения.[256] The process of generating a virtual motion vector and selectively excluding a motion vector predictor candidate in
[257] Разность виртуального вектора движения и разность первоначального вектора движения можно оценивать и сравнивать друг с другом на основании заранее определенной оценочной функции, причем заранее определенная оценочная функция может быть функцией, которая оценивает результат статистического кодирования. Разность виртуального вектора движения и разность первоначального вектора движения можно сравнивать друг с другом на основании функции, которая оценивает результат, полученный путем статистического кодирования разности виртуального вектора движения, и результат, полученный путем статистического кодирования разности первоначального вектора движения. Кроме того, для повышения точности оценивания, результат, полученный путем кодирования информация индекса, также можно оценивать и использовать при определении исключения. Способ исключения по меньшей мере одного предсказателя-кандидата вектора движения из всех предсказателей-кандидатов вектора движения описан в связи с уравнениями 1-5.[257] The difference of the virtual motion vector and the difference of the initial motion vector can be estimated and compared with each other based on a predetermined evaluation function, the predetermined evaluation function may be a function that estimates the result of statistical coding. The difference of the virtual motion vector and the difference of the initial motion vector can be compared with each other based on a function that evaluates the result obtained by statistical coding of the difference of the virtual motion vector and the result obtained by statistical coding of the difference of the initial motion vector. In addition, to improve the accuracy of the estimation, the result obtained by encoding the index information can also be evaluated and used in determining the exception. A method for eliminating at least one motion vector predictor candidate from all motion vector predictor candidates is described in connection with Equations 1-5.
[258] Кроме того, как описано в связи с фиг. 13A-13D, устройство для кодирования вектора движения может переупорядочивать все предсказатели-кандидаты вектора движения согласно заранее определенному критерию и выборочно исключать по меньшей мере один предсказатель-кандидат вектора движения из всех переупорядоченных предсказателей-кандидатов вектора движения. Кроме того, устройство для кодирования вектора движения может исключать перекрывающиеся предсказатели-кандидаты вектора движения из всех переупорядоченных предсказателей-кандидатов вектора движения и повторяющимся образом осуществлять определение исключения согласно уравнениям 1-5.[258] Furthermore, as described in connection with FIG. 13A-13D, a motion vector encoding apparatus may reorder all motion vector predictor candidates according to a predetermined criterion and selectively exclude at least one motion vector predictor candidate from all reordered motion vector predictors. In addition, the apparatus for encoding the motion vector can exclude overlapping motion vector predictors from all the reordered motion vector predictors, and repeat the determination of the exception according to Equations 1-5.
[259] В операции 1530, устройство для кодирования вектора движения кодирует информацию о векторе движения и информацию о предсказателе вектора движения. Информация о разности первоначального вектора движения и информация для указания предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока, кодируются. Информация о предсказателе вектора движения может представлять собой информацию для указания предсказателя-кандидата вектора движения, используемого для предсказания вектора движения текущего блока, из предсказателей-кандидатов вектора движения, которые не исключаются в операциях 1520 и 1530.[259] In
[260] Когда один предсказатель-кандидат вектора движения остается после исключения по меньшей мере одного предсказателя-кандидата вектора движения из всех предсказателей-кандидатов вектора движения, информация о предсказателе вектора движения, может не кодироваться.[260] When one motion vector predictor candidate remains after excluding at least one motion vector predictor candidate from all motion vector predictor candidates, the motion vector predictor information may not be encoded.
[261] Фиг. 16 это логическая блок-схема, иллюстрирующая способ декодирования вектора движения, согласно иллюстративному варианту осуществления.[261] FIG. 16 is a flowchart illustrating a method of decoding a motion vector according to an illustrative embodiment.
[262] Согласно фиг. 16, устройство для декодирования вектора движения декодирует информацию о векторе движения текущего блока из принятого битового потока, в операции 1610. Информация о векторе движения может представлять собой разность первоначального вектора движения между вектором движения текущего блока и предсказателем вектора движения текущего блока.[262] Referring to FIG. 16, a device for decoding a motion vector decodes information about a motion vector of a current block from a received bitstream in
[263] В операции 1620, устройство для декодирования вектора движения генерирует виртуальный вектор движения на основании информации о векторе движения, декодированной в операции 1610, и одного предсказателя-кандидата вектора движения из предсказателей-кандидатов вектора движения.[263] In
[264] При генерации виртуального вектора движения, устройство для декодирования вектора движения исключает по меньшей мере один предсказатель-кандидат вектора движения из всех предсказателей-кандидатов вектора движения. Все предсказатели-кандидаты вектора движения определяются на основании векторов движения блоков, включенных в ранее декодированную область, соседствующую с текущим блоком. Устройство для декодирования вектора движения может выборочно исключать по меньшей мере один предсказатель-кандидат вектора движения из всех предсказателей-кандидатов вектора движения. Разность виртуального вектора движения и разность первоначального вектора движения, декодированные в операции 1610, оцениваются на основании заранее определенной оценочной функции для выборочного исключения заранее определенного предсказателя-кандидата вектора движения. Способ исключения предсказателя-кандидата вектора движения из всех кандидатов такой же, как в операции 1530 и описан выше со ссылкой на уравнения 1-5.[264] When generating a virtual motion vector, a device for decoding a motion vector excludes at least one motion vector predictor candidate from all motion vector predictor candidates. All motion vector predictor candidates are determined based on the motion vectors of the blocks included in a previously decoded area adjacent to the current block. A device for decoding a motion vector may selectively exclude at least one motion vector predictor candidate from all motion vector predictor candidates. The difference of the virtual motion vector and the difference of the initial motion vector decoded in
[265] Процесс генерации виртуального вектора движения и выборочного исключения предсказателя-кандидата вектора движения в операции 1620 повторяющимся образом осуществляется для всех кандидатов, и, таким образом по меньшей мере один предсказатель-кандидат вектора движения можно исключить из всех кандидатов.[265] The process of generating a virtual motion vector and selectively excluding a motion vector predictor candidate in
[266] Кроме того, как описано в связи с фиг. 13A-13D, устройство для декодирования вектора движения может переупорядочивать все предсказатели-кандидаты вектора движения согласно заранее определенному критерию и выборочно исключать по меньшей мере один предсказатель-кандидат вектора движения из всех переупорядоченных предсказателей-кандидатов вектора движения. Кроме того, устройство для декодирования вектора движения может исключать перекрывающиеся предсказатели-кандидаты вектора движения из всех переупорядоченных предсказателей-кандидатов вектора движения и повторяющимся образом осуществлять определение исключения согласно уравнениям 1-5.[266] Furthermore, as described in connection with FIG. 13A-13D, a motion vector decoding apparatus may reorder all motion vector predictor candidates according to a predetermined criterion and selectively exclude at least one motion vector predictor candidate from all reordered motion vector predictors. In addition, the motion vector decoding apparatus can exclude overlapping motion vector predictors from all the reordered motion vector predictors, and repeat the determination of the exception according to Equations 1-5.
[267] Когда в результате исключения остается множество предсказателей-кандидатов вектора движения, информация о предсказателе вектора движения декодируется, и когда остается один предсказатель-кандидат вектора движения, информация о предсказателе вектора движения не декодируется.[267] When a plurality of motion vector predictor candidates remain as a result of the exception, the motion vector predictor information is decoded, and when there is only one motion vector predictor candidate, the motion vector predictor information is not decoded.
[268] В операции 1630, устройство для декодирования вектора движения определяет предсказатель вектора движения, используемый для предсказания вектора движения текущего блока, из предсказателей-кандидатов вектора движения, которые не исключаются в операции 1620.[268] In
[269] Предсказатель-кандидат вектора движения, используемый для предсказания вектора движения текущего блока, из предсказателей-кандидатов вектора движения, можно определять на основании информации о предсказателе вектора движения текущего блока. Когда в результате исключения в операции 1620 остается один предсказатель-кандидат вектора движения, один оставшийся предсказатель-кандидат вектора движения определяется в качестве предсказателя вектора движения используемый для предсказания вектора движения текущего блока.[269] The motion vector predictor candidate used to predict the motion vector of the current block from the motion vector predictor candidates can be determined based on the motion vector predictor information of the current block. When, as a result of the exception in
[270] Когда предсказатель-кандидат вектора движения определен, вектор движения текущего блока восстанавливается суммированием определенного предсказателя-кандидата вектора движения и разности первоначального вектора движения, декодированной в операции 1610.[270] When the motion vector predictor candidate is determined, the motion vector of the current block is restored by adding up the specific motion vector predictor candidate and the difference of the original motion vector decoded in
[271] Согласно иллюстративному варианту осуществления, когда предсказатели-кандидаты вектора движения используются для предсказательного кодирования и декодирования вектора движения, количество предсказателей-кандидатов вектора движения можно уменьшить для предсказательного кодирования и декодирования вектора движения. Соответственно, информацию, необходимую для указания предсказателя вектора движения, используемого для предсказания вектора движения текущего блока из предсказателей-кандидатов вектора движения, можно кодировать с минимальным числом битов, благодаря чему коэффициент сжатия кодирования/декодирования вектора движения увеличивается, что позволяет повышать коэффициент сжатия при кодировании/декодировании изображения.[271] According to an illustrative embodiment, when motion vector candidate predictors are used to predictively encode and decode a motion vector, the number of motion vector predictor candidates can be reduced to predictively encode and decode a motion vector. Accordingly, the information necessary to indicate the motion vector predictor used to predict the motion vector of the current block from the motion vector predictor candidates can be encoded with a minimum number of bits, whereby the compression coefficient of the encoding / decoding of the motion vector is increased, which allows to increase the compression ratio when encoding / image decoding.
[272] Хотя выше конкретно показаны и описаны иллюстративные варианты осуществления, специалисты в данной области техники могут предложить различные изменения, касающиеся формы и деталей, не выходящие за рамки сущности и объема идеи настоящего изобретения, определенной в нижеследующей формуле изобретения.[272] Although illustrative embodiments are specifically shown and described above, those skilled in the art can propose various changes regarding the form and details without departing from the spirit and scope of the idea of the present invention as defined in the following claims.
[273] Иллюстративные варианты осуществления также могут быть реализованы в виде машиночитаемых кодов на машиночитаемом носителе записи.[273] Illustrative embodiments may also be implemented as computer-readable codes on a computer-readable recording medium.
[274] Например, устройство для кодирования изображения, устройство для декодирования изображения, кодер вектора движения, и вектор движения согласно иллюстративным вариантам осуществления могут включать в себя шину, подключенную к каждому элементу, включенному в устройства на фиг. 1, 2, 4, 5, 9 и 14 и по меньшей мере один процессор, объединенный с шиной. Кроме того, устройства могут включать в себя память, подключенную к по меньшей мере одному процессору для выполнения команд за счет объединения с шиной для хранения команд, принятых сообщений или генерированных сообщений.[274] For example, an image encoding device, an image decoding device, a motion vector encoder, and a motion vector according to exemplary embodiments may include a bus connected to each element included in the devices of FIG. 1, 2, 4, 5, 9, and 14, and at least one processor coupled to the bus. In addition, devices may include memory connected to at least one processor for executing instructions by combining with a bus for storing instructions, received messages, or generated messages.
[275] Машиночитаемый носитель записи представляет собой любое устройство хранения данных, на котором могут храниться данные, которые впоследствии могут считываться компьютерной системой. Примеры машиночитаемого носителя записи включают в себя постоянную память (ПЗУ), оперативную память (ОЗУ), диски CD-ROM, магнитные ленты, флоппи-диски и оптические устройства хранения данных. Машиночитаемый носитель записи также может быть распределен по компьютерным системам, соединенным в сеть, благодаря чему становится возможным распределенные хранение и выполнение машиночитаемого кода.[275] A computer-readable recording medium is any data storage device on which data can be stored, which can subsequently be read by a computer system. Examples of computer-readable recording media include read-only memory (ROM), random access memory (RAM), CD-ROMs, magnetic tapes, floppy disks and optical storage devices. A computer-readable recording medium can also be distributed over computer systems connected to a network, which makes distributed storage and execution of computer-readable code possible.
Claims (51)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29616310P | 2010-01-19 | 2010-01-19 | |
US61/296,163 | 2010-01-19 | ||
KR1020110004015A KR101768207B1 (en) | 2010-01-19 | 2011-01-14 | Method and apparatus for encoding/decoding motion vector based on reduced motion vector predictor candidates |
KR10-2011-0004015 | 2011-01-14 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015114569A Division RU2678510C2 (en) | 2010-01-19 | 2015-04-17 | Method and device for coding and decoding motion vector based on reduced predictors-candidates of motion vector |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2701087C1 true RU2701087C1 (en) | 2019-09-24 |
Family
ID=62565747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2019101175A RU2701087C1 (en) | 2010-01-19 | 2019-01-17 | Method and device for encoding and decoding motion vector based on reduced motion vector predictors-candidates |
Country Status (2)
Country | Link |
---|---|
JP (3) | JP6523494B2 (en) |
RU (1) | RU2701087C1 (en) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5731840A (en) * | 1995-03-10 | 1998-03-24 | Kabushiki Kaisha Toshiba | Video coding/decoding apparatus which transmits different accuracy prediction levels |
US20060120612A1 (en) * | 2004-12-08 | 2006-06-08 | Sharath Manjunath | Motion estimation techniques for video encoding |
US20080117977A1 (en) * | 2006-11-03 | 2008-05-22 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding/decoding image using motion vector tracking |
US20080181309A1 (en) * | 2007-01-29 | 2008-07-31 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video and method and apparatus for decoding video |
RU2360375C2 (en) * | 2002-07-18 | 2009-06-27 | Эл Джи Электроникс Инк. | Method of determining motion vectors for current unit in frame, subject to decoding |
US20090304084A1 (en) * | 2008-03-19 | 2009-12-10 | Nokia Corporation | Combined motion vector and reference index prediction for video coding |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100355831B1 (en) * | 2000-12-06 | 2002-10-19 | 엘지전자 주식회사 | Motion vector coding method based on 2-demension least bits prediction |
US7978769B2 (en) * | 2003-06-30 | 2011-07-12 | Ntt Docomo, Inc. | Method and apparatus for coding motion information |
JP5025286B2 (en) * | 2007-02-28 | 2012-09-12 | シャープ株式会社 | Encoding device and decoding device |
JP4809296B2 (en) * | 2007-06-15 | 2011-11-09 | シャープ株式会社 | Video encoding apparatus and video decoding apparatus |
JP4977094B2 (en) * | 2008-06-25 | 2012-07-18 | 株式会社東芝 | Image coding method |
KR101517768B1 (en) * | 2008-07-02 | 2015-05-06 | 삼성전자주식회사 | Method and apparatus for encoding video and method and apparatus for decoding video |
JP5422168B2 (en) * | 2008-09-29 | 2014-02-19 | 株式会社日立製作所 | Video encoding method and video decoding method |
WO2011034148A1 (en) * | 2009-09-18 | 2011-03-24 | シャープ株式会社 | Encoder apparatus, decoder apparatus, moving image encoder apparatus, moving image decoder apparatus, and encoding data |
EP2493195A1 (en) * | 2009-10-20 | 2012-08-29 | Sharp Kabushiki Kaisha | Video encoding device, video decoding device, and data structure |
KR101768207B1 (en) * | 2010-01-19 | 2017-08-16 | 삼성전자주식회사 | Method and apparatus for encoding/decoding motion vector based on reduced motion vector predictor candidates |
-
2018
- 2018-01-10 JP JP2018001693A patent/JP6523494B2/en active Active
-
2019
- 2019-01-17 RU RU2019101175A patent/RU2701087C1/en active
- 2019-04-25 JP JP2019084467A patent/JP6740420B2/en active Active
-
2020
- 2020-07-22 JP JP2020124907A patent/JP6935553B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5731840A (en) * | 1995-03-10 | 1998-03-24 | Kabushiki Kaisha Toshiba | Video coding/decoding apparatus which transmits different accuracy prediction levels |
RU2360375C2 (en) * | 2002-07-18 | 2009-06-27 | Эл Джи Электроникс Инк. | Method of determining motion vectors for current unit in frame, subject to decoding |
US20060120612A1 (en) * | 2004-12-08 | 2006-06-08 | Sharath Manjunath | Motion estimation techniques for video encoding |
US20080117977A1 (en) * | 2006-11-03 | 2008-05-22 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding/decoding image using motion vector tracking |
US20080181309A1 (en) * | 2007-01-29 | 2008-07-31 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video and method and apparatus for decoding video |
US20090304084A1 (en) * | 2008-03-19 | 2009-12-10 | Nokia Corporation | Combined motion vector and reference index prediction for video coding |
Also Published As
Publication number | Publication date |
---|---|
JP6935553B2 (en) | 2021-09-15 |
JP6740420B2 (en) | 2020-08-12 |
JP2018093504A (en) | 2018-06-14 |
JP6523494B2 (en) | 2019-06-05 |
JP2020182236A (en) | 2020-11-05 |
JP2019146252A (en) | 2019-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2678510C2 (en) | Method and device for coding and decoding motion vector based on reduced predictors-candidates of motion vector | |
KR102570488B1 (en) | Motion vector refinement for multi-reference prediction | |
EP2645718A2 (en) | Method and apparatus for encoding and decoding motion vector | |
KR102027474B1 (en) | Method and apparatus for encoding/decoding image by using motion vector of previous block as motion vector of current block | |
RU2701087C1 (en) | Method and device for encoding and decoding motion vector based on reduced motion vector predictors-candidates | |
AU2015201666C1 (en) | Method and apparatus for encoding and decoding motion vector based on reduced motion vector predictor candidates | |
JP5622613B2 (en) | Moving picture coding apparatus, moving picture coding method, and moving picture coding program | |
JP2013517733A (en) | Video encoding / decoding method and apparatus using previous block motion vector as current block motion vector |