The present disclosure describes a method for processing a signal. Particularly, but not exclusively, the application relates to a method for processing a signal undergoing a reduction in bit depth. Particularly, but not exclusively, the signal represents a digital image.
When changing the bit depth of a digital image from a higher bit depth to a lower bit depth, digital artefacts may appear in the form of bands. The bands arise due to loss of granularity in the pixel information relating to each pixel. Thus, pixels which have differing luminance or chrominance values at a high bit depth end up having the same luminance or chrominance values at a lower bit depth which reduces the perceived quality of an image. When said lower bit depth image is encoded, the decoder would produce a reconstruction of a digital image that suffers from bands in the luminance and/or chrominance planes.
In tier-based coding formats such as ISO/IEC MPEG-5 Part 2 LCEVC (hereafter “LCEVC”), or SMPTE VC-6 2117 (hereafter “VC-6”), a signal is decomposed in multiple “echelons” (also known as “hierarchical tiers”) of data, each corresponding to a “Level of Quality” (“LoQ”) of the signal, from the highest echelon which may be at the bit depth of the original signal to a lowest echelon, which typically has a lower bit depth than the original signal. Different echelons contain information on corrections to apply to a reconstructed rendition in order to produce the final output. Echelons may be based on residual information, e.g. a difference between a version of the original signal at a particular level of quality and a reconstructed version of the signal at the same level of quality. A lowest echelon may not comprise residual information but may comprise a lowest bit depth of the original signal. The decoded signal at a given Level of Quality is reconstructed by first decoding the lowest echelon (thus reconstructing the signal at the first—lowest—Level of Quality), then predicting a rendition of the signal at the second—next higher—Level of Quality, then decoding the corresponding second echelon of reconstruction data (also known as “residual data” at the second Level of Quality), then combining the prediction with the reconstruction data so as to reconstruct the rendition of the signal at the second-higher-Level of Quality, and so on, up to reconstructing the given Level of Quality. Reconstructing the signal may comprise decoding residual data and using this to correct a version at a particular Level of Quality that is derived from a version of the signal from a lower Level of Quality.
In the example of the hierarchical tier coding systems such as LCEVC and VC-6, if the signal at the lower level of quality has banding issues these banding issues are normally resolved by the residual information which carry the granular pixel information that were lost during the bit depth reduction. However, if lossy compression is used to compress the residual information then the granular pixel information will be lost allowing the banding issue to appear at the decoder side. Additionally, the banding issue will be amplified with each higher level of quality reconstruction at the decoder. Thus, reducing the perceived quality of the signal.
The present disclosure considers a solution to the problem of banding artifacts caused by a reduction in pixel bit depth.
According to an aspect of the invention, there is provided a method of introducing dither to reduce banding artefacts in a digital image resulting from an operation applied to the digital image to reduce the pixel bit depth. The bit depth reduction produces a reduced bit depth version of the digital image which results in pixel information loss. The method comprises applying a mask to the digital image prior to encoding the digital image at the reduced bit depth. The mask indicates a pattern for selective adjustment of the pixel values in the reduced bit depth version of the digital image. The method comprises for each pixel in the digital image: determining the pixel's location in the mask and if the mask pattern indicates selective adjustment then determining a pixel adjustment factor from the pixel information lost during the bit depth reduction and applying the pixel adjustment factor to the reduced bit depth version of the pixel. The mask pattern indicates no selective adjustment for at least one pixel and indicates applying selective adjustment to at least one pixel in five in the horizontal direction, and at least one pixel in five in the vertical direction of the digital image.
In this way, a reduced bit depth version of the digital image can be produced with enhanced perceived quality by selectively (from the mask), changing pixels using discarded information which had previously provided subtle changes in colour and/or luminance. Any banding artefacts in the digital image will be mitigated in the reduced bit depth version of the digital image. In addition, applying selective changes using the mask and the discarded information, for example instead of processing the image to uncover areas and locations of possible banding artefacts for specific remedy, reduces the processing power necessary and increases the speed of processing the digital image.
Benefits arise from performing the method at an encoder prior to encoding because if the method was performed at a decoder then the decoder would have to know the pixel information that has been discarded, and so, in effect, the original signal would need to be sent from this additional signalling.
Additionally, and in the context of hierarchical coding systems such as LCEVC and VC-6, encoding the adjusted reduced bit depth version of the digital image will reduce banding artefacts at higher echelons. This is because at higher echelons the residual data may be encoded with losses, and minor adjustments to pixels signalled in the residual data, for example to deal with a corresponding increase in the bit depth at a decoder, would not be retained in the residual data when the residual data is encoded. This would be especially pronounced for complex digital images and for digital images with sharp transitions, and in situations where there is limited bandwidth relative to the desired signal size.
The bit depth reduction converts the bit depth of the pixels from a first bit depth to a second bit depth. The difference between the first bit depth and the second bit depth may be 1 bit, 2 bits, 3 bits, 4 bits. Typically, the difference is 2 bits.
Preferably, the first bit depth may be 8 bits, 9 bits, 10 bits, 11 bits, 12 bits, 13 bits, 14 bits, or more. The second bit depth may be correspondingly less, for example 1 bit, 2 bits, 3 bits, or 4 bits less. Typically, the difference is 2 bits.
Preferably, the pixel adjustment factor may be determined based on the value of the most significant bit of the pixel information lost during the bit depth reduction.
Preferably, the pixel adjustment factor may increase the value of the reduced bit depth version of the pixel by 1 when the most significant bit of the pixel information lost is 1, and the pixel adjustment factor may make no change when the most significant bit of the pixel information lost is 0.
Preferably, the pixel adjustment factor may make no change to the value of the reduced bit depth version of the pixel when the most significant bit of the pixel information lost is 1 and may decrease the reduced bit depth version of the pixel by 1 when the most significant bit of the pixel information lost is 0.
Preferably, the pixel adjustment factor may be determined based on a value of a single bit of the pixel information lost during the bit depth reduction regardless of the significance.
Preferably, the pixel adjustment factor may be determined based on the value of each bit lost during the bit depth reduction.
Preferably, the influence of each bit lost during the bit depth reduction on the pixel adjustment factor may be dependent on the significance of said bit.
Preferably, a more significant bit may have a greater influence than a lower significant bit.
Preferably, when the pixel adjustment factor is derived from two lost bits, the pixel adjustment factor may cause the reduced bit depth pixel to be adjusted by a value in of one of the following adjustment groups: 1, 0, −1; and −2, −1, 0, 1 or 2 depending on the value of the pixel information lost during the bit depth reduction.
Preferably, the pixel adjustment factor may increase the value of the reduced bit depth version of the pixel by 1 when the two most significant bits of the pixel information lost are 10 and the pixel adjustment factor may increase the value of the reduced bit depth version of the pixel by 2 when the two most significant bits of the pixel information lost are 11, and otherwise may not change the value of the reduced bit depth version of the pixel.
Preferably, the mask may indicate applying the pixel adjustment factor to one pixel in two in the horizontal direction, and one pixel in two in the vertical direction.
Preferably, the mask may indicate applying the pixel adjustment factor to one pixel in two in the horizontal direction, and one pixel in two in the vertical direction for a first portion of the digital image using a pixel adjustment pattern; and the mask may indicate an inverse of the pixel adjustment pattern to be applied to a different second portion of the digital image.
Preferably, the mask pattern may indicate multiple levels of selective adjustment, wherein each level of selective adjustment may have a different influence on the likelihood of applying the pixel adjustment factor.
Preferably, the multiple levels may signal three adjustment levels as follows: zero adjustment, first level adjustment, and second level adjustment.
Preferably, the zero adjustment may indicate no selective adjustment, the first level adjustment may make no change to when the pixel adjustment factor is applied and the second level adjustment may increase the value of the reduced bit depth version of the pixel by 1 only when the two most significant bits of the pixel information lost are 11.
Preferably, the method may be applied to at least one of the luminance values and the chrominance values of each pixel.
Preferably, the method may be performed as part of a hierarchical coding scheme.
Preferably, the method may comprise encoding, at a set of encoders, signals derived from the digital image and the reduced bit depth version of the digital image.
Preferably, the encoding at the set of encoders may comprise encoding a signal derived from the digital image using a first encoding method and a single derived from the reduced bit depth version of the digital image using a second encoding method. The first encoding method and the second encoding method may be different and output part of an LCEVC encoded signal.
Preferably, the encoding at the set of encoders may comprise encoding a signal derived from the digital image using a first encoding method and a single derived from the reduced bit depth version of the digital image using a second encoding method. The first encoding method and the second encoding method may be the same and wherein the first encoding method and the second encoding method may generate at least part of a VC-6 encoded signal.
According to a second a aspect of the invention, there is provided a computer program adapted to perform the steps of the first aspect of the invention.
According to a third aspect of the invention, there is provided a data processing apparatus comprising a processor and memory. The apparatus being adapted to carry out the steps of the first aspect of the invention.
The invention shall now be described, by way of example only, with reference to the accompanying drawings in which:
Examples described herein relate to signal processing. A signal may be considered as a sequence of samples (i.e., two-dimensional images, video frames, video fields, sound frames, etc.). In the description, the terms “image”, “picture” or “plane” (intended with the broadest meaning of “hyperplane”, i.e., array of elements with any number of dimensions and a given sampling grid) will be often used to identify the digital rendition of a sample of the signal along the sequence of samples, wherein each plane has a given resolution for each of its dimensions (e.g., X and Y), and comprises a set of plane elements (or “element”, or “pel”, or display element for two-dimensional images often called “pixel”, for volumetric images often called “voxel”, etc.) characterized by one or more “values” or “settings” (e.g., by ways of non-limiting examples, colour settings in a suitable colour space, settings indicating density levels, settings indicating temperature levels, settings indicating audio pitch, settings indicating amplitude, settings indicating depth, settings indicating alpha channel transparency level, etc.). Each plane element is identified by a suitable set of coordinates, indicating the integer positions of said element in the sampling grid of the image. Signal dimensions can include only spatial dimensions (e.g., in the case of an image) or also a time dimension (e.g., in the case of a signal evolving over time, such as a video signal).
As examples, a signal can be an image, an audio signal, a multi-channel audio signal, a telemetry signal, a video signal, a 3DoF/6DoF video signal, a volumetric signal (e.g., medical imaging, scientific imaging, holographic imaging, etc.), a volumetric video signal, or even signals with more than four dimensions.
For simplicity, examples described herein often refer to signals that are displayed as 2D planes of settings (e.g., 2D images in a suitable colour space), such as for instance a video signal. The terms “frame” or “field” will be used interchangeably with the term “image”, so as to indicate a sample in time of the video signal: any concepts and methods illustrated for video signals made of frames (progressive video signals) can be easily applicable also to video signals made of fields (interlaced video signals), and vice versa. Despite the focus of embodiments illustrated herein on image and video signals, people skilled in the art can easily understand that the same concepts and methods are also applicable to any other types of multidimensional signal (e.g., audio signals, volumetric signals, stereoscopic video signals, 3DoF/6DoF video signals, plenoptic signals, point clouds, etc.).
Certain tier-based hierarchical formats described herein use a varying amount of correction (e.g., in the form of also “residual data”, or simply “residuals”) in order to generate a reconstruction of the signal at the given level of quality that best resembles (or even losslessly reconstructs) the original. The amount of correction may be based on a fidelity of a predicted rendition of a given level of quality.
In preferred examples, the encoders or decoders are part of a tier-based hierarchical coding scheme or format. Examples of a tier-based hierarchical coding scheme include LCEVC: MPEG-5 Part 2 LCEVC (“Low Complexity Enhancement Video Coding”) and VC-6: SMPTE VC-6 ST-2117, the former being described in WO/2020/188273 (and the associated standard document) and the latter being described in WO/2019/111010 (and the associated standard document), all of which are incorporated by reference herein. However, the concepts illustrated herein need not be limited to these specific hierarchical coding schemes.
Typically, the hierarchical coding schemes used in examples herein create a base or core level, which is a representation of the original data at a lower level of quality and one or more levels of residuals which can be used to recreate the original data at a higher level of quality using a decoded version of the base level data. In general, the term “residuals” as used herein refers to a difference between a value of a reference array or reference frame and an actual array or frame of data. The array may be a one or two-dimensional array that represents a coding unit. For example, a coding unit may be a 2×2 or 4×4 set of residual values that correspond to similar sized areas of an input video frame.
It should be noted that the generalised examples are agnostic as to the nature of the input signal. Reference to “residual data” as used herein refers to data derived from a set of residuals, e.g. a set of residuals themselves or an output of a set of data processing operations that are performed on the set of residuals. Throughout the present description, generally a set of residuals includes a plurality of residuals or residual elements, each residual or residual element corresponding to a signal element, that is, an element of the signal or original data.
In specific examples, the data may be an image or video. In these examples, the set of residuals corresponds to an image or frame of the video, with each residual being associated with a pixel of the signal, the pixel being the signal element.
The methods described herein may be applied to so-called planes of data that reflect different colour components of a video signal. For example, the methods may be applied to different planes of YUV or RGB data reflecting different colour channels. Different colour channels may be processed in parallel. The components of each stream may be collated in any logical order.
A hierarchical coding scheme will now be described in which the concepts of the invention may be deployed. The scheme is conceptually illustrated in
In this particular hierarchical manner, the described data structure removes any requirement for, or dependency on, the preceding or proceeding level of quality. A level of quality may be encoded and decoded separately, and without reference to any other layer. Thus, in contrast to many known other hierarchical encoding schemes, where there is a requirement to decode the lowest level of quality in order to decode any higher levels of quality, the described methodology does not require the decoding of any other layer. Nevertheless, the principles of exchanging information described below may also be applicable to other hierarchical coding schemes.
As shown in
To create the core-echelon index, an input data frame 210 may be down-sampled using a number of down-sampling operations 201 corresponding to the number of levels or echelon indices to be used in the hierarchical coding operation. One fewer down-sampling operation 201 is required than the number of levels in the hierarchy. In all examples illustrated herein with reference to
To distinguish between down-sampling operations 201, each will be referred to in the order in which the operation is performed on the input data 210 or by the data which its output represents. For example, the third down-sampling operation 2011−n in the example may also be referred to as the core down-sampler as its output generates the core-echelon index or echelon1−n, that is, the index of all echelons at this level is 1−n. Thus, in this example, the first down-sampling operation 201−1 corresponds to the R−1 down-sampler, the second down-sampling operation 201−2 corresponds to the R−2 down-sampler and the third down-sampling operation 2011−n corresponds to the core or R−3 down-sampler.
As shown in
Variations in how to create residuals data representing higher levels of quality are conceptually illustrated in
In
In the variation of
The variation between the implementations of
The process or cycle repeats to create the third residuals R0. In the examples of
In a first step, a transform 402 is performed. The transform may be directional decomposition transform as described in WO2013/171173 or a wavelet or discrete cosine transform. If a directional decomposition transform is used, there may be output a set of four components (also referred to as transformed coefficients). When reference is made to an echelon index, it refers collectively to all directions (A, H, V, D), i.e., 4 echelons. The component set is then quantized 403 before entropy encoding. In this example, the entropy encoding operation 404 is coupled to a sparsification step 405 which takes advantage of the sparseness of the residuals data to reduce the overall data size and involves mapping data elements to an ordered quadtree. Such coupling of entropy coding and sparsification is described further in WO2019/111004 but the precise details of such a process is not relevant to the understanding of the invention. Each array of residuals may be thought of as an echelon.
The process set out above corresponds to an encoding process suitable for encoding data for reconstruction according to SMPTE ST 2117, VC-6 Multiplanar Picture Format. VC-6 is a flexible, multi-resolution, intra-only bitstream format, capable of compressing any ordered set of integer element grids, each of independent size but is also designed for picture compression. It employs data agnostic techniques for compression and is capable of compressing low or high bit-depth pictures. The bitstream's headers can contain a variety of metadata about the picture.
As will be understood, each echelon or echelon index may be implemented using a separate encoder or encoding operation. Similarly, an encoding module may be divided into the steps of down-sampling and comparing, to produce the residuals data, and subsequently encoding the residuals or alternatively each of the steps of the echelon may be implemented in a combined encoding module. Thus, the process may be for example be implemented using 4 encoders, one for each echelon index, 1 encoder and a plurality of encoding modules operating in parallel or series, or one encoder operating on different data sets repeatedly.
The following sets out an example of reconstructing an original data frame, the data frame having been encoded using the above exemplary process. This reconstruction process may be referred to as pyramidal reconstruction. Advantageously, the method provides an efficient technique for reconstructing an image encoded in a received set of data, which may be received by way of a data stream, for example, by way of individually decoding different component sets corresponding to different image size or resolution levels, and combining the image detail from one decoded component set with the upscaled decoded image data from a lower-resolution component set. Thus by performing this process for two or more component sets, digital images at the structure or detail therein may be reconstructed for progressively higher resolutions or greater numbers of pixels, without requiring the full or complete image detail of the highest-resolution component set to be received. Rather, the method facilitates the progressive addition of increasingly higher-resolution details while reconstructing an image from a lower-resolution component set, in a staged manner.
Moreover, the decoding of each component set separately facilitates the parallel processing of received component sets, thus improving reconstruction speed and efficiency in implementations wherein a plurality of processes is available.
Each resolution level corresponds to a level of quality or echelon index. This is a collective term, associated with a plane (in this example a representation of a grid of integer value elements) that describes all new inputs or received component sets, and the output reconstructed image for a cycle of index-m. The reconstructed image in echelon index zero, for instance, is the output of the final cycle of pyramidal reconstruction.
Pyramidal reconstruction may be a process of reconstructing an inverted pyramid starting from the initial echelon index and using cycles by new residuals to derive higher echelon indices up to the maximum quality, quality zero, at echelon index zero. A cycle may be thought of as a step in such pyramidal reconstruction, the step being identified by an index-m. The step typically comprises up-sampling data output from a possible previous step, for instance, upscaling the decoded first component set, and takes new residual data as further inputs in order to obtain output data to be up-sampled in a possible following step. Where only first and second component sets are received, the number of echelon indices will be two, and no possible following step is present. However, in examples where the number of component sets, or echelon indices, is three or greater, then the output data may be progressively upsampled in the following steps.
The first component set typically corresponds to the initial echelon index, which may be denoted by echelon index 1-N, where N is the number of echelon indices in the plane.
Typically, the upscaling of the decoded first component set comprises applying an upsampler to the output of the decoding procedure for the initial echelon index. In examples, this involves bringing the resolution of a reconstructed picture output from the decoding of the initial echelon index component set into conformity with the resolution of the second component set, corresponding to 2-N. Typically, the upscaled output from the lower echelon index component set corresponds to a predicted image at the higher echelon index resolution. Owing to the lower-resolution initial echelon index image and the up-sampling process, the predicted image typically corresponds to a smoothed or blurred picture.
Adding to this predicted picture higher-resolution details from the echelon index above provides a combined, reconstructed image set. Advantageously, where the received component sets for one or more higher-echelon index component sets comprise residual image data, or data indicating the pixel value differences between upscaled predicted pictures and original, uncompressed, or pre-encoding images, the amount of received data required in order to reconstruct an image or data set of a given resolution or quality may be considerably less than the amount or rate of data that would be required in order to receive the same quality image using other techniques. Thus, by combining low-detail image data received at lower resolutions with progressively greater-detail image data received at increasingly higher resolutions in accordance with the method, data rate requirements are reduced.
Typically, the set of encoded data comprises one or more further component sets, wherein each of the one or more further component sets corresponds to a higher image resolution than the second component set, and wherein each of the one or more further component sets corresponds to a progressively higher image resolution, the method comprising, for each of the one or more further component sets, decoding the component set so as to obtain a decoded set, the method further comprising, for each of the one or more further component sets, in ascending order of corresponding image resolution: upscaling the reconstructed set having the highest corresponding image resolution so as to increase the corresponding image resolution of the reconstructed set to be equal to the corresponding image resolution of the further component set, and combining the reconstructed set and the further component set together so as to produce a further reconstructed set.
In this way, the method may involve taking the reconstructed image output of a given component set level or echelon index, upscaling that reconstructed set, and combining it with the decoded output of the component set or echelon index above, to produce a new, higher resolution reconstructed picture. It will be understood that this may be performed repeatedly, for progressively higher echelon indices, depending on the total number of component sets in the received set.
In typical examples, each of the component sets corresponds to a progressively higher image resolution, wherein each progressively higher image resolution corresponds to a factor-of-four increase in the number of pixels in a corresponding image. Typically, therefore, the image size corresponding to a given component set is four times the size or number of pixels, or double the height and double the width, of the image corresponding to the component set below, that is the component set with the echelon index one less than the echelon index in question. A received set of component sets in which the linear size of each corresponding image is double with respect to the image size below may facilitate more simple upscaling operations, for example.
In the illustrated example, the number of further component sets is two. Thus, the total number of component sets in the received set is four. This corresponds to the initial echelon index being echelon-3.
The first component set may correspond to image data, and the second and any further component sets correspond to residual image data. As noted above, the method provides particularly advantageous data rate requirement reductions for a given image size in cases where the lowest echelon index, that is the first component set, contains a low resolution, or down sampled, version of the image being transmitted. In this way, with each cycle of reconstruction, starting with a low resolution image, that image is upscaled so as to produce a high resolution albeit smoothed version, and that image is then improved by way of adding the differences between that upscaled predicted picture and the actual image to be transmitted at that resolution, and this additive improvement may be repeated for each cycle. Therefore, each component set above that of the initial echelon index needs only contain residual data in order to reintroduce the information that may have been lost in down sampling the original image to the lowest echelon index.
The method provides a way of obtaining image data, which may be residual data, upon receipt of a set containing data that has been compressed, for example, by way of decomposition, quantization, entropy-encoding, and sparsification, for instance.
The sparsification step is particularly advantageous when used in connection with sets for which the original or pre-transmission data was sparse, which may typically correspond to residual image data. A residual may be a difference between elements of a first image and elements of a second image, typically co-located. Such residual image data may typically have a high degree of sparseness. This may be thought of as corresponding to an image wherein areas of detail are sparsely distributed amongst areas in which details are minimal, negligible, or absent. Such sparse data may be described as an array of data wherein the data are organised in at least a two-dimensional structure (e.g., a grid), and wherein a large portion of the data so organised are zero (logically or numerically) or are considered to be below a certain threshold. Residual data are just one example. Additionally, metadata may be sparse and so be reduced in size to a significant degree by this process. Sending data that has been sparsified allows a significant reduction in required data rate to be achieved by way of omitting to send such sparse areas, and instead reintroducing them at appropriate locations within a received byte set at a decoder.
Typically, the entropy-decoding, de-quantizing, and directional composition transform steps are performed in accordance with parameters defined by an encoder or a node from which the received set of encoded data is sent. For each echelon index, or component set, the steps serve to decode image data so as to arrive at a set which may be combined with different echelon indices as per the technique disclosed above, while allowing the set for each level to be transmitted in a data-efficient manner.
There may also be provided a method of reconstructing a set of encoded data according to the method disclosed above, wherein the decoding of each of the first and second component sets is performed according to the method disclosed above. Thus, the advantageous decoding method of the present disclosure may be utilised for each component set or echelon index in a received set of image data and reconstructed accordingly.
With reference to
With reference to the initial echelon index, or the core-echelon index, the following decoding steps are carried out for each component set echelon−3 to echelon0.
At step 507, the component set is de-sparsified. De-sparsification may be an optional step that is not performed in other tier-based hierarchical formats. In this example, the de-sparsification causes a sparse two-dimensional array to be recreated from the encoded byte set received at each echelon. Zero values grouped at locations within the two-dimensional array which were not received (owing to there being omitted from the transmitted byte set in order to reduce the quantity of data transmitted) are repopulated by this process. Non-zero values in the array retain their correct values and positions within the recreated two-dimensional array, with the de-sparsification step repopulating the transmitted zero values at the appropriate locations or groups of locations there between.
At step 509, a range decoder, the configured parameters of which correspond to those using which the transmitted data was encoded prior to transmission, is applied to the de-sparsified set at each echelon in order to substitute the encoded symbols within the array with pixel values. The encoded symbols in the received set are substituted for pixel values in accordance with an approximation of the pixel value distribution for the image. The use of an approximation of the distribution, that is relative frequency of each value across all pixel values in the image, rather than the true distribution, permits a reduction in the amount of data required to decode the set, since the distribution information is required by the range decoder in order to carry out this step. As described in the present disclosure, the steps of de-sparsification and range decoding are interdependent, rather than sequential. This is indicated by the loop formed by the arrows in the flow diagram.
At step 511, the array of values is de-quantized. This process is again carried out in accordance with the parameters with which the decomposed image was quantized prior to transmission.
Following de-quantization, the set is transformed at step 513 by a composition transform which comprises applying an inverse directional decomposition operation to the de-quantized array. This causes the directional filtering, according to an operator set comprising average, horizontal, vertical, and diagonal operators, to be reversed, such that the resultant array is image data for echelon−3 and residual data for echelon−2 to echelon0.
Stage 505 illustrates the several cycles involved in the reconstruction utilising the output of the composition transform for each of the echelon component sets 501. Stage 515 indicates the reconstructed image data output from the decoder 503 for the initial echelon. In an example, the reconstructed picture 515 has a resolution of 64×64. At 516, this reconstructed picture is up-sampled so as to increase its constituent number of pixels by a factor of four, thereby a predicted picture 517 having a resolution of 128×128 is produced. At stage 520, the predicted picture 517 is added to the decoded residuals 518 from the output of the decoder at echelon−2. The addition of these two 128×128-size images produces a 128×128-size reconstructed image, containing the smoothed image detail from the initial echelon enhanced by the higher-resolution detail of the residuals from echelon−2. This resultant reconstructed picture 519 may be output or displayed if the required output resolution is that corresponding to echelon−2. In the present example, the reconstructed picture 519 is used for a further cycle. At step 512, the reconstructed image 519 is up-sampled in the same manner as at step 516, so as to produce a 256×256-size predicted picture 524. This is then combined at step 528 with the decoded echelon-1 output 526, thereby producing a 256×256-size reconstructed picture 527 which is an upscaled version of prediction 519 enhanced with the higher-resolution details of residuals 526. At 530 this process is repeated a final time, and the reconstructed picture 527 is upscaled to a resolution of 512×512, for combination with the echelon0 residual at stage 532. Thereby a 512×512 reconstructed picture 531 is obtained.
A further hierarchical coding technology with which the principles of the present invention may be utilised is illustrated in
The general structure of the encoding scheme uses a down-sampled source signal encoded with a base codec, adds a first level of correction data to the decoded output of the base codec to generate a corrected picture, and then adds a further level of enhancement data to an up-sampled version of the corrected picture. Thus, the streams are considered to be a base stream and an enhancement stream, which may be further multiplexed or otherwise combined to generate an encoded data stream. In certain cases, the base stream and the enhancement stream may be transmitted separately. References to an encoded data as described herein may refer to the enhancement stream or a combination of the base stream and the enhancement stream. The base stream may be decoded by a hardware decoder while the enhancement stream is may be suitable for software processing implementation with suitable power consumption. This general encoding structure creates a plurality of degrees of freedom that allow great flexibility and adaptability to many situations, thus making the coding format suitable for many use cases including OTT transmission, live streaming, live ultra-high-definition UHD broadcast, and so on. Although the decoded output of the base codec is not intended for viewing, it is a fully decoded video at a lower resolution, making the output compatible with existing decoders and, where considered suitable, also usable as a lower resolution output.
In certain examples, each or both enhancement streams may be encapsulated into one or more enhancement bitstreams using a set of Network Abstraction Layer Units (NALUs). The NALUs are meant to encapsulate the enhancement bitstream in order to apply the enhancement to the correct base reconstructed frame. The NALU may for example contain a reference index to the NALU containing the base decoder reconstructed frame bitstream to which the enhancement has to be applied. In this way, the enhancement can be synchronised to the base stream and the frames of each bitstream combined to produce the decoded output video (i.e. the residuals of each frame of enhancement level are combined with the frame of the base decoded stream). A group of pictures may represent multiple NALUs.
Returning to the initial process described above, where a base stream is provided along with two levels (or sub-levels) of enhancement within an enhancement stream, an example of a generalised encoding process is depicted in the block diagram of
A down-sampling operation illustrated by down-sampling component 105 may be applied to the input video to produce a down-sampled video to be encoded by a base encoder 613 of a base codec. The down-sampling can be done either in both vertical and horizontal directions, or alternatively only in the horizontal direction. The base encoder 613 and a base decoder 614 may be implemented by a base codec (e.g., as different functions of a common codec). The base codec, and/or one or more of the base encoder 613 and the base decoder 614 may comprise suitably configured electronic circuitry (e.g., a hardware encoder/decoder) and/or computer program code that is executed by a processor.
Each enhancement stream encoding process may not necessarily include an upsampling step. In
Looking at the process of generating the enhancement streams in more detail, to generate the encoded Level 1 stream, the encoded base stream is decoded by the base decoder 614 (i.e. a decoding operation is applied to the encoded base stream to generate a decoded base stream). Decoding may be performed by a decoding function or mode of a base codec. The difference between the decoded base stream and the down-sampled input video is then created at a level 1 comparator 610 (i.e. a subtraction operation is applied to the down-sampled input video and the decoded base stream to generate a first set of residuals). The output of the comparator 610 may be referred to as a first set of residuals, e.g. a surface or frame of residual data, where a residual value is determined for each picture element at the resolution of the base encoder 613, the base decoder 614 and the output of the down-sampling block 605.
The difference is then encoded by a first encoder 615 (i.e. a level 1 encoder) to generate the encoded Level 1 stream 602 (i.e. an encoding operation is applied to the first set of residuals to generate a first enhancement stream).
As noted above, the enhancement stream may comprise a first level of enhancement 602 and a second level of enhancement 603. The first level of enhancement 602 may be considered to be a corrected stream, e.g. a stream that provides a level of correction to the base encoded/decoded video signal at a lower resolution than the input video 600. The second level of enhancement 603 may be considered to be a further level of enhancement that converts the corrected stream to the original input video 600, e.g. that applies a level of enhancement or correction to a signal that is reconstructed from the corrected stream.
In the example of
As noted, an upsampled stream is compared to the input video which creates a further set of residuals (i.e. a difference operation is applied to the upsampled re-created stream to generate a further set of residuals). The further set of residuals are then encoded by a second encoder 621 (i.e. a level 2 encoder) as the encoded level 2 enhancement stream (i.e. an encoding operation is then applied to the further set of residuals to generate an encoded further enhancement stream).
Thus, as illustrated in
A corresponding generalised decoding process is depicted in the block diagram of
As per the low complexity encoder, the low complexity decoder of
In the decoding process, the decoder may parse the headers 704 (which may contain global configuration information, picture or frame configuration information, and data block configuration information) and configure the low complexity decoder based on those headers. In order to re-create the input video, the low complexity decoder may decode each of the base stream, the first enhancement stream and the further or second enhancement stream. The frames of the stream may be synchronised and then combined to derive the decoded video 750. The decoded video 750 may be a lossy or lossless reconstruction of the original input video 100 depending on the configuration of the low complexity encoder and decoder. In many cases, the decoded video 750 may be a lossy reconstruction of the original input video 600 where the losses have a reduced or minimal effect on the perception of the decoded video 750.
In each of
The transform as described herein may use a directional decomposition transform such as a Hadamard-based transform. Both may comprise a small kernel or matrix that is applied to flattened coding units of residuals (i.e. 2×2 or 4×4 blocks of residuals). More details on the transform can be found for example in patent applications WO/2013/171173 or WO/2018/046941, which are incorporated herein by reference. The encoder may select between different transforms to be used, for example between a size of kernel to be applied.
The transform may transform the residual information to four surfaces. For example, the transform may produce the following components or transformed coefficients: average, vertical, horizontal and diagonal. A particular surface may comprise all the values for a particular component, e.g. a first surface may comprise all the average values, a second all the vertical values and so on. As alluded to earlier in this disclosure, these components that are output by the transform may be taken in such embodiments as the coefficients to be quantized in accordance with the described methods. A quantization scheme may be useful to create the residual signals into quanta, so that certain variables can assume only certain discrete magnitudes. Entropy encoding in this example may comprise run length encoding (RLE), then processing the encoded output is processed using a Huffman encoder. In certain cases, only one of these schemes may be used when entropy encoding is desirable.
In summary, the methods and apparatuses of
As indicated above, the processes may be applied in parallel to coding units or blocks of a colour component of a frame as there are no inter-block dependencies. The encoding of each colour component within a set of colour components may also be performed in parallel (e.g., such that the operations are duplicated according to (number of frames)*(number of colour components)*(number of coding units per frame)). It should also be noted that different colour components may have a different number of coding units per frame, e.g. a luma (e.g., Y) component may be processed at a higher resolution than a set of chroma (e.g., U or V) components as human vision may detect lightness changes more than colour changes.
Thus, as illustrated and described above, the output of the decoding process is an (optional) base reconstruction, and an original signal reconstruction at a higher level. This example is particularly well-suited to creating encoded and decoded video at different frame resolutions. For example, the input signal 30 may be an HD video signal comprising frames at 1920×1080 resolution. In certain cases, the base reconstruction and the level 2 reconstruction may both be used by a display device. For example, in cases of network traffic, the level 2 stream may be disrupted more than the level 1 and base streams (as it may contain up to 4× the amount of data where down-sampling reduces the dimensionality in each direction by 2). In this case, when traffic occurs the display device may revert to displaying the base reconstruction while the level 2 stream is disrupted (e.g., while a level 2 reconstruction is unavailable), and then return to displaying the level 2 reconstruction when network conditions improve. A similar approach may be applied when a decoding device suffers from resource constraints, e.g. a set-top box performing a systems update may have an operation base decoder 220 to output the base reconstruction but may not have processing capacity to compute the level 2 reconstruction.
The encoding arrangement also enables video distributors to distribute video to a set of heterogeneous devices; those with just a base decoder 720 view the base reconstruction, whereas those with the enhancement level may view a higher-quality level 2 reconstruction. In comparative cases, two full video streams at separate resolutions were required to service both sets of devices. As the level 2 and level 1 enhancement streams encode residual data, the level 2 and level 1 enhancement streams may be more efficiently encoded, e.g. distributions of residual data typically have much of their mass around 0 (i.e. where there is no difference) and typically take on a small range of values about 0. This may be particularly the case following quantization. In contrast, full video streams at different resolutions will have different distributions with a non-zero mean or median that require a higher bit rate for transmission to the decoder.
In the examples of
The sets of residuals as described herein may be seen as sparse data, e.g. in many cases there is no difference for a given pixel or area and the resultant residual value is zero.
When looking at the distribution of residuals much of the probability mass is allocated to small residual values located near zero—e.g. for certain videos values of −2, −1, 0, 1, 2 etc. occur the most frequently. In certain cases, the distribution of residual values is symmetric or near symmetric about 0. In certain test video cases, the distribution of residual values was found to take a shape similar to logarithmic or exponential distributions (e.g., symmetrically or near symmetrically) about 0. The exact distribution of residual values may depend on the content of the input video stream.
Residuals may be treated as a two-dimensional image in themselves, e.g. a delta image of differences. Seen in this manner the sparsity of the data may be seen to relate features like “dots”, small “lines”, “edges”, “corners”, etc. that are visible in the residual images. It has been found that these features are typically not fully correlated (e.g., in space and/or in time). They have characteristics that differ from the characteristics of the image data they are derived from (e.g., pixel characteristics of the original video signal).
As the characteristics of residuals differ from the characteristics of the image data they are derived from it is generally not possible to apply standard encoding approaches, e.g. such as those found in traditional Moving Picture Experts Group (MPEG) encoding and decoding standards. For example, many comparative schemes use large transforms (e.g., transforms of large areas of pixels in a normal video frame). Due to the characteristics of residuals, e.g. as described above, it would be very inefficient to use these comparative large transforms on residual images. For example, it would be very hard to encode a small dot in a residual image using a large block designed for an area of a normal image.
Certain examples described herein address these issues by instead using small and simple transform kernels (e.g., 2×2 or 4×4 kernels—the Directional Decomposition and the Directional Decomposition Squared—as presented herein). The transform described herein may be applied using a Hadamard matrix (e.g., a 4×4 matrix for a flattened 2×2 coding block or a 16×16 matrix for a flattened 4×4 coding block). This moves in a different direction from comparative video encoding approaches. Applying these new approaches to blocks of residuals generates compression efficiency. For example, certain transforms generate uncorrelated transformed coefficients (e.g., in space) that may be efficiently compressed. While correlations between transformed coefficients may be exploited, e.g. for lines in residual images, these can lead to encoding complexity, which is difficult to implement on legacy and low-resource devices, and often generates other complex artefacts that need to be corrected. Pre-processing residuals by setting certain residual values to 0 (i.e. not forwarding these for processing) may provide a controllable and flexible way to manage bitrates and stream bandwidths, as well as resource use.
In the examples described below, a processing technique is used to reduce banding artefacts which occur as results of a reduction in bit depth of a digital image. Introducing a dithering operation before an encoding operation has been found experimentally to result in an encoded signal that can be reconstructed by a decoder to produce a digital image with an enhanced perceived quality. The dithering operation in this disclosure introduces controlled adjustments to a digital image selectively by using a mask and an adjustment rule that dictates what sort of adjustment should be applied.
There is disclosed a method of introducing dither to reduce banding artefacts in a digital image, wherein the banding artefacts result from a pixel bit depth reduction prior to encoding of the digital image. The method comprises applying a mask to the digital image prior to encoding at the reduced bit depth. The mask indicates a pattern for selective adjustment of the pixel values in the reduced bit depth version of the digital image. The method comprises for each pixel in the digital image: determining the pixel's location in the mask and if the mask pattern indicates selective adjustment then determining a pixel adjustment factor from the pixel information lost during the pixel depth reduction and applying the pixel adjustment factor to the reduced bit depth version of the pixel.
At a general level, the mask pattern indicates no selective adjustment for at least one pixel and indicates applying selective adjustment to at least one pixel in five in the horizontal direction, and at least one pixel in five in the vertical direction of the digital image.
In this way, a reduced bit depth version of the digital image can be produced with enhanced perceived quality by selectively (from the mask), changing pixels using discarded information which had previously provided subtle changes in colour and/or luminance. Any banding artefacts in the digital image will be mitigated in the reduced bit depth version of the digital image. In addition, applying selective changes using the mask and the discarded information, for example instead of processing the image to uncover areas and locations of possible banding artefacts for specific remedy, reduces the processing power necessary and increases the speed of processing the digital image.
Benefits arise from performing the method at an encoder prior to encoding because if the method was performed at a decoder then the decoder would have to know the pixel information that has been discarded, and so, in effect, the original signal would need to be sent from this additional signalling.
Additionally, and in the context of hierarchical coding systems such as LCEVC and VC-6, encoding the adjusted reduced bit depth version of the digital image will reduce banding artefacts at higher echelons. This is because at higher echelons the residual data may be encoded with losses, and minor adjustments to pixels, for example to deal with a corresponding increase in the bit depth at a decoder, would not be retained in the residual data when the residual data is encoded. This would be especially pronounced for complex digital images and for digital images with sharp transitions, and in situations where there is limited bandwidth relative to the desired signal size.
The above method can usefully be applied, but not necessarily so, to the examples described above as part of the downsampling operation, e.g. one or more of operations 201 in
The dithering operation may occur before the bit depth reduction, during the bit depth reduction or after the bit depth reduction. The dithering operation needs to know what the bit depth reduction operation 820 will do or has done to the digital image because the dithering operation uses the discarded information from the digital image 810 for selective adjustment of the reduced bit depth version.
Pixel values refer to the luminance and/or chrominance information for each pixel. The bit depth discussed herein refers to the number of bits used to indicate the luminance value or chrominance value.
The bit depth reduction operation 820 reduces the bit depth of the digital image from a first bit depth to a second bit depth. In this example, the difference between the first bit depth and the second bit depth is 2 bits and the first bit depth is 10 bits. However, in principle the difference between the first bit depth and the second bit depth may be any number of bits. The first bit depth may be 10, 12 or 14 bits and the second bit depth may be 8, 10 or 12 bits.
The digital images 810, 830 and 850 are shown to have 16 pixels but a digital image with any number of pixels may be used. The dithering operation is applied to the whole digital image. Alternatively, the dithering operation disclosed herein may only apply to a portion of a digital image, thus not all the pixels of the digital image may be considered for adjustment.
The location of pixels in
A bit number is the position of a bit in a pixel value when the pixel value is represented as a binary number. For example, for pixel (0,0) with a value of 0010100011, bit number 0=1, bit number 1=1, bit number 2=0, bit number 3=0, bit number 4=0, bit number 5=1, bit number 6=0, bit number 7=1, bit number 8=0 and bit number 9=0.
Throughout this disclosure the bit number is in the context of a 10-bit word so that a comparison of the pixel data of the 10-bit image with the 8-bit image after the bit depth reduction step is straightforward to describe. For example, the lowest significant bit in pixel (1,2) of the 10-bit digital image 810 is bit number 0 which equals 1, whereas the lowest significant bit in pixel (1,2) of the 8-bit digital image 830 is bit number 2 which equals 0 because bits number 0 and 1 of the 10-bit digital image 810 have been discarded during the bit depth reduction operation. Similarly, the lowest significant bit in pixel (1,2) of the adjusted reduced bit depth version of the digital image 850 is bit number 2 which equals 0 because bits number 0 and 1 of the 10-bit digital image 810 have been discarded during the down scaling operation.
In
As can be seen on
The mask 942 and adjustment rule 944 are applied to breakup these banding artefacts and introduce some variety in the pixel values of the reduced bit depth version of the digital image.
The mask 942 is in the form of a checkerboard pattern with squares corresponding to pixels, with a black square corresponding to a pixel location at positions (0,0) and (1,1) of the mask, and a white square at each of positions (0,1) and (1,0). The mask repeats across the digital image. For convenience of understanding, a black square indicates that a selective adjustment of a pixel corresponding to that square is to be made. A white square indicates no selective adjustment of the pixel in that specific position in the digital image. For example, when the mask 942 is applied to the digital image, and a black square in the mask corresponds to pixel (2,2) this indicates selective adjustment of pixel (2,2) of the 8-bit digital image. The white square in the mask corresponding to pixel (1,0) indicates no selective adjustment of pixel (1,0) of the 8-bit digital image.
The adjustment rule 944 indicates a possible adjustment to be made when the mask indicates selective adjustment for a pixel. The adjustment rule uses the bits discarded during the bit depth reduction operation in determining the possible adjustment. In the adjustment rule 944, an adjustment is made if bit number 1 lost during the bit depth reduction operation is of value 1 (and not 0). The adjustment rule adds a value of 1 to the pixel information of the 8-bit bit version of the pixel information (or in other words adds 1 to bit number 2—using our convenient 10-bit numbering convention).
In this example, when the adjustment rule 944 indicates an adjustment, the adjustment is a positive adjustment as it indicates increasing the pixel value of the adjusted pixels. Other examples show negative or other adjustments.
By applying the mask 942 and the adjustment rule 944, a selectively adjusted reduced bit depth version of the digital image 850 is produced. As can be seen in
Although in this example a checkerboard pattern mask is used, it is also useful to use other types of patterns. The pattern does not have to be a repeatable pattern so long as the pattern indicates no selective adjustment for at least one pixel and indicates applying selective adjustment to at least one pixel in five in the horizontal direction, and at least one pixel in five in the vertical direction of the digital image, or more.
Adjustment rule 944 is a particular example of an adjustment rule and different adjustment rules may be applied. It may be useful to change the pixel values if bit number 1 of the pixel information lost is 0 instead of 1. It may also be useful to change the pixel values by adding any value, for example, adding −2, −1, 0, 1 or 2. The bigger the change in pixel values the more gradient there is between different pixel which may reduce the perceived effect of banding.
The change indicated by the adjustment rule is defined as the pixel adjustment factor.
In this example, the pixel adjustment factor is determined based on the value of the most significant bit of the pixel information lost during the bit depth reduction. Alternatively, the pixel adjustment factor may be determined based on a value of any single bit of the pixel information lost during the bit depth reduction regardless of the significance. Alternatively, the pixel adjustment factor is determined based on the value of each bit lost during the bit depth reduction.
In some examples, the influence of each bit lost during the bit depth reduction on the pixel adjustment factor is dependent on the significance of said bit. For example, a more significant bit may have a greater influence than a lower significant bit.
The following examples of
In the example of
In the example of
The different adjustment rule used in
The example of
Although the same adjustment rule 944 from
As can be seen from this example and the other examples, the mask pattern can be small in comparison to the digital image, and can be repeated to cover the whole digital image. The repetition can either be of the same mask pattern, or a different mask pattern, such as the use of alternating mask patterns, for example the alternating inverse mask pattern as shown in
Due to the different mask 1342,
The mask 1442 includes a black and grey square which each indicate selective adjustment at different levels and a white a square which indicates no selective adjustment.
In the example of
Due to the different mask 1442 and adjustment rule 1444,
In certain examples, the dithering operation and bit depth reduction operation may be provided in a single package in any hierarchical tier-based codec.
The method includes the variations described generally and in detail in
The method is performed as part of a hierarchical coding scheme, such as those described with reference to
The encoding at the set of encoders comprises encoding a signal derived from the digital image using a first encoding method and a single derived from the reduced bit depth version of the digital image using a second encoding method, wherein the first encoding method and the second encoding method are different and output part of an LCEVC encoded signal.
The encoding at the set of encoders comprises encoding a signal derived from the digital image using a first encoding method and a single derived from the reduced bit depth version of the digital image using a second encoding method, wherein the first encoding method and the second encoding method are the same and wherein the first encoding method and the second encoding method generate at least part of a VC-6 encoded signal. While the examples of
Each adjusted reduced bit depth digital image in the video signal is sent to comparator 610 for processing in accordance with the description of
The overall encoding in
Alternatively, the first encoding method and the second encoding method may be the same in a VC-6 embodiment also incorporating bit depth reduction and dithering as described at each level of quality change as needed and typically as the lowest level of quality at least (such as that described with reference to
Referring to
Examples of the apparatus 1700 include, but are not limited to, a mobile computer, a personal computer system, a wireless device, base station, phone device, desktop computer, laptop, notebook, netbook computer, mainframe computer system, handheld computer, workstation, network computer, application server, storage device, a consumer electronics device such as a camera, camcorder, mobile device, video game console, handheld video game device, a peripheral device such as a switch, modem, router, a vehicle etc., or in general any type of computing or electronic device.
In this example, the apparatus 1700 comprises one or more processors 1713 configured to process information and/or instructions. The one or more processors 1713 may comprise a central processing unit (CPU). The one or more processors 1713 are coupled with a bus 1711. Operations performed by the one or more processors 1713 may be carried out by hardware and/or software. The one or more processors 1713 may comprise multiple co-located processors or multiple disparately located processors.
In this example, the apparatus 1713 comprises computer-useable memory 1712 configured to store information and/or instructions for the one or more processors 1713.
The computer-useable memory 1712 is coupled with the bus 1711. The computer-usable memory may comprise one or more of volatile memory and non-volatile memory. The volatile memory may comprise random access memory (RAM). The non-volatile memory may comprise read-only memory (ROM).
In this example, the apparatus 1700 comprises one or more external data-storage units 1780 configured to store information and/or instructions. The one or more external data storage units 1780 are coupled with the apparatus 1700 via an I/O interface 1714. The one or more external data-storage units 1780 may for example comprise a magnetic or optical disk and disk drive or a solid-state drive (SSD).
In this example, the apparatus 1700 further comprises one or more input/output (I/O) devices 1716 coupled via the I/O interface 1714. The apparatus 1700 also comprises at least one network interface 1717. Both the I/O interface 1714 and the network interface 1717 are coupled to the systems bus 1711. The at least one network interface 1717 may enable the apparatus 1200 to communicate via one or more data communications networks 1790. Examples of data communications networks include, but are not limited to, the Internet and a Local Area Network (LAN). The one or more I/O devices 1716 may enable a user to provide input to the apparatus 1700 via one or more input devices (not shown). The one or more I/O devices 1716 may enable information to be provided to a user via one or more output devices (not shown).
In
The apparatus 1700 may therefore comprise a data processing module which can be executed by the one or more processors 1713. The data processing module can be configured to include instructions to implement at least some of the operations described herein. During operation, the one or more processors 1713 launch, run, execute, interpret, or otherwise perform the instructions.
Although at least some aspects of the examples described herein with reference to the drawings comprise computer processes performed in processing systems or processors, examples described herein also extend to computer programs, for example computer programs on or in a carrier, adapted for putting the examples into practice. The carrier may be any entity or device capable of carrying the program. It will be appreciated that the apparatus 1700 may comprise more, fewer and/or different components from those depicted in
The examples illustrated herein focus on adjusted pixels, however people skilled in the art can easily understand that the same concepts and methods are also applicable to any other types of graphical element such as a voxel.
The examples illustrated herein are useful for video and digital images, and other signals that may require mitigation when bit depth reduction introduces banding artefacts or equivalent problems.
The techniques described herein may be implemented in software or hardware, or may be implemented using a combination of software and hardware. They may include configuring an apparatus to carry out and/or support any or all of techniques described herein.
The above embodiments are to be understood as illustrative examples. Further embodiments are envisaged. It is to be understood that any feature described in relation to any one embodiment may be used alone or in combination with other features described, and may also be used in combination with one or more features of any other of the embodiments, or any combination of any other of the embodiments. Furthermore, equivalents and modifications not described above may also be employed without departing from the scope of the invention, which is defined in the accompanying claims.
Number | Date | Country | Kind |
---|---|---|---|
2118364.5 | Dec 2021 | GB | national |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/GB2022/053249 | 12/15/2022 | WO |