EP4029252A1 - Ai prediction for video compression - Google Patents

Ai prediction for video compression

Info

Publication number
EP4029252A1
EP4029252A1 EP20785794.7A EP20785794A EP4029252A1 EP 4029252 A1 EP4029252 A1 EP 4029252A1 EP 20785794 A EP20785794 A EP 20785794A EP 4029252 A1 EP4029252 A1 EP 4029252A1
Authority
EP
European Patent Office
Prior art keywords
images
image
encoding
prediction
current block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
EP20785794.7A
Other languages
German (de)
French (fr)
Inventor
Thomas Guionnet
Josselin COZANET
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ateme SA
Original Assignee
Ateme SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ateme SA filed Critical Ateme SA
Publication of EP4029252A1 publication Critical patent/EP4029252A1/en
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/142Detection of scene cut or scene change

Definitions

  • the present invention relates to an image encoding method and a device for implementing this method. It applies in particular to the encoding of images of a video stream.
  • Video data is generally subject to source coding aimed at compressing it in order to limit the resources required for its transmission and / or storage.
  • source coding aimed at compressing it in order to limit the resources required for its transmission and / or storage.
  • the images of the video stream to be encoded are typically considered according to an encoding sequence, and each is divided into sets of pixels which are also processed sequentially, for example starting at the top left and ending at the bottom. to the right of each image.
  • the encoding of an image of the stream is thus carried out by dividing a matrix of pixels corresponding to the image into several sets, for example blocks of fixed size 16 x 16, 32 x 32 or 64 x 64, and by encoding these blocks of pixels according to a given processing sequence.
  • Some standards such as H.264 / AVC, provide for the possibility of breaking down blocks of size 16 x 16 (then called macro-blocks) into sub-blocks, for example of size 8 x 8 or 4 x 4, in order to perform encoding processing with finer granularity.
  • Intra in which the compression processing operations are carried out on the pixels of a single image or video frame
  • Inter so-called “Inter” compression
  • the processing of a block (or set) of pixels comprises typically a prediction of the pixels of the block carried out using causal pixels (previously encoded) present in the image being encoded (called “current image”), in which case one speaks of “Intra prediction”.
  • the processing of a block (or set) of pixels typically comprises a prediction of the pixels of the block performed using pixels from previously encoded images, in which case one speaks of “Inter prediction” or of. "Motion compensation”.
  • This exploitation of spatial and / or temporal redundancies makes it possible to avoid transmitting or storing the value of the pixels of each block (or set) of pixels, by representing at least some of the blocks by a residual of pixels representing the difference (or the distance) between the prediction values of the pixels of the block and the actual values of the pixels of the predicted block.
  • the pixel residual information is present in the data generated by the encoder after transform (eg, DCT type) and quantization in order to reduce the entropy of the data generated by the encoder.
  • a video encoder typically makes a choice of encoding mode corresponding to a selection of encoding parameters for a set of pixels processed. This decision-making can be implemented by optimizing a bit rate and distortion metric, the encoding parameters selected by the encoder being those which minimize a bit rate-distortion criterion. The choice of mode encoding then has an impact on the performance of the encoder, both in terms of bit rate gain and visual quality.
  • a video encoder can thus be designed so as to produce the highest possible quality while respecting a set of constraints corresponding to the use case considered.
  • the main constraints imposed on video encoders are the bit rate, the processing time, the latency (or delay), the characteristics of the video source, the energy consumption and the cost. Processing time is critical for real-time broadcasting. Combined with the other constraints, it emerges that a video encoder designed for real-time broadcasting implements a compromise between quality and computational resources. The increase in available computing resources improves quality. Likewise, the throughput imposes a limit on the quality that can be achieved. Increasing the bit rate thus improves the quality.
  • the quality also depends on the latency.
  • some video encoders implement a technique called "lookahead", according to which images which enter the encoding process are temporarily stored in a buffer memory before being actually encoded. .
  • This storage of images before processing by the video encoder makes it possible to implement tools for analyzing and processing images from which the encoder can benefit, but introduces a latency in the encoding process induced by the setting. in memory.
  • a method of encoding a first image in a first set of images in which the first image is cut into blocks, each block being encoded according to one of a plurality of modes encoding, the method comprising, for a current block of the first image: determining, on the basis of at least one second image distinct from the first image and previously encoded according to an encoding sequence of the images of the first set of images , a prediction of a characteristic of the current block in one or more third images of the first set of images distinct from the first image and not yet encoded according to the encoding sequence; and use the prediction for encoding the current block by minimizing a rate-distortion criterion.
  • the proposed method uses, for the encoding of a current block of a current image (during encoding), a prediction of a characteristic of the current block in one or more images not yet encoded, which makes it possible to avoid having recourse, in whole or in part, to the technique known as "lookahead" of buffering of images not yet encoded upstream of encoding, so as to perform an analysis using these images to calculate the characteristic.
  • the latency generated by this storage can thus be reduced, or even completely eliminated.
  • the prediction can be determined based on at least one image already encoded in the set of images.
  • the characteristic may include a cost of propagating the current block in one or more third images of the first set of images.
  • the characteristic may include a measurement of the presence of a transition in the current block.
  • the characteristic can comprise a measurement of the evolution in the current block of the quantity of information over time.
  • the prediction of the current block can further be determined on the basis of at least a fourth image distinct from the first image and not yet encoded according to the encoding sequence.
  • the prediction of the characteristic of the current block is determined using an artificial intelligence algorithm such as, for example, a supervised learning algorithm.
  • the proposed method can then comprise a learning phase of a neural network performed on a second set of images, the learning phase comprising, for a current block of a current image of the second set of images: determining, on the basis of at least one image of the second set of images distinct from the current image and not yet encoded according to an encoding sequence of the images of the second set of images, a reference prediction of the characteristic of the current block in an image of the second set of images distinct from the current image and not yet encoded according to the encoding sequence of the second set of images; and performing a learning phase of the neural network on the basis of input data, and on the basis of the reference prediction of the current block included in reference data, to generate a prediction model of the characteristic of the block current in the images of the second set of images not yet encoded according to the encoding sequence.
  • the plurality of encoding modes may include at least one time correlation prediction type encoding mode using a plurality of images from a set of images to be encoded.
  • the method can then further comprise, for a current block of a current image of the second set of images: determining a motion estimation vector of the current block, the motion estimation vector pointing to a block correlated with the current block in an image of the second set of images distinct from the current image and previously encoded according to the predefined sequence for encoding the images of the second set of images; and the learning of the neural network can be further performed based on the motion estimation vector of the current block included in the input data.
  • the learning of the neural network can be performed on the basis of the current image included in the input data and / or on the basis of an image of the second set of 'images distinct from the current image and previously encoded according to the encoding sequence of the images of the second set of images, included in the input data.
  • the neural network can be chosen to be convoy utif.
  • the prediction of the characteristic of the current block can be determined using the prediction model, based on the first image and based on the at least one second image included in input data of the prediction model.
  • the plurality of encoding modes may include at least one time correlation prediction type encoding mode using a plurality of images from the first set of images, the proposed method then comprising in addition: determining a motion estimation vector of the current block, the estimation vector of movement pointing to a block correlated with the current block in an image of the first set of images distinct from the first image and previously encoded according to the predefined sequence for encoding the images of the first set of images; and the prediction of the current block can be determined using the prediction model, based on the motion estimate vector included in the input data of the prediction model.
  • the proposed method is particularly suitable, although not exclusively, for encoding or compressing an image of a sequence of images according to a scheme of the H.261, MPEG-1 Part 2 type, H.262, MPEG-2 Part 2, H.264, AVC, MPEG-4 Part 2, H. 265, HEVC or SHVC (Scalable HEVC).
  • it is also suitable for encoding images, for example of a video sequence, according to any video encoding scheme operating on images cut into blocks, in particular in which the blocks are encoded according to a plurality of encoding modes. comprising at least one coding mode of the type with prediction by temporal or spatial correlation.
  • the proposed method is particularly suitable, although in a non-limiting manner, for the encoding or the compression of an image of a sequence of images corresponding to one or more multimedia contents distributed live, using a technology for broadcasting multimedia content on the Internet, for example according to an "HLS” type scheme (standing for "HTTP Live Streaming", the acronym “HTTP” denoting the protocol “HyperText Transfer Protocol”), "MSS” (for “Microsoft Smooth Streaming"), "HDS” (for "HTTP Dynamic Streaming"), "MPEG-DASH” (for “MPEG Dynamic Adaptive Streaming over HTTP"), or “HAS "(From the English” HTTP Adaptive Streaming "), or by using a television broadcasting technology for multimedia content on a television broadcasting network, for example according to a" DVB “type scheme (from the English” Digital Video Broadcast ”), or of the“ ATSC ”type (standing for“ Advanced Television Systems Commi head ').
  • HLS HyperText Transfer Protocol
  • the proposed method can advantageously be implemented in any device configured for the encoding or the compression of an image of a sequence of images, in particular corresponding to one or more contents.
  • multimedia distributed live for example according to an MPEG DASH, HLS, HDS, MSS, or HAS type scheme, such as, without limitation, any computer, server, broadcast head end equipment, broadcast network equipment , etc.
  • an image encoding device comprising an input interface configured to receive a first image of a set of images, and an image encoding unit, coupled operatively at the input interface, and configured to split the first image into blocks, and to encode each block according to one of a plurality of encoding modes according to the proposed method.
  • a computer program loadable into a memory associated with a processor, and comprising portions of code for the implementation of the steps of the method proposed during the execution of said program by the processor, as well as a set of data representing, for example by compression or encoding, said computer program.
  • Another aspect relates to a non-transient storage medium for a computer executable program, comprising a set of data representing one or more programs, said one or more programs comprising instructions for, during the execution of said one. or several programs by a computer comprising a processing unit operatively coupled to memory means and to an input / output interface module, causing the computer to encode a first image cut into blocks according to the proposed method.
  • FIG. 1 is a diagram illustrating an example of encoder architecture, according to one or more embodiments.
  • Fig. 2 is a diagram illustrating an example of encoder architecture, according to one or more embodiments.
  • FIG. 2 is a block diagram illustrating the storage technique.
  • FIG. 3 is a diagram illustrating an example of image reordering for encoding with B images.
  • FIG. 4a illustrates an example of the configuration of a storage unit memory buffer comprising 3 parts.
  • Fig. 4b illustrates an example of the configuration of a storage unit memory buffer comprising 3 parts.
  • FIG. 4b illustrates an example of an encoder integrating an analysis module of the "MB Tree" type and using a storage unit whose memory has a structure comprising three memory buffers.
  • FIG. 4c illustrates an example of a structure for storing images from a source video sequence within a storage unit.
  • FIG. 5 is a diagram illustrating the method proposed according to one or more embodiments.
  • Fig. 6a is a diagram illustrating the method proposed according to one or more embodiments.
  • FIG. 6a is a diagram illustrating an image encoding system configured for implementing the method proposed according to one or more embodiments.
  • FIG. 6b is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments.
  • Fig. 6c is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments.
  • FIG. 6c is a diagram illustrating a system configured for implementing the method proposed according to one or more other embodiments.
  • FIG. 6d is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments.
  • FIG. 6e is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments.
  • Fig. 7a is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments.
  • FIG. 7a is a diagram illustrating a system configured for the implementation of a learning phase according to one or more embodiments.
  • FIG. 7b is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments.
  • FIG. 8 is a diagram illustrating an example of the architecture of a device configured for the implementation of the method proposed according to one or more embodiments. Description of the embodiments
  • functions, motors, units, modules and / or diagram illustrations may be implemented by computer program instructions or software code, which may be stored or transmitted on a computer readable medium, including a non-transient medium, or a medium loaded in memory of a generic, specific computer, or of any other apparatus or programmable data processing device to produce a machine, so that the Computer program instructions or the software code executed on the computer or the programmable data processing apparatus or device, constitute means of implementing these functions.
  • Embodiments of a computer readable medium include, but are not limited to, computer storage media and communication media, including any medium facilitating the transfer of a computer program from a location to another.
  • computer storage medium s
  • computer storage medium any physical medium that can be accessed by a computer.
  • Examples of computer storage media include, but are not limited to, flash memory disks or components or any other flash memory devices (eg, USB keys, memory sticks, memory sticks, key disks), CD-ROMs or other optical data storage devices, DVDs, magnetic disk data storage devices or other magnetic data storage devices, data memory components, RAM, ROM, EEPROM, memory cards ("smart cards”), memories of the SSD type (“Solid State Drive”), and any other form of support which can be used to transport or store or memorize data or data structures which can be read by a processor. computer.
  • various forms of computer readable medium can transmit or carry instructions to a computer, such as a router, a gateway, a server, or any data transmission equipment, whether it is wired transmission (by coaxial cable, optical fiber, telephone wires, DSL cable, or Ethernet cable), wireless (by infrared, radio, cellular, microwave), or virtualized transmission equipment (virtual router, virtual gateway, end of virtual tunnel, virtual firewall).
  • a computer such as a router, a gateway, a server, or any data transmission equipment, whether it is wired transmission (by coaxial cable, optical fiber, telephone wires, DSL cable, or Ethernet cable), wireless (by infrared, radio, cellular, microwave), or virtualized transmission equipment (virtual router, virtual gateway, end of virtual tunnel, virtual firewall).
  • the instructions may, depending on the embodiments, include code of any computer programming language or computer program element, such as, without limitation, assembly languages, C, C ++, Visual Basic, HyperText Markup Language (HTML), Extensible Markup Language (XML), HyperText Transfer Protocol (HTTP), Hypertext Preprocessor (PHP), SQL, MySQL, Java, JavaScript, JavaScript Object Notation (JSON), Python, and bash scripting.
  • HTML HyperText Markup Language
  • XML Extensible Markup Language
  • HTTP HyperText Transfer Protocol
  • PHP Hypertext Preprocessor
  • SQL SQL
  • MySQL Java, JavaScript, JavaScript Object Notation
  • Python Python
  • bash scripting any computer programming language or computer program element
  • server or “platform” is meant in the present description any point of service (virtualized or not) or device operating data processing, one or more databases, and / or communication functions. data.
  • server or the term “platform” can refer to a physical processor operably coupled with associated communication, database and data storage functions, or make reference to a network, group, set or complex of processors and associated data storage and networking equipment, as well as an operating system and one or more database system (s) and application software in support of the services and functions provided by the server.
  • a computing device can be configured to send and receive signals, by wireless and / or wired transmission network (s), or can be configured for processing and / or storage of data or signals, and can therefore function as a server.
  • equipment configured to operate as a server may include, by way of non-limiting examples, dedicated rack-mounted servers, desktops, laptops, service gateways (sometimes referred to as “boxes” or " residential gateway ”), multimedia decoders (sometimes called“ set-top boxes ”), integrated equipment combining various functionalities, such as two or more of the functionalities mentioned above.
  • Servers can vary widely in their configuration or capabilities, but a server will typically include one or more central processing unit (s) and memory.
  • a server can also include one or more mass memory equipment (s), one or more power supply (s), one or more wireless and / or wired network interface (s), one or more several input / output interface (s), one or more operating system (s), such as Windows Server, Mac OS X, Unix, Linux, FreeBSD, or an equivalent.
  • multimedia content is meant in the present description any audio and / or video, audiovisual, music, sound, image and interactive graphical interface, and any combination of these types of content.
  • network and “communication network” as used in the present description refer to one or more data links which can couple or connect equipment, possibly virtualized, so as to allow the transport of data.
  • electronic devices between computer systems and / or modules and / or other electronic devices or equipment such as between a server and a client device or other types of devices, including between wireless devices coupled or connected by a wireless network, for example.
  • a network can also include a mass memory for storing data, such as a NAS (in English “network attached storage", a SAN (in English “storage area network”), or any other form of media readable by a computer.
  • a network may include, in whole or in part, the Internet network, one or more local area networks (LANs), one or more WAN type networks (in English). English “wide area networks”), wired type connections, wireless type connections, cellular type, or any combination of these different networks.
  • LANs local area networks
  • WAN type networks in English
  • English “wide area networks”) wired type connections
  • wireless type connections wireless type connections
  • cellular type or any combination of these different networks.
  • subnets may use different architectures or be compliant or compatible with different protocols, and interoperate with larger networks. Different types of equipment can be used to make different architectures or different protocols interoperable.
  • a router can be used to provide a communications link or a data link between two LANs that would otherwise be separate and independent.
  • an operative coupling may include one or more wired connection (s) and / or one or more wireless connection (s) between two or more devices that allow simplex and / or duplex communication links. between the equipment or portions of the equipment.
  • an operational coupling or connection may include a wired and / or wireless link coupling to allow data communications between a server of the proposed system and other equipment of the system.
  • app or “application program” (AP) and their variants (“app”, “webapp”, etc.) as used in the present description correspond to any tool which operates and is operated by means of from a computer, to provide or execute one or more function (s) or task (s) for a user or another application program.
  • a user interface can be provided on the equipment on which the application program is implemented.
  • GUI graphical user interface
  • an audio user interface can be rendered to the user using a loudspeaker, a headset or audio output.
  • current refers to an image or portion of an image being processed, such as encoding, analysis, compression, etc.
  • current image refers to an image being encoded from among the images of a set of images, the encoding of the current image possibly comprising the implementation of the method proposed on the. current image
  • current block refers to a block being encoded in a current image divided into blocks whose encoding is implemented according to an encoding sequence of the blocks of the image, the encoding of the current block which may include the implementation of the method proposed on the current block.
  • the current image may be associated with a time index, for example the index "t”, to distinguish it from the images already encoded (which may be associated with time indices less than t, such as “t -1 ”,“ t-2 ”, ...,“ tk ”for a set of k images), and images not yet encoded (which could be associated with temporal indices greater than t, such as“ t + 1 ",” T + 2 ", ...,” t + n "for a set of n images).
  • t time index
  • the terms “real-time” distribution, “linear mode” distribution, “linear TV mode” distribution, “dynamic mode” distribution and “live” or “live mode” distribution are used interchangeably to denote the distribution in dynamic mode or type (in English “live” or “dynamic” mode) of multimedia content in a content distribution system to terminals, including in particular the distribution of the content to as it is generated, as opposed to the distribution of previously generated content, on a user's access request (distribution on access request or distribution in or of the “static” type - in English, “static”), such as, for example, content recorded on a server, and made available to users by a video on demand (VOD) service.
  • VOD video on demand
  • live content refers to content, for example of multimedia type, distributed, for example according to an OTT distribution mode, in dynamic mode (as opposed to the static distribution mode). Live content will typically be generated by a television channel, or by any type of television media, and may also be broadcast over a multimedia content distribution network, in addition to being made available on content servers in a distribution system. OTT.
  • video input signal or "input video stream” refer to a signal carrying data corresponding to a set of images supplied at the input of a device used for the implementation of the proposed method.
  • the set of images may be referred to as "source video footage”.
  • the proposed method can be implemented by any type of image encoder of a set of images using a coding mode of the prediction type by temporal and / or spatial correlation, such as for example a video coded.
  • a coding mode of the prediction type by temporal and / or spatial correlation such as for example a video coded.
  • a video coded such as for example a video coded.
  • H.264 / AVC, H.265 / HEVC, and / or MPEG-2 standards Compliant with H.264 / AVC, H.265 / HEVC, and / or MPEG-2 standards.
  • a video codec typically comprises a set of video sequence processing and representation tools.
  • the specification of the video codec generally makes it possible to design a decoder to perform the transformation of a compressed binary train in accordance with the specification of the codec into a so-called “reconstructed” video.
  • the aim of the video encoder is to transform a so-called “source” video into a binary train conforming to the specification of the codec.
  • the same source content can be represented in different ways by the same codec. Not all representations are created equal. For example, for a given target rate, different representations will give different qualities. Likewise, for a given target quality, different representations will give different bit rates.
  • FIG. 1 illustrates an example of an encoder architecture, according to one or more embodiments.
  • the encoder 100 receives at input 109 an input video stream 101 comprising a plurality of images to be processed to perform the encoding of the stream.
  • Encoder 100 includes a controller 102, operably coupled to input interface 109, which drives a motion estimation unit 110 and a time correlation prediction unit 104 to perform time correlation predictions (such as that, for example, Inter and Skip predictions, so-called “Merge” and “Affine” predictions, depending on the video encoding scheme used), as well as a spatial correlation prediction unit 103 for performing correlation predictions spatial (such as, for example, Intra predictions).
  • the data received on the input interface 109 is inputted to the spatial correlation prediction 103, motion estimation 110, time correlation prediction 104 and controller 102 units.
  • the motion estimation 110, time correlation prediction unit 104, and spatial correlation prediction unit 103 form an encoding unit 111 operatively coupled to the input interface 109.
  • the spatial correlation prediction unit 103 generates spatial correlation prediction data 107 (for example Intra prediction data) which is provided at the input of an entropy encoder 105.
  • the motion estimation unit 110 for its part generates motion estimation data which is supplied to the controller 102 as well as to the time correlation prediction unit 104 for the purposes of the prediction in Inter mode.
  • the time correlation prediction unit 104 generates time correlation prediction data (eg Inter or Skip prediction data) which is input to entropy encoder 105.
  • data supplied to the decoder for prediction by temporal correlation may include a residual of pixels and information regarding one or more motion vectors. This information relating to one or more motion vectors may comprise one or more indices identifying a vector predictor in a list of predictor vectors known to the decoder.
  • the data supplied to the decoder for a Skip type prediction will typically not include any pixel residual, and may also include information identifying a predictor vector in a list of predictors known to the decoder.
  • the list of predictor vectors used for Inter type coding will not necessarily be identical to the list of predictor vectors used for Skip type coding.
  • the spatial correlation prediction data can include an Intra coding mode.
  • the entropy encoder 105 receives spatial correlation prediction data 107 or temporal correlation prediction data 106.
  • the controller 102 calculates encoding data 108, which may include, in one or more embodiments, a residual of pixels as well as data relating to the partitioning of the image into elementary entities, after transformation and quantization, which are also supplied at the input of the entropy encoder 105.
  • the data relating to the selected encoding mode can be included in the prediction data 106-107, by temporal or spatial correlation as a function of each encoded block.
  • the controller 102 is configured to drive the spatial correlation prediction unit 103 and the time correlation prediction unit 104 in order to control the prediction data which are respectively supplied at the input of the entropy encoder 105 by the unit. correlation prediction 103 and the time correlation prediction unit 104.
  • the controller 102 may further be configured to select from among different types of prediction mode. (for example Intra mode, Inter mode or Skip mode depending on the encoding modes implemented in the encoding unit 111) that for which prediction data will be transmitted to the entropy encoder 105.
  • the encoding scheme may include a decision for each image set processed aiming to choose the type of prediction for which data will be transmitted to the entropy encoder 105.
  • This choice will typically be made n work by the controller 102, to decide on the application of the prediction mode (for example Inter, Intra or Skip prediction mode) to the block being processed.
  • the prediction mode for example Inter, Intra or Skip prediction mode
  • the encoder 100 can be a computer, a computer network, an electronic component, or another device comprising a processor operably coupled to a memory, as well as, depending on the embodiment chosen, a control unit. data storage, and other associated hardware elements such as a network interface and a media drive for reading removable storage media and writing to such media (not shown in the figure).
  • the removable storage medium can be, for example, a compact disc (CD), a digital video / versatile disc (DVD), a flash disc, a USB stick, etc.
  • the memory, the data storage unit or the removable storage medium contains instructions which, when executed by the controller 102, cause this controller 102 to perform or control the interface parts of it.
  • the controller 102 can be a component implementing a processor or a computing unit for encoding images according to the proposed method and controlling the units 109, 110, 103, 104, 105 of the encoder 100.
  • the encoder 100 can be implemented in software form, as described above, in which case it takes the form of a program executable by a processor, or in hardware form (or "hardware") , as an application specific integrated circuit (ASIC), a system on chip (SOC), or in the form of a combination of hardware and software elements, such as for example a software program intended to be loaded and executed on a component of type FPGA (Field Programmable Array).
  • SOC System On Chip
  • system on chip are embedded systems that integrate all the components of a electronic system in a single chip.
  • An ASIC Application-specific Integrated Circuit
  • Programmable logic circuits of the FPGA (Field-Programmable Gâte Array) type are electronic circuits that can be reconfigured by the user.
  • An encoder can also use hybrid architectures, such as for example architectures based on a CPU + FPGA, a GPU (Graphics Processing Unit) or an MPPA (Multi-Purpose Processor Array).
  • hybrid architectures such as for example architectures based on a CPU + FPGA, a GPU (Graphics Processing Unit) or an MPPA (Multi-Purpose Processor Array).
  • the image being processed is divided into blocks or coding units (in English "Coding Unit", or CU), the shape and size of which are determined as a function in particular of the size of the matrix of pixels representing the image, for example in square shaped macroblocks of 16 x 16 pixels.
  • a set of blocks is thus formed for which a processing sequence is defined (also called “processing path”).
  • processing path also called “processing path”.
  • square-shaped blocks we can for example process the blocks of the current image by starting with the one located at the top left of the image, followed by the one immediately to the right of the previous one, until reaching the end of the first row of blocks to go to the leftmost block in the row of blocks immediately below this first row, to end the processing by the lower-most block and to the right of the image.
  • the processing of the current block can comprise the partitioning of the block into sub-blocks, in order to process the block with a spatial granularity finer than that obtained with the block.
  • the processing of a block furthermore comprises the prediction of the pixels of the block, by exploiting the spatial (in the same image) or temporal (in the previously encoded images) correlation between the pixels.
  • the prediction of the pixels of the block typically comprises the selection of a type of prediction of the block and of prediction information corresponding to the type selected, the whole forming a set of encoding parameters.
  • the prediction of the processed block of pixels makes it possible to calculate a residual of pixels, which corresponds to the difference between the pixels of the current block and the pixels of the prediction block, and is transmitted in certain cases to the decoder after transformation and quantization .
  • This coding information 106-108 can include in particular the coding mode (for example the particular type of predictive coding among the “Intra” and “Inter” codings, or among the “Intra”, “Inter” and “Skip” codings) , the partitioning (in the case of one or more blocks partitioned into sub-blocks), as well as a motion information item 106 in the case of a predictive coding of the temporal correlation type and an Intra prediction mode 107 in the case of predictive coding of the spatial correlation type. As indicated above for the “Inter” and “Skip” coding modes, these last two items of information can also be predicted in order to reduce their coding cost, for example by using the information from the neighboring blocks of the current block.
  • the coding mode for example the particular type of predictive coding among the “Intra” and “Inter” codings, or among the “Intra”, “Inter” and “Skip” codings
  • the partitioning in the case of one or more blocks partitioned into sub-blocks
  • the spatial correlation type predictive coding includes a prediction of the pixels of a block (or set) of pixels being processed using the previously coded pixels of the current image.
  • “Intra” type predictive coding modes such as for example the “Intra” prediction mode called “DC” (for “Discrete Continuous”), the “Intra” prediction mode called “V” (for “Vertical”). “), The” Intra “prediction mode called” H “(for” Horizontal ”) and the” Intra “prediction mode called” VL “(for” Vertical-Left ").
  • the H.264 / AVC video coding standard provides for 9 intra prediction modes (including DC, H, V, VL prediction modes).
  • the video encoding standard HEVC provides for a larger number of 35 intra prediction modes.
  • video coding standards also provide for special cases for performing an intra prediction.
  • the H.264 / AVC standard allows 16x16 pixel blocks to be cut into smaller blocks, up to 4x4 pixels in size, to increase the granularity of predictive coding processing.
  • the information of the Intra prediction mode is predicted in order to reduce its coding cost.
  • the transmission in the encoded stream of an index identifying the Intra prediction mode has a cost that is higher as the number of prediction modes that can be used is large.
  • transmitting an index between 1 and 9 identifying the intra prediction mode used for each block among the 9 possible modes turns out to be expensive in terms of encoding cost.
  • MPM in English "Most Probable Mode"
  • Most Probable Mode A most probable mode is thus calculated, denoted MPM (in English "Most Probable Mode"), which is used to encode the most probable Intra prediction mode on a minimum of bits.
  • the MPM is the result of the prediction of the Intra prediction mode used to code the current block.
  • the predictive coding in mode referenced for certain video coders under the name “Inter” includes a prediction of the pixels of a block (or set) of pixels being processed using pixels from previously images. coded (pixels which therefore do not come from the current image, unlike the Intra prediction mode).
  • the Inter prediction mode typically uses one or two sets of pixels located in one or two previously encoded images in order to predict the pixels of the current block. That said, it is possible to envisage, for an Inter prediction mode, the use of more than two sets of pixels situated respectively in previously coded images distinct two-by-two and the number of which is greater than two.
  • This technique involves the determination of one or two vectors, called motion vectors, which respectively indicate the position of the set or sets of pixels to be used for the prediction in the image (s). previously encoded images (sometimes referred to as “reference images”).
  • the vectors used for the “Inter” mode are to be chosen by the encoder 100 by means of the movement estimation unit 110 and of the prediction unit by time correlation 104.
  • the implementation of the motion estimation within the encoder 100 may therefore provide, depending on the case, for the determination of a single motion estimation vector or else of two motion estimation vectors which point to potentially different images.
  • the motion estimation vector (s) generated at the output of the motion estimation unit 110 will be supplied to the prediction unit by time correlation 104 for the generation of prediction vectors, for example a prediction vector Inter.
  • Each Inter prediction vector can in fact be generated from a corresponding motion estimation vector.
  • the motion estimation can consist in studying the movement of the blocks between two images by exploiting the temporal correlation between the pixels. For a given block in the current image (the “current block” or “original block”), the motion estimation makes it possible to select a block that resembles the most (called “reference block”) in a previously coded image. , called “reference image”, by representing the movement of this block for example with a two-dimensional vector (horizontal displacement, vertical displacement).
  • a video encoder can thus be designed to decide for each elementary portion (for example for each block in the case of a division into blocks) of the images of a video sequence to be encoded, the encoding tools and the parameters to be applied. .
  • a decision method consists in testing all the possibilities, for example all the different coding modes available at the encoder, so as not to remember that the best combination. But the number of combinations is in some cases so high that this method cannot be performed in a reasonable time.
  • Figure 2 is a block diagram illustrating the storage technique.
  • a storage unit (120) comprising a memory is interposed between the encoder (100) and the arrival of the video input signal (101) (corresponding to a video sequence source comprising a set of images) for storing in the memory N images (121) of the source video sequence (images of time indices t + 1, t + 2, ..., t + N) before encoding.
  • the encoder performs the encoding of k images (112) of the source video sequence (images of temporal indices t, t-1, ..., tK) according to the chosen encoding sequence, and outputs a video compressed (113).
  • An analysis unit (130) of the images of the source video sequence can process one or more images (121) stored by the stored unit (120), so as to provide the encoder (100) with results of analysis of these images (121).
  • the storage introduces a delay equal to the number of images it contains.
  • encoders typically implement storage delays of 0.5 to 5 seconds.
  • Two non-limiting examples of image analysis of the source video sequence that can use the storage technique are described below: the detection of transitions, and the “macroblock tree” algorithm.
  • a video encoder encodes the images making up the video sequence to be encoded according to an encoding sequence defining an encoding order of the images of the video sequence.
  • an encoding sequence defining an encoding order of the images of the video sequence.
  • several types of images can be defined, in order to distinguish the images using independent encoding from other images (called “Intra” or “I” images), from images using encoding with unidirectional temporal prediction (called “Inter-predicted” or “P” images) and images using encoding with bidirectional temporal prediction (called “Inter-bi-predicted” images).
  • the bi-predicted images which can serve as a reference for other images are usually denoted Br. Conversely, those which cannot serve as a reference are denoted B.
  • the coding cost of the inter bi-predicted images is lower. than the cost of coding the inter predicted images, which is itself lower than the cost of coding the intra images.
  • the reference encoders of conventional standards set a priori the succession of types of images.
  • Some advanced encoders dynamically adapt image types to content, including the presence of transitions between video scenes.
  • a clean transition (“scene had")
  • it is desirable to encode the first image of the new scene intra in order to avoid unnecessary dependencies on the previous scene.
  • Bit rate control is an important element in the design of a video encoder, because it very strongly conditions the quality of the encoding.
  • the bit rate is allocated by adjusting the quantization parameter (in English, "Quantization parameter", or "QP").
  • QP quantization parameter
  • the QP parameter is configured at the level of a spatial subset of pixels, that is to say at the level of an elementary image portion.
  • CU partition in Coding Units
  • PU partition in Prediction Units
  • Transform Units a partition in Transform Units.
  • the QP parameter is set at the TU level.
  • the QP is set at the elementary image portion called "macroblock".
  • the QP is set at the level of the elementary image portion called the coding unit (CU).
  • the bitrate control must decide for each frame, and then for each block of the partitioned image, which QP to use.
  • the QP of a block can be allocated by minimizing a rate-distortion criterion, preferably with a so-called perceptual distortion measurement. It is also possible to take into account the phenomena of temporal propagation. Indeed, if we look at the level of the image, the cost of coding an image depends on the quality of its reference, that is to say on the image used for the prediction of the image in encoding course. The better the benchmark, the better the prediction.
  • the MB tree algorithm in fact makes it possible, from an image cut into blocks, to adjust the encoding parameters for each block on the basis of a criterion determining for the block whether it will serve as a reference. in the future, that is to say if it will be used for the prediction of other blocks belonging to one or more images which will be encoded subsequently.
  • Example 3 coding complexity / cost prediction
  • bit rate control is an important element in the design of a video encoder.
  • the "MB tree" algorithm is used to determine the relative importance of the blocks of an image for future images. This provides a criterion for the allocation of spatial throughput through the setting of the QP per block. Another criterion for bit rate allocation is the temporal evolution of the coding cost of the blocks.
  • CBR Constant bit rate
  • VBV Video Buffer Check
  • the quality of the rendered video varies accordingly.
  • the quality should vary as smoothly as possible, while respecting the constraints of fixed bit rate and Damping Buffer Size (VBV).
  • it is useful to anticipate variations in the amount of information over time which can be implemented using the store (or “lookahead”) principle described above, or using two pass encoding.
  • the downside of principle of storage is that it introduces latency. As for two pass encoding, it does not work for live streaming.
  • FIG. 3 which illustrates an example of reordering of images for encoding with B images, shows three images, one of type I, one of type B, and one of type P, placed in order of 'display (image of index 1 of type I, then image of index 2 of type B, and image of index 3 of type P) and in encoding / decoding order (image of index 1 of type I, then image of index 3 of type P, and image of index 2 of type B).
  • the arrows indicate the reference images: the image of type B (index 2) uses the two images of indexes 1 and 3 as reference images, while the image of index 3 uses the image of index 1 as the reference image.
  • FIG. 4a illustrates an example of the configuration of a unit memory buffer placed in memory comprising 3 parts.
  • the first part could for example store Na images of the input video sequence in the display order
  • the second part could store Nr images in a temporary order of reordering
  • N Na + Nr + Ne
  • the image 2 can be stored temporarily in a reordering buffer, while waiting to receive image 3.
  • FIG. 4b illustrates an example of an encoder incorporating an analysis module of the "MB Tree" type and using a storage unit whose memory has a structure comprising three memory buffers, as illustrated in FIG. 4a.
  • the MB Tree algorithm uses the images stored in the order of encoding to output the encoder with propagation costs to improve the efficiency of the encoding performed by the encoder to produce compressed video.
  • the “lookahead” part and the encoding part can be built from any implementation of the HEVC encoder, such as the x265 implementation.
  • FIG. 4c illustrates a more detailed example of the structure of the storage of images from a source video sequence within a storage unit.
  • each column corresponds to an image stored in the storage unit.
  • the first part, on the left, contains Na images in order of display.
  • the second part, in the middle, contains Nr images being reordered.
  • the third part, on the right, contains Ne images in order of encoding. This corresponds exactly to the structure of Figure 4a.
  • the index of the image is indicated in the order of display, and for each image stored in the second and third parts, the type of image, and the index of the image in order of encoding.
  • the type of image can in fact, for example, be generated by analyzing the images in the display order, and recorded in memory, for example at the level of the scheduling buffer.
  • the index in display order is sorted, while in the right part, it is the index in encoding order which is sorted.
  • FIG. 4a illustrates an example of a storage configuration in a unit placed in memory allowing an analysis module to execute these two algorithms, including in parallel.
  • FIG. 5 is a diagram illustrating the method proposed according to one or more embodiments.
  • current image from a set of images, for example a sequence of images corresponding to a video sequence, and cut into blocks, the encoding of which is performed by encoding blocks, each block being encoded according to one of a plurality of encoding modes.
  • the coding of a current block is thus considered according to one coding mode from among a plurality of coding modes, for example comprising one or more coding modes of the prediction type by time correlation using a plurality of images of the. sequence of images and / or one or more coding modes of the prediction type by spatial correlation on the image being encoded.
  • the images in the set of images may be encoded in a sequence defining an encoding sequence of the images in the set of images.
  • a prediction of at least one characteristic of the current block is determined (200) in one or more images of the set of images distinct from the current image and not yet encoded according to a encoding sequence, based on at least one image distinct from the image current and previously encoded according to the encoding sequence of the images of the set of images.
  • the prediction determined for the encoding of the current block is then used (201), for example by minimizing a distortion rate criterion to select from among a plurality of encoding modes an encoding mode for the current block considered to be optimal with regard to of a decision criterion.
  • a distortion rate criterion to select from among a plurality of encoding modes an encoding mode for the current block considered to be optimal with regard to of a decision criterion.
  • the proposed method introduces the use of a prediction of one or more characteristics of the current block (either during encoding), determined in the video in the future, that is to say in a or several images of the set of images (typically of the video sequence) which have not yet been encoded according to the encoding sequence.
  • this prediction is calculated on the basis of the images of the past, that is to say on the basis of one or more images which have been previously encoded according to the encoding sequence.
  • Determining this prediction makes it possible to dispense, in whole or in part, from the use of the storage technique (called "lookahead”) to keep in memory a knowledge of the video in the future compared to the image being encoded, and thus reduce the processing latency by reducing the latency corresponding to the use of the storage technique (“lookahead”).
  • the proposed method can be implemented by using, for the determination of the prediction, only images which have already been encoded and are therefore already available at the encoder, or by using a storage of a smaller number of images not yet encoded. This provides good performance in terms of latency, bit rate and video quality, which can be compatible with video encoding for “live” broadcasting.
  • the prediction of the current block can further be determined on the basis of at least one image not yet encoded according to the encoding sequence.
  • the determination of the prediction can in certain embodiments use at least one already encoded image of the set of images (ie at least one image from the past) and at least one not yet encoded image of the set of images. images (ie at least one image from the future).
  • the predicted characteristic or characteristics of the current block may correspond to the results of analyzes to be carried out upstream of the encoding in order to improve its efficiency as described above.
  • the predicted characteristic could correspond to a score which indicates the persistence of the current block as a reference for encoding images of the future. This score may, depending on the embodiment, include a cost of propagation of the current block in images of the future (that is to say not yet encoded) of the set of images.
  • the predicted characteristic could correspond, in one or more embodiments, to a score indicating the presence or not of a transition (for example a score indicating whether the image belongs to same scene as before, or does not belong to the same scene as before).
  • the predicted characteristic may correspond, in one or more embodiments, to a score which indicates for the current block the evolution of the quantity of information over time, that is to say in blocks of images of the future (not yet encoded) corresponding to the current block.
  • image encoding systems configured for the implementation of the method proposed according to one or more embodiments comprising an encoder provided with a buffer memory configured to store k images, including an image being encoded and k - 1 images already encoded. Images already encoded and stored at the encoder may be considered as images from the past compared to the image being encoded with regard to the image encoding sequence used by the encoder. There are no special penalties for storing these images in memory, apart from some memory consumption. These images from the past are therefore considered to be still available.
  • FIG. 6a illustrates an image encoding system configured for implementing the method proposed according to one or more embodiments.
  • a storage unit (120a) comprising a memory is interposed between the encoder (100a) and the arrival of the source video sequence (101a) in order to store n images in a memory.
  • (121a) of the source video sequence (not yet encoded images with time indices t + 1, t + 2, ..., t + n) before encoding.
  • the encoder performs the encoding of k images (112a) of the source video sequence (image being encoded with a time index t, and images already encoded with respective time indices t-1, ..., tk) according to the chosen encoding sequence, and outputs a compressed video (113a).
  • a prediction unit (131a) of the images of the source video sequence is configured to predict the evolution of the video in the future, from one or more images of the past (images (112a) already encoded or in progress. 'encoding by the encoder), and possibly from one or more images of the future (images (121a) not yet being encoded, and stored in memory, for example in the storage unit ( 120a)).
  • the prediction unit (131a) of the images of the source video sequence is configured to provide the analysis unit (130a) with predictions of at least one characteristic of blocks of the images to.
  • the analysis unit (130a) can be configured to perform certain analysis processing of the images to be encoded, such as, for example, as described above, detection of transitions and / or the implementation of an algorithm.
  • the number (n) of images stored in the memory of the storage unit (120a), in embodiments using a storage unit, will be less than the number (N) of stored images. in the memory of the storage unit when the proposed prediction module is not used (for example as illustrated in FIG. 2), so as to reduce the latency induced by this storage, even when image storage of the source video sequence before encoding is used.
  • FIG. 6b is a diagram illustrating a system configured for the implementation of the method proposed according to one or more embodiments, corresponding to a variant of the implementation illustrated by FIG. 6a in which the unit of analysis (130a) and the prediction unit (131a) are grouped together within an analysis prediction unit (132a), the functionalities of which correspond to all the functionalities of the analysis unit (130a) and functions of the prediction unit (131a) combined.
  • the analysis prediction unit (132a) of the images of the source video sequence is configured to provide the encoder (100a) with predictions of at least one characteristic of blocks of the images to be analyzed. encode on the basis of one or more images among the images (112a) of the past (image being encoded with time index t, and images already encoded with respective time indices t-1, ..., tk ) stored in the memory of the encoder (100a), as well as, in the embodiments illustrated in FIG.
  • the encoder (100a) can be configured to use certain processing for analyzing the images to be encoded, on the basis of the predictions and the analysis results supplied to it by the analysis prediction unit (132a).
  • FIG. 6c is a diagram illustrating a system configured for the implementation of the method proposed according to one or more other embodiments not using storage before encoding of images of the source video sequence.
  • no storage unit is interposed between the encoder (100b) and the arrival of the source video sequence (101b ) to store images of the source video sequence in memory before encoding.
  • the encoder performs the encoding of k images (112b) of the source video sequence (image being encoded with time index t, and images already encoded with respective time indices t-1, ..., tk) according to the encoding sequence chosen, and output a compressed video (113b).
  • An analysis prediction unit (131b) of the images of the source video sequence is configured to provide the encoder (100b) with predictions of block characteristics of the images to be encoded only on the basis of one or more images.
  • the encoder (100b) can be configured to perform or use certain analysis processing of the images to be encoded, on the basis of the predictions supplied to it by the analysis prediction unit (131b).
  • the analysis prediction unit (131b) relies only on images from the past to predict the desired analysis results.
  • the latency is then advantageously reduced to its minimum.
  • FIG. 6d is a diagram illustrating a system configured for the implementation of the method proposed according to one or more embodiments.
  • a storage unit (120c) comprising a memory is interposed between the encoder (100c) and the arrival of the source video sequence (101c) in order to store n images in a memory. (121 c1; 121c2; 121c3) of the source video sequence before encoding.
  • the memory storage within the storage unit (120c) is structured with three memories: a first memory (121 c1) stores images of the source video sequence in the order of d When displaying the images, a second memory (121c2) stores images of the source video sequence after reordering relative to their display order, and a third memory (121c3) stores images of the source video sequence in the image display. encoding order of these images.
  • the encoder (100c) performs the encoding of k images (112c) of the source video sequence (image being encoded with a time index t, and images already encoded with respective time indices t-1, ... , tk) according to the chosen encoding sequence, and outputs a compressed video (113c).
  • An analysis prediction unit (132c) of the images of the source video sequence is configured to predict the evolution of the video in the future, from one or more images from the past (images (112c) already encoded or being encoded by the encoder), and possibly from one or more images from the future (images (121 c1; 121c2; 121c3 ) not yet being encoded, and stored in memory, for example in the storage unit (120c)).
  • the analysis prediction unit (132c) of the images of the source video sequence is configured to provide the encoder (100c) with predictions of at least one characteristic of blocks of the images to be analyzed. encode on the basis of one or more images among the images (112c) of the past (image being encoded with time index t, and images already encoded with respective time indices t-1, ..., tk ) stored in the memory of the encoder (100c), as well as, in the embodiments illustrated in FIG. 6d, on the basis of one or more images among the images (121 c1; 121c2; 121c3) of the future stored in memory of the storage unit (120c).
  • the encoder (100c) can be configured to use certain processing for analyzing the images to be encoded, on the basis of the predictions and the analysis results supplied to it by the analysis prediction unit (132c).
  • the number (n) of images stored in the memory of the storage unit (120c) in embodiments using a storage unit, will preferably be chosen less than the number ( N) images stored in the memory of the storage unit when the proposed prediction module is not used (for example as illustrated in FIG. 2), so as to obtain a gain in latency reduction.
  • FIG. 6e is a diagram illustrating a system configured for the implementation of the method proposed according to one or more embodiments, corresponding to a variant of the implementation illustrated by FIG. 6d in which the implementation unit in memory (120d) only comprises a memory (121 d2) in which a reordering of the images of the source video sequence (101 d) is carried out.
  • the implementation unit in memory (120d) only comprises a memory (121 d2) in which a reordering of the images of the source video sequence (101 d) is carried out.
  • 6d allows a gain reduction in latency induced by the use of the storage unit, while keeping an analysis prediction unit (132d) configured to predict at least one characteristic for the blocks of the images of the future, that is to say according to the encoding sequence the images being encoded (112d) within the encoder (100d), on the base of the images being encoded (112d) and the images (121 d2) stored in the memory of the storage unit (120d), for the production of the compressed video (113d).
  • an analysis prediction unit 132d
  • the prediction of a characteristic of the current block can be determined using an artificial intelligence algorithm, such as for example a supervised learning algorithm.
  • the analysis unit implementing the algorithm of "MB Tree” type, as well as the storage unit can be wholly or partly replaced in one or more embodiments by a propagation cost prediction unit which relies only on past images, c 'that is to say on images available at the encoder.
  • this prediction unit can be configured to implement an artificial intelligence algorithm, and for example use a neural network.
  • the prediction unit may be configured to implement a supervised machine learning algorithm.
  • the implementation of an artificial intelligence algorithm can, in one or more embodiments, lead to performing a learning phase, prior to determining the prediction of the characteristic of the current block during a so-called inference phase during which a prediction model will be used to determine the prediction, in order to determine parameters of the prediction model.
  • the learning phase can be performed on a set of images different from the set of images comprising the images to be encoded, so that the algorithm used for determining the prediction has performed a phase training on data different from those used for the implementation of the prediction for encoding the images of a set of images.
  • the learning phase can comprise the determination of reference data comprising a reference prediction of the characteristic of a current block on which the learning is performed, the current block belonging to an image of the set of images on which the learning is carried out, called the current image, in an image of the set of images distinct from the current image and not yet encoded according to the encoding sequence of the set of images on which the learning is performed, on the basis of another image of the set of images distinct from the current image and not yet encoded according to the encoding sequence.
  • the reference data can thus correspond to the characteristic that one seeks to predict using the artificial intelligence algorithm.
  • These reference data can be used to carry out a training phase on a neural network, further on the basis of data input, in order to generate a prediction model of a characteristic of a current block in the images of the set of images not yet encoded according to an encoding sequence, for example to determine parameters of the model.
  • the prediction model can then be used to determine a prediction of the feature in one or more not yet encoded images, based on at least one already encoded image, as provided in one or more embodiments.
  • the reference data used during the learning phase may comprise data generated by an analysis unit implementing an “MB Tree” type algorithm, comprising for example block propagation costs of one or more images not yet encoded which are stored in memory, for example of a storage unit as illustrated in FIG. 4b.
  • the reference data can thus for example comprise the results of an “MB Tree” type algorithm applied to the current image of the learning phase.
  • the input data of the prediction model used for the learning phase of this model can include, in one or more embodiments, data of the current image of the learning phase.
  • the input data can comprise data of an image preceding the current image according to an encoding sequence used for the learning phase, that is to say of an image already encoded, previously to the current encoding of the current image.
  • the input data may include data from the image immediately preceding the current image in the encoding sequence used for the learning phase.
  • the input data may comprise data for estimating the movement of the current block between the current image and an image preceding the current image according to the encoding sequence used for the. learning phase.
  • this estimation data may include a motion estimation vector for the current block of the training phase, as well as optionally an objective distortion metric value, such as the sum of the differences. absolute values (SAD) or the mean square error (MSE), for the current block.
  • SAD absolute values
  • MSE mean square error
  • the proposed method can comprise the determination of a motion estimation vector of the current block, the motion estimation vector pointing to a block correlated with the current block in a image of separate image set of the current image and previously encoded according to the encoding sequence of the images of the set of images used for training.
  • the learning of the prediction model can, in one or more embodiments, be performed using the motion estimation vector determined for the current block.
  • training the prediction model for example the neural network, may further use an objective distortion metric value, such as the sum of absolute differences (SAD) or the root mean square error. (MSE), for the current block.
  • SAD sum of absolute differences
  • MSE root mean square error
  • the training of the neural network can be performed based on the current image of the learning phase (the current image then being included in the input data of the network for learning), and / or on the basis of an image of the set of images distinct from the current image and previously encoded according to the sequence for encoding the images of the set of images used for training (this image then being included in the input data of the network for training).
  • the learning phase therefore makes it possible to determine parameters of a prediction model, on the basis of input data of the model and of reference data supplied to the model for its training.
  • the input data can comprise data of the current image comprising the current block on which the learning is carried out, data of an image preceding the current image in an encoding sequence. images of the set of images used for training, and / or one or more motion vectors and an objective metric value, for example an SAD metric value, resulting from an estimation of motion between these two images .
  • the reference data can comprise propagation cost data, for example obtained by applying an “MB Tree” type algorithm to the image current.
  • the neural network used for determining a prediction of a characteristic of the current block may be of the convolutional neural network type.
  • Such a network is typically configured to learn filtering operations, so that learning parameters of the neural network includes learning filtering parameters.
  • FIG. 7a illustrates a system configured for the implementation of a learning phase according to one or more embodiments.
  • the system (1e) comprises a storage unit (120e) comprising a memory interposed between an encoder (100e) and the arrival of the source video sequence (101e) to store in a memory N images (121 e1; 121e2; 121e3) of the source video sequence (101e) before encoding.
  • the encoder (100e) performs the encoding of k images (112a) of the source video sequence (image being encoded with a time index t, and images already encoded with respective time indices t-1, ... , tk) according to the chosen encoding sequence, and outputs a compressed video (113e).
  • the storage unit (120e) and encoder (100e) can be built from a HEVC encoder implementation, such as x265.
  • a prediction unit (131e) of the images of the source video sequence is configured to predict the evolution of the video in the future, from one or more images from the past (images (112e) already encoded or being encoded by the encoder), and possibly from one or more images of the future (images not yet being encoded, and stored in memory, for example in the storage unit ( 120e)).
  • the prediction unit (131e) of the images of the source video sequence is configured to perform a training phase to generate an estimation model.
  • the prediction unit (131e) comprises an analysis unit (133e) configured to execute an "MB Tree" type algorithm from image data (121e3) stored in the memory of the storage unit (120e) and generate reports.
  • the learning unit (135e) is configured to receive this reference data, as well as input data comprising data of the current image stored in the encoder (100e) (image of time index "t” ), data of an image preceding the current image in the encoding sequence (for example, as illustrated in the figure, image of time index "t - 1"), as well as motion estimation data (comprising for example motion vectors (MV) and objective criterion values (SAD)) between these two images generated by a motion estimation unit (134e) of the prediction unit (131e).
  • input data comprising data of the current image stored in the encoder (100e) (image of time index "t" ), data of an image preceding the current image in the encoding sequence (for example, as illustrated in the figure, image of time index "t - 1")
  • motion estimation data comprising for example motion vectors (MV) and objective criterion values (SAD)
  • the reference data can thus be generated in one or more embodiments by applying an “MB Tree” type algorithm to images of the future with respect to the images being encoded.
  • the input data may include data from the current image and data from the image preceding the current image in the encoding sequence without including data for estimating motion between these. two images, or conversely comprising data for estimating movement between these two images without comprising data from the current image or data from the image preceding the current image in the encoding sequence.
  • the training unit (135e) can be configured to learn to estimate the reference data from the input data supplied to it, to generate the parameters of an estimate model (136e).
  • the system (1e) can use a neural network, to which the input data is provided for a learning phase for estimating the reference data, as described herein. - above. At the end of the learning, the parameters of the neural network are saved, the parameterized neural network providing the estimation model (136e).
  • FIG. 7b illustrates a system configured for implementing the method proposed according to one or more embodiments.
  • the system (1f) comprises a storage unit (120f) comprising a memory interposed between an encoder (10Of) and the arrival of the source video sequence (101 f) for storing in an image memory (121 f1; 121 f 2) of the source video sequence (101 f) before encoding.
  • the encoder (10Of) performs the encoding of k images (112f) of the source video sequence (image being encoded with a time index t, and images already encoded with respective time indices t-1, ... , tk) according to the chosen encoding sequence, and outputs a compressed video (113f).
  • the storage unit (120f) and encoder (1 OOf) can be built from the HEVC x265 encoder.
  • a prediction unit (131 f) of the images of the source video sequence is configured to predict the evolution of the video in the future, from one or more images from the past (images (112f) already encoded. or being encoded by the encoder), and possibly from one or more images of the future (images not yet being encoded, and stored in memory, for example in the storage unit (120f)).
  • the prediction unit (131 f) of the images of the source video sequence comprises an inference unit (137f) configured to determine a prediction of a characteristic of a current block of a. current image (image being encoded with temporal index t), and supplying the determined prediction to the encoder (1 OOf).
  • the predicted characteristic comprises a propagation cost of the current block, which corresponds to the learning phase illustrated by FIG. 7a which uses reference data comprising propagation costs generated by application of d 'an “MB Tree” type algorithm.
  • the system (1f) therefore advantageously makes it possible to supply an encoder with propagation cost data, without having recourse to an analysis unit configured to apply an “MB Tree” type algorithm to image data of the future stored in memory of a storage unit.
  • the types of input data for the learning phase can correspond to the types of input data for the inference phase (or prediction phase).
  • the input data of the inference unit (137f) can comprise data of the current image stored in the encoder (1 OOf) (time index image " t "), data of an image preceding the current image in the encoding sequence (for example, as illustrated in the figure, image of time index" t - 1 "), as well as estimation data of motion (comprising for example motion vectors (MV) and objective criterion values (SAD)) between these two images generated by a motion estimation unit (134f) of the prediction unit (131e), data of the current image and data of the image preceding the current image in the encoding sequence without including data for estimating movement between these two images, or conversely including data for estimating movement between these two images without including data from the current image or data from the image preceding the current image in the encoding sequence.
  • estimation data of motion comprising for example motion vectors (MV) and objective criterion values (SAD)
  • the system (1f) can use a neural network, to which, after learning, input data is provided for the estimation of a characteristic of a current block of an image. current in a set of images to encode.
  • the inference unit (137f) can be configured to apply the neural network with the settings saved during training.
  • the neural network can be configured to take the same data as input as during training, and to output estimated propagation costs, replacing the propagation costs generated by an "MB tree" type algorithm.
  • the part of the storage unit (120f) that is no longer needed is removed, which effectively reduces encoding latency.
  • FIG. 8 illustrates an exemplary architecture of a device for implementing the proposed method, according to one or more embodiments.
  • the device 300 comprises a controller 301, operably coupled to an input interface 302, an output interface 303 and to a memory 304, which drives a prediction unit 305.
  • the input interface 302 is configured to receive, for example via a storage unit (to implement a functionality of the “lookahead” type) or an encoding unit. video (not shown in the figure), data corresponding to images of a set of images.
  • the input interface 302 may further be configured to receive reference data and input data, for implementations of a learning phase and an inference phase, as described below. above, in embodiments in which the prediction unit 305 is configured to implement an artificial intelligence algorithm such as, for example, a supervised machine learning algorithm.
  • the output interface 303 is configured to provide data generated by the prediction unit to a device configured to use that data, such as, for example, a video encoder unit.
  • the controller 301 is configured to drive the prediction unit 305 for the implementation of one or more embodiments of the proposed method.
  • Prediction unit 305 can be configured to determine a prediction of a characteristic of a current block, and to provide that prediction on output interface 303 to a video encoder unit.
  • the prediction unit 305 can be configured to implement an artificial intelligence algorithm, using a neural network, such as, for example, a supervised learning algorithm.
  • the prediction unit 305 may include an analysis unit configured to perform analysis of image data received on the input interface 302, such as, for example, analysis using an “MB Tree” type algorithm.
  • the device 300 may be a computer, a computer network, an electronic component, or other apparatus comprising a processor operably coupled to a memory, as well as, depending on the embodiment selected, a data storage unit, and other associated hardware elements such as a network interface and a media drive for reading and writing removable storage media (not shown in the figure).
  • the removable storage medium can be, for example, a compact disc (CD), a digital video / versatile disc (DVD), a flash disc, a USB stick, etc.
  • the memory, the data storage unit or the removable storage medium contains instructions which, when executed by the controller 301, cause this controller 301 to perform or control the interface parts of it.
  • the controller 301 can be a component implementing one or more processors or a calculation unit for the image encoding according to the proposed method and the control of the units 302, 303, 304 and 305 of the device 300.
  • the device 300 can be implemented in software form, in hardware form, such as an ASIC type circuit, or in the form of a combination of hardware and software elements, such as for example a software program intended for to be loaded and executed on an FPGA type component.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

A method for encoding a first image within a first set of images, in which the first image is cut into blocks, each block being encoded according to one among a plurality of coding modes, is proposed, which comprises, for a current block of the first image, the determination, on the basis of at least one second image distinct from the first image and previously encoded according to an encoding sequence of the images of the first set of images, of a prediction of a feature of the current block in one or more third images from the first set of images distinct from the first image and not yet encoded according to the encoding sequence, and the use of the prediction to encode the current block while minimizing a flow-distortion criterion.

Description

Description Description
Titre : PROCEDE D’ENCODAGE D’IMAGE ET EQUIPEMENT POUR LA MISE EN ŒUVRE DU PROCEDE Title: IMAGE ENCODING PROCESS AND EQUIPMENT FOR IMPLEMENTING THE PROCESS
[0001] La présente invention se rapporte à un procédé d’encodage d’image et un dispositif pour la mise en œuvre de ce procédé. Elle s’applique notamment au codage d’images d’un flux vidéo. The present invention relates to an image encoding method and a device for implementing this method. It applies in particular to the encoding of images of a video stream.
[0002] Les données vidéo font en général l’objet d’un codage source visant à les compresser afin de limiter les ressources nécessaires à leur transmission et/ou à leur stockage. Il existe de nombreux standards de codage, tels que H.264/AVC (de l’anglais « Advanced Video Coding »), H.265/HEVC (de l’anglais « High Efficiency Video Coding ») et MPEG-2 (développé par le groupe d’experts « Motion Picture Experts Group »), qui peuvent être utilisés à cette fin. [0002] Video data is generally subject to source coding aimed at compressing it in order to limit the resources required for its transmission and / or storage. There are many coding standards, such as H.264 / AVC (for "Advanced Video Coding"), H.265 / HEVC (for "High Efficiency Video Coding") and MPEG-2 (developed by the Motion Picture Experts Group), which can be used for this purpose.
[0003] On considère un flux vidéo comprenant un ensemble d’images. Dans les schémas de codage classique, les images du flux vidéo à encoder sont typiquement considérées selon une séquence d’encodage, et chacune est divisée en ensembles de pixels eux aussi traités séquentiellement, par exemple en commençant en haut à gauche et en finissant en bas à droite de chaque image. We consider a video stream comprising a set of images. In conventional encoding schemes, the images of the video stream to be encoded are typically considered according to an encoding sequence, and each is divided into sets of pixels which are also processed sequentially, for example starting at the top left and ending at the bottom. to the right of each image.
[0004] L’encodage d’une image du flux est ainsi effectué en divisant une matrice de pixels correspondant à l’image en plusieurs ensembles, par exemple des blocs de taille fixe 16 x 16, 32 x 32 ou 64 x 64, et en encodant ces blocs de pixels selon une séquence de traitement donnée. Certains standards, comme le H.264/AVC, prévoient la possibilité de décomposer des blocs de taille 16 x 16 (appelés alors macro-blocs) en sous-blocs, par exemple de taille 8 x 8 ou 4 x 4, afin d’effectuer les traitements d’encodage avec une granularité plus fine. [0004] The encoding of an image of the stream is thus carried out by dividing a matrix of pixels corresponding to the image into several sets, for example blocks of fixed size 16 x 16, 32 x 32 or 64 x 64, and by encoding these blocks of pixels according to a given processing sequence. Some standards, such as H.264 / AVC, provide for the possibility of breaking down blocks of size 16 x 16 (then called macro-blocks) into sub-blocks, for example of size 8 x 8 or 4 x 4, in order to perform encoding processing with finer granularity.
[0005] La techniques existantes de compression vidéo peuvent être divisées en deux grandes catégories : d’une part la compression dite « Intra », dans laquelle les traitements de compression sont effectuées sur les pixels d’une unique image ou trame vidéo, et d’autre part la compression dite « Inter », dans laquelle les traitements de compression sont effectuées sur plusieurs images ou trames vidéo. Dans le mode Intra, le traitement d’un bloc (ou ensemble) de pixels comprend typiquement une prédiction des pixels du bloc effectuée à l’aide de pixels causaux (précédemment codés) présents dans l’image en cours d’encodage (dite « image courante »), auquel cas on parle de « prédiction Intra ». Dans le mode Inter, le traitement d’un bloc (ou ensemble) de pixels comprend typiquement une prédiction des pixels du bloc effectuée à l’aide de pixels issus d’images précédemment codées, auquel cas on parle de « prédiction Inter » ou de « compensation de mouvement » (en anglais « motion compensation »). [0005] The existing video compression techniques can be divided into two main categories: on the one hand, so-called “intra” compression, in which the compression processing operations are carried out on the pixels of a single image or video frame, and d on the other hand, so-called “Inter” compression, in which the compression processing operations are carried out on several images or video frames. In Intra mode, the processing of a block (or set) of pixels comprises typically a prediction of the pixels of the block carried out using causal pixels (previously encoded) present in the image being encoded (called “current image”), in which case one speaks of “Intra prediction”. In the Inter mode, the processing of a block (or set) of pixels typically comprises a prediction of the pixels of the block performed using pixels from previously encoded images, in which case one speaks of “Inter prediction” or of. "Motion compensation".
[0006] Ces deux types de codage sont utilisés dans les codées vidéo existants (MPEG2, H.264/AVC, HEVC) et sont décrits pour le codée HEVC dans l’article intitulé « OverView of the High Efficiency Video Coding (HEVC) Standard », par Gary J. Sullivan et al., IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, No. 12, Dec. 2012. These two types of coding are used in existing video coded (MPEG2, H.264 / AVC, HEVC) and are described for the HEVC coded in the article entitled "OverView of the High Efficiency Video Coding (HEVC) Standard By Gary J. Sullivan et al., IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, No. 12, Dec. 2012.
[0007] Cette exploitation des redondances spatiales et/ou temporelles permet d’éviter de transmettre ou de stocker la valeur des pixels de chaque bloc (ou ensemble) de pixels, en représentant certains au moins des blocs par un résiduel de pixels représentant la différence (ou la distance) entre les valeurs de prédiction des pixels du bloc et les valeurs réelles des pixels du bloc prédit. L’information des résiduels de pixels est présente dans les données générées par l’encodeur après transformée (par exemple, de type DCT) et quantification afin de réduire l’entropie des données générées par l’encodeur. This exploitation of spatial and / or temporal redundancies makes it possible to avoid transmitting or storing the value of the pixels of each block (or set) of pixels, by representing at least some of the blocks by a residual of pixels representing the difference (or the distance) between the prediction values of the pixels of the block and the actual values of the pixels of the predicted block. The pixel residual information is present in the data generated by the encoder after transform (eg, DCT type) and quantization in order to reduce the entropy of the data generated by the encoder.
[0008] Il est souhaitable de réduire autant que possible les informations additionnelles générées par la prédiction des pixels et présentes en sortie de l’encodeur afin d’augmenter l’efficacité d’un schéma de codage/compression à un niveau de distorsion donné. A l’inverse, on peut aussi chercher à réduire ces informations additionnelles pour augmenter l’efficacité d’un schéma de codage/compression à un niveau de débit de sortie de l’encodeur donné. [0008] It is desirable to reduce as much as possible the additional information generated by the pixel prediction and present at the output of the encoder in order to increase the efficiency of an encoding / compression scheme at a given level of distortion. Conversely, one can also seek to reduce this additional information to increase the efficiency of an encoding / compression scheme at a given encoder output rate level.
[0009] Un encodeur vidéo effectue typiquement un choix de mode d’encodage correspondant à une sélection de paramètres d’encodage pour un ensemble de pixels traité. Cette prise de décision peut être implémentée en optimisant une métrique de débit et distorsion, les paramètres d’encodage sélectionnés par l’encodeur étant ceux qui minimisent un critère débit-distorsion. Le choix du mode d’encodage a alors un impact sur les performances de l’encodeur, à la fois en termes de gain de débit et de qualité visuelle. [0009] A video encoder typically makes a choice of encoding mode corresponding to a selection of encoding parameters for a set of pixels processed. This decision-making can be implemented by optimizing a bit rate and distortion metric, the encoding parameters selected by the encoder being those which minimize a bit rate-distortion criterion. The choice of mode encoding then has an impact on the performance of the encoder, both in terms of bit rate gain and visual quality.
[0010] Un encodeur vidéo peut ainsi être conçu de manière à produire la qualité la plus élevée possible tout en respectant un jeu de contraintes correspondant au cas d’usage considéré. Dans le cas de la diffusion de programmes de télévision, les contraintes principales imposées aux encodeurs vidéo sont le débit, le temps de traitement, la latence (ou délai), les caractéristiques de la source vidéo, la consommation énergétique et le coût. Le temps de traitement est critique pour la diffusion temps-réel. Associé aux autres contraintes, il en ressort qu’un encodeur vidéo conçu pour la diffusion temps-réel met en œuvre un compromis entre qualité et ressources calculatoires. L’augmentation des ressources calculatoires disponibles permet d’améliorer la qualité. De même le débit impose une limite sur la qualité qu’il est possible d’atteindre. Augmenter le débit permet ainsi d’améliorer la qualité. [0010] A video encoder can thus be designed so as to produce the highest possible quality while respecting a set of constraints corresponding to the use case considered. In the case of the broadcasting of television programs, the main constraints imposed on video encoders are the bit rate, the processing time, the latency (or delay), the characteristics of the video source, the energy consumption and the cost. Processing time is critical for real-time broadcasting. Combined with the other constraints, it emerges that a video encoder designed for real-time broadcasting implements a compromise between quality and computational resources. The increase in available computing resources improves quality. Likewise, the throughput imposes a limit on the quality that can be achieved. Increasing the bit rate thus improves the quality.
[0011] La qualité dépend également de la latence. Aussi, afin de maximiser la qualité d’encodage, certains encodeurs vidéo mettent en œuvre une technique dite du « lookahead », selon laquelle des images qui rentrent dans le processus d’encodage sont stockées temporairement dans une mémoire tampon avant d’être effectivement encodées. Cette mise en mémoire d’images avant traitement par l’encodeur vidéo permet de mettre en œuvre des outils d’analyse et de traitement des images dont l’encodeur peut bénéficier, mais introduit une latence dans le processus d’encodage induite par la mise en mémoire. The quality also depends on the latency. Also, in order to maximize the encoding quality, some video encoders implement a technique called "lookahead", according to which images which enter the encoding process are temporarily stored in a buffer memory before being actually encoded. . This storage of images before processing by the video encoder makes it possible to implement tools for analyzing and processing images from which the encoder can benefit, but introduces a latency in the encoding process induced by the setting. in memory.
[0012] Dans les systèmes pour lesquels la latence est autorisée, l’efficacité de codage peut être rendue maximale par l’utilisation d’une mise en mémoire d’images avant traitement par l’encodeur. A l’inverse, lorsque la latence est interdite, l’efficacité de codage est limitée par l’absence de mémoire. Cependant, dans le cas d’une diffusion « live », il est souhaitable d’avoir à la fois une latence faible, un débit bas et une qualité vidéo élevée. [0012] In systems where latency is allowed, encoding efficiency can be maximized by the use of image storage before encoder processing. Conversely, when latency is prohibited, coding efficiency is limited by the lack of memory. However, in the case of a "live" broadcast, it is desirable to have both low latency, low bit rate and high video quality.
[0013] Il existe ainsi un besoin pour un procédé d’encodage d’image répondant aux inconvénients exposés ci-dessus. [0013] There is thus a need for an image encoding method meeting the drawbacks set out above.
Résumé [0014] La présente divulgation vient améliorer la situation. summary The present disclosure improves the situation.
[0015] Selon un premier aspect, il est proposé un procédé d’encodage d’une première image dans un premier ensemble d’images, dans lequel la première image est découpée en blocs, chaque bloc étant encodé selon un parmi une pluralité de modes de codage, le procédé comprenant, pour un bloc courant de la première image : déterminer, sur la base d’au moins une deuxième image distincte de la première image et précédemment encodée selon une séquence d’encodage des images du premier ensemble d’images, une prédiction d’une caractéristique du bloc courant dans une ou plusieurs troisièmes images du premier ensemble d’images distinctes de la première image et non encore encodées selon la séquence d’encodage ; et utiliser la prédiction pour l’encodage du bloc courant en minimisant un critère débit-distorsion. According to a first aspect, there is proposed a method of encoding a first image in a first set of images, in which the first image is cut into blocks, each block being encoded according to one of a plurality of modes encoding, the method comprising, for a current block of the first image: determining, on the basis of at least one second image distinct from the first image and previously encoded according to an encoding sequence of the images of the first set of images , a prediction of a characteristic of the current block in one or more third images of the first set of images distinct from the first image and not yet encoded according to the encoding sequence; and use the prediction for encoding the current block by minimizing a rate-distortion criterion.
[0016] De manière avantageuse, le procédé proposé utilise, pour l’encodage d’un bloc courant d’une image courante (en cours d’encodage), une prédiction d’une caractéristique du bloc courant dans une ou plusieurs images non encore encodées, ce qui permet d’éviter d’avoir recours, en tout ou partie, à la technique dite de « lookahead » de mise en mémoire tampon d’images non encore encodées en amont de l’encodage, de manière à effectuer une analyse utilisant ces images pour calculer la caractéristique. La latence générée par cette mise en mémoire peut ainsi être diminuée, voire complètement supprimée. Advantageously, the proposed method uses, for the encoding of a current block of a current image (during encoding), a prediction of a characteristic of the current block in one or more images not yet encoded, which makes it possible to avoid having recourse, in whole or in part, to the technique known as "lookahead" of buffering of images not yet encoded upstream of encoding, so as to perform an analysis using these images to calculate the characteristic. The latency generated by this storage can thus be reduced, or even completely eliminated.
[0017] Dans un ou plusieurs modes de réalisation, la prédiction peut être déterminée sur la base d’au moins une image déjà encodée dans l’ensemble d’images. Ces modes de réalisation permettent avantageusement de déterminer la prédiction sur la seule base d’images déjà encodées, sans qu’il soit nécessaire de conserver en mémoire des images non encore encodées aux fins de déterminer la prédiction. [0017] In one or more embodiments, the prediction can be determined based on at least one image already encoded in the set of images. These embodiments advantageously make it possible to determine the prediction solely on the basis of images already encoded, without it being necessary to keep in memory images not yet encoded for the purposes of determining the prediction.
[0018] Dans un ou plusieurs modes de réalisation, la caractéristique peut comprendre un coût de propagation du bloc courant dans les unes ou plusieurs troisièmes images du premier ensemble d’images. [0018] In one or more embodiments, the characteristic may include a cost of propagating the current block in one or more third images of the first set of images.
[0019] Dans un ou plusieurs modes de réalisation, la caractéristique peut comprendre une mesure de présence d’une transition dans le bloc courant. [0020] Dans un ou plusieurs modes de réalisation, la caractéristique peut comprendre une mesure de l’évolution dans le bloc courant de la quantité d’information au cours du temps. In one or more embodiments, the characteristic may include a measurement of the presence of a transition in the current block. [0020] In one or more embodiments, the characteristic can comprise a measurement of the evolution in the current block of the quantity of information over time.
[0021] Dans un ou plusieurs modes de réalisation, la prédiction du bloc courant peut en outre être déterminée sur la base d’au moins une quatrième image distincte de la première image et non encore encodée selon la séquence d’encodage. Ces modes de réalisation permettent avantageusement de déterminer la prédiction non seulement sur la base d’images déjà encodées, mais aussi sur la base d’images non encore encodées dans la mesure où celles-ci sont disponibles pour la détermination de la prédiction, c’est-à-dire où elles sont stockées en mémoire. La détermination de la prédiction peut ainsi être affinée dans les cas où l’on dispose par le biais d’un stockage en mémoire d’images de l’ensemble d’images à encoder qui ne sont pas encore encodées. [0021] In one or more embodiments, the prediction of the current block can further be determined on the basis of at least a fourth image distinct from the first image and not yet encoded according to the encoding sequence. These embodiments advantageously make it possible to determine the prediction not only on the basis of images already encoded, but also on the basis of images not yet encoded insofar as these are available for determining the prediction, ie. that is, where they are stored in memory. The determination of the prediction can thus be refined in cases where it is available by means of image storage of the set of images to be encoded which have not yet been encoded.
[0022] Dans un ou plusieurs modes de réalisation, la prédiction de la caractéristique du bloc courant est déterminée en utilisant un algorithme d’intelligence artificielle tel que, par exemple, un algorithme d’apprentissage supervisé. [0022] In one or more embodiments, the prediction of the characteristic of the current block is determined using an artificial intelligence algorithm such as, for example, a supervised learning algorithm.
[0023] Dans un ou plusieurs modes de réalisation, le procédé proposé peut alors comprendre une phase d’apprentissage d’un réseau de neurones effectuée sur un deuxième ensemble d’images, la phase d’apprentissage comprenant, pour un bloc courant d’une image courante du deuxième ensemble d’images : déterminer, sur la base d’au moins une image du deuxième ensemble d’images distincte de l’image courante et non encore encodée selon une séquence d’encodage des images du deuxième ensemble d’images, une prédiction de référence de la caractéristique du bloc courant dans une image du deuxième ensemble d’images distincte de l’image courante et non encore encodée selon la séquence d’encodage du deuxième ensemble d’images ; et effectuer une phase d’apprentissage du réseau de neurones sur la base de données d’entrée, et sur la base de la prédiction de référence du bloc courant comprise dans des données de référence, pour générer un modèle de prédiction de la caractéristique du bloc courant dans les images du deuxième ensemble d’images non encore encodées selon la séquence d’encodage. In one or more embodiments, the proposed method can then comprise a learning phase of a neural network performed on a second set of images, the learning phase comprising, for a current block of a current image of the second set of images: determining, on the basis of at least one image of the second set of images distinct from the current image and not yet encoded according to an encoding sequence of the images of the second set of images, a reference prediction of the characteristic of the current block in an image of the second set of images distinct from the current image and not yet encoded according to the encoding sequence of the second set of images; and performing a learning phase of the neural network on the basis of input data, and on the basis of the reference prediction of the current block included in reference data, to generate a prediction model of the characteristic of the block current in the images of the second set of images not yet encoded according to the encoding sequence.
[0024] Dans un ou plusieurs modes de réalisation, la pluralité de modes de codage peut comprendre au moins un mode de codage de type à prédiction par corrélation temporelle utilisant une pluralité d’images d’un ensemble d’images à encoder. Le procédé peut alors comprendre, en outre, pour un bloc courant d’une image courante du deuxième ensemble d’images : déterminer un vecteur d’estimation de mouvement du bloc courant, le vecteur d’estimation de mouvement pointant sur un bloc corrélé au bloc courant dans une image du deuxième ensemble d’images distincte de l’image courante et précédemment encodée selon la séquence prédéfinie d’encodage des images du deuxième ensemble d’images; et l’apprentissage du réseau de neurones peut être effectué en outre sur la base du vecteur d’estimation de mouvement du bloc courant compris dans les données d’entrée. In one or more embodiments, the plurality of encoding modes may include at least one time correlation prediction type encoding mode using a plurality of images from a set of images to be encoded. The method can then further comprise, for a current block of a current image of the second set of images: determining a motion estimation vector of the current block, the motion estimation vector pointing to a block correlated with the current block in an image of the second set of images distinct from the current image and previously encoded according to the predefined sequence for encoding the images of the second set of images; and the learning of the neural network can be further performed based on the motion estimation vector of the current block included in the input data.
[0025] Dans un ou plusieurs modes de réalisation, l’apprentissage du réseau de neurones peut être effectué sur la base de l’image courante comprise dans les données d’entrée et/ou sur la base d’une image du deuxième ensemble d’images distincte de l’image courante et précédemment encodée selon la séquence d’encodage des images du deuxième ensemble d’images, comprise dans les données d’entrée. In one or more embodiments, the learning of the neural network can be performed on the basis of the current image included in the input data and / or on the basis of an image of the second set of 'images distinct from the current image and previously encoded according to the encoding sequence of the images of the second set of images, included in the input data.
[0026] Dans un ou plusieurs modes de réalisation, le réseau de neurones peut être choisi convoi utif. [0026] In one or more embodiments, the neural network can be chosen to be convoy utif.
[0027] Dans un ou plusieurs modes de réalisation, la prédiction de la caractéristique du bloc courant peut être déterminée en utilisant le modèle de prédiction, sur la base de la première image et sur la base de l’au moins une deuxième image comprises dans des données d’entrée du modèle de prédiction . In one or more embodiments, the prediction of the characteristic of the current block can be determined using the prediction model, based on the first image and based on the at least one second image included in input data of the prediction model.
[0028] Dans un ou plusieurs modes de réalisation, la pluralité de modes de codage peut comprendre au moins un mode de codage de type à prédiction par corrélation temporelle utilisant une pluralité d’images du premier ensemble d’images, le procédé proposé comprenant alors en outre : déterminer un vecteur d’estimation de mouvement du bloc courant, le vecteur d’estimation de mouvement pointant sur un bloc corrélé au bloc courant dans une image du premier ensemble d’images distincte de la première image et précédemment encodée selon la séquence prédéfinie d’encodage des images du premier ensemble d’images; et la prédiction du bloc courant peut être déterminée en utilisant le modèle de prédiction, sur la base du vecteur d’estimation de mouvement compris dans les données d’entrée du modèle de prédiction. In one or more embodiments, the plurality of encoding modes may include at least one time correlation prediction type encoding mode using a plurality of images from the first set of images, the proposed method then comprising in addition: determining a motion estimation vector of the current block, the estimation vector of movement pointing to a block correlated with the current block in an image of the first set of images distinct from the first image and previously encoded according to the predefined sequence for encoding the images of the first set of images; and the prediction of the current block can be determined using the prediction model, based on the motion estimate vector included in the input data of the prediction model.
[0029] Le procédé proposé convient particulièrement bien, bien que de façon non exclusive, pour l’encodage ou la compression d’une image d’une séquence d’images selon un schéma du type H.261, MPEG-1 Part 2, H.262, MPEG-2 Part 2, H.264, AVC, MPEG-4 Part 2, H. 265, HEVC ou SHVC (Scalable HEVC). Mais il convient aussi pour l’encodage d’images, par exemple d’une séquence vidéo, selon tout schéma d’encodage vidéo opérant sur des images découpées en blocs, en particulier dans lequel les blocs sont encodés selon une pluralité de modes de codage comprenant au moins un mode de codage de type à prédiction par corrélation temporelle ou spatiale. The proposed method is particularly suitable, although not exclusively, for encoding or compressing an image of a sequence of images according to a scheme of the H.261, MPEG-1 Part 2 type, H.262, MPEG-2 Part 2, H.264, AVC, MPEG-4 Part 2, H. 265, HEVC or SHVC (Scalable HEVC). But it is also suitable for encoding images, for example of a video sequence, according to any video encoding scheme operating on images cut into blocks, in particular in which the blocks are encoded according to a plurality of encoding modes. comprising at least one coding mode of the type with prediction by temporal or spatial correlation.
[0030] Le procédé proposé convient particulièrement bien, bien que de façon non limitative, pour l’encodage ou la compression d’une image d’une séquence d’images correspondant à un ou plusieurs contenus multimédia distribués en live, en utilisant une technologie de diffusion de contenus multimédia sur le réseau Internet, par exemple selon un schéma de type « HLS » (de l’anglais « HTTP Live Streaming », l’acronyme « HTTP » désignant le protocole « HyperText Transfer Protocol »), « MSS » (de l’anglais « Microsoft Smooth Streaming »), « HDS » (de l’anglais « HTTP Dynamic Streaming »), « MPEG-DASH » (de l’anglais « MPEG Dynamic Adaptive Streaming over HTTP »), ou « HAS » (de l’anglais « HTTP Adaptive Streaming »), ou en utilisant une technologie de diffusion télévisuelle de contenus multimédia sur un réseau de diffusion de télévision, par exemple selon un schéma de type « DVB » (de l’anglais « Digital Video Broadcast »), ou de type « ATSC » (de l’anglais « Advanced Télévision Systems Committee »). The proposed method is particularly suitable, although in a non-limiting manner, for the encoding or the compression of an image of a sequence of images corresponding to one or more multimedia contents distributed live, using a technology for broadcasting multimedia content on the Internet, for example according to an "HLS" type scheme (standing for "HTTP Live Streaming", the acronym "HTTP" denoting the protocol "HyperText Transfer Protocol"), "MSS" (for "Microsoft Smooth Streaming"), "HDS" (for "HTTP Dynamic Streaming"), "MPEG-DASH" (for "MPEG Dynamic Adaptive Streaming over HTTP"), or "HAS "(From the English" HTTP Adaptive Streaming "), or by using a television broadcasting technology for multimedia content on a television broadcasting network, for example according to a" DVB "type scheme (from the English" Digital Video Broadcast ”), or of the“ ATSC ”type (standing for“ Advanced Television Systems Commi head ').
[0031] Le procédé proposé pourra avantageusement être mis en œuvre dans tout dispositif configuré pour l’encodage ou la compression d’une image d’une séquence d’images, en particulier correspondant à un ou plusieurs contenus multimédia distribués en live, par exemple selon un schéma de type MPEG DASH, HLS, HDS, MSS, ou HAS, tel que, de façon non limitative, tout ordinateur, serveur, équipement de tête de réseau de diffusion, équipement de réseau de diffusion, etc. The proposed method can advantageously be implemented in any device configured for the encoding or the compression of an image of a sequence of images, in particular corresponding to one or more contents. multimedia distributed live, for example according to an MPEG DASH, HLS, HDS, MSS, or HAS type scheme, such as, without limitation, any computer, server, broadcast head end equipment, broadcast network equipment , etc.
[0032] Selon un deuxième aspect, il est proposé un dispositif d’encodage d’images comprenant une interface d’entrée configurée pour recevoir une première image d’un ensemble d’images, et une unité d’encodage d’images, couplée de manière opérationnelle à l’interface d’entrée, et configurée pour découper la première image en blocs, et encoder chaque bloc selon un parmi une pluralité de modes de codage selon le procédé proposé. According to a second aspect, there is proposed an image encoding device comprising an input interface configured to receive a first image of a set of images, and an image encoding unit, coupled operatively at the input interface, and configured to split the first image into blocks, and to encode each block according to one of a plurality of encoding modes according to the proposed method.
[0033] Selon un autre aspect, il est proposé un programme d’ordinateur, chargeable dans une mémoire associée à un processeur, et comprenant des portions de code pour la mise en œuvre des étapes du procédé proposé lors de l’exécution dudit programme par le processeur, ainsi qu’un ensemble de données représentant, par exemple par voie de compression ou d’encodage, ledit programme d’ordinateur. According to another aspect, there is proposed a computer program, loadable into a memory associated with a processor, and comprising portions of code for the implementation of the steps of the method proposed during the execution of said program by the processor, as well as a set of data representing, for example by compression or encoding, said computer program.
[0034] Un autre aspect concerne un support de stockage non-transitoire d’un programme exécutable par ordinateur, comprenant un ensemble de données représentant un ou plusieurs programmes, lesdits un ou plusieurs programmes comprenant des instructions pour, lors de l’exécution desdits un ou plusieurs programmes par un ordinateur comprenant une unité de traitement couplée de manière opérationnelle à des moyens mémoire et à un module d’interface entrées/sorties, conduire l’ordinateur à encoder une première image découpée en blocs selon le procédé proposé. Another aspect relates to a non-transient storage medium for a computer executable program, comprising a set of data representing one or more programs, said one or more programs comprising instructions for, during the execution of said one. or several programs by a computer comprising a processing unit operatively coupled to memory means and to an input / output interface module, causing the computer to encode a first image cut into blocks according to the proposed method.
Brève description des dessins Brief description of the drawings
[0035] D'autres particularités et avantages de la présente invention apparaîtront dans la description ci-après d'exemples de réalisation non limitatifs, en référence aux dessins annexés, dans lesquels : Other features and advantages of the present invention will become apparent from the following description of non-limiting embodiments, with reference to the accompanying drawings, in which:
Fig. 1 Fig. 1
[0036] [Fig. 1] est un schéma illustrant un exemple d’architecture d’encodeur, selon un ou plusieurs modes de réalisation. Fig. 2 [0036] [Fig. 1] is a diagram illustrating an example of encoder architecture, according to one or more embodiments. Fig. 2
[0037] [Fig. 2] est un schéma de principe illustrant la technique de mise en mémoire. [0037] [Fig. 2] is a block diagram illustrating the storage technique.
Fig. 3 [0038] [Fig. 3] est un schéma illustrant un exemple de ré-ordonnancement d’images pour un encodage avec des images B. Fig. 3 [0038] [Fig. 3] is a diagram illustrating an example of image reordering for encoding with B images.
Fig. 4a Fig. 4a
[0039] [Fig. 4a] illustre un exemple de configuration d’un tampon mémoire d’unité de mise en mémoire comprenant 3 parties. Fig. 4b [0039] [Fig. 4a] illustrates an example of the configuration of a storage unit memory buffer comprising 3 parts. Fig. 4b
[0040] [Fig. 4b] illustre un exemple d’encodeur intégrant un module d’analyse de type « MB Tree » et utilisant une unité de mise en mémoire dont la mémoire a une structure comprenant trois tampons mémoire. [0040] [Fig. 4b] illustrates an example of an encoder integrating an analysis module of the "MB Tree" type and using a storage unit whose memory has a structure comprising three memory buffers.
Fig. 4c [0041] [Fig. 4c] illustre un exemple de structure de mise en mémoire d’images issues d’une séquence vidéo source au sein d’une unité de mise en mémoire.Fig. 4c [0041] [Fig. 4c] illustrates an example of a structure for storing images from a source video sequence within a storage unit.
Fig. 5 Fig. 5
[0042] [Fig. 5] est un diagramme illustrant le procédé proposé selon un ou plusieurs modes de réalisation. Fig. 6a [0042] [Fig. 5] is a diagram illustrating the method proposed according to one or more embodiments. Fig. 6a
[0043] [Fig. 6a] est un schéma illustrant un système d’encodage d’images configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation. [0043] [Fig. 6a] is a diagram illustrating an image encoding system configured for implementing the method proposed according to one or more embodiments.
Fig. 6b [0044] [Fig. 6b] est un schéma illustrant un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation. Fig. 6c Fig. 6b [0044] [Fig. 6b] is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments. Fig. 6c
[0045] [Fig. 6c] est un schéma illustrant un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs autres modes de réalisation.[0045] [Fig. 6c] is a diagram illustrating a system configured for implementing the method proposed according to one or more other embodiments.
Fig. 6d [0046] [Fig. 6d] est un schéma illustrant un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation. Fig. 6d [0046] [Fig. 6d] is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments.
Fig. 6e Fig. 6th
[0047] [Fig. 6e] est un schéma illustrant un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation. Fig. 7a [0047] [Fig. 6e] is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments. Fig. 7a
[0048] [Fig. 7a] est un schéma illustrant un système configuré pour la mise en œuvre d’une phase d’apprentissage selon un ou plusieurs modes de réalisation.[0048] [Fig. 7a] is a diagram illustrating a system configured for the implementation of a learning phase according to one or more embodiments.
Fig. 7b Fig. 7b
[0049] [Fig. 7b] est un schéma illustrant un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation. [0049] [Fig. 7b] is a diagram illustrating a system configured for implementing the method proposed according to one or more embodiments.
Fig. 8 Fig. 8
[0050] [Fig. 8] est un schéma illustrant un exemple d’architecture de dispositif configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation. Description des modes de réalisation [0050] [Fig. 8] is a diagram illustrating an example of the architecture of a device configured for the implementation of the method proposed according to one or more embodiments. Description of the embodiments
[0051] Dans la description détaillée ci-après de modes de réalisation de l'invention, de nombreux détails spécifiques sont présentés pour apporter une compréhension plus complète. Néanmoins, l'homme du métier peut se rendre compte que des modes de réalisation peuvent être mis en pratique sans ces détails spécifiques. Dans d'autres cas, des caractéristiques bien connues ne sont pas décrites en détail pour éviter de compliquer inutilement la description. [0052] La présente description fait référence à des fonctions, moteurs, unités, modules, plateformes, et illustrations de diagrammes des méthodes et dispositifs selon un ou plusieurs modes de réalisation. Chacun des fonctions, moteurs, modules, plateformes, unités et diagrammes décrits peut être mis en œuvre sous forme matérielle, logicielle (y compris sous forme de logiciel embarqué («firmware»), ou de «middleware»), microcode, ou toute combinaison de ces derniers. Dans le cas d’une mise en œuvre sous forme logicielle, les fonctions, moteurs, unités, modules et/ou illustrations de diagrammes peuvent être mis en œuvre par des instructions de programme d’ordinateur ou du code logiciel, qui peut être stocké ou transmis sur un support lisible par ordinateur, incluant un support non transitoire, ou un support chargé en mémoire d’un ordinateur générique, spécifique, ou de tout autre appareil ou dispositif programmable de traitement de données pour produire une machine, de telle sorte que les instructions de programme d’ordinateur ou le code logiciel exécuté(es) sur l’ordinateur ou l’appareil ou dispositif programmable de traitement de données, constituent des moyens de mise en œuvre de ces fonctions. In the following detailed description of embodiments of the invention, many specific details are presented to provide a more complete understanding. Nevertheless, one skilled in the art can appreciate that embodiments can be practiced without these specific details. In other cases, well-known characteristics are not described in detail to avoid unnecessarily complicating the description. The present description refers to functions, motors, units, modules, platforms, and diagram illustrations of the methods and devices according to one or more embodiments. Each of the functions, motors, modules, platforms, units and diagrams described can be implemented in hardware, software (including in the form of on-board software ("firmware"), or "middleware"), microcode, or any combination of these. In the case of implementation in software form, functions, motors, units, modules and / or diagram illustrations may be implemented by computer program instructions or software code, which may be stored or transmitted on a computer readable medium, including a non-transient medium, or a medium loaded in memory of a generic, specific computer, or of any other apparatus or programmable data processing device to produce a machine, so that the Computer program instructions or the software code executed on the computer or the programmable data processing apparatus or device, constitute means of implementing these functions.
[0053] Les modes de réalisation d’un support lisible par ordinateur incluent, de manière non exhaustive, des supports de stockage informatique et des supports de communication, y compris tout support facilitant le transfert d’un programme d’ordinateur d’un endroit vers un autre. Par «support(s) de stockage informatique», on entend tout support physique pouvant être accédé par ordinateur. Les exemples de support de stockage informatique incluent, de manière non limitative, les disques ou composants de mémoire flash ou tous autres dispositifs à mémoire flash (par exemple des clés USB, des clés de mémoire, des sticks mémoire, des disques-clés), des CD-ROM ou autres dispositifs de stockage optique de données, des DVD, des dispositifs de stockage de données à disque magnétique ou autres dispositifs de stockage magnétique de données, des composants de mémoire de données, des mémoires RAM, ROM, EEPROM, des cartes mémoires («smart cards»), des mémoires de type SSD («Solid State Drive»), et toute autre forme de support utilisable pour transporter ou stocker ou mémoriser des données ou structures de données qui peuvent être lues par un processeur d’ordinateur. [0054] En outre, diverses formes de support lisible par ordinateur peuvent transmettre ou porter des instructions vers un ordinateur, telles qu’un routeur, une passerelle, un serveur, ou tout équipement de transmission de données, qu’il s’agisse de transmission filaire (par câble coaxial, fibre optique, fils téléphoniques, câble DSL, ou câble Ethernet), sans-fil (par infrarouge, radio, cellulaire, microondes), ou des équipements de transmission virtualisés (routeur virtuel, passerelle virtuelle, extrémité de tunnel virtuel, pare-feu virtuel). Les instructions peuvent, selon les modes de réalisation, comprendre du code de tout langage de programmation informatique ou élément de programme informatique, tel que, sans limitation, les langages assembleur, C, C++, Visual Basic, HyperText Markup Language (HTML), Extensible Markup Language (XML), HyperText Transfer Protocol (HTTP), Hypertext Preprocessor (PHP), SQL, MySQL, Java, JavaScript, JavaScript Object Notation (JSON), Python, et bash scripting. Embodiments of a computer readable medium include, but are not limited to, computer storage media and communication media, including any medium facilitating the transfer of a computer program from a location to another. By “computer storage medium (s)” is meant any physical medium that can be accessed by a computer. Examples of computer storage media include, but are not limited to, flash memory disks or components or any other flash memory devices (eg, USB keys, memory sticks, memory sticks, key disks), CD-ROMs or other optical data storage devices, DVDs, magnetic disk data storage devices or other magnetic data storage devices, data memory components, RAM, ROM, EEPROM, memory cards ("smart cards"), memories of the SSD type ("Solid State Drive"), and any other form of support which can be used to transport or store or memorize data or data structures which can be read by a processor. computer. In addition, various forms of computer readable medium can transmit or carry instructions to a computer, such as a router, a gateway, a server, or any data transmission equipment, whether it is wired transmission (by coaxial cable, optical fiber, telephone wires, DSL cable, or Ethernet cable), wireless (by infrared, radio, cellular, microwave), or virtualized transmission equipment (virtual router, virtual gateway, end of virtual tunnel, virtual firewall). The instructions may, depending on the embodiments, include code of any computer programming language or computer program element, such as, without limitation, assembly languages, C, C ++, Visual Basic, HyperText Markup Language (HTML), Extensible Markup Language (XML), HyperText Transfer Protocol (HTTP), Hypertext Preprocessor (PHP), SQL, MySQL, Java, JavaScript, JavaScript Object Notation (JSON), Python, and bash scripting.
[0055] De plus, les termes «notamment», «par exemple», «exemple», «typiquement» sont utilisés dans la présente description pour désigner des exemples ou illustrations de modes de réalisation non limitatifs, qui ne correspondent pas nécessairement à des modes de réalisation préférés ou avantageux par rapport à d’autres aspects ou modes de réalisation possibles. In addition, the terms "in particular", "for example", "example", "typically" are used in the present description to denote examples or illustrations of nonlimiting embodiments, which do not necessarily correspond to preferred or advantageous embodiments over other possible aspects or embodiments.
[0056] Par «serveur» ou «plateforme», on entend dans la présente description tout point de service (virtualisé ou non) ou dispositif opérant des traitements de données, une ou plusieurs bases de données, et/ou des fonctions de communication de données. Par exemple, et de manière non limitative, le terme «serveur» ou le terme «plateforme» peut faire référence à un processeur physique couplé de manière opérationnelle avec des fonctions de communication, de base de données et de stockage de données associées, ou faire référence à un réseau, un groupe, un ensemble ou un complexe de processeurs et des équipements de stockage de données et de mise en réseau associés, ainsi qu’un système d’exploitation et un ou plusieurs système(s) de base de données et des logiciels applicatifs en support des services et fonctions fournies par le serveur. Un dispositif informatique peut être configuré pour envoyer et recevoir des signaux, par réseau(x) de transmission sans-fil et/ou filaire, ou peut être configuré pour des traitements et/ou du stockage de données ou de signaux, et peut donc fonctionner en tant que serveur. Ainsi, des équipements configurés pour opérer en tant que serveur peuvent inclure, à titre d’exemples non limitatifs, des serveurs dédiés montés sur rack, des ordinateurs de bureau, des ordinateurs portables, des passerelles de service (parfois appelées «box» ou «passerelle résidentielle»), des décodeurs multimédia (parfois appelés «set-top boxes»), des équipements intégrés combinant diverses fonctionnalités, telles que deux ou plus des fonctionnalités mentionnées ci-dessus. Les serveurs peuvent fortement varier dans leur configuration ou leurs capacités, mais un serveur inclura généralement une ou plusieurs unité(s) centrale(s) de traitement et une mémoire. Un serveur peut aussi inclure un ou plusieurs équipement(s) de mémoire de masse, une ou plusieurs alimentation(s) électrique(s), une ou plusieurs interface(s) réseau sans-fil et/ou filaire(s), une ou plusieurs interface(s) d’entrée/sortie, un ou plusieurs système(s) d’exploitation, tel(s) que Windows Server, Mac OS X, Unix, Linux, FreeBSD, or un équivalent. By "server" or "platform" is meant in the present description any point of service (virtualized or not) or device operating data processing, one or more databases, and / or communication functions. data. For example, and in a non-limiting manner, the term "server" or the term "platform" can refer to a physical processor operably coupled with associated communication, database and data storage functions, or make reference to a network, group, set or complex of processors and associated data storage and networking equipment, as well as an operating system and one or more database system (s) and application software in support of the services and functions provided by the server. A computing device can be configured to send and receive signals, by wireless and / or wired transmission network (s), or can be configured for processing and / or storage of data or signals, and can therefore function as a server. Thus, equipment configured to operate as a server may include, by way of non-limiting examples, dedicated rack-mounted servers, desktops, laptops, service gateways (sometimes referred to as "boxes" or " residential gateway ”), multimedia decoders (sometimes called“ set-top boxes ”), integrated equipment combining various functionalities, such as two or more of the functionalities mentioned above. Servers can vary widely in their configuration or capabilities, but a server will typically include one or more central processing unit (s) and memory. A server can also include one or more mass memory equipment (s), one or more power supply (s), one or more wireless and / or wired network interface (s), one or more several input / output interface (s), one or more operating system (s), such as Windows Server, Mac OS X, Unix, Linux, FreeBSD, or an equivalent.
[0057] Par « contenu multimédia », on entend dans la présente description tout contenu audio et/ou vidéo, audiovisuel, musique, son, image et interface graphique interactive, et toute combinaison de ces types de contenu. By "multimedia content" is meant in the present description any audio and / or video, audiovisual, music, sound, image and interactive graphical interface, and any combination of these types of content.
[0058] Les termes «réseau» et «réseau de communication» tels qu’utilisés dans la présente description font référence à une ou plusieurs liaisons de données qui peuvent coupler ou connecter des équipements, éventuellement virtualisés, de manière à permettre le transport de données électroniques entre des systèmes informatiques et/ou des modules et/ou d’autres dispositifs ou équipements électroniques, tel qu’entre un serveur et un dispositif client ou d’autres types de dispositifs, y compris entre dispositifs sans fil couplés ou connectés par un réseau sans fil, par exemple. Un réseau peut aussi inclure une mémoire de masse pour stocker des données, tel qu’un NAS (en anglais «network attached storage», un SAN (en anglais «storage area network»), ou toute autre forme de support lisible par un ordinateur ou par une machine, par exemple. Un réseau peut comprendre, en tout ou partie, le réseau Internet, un ou plusieurs réseaux locaux (en anglais «local area networks», ou LANs), un ou plusieurs réseaux de type WAN (en anglais «wide area networks»), des connexions de type filaire, des connexions de type sans fil, de type cellulaire, ou toute combinaison de ces différents réseaux. De manière similaire, des sous-réseaux peuvent utiliser différentes architectures ou être conformes ou compatibles avec différents protocoles, et inter-opérer avec des réseaux de plus grande taille. Différents types d’équipements peuvent être utilisés pour rendre interopérables différentes architectures ou différents protocoles. Par exemple, un routeur peut être utilisé pour fournir une liaison de communication ou une liaison de données entre deux LANs qui seraient autrement séparés et indépendants. The terms "network" and "communication network" as used in the present description refer to one or more data links which can couple or connect equipment, possibly virtualized, so as to allow the transport of data. electronic devices between computer systems and / or modules and / or other electronic devices or equipment, such as between a server and a client device or other types of devices, including between wireless devices coupled or connected by a wireless network, for example. A network can also include a mass memory for storing data, such as a NAS (in English "network attached storage", a SAN (in English "storage area network"), or any other form of media readable by a computer. or by a machine, for example A network may include, in whole or in part, the Internet network, one or more local area networks (LANs), one or more WAN type networks (in English). English “wide area networks”), wired type connections, wireless type connections, cellular type, or any combination of these different networks. Similarly, subnets may use different architectures or be compliant or compatible with different protocols, and interoperate with larger networks. Different types of equipment can be used to make different architectures or different protocols interoperable. For example, a router can be used to provide a communications link or a data link between two LANs that would otherwise be separate and independent.
[0059] Les termes «couplé de manière opérationnelle», «couplé», «monté», «connecté» et leurs variantes et formes diverses utilisés dans la présente description font référence à des couplages, connexions, montages, qui peuvent être directs ou indirects, et comprennent notamment des connexions entre équipements électroniques ou entre des portions de tels équipements qui permettent des opérations et fonctionnements tels que décrits dans la présente description. De plus, les termes «connectés» et «couplés» ne sont pas limités à des connections ou des couplages physiques ou mécaniques. Par exemple, un couplage de manière opérationnelle peut inclure une ou plusieurs connexion(s) filaire(s) et/ou une ou plusieurs connexion(s) sans-fil entre deux équipements ou plus qui permettent des liaisons de communication simplex et/ou duplex entre les équipements ou des portions des équipements. Selon un autre exemple, un couplage opérationnel ou une connexion peut inclure un couplage par liaison filaire et/ou sans-fil pour permettre des communications de données entre un serveur du système proposé et un autre équipement du système. The terms "operably coupled", "coupled", "mounted", "connected" and their various variants and forms used in the present description refer to couplings, connections, assemblies, which can be direct or indirect , and include in particular connections between electronic equipment or between portions of such equipment which allow operations and functions as described in the present description. In addition, the terms "connected" and "coupled" are not limited to physical or mechanical connections or couplings. For example, an operative coupling may include one or more wired connection (s) and / or one or more wireless connection (s) between two or more devices that allow simplex and / or duplex communication links. between the equipment or portions of the equipment. According to another example, an operational coupling or connection may include a wired and / or wireless link coupling to allow data communications between a server of the proposed system and other equipment of the system.
[0060] Les termes «application» ou «programme applicatif» (AP) et leurs variantes («app», «webapp», etc.) tels qu’utilisés dans la présente description correspondent à tout outil qui fonctionne et est opéré au moyen d’un ordinateur, pour fournir ou exécuter une ou plusieurs fonction(s) ou tâche(s) pour un utilisateur ou un autre programme applicatif. Pour interagir avec un programme applicatif, et le contrôler, une interface utilisateur peut être fournie sur l’équipement sur lequel le programme applicatif est mis en œuvre. Par exemple, une interface graphique (en anglais, «graphical user interface» ou GUI) peut être générée et affichée sur un écran de l’équipement utilisateur, ou une interface utilisateur audio peut être restituée à l’utilisateur en utilisant un haut-parleur, un casque ou une sortie audio. The terms “application” or “application program” (AP) and their variants (“app”, “webapp”, etc.) as used in the present description correspond to any tool which operates and is operated by means of from a computer, to provide or execute one or more function (s) or task (s) for a user or another application program. In order to interact with an application program, and to control it, a user interface can be provided on the equipment on which the application program is implemented. For example, a graphical user interface (GUI) can be generated and displayed on a screen of the user equipment, or an audio user interface can be rendered to the user using a loudspeaker, a headset or audio output.
[0061] Le terme « courant » tel qu’utilisé dans la présente description en lien avec une image (« image courante ») ou une portion d’image, comme par exemple un bloc (« bloc courant ») pour une image découpée en blocs, fait référence à une image ou portion d’image en cours de traitement, comme par exemple en cours d’encodage, d’analyse, de compression, etc. En particulier, les termes « image courante » font référence à une image en cours d’encodage parmi les images d’un ensemble d’images, l’encodage de l’image courante pouvant comprendre la mise en œuvre du procédé proposé sur l’image courante, et les termes « bloc courant » font référence à un bloc en cours d’encodage dans une image courante découpée en blocs dont l’encodage est mis en œuvre selon une séquence d’encodage des blocs de l’image, l’encodage du bloc courant pouvant comprendre la mise en œuvre du procédé proposé sur le bloc courant. Dans la présente description, l’image courante pourra être associée à un indice temporel, par exemple l’indice « t », pour la distinguer des images déjà encodées (qui pourront être associées à des indices temporels inférieurs à t, tels que « t-1 », « t-2 », ..., « t-k » pour un ensemble de k images), et des images non encore encodées (qui pourront être associées à des indices temporels supérieurs à t, tels que « t+1 », « t+2 », ..., « t+n » pour un ensemble de n images). The term "current" as used in the present description in connection with an image ("current image") or an image portion, such as for example a block ("current block") for an image cut into blocks, refers to an image or portion of an image being processed, such as encoding, analysis, compression, etc. In particular, the terms “current image” refer to an image being encoded from among the images of a set of images, the encoding of the current image possibly comprising the implementation of the method proposed on the. current image, and the terms “current block” refer to a block being encoded in a current image divided into blocks whose encoding is implemented according to an encoding sequence of the blocks of the image, the encoding of the current block which may include the implementation of the method proposed on the current block. In the present description, the current image may be associated with a time index, for example the index "t", to distinguish it from the images already encoded (which may be associated with time indices less than t, such as "t -1 ”,“ t-2 ”, ...,“ tk ”for a set of k images), and images not yet encoded (which could be associated with temporal indices greater than t, such as“ t + 1 "," T + 2 ", ...," t + n "for a set of n images).
[0062] Dans la présente description, les termes distribution « en temps-réel », distribution « en mode linéaire », distribution « en mode TV linéaire », distribution « en mode dynamique » et distribution « live » ou « en mode live » sont utilisés de manière interchangeable pour désigner la distribution en mode ou de type dynamique (en anglais mode « live » ou « dynamic ») d’un contenu multimédia dans un système de distribution de contenus vers des terminaux, comprenant notamment la distribution du contenu à mesure que celui-ci est généré, par opposition à la distribution d’un contenu précédemment généré, sur requête d’accès d’un utilisateur (distribution sur requête d’accès ou distribution en mode ou de type « statique » - en anglais, « static »), tel que, par exemple, un contenu enregistré sur un serveur, et rendu disponible à des utilisateurs par un service de vidéo à la demande (VOD). In the present description, the terms “real-time” distribution, “linear mode” distribution, “linear TV mode” distribution, “dynamic mode” distribution and “live” or “live mode” distribution are used interchangeably to denote the distribution in dynamic mode or type (in English "live" or "dynamic" mode) of multimedia content in a content distribution system to terminals, including in particular the distribution of the content to as it is generated, as opposed to the distribution of previously generated content, on a user's access request (distribution on access request or distribution in or of the “static” type - in English, “static”), such as, for example, content recorded on a server, and made available to users by a video on demand (VOD) service.
[0063] Dans la présente description, les termes « contenu live » font référence à un contenu, par exemple de type multimédia, distribué, par exemple selon un mode de distribution OTT, en mode dynamique (par opposition au mode statique de distribution). Un contenu live sera typiquement généré par une chaîne de télévision, ou par tout type de média télévisuel, et pourra être par ailleurs diffusé sur un réseau de diffusion de contenus multimédia, outre sa mise à disposition sur des serveurs de contenus dans un système de distribution OTT. In the present description, the terms “live content” refer to content, for example of multimedia type, distributed, for example according to an OTT distribution mode, in dynamic mode (as opposed to the static distribution mode). Live content will typically be generated by a television channel, or by any type of television media, and may also be broadcast over a multimedia content distribution network, in addition to being made available on content servers in a distribution system. OTT.
[0064] Dans la présente description, les termes « signal d’entrée vidéo » ou « flux vidéo d’entrée » font référence à un signal portant des données correspondant à un ensemble d’images fournies en entrée d’un dispositif utilisé pour la mise en œuvre du procédé proposé. L’ensemble d’images peut être désigné par les termes « séquence vidéo source ». In the present description, the terms "video input signal" or "input video stream" refer to a signal carrying data corresponding to a set of images supplied at the input of a device used for the implementation of the proposed method. The set of images may be referred to as "source video footage".
[0065] Le procédé proposé peut être mis en œuvre par tout type d’encodeur d’image d’un ensemble d’images utilisant un mode de codage de type à prédiction par corrélation temporelle et/ou spatiale, comme par exemple un codée vidéo conforme aux standards H.264/AVC, H.265/HEVC, et/ou MPEG-2. The proposed method can be implemented by any type of image encoder of a set of images using a coding mode of the prediction type by temporal and / or spatial correlation, such as for example a video coded. Compliant with H.264 / AVC, H.265 / HEVC, and / or MPEG-2 standards.
[0066] Un codée vidéo comprend typiquement un ensemble d’outils de traitement et de représentation de séquence vidéo. La spécification du codée vidéo permet en général de concevoir un décodeur pour effectuer la transformation d’un train binaire compressé conformément à la spécification du codée en une vidéo dite « reconstruite ». L’encodeur vidéo a quant à lui pour but de transformer une vidéo dite « source » en un train binaire conforme à la spécification du codée. En fonction de la mise en œuvre choisie pour l’encodeur, un même contenu source peut être représenté de différentes manières par un même codée. Toutes les représentations ne sont pas équivalentes. Par exemple, pour un débit cible donné, différentes représentations donneront des qualités différentes. De même, pour une qualité cible donnée, différentes représentations donneront des débits différents. [0067] La figure 1 illustre un exemple d’architecture d’encodeur, selon un ou plusieurs modes de réalisation. A video codec typically comprises a set of video sequence processing and representation tools. The specification of the video codec generally makes it possible to design a decoder to perform the transformation of a compressed binary train in accordance with the specification of the codec into a so-called “reconstructed” video. The aim of the video encoder is to transform a so-called “source” video into a binary train conforming to the specification of the codec. Depending on the implementation chosen for the encoder, the same source content can be represented in different ways by the same codec. Not all representations are created equal. For example, for a given target rate, different representations will give different qualities. Likewise, for a given target quality, different representations will give different bit rates. FIG. 1 illustrates an example of an encoder architecture, according to one or more embodiments.
[0068] En référence à la figure 1 , l’encodeur 100 reçoit en entrée 109 un flux vidéo d’entrée 101 comprenant une pluralité d’images à traiter pour effectuer l’encodage du flux. L’encodeur 100 comprend un contrôleur 102, couplé de manière opérationnelle à l’interface d’entrée 109, qui pilote une unité d’estimation de mouvement 110 et une unité de prédiction par corrélation temporelle 104 pour effectuer des prédictions par corrélation temporelle (telles que, par exemple, des prédictions Inter et Skip, des prédictions dites « Merge », « Affines », en fonction du schéma d’encodage vidéo utilisé), ainsi qu’une unité de prédiction par corrélation spatiale 103 pour effectuer des prédictions par corrélation spatiale (telles que, par exemple, des prédictions Intra). Les données reçues sur l’interface d’entrée 109 sont transmises en entrée des unités de prédiction par corrélation spatiale 103, d’estimation de mouvement 110, de prédiction par corrélation temporelle 104 et du contrôleur 102. L’ensemble contrôleur 102, unité d’estimation de mouvement 110, unité de prédiction par corrélation temporelle 104, et unité de prédiction par corrélation spatiale 103 forme une unité d’encodage 111 couplée de manière opérationnelle à l’interface d’entrée 109. Referring to Figure 1, the encoder 100 receives at input 109 an input video stream 101 comprising a plurality of images to be processed to perform the encoding of the stream. Encoder 100 includes a controller 102, operably coupled to input interface 109, which drives a motion estimation unit 110 and a time correlation prediction unit 104 to perform time correlation predictions (such as that, for example, Inter and Skip predictions, so-called “Merge” and “Affine” predictions, depending on the video encoding scheme used), as well as a spatial correlation prediction unit 103 for performing correlation predictions spatial (such as, for example, Intra predictions). The data received on the input interface 109 is inputted to the spatial correlation prediction 103, motion estimation 110, time correlation prediction 104 and controller 102 units. The controller assembly 102, unit d The motion estimation 110, time correlation prediction unit 104, and spatial correlation prediction unit 103 form an encoding unit 111 operatively coupled to the input interface 109.
[0069] L’unité de prédiction par corrélation spatiale 103 génère des données de prédiction par corrélation spatiale 107 (par exemple des données de prédiction Intra) qui sont fournies en entrée d’un codeur entropique 105. L’unité d’estimation de mouvement 110 génère quant à elle des données d’estimation de mouvement qui sont fournies au contrôleur 102 ainsi qu’à l’unité de prédiction par corrélation temporelle 104 pour les besoins de la prédiction en mode Inter. L’unité de prédiction par corrélation temporelle 104 génère des données de prédiction par corrélation temporelle (par exemple des données de prédiction Inter ou Skip) qui sont fournies en entrée du codeur entropique 105. Par exemple, les données fournies au décodeur pour une prédiction par corrélation temporelle peuvent comprendre un résiduel de pixels et des informations concernant un ou plusieurs vecteurs de mouvement. Ces informations relatives à un ou plusieurs vecteurs de mouvement peuvent comprendre un ou plusieurs indices identifiant un vecteur prédicteur dans une liste de vecteurs prédicteurs connue du décodeur. Les données fournies au décodeur pour une prédiction de type Skip ne comporteront typiquement pas de résiduel de pixels, et pourront aussi comprendre des informations identifiant un vecteur prédicteur dans une liste de prédicteurs connue du décodeur. La liste de vecteurs prédicteurs utilisée pour le codage de type Inter ne sera pas nécessairement identique à la liste de vecteurs prédicteurs utilisée pour le codage de type Skip. Les données de prédiction par corrélation spatiale peuvent comprendre un mode de codage Intra. Pour un bloc courant d’une image courante, le codeur entropique 105 reçoit des données de prédiction par corrélation spatiale 107 ou des données de prédiction par corrélation temporelle 106. The spatial correlation prediction unit 103 generates spatial correlation prediction data 107 (for example Intra prediction data) which is provided at the input of an entropy encoder 105. The motion estimation unit 110 for its part generates motion estimation data which is supplied to the controller 102 as well as to the time correlation prediction unit 104 for the purposes of the prediction in Inter mode. The time correlation prediction unit 104 generates time correlation prediction data (eg Inter or Skip prediction data) which is input to entropy encoder 105. For example, data supplied to the decoder for prediction by temporal correlation may include a residual of pixels and information regarding one or more motion vectors. This information relating to one or more motion vectors may comprise one or more indices identifying a vector predictor in a list of predictor vectors known to the decoder. The data supplied to the decoder for a Skip type prediction will typically not include any pixel residual, and may also include information identifying a predictor vector in a list of predictors known to the decoder. The list of predictor vectors used for Inter type coding will not necessarily be identical to the list of predictor vectors used for Skip type coding. The spatial correlation prediction data can include an Intra coding mode. For a current block of a current image, the entropy encoder 105 receives spatial correlation prediction data 107 or temporal correlation prediction data 106.
[0070] Le contrôleur 102 calcule des données d’encodage 108, qui peuvent comprendre, dans un ou plusieurs modes de réalisation, un résiduel de pixels ainsi que des données relatives au partitionnement de l’image en entités élémentaires, après transformation et quantification, qui sont aussi fournies en entrée du codeur entropique 105. Les données relatives au mode de codage sélectionné peuvent être comprises dans les données de prédiction 106-107, par corrélation temporelle ou spatiale en fonction de chaque bloc encodé. The controller 102 calculates encoding data 108, which may include, in one or more embodiments, a residual of pixels as well as data relating to the partitioning of the image into elementary entities, after transformation and quantization, which are also supplied at the input of the entropy encoder 105. The data relating to the selected encoding mode can be included in the prediction data 106-107, by temporal or spatial correlation as a function of each encoded block.
[0071] Le contrôleur 102 est configuré pour piloter l’unité de prédiction par corrélation spatiale 103 et l’unité de prédiction par corrélation temporelle 104 afin de contrôler les données de prédiction qui sont respectivement fournies en entrée du codeur entropique 105 par l’unité de prédiction par corrélation spatiale 103 et l’unité de prédiction par corrélation temporelle 104. En fonction du schéma d’encodage mis en œuvre par l’encodeur 100, le contrôleur 102 peut en outre être configuré pour sélectionner parmi différents types de mode de prédiction (par exemple mode Intra, mode Inter ou mode Skip en fonction des modes de codage implémentés dans l’unité d’encodage 111) celui pour lequel des données de prédiction seront transmises au codeur entropique 105. Ainsi, le schéma d’encodage peut comprendre une décision pour chaque ensemble d’image traité visant à choisir le type de prédiction pour lequel des données seront transmises au codeur entropique 105. Ce choix sera typiquement mis en œuvre par le contrôleur 102, pour décider de l’application du mode de prédiction (par exemple mode de prédiction Inter, Intra ou Skip) au bloc en cours de traitement. Cela permet de commander l’envoi au codeur entropique de données de prédiction par corrélation spatiale 107 ou bien de données de prédiction par corrélation temporelle 106 en fonction de la décision prise par le contrôleur 102. The controller 102 is configured to drive the spatial correlation prediction unit 103 and the time correlation prediction unit 104 in order to control the prediction data which are respectively supplied at the input of the entropy encoder 105 by the unit. correlation prediction 103 and the time correlation prediction unit 104. Depending on the encoding scheme implemented by the encoder 100, the controller 102 may further be configured to select from among different types of prediction mode. (for example Intra mode, Inter mode or Skip mode depending on the encoding modes implemented in the encoding unit 111) that for which prediction data will be transmitted to the entropy encoder 105. Thus, the encoding scheme may include a decision for each image set processed aiming to choose the type of prediction for which data will be transmitted to the entropy encoder 105. This choice will typically be made n work by the controller 102, to decide on the application of the prediction mode (for example Inter, Intra or Skip prediction mode) to the block being processed. This makes it possible to control the sending to the entropy encoder of spatial correlation prediction data 107 or else of temporal correlation prediction data 106 as a function of the decision taken by the controller 102.
[0072] L’encodeur 100 peut être un ordinateur, un réseau d’ordinateurs, un composant électronique, ou un autre appareil comportant un processeur couplé de manière opérationnelle à une mémoire, ainsi que, selon le mode de réalisation choisi, une unité de stockage de données, et d'autres éléments matériels associés comme une interface de réseau et un lecteur de support pour lire un support de stockage amovible et écrire sur un tel support (non représentés sur la figure). Le support de stockage amovible peut être, par exemple, un disque compact (CD), un disque vidéo/polyvalent numérique (DVD), un disque flash, une clé USB, etc. En fonction du mode de réalisation, la mémoire, l’unité de stockage de données ou le support de stockage amovible contient des instructions qui, lorsqu'elles sont exécutées par le contrôleur 102, amènent ce contrôleur 102 à effectuer ou contrôler les parties interface d’entrée 109, prédiction par corrélation spatiale 103, prédiction par corrélation temporelle 104, estimation de mouvement 110 et/ou traitement de données des exemples de mise en œuvre du procédé proposé décrits dans les présentes. Le contrôleur 102 peut être un composant implémentant un processeur ou une unité de calcul pour l’encodage d’images selon le procédé proposé et le contrôle des unités 109, 110, 103, 104, 105 de l’encodeur 100. The encoder 100 can be a computer, a computer network, an electronic component, or another device comprising a processor operably coupled to a memory, as well as, depending on the embodiment chosen, a control unit. data storage, and other associated hardware elements such as a network interface and a media drive for reading removable storage media and writing to such media (not shown in the figure). The removable storage medium can be, for example, a compact disc (CD), a digital video / versatile disc (DVD), a flash disc, a USB stick, etc. Depending on the embodiment, the memory, the data storage unit or the removable storage medium contains instructions which, when executed by the controller 102, cause this controller 102 to perform or control the interface parts of it. input 109, spatial correlation prediction 103, temporal correlation prediction 104, motion estimation 110 and / or data processing of the examples of implementation of the proposed method described herein. The controller 102 can be a component implementing a processor or a computing unit for encoding images according to the proposed method and controlling the units 109, 110, 103, 104, 105 of the encoder 100.
[0073] En outre, l’encodeur 100 peut être mis en œuvre sous forme logicielle, comme décrit ci-dessus, auquel cas il prend la forme d’un programme exécutable par un processeur, ou sous forme matérielle (ou « hardware »), comme un circuit intégré spécifique application (ASIC), un système sur puce (SOC), ou sous forme d'une combinaison d'éléments matériels et logiciels, comme par exemple un programme logiciel destiné à être chargé et exécuté sur un composant de type FPGA (Field Programmable Gâte Array). Les SOC ( System On Chip) ou système sur puce sont des systèmes embarqués qui intègrent tous les composants d’un système électronique dans une puce unique. Un ASIC ( Application-specific Integrated Circuit) est un circuit électronique spécialisé qui regroupe des fonctionnalités sur mesure pour une application donnée. Les ASIC sont généralement configurés lors de leur fabrication et ne peuvent être que simulés par l’utilisateur. Les circuits logiques programmables de type FPGA (Field- Programmable Gâte Array) sont des circuits électroniques reconfigurables par l’utilisateur. In addition, the encoder 100 can be implemented in software form, as described above, in which case it takes the form of a program executable by a processor, or in hardware form (or "hardware") , as an application specific integrated circuit (ASIC), a system on chip (SOC), or in the form of a combination of hardware and software elements, such as for example a software program intended to be loaded and executed on a component of type FPGA (Field Programmable Array). SOC (System On Chip) or system on chip are embedded systems that integrate all the components of a electronic system in a single chip. An ASIC (Application-specific Integrated Circuit) is a specialized electronic circuit that groups together functionalities tailored to a given application. ASICs are typically configured during manufacture and can only be simulated by the user. Programmable logic circuits of the FPGA (Field-Programmable Gâte Array) type are electronic circuits that can be reconfigured by the user.
[0074] Un encodeur peut également utiliser des architectures hybrides, comme par exemple des architectures basées sur un CPU+FPGA, un GPU ( Graphics Processing Unit) ou un MPPA ( Multi-Purpose Processor Array). An encoder can also use hybrid architectures, such as for example architectures based on a CPU + FPGA, a GPU (Graphics Processing Unit) or an MPPA (Multi-Purpose Processor Array).
[0075] L’image en cours de traitement est divisée en blocs ou unités de codage (en anglais « Coding Unit », ou CU), dont la forme et la taille sont déterminées en fonction notamment de la taille de la matrice de pixels représentant l’image, par exemple en macroblocs de forme carrée de 16 x 16 pixels. On forme ainsi un ensemble de blocs pour lequel on définit une séquence de traitement (aussi appelé « parcours de traitement »). Dans le cas de blocs de forme carrée, on peut par exemple traiter les blocs de l’image courante en commençant par celui situé en haut à gauche de l’image, suivi de celui immédiatement à droite du précédent, jusqu’à arriver à la fin de la première ligne de blocs pour passer au bloc le plus à gauche dans la ligne de blocs immédiatement en-dessous de cette première ligne, pour terminer le traitement par le bloc le plus en bas et à droite de l’image. The image being processed is divided into blocks or coding units (in English "Coding Unit", or CU), the shape and size of which are determined as a function in particular of the size of the matrix of pixels representing the image, for example in square shaped macroblocks of 16 x 16 pixels. A set of blocks is thus formed for which a processing sequence is defined (also called “processing path”). In the case of square-shaped blocks, we can for example process the blocks of the current image by starting with the one located at the top left of the image, followed by the one immediately to the right of the previous one, until reaching the end of the first row of blocks to go to the leftmost block in the row of blocks immediately below this first row, to end the processing by the lower-most block and to the right of the image.
[0076] On considère ainsi un « bloc courant » (parfois dénommé « bloc d’origine »), c’est-à-dire un bloc en cours de traitement dans l’image courante. Le traitement du bloc courant peut comprendre le partitionnement du bloc en sous- blocs, afin de traiter le bloc avec une granularité spatiale plus fine que celle obtenue avec le bloc. Le traitement d’un bloc comprend par ailleurs la prédiction des pixels du bloc, en exploitant la corrélation spatiale (dans la même image) ou temporelle (dans les images précédemment codées) entre les pixels. Lorsque plusieurs types de prédiction, comme par exemple une prédiction de type Intra, une prédiction de type Inter, et/ou une prédiction de type skip sont implémentés dans l’encodeur, la prédiction des pixels du bloc comprend typiquement la sélection d’un type de prédiction du bloc et d’informations de prédiction correspondant au type sélectionné, l’ensemble formant un jeu de paramètres d’encodage. We thus consider a "current block" (sometimes called "original block"), that is to say a block being processed in the current image. The processing of the current block can comprise the partitioning of the block into sub-blocks, in order to process the block with a spatial granularity finer than that obtained with the block. The processing of a block furthermore comprises the prediction of the pixels of the block, by exploiting the spatial (in the same image) or temporal (in the previously encoded images) correlation between the pixels. When several types of prediction, such as for example an Intra type prediction, an Inter type prediction, and / or a skip type prediction are implemented in the encoder, the prediction of the pixels of the block typically comprises the selection of a type of prediction of the block and of prediction information corresponding to the type selected, the whole forming a set of encoding parameters.
[0077] La prédiction du bloc de pixels traité permet de calculer un résiduel de pixels, qui correspond à l’écart entre les pixels du bloc courant et les pixels du bloc de prédiction, et est transmis dans certains cas au décodeur après transformée et quantification. The prediction of the processed block of pixels makes it possible to calculate a residual of pixels, which corresponds to the difference between the pixels of the current block and the pixels of the prediction block, and is transmitted in certain cases to the decoder after transformation and quantization .
[0078] Pour coder un bloc courant, plusieurs modes de codage sont ainsi possibles et il est nécessaire d’inclure dans les données générées par l’encodage des informations de codage 106-108 signalant le choix de mode de codage qui a été effectué lors de l’encodage et selon lequel les données ont été encodées. Ces informations de codage 106-108 peuvent comprendre notamment le mode de codage (par exemple le type particulier de codage prédictif parmi les codages « Intra » et « Inter », ou parmi les codages « Intra », « Inter » et « Skip »), le partitionnement (dans le cas d’un ou plusieurs blocs partitionnés en sous-blocs), ainsi qu’une information de mouvement 106 dans le cas d’un codage prédictif de type à corrélation temporelle et un mode de prédiction Intra 107 dans le cas d’un codage prédictif de type à corrélation spatiale. Comme indiqué ci-dessus pour les modes de codage « Inter » et « Skip », ces deux dernières informations peuvent elles aussi prédites afin de réduire leur coût de codage, par exemple en exploitant les informations des blocs voisins du bloc courant. To encode a current block, several coding modes are thus possible and it is necessary to include in the data generated by the coding coding information 106-108 indicating the choice of coding mode which was made during encoding and according to which the data was encoded. This coding information 106-108 can include in particular the coding mode (for example the particular type of predictive coding among the “Intra” and “Inter” codings, or among the “Intra”, “Inter” and “Skip” codings) , the partitioning (in the case of one or more blocks partitioned into sub-blocks), as well as a motion information item 106 in the case of a predictive coding of the temporal correlation type and an Intra prediction mode 107 in the case of predictive coding of the spatial correlation type. As indicated above for the “Inter” and “Skip” coding modes, these last two items of information can also be predicted in order to reduce their coding cost, for example by using the information from the neighboring blocks of the current block.
[0079] Comme indiqué ci-dessus, le codage prédictif de type à corrélation spatiale inclut une prédiction des pixels d’un bloc (ou ensemble) de pixels en cours de traitement à l’aide des pixels précédemment codés de l’image courante. Il existe différents modes de codage prédictif de type « Intra », comme par exemple le mode de prédiction « Intra » dit « DC » (pour « Discrète Continuous »), le mode de prédiction « Intra » dit « V » (pour « Vertical »), le mode de prédiction « Intra » dit « H » (pour « Horizontal ») et le mode de prédiction « Intra » dit « VL » (pour « Vertical-Left »). As indicated above, the spatial correlation type predictive coding includes a prediction of the pixels of a block (or set) of pixels being processed using the previously coded pixels of the current image. There are various “Intra” type predictive coding modes, such as for example the “Intra” prediction mode called “DC” (for “Discrete Continuous”), the “Intra” prediction mode called “V” (for “Vertical”). "), The" Intra "prediction mode called" H "(for" Horizontal ") and the" Intra "prediction mode called" VL "(for" Vertical-Left ").
[0080] Le standard de codage vidéo H.264/AVC prévoit 9 modes de prédiction intra (dont les modes de prédiction DC, H, V, VL). Le standard de codage vidéo HEVC prévoit quant à lui un nombre plus important de 35 modes de prédiction intra. The H.264 / AVC video coding standard provides for 9 intra prediction modes (including DC, H, V, VL prediction modes). The video encoding standard HEVC provides for a larger number of 35 intra prediction modes.
[0081] Ces standards de codage vidéo prévoient par ailleurs des cas particuliers pour effectuer une prédiction intra. Par exemple, le standard H.264/AVC autorise le découpage de blocs de 16x16 pixels en blocs plus petits, dont la taille peut aller jusqu’à 4x4 pixels, afin d’augmenter la granularité du traitement de codage prédictif. These video coding standards also provide for special cases for performing an intra prediction. For example, the H.264 / AVC standard allows 16x16 pixel blocks to be cut into smaller blocks, up to 4x4 pixels in size, to increase the granularity of predictive coding processing.
[0082] Comme indiqué ci-dessus, l’information du mode de prédiction Intra est prédite afin de réduire son coût de codage. En effet, la transmission dans le flux encodé d’un index identifiant le mode de prédiction Intra présente un coût d’autant plus élevé que le nombre des modes de prédiction utilisables est important. Même dans le cas du codage H.264/AVC, la transmission d’un index entre 1 et 9 identifiant le mode de prédiction intra utilisé pour chaque bloc parmi les 9 modes possibles s’avère être chère en termes de coût de codage. As indicated above, the information of the Intra prediction mode is predicted in order to reduce its coding cost. In fact, the transmission in the encoded stream of an index identifying the Intra prediction mode has a cost that is higher as the number of prediction modes that can be used is large. Even in the case of H.264 / AVC encoding, transmitting an index between 1 and 9 identifying the intra prediction mode used for each block among the 9 possible modes turns out to be expensive in terms of encoding cost.
[0083] On calcule ainsi un mode le plus probable, noté MPM (en anglais « Most Probable Mode »), qui est utilisé pour coder sur un minimum de bits le mode de prédiction Intra le plus probable. Le MPM est le résultat de la prédiction du mode de prédiction Intra utilisé pour coder le bloc courant. A most probable mode is thus calculated, denoted MPM (in English "Most Probable Mode"), which is used to encode the most probable Intra prediction mode on a minimum of bits. The MPM is the result of the prediction of the Intra prediction mode used to code the current block.
[0084] Lorsque le mode Intra est sélectionné pour l’encodage du bloc courant, on pourra transmettre au décodeur typiquement le résiduel de pixels et le MPM. When the Intra mode is selected for encoding the current block, we can typically transmit to the decoder the residual pixels and the MPM.
[0085] Le codage prédictif en mode référencé pour certains codeurs vidéo sous l’appellation « Inter » inclut une prédiction des pixels d’un bloc (ou ensemble) de pixels en cours de traitement à l’aide de pixels issus d’images précédemment codées (pixels qui ne sont donc pas issus de l’image courante, au contraire du mode de prédiction Intra). The predictive coding in mode referenced for certain video coders under the name “Inter” includes a prediction of the pixels of a block (or set) of pixels being processed using pixels from previously images. coded (pixels which therefore do not come from the current image, unlike the Intra prediction mode).
[0086] Le mode de prédiction Inter utilise typiquement un ou deux ensembles de pixels situés dans une ou deux images précédemment codées afin de prédire les pixels du bloc courant. Cela dit, on peut envisager pour un mode de prédiction Inter l’utilisation de plus de deux ensembles de pixels situés respectivement dans des images précédemment codées distinctes deux-à-deux et dont le nombre est supérieur à deux. Cette technique, appelée compensation de mouvement, fait intervenir la détermination d’un ou de deux vecteurs, dits vecteurs de mouvement, qui indiquent respectivement la position de l’ensemble ou des ensembles de pixels à utiliser pour la prédiction dans l’image ou les images précédemment codées (parfois appelées « images de référence »). En référence à la figure 1, les vecteurs utilisés pour le mode « Inter » sont à choisir par l’encodeur 100 par le biais de l’unité d’estimation de mouvement 110 et de l’unité de prédiction par corrélation temporelle 104. La mise en œuvre de l’estimation de mouvement au sein de l’encodeur 100 pourra donc prévoir, selon les cas, la détermination d’un seul vecteur d’estimation de mouvement ou bien de deux vecteurs d’estimation de mouvement qui pointent vers des images potentiellement différentes. The Inter prediction mode typically uses one or two sets of pixels located in one or two previously encoded images in order to predict the pixels of the current block. That said, it is possible to envisage, for an Inter prediction mode, the use of more than two sets of pixels situated respectively in previously coded images distinct two-by-two and the number of which is greater than two. This technique, called motion compensation, involves the determination of one or two vectors, called motion vectors, which respectively indicate the position of the set or sets of pixels to be used for the prediction in the image (s). previously encoded images (sometimes referred to as “reference images”). With reference to FIG. 1, the vectors used for the “Inter” mode are to be chosen by the encoder 100 by means of the movement estimation unit 110 and of the prediction unit by time correlation 104. The implementation of the motion estimation within the encoder 100 may therefore provide, depending on the case, for the determination of a single motion estimation vector or else of two motion estimation vectors which point to potentially different images.
[0087] Le ou les vecteurs d’estimation de mouvement générés en sortie de l’unité d’estimation de mouvement 110 seront fournis à l’unité de prédiction par corrélation temporelle 104 pour la génération de vecteurs de prédiction, par exemple vecteur de prédiction Inter. Chaque vecteur de prédiction Inter pourra en effet être généré à partir d’un vecteur d’estimation de mouvement correspondant. The motion estimation vector (s) generated at the output of the motion estimation unit 110 will be supplied to the prediction unit by time correlation 104 for the generation of prediction vectors, for example a prediction vector Inter. Each Inter prediction vector can in fact be generated from a corresponding motion estimation vector.
[0088] L'estimation de mouvement peut consister à étudier le déplacement des blocs entre deux images en exploitant la corrélation temporelle entre les pixels. Pour un bloc donné dans l’image courante (le « bloc courant » ou « bloc d’origine »), l’estimation de mouvement permet de sélectionner un bloc le plus ressemblant (dénommé « bloc de référence ») dans une image précédemment codée, dite « image de référence », en représentant le mouvement de ce bloc par exemple avec un vecteur à deux dimensions (déplacement horizontal, déplacement vertical). The motion estimation can consist in studying the movement of the blocks between two images by exploiting the temporal correlation between the pixels. For a given block in the current image (the “current block” or “original block”), the motion estimation makes it possible to select a block that resembles the most (called “reference block”) in a previously coded image. , called “reference image”, by representing the movement of this block for example with a two-dimensional vector (horizontal displacement, vertical displacement).
[0089] Un encodeur vidéo peut ainsi être conçu pour décider pour chaque portion élémentaire (par exemple pour chaque bloc dans le cas d’un découpage en blocs) des images d’une séquence vidéo à encoder les outils de codage et les paramètres à appliquer. Meilleure est la décision, meilleure est la qualité d’encodage. A video encoder can thus be designed to decide for each elementary portion (for example for each block in the case of a division into blocks) of the images of a video sequence to be encoded, the encoding tools and the parameters to be applied. . The better the decision, the better the encoding quality.
[0090] Une méthode de décision consiste à tester toutes les possibilités, par exemple tous les différents modes de codage disponibles à l’encodeur, pour ne retenir que la meilleure combinaison. Mais le nombre de combinaisons est dans certains cas tellement élevé que cette méthode ne peut être exécutée dans un temps raisonnable. A decision method consists in testing all the possibilities, for example all the different coding modes available at the encoder, so as not to remember that the best combination. But the number of combinations is in some cases so high that this method cannot be performed in a reasonable time.
[0091] La technique de stockage en mémoire, dite de « lookahead », décrite ci- dessus, d’images de la vidéo source avant traitement par l’encodeur, fournissant ainsi un ensemble d’images du futur au regard des images en cours de traitement par l’encodeur pour encodage, permet d’améliorer la qualité d’encodage, en stockant temporairement en mémoire des images d’un flux vidéo à encoder avant de les encoder, de sorte que lorsqu’une image est encodée, l’encodeur dispose d’une partie au moins du futur de cette image dans le flux vidéo. Le mise en mémoire permet ainsi la mise en œuvre d’outils d’analyse et de traitement des images dont l’encodeur peut bénéficier pour l’encodage des images du flux vidéo à encoder. The so-called "lookahead" memory storage technique, described above, of images of the source video before processing by the encoder, thus providing a set of images of the future with regard to the images in progress processing by the encoder for encoding, improves the encoding quality, by temporarily storing in memory images of a video stream to be encoded before encoding them, so that when an image is encoded, the encoder has at least part of the future of this image in the video stream. Storing thus allows the implementation of image analysis and processing tools from which the encoder can benefit for encoding the images of the video stream to be encoded.
[0092] La figure 2 est un schéma de principe illustrant la technique de mise en mémoire. Figure 2 is a block diagram illustrating the storage technique.
[0093] En référence à la figure 2, une unité de mise en mémoire (120) comprenant une mémoire est interposée entre l’encodeur (100) et l’arrivée du signal d’entrée vidéo (101) (correspondant à une séquence vidéo source comprenant un ensemble d’images) pour stocker dans la mémoire N images (121) de la séquence vidéo source (images d’indices temporels t+1, t+2, ..., t+N) avant encodage. L’encodeur effectue l’encodage de k images (112) de la séquence vidéo source (images d’indices temporels t, t-1, ..., t-K) selon la séquence d’encodage choisie, et produit en sortie une vidéo compressée (113). Une unité d’analyse (130) des images de la séquence vidéo source peut traiter une ou plusieurs images (121) stockées par l’unité mise en mémoire (120), de manière fournir à l’encodeur (100) des résultats d’analyse de ces images (121). Referring to Figure 2, a storage unit (120) comprising a memory is interposed between the encoder (100) and the arrival of the video input signal (101) (corresponding to a video sequence source comprising a set of images) for storing in the memory N images (121) of the source video sequence (images of time indices t + 1, t + 2, ..., t + N) before encoding. The encoder performs the encoding of k images (112) of the source video sequence (images of temporal indices t, t-1, ..., tK) according to the chosen encoding sequence, and outputs a video compressed (113). An analysis unit (130) of the images of the source video sequence can process one or more images (121) stored by the stored unit (120), so as to provide the encoder (100) with results of analysis of these images (121).
[0094] Cependant, dans le cas d’un système d’encodage temps-réel, le mise en mémoire introduit un délai égal au nombre d’images qu’il contient. Dans la pratique, les encodeurs mettent typiquement en œuvre des délais de mise en mémoire d’une durée de 0.5 à 5 secondes. [0095] Deux exemples non limitatifs d’analyse d’images de la séquence vidéo source pouvant utiliser la technique de mise en mémoire sont décrits ci-après : la détection de transitions, et l’algorithme de « macroblock tree ». However, in the case of a real-time encoding system, the storage introduces a delay equal to the number of images it contains. In practice, encoders typically implement storage delays of 0.5 to 5 seconds. Two non-limiting examples of image analysis of the source video sequence that can use the storage technique are described below: the detection of transitions, and the “macroblock tree” algorithm.
[0096] Exemple 1 : détection de transitions Example 1: detection of transitions
[0097] Un encodeur vidéo encode les images composant la séquence vidéo à encoder selon une séquence d’encodage définissant un ordre d’encodage des images de la séquence vidéo. En fonction du mode de prédiction utilisé pour l’encodage des images, on peut définir plusieurs types d’images, afin de distinguer les images utilisant un encodage indépendant des autres images (dites images « Intra » ou « I »), des images utilisant un encodage avec prédiction temporelle unidirectionnelle (dites images « Inter prédites » ou « P ») et des images utilisant un encodage avec prédiction temporelle bidirectionnelle (dites images « Inter bi- prédites »). Les images bi-prédites qui peuvent servir de référence à d’autres images sont usuellement notées Br. A l’inverse, celles qui ne peuvent pas servir de référence sont notées B. Le coût de codage des images inter bi-prédites est moins élevé que le coût de codage des images inter prédites, qui est lui-même moins élevé que le coût de codage des images intra. A video encoder encodes the images making up the video sequence to be encoded according to an encoding sequence defining an encoding order of the images of the video sequence. Depending on the prediction mode used for encoding the images, several types of images can be defined, in order to distinguish the images using independent encoding from other images (called “Intra” or “I” images), from images using encoding with unidirectional temporal prediction (called “Inter-predicted” or “P” images) and images using encoding with bidirectional temporal prediction (called “Inter-bi-predicted” images). The bi-predicted images which can serve as a reference for other images are usually denoted Br. Conversely, those which cannot serve as a reference are denoted B. The coding cost of the inter bi-predicted images is lower. than the cost of coding the inter predicted images, which is itself lower than the cost of coding the intra images.
[0098] Les encodeurs de référence des standards classiques fixent a priori la succession des types d’images. Certains encodeurs avancés, au contraire, adaptent dynamiquement les types d’images au contenu, et notamment à la présence de transitions entre les scènes vidéo. Dans le cas d’une transition franche (« scene eut »), il est souhaitable d’encoder la première image de la nouvelle scène en intra, afin d’éviter des dépendances inutiles avec la scène précédente. De même il est souhaitable d’éviter les images intra à la fin d’une scène car c’est une dépense de bits inutile. The reference encoders of conventional standards set a priori the succession of types of images. Some advanced encoders, on the other hand, dynamically adapt image types to content, including the presence of transitions between video scenes. In the case of a clean transition ("scene had"), it is desirable to encode the first image of the new scene intra, in order to avoid unnecessary dependencies on the previous scene. Likewise, it is desirable to avoid intra-frames at the end of a scene as this is an unnecessary expense of bits.
[0099] Ainsi, il peut être utile au moment d’encoder une image de savoir s’il y aura une transition dans un futur proche, afin de choisir le type d’image le mieux adapté. La mise en mémoire permet d’exécuter des méthodes de détection de transitions en amont de l’encodage, de manière à fournir à l’encodeur les transitions détectées pour le choix du mode de codage le plus adapté en fonction du critère utilisé. [0100] Exemple 2 : « Macroblock tree » Thus, it can be useful when encoding an image to know if there will be a transition in the near future, in order to choose the most suitable type of image. Storing makes it possible to execute methods for detecting transitions upstream from encoding, so as to provide the encoder with the transitions detected for the choice of the most suitable encoding mode as a function of the criterion used. [0100] Example 2: "Macroblock tree"
[0101] Le contrôle de débit est un élément important dans la conception d’un encodeur vidéo, car il conditionne très fortement la qualité de l’encodage. On alloue le débit en réglant le paramètre de quantification (en anglais, « Quantization parameter », ou « QP »). Dans les codées récents, le paramètre QP est configuré au niveau d’un sous-ensemble spatial de pixels, c’est-à-dire au niveau d’une portion élémentaire d’image. Par exemple, dans le codée HEVC, plusieurs types de partitions imbriquées sont définis : une partition en Coding Units (CU), une partition en Prédiction Units (PU), et une partition en Transform Units. Le paramètre QP est réglé au niveau de la TU. Pour AVC/H.264, le QP est réglé au niveau de la portion élémentaire d’image appelée « macroblock ». Pour le futur codée WC, le QP est réglé au niveau de la portion élémentaire d’image appelée coding unit (CU). Le contrôle de débit doit décider pour chaque image, puis pour chaque bloc de l’image partitionnée, quel QP utiliser. On parle d’allocation temporelle et spatiale respectivement. Comme indiqué ci-dessus, le QP d’un bloc peut être alloué en minimisant un critère débit-distorsion, de préférence avec une mesure de distorsion dite perceptuelle. Il est également possible de tenir compte des phénomènes de propagation temporelle. En effet, si on se place au niveau de l’image, le coût de codage d’une image dépend de la qualité de sa référence, c’est-à-dire de l’image utilisée pour la prédiction de l’image en cours d’encodage. Meilleure est la référence, meilleure est la prédiction. [0101] Bit rate control is an important element in the design of a video encoder, because it very strongly conditions the quality of the encoding. The bit rate is allocated by adjusting the quantization parameter (in English, "Quantization parameter", or "QP"). In recent codes, the QP parameter is configured at the level of a spatial subset of pixels, that is to say at the level of an elementary image portion. For example, in the HEVC coded, several types of nested partitions are defined: a partition in Coding Units (CU), a partition in Prediction Units (PU), and a partition in Transform Units. The QP parameter is set at the TU level. For AVC / H.264, the QP is set at the elementary image portion called "macroblock". For the future coded WC, the QP is set at the level of the elementary image portion called the coding unit (CU). The bitrate control must decide for each frame, and then for each block of the partitioned image, which QP to use. We speak of temporal and spatial allocation respectively. As indicated above, the QP of a block can be allocated by minimizing a rate-distortion criterion, preferably with a so-called perceptual distortion measurement. It is also possible to take into account the phenomena of temporal propagation. Indeed, if we look at the level of the image, the cost of coding an image depends on the quality of its reference, that is to say on the image used for the prediction of the image in encoding course. The better the benchmark, the better the prediction.
[0102] Au moment d’encoder une image, il peut donc être utile de se demander si cette image va servir de référence à d’autres images du futur. Si c’est le cas, il sera préférable d’allouer plus de débit à cette image comparativement aux suivantes. Par exemple, une image I a généralement beaucoup d’importance pour le futur. Une image B n’a au contraire pas d’importance, puisqu’elle ne sert pas du tout de référence. Le même raisonnement s’applique au niveau bloc (ou, selon les cas, au niveau macroblock, TU ou CU). Un bloc qui sert de référence à beaucoup d’autres blocs dans le futur est plus important qu’un bloc qui ne sert pas de référence. Cependant, pour connaître cette information, il faut non seulement regarder dans le futur, mais aussi tenir compte du déplacement des objets. L’algorithme dit de « Macroblock tree » (MB tree) est un exemple de mise en œuvre de ce principe qui apporte un gain élevé en efficacité de codage. When encoding an image, it can therefore be useful to ask yourself whether this image will serve as a reference for other images in the future. If this is the case, it will be preferable to allocate more bit rate to this image compared to the following ones. For example, an I-image is usually very important for the future. On the contrary, a B image does not matter, since it does not serve as a reference at all. The same reasoning applies at the block level (or, depending on the case, at the macroblock, TU or CU level). A block that serves as a reference for many other blocks in the future is more important than a block that does not serve as a reference. However, to know this information, one must not only look into the future, but also take into account the movement of objects. The so-called “macroblock tree” (MB tree) algorithm is an example of implementation of this principle which provides a high gain in coding efficiency.
[0103] L’algorithme MB tree permet en effet, à partir d’une image découpée en blocs, de régler pour chaque bloc les paramètres d’encodage sur la base d’un critère déterminant pour le bloc s’il va servir de référence dans le futur, c’est-à-dire s’il va être utilisé pour la prédiction d’autres blocs appartenant à une ou plusieurs images qui seront encodées ultérieurement. The MB tree algorithm in fact makes it possible, from an image cut into blocks, to adjust the encoding parameters for each block on the basis of a criterion determining for the block whether it will serve as a reference. in the future, that is to say if it will be used for the prediction of other blocks belonging to one or more images which will be encoded subsequently.
[0104] Exemple 3 : prédiction de complexité / coût de codage [0104] Example 3: coding complexity / cost prediction
[0105] Comme expliqué dans l’exemple précédent, le contrôle de débit est un élément important dans la conception d’un encodeur vidéo. Dans l’exemple 2, l’algorithme de « MB tree » permet de déterminer l’importance relative des blocs d’une image pour les images futures. Cela fournit un critère pour l’allocation de débit spatiale à travers le réglage du QP par bloc. Un autre critère pour l’allocation de débit est l’évolution temporelle du coût de codage des blocs. [0105] As explained in the previous example, bit rate control is an important element in the design of a video encoder. In Example 2, the "MB tree" algorithm is used to determine the relative importance of the blocks of an image for future images. This provides a criterion for the allocation of spatial throughput through the setting of the QP per block. Another criterion for bit rate allocation is the temporal evolution of the coding cost of the blocks.
[0106] Les caractéristiques intrinsèques d’une vidéo varient au cours du temps. Ainsi, si on encode une vidéo à un QP donné fixe, on observe des variations de débit au cours du temps, du fait que toutes les images/blocs ne contiennent pas la même quantité d’information. [0106] The intrinsic characteristics of a video vary over time. Thus, if we encode a video at a given fixed QP, we observe variations in bit rate over time, because all the images / blocks do not contain the same amount of information.
[0107] Le principe du contrôle de débit à débit constant (en anglais « Constant bit rate », ou « CBR ») est de lisser les variations du débit en modifiant les QP au cours du temps et en s’appuyant sur un tampon mémoire de taille fixe donnée pour lisser les variations résiduelles (en anglais « Video Buffer Vérifier », ou « VBV »). Comme le QP varie au cours du temps, la qualité de la vidéo restituée varie en conséquence. Pour assurer une qualité perçue homogène aux téléspectateurs, la qualité doit varier de la manière la plus douce possible, tout en respectant les contraintes de débit fixe et de taille de tampon d’amortissement (VBV). Pour atteindre ce but, il est utile d’anticiper les variations de quantité d’information au cours du temps, ce qui peut être mis en œuvre en utilisant le principe de mise en mémoire (ou « lookahead ») décrit ci-dessus, ou en utilisant un encodage en deux passes. Comme indiqué ci-dessus, l’inconvénient du principe de mise en mémoire est qu’il introduit de la latence. Quant à l’encodage en deux passes, il ne fonctionne pas pour la diffusion en direct. The principle of constant bit rate control (in English "Constant bit rate", or "CBR") is to smooth the variations of the flow by modifying the QP over time and by relying on a memory buffer of fixed size given to smooth the residual variations (in English "Video Buffer Check", or "VBV"). As the QP varies over time, the quality of the rendered video varies accordingly. To ensure consistent perceived quality to viewers, the quality should vary as smoothly as possible, while respecting the constraints of fixed bit rate and Damping Buffer Size (VBV). To achieve this goal, it is useful to anticipate variations in the amount of information over time, which can be implemented using the store (or “lookahead”) principle described above, or using two pass encoding. As noted above, the downside of principle of storage is that it introduces latency. As for two pass encoding, it does not work for live streaming.
[0108] Lorsque la configuration de l’unité d’analyse permet l’exécution de différentes analyses des images stockées en mémoire dans l’unité de mise en mémoire, par exemple en parallèle, différentes séquences d’ordonnancement des images en mémoire du mise en mémoire peuvent être envisagées. En effet, l’utilisation d’images de type B implique de réordonner les images à l’encodage et au décodage, du fait que si une image B se réfère à une image du passé et une image du futur, l’image du futur doit être encodée/décodée avant l’image B, comme illustré sur la figure 3. When the configuration of the analysis unit allows the execution of different analyzes of the images stored in memory in the storage unit, for example in parallel, different ordering sequences of the images in the storage memory. in memory can be considered. Indeed, the use of type B images involves reordering the images during encoding and decoding, since if a B image refers to an image of the past and an image of the future, the image of the future must be encoded / decoded before frame B, as shown in figure 3.
[0109] La figure 3, qui illustre un exemple de ré-ordonnancement d’images pour un encodage avec des images B, montre trois images, une de type I, une de type B, et une de type P, placées en ordre d’affichage (image d’indice 1 de type I, puis image d’indice 2 de type B, et image d’indice 3 de type P) et en ordre d’encodage/décodage (image d’indice 1 de type I, puis image d’indice 3 de type P, et image d’indice 2 de type B). Sur la figure, les flèches indiquent les images références : l’image de type B (indice 2) utilise les deux images d’indices 1 et 3 comme images références, tandis que l’image d’indice 3 utilise l’image d’indice 1 comme image référence. FIG. 3, which illustrates an example of reordering of images for encoding with B images, shows three images, one of type I, one of type B, and one of type P, placed in order of 'display (image of index 1 of type I, then image of index 2 of type B, and image of index 3 of type P) and in encoding / decoding order (image of index 1 of type I, then image of index 3 of type P, and image of index 2 of type B). In the figure, the arrows indicate the reference images: the image of type B (index 2) uses the two images of indexes 1 and 3 as reference images, while the image of index 3 uses the image of index 1 as the reference image.
[0110] En fonction du mode de réalisation, certaines des analyses prévues des images de la séquence vidéo d’entrée seront plus aisées dans l’ordre d’affichage, alors que d’autres seront mieux adaptées à l’ordre d’encodage. Ces images étant stockées dans l’unité mise en mémoire, on pourra prévoir plusieurs façons de structurer la mémoire de l’unité de mise en mémoire en intégrant un ou plusieurs ré-ordonnancements des images de la séquence vidéo d’entrée qui y sont stockées. [0110] Depending on the embodiment, some of the planned analyzes of the images of the input video sequence will be easier in the order of display, while others will be better suited to the order of encoding. These images being stored in the stored unit, it is possible to provide several ways of structuring the memory of the storage unit by integrating one or more re-orderings of the images of the input video sequence which are stored there. .
[0111] La figure 4a illustre un exemple de configuration d’un tampon mémoire d’unité mise en mémoire comprenant 3 parties. Comme illustré sur la figure, la première partie pourra par exemple stocker Na images de la séquence vidéo d’entrée dans l’ordre d’affichage, la seconde partie pourra stocker Nr images dans un ordre temporaire de ré-ordonnancement, et la troisième partie pourra stocker Ne images dans l’ordre d’encodage, le nombre total d’images stockées étant égal à N (N = Na + Nr + Ne). L’utilisation d’un tampon de réordonnancement permet la mise en mémoire temporaire d’images reçues dans l’ordre d’affichage, afin de produire une séquence d’images dans l’ordre d’encodage. Par exemple, si à l’entrée de l’encodeur on reçoit les images dans un certain ordre, par exemple les images d’indices 1, 2, 3, mais que l’on souhaite encoder l’image 3 en deuxième, l’image 2 peut être stockée temporairement dans un tampon de réordonnancement, en attendant de recevoir l’image 3. FIG. 4a illustrates an example of the configuration of a unit memory buffer placed in memory comprising 3 parts. As illustrated in the figure, the first part could for example store Na images of the input video sequence in the display order, the second part could store Nr images in a temporary order of reordering, and the third part will be able to store Ne images in the order of encoding, the total number of images stored being equal to N (N = Na + Nr + Ne). The use of a reordering buffer allows the temporary storage of images received in the order of display, in order to produce a sequence of images in the order of encoding. For example, if at the input of the encoder we receive the images in a certain order, for example the images of indices 1, 2, 3, but we wish to encode the image 3 in second, the image 2 can be stored temporarily in a reordering buffer, while waiting to receive image 3.
[0112] La figure 4b illustre un exemple d’encodeur intégrant un module d’analyse de type « MB Tree » et utilisant une unité de mise en mémoire dont la mémoire a une structure comprenant trois tampons mémoire, comme illustré sur la figure 4a. L’algorithme de MB Tree utilise les images stockées dans l’ordre d’encodage pour fournir en sortie à l’encodeur des coûts de propagation afin d’améliorer l’efficacité de l’encodage effectué par l’encodeur pour produire une vidéo compressée. Dans cet exemple, la partie mise en mémoire (« lookahead ») et la partie encodage peuvent être construites à partir de toute mise en œuvre de l’encodeur HEVC, comme par exemple la mise en œuvre x265. [0112] FIG. 4b illustrates an example of an encoder incorporating an analysis module of the "MB Tree" type and using a storage unit whose memory has a structure comprising three memory buffers, as illustrated in FIG. 4a. The MB Tree algorithm uses the images stored in the order of encoding to output the encoder with propagation costs to improve the efficiency of the encoding performed by the encoder to produce compressed video. . In this example, the “lookahead” part and the encoding part can be built from any implementation of the HEVC encoder, such as the x265 implementation.
[0113] La figure 4c illustre un exemple plus détaillé de structure de la mise en mémoire d’images issues d’une séquence vidéo source au sein d’une unité de mise en mémoire. Sur cette figure, chaque colonne correspond à une image stockée dans l’unité de mise en mémoire. La première partie, à gauche, contient Na images dans l’ordre d’affichage. La deuxième partie, au milieu contient Nr images en cours de réordonnancement. La troisième partie, à droite, contient Ne images en ordre d’encodage. Cela correspond exactement à la structure de la figure 4a. [0113] FIG. 4c illustrates a more detailed example of the structure of the storage of images from a source video sequence within a storage unit. In this figure, each column corresponds to an image stored in the storage unit. The first part, on the left, contains Na images in order of display. The second part, in the middle, contains Nr images being reordered. The third part, on the right, contains Ne images in order of encoding. This corresponds exactly to the structure of Figure 4a.
[0114] Pour chaque image, on indique l’index de l’image dans l’ordre d’affichage, et pour chaque image stockée dans les deuxième et troisième parties, le type d’image, et l’index de l’image dans l’ordre d’encodage. Le type d’image peut en effet par exemple être généré par analyse des images dans l’ordre d’affichage, et consigné en mémoire, par exemple au niveau du tampon d’ordonnancement. [0115] Ainsi dans la partie de gauche, on voit que l’index en ordre d’affichage est trié, alors que dans la partie de droite, c’est l’index en ordre d’encodage qui est trié. For each image, the index of the image is indicated in the order of display, and for each image stored in the second and third parts, the type of image, and the index of the image in order of encoding. The type of image can in fact, for example, be generated by analyzing the images in the display order, and recorded in memory, for example at the level of the scheduling buffer. Thus in the left part, we see that the index in display order is sorted, while in the right part, it is the index in encoding order which is sorted.
[0116] A chaque encodage d’image, ce stockage en mémoire est mis à jour (une image sort pour être encodée, une autre rentre pour être stockée en mémoire) en conservant ses propriétés. [0116] Each time an image is encoded, this storage in memory is updated (one image leaves to be encoded, another enters to be stored in memory) while retaining its properties.
[0117] Ainsi, la détection de transitions, et en particulier la détection de transitions graduelles, s’effectuant plus aisément dans l’ordre d’affichage, et à l’inverse, le MB tree s’intéressant à la propagation des références dans l’ordre d’encodage, la figure 4a illustre un exemple de configuration de stockage dans une unité mise en mémoire permettant à un module d’analyse d’exécuter ces deux algorithmes, y compris en parallèle. Thus, the detection of transitions, and in particular the detection of gradual transitions, being carried out more easily in the order of display, and conversely, the MB tree being interested in the propagation of the references in the encoding order, FIG. 4a illustrates an example of a storage configuration in a unit placed in memory allowing an analysis module to execute these two algorithms, including in parallel.
[0118] La figure 5 est un diagramme illustrant le procédé proposé selon un ou plusieurs modes de réalisation. [0118] FIG. 5 is a diagram illustrating the method proposed according to one or more embodiments.
[0119] On envisage le cas d’une image (dite « image courante ») issue d’un ensemble d’images, par exemple une séquence d’images correspondant à une séquence vidéo, et découpée en blocs, dont l’encodage est effectué par encodage des blocs, chaque bloc étant encodé selon un parmi une pluralité de modes de codage. We consider the case of an image (called "current image") from a set of images, for example a sequence of images corresponding to a video sequence, and cut into blocks, the encoding of which is performed by encoding blocks, each block being encoded according to one of a plurality of encoding modes.
[0120] On considère ainsi le codage d’un bloc courant selon un mode de codage parmi une pluralité de modes de codage, par exemple comprenant un ou plusieurs modes de codage de type à prédiction par corrélation temporelle utilisant une pluralité d’images de la séquence d’images et/ou un ou plusieurs modes de codage de type à prédiction par corrélation spatiale sur l’image en cours d’encodage. Les images de l’ensemble d’images peuvent être encodées selon un séquencement définissant une séquence d’encodage des images de l’ensemble d’images. [0120] The coding of a current block is thus considered according to one coding mode from among a plurality of coding modes, for example comprising one or more coding modes of the prediction type by time correlation using a plurality of images of the. sequence of images and / or one or more coding modes of the prediction type by spatial correlation on the image being encoded. The images in the set of images may be encoded in a sequence defining an encoding sequence of the images in the set of images.
[0121] En référence à la figure 5, on détermine (200) une prédiction d’au moins une caractéristique du bloc courant dans une ou plusieurs images de l’ensemble d’images distinctes de l’image courante et non encore encodées selon une séquence d’encodage, sur la base d’au moins une image distincte de l’image courante et précédemment encodée selon la séquence d’encodage des images de l’ensemble d’images. With reference to FIG. 5, a prediction of at least one characteristic of the current block is determined (200) in one or more images of the set of images distinct from the current image and not yet encoded according to a encoding sequence, based on at least one image distinct from the image current and previously encoded according to the encoding sequence of the images of the set of images.
[0122] On utilise (201) ensuite la prédiction déterminée pour l’encodage du bloc courant, par exemple en minimisant un critère débit distorsion pour sélectionner parmi une pluralité de modes de codage un mode de codage pour le bloc courant considéré comme optimal au regard d’un critère de décision. Un exemple d’un tel critère, noté [Math. 1]/, est de la forme [Math. 2\J = D +À.R, où [Math. 3]D désigne la distorsion, [Math. 4]À est un multiplicateur de Lagrange et [Math. 5 ]R désigne le débit associé au codage de la décision estimée. Différents types de critère peuvent être utilisés, tels que des critères utilisant une métrique dite « objective » de calcul de la distorsion [Math. 6]D , telle que la somme des différences absolues (en anglais « Sum of Absolute Différences », ou SAD) ou l’erreur quadratique moyenne (en anglais « Mean Square Error », ou MSE), ou des critères incorporant une mesure de distorsion visuelle (aussi appelée « distorsion subjective »). Par exemple, la corrélation entre un bloc et son déplacement selon un vecteur d’estimation de mouvement peut être calculée à l’aide de la Somme des Différences Absolues (SAD) : The prediction determined for the encoding of the current block is then used (201), for example by minimizing a distortion rate criterion to select from among a plurality of encoding modes an encoding mode for the current block considered to be optimal with regard to of a decision criterion. An example of such a criterion, noted [Math. 1] /, is of the form [Math. 2 \ J = D + À.R, where [Math. 3] D denotes the distortion, [Math. 4] A is a Lagrange multiplier and [Math. 5] R designates the bit rate associated with the coding of the estimated decision. Different types of criteria can be used, such as criteria using a so-called "objective" metric for calculating the distortion [Math. 6] D, such as the sum of the absolute differences (in English "Sum of Absolute Differences", or SAD) or the mean square error (in English "Mean Square Error", or MSE), or criteria incorporating a measure of visual distortion (also called "subjective distortion"). For example, the correlation between a block and its displacement according to a motion estimation vector can be calculated using the Sum of Absolute Differences (SAD):
[0123] [Math. [0123] [Math.
[0124] où [Math. 8]pxyest le pixel à la position [Math. 9](x,y) du bloc d’origine et [Math. 10] p' xy le pixel à la position [Math. 11](x,y) du bloc de référence. Une[0124] where [Math. 8] p xy is the pixel at position [Math. 9] (x, y) of the original block and [Math. 10] p 'xy the pixel at position [Math. 11] (x, y) of the reference block. A
SAD faible sera interprétée comme une indication que les deux blocs sont très ressemblants. Weak SAD will be interpreted as an indication that the two blocks are very similar.
[0125] Le procédé proposé introduit l’utilisation d’une prédiction d’une ou de plusieurs caractéristiques du bloc courant (soit en cours d’encodage), déterminées dans la vidéo dans le futur, c’est-à-dire dans une ou plusieurs images de l’ensemble d’images (typiquement de la séquence vidéo) qui n’ont pas encore été encodées selon la séquence d’encodage. Dans un ou plusieurs modes de réalisation, cette prédiction est calculée sur la base des images du passé, c’est-à- dire sur la base d’une ou plusieurs images qui ont été précédemment encodées selon la séquence d’encodage. [0126] Déterminer cette prédiction permet de s’affranchir, en tout ou partie, de l’utilisation de la technique de mise en mémoire (dite de « lookahead ») pour conserver en mémoire une connaissance de la vidéo dans le futur par rapport à l’image en cours d’encodage, et ainsi de diminuer la latence de traitement en diminuant la latence correspondant à l’utilisation de la technique de mise en mémoire (« lookahead »). En effet, le procédé proposé peut être mis en œuvre en n’utilisant, pour la détermination de la prédiction, que des images qui ont déjà été encodées et sont donc déjà disponibles à l’encodeur, ou en utilisant une mise en mémoire d’un plus faible nombre d’images non encore encodées. Cela permet d’obtenir de bonnes performances en termes de latence, de débit et de qualité vidéo, qui peuvent être compatibles avec un encodage vidéo pour une diffusion « live ». The proposed method introduces the use of a prediction of one or more characteristics of the current block (either during encoding), determined in the video in the future, that is to say in a or several images of the set of images (typically of the video sequence) which have not yet been encoded according to the encoding sequence. In one or more embodiments, this prediction is calculated on the basis of the images of the past, that is to say on the basis of one or more images which have been previously encoded according to the encoding sequence. Determining this prediction makes it possible to dispense, in whole or in part, from the use of the storage technique (called "lookahead") to keep in memory a knowledge of the video in the future compared to the image being encoded, and thus reduce the processing latency by reducing the latency corresponding to the use of the storage technique (“lookahead”). Indeed, the proposed method can be implemented by using, for the determination of the prediction, only images which have already been encoded and are therefore already available at the encoder, or by using a storage of a smaller number of images not yet encoded. This provides good performance in terms of latency, bit rate and video quality, which can be compatible with video encoding for “live” broadcasting.
[0127] Dans un ou plusieurs modes de réalisation, la prédiction du bloc courant peut en outre être déterminée sur la base d’au moins une image non encore encodée selon la séquence d’encodage. Ainsi, la détermination de la prédiction peut dans certains modes de réalisation utiliser au moins une image déjà encodée de l’ensemble d’images (soit au moins une image du passé) et au moins une image non encore encodée de l’ensemble d’images (soit au moins une image du futur). Dans un ou plusieurs modes de réalisation, on peut utiliser une mise en mémoire (« lookahead ») pour avoir des images du futur qui soient disponibles pour la détermination de la prédiction, tout en limitant la quantité d’images de l’ensemble d’images qui sont stockées en mémoire afin d’obtenir un gain de réduction de latence. [0127] In one or more embodiments, the prediction of the current block can further be determined on the basis of at least one image not yet encoded according to the encoding sequence. Thus, the determination of the prediction can in certain embodiments use at least one already encoded image of the set of images (ie at least one image from the past) and at least one not yet encoded image of the set of images. images (ie at least one image from the future). In one or more embodiments, one can use a lookahead to have images of the future available for the determination of the prediction, while limiting the amount of images of the set of images. images which are stored in memory in order to obtain a gain in latency reduction.
[0128] Dans un ou plusieurs modes de réalisation, la ou les caractéristiques du bloc courant prédites pourront correspondre à des résultats d’analyses à effectuer en amont de l’encodage pour améliorer son efficacité comme décrit ci-dessus. Par exemple, en correspondance avec une analyse de type MB Tree, la caractéristique prédite pourra correspondre à un score qui indique la persistance du bloc courant en tant que référence pour l’encodage des images du futur. Ce score pourra, en fonction du mode de réalisation, comprendre un coût de propagation du bloc courant dans des images du futur (c’est-à-dire non encore encodées) de l’ensemble d’images. In one or more embodiments, the predicted characteristic or characteristics of the current block may correspond to the results of analyzes to be carried out upstream of the encoding in order to improve its efficiency as described above. For example, in correspondence with an MB Tree type analysis, the predicted characteristic could correspond to a score which indicates the persistence of the current block as a reference for encoding images of the future. This score may, depending on the embodiment, include a cost of propagation of the current block in images of the future (that is to say not yet encoded) of the set of images.
[0129] En correspondance avec une analyse de détection de transition, la caractéristique prédite pourra correspondre, dans un ou plusieurs modes de réalisation, à un score indiquant une présence ou non d’une transition (par exemple un score indiquant si l’image appartient à la même scène que précédemment, ou n’appartient pas à la même scène que précédemment). In correspondence with a transition detection analysis, the predicted characteristic could correspond, in one or more embodiments, to a score indicating the presence or not of a transition (for example a score indicating whether the image belongs to same scene as before, or does not belong to the same scene as before).
[0130] En correspondance avec une analyse de contrôle de débit, la caractéristique prédite pourra correspondre, dans un ou plusieurs modes de réalisation, à un score qui indique pour le bloc courant l’évolution de la quantité d’information au cours du temps, c’est-à-dire dans des blocs d’images du futur (non encore encodées) correspondant au bloc courant. In correspondence with a flow control analysis, the predicted characteristic may correspond, in one or more embodiments, to a score which indicates for the current block the evolution of the quantity of information over time, that is to say in blocks of images of the future (not yet encoded) corresponding to the current block.
[0131] Dans ce qui suit, on considère des systèmes d’encodage d’images configurés pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation comprenant un encodeur doté d’une mémoire tampon configurée pour stocker k images, dont une image en cours d’encodage et k - 1 images déjà encodées. Les images déjà encodées et stockées au niveau de l’encodeur peuvent être considérées comme des images du passé par rapport à l’image en cours d’encodage eu égard à la séquence d’encodage des images utilisée par l’encodeur. La conservation en mémoire de ces images n’implique pas de pénalité particulière, à part un peu de consommation mémoire. Ces images du passé sont donc considérées comme étant toujours disponibles. In what follows, we consider image encoding systems configured for the implementation of the method proposed according to one or more embodiments comprising an encoder provided with a buffer memory configured to store k images, including an image being encoded and k - 1 images already encoded. Images already encoded and stored at the encoder may be considered as images from the past compared to the image being encoded with regard to the image encoding sequence used by the encoder. There are no special penalties for storing these images in memory, apart from some memory consumption. These images from the past are therefore considered to be still available.
[0132] La figure 6a illustre un système d’encodage d’images configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation. [0132] FIG. 6a illustrates an image encoding system configured for implementing the method proposed according to one or more embodiments.
[0133] En référence à la figure 6a, une unité de mise en mémoire (120a) comprenant une mémoire est interposée entre l’encodeur (100a) et l’arrivée de la séquence vidéo source (101a) pour stocker dans une mémoire n images (121a) de la séquence vidéo source (images non encore encodées d’indices temporels t+1, t+2, ..., t+n) avant encodage. L’encodeur effectue l’encodage de k images (112a) de la séquence vidéo source (image en cours d’encodage d’indice temporel t, et images déjà encodées d’indices temporels respectifs t-1, ..., t-k) selon la séquence d’encodage choisie, et produit en sortie une vidéo compressée (113a). Une unité de prédiction (131a) des images de la séquence vidéo source est configurée pour prédire l’évolution de la vidéo dans le futur, à partir d’une ou de plusieurs images du passé (images (112a) déjà encodées ou en cours d’encodage par l’encodeur), et éventuellement à partir d’une ou de plusieurs images du futur (images (121a) non encore en cours d’encodage, et stockées en mémoire, par exemple dans l’unité de mise en mémoire (120a)). Dans un ou plusieurs modes de réalisation, l’unité de prédiction (131a) des images de la séquence vidéo source est configurée pour fournir à l’unité d’analyse (130a) des prédictions d’au moins une caractéristique de blocs des images à encoder sur la base d’une ou de plusieurs images parmi les images (112a) du passé (image en cours d’encodage d’indice temporel t, et images déjà encodées d’indices temporels respectifs t-1, ..., t-k) stockées en mémoire de l’encodeur (100a), ainsi que, dans les modes de réalisation illustrés sur la figure 6a, sur la base d’une ou de plusieurs images parmi les images (121a) du futur (images non encore encodées d’indices temporels t+1, t+2, ..., t+n) stockées en mémoire de l’unité de mise en mémoire (120a). L’unité d’analyse (130a) peut être configurée pour effectuer certains traitements d’analyse des images à encoder, comme par exemple, tel que décrit ci-dessus, une détection de transitions et/ou la mise en œuvre d’un algorithme de type « MB Tree », sur la base des prédictions qui lui sont fournies par l’unité de prédiction (131a). De préférence, le nombre (n) d’images stockées en mémoire de l’unité de mise en mémoire (120a), dans les modes de réalisation utilisant une unité de mise en mémoire, sera inférieur au nombre (N) d’images stockées en mémoire de l’unité de mise en mémoire lorsque le module de prédiction proposé n’est pas utilisé (par exemple comme illustré sur la figure 2), de manière à diminuer la latence induite par cette mise en mémoire, et ce même lorsqu’une mise en mémoire d’images de la séquence vidéo source avant encodage est utilisée. With reference to FIG. 6a, a storage unit (120a) comprising a memory is interposed between the encoder (100a) and the arrival of the source video sequence (101a) in order to store n images in a memory. (121a) of the source video sequence (not yet encoded images with time indices t + 1, t + 2, ..., t + n) before encoding. The encoder performs the encoding of k images (112a) of the source video sequence (image being encoded with a time index t, and images already encoded with respective time indices t-1, ..., tk) according to the chosen encoding sequence, and outputs a compressed video (113a). A prediction unit (131a) of the images of the source video sequence is configured to predict the evolution of the video in the future, from one or more images of the past (images (112a) already encoded or in progress. 'encoding by the encoder), and possibly from one or more images of the future (images (121a) not yet being encoded, and stored in memory, for example in the storage unit ( 120a)). In one or more embodiments, the prediction unit (131a) of the images of the source video sequence is configured to provide the analysis unit (130a) with predictions of at least one characteristic of blocks of the images to. encode on the basis of one or more images among the images (112a) of the past (image being encoded with time index t, and images already encoded with respective time indices t-1, ..., tk ) stored in the memory of the encoder (100a), as well as, in the embodiments illustrated in FIG. 6a, on the basis of one or more images among the images (121a) of the future (images not yet encoded d 'time indices t + 1, t + 2, ..., t + n) stored in the memory of the storage unit (120a). The analysis unit (130a) can be configured to perform certain analysis processing of the images to be encoded, such as, for example, as described above, detection of transitions and / or the implementation of an algorithm. of the “MB Tree” type, on the basis of the predictions supplied to it by the prediction unit (131a). Preferably, the number (n) of images stored in the memory of the storage unit (120a), in embodiments using a storage unit, will be less than the number (N) of stored images. in the memory of the storage unit when the proposed prediction module is not used (for example as illustrated in FIG. 2), so as to reduce the latency induced by this storage, even when image storage of the source video sequence before encoding is used.
[0134] Ainsi, l’analyse des images futures peut être reconstruite sans générer de latence, ou en générant une latence correspondant à la quantité de mise en mémoire utilisée, par exemple au nombre d’images stockées en mémoire de l’unité de mise en mémoire utilisée. [0135] La figure 6b est un schéma illustrant un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation, correspondant à une variante de la mise en œuvre illustrée par la figure 6a dans laquelle l’unité d’analyse (130a) et l’unité de prédiction (131a) sont regroupées au sein d’une unité de prédiction d’analyse (132a), dont les fonctionnalités correspondent à l’ensemble des fonctionnalités de l’unité d’analyse (130a) et des fonctionnalités de l’unité de prédiction (131a) réunies. Dans un ou plusieurs modes de réalisation, l’unité de prédiction d’analyse (132a) des images de la séquence vidéo source est configurée pour fournir à l’encodeur (100a) des prédictions d’au moins une caractéristique de blocs des images à encoder sur la base d’une ou de plusieurs images parmi les images (112a) du passé (image en cours d’encodage d’indice temporel t, et images déjà encodées d’indices temporels respectifs t-1, ..., t-k) stockées en mémoire de l’encodeur (100a), ainsi que, dans les modes de réalisation illustrés sur la figure 6b, sur la base d’une ou de plusieurs images parmi les images (121a) du futur (images non encore encodées d’indices temporels t+1, t+2, ..., t+n) stockées en mémoire de l’unité de mise en mémoire (120a). L’encodeur (100a) peut être configuré pour utiliser certains traitements d’analyse des images à encoder, sur la base des prédictions et des résultats d’analyse qui lui sont fournis par l’unité de prédiction d’analyse (132a). [0134] Thus, the analysis of future images can be reconstructed without generating latency, or by generating a latency corresponding to the amount of storage used, for example the number of images stored in the memory of the setting unit. in memory used. [0135] FIG. 6b is a diagram illustrating a system configured for the implementation of the method proposed according to one or more embodiments, corresponding to a variant of the implementation illustrated by FIG. 6a in which the unit of analysis (130a) and the prediction unit (131a) are grouped together within an analysis prediction unit (132a), the functionalities of which correspond to all the functionalities of the analysis unit (130a) and functions of the prediction unit (131a) combined. In one or more embodiments, the analysis prediction unit (132a) of the images of the source video sequence is configured to provide the encoder (100a) with predictions of at least one characteristic of blocks of the images to be analyzed. encode on the basis of one or more images among the images (112a) of the past (image being encoded with time index t, and images already encoded with respective time indices t-1, ..., tk ) stored in the memory of the encoder (100a), as well as, in the embodiments illustrated in FIG. 6b, on the basis of one or more images among the images (121a) of the future (images not yet encoded d 'time indices t + 1, t + 2, ..., t + n) stored in the memory of the storage unit (120a). The encoder (100a) can be configured to use certain processing for analyzing the images to be encoded, on the basis of the predictions and the analysis results supplied to it by the analysis prediction unit (132a).
[0136] La figure 6c est un schéma illustrant un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs autres modes de réalisation n’utilisant pas de mise en mémoire avant encodage d’images de la séquence vidéo source. [0136] FIG. 6c is a diagram illustrating a system configured for the implementation of the method proposed according to one or more other embodiments not using storage before encoding of images of the source video sequence.
[0137] En référence à la figure 6c, et à la différence des schémas des figures 6a et 6b, aucune unité de mise en mémoire n’est interposée entre l’encodeur (100b) et l’arrivée de la séquence vidéo source (101b) pour stocker en mémoire des images de la séquence vidéo source avant encodage. L’encodeur effectue l’encodage de k images (112b) de la séquence vidéo source (image en cours d’encodage d’indice temporel t, et images déjà encodées d’indices temporels respectifs t-1, ..., t-k) selon la séquence d’encodage choisie, et produit en sortie une vidéo compressée (113b). Une unité de prédiction d’analyse (131 b) des images de la séquence vidéo source est configurée pour fournir à l’encodeur (100b) des prédictions de caractéristiques de blocs des images à encoder uniquement sur la base d’une ou de plusieurs images parmi les images (112b) du passé (image en cours d’encodage d’indice temporel t, et images déjà encodées d’indices temporels respectifs t-1 , t-k) stockées en mémoire de l’encodeur (100b). L’encodeur (100b) peut être configuré pour effectuer ou utiliser certains traitements d’analyse des images à encoder, sur la base des prédictions qui lui sont fournies par l’unité de prédiction d’analyse (131b). Ainsi, dans ce cas de figure, l’unité de prédiction d’analyse (131 b) s’appuie uniquement sur des images du passé pour prédire les résultats d’analyse souhaités. La latence (autrement induite par l’utilisation du stockage en mémoire d’images de la vidéo source avant encodage) est alors avantageusement réduite à son minimum. With reference to FIG. 6c, and unlike the diagrams of FIGS. 6a and 6b, no storage unit is interposed between the encoder (100b) and the arrival of the source video sequence (101b ) to store images of the source video sequence in memory before encoding. The encoder performs the encoding of k images (112b) of the source video sequence (image being encoded with time index t, and images already encoded with respective time indices t-1, ..., tk) according to the encoding sequence chosen, and output a compressed video (113b). An analysis prediction unit (131b) of the images of the source video sequence is configured to provide the encoder (100b) with predictions of block characteristics of the images to be encoded only on the basis of one or more images. among the images (112b) of the past (image currently being encoded with time index t, and images already encoded with respective time indices t-1, tk) stored in the memory of the encoder (100b). The encoder (100b) can be configured to perform or use certain analysis processing of the images to be encoded, on the basis of the predictions supplied to it by the analysis prediction unit (131b). Thus, in this case, the analysis prediction unit (131b) relies only on images from the past to predict the desired analysis results. The latency (otherwise induced by the use of the image memory storage of the source video before encoding) is then advantageously reduced to its minimum.
[0138] La figure 6d est un schéma illustrant un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation. [0138] FIG. 6d is a diagram illustrating a system configured for the implementation of the method proposed according to one or more embodiments.
[0139] En référence à la figure 6d, une unité de mise en mémoire (120c) comprenant une mémoire est interposée entre l’encodeur (100c) et l’arrivée de la séquence vidéo source (101c) pour stocker dans une mémoire n images (121 c1 ;121c2 ; 121c3) de la séquence vidéo source avant encodage. Comme illustré sur la figure 4a, le stockage en mémoire au sein de l’unité de mise en mémoire (120c) est structuré avec trois mémoires : une première mémoire (121 c1 ) stocke des images de la séquence vidéo source dans l’ordre d’affichage des images, une deuxième mémoire (121c2) stocke des images de la séquence vidéo source après ré-ordonnancement par rapport à leur ordre d’affichage, et une troisième mémoire (121c3) stocke des images de la séquence vidéo source dans l’ordre d’encodage de ces images. L’encodeur (100c) effectue l’encodage de k images (112c) de la séquence vidéo source (image en cours d’encodage d’indice temporel t, et images déjà encodées d’indices temporels respectifs t-1 , ..., t-k) selon la séquence d’encodage choisie, et produit en sortie une vidéo compressée (113c). Une unité de prédiction d’analyse (132c) des images de la séquence vidéo source est configurée pour prédire l’évolution de la vidéo dans le futur, à partir d’une ou de plusieurs images du passé (images (112c) déjà encodées ou en cours d’encodage par l’encodeur), et éventuellement à partir d’une ou de plusieurs images du futur (images (121 c1 ;121c2 ; 121c3) non encore en cours d’encodage, et stockées en mémoire, par exemple dans l’unité de mise en mémoire (120c)). Dans un ou plusieurs modes de réalisation, l’unité de prédiction d’analyse (132c) des images de la séquence vidéo source est configurée pour fournir à l’encodeur (100c) des prédictions d’au moins une caractéristique de blocs des images à encoder sur la base d’une ou de plusieurs images parmi les images (112c) du passé (image en cours d’encodage d’indice temporel t, et images déjà encodées d’indices temporels respectifs t-1, ..., t-k) stockées en mémoire de l’encodeur (100c), ainsi que, dans les modes de réalisation illustrés sur la figure 6d, sur la base d’une ou de plusieurs images parmi les images (121 c1 ;121c2 ; 121c3) du futur stockées en mémoire de l’unité de mise en mémoire (120c). L’encodeur (100c) peut être configuré pour utiliser certains traitements d’analyse des images à encoder, sur la base des prédictions et des résultats d’analyse qui lui sont fournis par l’unité de prédiction d’analyse (132c). Comme indiqué ci-dessus, le nombre (n) d’images stockées en mémoire de l’unité de mise en mémoire (120c), dans les modes de réalisation utilisant une unité de mise en mémoire, sera de préférence choisi inférieur au nombre (N) d’images stockées en mémoire de l’unité de mise en mémoire lorsque le module de prédiction proposé n’est pas utilisé (par exemple comme illustré sur la figure 2), de manière à obtenir un gain de réduction de latence. With reference to FIG. 6d, a storage unit (120c) comprising a memory is interposed between the encoder (100c) and the arrival of the source video sequence (101c) in order to store n images in a memory. (121 c1; 121c2; 121c3) of the source video sequence before encoding. As illustrated in FIG. 4a, the memory storage within the storage unit (120c) is structured with three memories: a first memory (121 c1) stores images of the source video sequence in the order of d When displaying the images, a second memory (121c2) stores images of the source video sequence after reordering relative to their display order, and a third memory (121c3) stores images of the source video sequence in the image display. encoding order of these images. The encoder (100c) performs the encoding of k images (112c) of the source video sequence (image being encoded with a time index t, and images already encoded with respective time indices t-1, ... , tk) according to the chosen encoding sequence, and outputs a compressed video (113c). An analysis prediction unit (132c) of the images of the source video sequence is configured to predict the evolution of the video in the future, from one or more images from the past (images (112c) already encoded or being encoded by the encoder), and possibly from one or more images from the future (images (121 c1; 121c2; 121c3 ) not yet being encoded, and stored in memory, for example in the storage unit (120c)). In one or more embodiments, the analysis prediction unit (132c) of the images of the source video sequence is configured to provide the encoder (100c) with predictions of at least one characteristic of blocks of the images to be analyzed. encode on the basis of one or more images among the images (112c) of the past (image being encoded with time index t, and images already encoded with respective time indices t-1, ..., tk ) stored in the memory of the encoder (100c), as well as, in the embodiments illustrated in FIG. 6d, on the basis of one or more images among the images (121 c1; 121c2; 121c3) of the future stored in memory of the storage unit (120c). The encoder (100c) can be configured to use certain processing for analyzing the images to be encoded, on the basis of the predictions and the analysis results supplied to it by the analysis prediction unit (132c). As indicated above, the number (n) of images stored in the memory of the storage unit (120c), in embodiments using a storage unit, will preferably be chosen less than the number ( N) images stored in the memory of the storage unit when the proposed prediction module is not used (for example as illustrated in FIG. 2), so as to obtain a gain in latency reduction.
[0140] La figure 6e est un schéma illustrant un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation, correspondant à une variante de la mise en œuvre illustrée par la figure 6d dans laquelle l’unité de mise en mémoire (120d) ne comprend qu’une mémoire (121 d2) dans laquelle est opéré un ré-ordonnancement des images de la séquence vidéo source (101 d). Cette limitation du nombre des images stockées en mémoire de l’unité de mise en mémoire, et donc de la taille de la mémoire de l’unité de mise en mémoire, par rapport aux modes de réalisation illustrés sur la figure 6d, permet un gain de réduction de latence induite par l’utilisation de l’unité de mise en mémoire, tout en conservant une unité de prédiction d’analyse (132d) configurée pour prédire au moins une caractéristique pour les blocs des images du futur, c’est-à-dire suivant selon la séquence d’encodage les images en cours d’encodage (112d) au sein de l’encodeur (100d), sur la base des images en cours d’encodage (112d) et des images (121 d2) stockées en mémoire de l’unité de mise en mémoire (120d), pour la production de la vidéo compressée (113d ) . [0140] FIG. 6e is a diagram illustrating a system configured for the implementation of the method proposed according to one or more embodiments, corresponding to a variant of the implementation illustrated by FIG. 6d in which the implementation unit in memory (120d) only comprises a memory (121 d2) in which a reordering of the images of the source video sequence (101 d) is carried out. This limitation of the number of images stored in the memory of the storage unit, and therefore of the size of the memory of the storage unit, with respect to the embodiments illustrated in FIG. 6d, allows a gain reduction in latency induced by the use of the storage unit, while keeping an analysis prediction unit (132d) configured to predict at least one characteristic for the blocks of the images of the future, that is to say according to the encoding sequence the images being encoded (112d) within the encoder (100d), on the base of the images being encoded (112d) and the images (121 d2) stored in the memory of the storage unit (120d), for the production of the compressed video (113d).
[0141] Dans un ou plusieurs modes de réalisation, la prédiction d’une caractéristique du bloc courant peut être déterminée en utilisant un algorithme d’intelligence artificielle, comme par exemple un algorithme d’apprentissage supervisé. [0141] In one or more embodiments, the prediction of a characteristic of the current block can be determined using an artificial intelligence algorithm, such as for example a supervised learning algorithm.
[0142] En référence à la figure 4b illustrant un système d’encodage d’images utilisant une unité de mise en mémoire et de ré-ordonnancement d’images de la séquence vidéo source non encore encodées pour les fournir à une unité d’analyse mettant en œuvre un algorithme de type « MB Tree » pour déterminer des coûts de propagation d’un bloc courant dans les images stockées en mémoire de l’unité de mise en mémoire, l’unité d’analyse mettant en œuvre l’algorithme de type « MB Tree », ainsi que l’unité de mise en mémoire, peuvent être en tout ou partie remplacées dans un ou plusieurs modes de réalisation par une unité de prédiction des coûts de propagation qui s’appuie uniquement sur les images passées, c’est-à-dire sur des images disponibles à l’encodeur. Dans un ou plusieurs modes de réalisation, cette unité de prédiction peut être configurée pour mettre en œuvre un algorithme d’intelligence artificielle, et par exemple utiliser un réseau de neurones. Par exemple, dans un ou plusieurs modes de réalisation, l’unité de prédiction peut être configurée pour mettre en œuvre un algorithme d’apprentissage automatique supervisé. [0142] With reference to FIG. 4b illustrating an image encoding system using a unit for storing and re-ordering images of the source video sequence not yet encoded in order to supply them to an analysis unit implementing an “MB Tree” type algorithm to determine the costs of propagation of a current block in the images stored in the memory of the storage unit, the analysis unit implementing the algorithm of "MB Tree" type, as well as the storage unit, can be wholly or partly replaced in one or more embodiments by a propagation cost prediction unit which relies only on past images, c 'that is to say on images available at the encoder. In one or more embodiments, this prediction unit can be configured to implement an artificial intelligence algorithm, and for example use a neural network. For example, in one or more embodiments, the prediction unit may be configured to implement a supervised machine learning algorithm.
[0143] La mise en œuvre d’un algorithme d’intelligence artificielle peut, dans un ou plusieurs modes de réalisation, conduire à effectuer une phase d’apprentissage, préalablement à la détermination de la prédiction de la caractéristique du bloc courant lors d’une phase dite d’inférence lors de laquelle un modèle de prédiction sera utilisé pour déterminer la prédiction, afin de déterminer des paramètres du modèle de prédiction. [0144] La phase d’apprentissage peut être effectuée sur un ensemble d’images différent de l’ensemble d’images comprenant les images à encoder, de manière à ce que l’algorithme utilisé pour la détermination de la prédiction ait effectué une phase d’apprentissage sur des données différentes de celles utilisées pour la mise en œuvre de la prédiction pour l’encodage des images d’un ensemble d’images. [0143] The implementation of an artificial intelligence algorithm can, in one or more embodiments, lead to performing a learning phase, prior to determining the prediction of the characteristic of the current block during a so-called inference phase during which a prediction model will be used to determine the prediction, in order to determine parameters of the prediction model. The learning phase can be performed on a set of images different from the set of images comprising the images to be encoded, so that the algorithm used for determining the prediction has performed a phase training on data different from those used for the implementation of the prediction for encoding the images of a set of images.
[0145] Dans un ou plusieurs modes de réalisation, la phase d’apprentissage peut comprendre la détermination de données de référence comprenant une prédiction de référence de la caractéristique d’un bloc courant sur lequel est effectué l’apprentissage, le bloc courant appartenant à une image de l’ensemble d’images sur lequel est effectué l’apprentissage, dite image courante, dans une image de l’ensemble d’images distincte de l’image courante et non encore encodée selon la séquence d’encodage de l’ensemble d’images sur lequel est effectué l’apprentissage, sur la base d’une autre image de l’ensemble d’images distincte de l’image courante et non encore encodée selon la séquence d’encodage. Dans un ou plusieurs modes de réalisation, les données de référence peuvent ainsi correspondre à la caractéristique que l’on cherche à prédire à l’aide de l’algorithme d’intelligence artificielle. In one or more embodiments, the learning phase can comprise the determination of reference data comprising a reference prediction of the characteristic of a current block on which the learning is performed, the current block belonging to an image of the set of images on which the learning is carried out, called the current image, in an image of the set of images distinct from the current image and not yet encoded according to the encoding sequence of the set of images on which the learning is performed, on the basis of another image of the set of images distinct from the current image and not yet encoded according to the encoding sequence. In one or more embodiments, the reference data can thus correspond to the characteristic that one seeks to predict using the artificial intelligence algorithm.
[0146] Ces données de référence (par exemple, dans un ou plusieurs modes de réalisation, la prédiction de référence du bloc courant) peuvent être utilisées pour exécuter une phase d’apprentissage sur un réseau de neurones, sur la base en outre de données d’entrée, afin de générer un modèle de prédiction d’une caractéristique d’un bloc courant dans les images de l’ensemble d’images non encore encodées selon une séquence d’encodage, par exemple pour déterminer des paramètres du modèle. Le modèle de prédiction peut ensuite être utilisé pour déterminer une prédiction de la caractéristique dans une ou plusieurs images non encore encodées, sur la base d’au moins une image déjà encodée, tel que proposé dans un ou plusieurs modes de réalisation. [0146] These reference data (for example, in one or more embodiments, the reference prediction of the current block) can be used to carry out a training phase on a neural network, further on the basis of data input, in order to generate a prediction model of a characteristic of a current block in the images of the set of images not yet encoded according to an encoding sequence, for example to determine parameters of the model. The prediction model can then be used to determine a prediction of the feature in one or more not yet encoded images, based on at least one already encoded image, as provided in one or more embodiments.
[0147] Par exemple, dans un ou plusieurs modes de réalisation, les données de référence utilisées lors de la phase d’apprentissage peuvent comprendre des données générées par une unité d’analyse mettant en œuvre un algorithme de type « MB Tree », comprenant par exemple des coûts de propagation de blocs d’une ou plusieurs images non encore encodées qui sont stockées en mémoire, par exemple d’une unité de mise en mémoire comme illustré sur la figure 4b. Les données de référence peuvent ainsi par exemple comprendre les résultats d’un algorithme de type « MB Tree » appliqué à l’image courante de la phase d’apprentissage. [0147] For example, in one or more embodiments, the reference data used during the learning phase may comprise data generated by an analysis unit implementing an “MB Tree” type algorithm, comprising for example block propagation costs of one or more images not yet encoded which are stored in memory, for example of a storage unit as illustrated in FIG. 4b. The reference data can thus for example comprise the results of an “MB Tree” type algorithm applied to the current image of the learning phase.
[0148] Les données d’entrée du modèle de prédiction utilisées pour la phase d’apprentissage de ce modèle peuvent comprendre, dans un ou plusieurs modes de réalisation, des données de l’image courante de la phase d’apprentissage. [0148] The input data of the prediction model used for the learning phase of this model can include, in one or more embodiments, data of the current image of the learning phase.
[0149] Dans un ou plusieurs modes de réalisation, les données d’entrées peuvent comprendre des données d’une image précédant l’image courante selon une séquence d’encodage utilisée pour la phase d’apprentissage, c’est-à-dire d’une image déjà encodée, précédemment à l’encodage en cours de l’image courante. Par exemple, les données d’entrée peuvent comprendre des données de l’image précédant immédiatement l’image courante dans la séquence d’encodage utilisée pour la phase d’apprentissage. In one or more embodiments, the input data can comprise data of an image preceding the current image according to an encoding sequence used for the learning phase, that is to say of an image already encoded, previously to the current encoding of the current image. For example, the input data may include data from the image immediately preceding the current image in the encoding sequence used for the learning phase.
[0150] Dans un ou plusieurs modes de réalisation, les données d’entrées peuvent comprendre des données d’estimation de mouvement du bloc courant entre l’image courante et une image précédent l’image courante selon la séquence d’encodage utilisée pour la phase d’apprentissage. En fonction du mode de réalisation, ces données d’estimation peuvent comprendre un vecteur d’estimation de mouvement pour le bloc courant de la phase d’apprentissage, ainsi éventuellement qu’une valeur de métrique de distorsion objective, telle que la somme des différences absolues (SAD) ou l’erreur quadratique moyenne (MSE), pour le bloc courant. [0150] In one or more embodiments, the input data may comprise data for estimating the movement of the current block between the current image and an image preceding the current image according to the encoding sequence used for the. learning phase. Depending on the embodiment, this estimation data may include a motion estimation vector for the current block of the training phase, as well as optionally an objective distortion metric value, such as the sum of the differences. absolute values (SAD) or the mean square error (MSE), for the current block.
[0151] Ainsi, dans un ou plusieurs modes de réalisation dans lesquels la pluralité de modes de codage comprend au moins un mode de codage de type à prédiction par corrélation temporelle utilisant une pluralité d’images de l’ensemble d’images utilisé pour l’apprentissage, par exemple un mode de codage du type Inter, le procédé proposé peut comprendre la détermination d’un vecteur d’estimation de mouvement du bloc courant, le vecteur d’estimation de mouvement pointant sur un bloc corrélé au bloc courant dans une image de l’ensemble d’images distincte de l’image courante et précédemment encodée selon la séquence d’encodage des images de l’ensemble d’images utilisé pour l’apprentissage. [0151] Thus, in one or more embodiments in which the plurality of coding modes comprises at least one coding mode of the prediction type by temporal correlation using a plurality of images of the set of images used for the 'learning, for example a coding mode of the Inter type, the proposed method can comprise the determination of a motion estimation vector of the current block, the motion estimation vector pointing to a block correlated with the current block in a image of separate image set of the current image and previously encoded according to the encoding sequence of the images of the set of images used for training.
[0152] L’apprentissage du modèle de prédiction, par exemple du réseau de neurones dans les cas de figure où le modèle de prédiction est mis en œuvre en utilisant un réseau de neurones, peut, dans un ou plusieurs modes de réalisation, être effectué en utilisant le vecteur d’estimation de mouvement déterminé pour le bloc courant. En fonction du mode de réalisation, l’apprentissage du modèle de prédiction, par exemple du réseau de neurones, peut en outre utiliser une valeur de métrique de distorsion objective, telle que la somme des différences absolues (SAD) ou l’erreur quadratique moyenne (MSE), pour le bloc courant. The learning of the prediction model, for example of the neural network in the cases where the prediction model is implemented using a neural network, can, in one or more embodiments, be performed using the motion estimation vector determined for the current block. Depending on the embodiment, training the prediction model, for example the neural network, may further use an objective distortion metric value, such as the sum of absolute differences (SAD) or the root mean square error. (MSE), for the current block.
[0153] Comme indiqué ci-dessus, dans un ou plusieurs modes de réalisation, en variante ou en complément de l’utilisation de données d’estimation de mouvement, l’apprentissage du réseau de neurones peut être effectué sur la base de l’image courante de la phase d’apprentissage (l’image courante étant alors comprise dans les données d’entrée du réseau pour l’apprentissage), et/ou sur la base d’une image de l’ensemble d’images distincte de l’image courante et précédemment encodée selon la séquence d’encodage des images de l’ensemble d’images utilisé pour l’apprentissage (cette image étant alors comprise dans les données d’entrée du réseau pour l’apprentissage). [0153] As indicated above, in one or more embodiments, as an alternative or in addition to the use of motion estimation data, the training of the neural network can be performed based on the current image of the learning phase (the current image then being included in the input data of the network for learning), and / or on the basis of an image of the set of images distinct from the current image and previously encoded according to the sequence for encoding the images of the set of images used for training (this image then being included in the input data of the network for training).
[0154] Dans un ou plusieurs modes de réalisation, la phase d’apprentissage permet donc de déterminer des paramètres d’un modèle de prédiction, sur la base de données d’entrée du modèle et de données de référence fournies au modèle pour son apprentissage. En fonction du mode de réalisation, les données d’entrée peuvent comprendre des données de l’image courante comprenant le bloc courant sur lequel l’apprentissage est effectué, des données d’une image précédant l’image courante dans une séquence d’encodage des images de l’ensemble d’images utilisé pour l’apprentissage, et/ou un ou plusieurs vecteurs de mouvement et une valeur de métrique objective, par exemple une valeur de métrique SAD, résultants d’une estimation de mouvement entre ces deux images. Dans les modes de réalisation où la caractéristique de bloc à prédire par le modèle de prédiction correspond à un coût de propagation représentant un score de persistance du bloc dans les images non encore encodées de l’ensemble d’images à encoder, les données de référence peuvent comprendre des données de coût de propagation, par exemple obtenues en appliquant un algorithme de type « MB Tree » à l’image courante. [0154] In one or more embodiments, the learning phase therefore makes it possible to determine parameters of a prediction model, on the basis of input data of the model and of reference data supplied to the model for its training. . Depending on the embodiment, the input data can comprise data of the current image comprising the current block on which the learning is carried out, data of an image preceding the current image in an encoding sequence. images of the set of images used for training, and / or one or more motion vectors and an objective metric value, for example an SAD metric value, resulting from an estimation of motion between these two images . In the embodiments where the block characteristic to be predicted by the prediction model corresponds to a propagation cost representing a score of persistence of the block in the not yet encoded images of the set of images to be encoded, the reference data can comprise propagation cost data, for example obtained by applying an “MB Tree” type algorithm to the image current.
[0155] Dans un ou plusieurs modes de réalisation, le réseau de neurones utilisé pour la détermination d’une prédiction d’une caractéristique du bloc courant peut être de type réseau de neurones convolutif. Un tel réseau est typiquement configuré pour apprendre des opérations de filtrage, de sorte que l’apprentissage des paramètres du réseau de neurones comprend l’apprentissage de paramètres de filtrage. [0155] In one or more embodiments, the neural network used for determining a prediction of a characteristic of the current block may be of the convolutional neural network type. Such a network is typically configured to learn filtering operations, so that learning parameters of the neural network includes learning filtering parameters.
[0156] La fig. 7a illustre un système configuré pour la mise en œuvre d’une phase d’apprentissage selon un ou plusieurs modes de réalisation. [0156] FIG. 7a illustrates a system configured for the implementation of a learning phase according to one or more embodiments.
[0157] En référence à la figure 7a, le système (1e) comprend une unité de mise en mémoire (120e) comprenant une mémoire interposée entre un encodeur (100e) et l’arrivée de la séquence vidéo source (101e) pour stocker dans une mémoire N images (121 e1 ; 121e2 ; 121e3) de la séquence vidéo source (101e) avant encodage. L’encodeur (100e) effectue l’encodage de k images (112a) de la séquence vidéo source (image en cours d’encodage d’indice temporel t, et images déjà encodées d’indices temporels respectifs t-1, ..., t-k) selon la séquence d’encodage choisie, et produit en sortie une vidéo compressée (113e). Par exemple, l’unité de mise en mémoire (120e) et l’encodeur (100e) peuvent être construits à partir d’une mise en œuvre d’encodeur HEVC, telle que x265. [0157] With reference to FIG. 7a, the system (1e) comprises a storage unit (120e) comprising a memory interposed between an encoder (100e) and the arrival of the source video sequence (101e) to store in a memory N images (121 e1; 121e2; 121e3) of the source video sequence (101e) before encoding. The encoder (100e) performs the encoding of k images (112a) of the source video sequence (image being encoded with a time index t, and images already encoded with respective time indices t-1, ... , tk) according to the chosen encoding sequence, and outputs a compressed video (113e). For example, the storage unit (120e) and encoder (100e) can be built from a HEVC encoder implementation, such as x265.
[0158] Une unité de prédiction (131e) des images de la séquence vidéo source est configurée pour prédire l’évolution de la vidéo dans le futur, à partir d’une ou de plusieurs images du passé (images (112e) déjà encodées ou en cours d’encodage par l’encodeur), et éventuellement à partir d’une ou de plusieurs images du futur (images non encore en cours d’encodage, et stockées en mémoire, par exemple dans l’unité de mise en mémoire (120e)). Dans un ou plusieurs modes de réalisation, l’unité de prédiction (131e) des images de la séquence vidéo source est configurée pour effectuer une phase d’apprentissage pour générer un modèle d’estimation. Dans l’exemple illustré, l’unité de prédiction (131e) comprend une unité d’analyse (133e) configurée pour exécuter un algorithme de type « MB Tree » à partir de données d’images (121e3) stockées en mémoire de l’unité de mise en mémoire (120e) et générer des données de coût de propagation fournies comme données de référence à une unité d’apprentissage (135e) de l’unité de prédiction (131e). L’unité d’apprentissage (135e) est configurée pour recevoir ces données de référence, ainsi que des données d’entrée comprenant des données de l’image courante stockée dans l’encodeur (100e) (image d’indice temporel « t »), des données d’une image précédant l’image courante dans la séquence d’encodage (par exemple, comme illustré sur la figure, image d’indice temporel « t - 1 »), ainsi que des données d’estimation de mouvement (comprenant par exemple des vecteurs de mouvement (MV) et des valeurs de critère objectif (SAD)) entre ces deux images générées par une unité d’estimation de mouvement (134e) de l’unité de prédiction (131e). Les données de référence peuvent ainsi être générées dans un ou plusieurs modes de réalisation en appliquant un algorithme de type « MB Tree » sur des images du futur par rapport aux images en cours d’encodage. En fonction du mode de réalisation, les données d’entrée peuvent comprendre des données de l’image courante et des données de l’image précédant l’image courante dans la séquence d’encodage sans comprendre des données d’estimation de mouvement entre ces deux images, ou à l’inverse comprendre des données d’estimation de mouvement entre ces deux images sans comprendre de données de l’image courante ou de données de l’image précédant l’image courante dans la séquence d’encodage. L’unité d’apprentissage (135e) peut être configurée pour apprendre à estimer les données de référence à partir des données d’entrée qui lui sont fournies, pour générer les paramètres d’un modèle d’estimation (136e). A prediction unit (131e) of the images of the source video sequence is configured to predict the evolution of the video in the future, from one or more images from the past (images (112e) already encoded or being encoded by the encoder), and possibly from one or more images of the future (images not yet being encoded, and stored in memory, for example in the storage unit ( 120e)). In one or more embodiments, the prediction unit (131e) of the images of the source video sequence is configured to perform a training phase to generate an estimation model. In the example shown, the prediction unit (131e) comprises an analysis unit (133e) configured to execute an "MB Tree" type algorithm from image data (121e3) stored in the memory of the storage unit (120e) and generate reports. propagation cost data provided as reference data to a learning unit (135e) of the prediction unit (131e). The learning unit (135e) is configured to receive this reference data, as well as input data comprising data of the current image stored in the encoder (100e) (image of time index "t" ), data of an image preceding the current image in the encoding sequence (for example, as illustrated in the figure, image of time index "t - 1"), as well as motion estimation data (comprising for example motion vectors (MV) and objective criterion values (SAD)) between these two images generated by a motion estimation unit (134e) of the prediction unit (131e). The reference data can thus be generated in one or more embodiments by applying an “MB Tree” type algorithm to images of the future with respect to the images being encoded. Depending on the embodiment, the input data may include data from the current image and data from the image preceding the current image in the encoding sequence without including data for estimating motion between these. two images, or conversely comprising data for estimating movement between these two images without comprising data from the current image or data from the image preceding the current image in the encoding sequence. The training unit (135e) can be configured to learn to estimate the reference data from the input data supplied to it, to generate the parameters of an estimate model (136e).
[0159] Dans un ou plusieurs modes de réalisation, le système (1e) peut utiliser un réseau de neurones, auquel on fournit pour une phase d’apprentissage les données d’entrée pour l’estimation des données de référence, tel que décrit ci- dessus. A l’issue de l’apprentissage, les paramètres du réseau de neurones sont sauvegardés, le réseau de neurones paramétré fournissant le modèle d’estimation (136e). [0160] La fig. 7b illustre un système configuré pour la mise en œuvre du procédé proposé selon un ou plusieurs modes de réalisation. In one or more embodiments, the system (1e) can use a neural network, to which the input data is provided for a learning phase for estimating the reference data, as described herein. - above. At the end of the learning, the parameters of the neural network are saved, the parameterized neural network providing the estimation model (136e). [0160] FIG. 7b illustrates a system configured for implementing the method proposed according to one or more embodiments.
[0161] En référence à la figure 7b, le système (1f) comprend une unité de mise en mémoire (120f) comprenant une mémoire interposée entre un encodeur ( 10Of) et l’arrivée de la séquence vidéo source (101 f) pour stocker dans une mémoire des images (121 f1 ; 121 f 2 ) de la séquence vidéo source ( 101 f ) avant encodage. L’encodeur ( 10Of) effectue l’encodage de k images (112f ) de la séquence vidéo source (image en cours d’encodage d’indice temporel t, et images déjà encodées d’indices temporels respectifs t-1, ..., t-k) selon la séquence d’encodage choisie, et produit en sortie une vidéo compressée (113f ) . Par exemple, l’unité de mise en mémoire (120f) et l’encodeur (1 OOf) peuvent être construits à partir de l’encodeur HEVC x265. [0161] With reference to FIG. 7b, the system (1f) comprises a storage unit (120f) comprising a memory interposed between an encoder (10Of) and the arrival of the source video sequence (101 f) for storing in an image memory (121 f1; 121 f 2) of the source video sequence (101 f) before encoding. The encoder (10Of) performs the encoding of k images (112f) of the source video sequence (image being encoded with a time index t, and images already encoded with respective time indices t-1, ... , tk) according to the chosen encoding sequence, and outputs a compressed video (113f). For example, the storage unit (120f) and encoder (1 OOf) can be built from the HEVC x265 encoder.
[0162] Une unité de prédiction ( 131 f ) des images de la séquence vidéo source est configurée pour prédire l’évolution de la vidéo dans le futur, à partir d’une ou de plusieurs images du passé (images (112f ) déjà encodées ou en cours d’encodage par l’encodeur), et éventuellement à partir d’une ou de plusieurs images du futur (images non encore en cours d’encodage, et stockées en mémoire, par exemple dans l’unité de mise en mémoire (120f)). Dans un ou plusieurs modes de réalisation, l’unité de prédiction ( 131 f ) des images de la séquence vidéo source comprend une unité d’inférence (137f) configurée pour déterminer une prédiction d’une caractéristique d’un bloc courant d’une image courante (image en cours d’encodage d’indice temporel t), et fournir à l’encodeur (1 OOf) la prédiction déterminée. Dans l’exemple illustré sur la figure, la caractéristique prédite comprend un coût de propagation du bloc courant, ce qui correspond à la phase d’apprentissage illustrée par la figure 7a qui utilise des données de référence comprenant des coûts de propagation générés par application d’un algorithme de type « MB Tree ». Le système (1f) permet donc avantageusement de fournir à un encodeur des données de coût de propagation, sans avoir recours à une unité d’analyse configurée pour appliquer un algorithme de type « MB Tree » à des données d’images du futur stockées en mémoire d’une unité de mise en mémoire. [0163] Dans un ou plusieurs modes de réalisation, les types de données d’entrée pour la phase d’apprentissage peuvent correspondre aux types de données d’entrée pour la phase d’inférence (ou phase de prédiction). A prediction unit (131 f) of the images of the source video sequence is configured to predict the evolution of the video in the future, from one or more images from the past (images (112f) already encoded. or being encoded by the encoder), and possibly from one or more images of the future (images not yet being encoded, and stored in memory, for example in the storage unit (120f)). In one or more embodiments, the prediction unit (131 f) of the images of the source video sequence comprises an inference unit (137f) configured to determine a prediction of a characteristic of a current block of a. current image (image being encoded with temporal index t), and supplying the determined prediction to the encoder (1 OOf). In the example illustrated in the figure, the predicted characteristic comprises a propagation cost of the current block, which corresponds to the learning phase illustrated by FIG. 7a which uses reference data comprising propagation costs generated by application of d 'an “MB Tree” type algorithm. The system (1f) therefore advantageously makes it possible to supply an encoder with propagation cost data, without having recourse to an analysis unit configured to apply an “MB Tree” type algorithm to image data of the future stored in memory of a storage unit. In one or more embodiments, the types of input data for the learning phase can correspond to the types of input data for the inference phase (or prediction phase).
[0164] En fonction du mode de réalisation, les données d’entrée de l’unité d’inférence (137f) peuvent comprendre des données de l’image courante stockée dans l’encodeur (1 OOf) (image d’indice temporel « t »), des données d’une image précédant l’image courante dans la séquence d’encodage (par exemple, comme illustré sur la figure, image d’indice temporel « t - 1 »), ainsi que des données d’estimation de mouvement (comprenant par exemple des vecteurs de mouvement (MV) et des valeurs de critère objectif (SAD)) entre ces deux images générées par une unité d’estimation de mouvement (134f) de l’unité de prédiction (131e), des données de l’image courante et des données de l’image précédant l’image courante dans la séquence d’encodage sans comprendre des données d’estimation de mouvement entre ces deux images, ou à l’inverse comprendre des données d’estimation de mouvement entre ces deux images sans comprendre de données de l’image courante ou de données de l’image précédant l’image courante dans la séquence d’encodage. [0164] Depending on the embodiment, the input data of the inference unit (137f) can comprise data of the current image stored in the encoder (1 OOf) (time index image " t "), data of an image preceding the current image in the encoding sequence (for example, as illustrated in the figure, image of time index" t - 1 "), as well as estimation data of motion (comprising for example motion vectors (MV) and objective criterion values (SAD)) between these two images generated by a motion estimation unit (134f) of the prediction unit (131e), data of the current image and data of the image preceding the current image in the encoding sequence without including data for estimating movement between these two images, or conversely including data for estimating movement between these two images without including data from the current image or data from the image preceding the current image in the encoding sequence.
[0165] Dans un ou plusieurs modes de réalisation, le système (1f) peut utiliser un réseau de neurones, auquel on fournit après apprentissage des données d’entrée pour l’estimation d’une caractéristique d’un bloc courant d’une image courante dans un ensemble d’images à encoder. L’unité d’inférence (137f) peut être configurée pour appliquer le réseau de neurones avec les paramètres sauvegardés lors de l’apprentissage. Le réseau de neurones peut être configuré pour prendre en entrée les mêmes données que lors de l’apprentissage, et fournir en sortie des coûts de propagation estimés, en remplacement de coûts de propagation générés par un algorithme de type « MB tree ». La partie de l’unité de mise en mémoire (120f) devenue inutile est supprimée, ce qui induit une réduction effective de la latence d’encodage. In one or more embodiments, the system (1f) can use a neural network, to which, after learning, input data is provided for the estimation of a characteristic of a current block of an image. current in a set of images to encode. The inference unit (137f) can be configured to apply the neural network with the settings saved during training. The neural network can be configured to take the same data as input as during training, and to output estimated propagation costs, replacing the propagation costs generated by an "MB tree" type algorithm. The part of the storage unit (120f) that is no longer needed is removed, which effectively reduces encoding latency.
[0166] La fig. 8 illustre un exemple d’architecture d’un dispositif pour la mise en œuvre du procédé proposé, selon un ou plusieurs modes de réalisation. [0167] En référence à la figure 8, le dispositif 300 comprend un contrôleur 301, couplé de manière opérationnelle à une interface d’entrée 302, une interface de sortie 303 et à une mémoire 304, qui pilote une unité de prédiction 305. [0166] FIG. 8 illustrates an exemplary architecture of a device for implementing the proposed method, according to one or more embodiments. [0167] With reference to FIG. 8, the device 300 comprises a controller 301, operably coupled to an input interface 302, an output interface 303 and to a memory 304, which drives a prediction unit 305.
[0168] L’interface d’entrée 302 est configurée pour recevoir, par exemple par l’intermédiaire d’une unité de mise en mémoire (pour mettre en œuvre une fonctionnalité de type « lookahead ») ou d’une unité d’encodage vidéo (non représentées sur la figure), des données correspondant à des images d’un ensemble d’images. L’interface d’entrée 302 peut en outre être configurée pour recevoir des données de référence et des données d’entrée, pour les mises en œuvre d’une phase d’apprentissage et d’une phase d’inférence, comme décrit ci- dessus, dans les modes de réalisation dans lesquels l’unité de prédiction 305 est configurée pour mettre en œuvre un algorithme d’intelligence artificielle tel que, par exemple, un algorithme d’apprentissage automatique supervisé. The input interface 302 is configured to receive, for example via a storage unit (to implement a functionality of the “lookahead” type) or an encoding unit. video (not shown in the figure), data corresponding to images of a set of images. The input interface 302 may further be configured to receive reference data and input data, for implementations of a learning phase and an inference phase, as described below. above, in embodiments in which the prediction unit 305 is configured to implement an artificial intelligence algorithm such as, for example, a supervised machine learning algorithm.
[0169] L’interface de sortie 303 est configurée pour fournir des données générées par l’unité de prédiction à un dispositif configuré pour utiliser ces données, tel que, par exemple, une unité d’encodage vidéo. [0169] The output interface 303 is configured to provide data generated by the prediction unit to a device configured to use that data, such as, for example, a video encoder unit.
[0170] Le contrôleur 301 est configuré pour piloter l’unité de prédiction 305 pour la mise en œuvre d’un ou de plusieurs modes de réalisation du procédé proposé. [0170] The controller 301 is configured to drive the prediction unit 305 for the implementation of one or more embodiments of the proposed method.
[0171] L’unité de prédiction 305 peut être configurée pour déterminer une prédiction d’une caractéristique d’un bloc courant, et pour fournir cette prédiction sur l’interface de sortie 303 à une unité d’encodage vidéo. Dans un ou plusieurs modes de réalisation, l’unité de prédiction 305 peut être configurée pour la mise en œuvre d’un algorithme d’intelligence artificielle, utilisant un réseau de neurones, tel que, par exemple, un algorithme d’apprentissage supervisé. Dans un ou plusieurs modes de réalisation, l’unité de prédiction 305 peut comprendre une unité d’analyse configurée pour exécuter une analyse de données d’images reçues sur l’interface d’entrée 302, telle que, par exemple, une analyse utilisant un algorithme de type « MB Tree ». [0171] Prediction unit 305 can be configured to determine a prediction of a characteristic of a current block, and to provide that prediction on output interface 303 to a video encoder unit. In one or more embodiments, the prediction unit 305 can be configured to implement an artificial intelligence algorithm, using a neural network, such as, for example, a supervised learning algorithm. In one or more embodiments, the prediction unit 305 may include an analysis unit configured to perform analysis of image data received on the input interface 302, such as, for example, analysis using an “MB Tree” type algorithm.
[0172] Le dispositif 300 peut être un ordinateur, un réseau d’ordinateurs, un composant électronique, ou un autre appareil comportant un processeur couplé de manière opérationnelle à une mémoire, ainsi que, selon le mode de réalisation choisi, une unité de stockage de données, et d'autres éléments matériels associés comme une interface de réseau et un lecteur de support pour lire un support de stockage amovible et écrire sur un tel support (non représentés sur la figure). Le support de stockage amovible peut être, par exemple, un disque compact (CD), un disque vidéo/polyvalent numérique (DVD), un disque flash, une clé USB, etc. En fonction du mode de réalisation, la mémoire, l’unité de stockage de données ou le support de stockage amovible contient des instructions qui, lorsqu'elles sont exécutées par le contrôleur 301, amènent ce contrôleur 301 à effectuer ou contrôler les parties interface d’entrée 302, interface de sortie 303, mémoire 304, et unité de prédiction 305 pour la mise en œuvre du procédé proposé. Le contrôleur 301 peut être un composant implémentant un ou plusieurs processeurs ou une unité de calcul pour l’encodage d’image selon le procédé proposé et le contrôle des unités 302, 303, 304 et 305 du dispositif 300. [0172] The device 300 may be a computer, a computer network, an electronic component, or other apparatus comprising a processor operably coupled to a memory, as well as, depending on the embodiment selected, a data storage unit, and other associated hardware elements such as a network interface and a media drive for reading and writing removable storage media (not shown in the figure). The removable storage medium can be, for example, a compact disc (CD), a digital video / versatile disc (DVD), a flash disc, a USB stick, etc. Depending on the embodiment, the memory, the data storage unit or the removable storage medium contains instructions which, when executed by the controller 301, cause this controller 301 to perform or control the interface parts of it. input 302, output interface 303, memory 304, and prediction unit 305 for implementing the proposed method. The controller 301 can be a component implementing one or more processors or a calculation unit for the image encoding according to the proposed method and the control of the units 302, 303, 304 and 305 of the device 300.
[0173] En outre, le dispositif 300 peut être mis en œuvre sous forme logicielle, sous forme matérielle, comme un circuit de type ASIC, ou sous forme d'une combinaison d'éléments matériels et logiciels, comme par exemple un programme logiciel destiné à être chargé et exécuté sur un composant de type FPGA. [0173] In addition, the device 300 can be implemented in software form, in hardware form, such as an ASIC type circuit, or in the form of a combination of hardware and software elements, such as for example a software program intended for to be loaded and executed on an FPGA type component.
Application industrielle Industrial application
[0174] En fonction du mode de réalisation choisi, certains actes, actions, évènements ou fonctions de chacune des méthodes décrites dans le présent document peuvent être effectués ou se produire selon un ordre différent de celui dans lequel ils ont été décrits, ou peuvent être ajoutés, fusionnés ou bien ne pas être effectués ou ne pas se produire, selon le cas. En outre, dans certains modes de réalisation, certains actes, actions ou évènements sont effectués ou se produisent concurremment et non pas successivement. [0174] Depending on the embodiment chosen, certain acts, actions, events or functions of each of the methods described in this document may be performed or occur in a different order from that in which they have been described, or may be added, merged or not to be done or not to happen, as the case may be. Further, in some embodiments, certain acts, actions or events are performed or occur concurrently and not sequentially.
[0175] Bien que décrits à travers un certain nombre d’exemples de réalisation détaillés, le procédé d’encodage proposé et l’équipement pour la mise en œuvre du procédé comprennent différentes variantes, modifications et perfectionnements qui apparaîtront de façon évidente à l’homme de l’art, étant entendu que ces différentes variantes, modifications et perfectionnements font partie de la portée de l’invention, telle que définie par les revendications qui suivent. De plus, différents aspects et caractéristiques décrits ci-dessus peuvent être mis en œuvre ensemble, ou séparément, ou bien substitués les uns aux autres, et l’ensemble des différentes combinaisons et sous combinaisons des aspects et caractéristiques font partie de la portée de l’invention. En outre, il se peut que certains systèmes et équipements décrits ci-dessus n’incorporent pas la totalité des modules et fonctions décrits pour les modes de réalisation préférés. [0175] Although described through a number of detailed exemplary embodiments, the proposed encoding method and the equipment for implementing the method include various variants, modifications and improvements which will become evident from the description. those skilled in the art, it being understood that these different variants, modifications and improvements form part of the scope of the invention, as defined by the claims which follow. Furthermore, different aspects and characteristics described above can be implemented together, or separately, or alternatively substituted for each other, and all of the different combinations and under combinations of aspects and characteristics are within the scope of the invention. In addition, some systems and equipment described above may not incorporate all of the modules and functions described for the preferred embodiments.

Claims

Revendications Claims
[Revendication 1] Procédé d’encodage d’une première image dans un premier ensemble d’images, dans lequel la première image est découpée en blocs, chaque bloc étant encodé selon un parmi une pluralité de modes de codage, le procédé comprenant, pour un bloc courant de la première image : déterminer, sur la base d’au moins une deuxième image distincte de la première image et précédemment encodée selon une séquence d’encodage des images du premier ensemble d’images, une prédiction d’une caractéristique du bloc courant dans une ou plusieurs troisièmes images du premier ensemble d’images distinctes de la première image et non encore encodées selon la séquence d’encodage ; et utiliser la prédiction pour l’encodage du bloc courant en minimisant un critère débit-distorsion. [Claim 1] A method of encoding a first image in a first set of images, wherein the first image is cut into blocks, each block being encoded according to one of a plurality of encoding modes, the method comprising, for a current block of the first image: determining, on the basis of at least one second image distinct from the first image and previously encoded according to a sequence for encoding the images of the first set of images, a prediction of a characteristic of the current block in one or more third images of the first set of images distinct from the first image and not yet encoded according to the encoding sequence; and use the prediction for encoding the current block by minimizing a rate-distortion criterion.
[Revendication 2] Procédé d’encodage selon la revendication 1, dans lequel la caractéristique comprend un coût de propagation du bloc courant dans les unes ou plusieurs troisièmes images du premier ensemble d’images. [Claim 2] An encoding method according to claim 1, wherein the characteristic includes a cost of propagating the current block in one or more third images of the first set of images.
[Revendication 3] Procédé d’encodage selon la revendication 1, dans lequel la caractéristique comprend une mesure de présence d’une transition dans le bloc courant. [Claim 3] An encoding method according to claim 1, wherein the characteristic comprises a measure of the presence of a transition in the current block.
[Revendication 4] Procédé d’encodage selon la revendication 1, dans lequel la caractéristique comprend une mesure de l’évolution dans le bloc courant de la quantité d’information au cours du temps. [Claim 4] An encoding method according to claim 1, wherein the characteristic comprises a measure of the change in the current block of the amount of information over time.
[Revendication 5] Procédé d’encodage selon l’une quelconque des revendications précédentes, dans lequel la prédiction du bloc courant est en outre déterminée sur la base d’au moins une quatrième image distincte de la première image et non encore encodée selon la séquence d’encodage. [Claim 5] An encoding method according to any one of the preceding claims, wherein the prediction of the current block is further determined on the basis of at least a fourth image distinct from the first image and not yet encoded according to the sequence. encoding.
[Revendication 6] Procédé selon l’une des revendications précédentes, dans lequel la prédiction de la caractéristique du bloc courant est déterminée en utilisant un algorithme d’apprentissage supervisé. [Claim 6] A method according to one of the preceding claims, wherein the prediction of the characteristic of the current block is determined using a supervised learning algorithm.
[Revendication 7] Procédé selon l’une des revendications précédentes comprenant une phase d’apprentissage d’un réseau de neurones effectuée sur un deuxième ensemble d’images, la phase d’apprentissage comprenant, pour un bloc courant d’une image courante du deuxième ensemble d’images : déterminer, sur la base d’au moins une image du deuxième ensemble d’images distincte de l’image courante et non encore encodée selon une séquence d’encodage des images du deuxième ensemble d’images, une prédiction de référence de la caractéristique du bloc courant dans une image du deuxième ensemble d’images distincte de l’image courante et non encore encodée selon la séquence d’encodage du deuxième ensemble d’images ; et effectuer une phase d’apprentissage du réseau de neurones sur la base de données d’entrée, et sur la base de la prédiction de référence du bloc courant comprise dans des données de référence, pour générer un modèle de prédiction de la caractéristique du bloc courant dans les images du deuxième ensemble d’images non encore encodées selon la séquence d’encodage. [Claim 7] Method according to one of the preceding claims comprising a learning phase of a neural network carried out on a second set of images, the learning phase comprising, for a current block of a current image of the second set of images: determining, on the basis of at least one image of the second set of images distinct from the current image and not yet encoded according to an encoding sequence of the images of the second set of images, a reference prediction of the characteristic of the current block in an image of the second set of images distinct from the current image and not yet encoded according to the encoding sequence of the second set of images; and performing a learning phase of the neural network on the basis of input data, and on the basis of the reference prediction of the current block included in reference data, to generate a prediction model of the characteristic of the block current in the images of the second set of images not yet encoded according to the encoding sequence.
[Revendication 8] Procédé selon la revendication 7, dans lequel la pluralité de modes de codage comprend au moins un mode de codage de type à prédiction par corrélation temporelle utilisant une pluralité d’images d’un ensemble d’images à encoder, le procédé comprenant en outre, pour un bloc courant d’une image courante du deuxième ensemble d’images : déterminer un vecteur d’estimation de mouvement du bloc courant, le vecteur d’estimation de mouvement pointant sur un bloc corrélé au bloc courant dans une image du deuxième ensemble d’images distincte de l’image courante et précédemment encodée selon la séquence d’encodage des images du deuxième ensemble d’images ; et dans lequel l’apprentissage du réseau de neurones est effectué en outre sur la base du vecteur d’estimation de mouvement du bloc courant compris dans les données d’entrée. [Claim 8] The method of claim 7, wherein the plurality of encoding modes comprises at least one time correlation prediction type encoding mode using a plurality of images of a set of images to be encoded, the method further comprising, for a current block of a current image of the second set of images: determining a motion estimation vector of the current block, the motion estimation vector pointing to a block correlated to the current block in an image the second set of images distinct from the current image and previously encoded according to the sequence for encoding the images of the second set of images; and wherein the learning of the neural network is further performed based on the motion estimate vector of the current block included in the input data.
[Revendication 9] Procédé selon l’une quelconque des revendications 7 et 8, dans lequel l’apprentissage du réseau de neurones est effectué sur la base de l’image courante comprise dans les données d’entrée et/ou sur la base d’une image du deuxième ensemble d’images distincte de l’image courante et précédemment encodée selon la séquence d’encodage des images du deuxième ensemble d’images, comprise dans les données d’entrée. [Claim 9] A method according to any one of claims 7 and 8, wherein the learning of the neural network is performed on the basis of the current image included in the input data and / or on the basis of an image of the second set of images distinct from the current image and previously encoded according to the sequence for encoding the images of the second set of images, included in the input data.
[Revendication 10] Procédé selon l’une quelconque des revendications 7 à 9, dans lequel le réseau de neurones est convolutif. [Claim 10] A method according to any of claims 7 to 9, wherein the neural network is convolutional.
[Revendication 11] Procédé selon l’une quelconque des revendications 7 à 10, dans lequel la prédiction de la caractéristique du bloc courant est déterminée en utilisant le modèle de prédiction, sur la base de la première image et sur la base de l’au moins une deuxième image comprises dans des données d’entrée du modèle de prédiction. [Claim 11] A method according to any of claims 7 to 10, wherein the prediction of the characteristic of the current block is determined using the prediction model, based on the first image and based on the au at least a second image included in input data of the prediction model.
[Revendication 12] Procédé selon l’une quelconque des revendications 7 à 11, dans lequel la pluralité de modes de codage comprend au moins un mode de codage de type à prédiction par corrélation temporelle utilisant une pluralité d’images du premier ensemble d’images, le procédé comprenant en outre : déterminer un vecteur d’estimation de mouvement du bloc courant, le vecteur d’estimation de mouvement pointant sur un bloc corrélé au bloc courant dans une image du premier ensemble d’images distincte de la première image et précédemment encodée selon la séquence d’encodage des images du premier ensemble d’images ; et dans lequel la prédiction du bloc courant est déterminée en utilisant le modèle de prédiction, sur la base du vecteur d’estimation de mouvement compris dans les données d’entrée du modèle de prédiction. [Claim 12] A method according to any of claims 7 to 11, wherein the plurality of coding modes comprises at least one time correlation prediction type coding mode using a plurality of images of the first set of images. , the method further comprising: determining a motion estimation vector of the current block, the motion estimation vector pointing to a block correlated with the current block in an image of the first set of images distinct from the first image and previously encoded according to the sequence of encoding the images of the first set of images; and wherein the prediction of the current block is determined using the prediction model, based on the motion estimate vector included in the input data of the prediction model.
[Revendication 13] Dispositif d’encodage d’images comprenant : une interface d’entrée configurée pour recevoir une première image d’un ensemble d’images ; une unité d’encodage d’images, couplée de manière opérationnelle à l’interface d’entrée, et configurée pour : découper la première image en blocs ; et encoder chaque bloc selon un parmi une pluralité de modes de codage selon le procédé de l’une quelconque des revendications 1 à 12. [Claim 13] An image encoding device comprising: an input interface configured to receive a first image of a set of images; an image encoding unit, operably coupled to the input interface, and configured to: slice the first image into blocks; and encoding each block according to one of a plurality of encoding modes according to the method of any one of claims 1 to 12.
[Revendication 14] Programme d’ordinateur, chargeable dans une mémoire associée à un processeur, et comprenant des portions de code pour la mise en œuvre des étapes d’un procédé selon l’une quelconque des revendications 1 à 12 lors de l’exécution dudit programme par le processeur. [Claim 14] A computer program, loadable into a memory associated with a processor, and comprising portions of code for implementation. implementation of the steps of a method according to any one of claims 1 to 12 during the execution of said program by the processor.
[Revendication 15] Ensemble de données représentant, par exemple par voie de compression ou d’encodage, un programme d’ordinateur selon la revendication 14. [Claim 15] A set of data representing, for example by compression or encoding, a computer program according to claim 14.
EP20785794.7A 2019-09-11 2020-09-09 Ai prediction for video compression Pending EP4029252A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1910014A FR3100679B1 (en) 2019-09-11 2019-09-11 IMAGE ENCODING PROCESS AND EQUIPMENT FOR IMPLEMENTING THE PROCESS
PCT/FR2020/051555 WO2021048498A1 (en) 2019-09-11 2020-09-09 Ai prediction for video compression

Publications (1)

Publication Number Publication Date
EP4029252A1 true EP4029252A1 (en) 2022-07-20

Family

ID=68807123

Family Applications (1)

Application Number Title Priority Date Filing Date
EP20785794.7A Pending EP4029252A1 (en) 2019-09-11 2020-09-09 Ai prediction for video compression

Country Status (4)

Country Link
US (1) US20220345715A1 (en)
EP (1) EP4029252A1 (en)
FR (1) FR3100679B1 (en)
WO (1) WO2021048498A1 (en)

Also Published As

Publication number Publication date
FR3100679A1 (en) 2021-03-12
US20220345715A1 (en) 2022-10-27
FR3100679B1 (en) 2022-03-25
WO2021048498A1 (en) 2021-03-18

Similar Documents

Publication Publication Date Title
EP3225029B1 (en) Image encoding method and equipment for implementing the method
FR2904494A1 (en) Video image sequence compressing method for e.g. video coder, involves estimating movement vector between portion of image to be compressed and portion of reference image reconstructed at selected quality level, and coding image portion
US20160156948A1 (en) Adaptive Video Transcoding Based on Parallel Chunked Log Analysis
TR201808770T4 (en) Image coding method, image coding apparatus, image decoding method, image decoding apparatus and image coding / decoding apparatus.
KR20110106423A (en) Video encoding using previously calculated motion information
EP3758371A1 (en) Method for processing a set of images of a video sequence
US10567825B2 (en) Cloud DVR storage
EP3318061B1 (en) Method of image encoding and facility for the implementation of the method
CA3125607A1 (en) Optimizing encoding operations when generating a buffer-constrained version of a media title
CN113132728B (en) Coding method and coder
EP2368367B1 (en) Interactive system and method for transmitting key images selected from a video stream over a low bandwidth network
EP4029252A1 (en) Ai prediction for video compression
FR2896118A1 (en) ADAPTIVE CODING AND DECODING
EP3972246A1 (en) Method for encoding and decoding of images, corresponding device for encoding and decoding of images and computer programs
Kumar et al. Double sarsa based machine learning to improve quality of video streaming over HTTP through wireless networks
FR3042368A1 (en) MULTI-VIEW ENCODING AND DECODING METHOD, MULTI-VIEW ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS
WO2020002796A1 (en) Methods and devices for coding and decoding a data stream representing at least one image
EP2160837A1 (en) Selection of decoding functions distributed to the decoder
WO2021245241A1 (en) Image processing with determination of a global movement vector from histograms
FR2957744A1 (en) METHOD FOR PROCESSING A VIDEO SEQUENCE AND ASSOCIATED DEVICE
EP2494782A1 (en) Methods and devices for image encoding and decoding, and corresponding computer programs
EP3843409A1 (en) Allocation method for low-speed link
WO2020260843A1 (en) Method for encoding and decoding video by signalling of a candidate sub-assembly
FR3081656A1 (en) METHODS AND DEVICES FOR ENCODING AND DECODING A DATA STREAM REPRESENTATIVE OF AT LEAST ONE IMAGE.
FR2872988A1 (en) Mosaic video flow producing method for e.g. navigation in set of video data, involves constructing video flow forming mosaic flow by inserting extracted base segments of original video flows in same extraction order

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20220318

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS