WO2015163046A1 - 画像処理装置及び画像処理方法 - Google Patents
画像処理装置及び画像処理方法 Download PDFInfo
- Publication number
- WO2015163046A1 WO2015163046A1 PCT/JP2015/058013 JP2015058013W WO2015163046A1 WO 2015163046 A1 WO2015163046 A1 WO 2015163046A1 JP 2015058013 W JP2015058013 W JP 2015058013W WO 2015163046 A1 WO2015163046 A1 WO 2015163046A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- offset
- unit
- offset value
- mode
- determination unit
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
Definitions
- the present disclosure relates to an image processing apparatus and an image processing method.
- JVCVC Joint Collaboration Team-Video Coding
- ISO / IEC ISO / IEC
- HEVC High Efficiency Video Coding
- HEVC provides not only single-layer coding but also scalable coding as well as existing image coding schemes such as MPEG2 and AVC (Advanced Video Coding).
- HEVC scalable coding technology is also referred to as SHVC (Scalable HEVC) (see, for example, Non-Patent Document 2).
- Scalable encoding generally refers to a technique for hierarchically encoding a layer that transmits a coarse image signal and a layer that transmits a fine image signal.
- Non-Patent Document 3 a technique called a sample adaptive offset (SAO) filter is applied from HEVC.
- SAO sample adaptive offset
- coding efficiency is improved by selecting an optimum mode from among a plurality of modes based on a technique called band offset and edge offset.
- the sample adaptive offset filter tends to increase the processing amount when setting the optimum mode and offset value, which may cause an increase in circuit scale and power consumption.
- the present disclosure proposes an image processing apparatus and an image processing method capable of reducing the amount of cost calculation processing.
- the control unit that sets the offset value to be applied to the pixel of the image;
- an image processing apparatus comprising: a filter processing unit that executes a filter process for applying the offset value set by the control unit.
- the processor sets the offset value to be applied to the pixel of the image from the offset value candidates limited according to the bit depth of the image;
- an image processing method including performing a filtering process for applying the set offset value.
- an image processing apparatus and an image processing method capable of reducing the amount of cost calculation are provided.
- Third embodiment 4-1 Outline 4-2. Configuration example of sample adaptive offset filter 4-3. Flow of processing of sample adaptive offset filter 4-4. Modification 4-5. Summary 5. Fourth embodiment 5-1. Outline 5-2. Processing 5-3. Summary 6. 6. Hardware configuration example Application example 7-1. Application to various products 7-2. Various implementation levels Summary
- a sample adaptive offset (hereinafter sometimes referred to as “SAO”) filter is an H.264 filter. It is a loop filter technology newly introduced in H.265 / HEVC, and is executed after deblocking filter processing.
- SAO is composed of two types of techniques called edge offset (EO) and band offset (BO), and is based on each CTU (Coding Tree Unit) (ie, each LCU (Largest Coding Unit)). The parameter is set to.
- the edge offset process is a process in which an offset value is added to or subtracted from the pixel value for each pixel in accordance with the relative relationship between the pixel to be processed and two adjacent pixels adjacent to the pixel.
- FIG. 1 is an explanatory diagram for explaining an outline of the edge offset processing.
- EO_0 to EO_3 shown in FIG. 1 indicate pixel array candidates (classes) in the edge offset processing.
- a pixel indicated by reference numeral c indicates a pixel to be processed
- pixels indicated by reference numerals a and b indicate pixels adjacent to the pixel c to be processed.
- which of the classes EO_0 to EO_3 is to be used can be selected for each CTU for both luminance and color difference using the encoding parameters “sao_eo_class_luma” and “sao_eo_class_chroma”.
- Category 1 to Category 4 classify the relationship of pixel values between the target pixel c and the adjacent pixels a and b.
- category 1 shows a case where the pixel value of the target pixel c is smaller than any pixel value of the adjacent pixels a and b.
- Category 2 shows a case where the pixel value of the target pixel c is smaller than one of the adjacent pixels a and b and equal to the other.
- the pixel value is smoothed between the target pixel c and the adjacent pixels a and b by adding an offset to the target pixel c.
- Category 3 shows a case where the pixel value of the target pixel c is larger than one of the adjacent pixels a and b and equal to the other.
- Category 4 shows a case where the pixel value of the target pixel c is larger than any pixel value of the adjacent pixels a and b.
- the pixel value is smoothed between the target pixel c and the adjacent pixels a and b by subtracting the offset from the target pixel c.
- a category 0 indicating that the edge offset processing is not performed is provided.
- any class is selected from the classes EO_0 to EO_3, and the relationship between the pixel value of the target pixel c and the pixel values of the adjacent pixels a and b is category 0 according to the selected class. Specify which of category 4 is applicable. Then, the pixel series is smoothed by adding or subtracting the offset according to the corresponding category.
- the gradation of the pixel value (that is, the maximum value that can be expressed according to the bit depth from 0) is divided into 32 bands, and pixels belonging to four consecutive bands are among them.
- the pixel value is changed (added or subtracted) according to the offset value set for each band.
- FIG. 2 is an explanatory diagram for explaining the outline of the band offset processing, and shows a case where the bit depth is 8 bits.
- H. In H.265 / HEVC 8 bits (pixel value is 0 to 255) and 10 bits (pixel value is 0 to 1023) can be used as the bit depth of the pixel. That is, in the example in which the bit depth shown in FIG. 2 is 8 bits, the pixel values 0 to 255 are divided into 32 bands, and among the divided 0 to 31 bands, This shows a case where a band is selected.
- the sample adaptive offset filter for each CTU, one of the edge offset processing and the band offset processing described above is selected, and an offset is applied to the corresponding pixel value according to the selected processing. Smoothing is performed by adding and subtracting.
- FIG. 3 is a block diagram showing an example of the configuration of the image encoding device 1 according to the first embodiment. As shown in FIG.
- the image encoding device 1 includes a rearrangement buffer 11, a subtraction unit 13, an orthogonal transformation unit 14, a quantization unit 15, a lossless encoding unit 16, a storage buffer 17, a rate Control unit 18, inverse quantization unit 21, inverse orthogonal transform unit 22, addition unit 23, loop filter 24, frame memory 25, selection units 26 and 27, intra prediction unit 30, and inter prediction unit 35.
- the rearrangement buffer 11 rearranges images included in a series of image data.
- the rearrangement buffer 11 rearranges the images according to the GOP (Group of Pictures) structure related to the encoding process, and then subtracts the rearranged image data, the intra prediction unit 30, the inter prediction unit 35, and the loop. Output to the filter 24.
- GOP Group of Pictures
- the subtraction unit 13 is supplied with image data input from the rearrangement buffer 11 and predicted image data input from the intra prediction unit 30 or the inter prediction unit 35 described later.
- the subtraction unit 13 calculates prediction error data that is a difference between the image data input from the rearrangement buffer 11 and the prediction image data, and outputs the calculated prediction error data to the orthogonal transformation unit 14.
- the orthogonal transform unit 14 performs orthogonal transform on the prediction error data input from the subtraction unit 13.
- the orthogonal transformation performed by the orthogonal transformation part 14 may be discrete cosine transformation (Discrete Cosine Transform: DCT) or Karoonen-Labe transformation, for example.
- Orthogonal transformation is performed for each TU (transformation unit) formed by dividing a CU.
- the size of the TU is adaptively selected from 4 ⁇ 4 pixels, 8 ⁇ 8 pixels, 16 ⁇ 16 pixels, and 32 ⁇ 32 pixels.
- the orthogonal transform unit 14 outputs transform coefficient data acquired by the orthogonal transform process to the quantization unit 15.
- the quantization unit 15 is supplied with transform coefficient data input from the orthogonal transform unit 14 and a rate control signal from the rate control unit 18 described later.
- the quantization unit 15 quantizes the transform coefficient data in a quantization step determined according to the rate control signal.
- the quantization unit 15 outputs the quantized transform coefficient data (hereinafter referred to as quantized data) to the lossless encoding unit 16 and the inverse quantization unit 21.
- the quantized data corresponds to an example of “bit stream”.
- the lossless encoding unit 16 generates an encoded stream by performing a lossless encoding process on the quantized data input from the quantization unit 15. Further, the lossless encoding unit 16 encodes various parameters referred to by the decoder, and inserts the encoded parameters into the header area of the encoded stream.
- the parameters encoded by the lossless encoding unit 16 may include the above-described parameters that specify the Quad-Tree structure, and information related to intra prediction and information related to inter prediction, which will be described later. Then, the lossless encoding unit 16 outputs the generated encoded stream to the accumulation buffer 17.
- the accumulation buffer 17 temporarily accumulates the encoded stream input from the lossless encoding unit 16 using a storage medium such as a semiconductor memory. Then, the accumulation buffer 17 outputs the accumulated encoded stream to a transmission unit (not shown) (for example, a communication interface or a connection interface with a peripheral device) at a rate corresponding to the bandwidth of the transmission path.
- a transmission unit for example, a communication interface or a connection interface with a peripheral device
- the rate control unit 18 monitors the free capacity of the accumulation buffer 17. Then, the rate control unit 18 generates a rate control signal according to the free capacity of the accumulation buffer 17 and outputs the generated rate control signal to the quantization unit 15. For example, the rate control unit 18 generates a rate control signal for reducing the bit rate of the quantized data when the free capacity of the storage buffer 17 is small. For example, when the free capacity of the accumulation buffer 17 is sufficiently large, the rate control unit 18 generates a rate control signal for increasing the bit rate of the quantized data.
- the inverse quantization unit 21, the inverse orthogonal transform unit 22, and the addition unit 23 constitute a local decoder.
- the local decoder corresponds to an example of a “composite unit” that restores quantized data and generates decoded image data.
- the inverse quantization unit 21 inversely quantizes the quantized data in the same quantization step as that used by the quantization unit 15 and restores transform coefficient data. Then, the inverse quantization unit 21 outputs the restored transform coefficient data to the inverse orthogonal transform unit 22.
- the inverse orthogonal transform unit 22 restores the prediction error data by performing an inverse orthogonal transform process on the transform coefficient data input from the inverse quantization unit 21. Similar to the orthogonal transform, the inverse orthogonal transform is performed for each TU. Then, the inverse orthogonal transform unit 22 outputs the restored prediction error data to the addition unit 23.
- the adder 23 adds the decoded prediction error data input from the inverse orthogonal transform unit 22 and the predicted image data input from the intra prediction unit 30 or the inter prediction unit 35, thereby obtaining decoded image data (reconstruction). Image). Then, the adder 23 outputs the generated decoded image data to the loop filter 24 and the frame memory 25.
- the loop filter 24 includes a filter group such as a deblocking filter (DF), a sample adaptive offset (SAO) filter, and an adaptive loop filter (ALF) for the purpose of improving image quality.
- the loop filter 24 performs a filtering process on the decoded image data input from the adding unit 23 based on the original image data supplied from the rearrangement buffer 11 and outputs the decoded image data after filtering to the frame memory 25. The details of the loop filter 24 will be described later separately.
- the frame memory 25 stores the decoded image data before filtering input from the adding unit 23 and the decoded image data after filtering input from the loop filter 24 using a storage medium.
- the selection unit 26 reads out the decoded image data before filtering used for intra prediction from the frame memory 25, and supplies the read decoded image data to the intra prediction unit 30 as reference image data. Also, the selection unit 26 reads out the decoded image data after filtering used for inter prediction from the frame memory 25 and supplies the read out decoded image data to the inter prediction unit 35 as reference image data.
- the selection unit 27 In the intra prediction mode, the selection unit 27 outputs predicted image data as a result of the intra prediction output from the intra prediction unit 30 to the subtraction unit 13 and outputs information related to the intra prediction to the lossless encoding unit 16. In addition, in the inter prediction mode, the selection unit 27 outputs prediction image data as a result of the inter prediction output from the inter prediction unit 35 to the subtraction unit 13 and outputs information related to the inter prediction to the lossless encoding unit 16. To do. The selection unit 27 switches between the intra prediction mode and the inter prediction mode according to the cost.
- the intra prediction unit 30 performs an intra prediction process for each PU (prediction unit) formed by dividing a CU based on the original image data and the decoded image data. For example, the intra prediction unit 30 evaluates the prediction result of each candidate mode in the prediction mode set using a predetermined cost function. Next, the intra prediction unit 30 selects the prediction mode with the lowest cost, that is, the prediction mode with the highest compression rate, as the optimal prediction mode. Further, the intra prediction unit 30 generates predicted image data according to the optimal prediction mode. Then, the intra prediction unit 30 outputs information related to intra prediction including prediction mode information representing the selected optimal prediction mode, cost, and predicted image data to the selection unit 27.
- prediction mode information representing the selected optimal prediction mode, cost, and predicted image data
- the inter prediction unit 35 performs inter prediction processing for each PU formed by dividing the CU based on the original image data and the decoded image data. For example, the inter prediction unit 35 evaluates the prediction result of each candidate mode in the prediction mode set using a predetermined cost function. Next, the inter prediction unit 35 selects the prediction mode with the lowest cost, that is, the prediction mode with the highest compression rate, as the optimal prediction mode. Further, the inter prediction unit 35 generates predicted image data according to the optimal prediction mode. Then, the inter prediction unit 35 outputs to the selection unit 27 information, cost, and predicted image data regarding inter prediction including the prediction mode information representing the selected optimal prediction mode and motion information.
- FIG. 4 is a block diagram showing an example of the configuration of the loop filter 24 according to the present embodiment.
- the loop filter 24 includes an original image holding unit 100, a deblocking filter 200, a sample adaptive offset (SAO) filter 300, and an adaptive loop filter 400.
- SAO sample adaptive offset
- the original image holding unit 100 is a holding unit for holding original image data supplied from the rearrangement buffer 11 to the loop filter 24.
- Each component in the loop filter 24 executes each filter process by appropriately referring to the original image data held in the original image holding unit 100.
- the decoded image data (reconstructed image) decoded by the inverse quantization unit 21, the inverse orthogonal transform unit 22, and the addition unit 23 (that is, the local decoder) is first supplied to the deblock filter 200.
- the deblocking filter 200 removes block distortion of the decoded image data by appropriately performing a deblocking filter process. In this description, a detailed description of the deblocking filter process is omitted.
- the deblocking filter 200 outputs the filter processing result to the sample adaptive offset filter 300.
- the sample adaptive offset filter 300 determines the SAO mode to be applied and the offset value to be applied to the decoded image data after the filtering by the deblocking filter 200 for each CTU.
- the SAO mode indicates which of the edge offset and the band offset shown in FIGS. 1 and 2 is selected.
- the SAO mode is selected from among the edge offset classes EO_0 to EO_3 shown in FIG. 1, and among the categories 0 to 4 corresponding to the class. It shows which category was selected.
- the SAO mode indicates which band is selected from the bands of the band offset shown in FIG.
- the sample adaptive offset filter 300 performs filter processing (hereinafter, may be referred to as “SAO processing”) for each CTU on the decoded image data based on the determined mode and offset value.
- SAO processing filter processing
- the sample adaptive offset filter 300 reduces the processing load of the SAO processing based on a quantization step (QP: Quantization Parameter) when generating quantized data that is a decoding source of the decoded image data.
- QP Quantization Parameter
- the acquisition source is not particularly limited as long as the sample adaptive offset filter 300 can acquire the quantization step of the quantized data that is the decoding source of the decoded image data.
- the sample adaptive offset filter 300 may acquire the quantization step from the quantization unit 15. Details of the sample adaptive offset filter 300 according to this embodiment will be described later.
- the sample adaptive offset filter 300 outputs the decoded image data after the SAO processing to the adaptive loop filter 400. Further, the sample adaptive offset filter 300 outputs the SAO mode and offset value determined for each CTU to the lossless encoding unit 16 as encoding parameters. Receiving this output, the lossless encoding unit 16 encodes the supplied SAO mode and offset value with respect to the generated encoded stream, and inserts it into the header area of the encoded stream.
- the adaptive loop filter 400 performs an adaptive loop filter (ALF: Adaptive Loop Filter) process on the decoded image data after the SAO process supplied from the sample adaptive offset filter 300.
- ALF Adaptive Loop Filter
- a two-dimensional Wiener filter is used as a filter.
- filters other than the Wiener filter may be used.
- the adaptive loop filter 400 has a plurality of filters with different tap sizes and performs adaptive loop filter processing.
- the adaptive loop filter 400 outputs the filter processing result to the frame memory 25.
- FIGS. 5 and 6 are explanatory diagrams for explaining a flow of a series of processes of the image encoding device according to the present embodiment.
- FIG. 5 shows a flow of processing in which the image encoding apparatus divides the picture P1 into a plurality of blocks (CTU) and encodes the blocks.
- the image encoding apparatus performs processing by dividing the picture P1 into a plurality of CTUs having a fixed block size by performing raster scan from the upper left to the lower right. That is, in the example shown in FIG. 5, the image encoding apparatus divides and processes the picture P1 in the order of blocks U11, U12,..., U1m, U21, U22, U23, and U24.
- the blocks U11 to U1m, U21, and U22 are processed blocks, and among the processed blocks, the blocks U13 and U22 in particular are adjacent blocks to the processing target block U23.
- FIG. 6 is a flowchart showing an example of a flow of a series of processes of the image encoding device according to the present embodiment.
- decoded image data of one CTU in the picture P1 is generated, and the loop filter 24 performs filtering.
- the flow of processing is shown until processing is performed. Note that in this description, attention is focused on the generation of decoded image data, and description of processing for generating and outputting an encoded stream by lossless encoding of quantized data is omitted.
- Step S11 The rearrangement buffer 11 (see FIG. 3) rearranges the images included in the series of image data.
- the rearrangement buffer 11 rearranges the images according to the GOP (Group of Pictures) structure related to the encoding process, and then subtracts the rearranged image data, the intra prediction unit 30, the inter prediction unit 35, and the loop. Output to the filter 24.
- GOP Group of Pictures
- the selection unit 26 reads decoded image data before filtering used for intra prediction from the frame memory 25 and supplies the read decoded image data to the intra prediction unit 30 as reference image data. Also, the selection unit 26 reads out the decoded image data after filtering used for inter prediction from the frame memory 25 and supplies the read out decoded image data to the inter prediction unit 35 as reference image data.
- the intra prediction unit 30 performs an intra prediction process for each PU (prediction unit) formed by dividing a CU based on the supplied original image data and decoded image data.
- the intra prediction unit 30 and the original image data of the block U23 and the decoded image data of the processed adjacent blocks U13 and U22 Intra prediction processing is executed based on the above.
- the intra prediction unit 30 evaluates the prediction result of each candidate mode in the prediction mode set using a predetermined cost function, and selects the optimal prediction mode based on the evaluation result. Further, the intra prediction unit 30 generates predicted image data according to the optimal prediction mode. Then, the intra prediction unit 30 outputs information related to intra prediction including prediction mode information representing the selected optimal prediction mode, cost, and predicted image data to the selection unit 27.
- the inter prediction unit 35 performs inter prediction processing for each PU formed by dividing the CU based on the original image data and the decoded image data.
- the inter prediction unit 35 evaluates the prediction result of each candidate mode in the prediction mode set using a predetermined cost function, and selects the optimum prediction mode based on the evaluation result. Further, the inter prediction unit 35 generates predicted image data according to the optimal prediction mode. Then, the inter prediction unit 35 outputs to the selection unit 27 information, cost, and predicted image data regarding inter prediction including the prediction mode information representing the selected optimal prediction mode and motion information.
- the selection unit 27 In the intra prediction mode, the selection unit 27 outputs predicted image data as a result of the intra prediction output from the intra prediction unit 30 to the subtraction unit 13 and outputs information related to the intra prediction to the lossless encoding unit 16. In addition, in the inter prediction mode, the selection unit 27 outputs prediction image data as a result of the inter prediction output from the inter prediction unit 35 to the subtraction unit 13 and outputs information related to the inter prediction to the lossless encoding unit 16. To do. The selection unit 27 switches between the intra prediction mode and the inter prediction mode according to the cost.
- Step S12 The subtraction unit 13 is supplied with image data input from the rearrangement buffer 11 and predicted image data input from the intra prediction unit 30 or the inter prediction unit 35.
- the subtraction unit 13 calculates prediction error data that is a difference between the image data input from the rearrangement buffer 11 and the prediction image data, and outputs the calculated prediction error data to the orthogonal transformation unit 14.
- the orthogonal transform unit 14 performs orthogonal transform on the prediction error data input from the subtraction unit 13.
- the orthogonal transform unit 14 outputs transform coefficient data acquired by the orthogonal transform process to the quantization unit 15.
- the quantization unit 15 is supplied with transform coefficient data input from the orthogonal transform unit 14 and a rate control signal from the rate control unit 18.
- the quantization unit 15 quantizes the transform coefficient data in a quantization step determined according to the rate control signal.
- the quantization unit 15 outputs the quantized transform coefficient data (that is, quantized data) to the lossless encoding unit 16 and the inverse quantization unit 21.
- Step S14 The inverse quantization unit 21 inversely quantizes the quantized data in the same quantization step as that used by the quantization unit 15 to restore transform coefficient data. Then, the inverse quantization unit 21 outputs the restored transform coefficient data to the inverse orthogonal transform unit 22.
- the inverse orthogonal transform unit 22 restores the prediction error data by performing an inverse orthogonal transform process on the transform coefficient data input from the inverse quantization unit 21. Similar to the orthogonal transform, the inverse orthogonal transform is performed for each TU. Then, the inverse orthogonal transform unit 22 outputs the restored prediction error data to the addition unit 23.
- Step S15 The adder 23 adds the decoded prediction error data input from the inverse orthogonal transform unit 22 and the predicted image data input from the intra prediction unit 30 or the inter prediction unit 35, thereby obtaining decoded image data (reconstruction). Image). Then, the adder 23 outputs the generated decoded image data to the loop filter 24 and the frame memory 25.
- Step S16 The decoded image data output to the loop filter 24 is supplied to the deblock filter 200 (see FIG. 4).
- the deblocking filter 200 removes block distortion of the decoded image data by appropriately performing a deblocking filter process.
- the deblocking filter 200 outputs the filter processing result to the sample adaptive offset filter 300.
- Step S17 The sample adaptive offset filter 300 determines, for each CTU, the SAO mode to be applied and the offset value to be applied to the decoded image data after filtering by the deblocking filter 200.
- the sample adaptive offset filter 300 performs filter processing (that is, SAO processing) on the decoded image data for each CTU based on the determined mode and offset value. That is, at the opportunity shown in step S17, SAO processing is performed on the processing target block U23 shown in FIG.
- the sample adaptive offset filter 300 outputs the decoded image data after the SAO processing to the adaptive loop filter 400. Further, the sample adaptive offset filter 300 outputs the SAO mode and the offset value determined for each CTU (that is, for each LCU) to the lossless encoding unit 16 as encoding parameters. Receiving this output, the lossless encoding unit 16 encodes the supplied SAO mode and offset value with respect to the generated encoded stream, and inserts it into the header area of the encoded stream.
- the adaptive loop filter 400 performs an adaptive loop filter (ALF: Adaptive Loop Filter) process on the decoded image data after the SAO process supplied from the sample adaptive offset filter 300.
- ALF Adaptive Loop Filter
- Step S19 The adaptive loop filter 400 outputs the filter processing result to the frame memory 25.
- the decoded image data of the block U 23 shown in FIG. 5 is generated and stored in the frame memory 25.
- the decoded image data of the block U23 stored in the frame memory 25 is used, for example, for intra prediction and inter prediction of a block adjacent to the block U23 (for example, the block U24) among the unprocessed blocks shown in FIG. It is done.
- FIG. 7 is a block diagram showing an example of the configuration of the sample adaptive offset filter 300 according to the first embodiment.
- the sample adaptive offset filter 300 includes a control unit 310 and a filter processing unit 390.
- Control unit 310 includes an analysis unit 320 and a switching determination unit 360.
- the control unit 310 corresponds to an example of a “setting unit”.
- the switching determination unit 360 determines whether or not the SAO process can be applied to each of the luminance and chromaticity for each slice of the decoded image data, and controls the operation of the analysis unit 320 based on the determination result.
- the switching determination unit 360 instructs the analysis unit 320 to apply the SAO process to the slice.
- the switching determination unit 360 counts the number of CTUs to which SAO processing has been applied (hereinafter, the I slice or the P slice) immediately before the B slice. , It may be referred to as “number of modes”), to determine whether or not the SAO processing can be applied to the B slice.
- the switching determination unit 360 when the number of modes in the immediately preceding slice is equal to or greater than a predetermined threshold TH11 (for example, half or more), the switching determination unit 360 applies to the analysis unit 320 the application of SAO processing to the B slice to be processed. Instruct. On the other hand, when the number of modes in the immediately preceding slice is less than the threshold value TH11, the switching determination unit 360 analyzes the analysis unit 320 so as to limit the application of the SAO process to the processing target B slice (that is, do not apply). To instruct.
- a predetermined threshold TH11 for example, half or more
- the switching determination unit 360 outputs the applicability of SAO processing for each slice to the lossless encoding unit 16 as a parameter at the time of encoding.
- parameters for controlling whether to apply SAO processing for each slice include “slice_sao_luma_flag” corresponding to luminance and “slice_sao_chroma_flag” corresponding to chromaticity.
- the analysis unit 320 includes a statistic acquisition unit 330 and a mode determination unit 340.
- the analysis unit 320 is based on the original image data held in the original image holding unit 100 (see FIG. 4) and the decoded image data output from the deblocking filter 200, and the SAO mode and offset for performing SAO processing.
- a value is determined for each CTU (ie, for each LCU). Note that whether or not the analysis unit 320 can be applied is controlled in units of slices based on an instruction from the switching determination unit 360. Below, the detail of each structure of the analysis part 320 is demonstrated.
- the statistic acquisition unit 330 calculates a statistic for specifying the SAO mode and offset based on the original image data and the decoded image data.
- the statistic acquisition unit 330 analyzes the correspondence between the target pixel and adjacent pixels for each of the edge offset classes EO_0 to EO_3 illustrated in FIG. 1 in units of pixels in the decoded image data. The frequency of occurrence for each of categories 0 to 4 is counted. Further, at this time, the statistic acquisition unit 330 cumulatively counts the difference in pixel value between the decoded image data and the original image data for each of the counted categories. Then, the statistic acquisition unit 330 calculates the appearance frequency of each of the categories 0 to 4 counted for each of the classes EO_0 to EO_3 and the pixel value accumulated for each category as a statistic.
- the statistic acquisition unit 330 counts the frequency of the corresponding pixel for each of the band offset bands 0 to 31 shown in FIG. 2, and calculates the pixel value between the decoded image data and the original image data at that pixel. Accumulate the difference for each band. Then, the statistic acquisition unit 330 calculates the frequency counted for each band and the difference between the pixel values accumulated for each band as the statistic.
- Statistic acquisition unit 330 outputs the statistic calculated as described above to mode determination unit 340.
- the mode determination unit 340 includes an offset determination unit 350. Based on the statistic supplied from the statistic acquisition unit 330, the mode determination unit 340 calculates an offset value and a cost corresponding to the offset value for each SAO mode in CTU units in the decoded image data. 350.
- the mode determination unit 340 sends the offset value and the cost corresponding to the offset value to the offset determination unit 350 for each combination of the edge offset classes EO_0 to EO_3 and the categories 1 to 4. Let it be calculated. Similarly, the mode determination unit 340 causes the offset determination unit 350 to calculate an offset value and a cost corresponding to the offset value for each band of the band offset. The mode determination unit 340 also calculates a cost when the SAO process is not applied.
- the offset determination unit 350 calculates a cost for each offset value candidate for the mode instructed by the mode determination unit 340. Then, the offset determination unit 350 compares the calculated costs to identify the offset value that can improve the coding efficiency most and the cost corresponding to the offset value. Details of the offset determination unit 350 will be described later.
- the mode determination unit 340 compares the costs calculated for each mode of SAO, and based on the comparison result, the mode of SAO that can improve the coding efficiency most, and the offset value corresponding to the mode. Is specified for each CTU (ie, for each LCU). And the mode determination part 340 outputs the mode specified for every CTU and the offset value corresponding to the said mode to the filter process part 390 mentioned later. At this time, if it is determined that the SAO processing is not applied as a result of the cost comparison, the mode determination unit 340 instructs the filter processing unit 390 not to apply the SAO processing to the target CTU. .
- the mode determination unit 340 outputs the SAO mode and offset value specified for each CTU to the lossless encoding unit 16 as parameters at the time of encoding.
- the parameters at the time of encoding include “sao_type_idx_luma” corresponding to luminance and “sao_typ_idx_chroma” corresponding to chromaticity as parameters indicating either edge offset or band offset.
- edge offset when edge offset is applied, “sao_eo_class_luma” corresponding to luminance and “sao_eo_class_chroma” corresponding to chromaticity can be cited as parameters indicating the class of edge offset.
- “sao_band_position” can be cited as a parameter indicating the position of the band.
- “sao_offset_abs” indicating the absolute value of the offset value and “sao_offset_sign” indicating the positive / negative of the offset value can be cited as parameters for notifying the offset value.
- the filter processing unit 390 performs SAO processing on each CTU of the decoded image data based on the SAO mode and the offset value supplied from the mode determination unit 340.
- the filter processing unit 390 does not perform the SAO processing on the target CTU.
- the filter processing unit 390 should not perform SAO processing on the corresponding slice based on the determination result. Needless to say.
- the filter processing unit 390 outputs the decoded image data subjected to the SAO process to the adaptive loop filter 400 (see FIG. 4).
- FIG. 8 is a flowchart illustrating an example of a flow of a series of processes of the sample adaptive offset filter according to the present embodiment.
- Step S100 the switching determination unit 360 determines whether or not the SAO process can be applied to each of luminance and chromaticity for each slice of decoded image data, and controls the operation of the analysis unit 320 based on the determination result.
- the operation related to the determination of whether or not the SAO process can be applied by the switching determination unit 360 will be described later in detail.
- Step S500 When it is determined that the SAO process is applied to the slice (step S200, YES), the analysis unit 320 performs the SAO process based on the original image data and the decoded image data (after the deblocking filter process). The SAO mode and the offset value for performing the above are determined for each CTU.
- the statistic acquisition unit 330 calculates a statistic for specifying the SAO mode and offset based on the original image data and the decoded image data, and sends the calculated statistic to the mode determination unit 340. Output.
- the mode determination unit 340 Based on the statistic supplied from the statistic acquisition unit 330, the mode determination unit 340 provides the offset determination unit 350 with the cost of each value that can be taken as an offset value for each SAO mode in CTU units in the decoded image data. Let it be calculated.
- the mode determination unit 340 compares the costs calculated for each mode of SAO, and selects the SAO mode that can improve the coding efficiency most based on the comparison result for each CTU (ie, for each LCU). To be specific. And the mode determination part 340 outputs the mode specified for every CTU and the offset value corresponding to the said mode to the filter process part 390 mentioned later. Also, the mode determination unit 340 outputs the SAO mode and offset value specified for each CTU to the lossless encoding unit 16 as encoding parameters.
- Step S600 The filter processing unit 390 performs SAO processing on each CTU of the decoded image data based on the SAO mode and the offset value supplied from the mode determination unit 340.
- Step S700 The above process is executed for a series of CTUs in the target slice (step S700, NO), and upon completion of the process for the series of CTUs (step S700, YES), the application of the SAO process to the target slice is completed. To do.
- Step S200 When the SAO process is not applied to the target slice (step S200, NO), the processes shown in steps S300 to S700 are not executed for the slice.
- FIG. 9 is a flowchart illustrating an example of processing related to determination of whether or not to apply SAO processing for each slice by the switching determination unit according to the present embodiment.
- Step S101 and S104 If the slice to be processed is not a B slice, that is, if it is either an I slice or a P slice (step S101, NO), the switching determination unit 360 analyzes the application of the SAO process to the slice. (Step S104).
- Step S101 and S102 In addition, when the slice to be processed is a B slice (YES in step S101), the switching determination unit 360 applies the SAO process to the slice immediately before the B slice (that is, the I slice or the P slice). The number of CTUs (number of modes) is acquired (step S102).
- Step S103 and S104 If the acquired mode number is equal to or greater than the predetermined threshold TH11 (step S103, NO), the switching determination unit 360 instructs the analysis unit 320 to apply the SAO process to the slice (step S104).
- Step S103 and S105 On the other hand, when the acquired mode number is less than the predetermined threshold value TH11 (step S103, YES), the switching determination unit 360 restricts the application of the SAO process to the slice (that is, does not apply). To the analysis unit 320 (step S105).
- the switching determination unit 360 determines whether the SAO process can be applied for each slice, and controls the operation of the analysis unit 320 based on the determination result.
- the offset determination unit 350 calculates the cost for each possible value as an offset value based on the statistic generated by the statistic acquisition unit 330, and compares the calculated costs to improve the coding efficiency most. Identify possible offset values.
- the bit depth of the pixel is 10 bits
- the number of offset value candidates is four times that in the case where the bit depth is 8 bits, so the amount of processing for cost calculation increases, It may cause an increase in circuit scale and power consumption. Therefore, in this description, in order to make the characteristics of the offset determination unit 350 according to the present embodiment easier to understand, first, an overview of the offset determination unit based on the conventional method is described as a comparative example, and then, according to the present embodiment.
- the offset determination unit 350 will be described.
- FIG. 10 is a block diagram illustrating an example of the configuration of the offset determination unit 350a according to the comparative example.
- the offset determination unit 350 a includes one or more offset measurement units 351 and an offset determination unit 353.
- the offset measurement unit 351 is based on the statistic generated by the statistic acquisition unit 330 (for example, the appearance frequency of the pixel to be processed or the difference in pixel value between the decoded image data and the original image data). For each offset value, the cost when the offset value is applied is calculated. Note that the cost calculated at this time means, for example, each offset value in order to reduce an error (for example, quantization error) between the original image data generated in the decoded image data and bring it closer to the original image data. The amount of data required for the offset processing based on that (that is, the amount of data transmitted to the decoder side) and the like. Detailed description of the cost calculation is omitted in this specification.
- the Offset [0] measuring unit to Offset [31] measurement are performed. Is provided.
- the table indicated by the reference sign d40 in FIG. 11 corresponds to each offset measurement unit 351 shown in FIG. 10 (ie, Offset [0] measurement unit to Offset [31] measurement unit) and each offset value. Showing the relationship. As illustrated in FIG. 11, the Offset [0] measurement unit calculates the cost when the offset value is 0. Similarly, Offset [1] measurement unit to Offset [31] measurement unit are associated with offset values 1 to 31, respectively.
- the Offset [0] measurement unit indicated by reference numeral 351a among the Offset [0] measurement unit to Offset [31] measurement unit Offset [7] measurement part is used. Further, when the bit depth is 10 bits, all of the Offset [0] measurement unit to the Offset [31] measurement unit indicated by reference numeral 351b are used.
- the offset determination unit 353 compares the costs calculated by the respective offset measurement units 351, and determines the offset value with the lowest cost from the offset value candidates based on the comparison result. Then, the offset determination unit 353 outputs the determined offset value and the cost corresponding to the offset value. Upon receiving this output, the mode determination unit 340 (see FIG. 7) compares the costs calculated for each mode of the SAO, and based on the comparison result, the SAO that can improve the coding efficiency most. The mode and the offset value corresponding to the mode are specified for each CTU (that is, for each LCU).
- FIG. 12 is a flowchart illustrating an example of a flow of a series of processes of the offset determination unit 350a according to the comparative example.
- Step S611 to S614 the offset determination unit 350a initializes Count, which is a counter value, with 0 (step S611). Then, the cost is calculated for the offset value candidate indicated by the counter value Count. For example, when the counter value Count is 0, the offset determination unit 350a calculates the cost of the offset value “0”. At this time, in the case of the example shown in FIG. 10, the Offset [0] measurement unit among the offset measurement units 351 calculates the cost of the offset value “0”. Similarly, when the counter value Count is 1, the offset determination unit 350a calculates the cost of the offset value “1” (step S613). When the calculation of the cost is completed, the offset determination unit 350a increments the counter value Count (step S614).
- Count is a counter value
- the offset determination unit 350a calculates the cost at each offset value according to the bit depth of the pixel (step S612, NO). For example, when the bit depth is 8 bits, the offset determination unit 350a calculates the cost for each of the offset values “0” to “7”. When the bit depth is 10 bits, the offset determination unit 350a calculates the cost for each of the offset values “0” to “31”.
- Step S615 When the calculation of the cost of each counter value is completed according to the bit depth (step S612, YES), the offset determination unit 350a compares the cost of each calculated offset value, and based on the comparison result, the offset with the lowest cost Determine the value.
- the offset determination unit 350a uses the offset values 0 to 7 For each of these, a total of eight cost calculations are performed.
- the offset value can be 0 to 31, so that the offset determination unit 350a performs the cost calculation a total of 32 times for each of the offset values 0 to 31.
- the number of offset value candidates is four times that of the case where the bit depth is 8 bits.
- the amount of processing is four times that of the case. Therefore, when processing an image with a bit depth of 10 bits, as described with reference to FIG. 12, the number of cost calculations (processing amount) for each offset value is smaller than when the bit depth is 8 bits. 4 times, which may increase power consumption.
- the number of offset measurement units 351 that is, Offset [ 0] measuring unit to Offset [31] measuring unit
- the circuit scale is often increased.
- a circuit for calculating the cost of offset values 8 to 31 that is additionally required that is, Offset [8] measurement unit to Offset [31]
- the measurement unit is not used when the pixel bit depth is 8 bits. In other words, as long as an image with a pixel bit depth of 8 bits is processed, the Offset [8] measurement unit to the Offset [31] measurement unit can have a redundant configuration.
- the offset determination unit 350 limits the offset value candidates from the values that can be taken as offset values (that is, 0 to 31).
- the offset value to be applied is specified from the candidates.
- the offset determination unit 350 according to the present embodiment shares the processing amount for cost calculation of each offset value between the case where the bit depth is 8 bits and the case where the bit depth is 10 bits. And reduce power consumption. Therefore, details of the offset determination unit 350 according to the present embodiment will be described below.
- FIG. 13 is a block diagram illustrating an example of the configuration of the offset determination unit 350 according to the first embodiment.
- the offset determination unit 350 includes a candidate control unit 355, and includes only an Offset [0] measurement unit to an Offset [7] measurement unit as the offset measurement unit 351.
- the offset determination unit 350a Different from the offset determination unit 350a according to the comparative example shown in FIG. Therefore, in this description, each configuration of the offset determination unit 350 according to the present embodiment will be described mainly by focusing on a different part from the offset determination unit 350a.
- the candidate control unit 355 determines offset value candidates based on the bit depth of the pixels and the quantization step (QP) when generating the quantized data that is the decoding source of the decoded image data, and each of the determined candidates Each is assigned to the Offset [0] measurement unit to the Offset [7] measurement unit.
- the acquisition source of the quantization step is not particularly limited as described above.
- the candidate control unit 355 acquires, from the quantization unit 15, the quantization step applied when the quantization unit 15 generates the quantization data that is the decoding source of the decoded image data. Also good.
- the candidate control unit 355 selects the offset value candidate from the values that can be taken as the offset value (that is, 0 to 31) when the bit depth of the pixel is 10 bits. Limit based on quantization step. Then, the candidate control unit 355 assigns each of the limited offset value candidates to the Offset [0] measurement unit to the Offset [7] measurement unit.
- FIG. 14 to FIG. 16 are explanatory diagrams for explaining an example of a control table showing the correspondence between each offset value candidate and the Offset [0] measurement unit to Offset [7] measurement unit.
- N is an integer of 0 ⁇ N
- N + 1 is This corresponds to the number of offset value candidates.
- the pixel bit depth is 8 bits
- the pixel bit depth is 10 bits
- the quantization step is less than the first threshold TH21 (QP ⁇ TH21).
- the control table d52 shown in FIG. 15 corresponds to the case where the bit depth of the pixel is 10 bits and the quantization step is greater than the first threshold TH21 and less than or equal to the second threshold TH22 (TH21 ⁇ QP ⁇ TH22). Needless to say, the second threshold value TH22 is larger than the first threshold value TH21.
- the control table d53 shown in FIG. 16 corresponds to the case where the bit depth of the pixel is 10 bits and the quantization step is larger than the second threshold value TH22 (TH22 ⁇ QP).
- the candidate control unit 355 selects any one of the control tables d51 to d53 based on the bit depth of the pixel and the acquired quantization step, and the Offset [0] measurement unit according to the selected control table.
- Offset [7] Offset value candidates are assigned to each measurement unit.
- the candidate control unit 355 sets the offset value candidate so that the maximum value of the offset value is smaller as the quantization step is smaller. Is set to be smaller (ie, the difference between adjacent candidates).
- the candidate control unit 355 sets the maximum offset value candidate to be larger as the quantization step is larger, and the interval between adjacent candidates ( That is, it is set so that the difference between adjacent candidates) becomes larger.
- the candidate control unit 355 determines the number of offset value candidates when the pixel bit depth is 10 bits as the number of offset value candidates when the pixel bit depth is 8 bits (in other words, the offset value in the case of 8 bits). Range of possible values).
- the values of the first threshold value TH21 and the second threshold value TH22 are determined in advance by performing an experiment in advance according to the configuration of the image encoding device and various parameters (for example, the resolution of the original image data). do it.
- the configuration described above is merely an example, and the number of offset measurement units 351 and the number of control tables for specifying offset value candidates may be changed as appropriate.
- the candidates for offset values set in each control table and the threshold value for switching each control table are determined in advance experiments or the like. An appropriate value determined based on this may be set in advance.
- each offset measurement unit 351 calculates a cost for the assigned offset value candidate and outputs the cost to the offset determination unit 353.
- the offset determination unit 353 compares the costs calculated by the respective offset measurement units 351, and determines the offset value with the lowest cost from the offset value candidates based on the comparison result. Then, the offset determination unit 353 outputs the determined offset value and the cost corresponding to the offset value. Upon receiving this output, the mode determination unit 340 (see FIG. 7) compares the costs calculated for each mode of the SAO, and based on the comparison result, the SAO that can improve the coding efficiency most. The mode and the offset value corresponding to the mode are specified for each CTU (that is, for each LCU).
- the offset determination unit 350 according to the present embodiment can limit the processing amount of the cost calculation when the bit depth of the pixel is 10 bits to the processing amount equivalent to the case of 8 bits. It becomes. Therefore, even when the bit depth is 10 bits, the offset determination unit 350 according to the present embodiment has the same configuration as that of the 8-bit offset measurement unit 351 (that is, Offset [0] measurement unit to Offset [7]
- the offset value can be determined using the measurement unit. That is, according to the offset determination unit 350 according to the present embodiment, the circuit scale can be reduced as compared with the offset determination unit 350a according to the comparative example.
- the offset determination unit 350 according to the present embodiment can reduce power consumption as compared with the offset determination unit 350a according to the comparative example as the processing amount of the cost calculation is reduced.
- the configuration of the offset determination unit 350 described above with reference to FIG. 13 is merely an example, and is not necessarily limited to the configuration illustrated in FIG.
- the offset determination unit 350 according to the present embodiment is provided with Offset [0] measurement unit to Offset [31] measurement unit as the offset measurement unit 351, and a mode in which only part is used and a mode in which all are used.
- the offset determination unit 350 may be configured to be switched.
- the offset measurement unit 351 when it is necessary to limit power consumption as in battery driving, as described above, only the Offset [0] measurement unit to the Offset [7] measurement unit may be used as the offset measurement unit 351. Good. Further, when the processing amount can be further improved as in the case of power supply driving, all of the Offset [0] measurement unit to the Offset [31] measurement unit are used as the offset measurement unit 351, and the comparison described above.
- the offset determination unit 350a according to the example may operate similarly.
- the offset measurement unit 351 according to the present embodiment switches to a mode in which only a part of the offset measurement units 351 is used according to a predetermined condition, such as a situation in which the image coding apparatus operates. Thus, the configuration may be such that the processing amount of the cost calculation can be reduced.
- FIG. 17 is a flowchart illustrating an example of a flow of a series of processes of the offset determination unit 350 according to the present embodiment.
- the constant N (N is an integer of 0 ⁇ N) is a value determined according to the number of offset value candidates (in other words, the number of offset measuring units 351), as described above.
- N + 1 corresponds to the number of offset value candidates.
- Step S621 First, the offset determination unit 350 initializes Count, which is a counter value, with 0 (step S611). Then, the cost is calculated for the offset value candidate indicated by the counter value Count. At this time, the offset determination unit 350 restricts offset value candidates based on the bit depth of the pixel and the quantization step (QP) when generating the quantized data that is the decoding source of the decoded image data.
- Count is a counter value
- QP quantization step
- Steps S623 and S624 Specifically, one of a case where the bit depth of the pixel is 8 bits and a case where the bit depth of the pixel is 10 bits and the quantization step is equal to or less than the first threshold TH21 (QP ⁇ TH21). In such a case (step S623, NO), the offset determination unit 350 selects the table 1 corresponding to the condition.
- a specific example of the table 1 is a control table d51 shown in FIG.
- the offset determination unit 350 specifies offset value candidates indicated by the counter value Count based on the selected table 1, and calculates a cost for the specified candidates.
- the counter value Count i (i is an integer of 0 ⁇ i ⁇ N)
- i is specified as a candidate offset value.
- Step S625 when the bit depth of the pixel is 10 bits and the quantization step is larger than the first threshold value TH21 (step S624, YES), the offset determination unit 350 determines that the quantization step is the second threshold value. It is determined whether it is greater than TH22 (TH22> TH21).
- Step S626 When the quantization step is equal to or smaller than the second threshold TH22 (step S625, NO), the offset determination unit 350 selects the table 2 corresponding to the condition.
- a specific example of the table 2 is a control table d52 shown in FIG.
- the offset determination unit 350 specifies offset value candidates indicated by the counter value Count based on the selected table 2, and calculates a cost for the specified candidates.
- the counter value Count i (i is an integer of 0 ⁇ i ⁇ N)
- 2 ⁇ i is specified as a candidate offset value.
- Step S627 When the quantization step is larger than the second threshold TH22 (step S625, YES), the offset determination unit 350 selects the table 3 corresponding to the condition.
- a specific example of the table 3 is a control table d53 shown in FIG.
- the offset determination unit 350 identifies offset value candidates indicated by the counter value Count based on the selected table 3, and calculates a cost for the identified candidates.
- the counter value Count i (i is an integer satisfying 0 ⁇ i ⁇ N)
- 4 ⁇ i is specified as a candidate offset value.
- Step S628 The offset determination unit 350 identifies an offset value candidate indicated by the counter value Count, and increments the counter value Count when cost calculation is completed for the identified candidate.
- Step S622 the offset determination unit 350 specifies offset value candidates until the counter value Count exceeds a predetermined constant N, and calculates the cost for the specified candidates (NO in step S622).
- Step S629) For each of the counter values Count from 0 to N, an offset value candidate is specified, and when cost calculation is completed for the specified candidate (YES in step S622), the offset determination unit 350 calculates each offset value candidate. Compare costs. And the offset determination part 350 determines a candidate with the lowest cost as an offset value based on the said comparison result.
- the offset determination unit 350 generates a bit depth of a pixel and a quantization step when generating quantized data that is a decoding source of the decoded image data ( QP) and limit offset value candidates for SAO processing.
- the offset determination unit 350 can limit the processing amount of the cost calculation when the bit depth of the pixel is 10 bits to a processing amount equivalent to the case of 8 bits. Become. Therefore, according to the offset determination unit 350 according to the present embodiment, even when the bit depth is 10 bits, the same configuration as in the case of 8 bits is used as the configuration for calculating the cost of each candidate offset value. Thus, the offset value can be determined. That is, according to the image coding apparatus according to the present embodiment, the circuit scale of the offset determination unit 350 is reduced as compared with the case where the cost is calculated for each offset value that can be taken when the bit depth of the pixel is 10 bits. It becomes possible. In addition, the image coding apparatus according to the present embodiment can further reduce power consumption as the amount of cost calculation decreases when the bit depth of a pixel is 10 bits.
- the offset determination unit 350 may limit offset value candidates based on the feature amount of the original image data.
- the feature amount of the original image data for example, there is a variance value that serves as an index of the amount of change in the pixel value in the original image data.
- the offset determination unit 350 may limit the offset candidates so that the offset value becomes smaller as in the control table d51 illustrated in FIG. .
- the offset determination unit 350 sets the offset candidates so that the offset value becomes larger as in the control tables d52 and d53 shown in FIGS. You may restrict.
- the feature amount of the original image data may be calculated as the feature amount by the statistic acquisition unit 330 based on the acquired original image data, for example.
- a determination criterion for limiting the offset value candidates Is not particularly limited.
- parameters other than the variance value may be used as the feature amount of the original image data.
- the sample adaptive offset filter restricts offset value candidates, thereby reducing the amount of processing for specifying the offset value, thereby reducing a series of costs. The processing amount related to the calculation was reduced.
- the sample adaptive offset filter limits the SAO mode candidates according to the prediction mode specified as a result of intra prediction for the CTU to be processed. . Thereby, the image coding apparatus according to the present embodiment reduces the amount of processing related to a series of cost calculations by reducing the amount of processing for specifying the SAO mode.
- the outline of the image coding apparatus according to this embodiment will be described with particular attention to the sample adaptive offset filter with reference to FIGS.
- FIG. It is explanatory drawing for demonstrating the prediction mode of intra prediction in H.265 / HEVC.
- prediction modes of intra prediction there are planar prediction, DC prediction, and directionality prediction, and 32 types of prediction directions are set for directionality prediction. Therefore, H.H. In H.265 / HEVC, each prediction method of planar prediction, DC prediction, and directionality prediction is distinguished from each prediction direction in the directionality prediction by setting each as a prediction mode.
- one of “2 to 34” is set as the mode value of the prediction mode according to the prediction direction.
- “10” is set as the mode value of the prediction mode.
- “26” is set as the mode value of the prediction mode.
- FIG. 19 is an explanatory diagram for describing characteristics of decoded image data when directionality prediction is selected as the prediction mode of intra prediction.
- reference symbol d10 indicates a prediction target block in the original image
- reference symbol d20 indicates decoded image data of the prediction target block d10.
- the reference symbol d11 indicates a prediction block for intra prediction with respect to the prediction target block d10
- the reference symbol d13 indicates the prediction direction of the directional prediction.
- the prediction target block d10 has a high correlation between the pixels in the vertical direction. Therefore, in the case of the example shown in FIG. 19, the directionality prediction indicating the prediction direction along the vertical direction is selected as the prediction mode of intra prediction as indicated by the reference sign d13, and “26” is set as the mode value of the prediction mode. Is set.
- each pixel of the decoded image data d20 has a high correlation between the pixels along the same direction as the prediction direction d13. For this reason, the decoded image data d20 tends not to have an edge in the same direction as the prediction direction d13 of intra prediction. Therefore, for example, when the decoded image data d20 shown in FIG. 19 is a processing target, among the classes EO_0 to EO_3 of the edge offset shown in FIG. 1, the classes EO_1 to EO_3 having the same component as the prediction direction d13 are selected. The class EO_0 tends to be more easily selected.
- the sample adaptive offset filter associates each prediction mode for intra prediction and each mode for SAO in advance by using the characteristics described above.
- the control table d30 illustrated in FIG. 20 illustrates an example of a correspondence relationship between the prediction mode of intra prediction and each mode of SAO in the image encoding device according to the present embodiment.
- intra mode indicates the mode value in each prediction mode of intra prediction explained based on FIG.
- SAO mode indicates each mode of SAO shown in FIG. 1
- SAO mode indicates an encoding parameter set according to the SAO mode. It is defined based on the H.265 / HEVC standard.
- the SAO Band offset is set as the mode.
- “BO” represents a band offset.
- an edge offset is set as the SAO mode.
- the mode value is set so that the relative positional relationship between the prediction direction indicated by the mode value of the prediction mode and the directions of the adjacent pixels a and b with respect to the target pixel c of the edge offset is closer to the vertical.
- the mode value is set so that the relative positional relationship between the prediction direction indicated by the mode value of the prediction mode and the directions of the adjacent pixels a and b with respect to the target pixel c of the edge offset is closer to the vertical.
- the edge offset class EO_2 is associated.
- class EO_1 is associated.
- class EO_3 is associated, and when the mode value of the prediction mode is 22 to 29, class EO_0 is associated.
- the sample adaptive offset filter collates the prediction mode of the prediction target block d10 corresponding to the decoded image data d20 (CTU unit) with the control table d30 shown in FIG. 20, and thereby the SAO in the decoded image data d20. Specify the mode.
- the sample adaptive offset filter has an offset value for each mode of SAO (that is, for each class of band offset and edge offset).
- the SAO mode to be applied and the offset value are determined by calculating the cost and comparing the costs.
- the sample adaptive offset filter determines the SAO mode according to the prediction mode of intra prediction, and therefore only calculates the offset value in the determined mode. do it. That is, the image encoding apparatus according to the present embodiment can reduce the amount of processing for cost calculation, and thus reduce power consumption, as compared with the case where the offset value and cost are calculated for each SAO mode. It is also possible.
- FIG. 21 is a block diagram showing an example of the configuration of the loop filter 24 according to the present embodiment. In this description, the description will be made focusing on the configuration different from the loop filter 24 (see FIG. 4) according to the first embodiment, and detailed description of the other configurations will be omitted.
- the sample adaptive offset filter 300 performs the prediction mode (that is, the code) specified at the time of intra prediction for each block of the decoded image data to be processed.
- Obtain prediction parameter For example, in the sequence of processing of the image encoding device illustrated in FIG. 6, the prediction mode of intra prediction is determined in step S11, and the sample adaptive offset filter 300 is determined in step S11 in the processing illustrated in step S17. Use the predicted mode.
- the source of the prediction mode is not particularly limited as long as the sample adaptive offset filter 300 can acquire the prediction mode of intra prediction set for the CTU to be processed.
- the sample adaptive offset filter 300 may acquire an intra prediction prediction mode corresponding to a block to be processed from the intra prediction unit 30 (see FIG. 3).
- the loop filter 24 according to the present embodiment has been described above with reference to FIG.
- FIG. 22 is a block diagram showing an example of the configuration of the sample adaptive offset filter 300 according to the present embodiment.
- the sample adaptive offset filter 300 according to the present embodiment is different from the sample adaptive offset filter 300 (see FIG. 7) according to the first embodiment described above in the operation of the mode determination unit 340. Therefore, in this description, the mode determination unit 340 will be described with focus on, and detailed description of other configurations will be omitted.
- the mode determination unit 340 acquires, for each CTU in the decoded image data, an intra prediction prediction mode (that is, a prediction parameter among coding parameters) set for the CTU.
- an intra prediction prediction mode that is, a prediction parameter among coding parameters
- the intra estimation part 30 (refer FIG. 3) is mentioned, for example.
- the mode determination unit 340 is configured to be able to refer to a control table d30 in which a prediction mode of intra prediction and a mode of SAO are associated in advance as shown in FIG.
- the mode determination unit 340 can refer to the control table d30, the location where the data of the control table d30 is stored is not particularly limited.
- the mode determination unit 340 determines the SAO mode to be set for the CTU to be processed by collating the acquired prediction mode of intra prediction with the control table d30.
- the mode determination unit 340 selects a band offset as the SAO mode based on the control table d30. Also, when the mode value of the prediction mode of intra prediction is 1, that is, in the case of DC prediction, the mode determination unit 340 selects a band offset as the SAO mode based on the control table d30. In these cases, 1 indicating a band offset is set for SaoTypeIdx.
- the mode determination unit 340 selects an edge offset as the SAO mode based on the control table d30, and Specifies the class of edge offset. In this case, 2 indicating the edge offset is set for SaoTypeIdx.
- the mode determination unit 340 causes the offset determination unit 350 to calculate an offset value and a cost corresponding to the offset value for the determined SAO mode.
- the mode determination unit 340 causes the offset determination unit 350 to calculate an offset value and a cost corresponding to the offset value for each band of the band offset.
- the mode determination unit 340 calculates only the determined class among the edge offset classes EO_0 to EO_3 and calculates the offset value and the cost corresponding to the offset value. And That is, the mode determination unit 340 causes the offset determination unit 350 to calculate an offset value and a cost corresponding to the offset value for each of the categories 1 to 4 (see FIG. 1) for the determined class.
- the offset determination unit 350 is the same as that in the first embodiment described above. That is, the offset determination unit 350 calculates a cost for each offset value candidate and compares the calculated costs to identify an offset value that can improve the coding efficiency most.
- the mode determination unit 340 identifies the SAO mode and the offset value corresponding to the mode for each CTU by evaluating the cost calculated by the offset determination unit 350. For example, when the SAO mode is a band offset, the mode determination unit 340 compares the costs calculated for each band, thereby enabling the band that can improve the coding efficiency most (four consecutive four bands). Band). Further, when the SAO mode is edge offset, the mode determination unit 340 compares the costs calculated for each of the specified class categories 1 to 4 (see FIG. 1), thereby improving the coding efficiency most. Identify the categories that can be allowed.
- the mode determination part 340 outputs the mode specified for every CTU and the offset value corresponding to the said mode to the filter process part 390 and the lossless encoding part 16.
- the filter processing unit 390 performs SAO processing on each CTU of the decoded image data based on the SAO mode and offset value supplied from the mode determination unit 340. Then, the filter processing unit 390 outputs the decoded image subjected to the SAO process to the adaptive loop filter 400 (see FIG. 4).
- FIG. 23 is a flowchart illustrating an example of a flow of a series of processes of the mode determination unit according to the comparative example.
- mode determination unit 340a the mode determination unit according to the comparative example is referred to as a “mode determination unit 340a”. May be described.
- Step S501 to S503 First, the mode determination unit 340a sets 0 to the parameter “SaoTypeIdx” indicating the SAO mode (step S501), and calculates the cost when the SAO processing is not applied (step S502). When the calculation of the cost in the case where the SAO process is not applied is completed, the mode determination unit 340a increments SaoTypeIdx (step S503). Thereby, 1 is set to SaoTypeIdx.
- Step S504, S511, S512 Next, since the value of SaoTypeIdx is 1 (step S504, NO, step S511, YES), the mode determination unit 340a determines the offset value and the cost corresponding to the offset value for each band of the band offset. The calculation is performed by the unit 350 (step S512). Thereby, an offset value and a cost corresponding to the offset value are set for each band of the band offset.
- Step S513 When the calculation of the cost is completed for each band of the band offset, the mode determination unit 340a increments SaoTypeIdx. Thereby, 2 is set to SaoTypeIdx.
- Step S504, S511, S514) Next, since the value of SaoTypeIdx is 2 (step S504, NO, step S511, YES), the mode determination unit 340a determines the offset value for each combination of the edge offset classes EO_0 to EO_3 and the categories 1 to 4. And the cost corresponding to the offset value are calculated by the offset determination unit 350 (step S514). As a result, the offset value and the cost corresponding to the offset value are set for each category 1 to 4 of each class of edge offset.
- Step S535 When the calculation of the cost is completed for each combination of each class and each category of edge offset, the mode determination unit 340a increments SaoTypeIdx. Thereby, 3 is set to SaoTypeIdx.
- Step S504 As described above, the offset value and the cost corresponding to the offset value are set for each mode of SAO. At this time, 3 is set in SaoTypeIdx as described above.
- Step S520 When SaoTypeIdx is 3 or more (step S504, YES), the mode determination unit 340a compares the costs calculated for each mode of SAO, and can improve the coding efficiency most based on the comparison result. A possible SAO mode and an offset value corresponding to the mode are specified.
- the mode determination unit 340a performs cost calculation for all modes of SAO, that is, for each class of band offset and edge offset. And the mode determination part 340a compares the cost calculated for every mode, and has specified the mode of SAO for SAO processing based on the said comparison result.
- the mode determination unit 340a according to the comparative example performs a total of 384 cost calculations to identify the SAO mode.
- the pixel bit depth is 10 bits
- the other processes are the same except that the offset value candidates are 0 to 31.
- the mode determination unit 340a according to the comparative example tends to increase the processing amount of the cost calculation for specifying the SAO mode, which may cause an increase in power consumption.
- the mode determination unit 340 limits SAO mode candidates according to the prediction mode specified as a result of intra prediction for the CTU to be processed. Thereby, the image coding apparatus according to the present embodiment reduces the amount of processing related to the cost calculation by reducing the amount of processing for specifying the SAO mode.
- FIG. 24 is a flowchart illustrating an example of a flow of a series of processes of the mode determination unit 240 according to the present embodiment.
- the processing according to steps S501 to S503 is the same as that of the mode determination unit 340a according to the comparative example described above, and thus detailed description thereof is omitted. That is, the mode determination unit 340 sets 0 to the parameter “SaoTypeIdx” indicating the SAO mode (step S501), and calculates the cost when the SAO processing is not applied (step S502). Then, when the calculation of the cost when the SAO process is not applied is completed, the mode determination unit 340 increments SaoTypeIdx (step S503). Thereby, 1 is set to SaoTypeIdx.
- Step S504 and S531 the mode determination unit 340 acquires the intra prediction mode set for the CTU to be processed.
- the intra estimation part 30 (refer FIG. 3) is mentioned, for example.
- the mode determination unit 340 collates the control table d30 (see FIG. 20) in which the intra prediction mode and the SAO mode are associated in advance with the acquired prediction mode, so that the CTU to be processed is matched. Determine the SAO mode to be set. Then, the mode determination unit 340 sets SaoTypeIdx according to the determined SAO mode.
- the mode determination unit 340 sets 1 indicating a band offset to SaoTypeIdx based on the control table d30.
- the mode determination unit 340 sets 1 indicating a band offset to SaoTypeIdx based on the control table d30.
- the mode determination unit 340 sets 2 indicating edge offset to SaoTypeIdx based on the control table d30.
- Step S532 and S533 When 1 indicating a band offset is set for SaoTypeIdx (step S532, YES), the mode determination unit 340 includes an offset value and a cost corresponding to the offset value for each band of the band offset. Is calculated by the offset determination unit 350.
- Step S534 When the calculation of the offset value and the cost corresponding to the offset value is completed for each band of the band offset, the mode determination unit 340 sets “3” for SaoTypeIdx.
- Step S532 and S535 Further, when a value other than 1 is set for SaoTypeIdx (step S532, YES), for example, when 2 indicating an edge offset is set, the mode determination unit 340 determines the mode value of the prediction mode. And an edge offset class (see FIG. 1) are set based on the control table d30.
- Step S536 the mode determination unit 340 causes the offset determination unit 350 to calculate an offset value and a cost corresponding to the offset value for each of the categories 1 to 4 (see FIG. 1) for the determined class.
- Step S537 When the calculation of the offset value for each of the categories 1 to 4 and the cost corresponding to the offset value is completed for the determined class, the mode determination unit 340 sets “3” for SaoTypeIdx.
- Step S504 As described above, the SAO mode is determined, and the offset value and the cost corresponding to the offset value are set for the mode. At this time, 3 is set in SaoTypeIdx as described above.
- Step S520 When SaoTypeIdx is 3 or more (step S504, YES), the mode determination unit 340 identifies the SAO mode and the offset value corresponding to the mode by evaluating the cost calculated by the offset determination unit 350. To do.
- the mode determination unit 340 identifies the bands (four consecutive bands) that can improve the coding efficiency most by comparing the costs calculated for the respective bands. In this case, the mode determination unit 340 resets 1 indicating the band offset to SaoTypeIdx.
- the mode determination unit 340 identifies the category that can improve the coding efficiency most by comparing the costs calculated for each of the identified classes. In this case, the mode determination unit 340 resets 2 indicating the edge offset to SaoTypeIdx.
- the mode determination unit 340 specifies the SAO mode and the offset value corresponding to the mode.
- the SAO mode specifies the SAO mode and the offset value corresponding to the mode.
- the mode determination unit 340 restricts SAO mode candidates based on the prediction mode of intra prediction.
- the method of limiting the SAO mode is not necessarily limited to the method using the prediction mode of intra prediction. Therefore, an example of a method for limiting SAO mode candidates according to the characteristics of original image data and decoded image data will be described below as a modification.
- the mode determination unit 340 may set a band offset as the SAO mode when transform skip is applied.
- H. In H.265 / HEVC a technique called “strong-intra-smoothing” can be applied.
- this strong-intra-smoothing a smoothing process is performed on a prediction block for intra prediction on a prediction target block.
- the prediction target block tends to be an image with a small change in pixel value, that is, a flat image with little shading or a gradual change in shading. That is, when strong-intra-smoothing is applied, the band offset tends to be easily selected as the SAO mode.
- the mode determination unit 340 may set a band offset as the SAO mode when strong-intra-smoothing is applied.
- the mode determination unit 340 recognizes a direction in which the correlation between pixels is high based on the prediction direction in the direction prediction of intra prediction.
- the method is not necessarily limited to the method based on the prediction direction in the directionality prediction of intra prediction as long as the direction in which the correlation between pixels is high can be recognized.
- the mode determination unit 340 may recognize the direction in which the correlation between the pixels is high based on the feature amount in the original image data.
- Examples of the method based on the feature amount in the original image data include a method of recognizing a direction in which the correlation between pixels is high according to the texture of the original image data.
- the mode determination unit 340 may recognize a direction having a high correlation between pixels based on the edge direction extracted from the original image data.
- the statistic acquisition unit 330 extracts the edge from the original image data by performing filter processing such as a Sobel filter on the original image data. Then, the extracted edge information may be output to the mode determination unit 340 as a statistic.
- the mode determination unit 340 associates each prediction mode for intra prediction with each mode for SAO in advance. And the mode determination part 340 acquires the prediction mode of the intra prediction set with respect to CTU used as a process target, and specifies the mode of SAO based on the acquired prediction mode. As described above, the mode determination unit 340 according to the present embodiment limits SAO mode candidates in accordance with the acquired prediction mode of intra prediction. In addition, the mode determination unit 340 calculates an offset value and a cost corresponding to the offset value only for the specified mode.
- the mode determination unit 340 has a processing amount related to the cost calculation as compared to the case where the cost calculation is performed for each mode of SAO as in the mode determination unit 340a according to the comparative example. Can be greatly reduced.
- the mode determination unit 340 according to the present embodiment is It turns out that the processing amount concerning calculation can be reduced significantly. Needless to say, the mode determination unit 340 according to the present embodiment can reduce power consumption as compared with the mode determination unit 340a according to the comparative example as the processing amount of the cost calculation is reduced.
- sample adaptive offset filter 300 according to this embodiment may be combined with the sample adaptive offset filter 300 according to the first embodiment described above.
- the offset determination unit 350 according to the first embodiment described above may be applied as the offset determination unit 350 in the mode determination unit 340.
- this configuration it is possible to further reduce the amount of cost calculation processing for specifying the offset value, and to reduce the circuit scale of the offset determination unit 350.
- the power consumption can be further reduced.
- the sample adaptive offset filter controls whether or not the SAO process can be applied in units of slices.
- the sample adaptive offset filter determines whether or not the SAO process can be applied, based on the encoding parameter set for the decoded image data, in addition to the control in units of slices. Control is performed in units of (ie, LCU).
- the outline of the image coding apparatus according to this embodiment will be described with reference to FIG. 25, particularly focusing on the sample adaptive offset filter.
- FIG. 25 schematically illustrates an example of predicted image data generated based on bi-prediction in inter prediction among B slices (or B pictures).
- a reference symbol d60 schematically illustrates an example of a pixel value of each pixel of predicted image data (TU) generated based on bi-prediction in inter prediction.
- the reference code d61 is schematically an example of the pixel value of each pixel of the decoded image data (TU) of the I slice or P slice in the L0 direction (past) used for generating the predicted image data d60. Show.
- the reference code d62 is a schematic example of a pixel value of each pixel of the decoded image data (TU) of the I slice or P slice in the L1 direction (future) used to generate the predicted image data d60. It shows.
- the pixel value of each pixel of the generated predicted image data d60 is the pixel value of each pixel of the decoded image data d61 and d62 for prediction.
- the predicted image data of the B slice tends to be selected with a larger quantization step (QP) than the predicted image data of the I slice or the P slice.
- QP quantization step
- the SAO process corresponds to a process for reducing an error (for example, a quantization error) between the original image data generated in the decoded image data, and an offset is applied to the target pixel value.
- This corresponds to a process of performing a smoothing process by adding and subtracting.
- the SAO process is performed on the decoded image data of the B slice such as the decoded image data of the predicted image data d60 illustrated in FIG. 25, the sense of detail may be further deteriorated.
- the image quality difference between the B slice and the preceding and subsequent I slices or P slices is further increased, and there is a possibility that the image quality deteriorates subjectively.
- the sample adaptive offset filter according to the present embodiment further controls whether or not the SAO process can be applied according to the encoding parameter set in the target decoded image data. Further, the sample adaptive offset filter according to the present embodiment controls whether or not the SAO processing can be applied in units of CTUs in addition to control in units of slices.
- a prediction parameter like the prediction mode of inter prediction or intra prediction
- a quantization parameter like a quantization step, etc. are mentioned.
- the sample adaptive offset filter is a SAO to be processed when the change in the pixel value is smaller than that of other slices, such as when inter prediction bi-prediction is applied. Processing is not applied in units of slices or CTUs.
- the sample adaptive offset filter suppresses deterioration in image quality associated with encoding and reduces the amount of processing for cost calculation.
- the image coding apparatus according to the present embodiment can reduce power consumption because the amount of processing for cost calculation is reduced.
- FIG. 26 is a block diagram showing an example of the configuration of the sample adaptive offset filter 300 according to the present embodiment.
- the configuration of the switching determination unit 360 is different from the sample adaptive offset filter 300 (see FIG. 7) according to the first embodiment described above. Therefore, in this description, the switching determination unit 360 will be described, and detailed description of other configurations will be omitted.
- the switching determination unit 360 includes a first determination unit 370 and a second determination unit 380.
- the function of the first determination unit 370 corresponds to the function of the switching determination unit 360 according to the first embodiment described above. That is, the first determination unit 370 controls whether or not the SAO process can be applied to the decoded image data in units of slices.
- FIG. 27 is a block diagram illustrating an example of a configuration of the first determination unit 370 for controlling whether or not the SAO process can be applied in units of slices.
- the first determination unit 370 includes a mode number counting unit 371 and a determination processing unit 373.
- the mode number counting unit 371 counts the number of blocks (CTU) to which SAO processing is applied in the slice immediately before the B slice (that is, I slice or P slice). To do. Then, the mode number counting unit 371 outputs the counted number, that is, the number of blocks (CTU) to which the SAO processing is applied in the immediately preceding slice, to the determination processing unit 373 as the mode number.
- the determination processing unit 373 instructs the analysis unit 320 to apply the SAO process to the slice.
- the determination processing unit 373 When the slice to be processed is a B slice, the determination processing unit 373 counts the number of blocks (CTU) to which the SAO processing is applied in the slice immediately before the B slice, that is, the number of modes. Acquired from the unit 371. Then, the determination processing unit 373 controls whether or not the SAO process can be applied to the B slice according to the acquired number of modes.
- CTU blocks
- the determination processing unit 373 controls whether or not the SAO process can be applied to the B slice according to the acquired number of modes.
- the determination processing unit 373 restricts the application of the SAO process to the processing target B slice (that is, does not apply).
- the analysis unit 320 is instructed.
- the determination processing unit 373 When the acquired number of modes, that is, the number of blocks (CTU) to which the SAO processing is applied is equal to or greater than the threshold TH11, the determination processing unit 373 according to the present embodiment is the quantized data that is the decoding source of the decoded image data. Quantization step (QP) when generating is obtained.
- the determination process part 373 can acquire the quantization step of the quantization data which is a decoding origin of decoding image data, the acquisition origin will not be specifically limited. As a specific example, the determination processing unit 373 may acquire the quantization step from the quantization unit 15 (see FIG. 3).
- the determination processing unit 373 controls whether or not the SAO process can be applied to the B slice to be processed based on the acquired quantization step.
- the determination processing unit 373 instructs the analysis unit 320 to apply the SAO process to the B slice to be processed when the acquired quantization step is equal to or less than the predetermined threshold TH12. If the obtained quantization step is larger than the predetermined threshold TH12, the analysis unit 320 is instructed to limit the application of the SAO process to the B slice to be processed (that is, not applied).
- an appropriate value determined based on a prior experiment or the like may be set in advance as the threshold value TH12 for limiting the applicability of the SAO process to the B slice to be processed based on the quantization step.
- the determination processing unit 373 outputs the applicability of the SAO processing for each slice to the lossless encoding unit 16 as a parameter at the time of encoding. This process is the same as that of the switching determination unit 360 according to the first embodiment described above.
- the first determination unit 370 controls whether or not the SAO process can be applied in units of slices.
- the decoded image data of B slice having a relatively large quantization step tends to be less in detail than the decoded image data of I slice or P slice. There may be a noticeable loss of detail.
- the first determination unit 370 restricts the application of the SAO process for B slices having a relatively large quantization step. That is, the first determination unit 370 controls whether or not the SAO process can be applied in units of slices, thereby suppressing image quality deterioration and reducing the amount of cost calculation processing.
- the second determination unit 380 controls whether or not the SAO process can be applied to the decoded image data in units of CTU (ie, LCU) based on the encoding parameter set in the CTU.
- the second determination unit 380 uses a prediction mode (that is, intra prediction or inter prediction) set for the CTU to be processed as an encoding parameter for determining whether or not to apply the SAO process. Prediction parameters indicating (prediction) are used.
- the 2nd determination part 380 can acquire the prediction parameter which shows the prediction mode set with respect to CTU used as a process target, the acquisition source will not be specifically limited.
- the second determination unit 380 includes information (that is, intra prediction or inter prediction) that the selection unit 27 (see FIG. 3) switches and outputs according to the size of each cost of intra prediction and inter prediction.
- the prediction parameter may be acquired from the selection unit 27.
- the second determination unit 380 recognizes the prediction mode set for the CTU to be processed based on the acquired prediction parameter. Then, when the prediction mode set for the CTU to be processed is one of intra prediction and bi-prediction in inter prediction, the second determination unit 380 performs SAO processing on the CTU.
- the analysis unit 320 is instructed to limit the application of (i.e., non-application). In addition, when neither the intra prediction nor the bi prediction in the inter prediction, the second determination unit 380 instructs the analysis unit 320 to apply the SAO process to the CTU to be processed.
- the second determination unit 380 controls whether or not the SAO process can be applied in units of CTUs.
- the decoded image data of the B slice to which the bi-prediction of the inter prediction is applied has a tendency to lose a sense of detail as compared with the decoded image data of the I slice or the P slice, and the SAO process is performed. As a result, a loss of detail may be noticeable. Also, it is known that the same tendency exists when intra prediction is applied to the B slice.
- the second determination unit 380 performs SAO processing on the CTU. Restrict application of. That is, the second determination unit 380 controls whether or not the SAO process can be applied in units of CTUs, thereby suppressing image quality degradation and reducing the cost calculation processing amount.
- the subsequent processing that is, the operations of the analysis unit 320 and the filter processing unit 390 according to the control of the switching determination unit 360 are the same as those in the first and second embodiments described above.
- the example of the configuration of the sample adaptive offset filter 300 according to the present embodiment has been described above with reference to FIGS. 26 and 27.
- FIG. 28 is a flowchart illustrating an example of a flow of a series of processes of the sample adaptive offset filter 300 according to the present embodiment.
- the sample adaptive offset filter 300 according to the present embodiment is the same as that of the first embodiment described above in that the contents of the process shown in step S100a and the processes shown in steps S300 and S400 are added. This is different from the sample adaptive offset filter 300 (see FIG. 8). Therefore, hereinafter, the description will be focused on steps S100a, S300, and S400, which are different from the sample adaptive offset filter 300 according to the first embodiment described above, and detailed description of other processes will be omitted.
- Step S100a The switching determination unit 360 determines whether or not the SAO process can be applied to each of the luminance and chromaticity for each slice of the decoded image data, and controls the operation of the analysis unit 320 based on the determination result.
- the switching determination unit 360 when the slice to be processed is a B slice and the quantization step is greater than or equal to a predetermined threshold TH12, the switching determination unit 360 according to the present embodiment restricts the application of the SAO process to the slice. .
- the operation related to the determination of whether or not to apply the SAO process in units of slices by the switching determination unit 360 will be described later in detail.
- Step S300 When it is determined that the SAO process is applied to the slice (YES in step S200), the switching determination unit 360 applies the SAO process for each luminance and chromaticity for each CTU of the slice. Whether or not it is possible is determined, and the operation of the analysis unit 320 is controlled based on the determination result.
- the switching determination unit 360 when the prediction mode set for the CTU to be processed is one of intra prediction and bi-prediction in inter prediction, The application of SAO processing to is restricted. The operation related to the determination of whether or not the CTU unit SAO process can be applied by the switching determination unit 360 will be described later in detail.
- Step S500 When it is determined that SAO processing is applied to the CTU (step S400, YES), the analysis unit 320 converts the CTU into original image data and decoded image data (after deblocking filter processing). Based on this, the SAO mode and the offset value for performing the SAO processing are determined.
- Step S600 The filter processing unit 390 performs SAO processing on each CTU of the decoded image data based on the SAO mode and the offset value supplied from the mode determination unit 340.
- Step S700 The above determination and processing are executed for a series of CTUs in the target slice (step S700, NO), and upon completion of the determination and processing for the series of CTUs (step S700, YES), the SAO processing for the target slice Application of is completed.
- Step S200 When the SAO process is not applied to the target slice (step S200, NO), the processes shown in steps S300 to S700 are not executed for the slice.
- FIG. 29 is a flowchart illustrating an example of processing related to determination as to whether or not to apply SAO processing for each slice by the switching determination unit according to the present embodiment.
- the switching determination unit 360 according to the present embodiment is different from the switching determination unit 360 (see FIG. 9) according to the first embodiment described above in that the process shown in step S110 is added. Therefore, hereinafter, the description will be focused on the processing shown in step S110, which is different from the switching determination unit 360 according to the first embodiment described above, and detailed description of other processing will be omitted.
- Steps S101 and S102 When the slice to be processed is a B slice (YES in step S101), the switching determination unit 360 according to the present embodiment performs SAO processing in the slice immediately preceding the B slice (that is, I slice or P slice). The number of applied CTUs (number of modes) is acquired (step S102).
- Step S103 When the acquired mode number is equal to or greater than the predetermined threshold TH11 (NO in step S103), the switching determination unit 360 performs a quantization step (QP) when generating quantized data that is a decoding source of the decoded image data. To get. Then, the determination processing unit 373 controls whether or not the SAO process can be applied to the B slice to be processed based on the acquired quantization step.
- QP quantization step
- Step S104 Specifically, when the obtained quantization step is equal to or less than the predetermined threshold TH12 (step S103, NO), the switching determination unit 360 instructs the analysis unit 320 to apply the SAO process to the B slice to be processed. .
- Step S105 When the acquired quantization step is larger than the predetermined threshold TH12 (step S103, YES), the switching determination unit 360 restricts the application of the SAO process to the B slice to be processed (that is, does not apply). ) To the analysis unit 320.
- the switching determination unit 360 determines whether or not the SAO process can be applied for each slice, and controls the operation of the analysis unit 320 based on the determination result.
- FIG. 30 is a flowchart illustrating an example of processing related to determination of whether or not to apply SAO processing for each CTU by the switching determination unit according to the present embodiment.
- the switching determination unit 360 uses a prediction parameter indicating a prediction mode (that is, intra prediction or inter prediction) set for the CTU to be processed as an encoding parameter for determining whether or not the SAO process can be applied. To do.
- the switching determination unit 360 acquires the prediction parameter from, for example, the selection unit 27 (see FIG. 3), and recognizes the prediction mode set for the CTU to be processed based on the acquired prediction parameter. .
- Step S302 the switching determination unit 360 determines whether the recognized prediction mode corresponds to either intra prediction or bi-prediction in inter prediction.
- Step S304 When the recognized prediction mode is either intra prediction or bi-prediction in inter prediction (step S302, YES), the switching determination unit 360 restricts application of SAO processing to the CTU (ie, , It is not applied) to the analysis unit 320.
- Step S303 When the recognized prediction mode is neither bi prediction in intra prediction or inter prediction (NO in step S302), the switching determination unit 360 instructs the analysis unit 320 to apply the SAO process to the CTU. .
- the filter processing unit 390 Thereafter, only the CTUs to which the SAO processing is applied are calculated by the analysis unit 320, and the cost is calculated and the SAO mode and offset value are specified. Based on the SAO mode and offset value, The SAO process is performed by the filter processing unit 390.
- the sample adaptive offset filter according to the present embodiment controls whether or not the SAO process can be applied according to the encoding parameter set in the target decoded image data. Further, the sample adaptive offset filter according to the present embodiment controls whether or not the SAO processing can be applied in units of CTUs in addition to control in units of slices.
- the sample adaptive offset filter suppresses deterioration in image quality associated with encoding and reduces the amount of processing for cost calculation.
- the image coding apparatus according to the present embodiment can reduce power consumption because the amount of processing for cost calculation is reduced.
- the switching determination unit 360 determines whether to apply the SAO process based on the slice type, the prediction parameter such as the prediction mode of inter prediction or intra prediction, and the quantization parameter such as QP. Control was performed in units of slices or CTUs. However, as described above, if the applicability of the SAO processing can be controlled in slice units or CTU units in consideration of the influence on the image quality associated with the application of SAO processing, the method is not necessarily described above. However, the method is not limited to the method based on the prediction parameter and the quantization parameter.
- the chrominance component has a greater effect on image quality improvement by performing the SAO process.
- the switching determination unit 360 may limit the application of the SAO process to the luminance component of the decoded image data and perform control so that the SAO process is applied only to the chromaticity component. .
- the switching determination unit 360 may control whether or not the SAO process can be applied in units of slices or in units of CTUs. Of course, the switching determination unit 360 may control to apply the SAO process only to the chromaticity components in the decoded image at once.
- the method described above as a modification may be appropriately combined with the above-described method based on the prediction parameter or the quantization parameter.
- the method based on the prediction parameter and the quantization parameter described above may be appropriately replaced with the method described above as a modification.
- the sample adaptive offset filter according to the present embodiment controls whether or not the SAO process can be applied according to the encoding parameter set in the target decoded image data. Further, the sample adaptive offset filter according to the present embodiment controls whether or not the SAO processing can be applied in units of CTUs in addition to control in units of slices.
- the sample adaptive offset filter suppresses deterioration in image quality associated with encoding and reduces the amount of processing for cost calculation.
- the image coding apparatus according to the present embodiment can reduce power consumption because the amount of processing for cost calculation is reduced.
- sample adaptive offset filter 300 may be combined with either or both of the sample adaptive offset filters 300 according to the first and second embodiments described above.
- the offset determination unit 350 according to the first embodiment described above may be applied as the offset determination unit 350 in the mode determination unit 340. With such a configuration, it is possible to reduce the amount of cost calculation processing for specifying the offset value and reduce the circuit scale of the offset determination unit 350.
- the mode determination unit 340 according to the second embodiment described above may be applied as the mode determination unit 340. With such a configuration, it is possible to further reduce the amount of cost calculation processing for specifying the SAO mode.
- the processing amount of the cost calculation is further reduced, so that it is possible to further reduce the power consumption. Yes.
- the sample adaptive offset filter restricts offset value candidates, thereby reducing the amount of processing for specifying the offset value, thereby reducing a series of costs. The processing amount related to the calculation was reduced.
- the sample adaptive offset filter specifies the offset value by further limiting the offset value candidates according to the picture type of the target picture. The amount of processing for further reducing.
- the offset value that can be selected in the P picture or B picture (that is, the difference from the original image) is the same as or smaller than the candidate offset value selected in the reference picture. Since it is a candidate, the number of offset value candidates that can be selected in the P picture or B picture is equal to or less than the reference picture.
- the picture type of the picture to be processed is a picture generated based on a P picture or B picture (that is, a prediction result referring to another picture).
- the number of offset value candidates for the picture is limited to the number of candidates up to the maximum offset value selected in the reference picture.
- the sample adaptive offset filter (particularly, the offset determination unit 350) according to the present embodiment limits the number of offset value candidates, thereby determining the offset value to be applied. The amount of cost calculation processing for each candidate is reduced.
- FIG. 31 is an explanatory diagram for explaining the outline of the image coding apparatus according to the present embodiment, and shows an example of a reference relationship between each picture (that is, I picture, P picture, and B picture). ing.
- FIG. 31 shows an example of the reference relationship between pictures when the picture depth is 3.
- the picture depth is information indicating a reference relationship between pictures in a picture (GOP structure). Specifically, those in the same situation in the reference relationship are grouped into 1 to 5, for example.
- the horizontal direction represents the time of decoding order.
- Each of the parts indicated by rectangles represents each picture, and each of the symbols I, B, and P presented in the part indicated by the rectangles indicates the picture type of the picture. Show. That is, a picture to which a symbol I is attached indicates an I picture. Similarly, a picture to which a symbol B is attached indicates a B picture, and a picture to which a symbol P is attached indicates a P picture.
- arrows connecting the pictures indicate pictures to be referred to in order to perform inter prediction (that is, reference relationships between pictures).
- the picture depth 1 includes an I picture and a P picture.
- the I picture does not refer to other pictures.
- the P picture refers to the latest picture among the I picture and P picture located on the left side (that is, the past side) of itself.
- the P picture located on the right side (that is, the future side) of the I picture refers to the I picture.
- another P picture located on the right side of the P picture refers to the P picture located on the left side (that is, the past side) of itself.
- the picture depth 2 includes a B picture that refers to the picture of the picture depth 1.
- a B picture that refers to the picture of the picture depth 1.
- the B picture located between the I picture and the P picture refers to the I picture and the P picture.
- a B picture located between a P picture and another P picture refers to the P picture and another P picture.
- the picture depth 3 refers to the picture of the picture depth 1 (ie, I picture or P picture) for one of the front and rear (ie, past and future) reference directions, and the picture depth 2 for the other.
- B pictures that refer to other pictures are included.
- the B picture located between the I picture included in the picture depth 1 and the B picture included in the picture depth 2 is the I picture included in the picture depth 1
- the B picture included in the picture depth 2 is referred to.
- the B picture located between the B picture included in the picture depth 2 and the P picture included in the picture depth 1 is the B picture included in the picture depth 2 and the P picture included in the picture depth 1. And refer to.
- the sample adaptive offset filter (in particular, the offset determination unit 350) according to the present embodiment performs processing for limiting the number of offset value candidates in the picture according to the picture type of the target picture.
- FIG. 32 is an explanatory diagram for explaining the contents of processing in which the sample adaptive offset filter according to the present embodiment limits the number of offset value candidates in accordance with the picture type.
- the I picture, the P picture, and the B picture have a reference relationship. That is, in FIG. 32, it is assumed that the P picture refers to the I picture and the B picture refers to the I picture and the P picture.
- the offset determination unit 350 sets the maximum value of the offset value candidates to “8”, as in the offset determination unit 350 according to the first embodiment. To do. That is, when the picture type is an I picture, for example, all of the Offset [0] measurement unit to the Offset [7] measurement unit in the offset measurement unit 351 shown in FIG. 13 are used.
- the offset determination unit 350 sets the offset value in the P picture up to the maximum value among the offset values selected in the I picture that is the reference destination of the P picture. Limit the number of candidates. Note that the maximum value of the offset value selected in the reference destination picture can be acquired based on, for example, a statistic calculated for specifying the offset value in the reference destination picture.
- the offset determination unit 350 measures the offset value targeted by the Offset [5] measurement unit (that is, the Offset [0] measurement unit to the Offset [5] measurement). Is the offset value candidate corresponding to the P picture. That is, in the case of the example shown in FIG. 32, the number of offset value candidates is limited to “6” for the P picture, and the Offset [0] measurement unit to Offset in the offset measurement unit 351 shown in FIG. [5] A measuring unit will be used.
- the offset determination unit 350 targets up to the maximum value among the offset values selected in the I picture and the P picture that are the reference destinations of the B picture. Limit the number of offset value candidates.
- the offset determination unit 350 selects an offset value candidate for the B picture based on the smaller one of the maximum offset values selected at each reference destination (for example, I picture and P picture). Limit the number of. This is because the B picture can refer to its own front and back (for example, the I picture and the P picture in FIG. 32), and therefore, it is only necessary to refer to a picture with a smaller difference from the original picture among the pictures of each reference destination. caused by.
- the maximum offset value selected in the I picture is the offset value targeted by the Offset [5] measurement unit
- the maximum offset value selected in the P picture is Offset [ 3]
- the offset determination unit 350 performs up to the offset value targeted by the Offset [3] measurement unit for the B picture that refers to the I picture and the P picture (that is, the Offset [0] measurement unit to Offset [ 3]
- the offset value targeted by the measurement unit is a candidate offset value corresponding to the B picture. That is, in the case of the example shown in FIG. 32, the number of offset value candidates is limited to “4” for the B picture, and the Offset [0] measurement unit to Offset in the offset measurement unit 351 shown in FIG. [3] The measurement unit will be used.
- the example of the B picture included in the picture depth 2 in the example shown in FIG. 31 has been described as the B picture, but the B picture in other picture depths is also described.
- the basic idea remains the same.
- a B picture located between an I picture included in picture depth 1 and a B picture included in picture depth 2 that is, a B picture whose decoding order is “1”).
- the offset determination unit 350 is based on a lower value among the maximum values of the selected offset values in each of the I picture included in the picture depth 1 and the B picture included in the picture depth 2.
- the number of offset value candidates in the B picture included in the picture depth 2 is limited.
- the maximum offset value selected on the I picture side is the offset value targeted by the Offset [5] measurement unit, and the offset value selected on the B picture side included in the picture depth 2 It is assumed that the maximum value is the offset value targeted by the Offset [3] measurement unit.
- the offset determination unit 350 limits the number of offset value candidates in the B picture included in the picture depth 2 based on the offset value targeted by the Offset [3] measurement unit.
- the B picture included in the picture depth 2 refers to the I picture included in the picture depth 1.
- the maximum value of the offset value selected in the B picture included in the picture depth 2 does not exceed the maximum value of the offset value selected in the I picture included in the picture depth 1.
- the offset determination unit 350 performs processing based on the maximum offset value selected in the B picture.
- the number of offset value candidates in a picture may be limited.
- the offset determination unit 350 determines the target based on the maximum offset value selected in the picture included in the deeper picture depth.
- the number of offset value candidates in a picture may be limited.
- FIGS. 33 and 34 are flowcharts illustrating an example of a flow of a series of processes of the offset determination unit 350 in the image encoding device according to the present embodiment.
- the offset determination unit 350 limits the number of offset value candidates (ie, the number of offset value candidates).
- the offset determination unit 350 limits the number of offset value candidates (ie, the number of offset value candidates).
- the processing flow of the offset determination unit 350 according to the present embodiment will be described by focusing on the difference from the offset determination unit 350 (see FIG. 17) according to the first embodiment described above. Detailed descriptions of other parts are omitted.
- the offset determination unit 350 limits the number of offset value candidates (that is, the maximum number N of offset value candidates) according to the picture type of the target picture.
- FIG. 34 shows an example of the flow of a process in which the offset determination unit 350 limits the number of offset value candidates according to the picture type of the target picture (that is, the process shown in step S800 in FIG. 33). It is the shown flowchart.
- Step S801 the offset determination unit 350 determines whether the picture corresponds to an I, P, or B picture based on information indicating the picture type of the picture to be processed.
- Step S805 When the target picture is an I picture (step S803, YES), the offset determination unit 350 sets the maximum value N of the number of offset value candidates to 7.
- Step S809 If the target picture is a P picture (step S803, NO, and step S807, YES), the offset determination unit 350 sets the maximum number N of offset value candidates for the picture to the current picture. Is limited based on the maximum value of the offset value selected in another picture (for example, I or P picture) referred to. At this time, the offset determination unit 350 may specify the maximum value of the offset value selected in the other picture based on the statistic calculated for specifying the offset value in the other picture as the reference destination. .
- Step S809 When the target picture is a B picture (step S803, NO and step S807, NO), the offset determination unit 350 sets the maximum value N of the number of offset value candidates for the picture as the picture. Is limited based on the smaller one of the maximum offset values selected in each of other pictures (for example, I, P, or B pictures) referred to. At this time, if the offset determination unit 350 specifies the maximum value of the offset value selected in the other picture based on the statistic calculated for specifying the offset value in each other reference picture. Good.
- the offset determination unit 350 limits the number of offset value candidates (that is, the maximum number N of offset value candidates) according to the picture type of the target picture.
- the subsequent processing (that is, processing after step S621 in FIG. 33) is the same as that of the offset determination unit 350 according to the first embodiment described above.
- the maximum value N of the number of offset value candidates is limited based on the processing result of step S800 when compared with the example shown in FIG. Therefore, according to the offset determination unit 350 according to the present embodiment, when the picture type is a P or B picture, the calculation of the cost corresponding to the candidate is omitted by the number of limited offset value candidates. (That is, the number of executions (loop number) of a series of processes shown in steps S622 to S628 is limited). Therefore, the offset determination unit 350 according to the present embodiment has a cost for each offset value candidate for specifying an offset value, as compared to the offset determination unit 350 (see FIG. 17) according to the first embodiment described above. It is possible to reduce the processing amount related to the calculation.
- the sample adaptive offset filter of the image coding apparatus further restricts offset value candidates according to the picture type of the target picture.
- the sample adaptive offset filter when the target picture is a P picture or B picture (that is, a picture generated based on a prediction result referring to another picture), the offset value of the picture The number of candidates is limited based on the maximum value of the offset value selected in another picture that is a reference destination.
- the sample adaptive offset filter according to the present embodiment can reduce the processing amount of cost calculation for each offset value candidate for determining the offset value to be applied.
- the processing amount tends to be larger than when processing an I picture.
- the processing load of cost calculation for each offset value candidate is reduced. It is possible to reduce the amount of processing when targeting the.
- the offset values selected in each picture tend to be smaller as the pictures in the reference relationship tend to be more similar. That is, in the sample adaptive offset filter according to the present embodiment, the number of offset value candidates in the P picture and the B picture is further increased when the pictures in the reference relationship are more similar due to the characteristics of the processing described above. It becomes possible to restrict.
- the higher the frame rate the shorter the distance along the time series between frames and the more similar between frames, so a smaller offset value tends to be selected more easily. is there. Therefore, in the sample adaptive offset filter according to the present embodiment, the higher the frame rate, the more the number of offset value candidates in the P picture and B picture can be restricted, and the processing amount is further reduced. It tends to be possible.
- FIG. 35 is a block diagram illustrating an example of a hardware configuration of an encoder to which the above-described embodiment can be applied.
- the encoder 800 includes a system bus 810, an image processing chip 820, and an off-chip memory 890.
- the image processing chip 820 includes n (n is 1 or more) processing circuits 830-1, 830-2,..., 830-n, a reference buffer 840, a system bus interface 850, and a local bus interface 860.
- the system bus 810 provides a communication path between the image processing chip 820 and an external module (for example, a central control function, an application function, a communication interface, or a user interface).
- the processing circuits 830-1, 830-2,..., 830-n are connected to the system bus 810 via the system bus interface 850 and to the off-chip memory 890 via the local bus interface 860.
- the processing circuits 830-1, 830-2,..., 830-n can also access a reference buffer 840 that may correspond to an on-chip memory (eg, SRAM).
- the off-chip memory 890 may be a frame memory that stores image data processed by the image processing chip 820, for example.
- the processing circuit 830-1 is the intra prediction unit 30
- the processing circuit 830-2 is the inter prediction unit 35
- the other processing circuits are the orthogonal transform unit 14, and the other processing circuit is a lossless code. It can correspond to the conversion unit 16.
- Another processing circuit may correspond to the loop filter 24.
- each of the deblock filter 200, the sample adaptive offset filter 300, and the adaptive loop filter 400 constituting the loop filter 24 may be configured as a separate processing circuit. Note that these processing circuits may be formed not on the same image processing chip 820 but on separate chips.
- a transmission device that transmits an encoded video stream using a satellite line, a cable TV line, the Internet, a cellular communication network, or the like, or an encoded video stream such as an optical disk, a magnetic disk, or a flash memory
- the present invention can be applied to various electronic devices such as a recording device for recording on a medium.
- three application examples will be described.
- FIG. 36 illustrates an example of a schematic configuration of a mobile phone to which the above-described embodiment is applied.
- a cellular phone 920 includes an antenna 921, a communication unit 922, an audio codec 923, a speaker 924, a microphone 925, a camera unit 926, an image processing unit 927, a demultiplexing unit 928, a recording / reproducing unit 929, a display unit 930, a control unit 931, an operation Part 932, sensor part 933, bus 934, and battery 935.
- the antenna 921 is connected to the communication unit 922.
- the speaker 924 and the microphone 925 are connected to the audio codec 923.
- the operation unit 932 is connected to the control unit 931.
- the bus 934 connects the communication unit 922, the audio codec 923, the camera unit 926, the image processing unit 927, the demultiplexing unit 928, the recording / reproducing unit 929, the display unit 930, the control unit 931, and the sensor unit 933 to each other.
- the mobile phone 920 has various operation modes including a voice call mode, a data communication mode, a shooting mode, and a videophone mode, and is used for sending and receiving voice signals, sending and receiving e-mail or image data, taking images, and recording data. Perform the action.
- the analog voice signal generated by the microphone 925 is supplied to the voice codec 923.
- the audio codec 923 converts an analog audio signal into audio data, A / D converts the compressed audio data, and compresses it. Then, the audio codec 923 outputs the compressed audio data to the communication unit 922.
- the communication unit 922 encodes and modulates the audio data and generates a transmission signal. Then, the communication unit 922 transmits the generated transmission signal to a base station (not shown) via the antenna 921. In addition, the communication unit 922 amplifies a radio signal received via the antenna 921 and performs frequency conversion to acquire a received signal.
- the communication unit 922 demodulates and decodes the received signal to generate audio data, and outputs the generated audio data to the audio codec 923.
- the audio codec 923 expands the audio data and performs D / A conversion to generate an analog audio signal. Then, the audio codec 923 supplies the generated audio signal to the speaker 924 to output audio.
- the control unit 931 generates character data constituting the e-mail in response to an operation by the user via the operation unit 932.
- the control unit 931 causes the display unit 930 to display characters.
- the control unit 931 generates e-mail data in response to a transmission instruction from the user via the operation unit 932, and outputs the generated e-mail data to the communication unit 922.
- the communication unit 922 encodes and modulates email data and generates a transmission signal. Then, the communication unit 922 transmits the generated transmission signal to a base station (not shown) via the antenna 921.
- the communication unit 922 amplifies a radio signal received via the antenna 921 and performs frequency conversion to acquire a received signal.
- the communication unit 922 demodulates and decodes the received signal to restore the email data, and outputs the restored email data to the control unit 931.
- the control unit 931 displays the content of the electronic mail on the display unit 930 and stores the electronic mail data in the storage medium of the recording / reproducing unit 929.
- the recording / reproducing unit 929 has an arbitrary readable / writable storage medium.
- the storage medium may be a built-in storage medium such as a RAM or a flash memory, or an externally mounted storage medium such as a hard disk, a magnetic disk, a magneto-optical disk, an optical disk, a USB memory, or a memory card. May be.
- the camera unit 926 images a subject to generate image data, and outputs the generated image data to the image processing unit 927.
- the image processing unit 927 encodes the image data input from the camera unit 926 and stores the encoded stream in the storage medium of the recording / playback unit 929.
- the demultiplexing unit 928 multiplexes the video stream encoded by the image processing unit 927 and the audio stream input from the audio codec 923, and the multiplexed stream is the communication unit 922. Output to.
- the communication unit 922 encodes and modulates the stream and generates a transmission signal. Then, the communication unit 922 transmits the generated transmission signal to a base station (not shown) via the antenna 921.
- the communication unit 922 amplifies a radio signal received via the antenna 921 and performs frequency conversion to acquire a received signal.
- These transmission signal and reception signal may include an encoded bit stream.
- the communication unit 922 demodulates and decodes the received signal to restore the stream, and outputs the restored stream to the demultiplexing unit 928.
- the demultiplexing unit 928 separates the video stream and the audio stream from the input stream, and outputs the video stream to the image processing unit 927 and the audio stream to the audio codec 923.
- the image processing unit 927 decodes the video stream and generates video data.
- the video data is supplied to the display unit 930, and a series of images is displayed on the display unit 930.
- the audio codec 923 decompresses the audio stream and performs D / A conversion to generate an analog audio signal. Then, the audio codec 923 supplies the generated audio signal to the speaker 924 to output audio.
- Sensor unit 933 includes a sensor group such as an acceleration sensor and a gyro sensor, and outputs an index representing the movement of mobile phone 920.
- the battery 935 includes a communication unit 922, an audio codec 923, a camera unit 926, an image processing unit 927, a demultiplexing unit 928, a recording / reproducing unit 929, a display unit 930, and a control via a power supply line which is omitted in the drawing. Power is supplied to the unit 931 and the sensor unit 933.
- the image processing unit 927 has the function of the image encoding device 10 according to the above-described embodiment. Therefore, in the mobile phone 920, the amount of cost calculation for determining the SAO mode to be applied and the offset value to be applied can be reduced, and consequently the power consumption and circuit scale of the mobile phone 920 can be reduced. It becomes possible.
- FIG. 37 shows an example of a schematic configuration of a recording / reproducing apparatus to which the above-described embodiment is applied.
- the recording / reproducing device 940 encodes audio data and video data of a received broadcast program and records the encoded data on a recording medium.
- the recording / reproducing device 940 may encode audio data and video data acquired from another device and record them on a recording medium, for example.
- the recording / reproducing device 940 reproduces data recorded on the recording medium on a monitor and a speaker, for example, in accordance with a user instruction. At this time, the recording / reproducing device 940 decodes the audio data and the video data.
- the recording / reproducing apparatus 940 includes a tuner 941, an external interface 942, an encoder 943, an HDD (Hard Disk Drive) 944, a disk drive 945, a selector 946, a decoder 947, an OSD (On-Screen Display) 948, a control unit 949, and a user interface. 950.
- Tuner 941 extracts a signal of a desired channel from a broadcast signal received via an antenna (not shown), and demodulates the extracted signal. Then, the tuner 941 outputs the encoded bit stream obtained by the demodulation to the selector 946. That is, the tuner 941 has a role as a transmission unit in the recording / reproducing apparatus 940.
- the external interface 942 is an interface for connecting the recording / reproducing apparatus 940 to an external device or a network.
- the external interface 942 may be, for example, an IEEE 1394 interface, a network interface, a USB interface, or a flash memory interface.
- video data and audio data received via the external interface 942 are input to the encoder 943. That is, the external interface 942 serves as a transmission unit in the recording / reproducing device 940.
- the encoder 943 encodes video data and audio data when the video data and audio data input from the external interface 942 are not encoded. Then, the encoder 943 outputs the encoded bit stream to the selector 946.
- the HDD 944 records an encoded bit stream in which content data such as video and audio is compressed, various programs, and other data on an internal hard disk. Also, the HDD 944 reads out these data from the hard disk when playing back video and audio.
- the disk drive 945 performs recording and reading of data to and from the mounted recording medium.
- the recording medium loaded in the disk drive 945 may be, for example, a DVD disk (DVD-Video, DVD-RAM, DVD-R, DVD-RW, DVD + R, DVD + RW, etc.) or a Blu-ray (registered trademark) disk. .
- the selector 946 selects an encoded bit stream input from the tuner 941 or the encoder 943 when recording video and audio, and outputs the selected encoded bit stream to the HDD 944 or the disk drive 945. In addition, the selector 946 outputs the encoded bit stream input from the HDD 944 or the disk drive 945 to the decoder 947 during video and audio reproduction.
- the decoder 947 decodes the encoded bit stream and generates video data and audio data. Then, the decoder 947 outputs the generated video data to the OSD 948. The decoder 904 outputs the generated audio data to an external speaker.
- the OSD 948 reproduces the video data input from the decoder 947 and displays the video. Further, the OSD 948 may superimpose a GUI image such as a menu, a button, or a cursor on the video to be displayed.
- a GUI image such as a menu, a button, or a cursor
- the control unit 949 includes a processor such as a CPU and memories such as a RAM and a ROM.
- the memory stores a program executed by the CPU, program data, and the like.
- the program stored in the memory is read and executed by the CPU when the recording / reproducing apparatus 940 is activated, for example.
- the CPU controls the operation of the recording / reproducing device 940 according to an operation signal input from the user interface 950, for example, by executing the program.
- the user interface 950 is connected to the control unit 949.
- the user interface 950 includes, for example, buttons and switches for the user to operate the recording / reproducing device 940, a remote control signal receiving unit, and the like.
- the user interface 950 detects an operation by the user via these components, generates an operation signal, and outputs the generated operation signal to the control unit 949.
- the encoder 943 has the function of the image encoding apparatus 10 according to the above-described embodiment.
- the processing amount of cost calculation for determining the SAO mode to be applied and the offset value to be applied is reduced, and as a result, the power consumption and circuit scale of the recording / reproducing apparatus 940 are reduced. Can be reduced.
- FIG. 38 illustrates an example of a schematic configuration of an imaging apparatus to which the above-described embodiment is applied.
- the imaging device 960 images a subject to generate an image, encodes the image data, and records it on a recording medium.
- the imaging device 960 includes an optical block 961, an imaging unit 962, a signal processing unit 963, an image processing unit 964, a display unit 965, an external interface 966, a memory 967, a media drive 968, an OSD 969, a control unit 970, a user interface 971, and a sensor 972. , A bus 973 and a battery 974.
- the optical block 961 is connected to the imaging unit 962.
- the imaging unit 962 is connected to the signal processing unit 963.
- the display unit 965 is connected to the image processing unit 964.
- the user interface 971 is connected to the control unit 970.
- the bus 973 connects the image processing unit 964, the external interface 966, the memory 967, the media drive 968, the OSD 969, the control unit 970, and the sensor 972 to each other.
- the optical block 961 includes a focus lens and a diaphragm mechanism.
- the optical block 961 forms an optical image of the subject on the imaging surface of the imaging unit 962.
- the imaging unit 962 includes an image sensor such as a CCD or a CMOS, and converts an optical image formed on the imaging surface into an image signal as an electrical signal by photoelectric conversion. Then, the imaging unit 962 outputs the image signal to the signal processing unit 963.
- the signal processing unit 963 performs various camera signal processing such as knee correction, gamma correction, and color correction on the image signal input from the imaging unit 962.
- the signal processing unit 963 outputs the image data after the camera signal processing to the image processing unit 964.
- the image processing unit 964 encodes the image data input from the signal processing unit 963 and generates encoded data. Then, the image processing unit 964 outputs the generated encoded data to the external interface 966 or the media drive 968. The image processing unit 964 also decodes encoded data input from the external interface 966 or the media drive 968 to generate image data. Then, the image processing unit 964 outputs the generated image data to the display unit 965. In addition, the image processing unit 964 may display the image by outputting the image data input from the signal processing unit 963 to the display unit 965. Further, the image processing unit 964 may superimpose display data acquired from the OSD 969 on an image output to the display unit 965.
- the OSD 969 generates a GUI image such as a menu, a button, or a cursor, for example, and outputs the generated image to the image processing unit 964.
- the external interface 966 is configured as a USB input / output terminal, for example.
- the external interface 966 connects the imaging device 960 and a printer, for example, when printing an image.
- a drive is connected to the external interface 966 as necessary.
- a removable medium such as a magnetic disk or an optical disk is attached to the drive, and a program read from the removable medium can be installed in the imaging device 960.
- the external interface 966 may be configured as a network interface connected to a network such as a LAN or the Internet. That is, the external interface 966 has a role as a transmission unit in the imaging device 960.
- the recording medium mounted on the media drive 968 may be any readable / writable removable medium such as a magnetic disk, a magneto-optical disk, an optical disk, or a semiconductor memory. Further, a recording medium may be fixedly attached to the media drive 968, and a non-portable storage unit such as an internal hard disk drive or an SSD (Solid State Drive) may be configured.
- a non-portable storage unit such as an internal hard disk drive or an SSD (Solid State Drive) may be configured.
- the control unit 970 includes a processor such as a CPU and memories such as a RAM and a ROM.
- the memory stores a program executed by the CPU, program data, and the like.
- the program stored in the memory is read and executed by the CPU when the imaging device 960 is activated, for example.
- the CPU controls the operation of the imaging device 960 according to an operation signal input from the user interface 971, for example, by executing the program.
- the user interface 971 is connected to the control unit 970.
- the user interface 971 includes, for example, buttons and switches for the user to operate the imaging device 960.
- the user interface 971 detects an operation by the user via these components, generates an operation signal, and outputs the generated operation signal to the control unit 970.
- the sensor 972 includes a sensor group such as an acceleration sensor and a gyro sensor, and outputs an index representing the movement of the imaging device 960.
- the battery 974 supplies power to the imaging unit 962, the signal processing unit 963, the image processing unit 964, the display unit 965, the media drive 968, the OSD 969, the control unit 970, and the sensor 972 via a power supply line that is omitted in the drawing. Supply.
- the image processing unit 964 has the function of the image encoding device 10 according to the above-described embodiment. Thereby, in the imaging device 960, the processing amount of cost calculation for determining the SAO mode to be applied and the offset value to be applied is reduced, and consequently, the power consumption and circuit scale of the imaging device 960 are reduced. It becomes possible to do.
- the technology according to the present disclosure includes various implementation levels such as, for example, a processor such as a system LSI (Large Scale Integration), a module using a plurality of processors, a unit using a plurality of modules, and a set in which other functions are further added to the unit. May be implemented.
- a processor such as a system LSI (Large Scale Integration)
- a module using a plurality of processors a module using a plurality of processors
- a unit using a plurality of modules and a set in which other functions are further added to the unit. May be implemented.
- FIG. 39 is a block diagram illustrating an example of a schematic configuration of a video set.
- the operator provides a component having a single function or a plurality of functions related to each other, or provides a set having an integrated function group.
- the video set 1300 shown in FIG. 39 is a set that includes components for encoding and / or decoding images (which may be either) and components having other functions related to these functions. is there.
- a video set 1300 includes a module group including a video module 1311, an external memory 1312, a power management module 1313, and a front-end module 1314, and a related function including a connectivity module 1321, a camera 1322, and a sensor 1323.
- a device group including a video module 1311, an external memory 1312, a power management module 1313, and a front-end module 1314, and a related function including a connectivity module 1321, a camera 1322, and a sensor 1323.
- a module is a component formed by aggregating parts for several functions related to each other.
- the module may have any physical configuration.
- the module may be formed by integrally arranging a plurality of processors having the same or different functions, electronic circuit elements such as resistors and capacitors, and other devices on a circuit board.
- Another module may be formed by combining another module or a processor with the module.
- the video module 1311 includes an application processor 1331, a video processor 1332, a broadband modem 1333, and a baseband module 1334.
- the processor may be, for example, an SOC (System On a Chip) or a system LSI (Large Scale Integration).
- the SoC or the system LSI may include hardware that implements predetermined logic.
- the SoC or the system LSI may include a CPU and a non-transitory tangible medium that stores a program for causing the CPU to execute a predetermined function.
- the program is stored in, for example, a ROM, and can be executed by the CPU after being read into a RAM (Random Access Memory) at the time of execution.
- Application processor 1331 is a processor that executes an application related to image processing.
- An application executed in the application processor 1331 may control, for example, the video processor 1332 and other components in addition to some calculation for image processing.
- the video processor 1332 is a processor having functions relating to image encoding and decoding. Note that the application processor 1331 and the video processor 1332 may be integrated into one processor (see a dotted line 1341 in the figure).
- the broadband modem 1333 is a module that performs processing related to communication via a network such as the Internet or a public switched telephone network.
- the broadband modem 1333 performs digital modulation for converting a digital signal including transmission data into an analog signal, and digital demodulation for converting an analog signal including reception data into a digital signal.
- Transmission data and reception data processed by the broadband modem 1333 may include arbitrary information such as image data, an encoded stream of image data, application data, an application program, and setting data, for example.
- the baseband module 1334 is a module that performs baseband processing for an RF (Radio Frequency) signal transmitted / received via the front end module 1314. For example, the baseband module 1334 modulates a transmission baseband signal including transmission data, converts the frequency into an RF signal, and outputs the RF signal to the front end module 1314. In addition, the baseband module 1334 frequency-converts and demodulates the RF signal input from the front end module 1314 to generate a reception baseband signal including reception data.
- RF Radio Frequency
- the external memory 1312 is a memory device provided outside the video module 1311 and accessible from the video module 1311.
- the external memory 1312 includes a relatively inexpensive and large-capacity semiconductor memory such as a DRAM (Dynamic Random Access Memory). obtain.
- DRAM Dynamic Random Access Memory
- the power management module 1313 is a module that controls power supply to the video module 1311 and the front end module 1314.
- the front end module 1314 is a module that is connected to the baseband module 1334 and provides a front end function.
- the front end module 1314 includes an antenna unit 1351, a filter 1352, and an amplification unit 1353.
- the antenna unit 1351 includes one or more antenna elements that transmit or receive radio signals and related components such as an antenna switch.
- the antenna unit 1351 transmits the RF signal amplified by the amplification unit 1353 as a radio signal. Further, the antenna unit 1351 outputs an RF signal received as a radio signal to the filter 1352 and causes the filter 1352 to filter the RF signal.
- the connectivity module 1321 is a module having a function related to the external connection of the video set 1300.
- the connectivity module 1321 may support any external connection protocol.
- the connectivity module 1321 is a sub-module that supports a wireless connection protocol such as Bluetooth (registered trademark), IEEE 802.11 (for example, Wi-Fi (registered trademark)), NFC (Near Field Communication), or IrDA (InfraRed Data Association). And a corresponding antenna.
- the connectivity module 1321 may include a submodule that supports a wired connection protocol such as USB (Universal Serial Bus) or HDMI (High-Definition Multimedia Interface) and a corresponding connection terminal.
- USB Universal Serial Bus
- HDMI High-Definition Multimedia Interface
- the connectivity module 1321 writes and stores data to a storage medium such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory, or a storage device such as an SSD (Solid State Drive) or NAS (Network Attached Storage). A drive for reading data from the medium may be included.
- the connectivity module 1321 may include these storage media or storage devices.
- the connectivity module 1321 may provide connectivity to a display that outputs an image or a speaker that outputs sound.
- the camera 1322 is a module that acquires a captured image by imaging a subject. A series of captured images acquired by the camera 1322 constitutes video data. Video data generated by the camera 1322 may be encoded by the video processor 1332 as necessary and stored by the external memory 1312 or a storage medium connected to the connectivity module 1321, for example.
- the sensor 1323 is, for example, a GPS sensor, an audio sensor, an ultrasonic sensor, an optical sensor, an illuminance sensor, an infrared sensor, an angular velocity sensor, an angular acceleration sensor, a velocity sensor, an acceleration sensor, a gyro sensor, a geomagnetic sensor, an impact sensor, or a temperature sensor.
- a module that may include one or more of them.
- the sensor data generated by the sensor 1323 can be used by the application processor 1331 to execute an application, for example.
- the technology according to the present disclosure can be used in the video processor 1332, for example.
- the video set 1300 is a set to which the technology according to the present disclosure is applied.
- the video set 1300 may be realized as various types of devices that process image data.
- the video set 1300 may correspond to the television device 900, the mobile phone 920, the recording / reproducing device 940, or the imaging device 960 described with reference to FIGS.
- the video set 1300 is a terminal device such as the PC 1004, the AV device 1005, the tablet device 1006, or the mobile phone 1007 in the data transmission system 1000 described with reference to FIG. 24, and the broadcast in the data transmission system 1100 described with reference to FIG. It may correspond to the station 1101 or the terminal device 1102 or the imaging device 1201 or the stream storage device 1202 in the data transmission system 1200 described with reference to FIG.
- FIG. 40 is a block diagram illustrating an example of a schematic configuration of the video processor 1332.
- the video processor 1332 encodes an input video signal and an input audio signal to generate video data and audio data, and decodes the encoded video data and audio data to generate an output video signal and an output audio signal. And a function to perform.
- the video processor 1332 includes a video input processing unit 1401, a first scaling unit 1402, a second scaling unit 1403, a video output processing unit 1404, a frame memory 1405, a memory control unit 1406, an encoding / decoding engine 1407, Video ES (Elementary Stream) buffers 1408A and 1408B, audio ES buffers 1409A and 1409B, an audio encoder 1410, an audio decoder 1411, a multiplexer (MUX) 1412, a demultiplexer (DEMUX) 1413, and a stream buffer 1414 .
- MUX multiplexer
- DEMUX demultiplexer
- the video input processing unit 1401 converts, for example, a video signal input from the connectivity module 1321 into digital image data.
- the first scaling unit 1402 performs format conversion and scaling (enlargement / reduction) on the image data input from the video input processing unit 1401.
- the second scaling unit 1403 performs format conversion and scaling (enlargement / reduction) on the image data output to the video output processing unit 1404.
- the format conversion in the first scaling unit 1402 and the second scaling unit 1403 is, for example, conversion between 4: 2: 2 / Y-Cb-Cr system and 4: 2: 0 / Y-Cb-Cr system. It may be.
- the video output processing unit 1404 converts the digital image data into an output video signal and outputs the output video signal to, for example, the connectivity module 1321.
- the frame memory 1405 is a memory device that stores image data shared by the video input processing unit 1401, the first scaling unit 1402, the second scaling unit 1403, the video output processing unit 1404, and the encoding / decoding engine 1407.
- the frame memory 1405 may be realized using a semiconductor memory such as a DRAM, for example.
- the memory control unit 1406 controls access to the frame memory 1405 according to the access schedule for the frame memory 1405 stored in the access management table 1406A based on the synchronization signal input from the encode / decode engine 1407.
- the access management table 1406A is updated by the memory control unit 1406 depending on processing executed in the encoding / decoding engine 1407, the first scaling unit 1402, the second scaling unit 1403, and the like.
- the encoding / decoding engine 1407 performs an encoding process for encoding image data to generate an encoded video stream, and a decoding process for decoding image data from the encoded video stream. For example, the encoding / decoding engine 1407 encodes the image data read from the frame memory 1405 and sequentially writes the encoded video stream to the video ES buffer 1408A. Also, for example, the encoded video stream is sequentially read from the video ES buffer 1408B, and the decoded image data is written in the frame memory 1405.
- the encoding / decoding engine 1407 can use the frame memory 1405 as a work area in these processes. For example, the encoding / decoding engine 1407 outputs a synchronization signal to the memory control unit 1406 at the timing of starting processing of each LCU (Largest Coding Unit).
- the video ES buffer 1408A buffers the encoded video stream generated by the encoding / decoding engine 1407.
- the encoded video stream buffered by the video ES buffer 1408A is output to the multiplexing unit 1412.
- the video ES buffer 1408B buffers the encoded video stream input from the demultiplexer 1413.
- the encoded video stream buffered by the video ES buffer 1408B is output to the encoding / decoding engine 1407.
- the audio ES buffer 1409A buffers the encoded audio stream generated by the audio encoder 1410.
- the encoded audio stream buffered by the audio ES buffer 1409A is output to the multiplexing unit 1412.
- the audio ES buffer 1409B buffers the encoded audio stream input from the demultiplexer 1413.
- the encoded audio stream buffered by the audio ES buffer 1409B is output to the audio decoder 1411.
- the audio encoder 1410 digitally converts the input audio signal input from the connectivity module 1321, for example, and encodes the input audio signal according to an audio encoding method such as an MPEG audio method or an AC3 (Audio Code number 3) method.
- the audio encoder 1410 sequentially writes the encoded audio stream to the audio ES buffer 1409A.
- the audio decoder 1411 decodes audio data from the encoded audio stream input from the audio ES buffer 1409B and converts it into an analog signal.
- the audio decoder 1411 outputs an audio signal to the connectivity module 1321, for example, as a reproduced analog audio signal.
- the multiplexing unit 1412 multiplexes the encoded video stream and the encoded audio stream to generate a multiplexed bit stream.
- the format of the multiplexed bit stream may be any format.
- the multiplexing unit 1412 may add predetermined header information to the bit stream. Further, the multiplexing unit 1412 may convert the stream format. For example, the multiplexing unit 1412 can generate a transport stream (a bit stream in a transfer format) in which an encoded video stream and an encoded audio stream are multiplexed. Further, the multiplexing unit 1412 can generate file data (recording format data) in which the encoded video stream and the encoded audio stream are multiplexed.
- the demultiplexing unit 1413 demultiplexes the encoded video stream and the encoded audio stream from the multiplexed bit stream by a method reverse to the multiplexing performed by the multiplexing unit 1412. That is, the demultiplexer 1413 extracts (or separates) the video stream and the audio stream from the bit stream read from the stream buffer 1414.
- the demultiplexer 1413 may convert the stream format (inverse conversion). For example, the demultiplexing unit 1413 may acquire a transport stream that can be input from the connectivity module 1321 or the broadband modem 1333 via the stream buffer 1414, and convert the transport stream into a video stream and an audio stream. . Further, the demultiplexing unit 1413 may acquire file data read from the storage medium by the connectivity module 1321 via the stream buffer 1414 and convert the file data into a video stream and an audio stream.
- Stream buffer 1414 buffers the bit stream.
- the stream buffer 1414 buffers the transport stream input from the multiplexing unit 1412 and outputs the transport stream to, for example, the connectivity module 1321 or the broadband modem 1333 at a predetermined timing or in response to an external request.
- the stream buffer 1414 buffers the file data input from the multiplexing unit 1412 and records the file data to the connectivity module 1321, for example, at a predetermined timing or in response to an external request. Output to.
- the stream buffer 1414 buffers a transport stream acquired through, for example, the connectivity module 1321 or the broadband modem 1333, and demultiplexes the transport stream at a predetermined timing or in response to an external request.
- the stream buffer 1414 buffers file data read from the storage medium by the connectivity module 1321, for example, and outputs the file data to the demultiplexing unit 1413 at a predetermined timing or in response to an external request. To do.
- the technology according to the present disclosure can be used in the encode / decode engine 1407, for example.
- the video processor 1332 is a chip or a module to which the technology according to the present disclosure is applied.
- FIG. 41 is a block diagram showing another example of a schematic configuration of the video processor 1332.
- the video processor 1332 has a function of encoding and decoding video data by a predetermined method.
- the video processor 1332 includes a control unit 1511, a display interface 1512, a display engine 1513, an image processing engine 1514, an internal memory 1515, a codec engine 1516, a memory interface 1517, a multiplexing / demultiplexing unit 1518, a network.
- An interface 1519 and a video interface 1520 are included.
- the control unit 1511 controls operations of various processing units in the video processor 1332 such as the display interface 1512, the display engine 1513, the image processing engine 1514, and the codec engine 1516.
- the control unit 1511 includes, for example, a main CPU 1531, a sub CPU 1532, and a system controller 1533.
- the main CPU 1531 executes a program for controlling the operation of each processing unit in the video processor 1332.
- the main CPU 1531 supplies a control signal generated through execution of the program to each processing unit.
- the sub CPU 1532 plays an auxiliary role of the main CPU 1531. For example, the sub CPU 1532 executes a child process and a subroutine of a program executed by the main CPU 1531.
- the system controller 1533 manages execution of programs by the main CPU 1531 and the sub CPU 1532.
- the display interface 1512 outputs the image data to, for example, the connectivity module 1321 under the control of the control unit 1511.
- the display interface 1512 outputs an analog image signal converted from digital image data or the digital image data itself to a display connected to the connectivity module 1321.
- the display engine 1513 executes format conversion, size conversion, color gamut conversion, and the like for the image data so that the attributes of the image data match the specifications of the output display.
- the image processing engine 1514 performs image processing that may include filtering processing having an object such as image quality improvement on the image data under the control of the control unit 1511.
- the internal memory 1515 is a memory device provided inside the video processor 1332 that is shared by the display engine 1513, the image processing engine 1514, and the codec engine 1516.
- the internal memory 1515 is used when inputting / outputting image data among the display engine 1513, the image processing engine 1514, and the codec engine 1516, for example.
- the internal memory 1515 may be any type of memory device.
- the internal memory 1515 may have a relatively small memory size for storing block unit image data and associated parameters.
- the internal memory 1515 may be a memory having a small capacity but a fast response speed such as SRAM (Static Random Access Memory) (for example, relative to the external memory 1312).
- SRAM Static Random Access Memory
- the codec engine 1516 performs an encoding process for encoding image data to generate an encoded video stream, and a decoding process for decoding image data from the encoded video stream.
- the image encoding scheme supported by the codec engine 1516 may be any one or a plurality of schemes.
- the codec engine 1516 includes an MPEG-2 Video block 1541, an AVC / H. H.264 block 1542, HEVC / H. H.265 block 1543, HEVC / H. 265 (scalable) block 1544, HEVC / H. 265 (multi-view) block 1545 and MPEG-DASH block 1551.
- Each of these functional blocks encodes and decodes image data according to a corresponding image encoding method.
- the MPEG-DASH block 1551 is a functional block that enables image data to be transmitted according to the MPEG-DASH system.
- the MPEG-DASH block 1551 executes generation of a stream conforming to the standard specification and control of transmission of the generated stream.
- the encoding and decoding of the image data to be transmitted may be performed by other functional blocks included in the codec engine 1516.
- the memory interface 1517 is an interface for connecting the video processor 1332 to the external memory 1312. Data generated by the image processing engine 1514 or the codec engine 1516 is output to the external memory 1312 via the memory interface 1517. Data input from the external memory 1312 is supplied to the image processing engine 1514 or the codec engine 1516 via the memory interface 1517.
- the multiplexing / demultiplexing unit 1518 multiplexes and demultiplexes the encoded video stream and the related bit stream. At the time of multiplexing, the multiplexing / demultiplexing unit 1518 may add predetermined header information to the multiplexed stream. Also, at the time of demultiplexing, the multiplexing / demultiplexing unit 1518 may add predetermined header information to each separated stream. That is, the multiplexing / demultiplexing unit 1518 can perform format conversion together with multiplexing or demultiplexing.
- the multiplexing / demultiplexing unit 1518 performs conversion and inverse conversion between a plurality of bit streams and a transport stream, which is a multiplexed stream having a transfer format, and a plurality of bit streams and a recording format. You may support conversion and reverse conversion to and from file data.
- the network interface 1519 is an interface for connecting the video processor 1332 to the broadband modem 1333 or the connectivity module 1321, for example.
- the video interface 1520 is an interface for connecting the video processor 1332 to the connectivity module 1321 or the camera 1322, for example.
- the technology according to the present disclosure may be used in, for example, the codec engine 1516.
- the video processor 1332 is a chip or a module to which the technology according to the present disclosure is applied.
- the configuration of the video processor 1332 is not limited to the two examples described above.
- the video processor 1332 may be realized as a single semiconductor chip, or may be realized as a plurality of semiconductor chips.
- the video processor 1332 may be realized as a three-dimensional stacked LSI formed by stacking a plurality of semiconductors, or a combination of a plurality of LSIs.
- HEVC scalable coding technology is also referred to as SHVC (Scalable HEVC).
- SHVC Scalable HEVC
- the above-described embodiments can be applied to individual layers (base layer and enhancement layer) included in a multi-layer encoded stream. Information regarding the determined SAO mode and offset value may be generated and encoded for each layer, or may be reused between layers.
- the technology according to the present disclosure may be applied to a multi-view encoding technology.
- the above-described embodiments can be applied to individual views (base view and non-base view) included in a multi-view encoded stream. Information regarding the determined SAO mode and offset value may be generated and encoded for each view, or may be reused between views.
- CU, PU, and TU described in this specification mean a logical unit that also includes syntax associated with individual blocks in HEVC. When focusing only on individual blocks as a part of an image, these may be replaced by the terms CB (Coding Block), PB (Prediction Block), and TB (Transform Block), respectively.
- the CB is formed by hierarchically dividing a CTB (Coding Tree Block) into a quad-tree shape. An entire quadtree corresponds to CTB, and a logical unit corresponding to CTB is called CTU (Coding Tree Unit).
- the method for transmitting such information is not limited to such an example.
- these pieces of information may be transmitted or recorded as separate data associated with the encoded bitstream without being multiplexed into the encoded bitstream.
- the term “associate” means that an image (which may be a part of an image such as a slice or a block) included in the bitstream and information corresponding to the image can be linked at the time of decoding. Means. That is, information may be transmitted on a transmission path different from that of the image (or bit stream).
- Information may be recorded on a recording medium (or another recording area of the same recording medium) different from the image (or bit stream). Furthermore, the information and the image (or bit stream) may be associated with each other in an arbitrary unit such as a plurality of frames, one frame, or a part of the frame.
- An image processing apparatus comprising: (2) The setting unit limits the number of offset value candidates in the case of a second bit depth greater than the first bit depth to the number of candidates for the offset value in the case of the first bit depth. The image processing apparatus according to (1).
- the setting unit limits the number of candidates for the offset value in the case of the second bit depth to the number of values that the offset value can take in the case of the first bit depth.
- Possible values of the offset value in the case of the first bit depth are 0 to 7,
- the setting unit sets the offset value candidates to be applied to pixels of the decoded image according to a quantization parameter used when the image is quantized. .
- the setting unit limits a maximum value of the candidate offset values to be applied to pixels of the decoded image according to the quantization parameter.
- the setting unit sets the offset value candidate so that the maximum value of the offset value candidate is smaller as the quantization parameter is smaller.
- the image processing apparatus sets an interval between adjacent candidates according to the quantization parameter.
- the setting unit sets the interval so that the interval between adjacent candidates increases as the quantization parameter increases.
- the image processing apparatus sets candidates for the offset value to be applied to pixels of the decoded image according to the feature amount of the image.
- the feature amount is a variance value of pixel values of pixels in the image
- the image processing apparatus sets candidates for the offset value to be applied to the pixels of the decoded image according to the variance value.
- the image processing apparatus (12) The image processing apparatus according to (11), wherein the setting unit sets a smaller value as a candidate for the offset value among values that the offset value can take as the variance value decreases. (13) The image processing apparatus according to (1), further comprising: an encoding unit that encodes the image using a decoded image on which the filtering process has been performed by the filter processing unit. (14) The image processing apparatus according to (13), wherein the encoding unit encodes the image in units of CB (Coding Block) obtained by recursively dividing CTB (Coding Tree Block). (15) The image processing apparatus according to (14), wherein the filter processing unit executes filter processing that applies the offset value in units of the CTB.
- CB Coding Block
- the image processing apparatus (16) The image processing apparatus according to (1), wherein the setting unit limits the number of offset value candidates according to a picture type of the decoded image.
- the setting unit determines the number of offset value candidates as the offset in the other decoded image serving as a reference destination.
- the image processing apparatus according to (16), wherein the number is limited to the number of value candidates.
- a processor sets the offset value to be applied to the decoded pixel of the decoded image from offset value candidates limited according to the bit depth of the image; Executing a filtering process to apply the set offset value to the pixels of the decoded image; Including an image processing method.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
サンプル適応オフセット(SAO:Sample Adaptive Offset)では、バンドオフセットとエッジオフセットと呼ばれる技術に基づく複数のモードのうち、最適なモードを選択することで、符号化効率の向上が図られている。しかしながら、サンプル適応オフセットは、最適なモード及びオフセット値を設定する際の処理量が大きくなる傾向にあり、回路規模や消費電力の増加の要因となる場合があった。そこで、サンプル適応オフセットのコスト計算の処理量を低減することを可能にすることを提案する。本発明によれば、画像のビット深度に応じて制限されたオフセット値の候補から、前記画像の画素に対して適用する前記オフセット値を設定する制御部と、前記画像の画素に対して、前記制御部により設定された前記オフセット値を適用するためのフィルタ処理を実行するフィルタ処理部と、を備える、画像処理装置が提供される。
Description
本開示は、画像処理装置及び画像処理方法に関する。
現在、H.264/AVCよりも符号化効率をさらに向上することを目的として、ITU-TとISO/IECとの共同の標準化団体であるJCTVC(Joint Collaboration Team-Video Coding)により、HEVC(High Efficiency Video Coding)と呼ばれる画像符号化方式の標準化が進められている(例えば、非特許文献1参照)。
HEVCは、MPEG2及びAVC(Advanced Video Coding)などの既存の画像符号化方式と同様、シングルレイヤの符号化のみならず、スケーラブル符号化をも提供する。HEVCのスケーラブル符号化技術を、SHVC(Scalable HEVC)ともいう(例えば、非特許文献2参照)。スケーラブル符号化とは、一般には、粗い画像信号を伝送するレイヤと精細な画像信号を伝送するレイヤとを階層的に符号化する技術をいう。
HEVCの標準仕様の初版は2013年の年初に公表されたが、上述したSHVC以外にも、符号化ツールの充実化などの様々な観点での仕様の拡張が継続的に行われている(例えば、非特許文献3参照)。特に、HEVCから、サンプル適応オフセット(SAO:Sample Adaptive Offset)フィルタと呼ばれる技術を適用されている。このサンプル適応オフセットフィルタでは、バンドオフセットとエッジオフセットと呼ばれる技術に基づく複数のモードのうち、最適なモードを選択することで、符号化効率の向上が図られている。
Benjamin Bross, el. al, "High Efficiency Video Coding (HEVC) text specification draft 10 (for FDIS & Consent)"(JCTVC-L1003_v4, 2013年1月14-23日)
Jianle Chen, el. al, "High efficiency video coding (HEVC) scalable extensions Draft 5"(JCTVC-P1008_v4, 2014年1月9-17日)
David Flynn, el. al, "High Efficiency Video Coding (HEVC) Range Extensions text specification: Draft 5"(JCTVC-O1005_v2, 2013年10月23-11月1日)
一方で、サンプル適応オフセットフィルタは、最適なモード及びオフセット値を設定する際の処理量が大きくなる傾向にあり、回路規模や消費電力の増加の要因となる場合がある。
そこで、本開示では、コスト計算の処理量を低減することが可能な、画像処理装置及び画像処理方法を提案する。
本開示によれば、画像のビット深度に応じて制限されたオフセット値の候補から、前記画像の画素に対して適用する前記オフセット値を設定する制御部と、前記画像の画素に対して、前記制御部により設定された前記オフセット値を適用するためのフィルタ処理を実行するフィルタ処理部と、を備える、画像処理装置が提供される。
また、本開示によれば、プロセッサが、画像のビット深度に応じて制限されたオフセット値の候補から、前記画像の画素に対して適用する前記オフセット値を設定することと、前記画像の画素に対して、設定された前記オフセット値を適用するためのフィルタ処理を実行することと、を含む、画像処理方法が提供される。
以上説明したように本開示によれば、コスト計算の処理量を低減することが可能な画像処理装置及び画像処理方法が提供される。
なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
なお、説明は以下の順序で行うものとする。
1.サンプル適応オフセットフィルタの概要
2.第1の実施形態
2-1.画像符号化装置の全体的な構成例
2-2.ループフィルタの構成例
2-3.一連の処理の流れ
2-4.サンプル適応オフセットフィルタ
2-4-1.サンプル適応オフセットフィルタの構成例
2-4-2.サンプル適応オフセットフィルタの処理の流れ
2-5.オフセット判定部
2-5-1.オフセット判定部の比較例
2-5-2.オフセット判定部の構成例
2-5-3.オフセット判定部の処理の流れ
2-6.まとめ
3.第2の実施形態
3-1.概要
3-2.ループフィルタの構成例
3-3.サンプル適応オフセットフィルタの構成例
3-4.モード判定部の処理の流れ
3-4-1.モード判定部の比較例
3-4-2.モード判定部の処理の流れ
3-5.変形例
3-6.まとめ
4.第3の実施形態
4-1.概要
4-2.サンプル適応オフセットフィルタの構成例
4-3.サンプル適応オフセットフィルタの処理の流れ
4-4.変形例
4-5.まとめ
5.第4の実施形態
5-1.概要
5-2.処理
5-3.まとめ
6.ハードウェア構成例
7.応用例
7-1.様々な製品への応用
7-2.様々な実装レベル
8.まとめ
1.サンプル適応オフセットフィルタの概要
2.第1の実施形態
2-1.画像符号化装置の全体的な構成例
2-2.ループフィルタの構成例
2-3.一連の処理の流れ
2-4.サンプル適応オフセットフィルタ
2-4-1.サンプル適応オフセットフィルタの構成例
2-4-2.サンプル適応オフセットフィルタの処理の流れ
2-5.オフセット判定部
2-5-1.オフセット判定部の比較例
2-5-2.オフセット判定部の構成例
2-5-3.オフセット判定部の処理の流れ
2-6.まとめ
3.第2の実施形態
3-1.概要
3-2.ループフィルタの構成例
3-3.サンプル適応オフセットフィルタの構成例
3-4.モード判定部の処理の流れ
3-4-1.モード判定部の比較例
3-4-2.モード判定部の処理の流れ
3-5.変形例
3-6.まとめ
4.第3の実施形態
4-1.概要
4-2.サンプル適応オフセットフィルタの構成例
4-3.サンプル適応オフセットフィルタの処理の流れ
4-4.変形例
4-5.まとめ
5.第4の実施形態
5-1.概要
5-2.処理
5-3.まとめ
6.ハードウェア構成例
7.応用例
7-1.様々な製品への応用
7-2.様々な実装レベル
8.まとめ
<1.サンプル適応オフセットフィルタの概要>
まず、サンプル適応オフセットフィルタの概要について説明する。サンプル適応オフセット(以下、「SAO」と呼ぶ場合がある)フィルタは、H.265/HEVCで新たに導入されたループフィルタ技術であり、デブロッキングフィルタ処理の後に実行される。SAOは、エッジオフセット(EO:Edge Offset)とバンドオフセット(BO:Band Offset)と呼ばれる2種類の技術から構成されており、CTU(Coding Tree Unit)ごと(即ち、LCU(Largest Coding Unit)ごと)にパラメタが設定される。
まず、サンプル適応オフセットフィルタの概要について説明する。サンプル適応オフセット(以下、「SAO」と呼ぶ場合がある)フィルタは、H.265/HEVCで新たに導入されたループフィルタ技術であり、デブロッキングフィルタ処理の後に実行される。SAOは、エッジオフセット(EO:Edge Offset)とバンドオフセット(BO:Band Offset)と呼ばれる2種類の技術から構成されており、CTU(Coding Tree Unit)ごと(即ち、LCU(Largest Coding Unit)ごと)にパラメタが設定される。
まず、エッジオフセット処理の概要について説明する。エッジオフセット処理は、処理対象となる画素と、当該画素に隣接する2つの隣接画素の相対関係に応じて、画素ごとに画素値に対してオフセット値の加減算を行う処理である。
例えば、図1は、エッジオフセット処理の概要について説明するための説明図である。図1に示すEO_0~EO_3は、エッジオフセット処理における画素配列の候補(クラス)を示している。図1において、参照符号cで示された画素が処理対象となる画素を示しており、参照符号a及びbで示された画素が、処理対象となる画素cの隣接画素を示している。なお、クラスEO_0~EO_3のうち、どのクラスを用いるかについては、符号化パラメタ「sao_eo_class_luma」及び「sao_eo_class_chroma」により、輝度と色差との双方についてCTUごとに選択できる。
また、カテゴリ1~カテゴリ4は、対象画素cと隣接画素a及びbとの間の画素値の関係を分類したものである。例えば、カテゴリ1は、対象画素cの画素値が、隣接画素a及びbのいずれの画素値よりも小さい場合を示している。また、カテゴリ2は、対象画素cの画素値が、隣接画素a及びbのいずれか一方よりも小さく、他方と等しい場合を示している。カテゴリ1及び2の場合には、対象画素cに対してオフセットを加算することで、対象画素cと隣接画素a及びbとの間で画素値の平滑化が行われる。
カテゴリ3は、対象画素cの画素値が、隣接画素a及びbのいずれか一方よりも大きく、他方と等しい場合を示している。また、カテゴリ4は、対象画素cの画素値が、隣接画素a及びbのいずれの画素値よりも大きい場合を示している。カテゴリ3及び4の場合には、対象画素cに対してオフセットが減算することで、対象画素cと隣接画素a及びbとの間で画素値の平滑化が行われる。
なお、エッジオフセットでは、上記に説明したカテゴリ1~カテゴリ4に加えて、エッジオフセット処理を行わないことを示すカテゴリ0が設けられている。
このように、エッジオフセット処理では、クラスEO_0~EO_3からいずれかのクラスを選択し、選択されたクラスに応じて対象画素cの画素値と隣接画素a及びbの画素値との関係がカテゴリ0~カテゴリ4のいずれに該当するかを特定する。そして、該当するカテゴリに応じて、オフセットを加減算することで、画素系列の平滑化処理を行う。
次に、バンドオフセット処理の概要について説明する。バンドオフセット処理では、画素値の階調(即ち、0からビット深度に応じて表現可能な最大値)を32個のバンドに分割し、その中から連続する4個のバンドに属する画素に対して、バンドごとに設定したオフセット値によって画素値を変更(加減算)する。
例えば、図2は、バンドオフセット処理の概要について説明するための説明図であり、ビット深度が8ビットの場合を示している。なお、H.265/HEVCでは、画素のビット深度として、8ビット(画素値が0~255)と10ビット(画素値が0~1023)とを利用できる。即ち、図2に示すビット深度が8ビットの場合の例では、画素値0~255を32のバンドに分割しており、分割された0~31のバンドのうち、バンド3~6の4つのバンドが選択された場合を示している。
以上のように、サンプル適応オフセットフィルタでは、CTUごとに、上記に説明したエッジオフセット処理とバンドオフセット処理とのうちいずれかを選択し、選択した処理に応じて該当する画素値に対してオフセットを加減算することで平滑化処理を施す。
<2.第1の実施形態>
[2-1.画像符号化装置の全体的な構成例]
以下に、本開示の第1の実施形態に係る画像符号化装置について説明する。まず、図3を参照して、本実施形態に係る画像符号化装置1の構成の一例について説明する。図3は、第1の実施形態に係る画像符号化装置1の構成の一例を示したブロック図である。図1に示すように、画像符号化装置1は、並び替えバッファ11と、減算部13と、直交変換部14と、量子化部15と、可逆符号化部16と、蓄積バッファ17と、レート制御部18と、逆量子化部21と、逆直交変換部22と、加算部23と、ループフィルタ24と、フレームメモリ25と、選択部26及び27と、イントラ予測部30と、インター予測部35とを含む。
[2-1.画像符号化装置の全体的な構成例]
以下に、本開示の第1の実施形態に係る画像符号化装置について説明する。まず、図3を参照して、本実施形態に係る画像符号化装置1の構成の一例について説明する。図3は、第1の実施形態に係る画像符号化装置1の構成の一例を示したブロック図である。図1に示すように、画像符号化装置1は、並び替えバッファ11と、減算部13と、直交変換部14と、量子化部15と、可逆符号化部16と、蓄積バッファ17と、レート制御部18と、逆量子化部21と、逆直交変換部22と、加算部23と、ループフィルタ24と、フレームメモリ25と、選択部26及び27と、イントラ予測部30と、インター予測部35とを含む。
並び替えバッファ11は、一連の画像データに含まれる画像を並び替える。並び替えバッファ11は、符号化処理に係るGOP(Group of Pictures)構造に応じて画像を並び替えた後、並び替え後の画像データを減算部13、イントラ予測部30、インター予測部35及びループフィルタ24へ出力する。
減算部13には、並び替えバッファ11から入力される画像データ、及び後に説明するイントラ予測部30又はインター予測部35から入力される予測画像データが供給される。減算部13は、並び替えバッファ11から入力される画像データと予測画像データとの差分である予測誤差データを算出し、算出した予測誤差データを直交変換部14へ出力する。
直交変換部14は、減算部13から入力される予測誤差データについて直交変換を行う。直交変換部14により実行される直交変換は、例えば、離散コサイン変換(Discrete Cosine Transform:DCT)又はカルーネン・レーベ変換などであってよい。直交変換は、CUを分割することにより形成されるTU(変換単位)の各々について実行される。TUのサイズは、4×4画素、8×8画素、16×16画素及び32×32画素から適応的に選択される。直交変換部14は、直交変換処理により取得される変換係数データを量子化部15へ出力する。
量子化部15には、直交変換部14から入力される変換係数データ、及び後に説明するレート制御部18からのレート制御信号が供給される。量子化部15は、レート制御信号に従って決定される量子化ステップで変換係数データを量子化する。量子化部15は、量子化後の変換係数データ(以下、量子化データという)を可逆符号化部16及び逆量子化部21へ出力する。なお、この量子化データが、「ビットストリーム」の一例に相当する。
可逆符号化部16は、量子化部15から入力される量子化データについて可逆符号化処理を行うことにより、符号化ストリームを生成する。また、可逆符号化部16は、デコーダにより参照される様々なパラメタを符号化して、符号化されたパラメタを符号化ストリームのヘッダ領域に挿入する。可逆符号化部16により符号化されるパラメタは、Quad-Tree構造を特定する上述したパラメタ、並びに後に説明するイントラ予測に関する情報及びインター予測に関する情報を含み得る。そして、可逆符号化部16は、生成した符号化ストリームを蓄積バッファ17へ出力する。
蓄積バッファ17は、可逆符号化部16から入力される符号化ストリームを半導体メモリなどの記憶媒体を用いて一時的に蓄積する。そして、蓄積バッファ17は、蓄積した符号化ストリームを、伝送路の帯域に応じたレートで、図示しない伝送部(例えば、通信インタフェース又は周辺機器との接続インタフェースなど)へ出力する。
レート制御部18は、蓄積バッファ17の空き容量を監視する。そして、レート制御部18は、蓄積バッファ17の空き容量に応じてレート制御信号を生成し、生成したレート制御信号を量子化部15へ出力する。例えば、レート制御部18は、蓄積バッファ17の空き容量が少ない時には、量子化データのビットレートを低下させるためのレート制御信号を生成する。また、例えば、レート制御部18は、蓄積バッファ17の空き容量が十分大きい時には、量子化データのビットレートを高めるためのレート制御信号を生成する。
逆量子化部21、逆直交変換部22及び加算部23は、ローカルデコーダを構成する。なお、当該ローカルデコーダが、量子化データを復元して復号画像データを生成する「複合部」の一例に相当する。
逆量子化部21は、量子化部15により使用されたものと同じ量子化ステップで量子化データを逆量子化し、変換係数データを復元する。そして、逆量子化部21は、復元した変換係数データを逆直交変換部22へ出力する。
逆直交変換部22は、逆量子化部21から入力される変換係数データについて逆直交変換処理を行うことにより、予測誤差データを復元する。直交変換と同様、逆直交変換は、TUごとに実行される。そして、逆直交変換部22は、復元した予測誤差データを加算部23へ出力する。
加算部23は、逆直交変換部22から入力される復元された予測誤差データとイントラ予測部30又はインター予測部35から入力される予測画像データとを加算することにより、復号画像データ(リコンストラクト画像)を生成する。そして、加算部23は、生成した復号画像データをループフィルタ24及びフレームメモリ25へ出力する。
ループフィルタ24は、画質の向上を目的とする、デブロックフィルタ(DF)、サンプル適応オフセット(SAO)フィルタ及び適応ループフィルタ(ALF)などのフィルタ群を含む。ループフィルタ24は、加算部23から入力される復号画像データを、並び替えバッファ11から供給される原画像データに基づきフィルタリング処理を施し、フィルタリング後の復号画像データをフレームメモリ25へ出力する。なお、ループフィルタ24の詳細については別途後述する。
フレームメモリ25は、加算部23から入力されるフィルタリング前の復号画像データ、及びループフィルタ24から入力されるフィルタリング後の復号画像データを記憶媒体を用いて記憶する。
選択部26は、イントラ予測のために使用されるフィルタリング前の復号画像データをフレームメモリ25から読み出し、読み出した復号画像データを参照画像データとしてイントラ予測部30に供給する。また、選択部26は、インター予測のために使用されるフィルタリング後の復号画像データをフレームメモリ25から読み出し、読み出した復号画像データを参照画像データとしてインター予測部35に供給する。
選択部27は、イントラ予測モードにおいて、イントラ予測部30から出力されるイントラ予測の結果としての予測画像データを減算部13へ出力すると共に、イントラ予測に関する情報を可逆符号化部16へ出力する。また、選択部27は、インター予測モードにおいて、インター予測部35から出力されるインター予測の結果としての予測画像データを減算部13へ出力すると共に、インター予測に関する情報を可逆符号化部16へ出力する。選択部27は、イントラ予測モードとインター予測モードとを、コストの大きさに応じて切り替える。
イントラ予測部30は、原画像データ及び復号画像データに基づいて、CUを分割することにより形成されるPU(予測単位)ごとにイントラ予測処理を行う。例えば、イントラ予測部30は、予測モードセット内の各候補モードによる予測結果を所定のコスト関数を用いて評価する。次に、イントラ予測部30は、コストが最小となる予測モード、即ち圧縮率が最も高くなる予測モードを、最適な予測モードとして選択する。また、イントラ予測部30は、当該最適な予測モードに従って予測画像データを生成する。そして、イントラ予測部30は、選択した最適な予測モードを表す予測モード情報を含むイントラ予測に関する情報、コスト、及び予測画像データを、選択部27へ出力する。
インター予測部35は、原画像データ及び復号画像データに基づいて、CUを分割することにより形成されるPUごとにインター予測処理を行う。例えば、インター予測部35は、予測モードセット内の各候補モードによる予測結果を所定のコスト関数を用いて評価する。次に、インター予測部35は、コストが最小となる予測モード、即ち圧縮率が最も高くなる予測モードを、最適な予測モードとして選択する。また、インター予測部35は、当該最適な予測モードに従って予測画像データを生成する。そして、インター予測部35は、選択した最適な予測モードを表す予測モード情報と動き情報とを含むインター予測に関する情報、コスト、及び予測画像データを、選択部27へ出力する。
[2-2.ループフィルタの構成例]
次に、図4を参照して、本実施形態に係るループフィルタ24の構成の一例について説明する。図4は、本実施形態に係るループフィルタ24の構成の一例を示したブロック図である。図4に示すように、ループフィルタ24は、原画像保持部100と、デブロックフィルタ200と、サンプル適応オフセット(SAO)フィルタ300と、適応ループフィルタ400とを含む。
次に、図4を参照して、本実施形態に係るループフィルタ24の構成の一例について説明する。図4は、本実施形態に係るループフィルタ24の構成の一例を示したブロック図である。図4に示すように、ループフィルタ24は、原画像保持部100と、デブロックフィルタ200と、サンプル適応オフセット(SAO)フィルタ300と、適応ループフィルタ400とを含む。
原画像保持部100は、並び替えバッファ11からループフィルタ24に供給される原画像データを保持するための保持部である。ループフィルタ24内の各構成は、原画像保持部100に保持された原画像データを適宜参照することで、各々のフィルタ処理を実行する。
また、逆量子化部21、逆直交変換部22及び加算部23(即ち、ローカルデコーダ)により復号された復号画像データ(リコンストラクト画像)は、まず、デブロックフィルタ200に供給される。
デブロックフィルタ200は、適宜デブロックフィルタ処理を行うことにより復号画像データのブロック歪を除去する。なお、本説明では、デブロックフィルタ処理の詳細な説明については省略する。デブロックフィルタ200は、そのフィルタ処理結果をサンプル適応オフセットフィルタ300に出力する。
サンプル適応オフセットフィルタ300は、デブロックフィルタ200によるフィルタ後の復号画像データに対して、CTUごとに、適用するSAOのモードと、適用するオフセット値とを決定する。
なお、SAOのモードとは、図1及び図2に示したエッジオフセットとバンドオフセットのうち、いずれが選択されたかを示している。また、エッジオフセットが選択された場合には、SAOのモードは、図1に示したエッジオフセットのクラスEO_0~EO_3とのうちどのクラスが選択され、当該クラスに対応してカテゴリ0~4のうちいずれのカテゴリが選択されたかを示している。また、バンドオフセットが選択された場合には、SAOのモードは、図2に示したバンドオフセットの各バンドのうちどのバンドが選択されたかを示している。
そして、サンプル適応オフセットフィルタ300は、決定したモード及びオフセット値に基づき、復号画像データに対してCTUごとにフィルタ処理(以降では、「SAO処理」と呼ぶ場合がある)を施す。
特に、本実施形態に係るサンプル適応オフセットフィルタ300は、復号画像データの復号元である量子化データを生成する際の量子化ステップ(QP:Quantization Parameter)に基づき、SAO処理の処理負荷を軽減する。なお、サンプル適応オフセットフィルタ300が、復号画像データの復号元である量子化データの量子化ステップを取得できれば、その取得元は特に限定されない。具体的な一例として、サンプル適応オフセットフィルタ300は、量子化部15から、当該量子化ステップを取得してもよい。なお、本実施形態に係るサンプル適応オフセットフィルタ300の詳細については別途後述する。
サンプル適応オフセットフィルタ300は、SAO処理後の復号画像データを、適応ループフィルタ400に出力する。また、サンプル適応オフセットフィルタ300は、CTUごとに決定したSAOのモードとオフセット値とを、符号化パラメタとして可逆符号化部16に出力する。この出力を受けて、可逆符号化部16は、生成した符号化ストリームに対して、供給されたSAOのモードとオフセット値とを符号化して、当該符号化ストリームのヘッダ領域に挿入する。
適応ループフィルタ400は、サンプル適応オフセットフィルタ300から供給されるSAO処理後の復号画像データに対して、適応ループフィルタ(ALF:AdaptiveLoop Filter)処理を行う。適応ループフィルタ400においては、フィルタとして、例えば、2次元のウィナーフィルタ(Wiener Filter)が用いられる。もちろん、ウィナーフィルタ以外のフィルタが用いられてもよい。
適応ループフィルタ400は、タップサイズの異なる複数のフィルタを有しており、適応ループフィルタタ処理を行う。適応ループフィルタ400は、フィルタ処理結果をフレームメモリ25に出力する。
以上、図4を参照して、本実施形態に係るループフィルタ24の構成の一例について説明した。
[2-3.一連の処理の流れ]
次に、図5及び図6を参照して、本実施形態に係る画像符号化装置の一連の処理の流れについて説明する。図5及び図6は、本実施形態に係る画像符号化装置の一連の処理の流れについて説明するための説明図である。
次に、図5及び図6を参照して、本実施形態に係る画像符号化装置の一連の処理の流れについて説明する。図5及び図6は、本実施形態に係る画像符号化装置の一連の処理の流れについて説明するための説明図である。
例えば、図5は、画像符号化装置が、ピクチャP1を複数のブロック(CTU)に分割して、当該ブロックごとに符号化する処理の流れを示している。図5に示すように、画像符号化装置は、ピクチャP1を、左上から右下に向けてラスタスキャンすることで、固定ブロックサイズの複数のCTUに分割して処理する。即ち、図5に示す例の場合には、画像符号化装置は、ブロックU11、U12、…、U1m、U21、U22、U23、U24の順で、ピクチャP1を分割して処理する。
なお、以下の説明では、特に、ブロックU23を処理の対象とした場合の動作に着目して、当該ブロックU23の復号画像データが生成され、ループフィルタ24によりフィルタ処理が施されるまでの、画像符号化装置の一連の処理の流れについて説明する。なお、この場合には、ブロックU11~U1m、U21、及びU22は、処理済のブロックとなり、当該処理済のブロックのうち、特にブロックU13及びU22は、処理対象ブロックU23の隣接ブロックとなる。
次に、図6を図3及び図4とあわせて参照して、ピクチャP1中の一のCTUの復号画像データが生成され、ループフィルタ24によりフィルタ処理が施されるまで処理の流れについて説明する。図6は、本実施形態に係る画像符号化装置の一連の処理の流れの一例を示したフローチャートであり、特に、ピクチャP1中の一のCTUの復号画像データが生成され、ループフィルタ24によりフィルタ処理が施されるまで処理の流れを示している。なお、本説明では、復号画像データの生成に着目するものとし、量子化データを可逆符号化することで符号化ストリームを生成して出力する処理については、説明は省略する。
(ステップS11)
並び替えバッファ11(図3参照)は、一連の画像データに含まれる画像を並び替える。並び替えバッファ11は、符号化処理に係るGOP(Group of Pictures)構造に応じて画像を並び替えた後、並び替え後の画像データを減算部13、イントラ予測部30、インター予測部35及びループフィルタ24へ出力する。
並び替えバッファ11(図3参照)は、一連の画像データに含まれる画像を並び替える。並び替えバッファ11は、符号化処理に係るGOP(Group of Pictures)構造に応じて画像を並び替えた後、並び替え後の画像データを減算部13、イントラ予測部30、インター予測部35及びループフィルタ24へ出力する。
また、選択部26は、イントラ予測のために使用されるフィルタリング前の復号画像データをフレームメモリ25から読み出し、読み出した復号画像データを参照画像データとしてイントラ予測部30に供給する。また、選択部26は、インター予測のために使用されるフィルタリング後の復号画像データをフレームメモリ25から読み出し、読み出した復号画像データを参照画像データとしてインター予測部35に供給する。
イントラ予測部30は、供給された原画像データ及び復号画像データに基づいて、CUを分割することにより形成されるPU(予測単位)ごとにイントラ予測処理を行う。
なお、このとき、イントラ予測部30は、図5におけるブロックU23をイントラ予測処理の対象とする場合には、当該ブロックU23の原画像データと、処理済の隣接ブロックU13及びU22の復号画像データとに基づきイントラ予測処理を実行する。
イントラ予測部30は、予測モードセット内の各候補モードによる予測結果を所定のコスト関数を用いて評価し、当該評価結果に基づき最適な予測モードとして選択する。また、イントラ予測部30は、当該最適な予測モードに従って予測画像データを生成する。そして、イントラ予測部30は、選択した最適な予測モードを表す予測モード情報を含むイントラ予測に関する情報、コスト、及び予測画像データを、選択部27へ出力する。
また、インター予測部35は、原画像データ及び復号画像データに基づいて、CUを分割することにより形成されるPUごとにインター予測処理を行う。
インター予測部35は、予測モードセット内の各候補モードによる予測結果を所定のコスト関数を用いて評価し、当該評価結果に基づき最適な予測モードとして選択する。また、インター予測部35は、当該最適な予測モードに従って予測画像データを生成する。そして、インター予測部35は、選択した最適な予測モードを表す予測モード情報と動き情報とを含むインター予測に関する情報、コスト、及び予測画像データを、選択部27へ出力する。
選択部27は、イントラ予測モードにおいて、イントラ予測部30から出力されるイントラ予測の結果としての予測画像データを減算部13へ出力すると共に、イントラ予測に関する情報を可逆符号化部16へ出力する。また、選択部27は、インター予測モードにおいて、インター予測部35から出力されるインター予測の結果としての予測画像データを減算部13へ出力すると共に、インター予測に関する情報を可逆符号化部16へ出力する。選択部27は、イントラ予測モードとインター予測モードとを、コストの大きさに応じて切り替える。
(ステップS12)
減算部13には、並び替えバッファ11から入力される画像データと、イントラ予測部30又はインター予測部35から入力される予測画像データとが供給される。減算部13は、並び替えバッファ11から入力される画像データと予測画像データとの差分である予測誤差データを算出し、算出した予測誤差データを直交変換部14へ出力する。
減算部13には、並び替えバッファ11から入力される画像データと、イントラ予測部30又はインター予測部35から入力される予測画像データとが供給される。減算部13は、並び替えバッファ11から入力される画像データと予測画像データとの差分である予測誤差データを算出し、算出した予測誤差データを直交変換部14へ出力する。
(ステップS13)
直交変換部14は、減算部13から入力される予測誤差データについて直交変換を行う。直交変換部14は、直交変換処理により取得される変換係数データを量子化部15へ出力する。
直交変換部14は、減算部13から入力される予測誤差データについて直交変換を行う。直交変換部14は、直交変換処理により取得される変換係数データを量子化部15へ出力する。
量子化部15には、直交変換部14から入力される変換係数データ、及びレート制御部18からのレート制御信号が供給される。量子化部15は、レート制御信号に従って決定される量子化ステップで変換係数データを量子化する。量子化部15は、量子化後の変換係数データ(即ち、量子化データ)を可逆符号化部16及び逆量子化部21へ出力する。
(ステップS14)
逆量子化部21は、量子化部15により使用されたものと同じ量子化ステップで量子化データを逆量子化し、変換係数データを復元する。そして、逆量子化部21は、復元した変換係数データを逆直交変換部22へ出力する。
逆量子化部21は、量子化部15により使用されたものと同じ量子化ステップで量子化データを逆量子化し、変換係数データを復元する。そして、逆量子化部21は、復元した変換係数データを逆直交変換部22へ出力する。
逆直交変換部22は、逆量子化部21から入力される変換係数データについて逆直交変換処理を行うことにより、予測誤差データを復元する。直交変換と同様、逆直交変換は、TUごとに実行される。そして、逆直交変換部22は、復元した予測誤差データを加算部23へ出力する。
(ステップS15)
加算部23は、逆直交変換部22から入力される復元された予測誤差データとイントラ予測部30又はインター予測部35から入力される予測画像データとを加算することにより、復号画像データ(リコンストラクト画像)を生成する。そして、加算部23は、生成した復号画像データをループフィルタ24及びフレームメモリ25へ出力する。
加算部23は、逆直交変換部22から入力される復元された予測誤差データとイントラ予測部30又はインター予測部35から入力される予測画像データとを加算することにより、復号画像データ(リコンストラクト画像)を生成する。そして、加算部23は、生成した復号画像データをループフィルタ24及びフレームメモリ25へ出力する。
(ステップS16)
ループフィルタ24に出力された復号画像データは、デブロックフィルタ200(図4参照)に供給される。デブロックフィルタ200は、適宜デブロックフィルタ処理を行うことにより復号画像データのブロック歪を除去する。デブロックフィルタ200は、そのフィルタ処理結果をサンプル適応オフセットフィルタ300に出力する。
ループフィルタ24に出力された復号画像データは、デブロックフィルタ200(図4参照)に供給される。デブロックフィルタ200は、適宜デブロックフィルタ処理を行うことにより復号画像データのブロック歪を除去する。デブロックフィルタ200は、そのフィルタ処理結果をサンプル適応オフセットフィルタ300に出力する。
(ステップS17)
サンプル適応オフセットフィルタ300は、デブロックフィルタ200によるフィルタ後の復号画像データに対して、CTUごとに、適用するSAOのモードと、適用するオフセット値とを決定する。そして、サンプル適応オフセットフィルタ300は、決定したモード及びオフセット値に基づき、復号画像データに対してCTUごとにフィルタ処理(即ち、SAO処理)を施す。即ち、ステップS17に示す契機において、図5に示した処理対象ブロックU23に対して、SAO処理が施されることとなる。
サンプル適応オフセットフィルタ300は、デブロックフィルタ200によるフィルタ後の復号画像データに対して、CTUごとに、適用するSAOのモードと、適用するオフセット値とを決定する。そして、サンプル適応オフセットフィルタ300は、決定したモード及びオフセット値に基づき、復号画像データに対してCTUごとにフィルタ処理(即ち、SAO処理)を施す。即ち、ステップS17に示す契機において、図5に示した処理対象ブロックU23に対して、SAO処理が施されることとなる。
サンプル適応オフセットフィルタ300は、SAO処理後の復号画像データを、適応ループフィルタ400に出力する。また、サンプル適応オフセットフィルタ300は、CTUごと(即ち、LCUごと)に決定したSAOのモードとオフセット値とを、符号化時のパラメタとして可逆符号化部16に出力する。この出力を受けて、可逆符号化部16は、生成した符号化ストリームに対して、供給されたSAOのモードとオフセット値とを符号化して、当該符号化ストリームのヘッダ領域に挿入する。
(ステップS18)
適応ループフィルタ400は、サンプル適応オフセットフィルタ300から供給されるSAO処理後の復号画像データに対して、適応ループフィルタ(ALF:AdaptiveLoop Filter)処理を行う。
適応ループフィルタ400は、サンプル適応オフセットフィルタ300から供給されるSAO処理後の復号画像データに対して、適応ループフィルタ(ALF:AdaptiveLoop Filter)処理を行う。
(ステップS19)
適応ループフィルタ400は、フィルタ処理結果をフレームメモリ25に出力する。以上のようにして、図5に示したブロックU23の復号画像データが生成され、フレームメモリ25に記憶される。なお、フレームメモリ25に記憶されたブロックU23の復号画像データは、例えば、図5に示す未処理ブロックのうち、当該ブロックU23に隣接するブロック(例えば、ブロックU24)のイントラ予測及びインター予測に用いられる。
適応ループフィルタ400は、フィルタ処理結果をフレームメモリ25に出力する。以上のようにして、図5に示したブロックU23の復号画像データが生成され、フレームメモリ25に記憶される。なお、フレームメモリ25に記憶されたブロックU23の復号画像データは、例えば、図5に示す未処理ブロックのうち、当該ブロックU23に隣接するブロック(例えば、ブロックU24)のイントラ予測及びインター予測に用いられる。
以上、図5及び図6を参照して、本実施形態に係る画像符号化装置の一連の処理の流れについて説明した。
[2-4.サンプル適応オフセットフィルタ]
<<2-4-1.サンプル適応オフセットフィルタの構成例>>
次に、本実施形態に係るサンプル適応オフセットフィルタ300の詳細について説明する。まず、図7を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例について説明する。図7は、第1の実施形態に係るサンプル適応オフセットフィルタ300の構成の一例を示したブロック図である。
<<2-4-1.サンプル適応オフセットフィルタの構成例>>
次に、本実施形態に係るサンプル適応オフセットフィルタ300の詳細について説明する。まず、図7を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例について説明する。図7は、第1の実施形態に係るサンプル適応オフセットフィルタ300の構成の一例を示したブロック図である。
図7に示すように、本実施形態に係るサンプル適応オフセットフィルタ300は、制御部310と、フィルタ処理部390とを含む。また、制御部310は、解析部320と、切り替え判定部360とを含む。なお、制御部310が、「設定部」の一例に相当する。
切り替え判定部360は、復号画像データのスライスごとに、輝度と色度とのそれぞれについてSAO処理の適用の可否を判定し、判定結果に基づき解析部320の動作を制御する。
具体的には、切り替え判定部360は、処理対象のスライスが、Iスライス及びPスライスのいずれかの場合には、当該スライスに対するSAO処理の適用を解析部320に指示する。
また、切り替え判定部360は、処理対象のスライスがBスライスの場合には、当該Bスライスの直前のスライス(即ち、IスライスまたはPスライス)において、SAO処理が適用されたCTUの数(以降では、「モード数」と呼ぶ場合がある)に応じて、当該Bスライスに対してSAO処理の適用の可否を判定する。
具体的な一例として、切り替え判定部360は、直前のスライスにおいてモード数が所定の閾値TH11以上(例えば、半数以上)の場合には、処理対象のBスライスに対するSAO処理の適用を解析部320に指示する。一方で、直前のスライスにおいてモード数が閾値TH11未満の場合には、切り替え判定部360は、処理対象のBスライスに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する。
また、切り替え判定部360は、スライスごとのSAO処理の適用の可否を、符号化時のパラメタとして可逆符号化部16に出力する。なお、スライスごとのSAO処理の適用の可否を制御するためのパラメタの一例として、輝度に対応した「slice_sao_luma_flag」と、色度に対応した「slice_sao_chroma_flag」とが挙げられる。
解析部320は、統計量取得部330と、モード判定部340とを含む。解析部320は、原画像保持部100(図4参照)に保持された原画像データと、デブロックフィルタ200から出力される復号画像データとに基づき、SAO処理を施すためのSAOのモードとオフセット値とをCTUごと(即ち、LCUごと)に決定する。なお、解析部320の処理については、切り替え判定部360からの指示に基づき、スライス単位で適用の可否が制御される。以下に、解析部320の各構成の詳細について説明する。
統計量取得部330は、原画像データと復号画像データとに基づきSAOのモードとオフセットとを特定するための統計量を算出する。
具体的な一例として、統計量取得部330は、復号画像データ中の画素単位で、図1に示したエッジオフセットのクラスEO_0~EO_3それぞれについて、対象画素と隣接画素との対応関係を解析し、カテゴリ0~4それぞれの出現頻度を計上する。また、このとき、統計量取得部330は、計上したカテゴリごとに、復号画像データと原画像データとの間の画素値の差を累積計上する。そして、統計量取得部330は、クラスEO_0~EO_3それぞれについて計上されたカテゴリ0~4それぞれの出現頻度と、当該カテゴリごとに累積計上された画素値とを、統計量として算出する。
また、統計量取得部330は、図2に示したバンドオフセットのバンド0~31それぞれについて、対応する画素の頻度を計上し、その画素における復号画像データと原画像データとの間の画素値の差をバンドごとに累積計上する。そして、統計量取得部330は、バンドごとに計上した頻度と、バンドごとに累積計上した画素値の差とを、統計量として算出する。
統計量取得部330は、以上のようにして算出した統計量を、モード判定部340に出力する。
モード判定部340は、オフセット判定部350を含む。モード判定部340は、統計量取得部330から供給される統計量に基づき、復号画像データ中のCTU単位でSAOの各モードについて、オフセット値と当該オフセット値に対応するコストとを、オフセット判定部350に算出させる。
具体的には、モード判定部340は、エッジオフセットの各クラスEO_0~EO_3と各カテゴリ1~4との組み合わせのそれぞれについて、オフセット値と当該オフセット値に対応するコストとを、オフセット判定部350に算出させる。同様に、モード判定部340は、バンドオフセットの各バンドそれぞれについて、オフセット値と当該オフセット値に対応するコストとを、オフセット判定部350に算出させる。また、モード判定部340は、SAO処理を適用しない場合のコストについても算出する。
オフセット判定部350は、モード判定部340から指示されたモードに対し、オフセット値の候補それぞれについてコストを算出する。そして、オフセット判定部350は、算出した各コストを比較することで、符号化効率を最も向上させることが可能なオフセット値と当該オフセット値に対応するコストとを特定する。なお、オフセット判定部350の詳細については別途後述する。
モード判定部340は、SAOの各モードについて算出された各コストを比較し、当該比較結果に基づき、符号化効率を最も向上させることが可能なSAOのモードと、当該モードに対応するオフセット値とをCTUごと(即ち、LCUごと)に特定する。そして、モード判定部340は、CTUごとに特定したモードと、当該モードに対応するオフセット値とを、後述するフィルタ処理部390に出力する。なお、このときモード判定部340は、コストの比較の結果として、SAO処理を適用しないと判定した場合には、対象となるCTUに対してSAO処理を適用しないようにフィルタ処理部390に指示する。
また、モード判定部340は、CTUごとに特定したSAOのモードとオフセット値とを、符号化時のパラメタとして可逆符号化部16に出力する。なお、当該符号化時のパラメタとしては、例えば、エッジオフセットとバンドオフセットとのいずれかを示すパラメタとして、輝度に対応した「sao_type_idx_luma」や、色度に対応した「sao_typ_idx_chroma」が挙げられる。また、エッジオフセットが適用された場合に、エッジオフセットのクラスを示すパラメタとして、輝度に対応した「sao_eo_class_luma」や、色度に対応した「sao_eo_class_chroma」が挙げられる。また、バンドオフセットが適用された場合に、バンドの位置を示すパラメタとして、「sao_band_position」が挙げられる。また、オフセット値を通知するためのパラメタとして、オフセット値の絶対値を示す「sao_offset_abs」と、オフセット値の正負を示す「sao_offset_sign」が挙げられる。
フィルタ処理部390は、復号画像データの各CTUに対して、モード判定部340から供給されるSAOのモードとオフセット値とに基づいてSAO処理を施す。なお、モード判定部340から、SAO処理を適用しない旨が指示された場合には、フィルタ処理部390は、対象となるCTUに対してSAO処理を施さない。また、切り替え判定部360の判定結果に基づき、SAO処理を適用しないと判定されたスライスについても同様に、フィルタ処理部390は、当該判定結果に基づき対応するスライスに対してSAO処理を施さないことは言うまでもない。
そして、フィルタ処理部390は、SAO処理が施された復号画像データを、適応ループフィルタ400(図4参照)に出力する。
<<2-4-2.サンプル適応オフセットフィルタの処理の流れ>>
次に、図8を参照して、本実施形態に係るサンプル適応オフセットフィルタの一連の処理の流れの一例について説明する。図8は、本実施形態に係るサンプル適応オフセットフィルタの一連の処理の流れの一例を示したフローチャートである。
次に、図8を参照して、本実施形態に係るサンプル適応オフセットフィルタの一連の処理の流れの一例について説明する。図8は、本実施形態に係るサンプル適応オフセットフィルタの一連の処理の流れの一例を示したフローチャートである。
(ステップS100)
まず、切り替え判定部360は、復号画像データのスライスごとに、輝度と色度とのそれぞれについてSAO処理の適用の可否を判定し、判定結果に基づき解析部320の動作を制御する。なお、切り替え判定部360による、SAO処理の適用の可否の判定に係る動作については、詳細を別途後述する。
まず、切り替え判定部360は、復号画像データのスライスごとに、輝度と色度とのそれぞれについてSAO処理の適用の可否を判定し、判定結果に基づき解析部320の動作を制御する。なお、切り替え判定部360による、SAO処理の適用の可否の判定に係る動作については、詳細を別途後述する。
(ステップS500)
スライスに対してSAO処理が適用されると判定された場合には(ステップS200、YES)、解析部320は、原画像データと(デブロックフィルタ処理後の)復号画像データとに基づき、SAO処理を施すためのSAOのモードとオフセット値とをCTUごとに決定する。
スライスに対してSAO処理が適用されると判定された場合には(ステップS200、YES)、解析部320は、原画像データと(デブロックフィルタ処理後の)復号画像データとに基づき、SAO処理を施すためのSAOのモードとオフセット値とをCTUごとに決定する。
具体的には、統計量取得部330は、原画像データと復号画像データとに基づきSAOのモードとオフセットとを特定するための統計量を算出し、算出した統計量を、モード判定部340に出力する。
モード判定部340は、統計量取得部330から供給される統計量に基づき、復号画像データ中のCTU単位でSAOの各モードについて、オフセット値として取り得る値のそれぞれにおけるコストをオフセット判定部350に算出させる。
モード判定部340は、SAOの各モードについて算出された、各コストを比較し、当該比較結果に基づき、符号化効率を最も向上させることが可能なSAOのモードをCTUごと(即ち、LCUごと)に特定する。そして、モード判定部340は、CTUごとに特定したモードと、当該モードに対応するオフセット値とを、後述するフィルタ処理部390に出力する。また、モード判定部340は、CTUごとに特定したSAOのモードとオフセット値とを、符号化時のパラメタとして可逆符号化部16に出力する。
(ステップS600)
フィルタ処理部390は、復号画像データの各CTUに対して、モード判定部340から供給されるSAOのモードとオフセット値とに基づいてSAO処理を施す。
フィルタ処理部390は、復号画像データの各CTUに対して、モード判定部340から供給されるSAOのモードとオフセット値とに基づいてSAO処理を施す。
(ステップS700)
以上の処理を、対象となるスライス中の一連のCTUについて実行し(ステップS700、NO)、一連のCTUに対する処理の完了をもって(ステップS700、YES)、対象となるスライスに対するSAO処理の適用が完了する。
以上の処理を、対象となるスライス中の一連のCTUについて実行し(ステップS700、NO)、一連のCTUに対する処理の完了をもって(ステップS700、YES)、対象となるスライスに対するSAO処理の適用が完了する。
(ステップS200)
なお、対象となるスライスに対してSAO処理を適用しない場合(ステップS200、NO)には、当該スライスに対して、ステップS300~S700で示された各処理は実行されない。
なお、対象となるスライスに対してSAO処理を適用しない場合(ステップS200、NO)には、当該スライスに対して、ステップS300~S700で示された各処理は実行されない。
次に、図9を参照して、図8においてステップS100で示された処理、即ち、切り替え判定部360による、スライスごとのSAO処理の適用の可否の判定に係る処理の一例について説明する。図9は、本実施形態に係る切り替え判定部による、スライスごとのSAO処理の適用の可否の判定に係る処理の一例について示したフローチャートである。
(ステップS101、S104)
切り替え判定部360は、処理対象のスライスが、Bスライスではない場合、即ち、Iスライス及びPスライスのいずれかの場合には(ステップS101、NO)、当該スライスに対するSAO処理の適用を解析部320に指示する(ステップS104)。
切り替え判定部360は、処理対象のスライスが、Bスライスではない場合、即ち、Iスライス及びPスライスのいずれかの場合には(ステップS101、NO)、当該スライスに対するSAO処理の適用を解析部320に指示する(ステップS104)。
(ステップS101、S102)
また、切り替え判定部360は、処理対象のスライスがBスライスの場合には(ステップS101、YES)、当該Bスライスの直前のスライス(即ち、IスライスまたはPスライス)において、SAO処理が適用されたCTUの数(モード数)を取得する(ステップS102)。
また、切り替え判定部360は、処理対象のスライスがBスライスの場合には(ステップS101、YES)、当該Bスライスの直前のスライス(即ち、IスライスまたはPスライス)において、SAO処理が適用されたCTUの数(モード数)を取得する(ステップS102)。
(ステップS103、S104)
切り替え判定部360は、取得したモード数が、所定の閾値TH11以上の場合には(ステップS103、NO)、当該スライスに対するSAO処理の適用を解析部320に指示する(ステップS104)。
切り替え判定部360は、取得したモード数が、所定の閾値TH11以上の場合には(ステップS103、NO)、当該スライスに対するSAO処理の適用を解析部320に指示する(ステップS104)。
(ステップS103、S105)
一方で、切り替え判定部360は、取得したモード数が、所定の閾値TH11未満の場合には(ステップS103、YES)、当該スライスに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する(ステップS105)。
一方で、切り替え判定部360は、取得したモード数が、所定の閾値TH11未満の場合には(ステップS103、YES)、当該スライスに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する(ステップS105)。
以上のようにして、切り替え判定部360は、スライスごとにSAO処理の適用の可否を判定し、判定結果に基づき解析部320の動作を制御する。
以上、図8及び図9を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の一連の処理の流れの一例について説明した。
[2-5.オフセット判定部]
次に、オフセット判定部350の詳細について説明する。オフセット判定部350は、統計量取得部330で生成された統計量に基づき、オフセット値として取り得る値それぞれについてコストを算出し、算出した各コストを比較することで、符号化効率を最も向上させることが可能なオフセット値を特定する。
次に、オフセット判定部350の詳細について説明する。オフセット判定部350は、統計量取得部330で生成された統計量に基づき、オフセット値として取り得る値それぞれについてコストを算出し、算出した各コストを比較することで、符号化効率を最も向上させることが可能なオフセット値を特定する。
なお、前述したように、H.265/HEVCでは、画素のビット深度として、8ビット(画素値が0~255)と10ビット(画素値が0~1023)とを利用でき、各ビット深度に応じて、適用可能なオフセット値の候補が異なる。具体的には、ビット深度が8ビットの場合には、オフセット値のとり得る値は0~7となり、ビット深度が10ビットの場合には、オフセット値のとり得る値は0~31となる。
そのため、従来の方式では、画素のビット深度が10ビットの場合には、ビット深度が8ビットの場合に比べてオフセット値の候補数が4倍となるため、コスト計算の処理量が増加し、回路規模や消費電力の増加の要因となる場合がある。そこで、本説明では、本実施形態に係るオフセット判定部350の特徴をわかりやすくするために、まず、従来の方式に基づくオフセット判定部の概要について比較例として説明したうえで、本実施形態に係るオフセット判定部350について説明する。
<<2-5-1.オフセット判定部の比較例>>
図10~図12を参照して、比較例に係るオフセット判定部について説明する。なお、以降では、比較例に係るオフセット判定部と、本実施形態に係るオフセット判定部350とを明示的に区別する場合には、比較例に係るオフセット判定部を、「オフセット判定部350a」と記載する場合がある。
図10~図12を参照して、比較例に係るオフセット判定部について説明する。なお、以降では、比較例に係るオフセット判定部と、本実施形態に係るオフセット判定部350とを明示的に区別する場合には、比較例に係るオフセット判定部を、「オフセット判定部350a」と記載する場合がある。
まず、図10を参照して、比較例に係るオフセット判定部350aの構成の一例について説明する。図10は、比較例に係るオフセット判定部350aの構成の一例を示したブロック図である。
図10に示すように、オフセット判定部350aは、1以上のオフセット測定部351と、オフセット決定部353とを含む。
オフセット測定部351は、統計量取得部330で生成された統計量(例えば、処理対象となる画素の出現頻度や、復号画像データと原画像データとの間の画素値の差)を基に、各オフセット値について、当該オフセット値を適用した場合のコストを算出する。なお、このとき算出されるコストとは、例えば、復号画像データに発生した原画像データとの間の誤差(例えば、量子化誤差)を緩和して原画像データに近づけるために、各オフセット値に基づくオフセット処理に要するデータ量(即ち、デコーダ側に送信するデータ量)等が挙げられる。なお、コスト計算の具体的な内容については、本明細書では詳細な説明は省略する。
図10に示す例では、ビット深度が10ビットの場合のオフセット値0~31のそれぞれについてコストを並列に計算するために、オフセット測定部351として、Offset[0]測定部~Offset[31]測定部を設けている。
例えば、図11の参照符号d40で示されたテーブルは、図10に示した各オフセット測定部351(即ち、Offset[0]測定部~Offset[31]測定部)と、各オフセット値との対応関係を示している。図11に示すように、Offset[0]測定部は、オフセット値が0の場合におけるコストを計算する。同様に、Offset[1]測定部~Offset[31]測定部は、それぞれオフセット値1~31に対応づけられている。
即ち、図10に示す例では、ビット深度が8ビットの場合には、Offset[0]測定部~Offset[31]測定部のうち、参照符号351aで示された、Offset[0]測定部~Offset[7]測定部が使用される。また、ビット深度が10ビットの場合には、参照符号351bで示された、Offset[0]測定部~Offset[31]測定部の全てが使用されることとなる。
オフセット決定部353は、各オフセット測定部351が算出したコストを比較し、当該比較結果に基づき、オフセット値の候補の中から、コストが最も低いオフセット値を決定する。そして、オフセット決定部353は、決定したオフセット値と、当該オフセット値に対応するコストとを出力する。この出力を受けて、モード判定部340(図7参照)は、SAOの各モードについて算出された各コストを比較し、当該比較結果に基づき、符号化効率を最も向上させることが可能なSAOのモードと、当該モードに対応するオフセット値とをCTUごと(即ち、LCUごと)に特定する。
次に、図12を参照して、比較例に係るオフセット判定部350aの一連の処理の流れの一例について説明する。図12は、比較例に係るオフセット判定部350aの一連の処理の流れの一例を示したフローチャートである。
(ステップS611~S614)
まず、オフセット判定部350aは、カウンタ値であるCountを0で初期化する(ステップS611)。そして、カウンタ値Countが示すオフセット値の候補についてコストを算出する。例えば、カウンタ値Countが0の場合には、オフセット判定部350aは、オフセット値「0」のコストを算出する。このとき、図10に示す例の場合には、各オフセット測定部351のうち、Offset[0]測定部がオフセット値「0」のコストを算出することとなる。同様に、カウンタ値Countが1の場合には、オフセット判定部350aは、オフセット値「1」のコストを算出する(ステップS613)。コストの算出が完了すると、オフセット判定部350aは、カウンタ値Countをインクリメントする(ステップS614)。
まず、オフセット判定部350aは、カウンタ値であるCountを0で初期化する(ステップS611)。そして、カウンタ値Countが示すオフセット値の候補についてコストを算出する。例えば、カウンタ値Countが0の場合には、オフセット判定部350aは、オフセット値「0」のコストを算出する。このとき、図10に示す例の場合には、各オフセット測定部351のうち、Offset[0]測定部がオフセット値「0」のコストを算出することとなる。同様に、カウンタ値Countが1の場合には、オフセット判定部350aは、オフセット値「1」のコストを算出する(ステップS613)。コストの算出が完了すると、オフセット判定部350aは、カウンタ値Countをインクリメントする(ステップS614)。
以上のようにして、オフセット判定部350aは、画素のビット深度に応じて、各オフセット値におけるコストを算出する(ステップS612、NO)。例えば、ビット深度が8ビットの場合には、オフセット判定部350aは、オフセット値「0」~「7」のそれぞれについてコストを算出する。また、ビット深度が10ビットの場合には、オフセット判定部350aは、オフセット値「0」~「31」のそれぞれについてコストを算出する。
(ステップS615)
ビット深度に応じて各カウンタ値のコストの算出が完了すると(ステップS612、YES)、オフセット判定部350aは、算出した各オフセット値のコストを比較し、当該比較結果に基づき、コストが最も低いオフセット値を決定する。
ビット深度に応じて各カウンタ値のコストの算出が完了すると(ステップS612、YES)、オフセット判定部350aは、算出した各オフセット値のコストを比較し、当該比較結果に基づき、コストが最も低いオフセット値を決定する。
以上、図10~図12を参照して説明したように、画素のビット深度が8ビットの場合は、オフセット値のとり得る値は0~7となり、オフセット判定部350aは、オフセット値0~7のそれぞれについて計8回のコスト計算を行うことになる。また、ビット深度が10ビットの場合には、オフセット値のとり得る値は0~31となるため、オフセット判定部350aは、オフセット値0~31のそれぞれについて計32回のコスト計算を行うこととなる。
即ち、画素のビット深度が10ビットの場合には、ビット深度が8ビットの場合に比べてオフセット値の候補数が4倍となるため、コスト計算の処理量についても、ビット深度が8ビットの場合の4倍の処理量となる。そのため、ビット深度が10ビットの画像を処理対象とする場合には、図12に基づき説明したように、オフセット値それぞれのコスト計算の回数(処理量)が、ビット深度が8ビットの場合に比べて4倍となり、消費電力の増加の要因となり得る。
また、ビット深度が10ビットの画像を処理対象とする場合には、図10に示すように、ビット深度が8ビットの場合に比べて、4倍の数のオフセット測定部351(即ち、Offset[0]測定部~Offset[31]測定部)が必要となり、回路規模が増加する場合が少なからずある。また、ビット深度が10ビットの画像を処理対象となる場合に、追加で必要となる、オフセット値8~31のコストを計算するための回路、即ち、Offset[8]測定部~Offset[31]測定部については、画素のビット深度が8ビットの場合には使用されない。換言すると、画素のビット深度が8ビットの画像を処理対象とする限りは、Offset[8]測定部~Offset[31]測定部は冗長な構成となり得る。
そこで、本実施形態に係るオフセット判定部350は、ビット深度が10ビットの場合に、オフセット値として取り得る値(即ち、0~31)の中から当該オフセット値の候補を制限し、制限された候補の中から適用するオフセット値を特定する。このような構成により、本実施形態に係るオフセット判定部350は、オフセット値それぞれのコスト計算のための処理量を、ビット深度が8ビットの場合と10ビットの場合とで共通化して、回路規模や消費電力を低減する。そこで、以下に、本実施形態に係るオフセット判定部350の詳細について説明する。
<<2-5-2.オフセット判定部の構成例>>
まず、図13を参照して、本実施形態に係るオフセット判定部350の構成の一例について説明する。図13は、第1の実施形態に係るオフセット判定部350の構成の一例について示したブロック図である。
まず、図13を参照して、本実施形態に係るオフセット判定部350の構成の一例について説明する。図13は、第1の実施形態に係るオフセット判定部350の構成の一例について示したブロック図である。
図13に示すように、本実施形態に係るオフセット判定部350は、候補制御部355を備え、オフセット測定部351として、Offset[0]測定部~Offset[7]測定部のみを備える点で、図10に示した比較例に係るオフセット判定部350aと異なる。そこで、本説明では、本実施形態に係るオフセット判定部350の各構成について、主に、オフセット判定部350aと異なる部分に着目して説明する。
候補制御部355は、画素のビット深度と、復号画像データの復号元である量子化データを生成する際の量子化ステップ(QP)とに基づき、オフセット値の候補を決定し、決定した各候補それぞれを、Offset[0]測定部~Offset[7]測定部に割り当てる。なお、当該量子化ステップの取得元については、前述した通り特に限定はされない。具体的な一例として、候補制御部355は、量子化部15が、復号画像データの復号元である量子化データを生成する際に適用した量子化ステップを、当該量子化部15から取得してもよい。
ここで、量子化ステップと、SAO処理のために適用されるオフセット値との関係の傾向について説明する。一般的には、変換係数データ(直交化後の予測誤差データ)を量子化することで量子化データを生成する場合には、量子化ステップが小さいほど、原画像データと復号画像データとの差が小さくなる傾向にある(即ち、量子化誤差が小さくなる傾向にある)。そのため、量子化ステップが小さい場合には、SAO処理のために適用するオフセット値として、比較的小さい値が選択される場合が多い。
また、画像中の画素値の変化する場合(例えば、テクスチャがより細かい画像の場合)には、より大きい量子化ステップが選択される傾向にある。また、量子化ステップが大きいほど、原画像データと復号画像データとの差が大きくなる傾向にある(即ち、量子化誤差が大きくなる傾向にある)。このように量子化誤差が大きい場合には、オフセット値の各候補についてコストを計算しても、近傍に位置する候補間では、算出されるコストの差が大きく変化しない場合が少なからずある。
以上のような特性を利用して、候補制御部355は、画素のビット深度が10ビットの場合に、オフセット値として取り得る値(即ち、0~31)の中から当該オフセット値の候補を、量子化ステップに基づき制限する。そして、候補制御部355は、制限されたオフセット値の各候補それぞれを、Offset[0]測定部~Offset[7]測定部に割り当てる。
ここで、図14~図16を参照して、オフセット値の各候補と、Offset[0]測定部~Offset[7]測定部との対応関係の一例について説明する。図14~図16は、オフセット値の各候補と、Offset[0]測定部~Offset[7]測定部との対応関係を示した制御テーブルの一例について説明するための説明図である。なお、図14~図16において、定数N(Nは、0≦Nの整数)は、オフセット値の候補の数(換言すると、オフセット測定部351の数)に応じて決まる値であり、N+1がオフセット値の候補の数に相当する。
例えば、図14に示す制御テーブルd51は、画素のビット深度が8ビットの場合と、画素のビット深度が10ビットであり、かつ、量子化ステップが第1の閾値TH21未満(QP<TH21)の場合とのいずれかの場合に対応している。
図14に示す制御テーブルd51では、Offset[0]測定部~Offset[N]測定部に対して、オフセット値の候補として0~Nを対応付けている。即ち、候補制御部355は、制御テーブルd51に基づき各オフセット測定部351にオフセット値の候補を割り当てる場合には、Offset[i]測定部(iは、0≦i≦Nの整数)には、オフセット値としてiを割り当ることとなる。例えば、N=7の場合には、図13に示すように、Offset[0]測定部、Offset[1]測定部、…、Offset[7]測定部に対して、オフセット値の候補として0、1、…、7が割り当てられることとなる。
次に、図15に示す制御テーブルd52について説明する。制御テーブルd52は、画素のビット深度が10ビットであり、かつ、量子化ステップが第1の閾値TH21より大きく第2の閾値TH22以下(TH21<QP≦TH22)の場合に対応している。なお、第2の閾値TH22は、第1の閾値TH21よりも大きい値であることは言うまでもない。
図15に示す制御テーブルd52では、Offset[0]測定部~Offset[N]測定部に対して、オフセット値の候補として0~2×Nを対応付けている。即ち、候補制御部355は、制御テーブルd52に基づき各オフセット測定部351にオフセット値の候補を割り当てる場合には、Offset[i]測定部(iは、0≦i≦Nの整数)には、オフセット値として2×iを割り当ることとなる。例えば、N=7の場合には、図15に示すように、Offset[0]測定部、Offset[1]測定部、…、Offset[7]測定部に対して、オフセット値の候補として0、2、…、14が割り当てられることとなる。
次に、図16に示す制御テーブルd53について説明する。制御テーブルd53は、画素のビット深度が10ビットであり、かつ、量子化ステップが第2の閾値TH22より大きい場合(TH22<QP)に対応している。
図14に示す制御テーブルd53では、Offset[0]測定部~Offset[N]測定部に対して、オフセット値の候補として0~4×Nを対応付けている。即ち、候補制御部355は、制御テーブルd52に基づき各オフセット測定部351にオフセット値の候補を割り当てる場合には、Offset[i]測定部(iは、0≦i≦Nの整数)には、オフセット値として4×iを割り当ることとなる。例えば、N=7の場合には、図16に示すように、Offset[0]測定部、Offset[1]測定部、…、Offset[7]測定部に対して、オフセット値の候補として0、4、…、28が割り当てられることとなる。
このように、候補制御部355は、画素のビット深度と取得した量子化ステップとに基づき、制御テーブルd51~d53のいずれかを選択し、選択した制御テーブルに応じて、Offset[0]測定部~Offset[7]測定部それぞれに対してオフセット値の候補を割り当てる。
具体的には、候補制御部355は、画素のビット深度が10ビットの場合には、量子化ステップが小さいほど、オフセット値の候補の最大値がより小さくなるように設定し、隣接する候補間の間隔(即ち、隣接する候補間の差分)がより小さくなるように設定する。また、候補制御部355は、画素のビット深度が10ビットの場合には、量子化ステップが大きいほど、オフセット値の候補の最大値がより大きくなるように設定し、隣接する候補間の間隔(即ち、隣接する候補間の差分)がより大きくなるように設定する。以上のような構成により、候補制御部355は、画素のビット深度が10ビットの場合におけるオフセット値の候補数を、8ビットの場合におけるオフセット値の候補数(換言すると、8ビットの場合にオフセット値がとり得る値の範囲)に制限することが可能となる。
なお、第1の閾値TH21及び第2の閾値TH22の値については、画像符号化装置の構成や各種パラメタ(例えば、原画像データの解像度等)に応じて、あらかじめ実験を行うことで事前に決定すればよい。また、上記に説明した構成はあくまで一例であり、オフセット測定部351の数や、オフセット値の候補を特定するための制御テーブルの数は、適宜変更してもよい。もちろん、オフセット測定部351の数や、制御テーブルの数を変更する場合には、各制御テーブルで設定されるオフセット値の候補や、各制御テーブルを切り替えるための閾値には、事前の実験等に基づき決定した適切な値を、あらかじめ設定しておけばよい。
なお、以降の処理については、前述した比較例に係るオフセット判定部350aと同様である。即ち、各オフセット測定部351(即ち、Offset[0]測定部~Offset[7]測定部の)は、割り当てられたオフセット値の候補についてコストを算出して、オフセット決定部353に出力する。
オフセット決定部353は、各オフセット測定部351が算出したコストを比較し、当該比較結果に基づき、オフセット値の候補の中から、コストが最も低いオフセット値を決定する。そして、オフセット決定部353は、決定したオフセット値と、当該オフセット値に対応するコストとを出力する。この出力を受けて、モード判定部340(図7参照)は、SAOの各モードについて算出された各コストを比較し、当該比較結果に基づき、符号化効率を最も向上させることが可能なSAOのモードと、当該モードに対応するオフセット値とをCTUごと(即ち、LCUごと)に特定する。
以上、図13~図16を参照して、本実施形態に係るオフセット判定部350の構成の一例について説明した。上記に示した構成により、本実施形態に係るオフセット判定部350は、画素のビット深度が10ビットの場合におけるコスト計算の処理量を、8ビットの場合と同等の処理量に制限することが可能となる。そのため、本実施形態に係るオフセット判定部350は、ビット深度が10ビットの場合においても、オフセット測定部351として8ビットの場合と同様の構成(即ち、Offset[0]測定部~Offset[7]測定部)を用いて、オフセット値を決定することが可能となる。即ち、本実施形態に係るオフセット判定部350に依れば、比較例に係るオフセット判定部350aに比べて回路規模を縮小することが可能となる。また、本実施形態に係るオフセット判定部350は、コスト計算の処理量の低減に伴い、比較例に係るオフセット判定部350aに比べて消費電力を低減することが可能となる。
なお、図13を参照しながら上記に説明したオフセット判定部350の構成はあくまで一例であり、必ずしも、図10に示す構成に限定するものではない。例えば、本実施形態に係るオフセット判定部350に、オフセット測定部351としてOffset[0]測定部~Offset[31]測定部を設け、一部のみを使用するモードと、全てを使用するモードとを切り替えられるように、当該オフセット判定部350を構成してもよい。
例えば、バッテリー駆動時のように消費電力を制限する必要がある場合には、オフセット測定部351として、前述したように、Offset[0]測定部~Offset[7]測定部のみを使用してもよい。また、電源駆動時のように処理量をより向上させることが可能な場合には、オフセット測定部351として、Offset[0]測定部~Offset[31]測定部の全てを使用し、前述した比較例に係るオフセット判定部350aと同様に動作してもよい。このように、本実施形態に係るオフセット測定部351は、画像符号化装置が動作する状況等のように、所定の条件に応じて、一部のオフセット測定部351のみを使用するモードに切り替えることで、コスト計算の処理量の低減できるように構成してもよい。
<<2-5-3.オフセット判定部の処理の流れ>>
次に、図17を参照して、本実施形態に係るオフセット判定部350の一連の処理の流れの一例について説明する。図17は、本実施形態に係るオフセット判定部350の一連の処理の流れの一例を示したフローチャートである。なお、図17において、定数N(Nは、0≦Nの整数)は、前述したように、オフセット値の候補の数(換言すると、オフセット測定部351の数)に応じて決まる値であり、N+1がオフセット値の候補の数に相当する。
次に、図17を参照して、本実施形態に係るオフセット判定部350の一連の処理の流れの一例について説明する。図17は、本実施形態に係るオフセット判定部350の一連の処理の流れの一例を示したフローチャートである。なお、図17において、定数N(Nは、0≦Nの整数)は、前述したように、オフセット値の候補の数(換言すると、オフセット測定部351の数)に応じて決まる値であり、N+1がオフセット値の候補の数に相当する。
(ステップS621)
まず、オフセット判定部350は、カウンタ値であるCountを0で初期化する(ステップS611)。そして、カウンタ値Countが示すオフセット値の候補についてコストを算出する。このとき、オフセット判定部350は、画素のビット深度と、復号画像データの復号元である量子化データを生成する際の量子化ステップ(QP)とに基づき、オフセット値の候補を制限する。
まず、オフセット判定部350は、カウンタ値であるCountを0で初期化する(ステップS611)。そして、カウンタ値Countが示すオフセット値の候補についてコストを算出する。このとき、オフセット判定部350は、画素のビット深度と、復号画像データの復号元である量子化データを生成する際の量子化ステップ(QP)とに基づき、オフセット値の候補を制限する。
(ステップS623、S624)
具体的には、画素のビット深度が8ビットの場合と、画素のビット深度が10ビットであり、かつ、量子化ステップが第1の閾値TH21以下(QP≦TH21)の場合とのいずれかの場合には(ステップS623、NO)、オフセット判定部350は、当該条件に対応したテーブル1を選択する。なお、テーブル1の具体的な一例としては、図14に示す制御テーブルd51が挙げられる。
具体的には、画素のビット深度が8ビットの場合と、画素のビット深度が10ビットであり、かつ、量子化ステップが第1の閾値TH21以下(QP≦TH21)の場合とのいずれかの場合には(ステップS623、NO)、オフセット判定部350は、当該条件に対応したテーブル1を選択する。なお、テーブル1の具体的な一例としては、図14に示す制御テーブルd51が挙げられる。
そして、オフセット判定部350は、選択されたテーブル1に基づき、カウンタ値Countが示すオフセット値の候補を特定し、特定した候補についてコストを計算する。この場合には、カウンタ値Count=i(iは、0≦i≦Nの整数)の場合には、オフセット値の候補としてiが特定されることとなる。
(ステップS625)
また、画素のビット深度が10ビットであり、かつ、量子化ステップが第1の閾値TH21より大きい場合には(ステップS624、YES)、オフセット判定部350は、当該量子化ステップが第2の閾値TH22(TH22>TH21)より大きいか否かを判定する。
また、画素のビット深度が10ビットであり、かつ、量子化ステップが第1の閾値TH21より大きい場合には(ステップS624、YES)、オフセット判定部350は、当該量子化ステップが第2の閾値TH22(TH22>TH21)より大きいか否かを判定する。
(ステップS626)
量子化ステップが第2の閾値TH22以下の場合には(ステップS625、NO)、オフセット判定部350は、当該条件に対応したテーブル2を選択する。なお、テーブル2の具体的な一例としては、図15に示す制御テーブルd52が挙げられる。
量子化ステップが第2の閾値TH22以下の場合には(ステップS625、NO)、オフセット判定部350は、当該条件に対応したテーブル2を選択する。なお、テーブル2の具体的な一例としては、図15に示す制御テーブルd52が挙げられる。
そして、オフセット判定部350は、選択されたテーブル2に基づき、カウンタ値Countが示すオフセット値の候補を特定し、特定した候補についてコストを計算する。この場合には、カウンタ値Count=i(iは、0≦i≦Nの整数)の場合には、オフセット値の候補として2×iが特定されることとなる。
(ステップS627)
また、量子化ステップが第2の閾値TH22より大きい場合には(ステップS625、YES)、オフセット判定部350は、当該条件に対応したテーブル3を選択する。なお、テーブル3の具体的な一例としては、図16に示す制御テーブルd53が挙げられる。
また、量子化ステップが第2の閾値TH22より大きい場合には(ステップS625、YES)、オフセット判定部350は、当該条件に対応したテーブル3を選択する。なお、テーブル3の具体的な一例としては、図16に示す制御テーブルd53が挙げられる。
そして、オフセット判定部350は、選択されたテーブル3に基づき、カウンタ値Countが示すオフセット値の候補を特定し、特定した候補についてコストを計算する。この場合には、カウンタ値Count=i(iは、0≦i≦Nの整数)の場合には、オフセット値の候補として4×iが特定されることとなる。
(ステップS628)
オフセット判定部350は、カウンタ値Countが示すオフセット値の候補を特定し、特定した候補についてコストの計算が完了すると、カウンタ値Countをインクリメントする
オフセット判定部350は、カウンタ値Countが示すオフセット値の候補を特定し、特定した候補についてコストの計算が完了すると、カウンタ値Countをインクリメントする
(ステップS622)
以上のようにして、オフセット判定部350は、カウンタ値Countが所定の定数Nより大きくなるまで、オフセット値の候補を特定し、特定した候補についてコストの計算を行う(ステップS622、NO)。
以上のようにして、オフセット判定部350は、カウンタ値Countが所定の定数Nより大きくなるまで、オフセット値の候補を特定し、特定した候補についてコストの計算を行う(ステップS622、NO)。
(ステップS629)
カウンタ値Countが0~Nのそれぞれについて、オフセット値の候補を特定し、特定した候補についてコストの計算が完了すると(ステップS622、YES)、オフセット判定部350は、オフセット値の候補ごとに算出したコストを比較する。そして、オフセット判定部350は、当該比較結果に基づき、コストが最も低い候補をオフセット値として決定する。
カウンタ値Countが0~Nのそれぞれについて、オフセット値の候補を特定し、特定した候補についてコストの計算が完了すると(ステップS622、YES)、オフセット判定部350は、オフセット値の候補ごとに算出したコストを比較する。そして、オフセット判定部350は、当該比較結果に基づき、コストが最も低い候補をオフセット値として決定する。
以上、図17を参照して、本実施形態に係るオフセット判定部350の一連の処理の流れの一例について説明した。
[2-6.まとめ]
以上、説明したように、本実施形態に係る画像符号化装置では、オフセット判定部350は、画素のビット深度と、復号画像データの復号元である量子化データを生成する際の量子化ステップ(QP)とに基づき、SAO処理のためのオフセット値の候補を制限する。
以上、説明したように、本実施形態に係る画像符号化装置では、オフセット判定部350は、画素のビット深度と、復号画像データの復号元である量子化データを生成する際の量子化ステップ(QP)とに基づき、SAO処理のためのオフセット値の候補を制限する。
このような構成により、本実施形態に係るオフセット判定部350は、画素のビット深度が10ビットの場合におけるコスト計算の処理量を、8ビットの場合と同等の処理量に制限することが可能となる。そのため、本実施形態に係るオフセット判定部350に依れば、ビット深度が10ビットの場合においても、オフセット値の各候補のコストを計算する構成として、8ビットの場合と同様の構成を利用して、オフセット値を決定することが可能となる。即ち、本実施形態に係る画像符号化装置に依れば、オフセット判定部350の回路規模を、画素のビット深度が10ビットの場合にとり得るオフセット値それぞれについてコストを計算する場合に比べて縮小することが可能となる。また、本実施形態に係る画像符号化装置は、画素のビット深度が10ビットの場合におけるコスト計算の処理量の低減に伴い、消費電力をより低減することも可能となる。
なお、上記では、量子化ステップに基づき、オフセット値の候補を制限する例について説明したが、オフセット値の候補を制限するための判定基準は、必ずしも量子化ステップには限定されない。具体的な一例として、オフセット判定部350は、原画像データの特徴量に基づき、オフセット値の候補を制限してもよい。
原画像データの特徴量の具体的な一例として、例えば、原画像データ中の画素値の変化量の指標となる分散値が挙げられる。
例えば、原画像データの分散値が小さい場合には、画素値の変化が小さい場合を示している。分散値が小さい原画像データの具体的な一例として、濃淡の少ない、もしくは、濃淡の変化が緩やかな平坦な画像が挙げられる。このような場合には、ブロック(CTU)間の類似性が高く、原画像データと復号画像データとの差が小さくなる傾向にある。そのため、原画像データの分散値が小さい場合には、オフセット判定部350は、図14に示した制御テーブルd51のように、オフセット値がより小さくなるように、オフセットの候補を制限してもよい。
また、原画像データの分散値が大きい場合には、画素値の変化が大きい場合を示している。分散値が大きい原画像データの具体的な一例として、テクスチャのより細かい画像が挙げられる。このような場合には、ブロック(CTU)間の類似性が低く、原画像データと復号画像データとの差が大きくなる傾向にある。そのため、原画像データの分散値が大きい場合には、オフセット判定部350は、図15及び図16に示した制御テーブルd52及びd53のように、オフセット値がより大きくなるように、オフセットの候補を制限してもよい。
なお、原画像データの特徴量については、例えば、統計量取得部330が、取得した原画像データに基づき特徴量として算出すればよい。
以上のように、適用されるオフセット値の傾向に応じてあらかじめ条件を設定し、当該条件に応じてオフセット判定部350がオフセット値の候補を制限できれば、オフセット値の候補を制限するための判定基準は特に限定されない。もちろん、適用されるオフセット値の傾向に応じて条件が設定できれば、原画像データの特徴量として、分散値以外のパラメタを用いてもよいことは言うまでもない。
<3.第2の実施形態>
[3-1.概要]
次に、第2の実施形態に係る画像符号化装置について説明する。前述した第1の実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、オフセット値の候補を制限することで、当該オフセット値を特定するための処理量を低減することにより、一連のコスト計算に係る処理量を低減していた。これに対して、本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、処理対象となるCTUに対するイントラ予測の結果として特定される予測モードに応じて、SAOのモードの候補を制限する。これにより、本実施形態に係る画像符号化装置は、SAOのモードを特定するための処理量を低減することにより、一連のコスト計算に係る処理量を低減する。そこで、まず、図18~図20を参照して、本実施形態に係る画像符号化装置の概要について、特に、サンプル適応オフセットフィルタに着目して説明する。
[3-1.概要]
次に、第2の実施形態に係る画像符号化装置について説明する。前述した第1の実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、オフセット値の候補を制限することで、当該オフセット値を特定するための処理量を低減することにより、一連のコスト計算に係る処理量を低減していた。これに対して、本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、処理対象となるCTUに対するイントラ予測の結果として特定される予測モードに応じて、SAOのモードの候補を制限する。これにより、本実施形態に係る画像符号化装置は、SAOのモードを特定するための処理量を低減することにより、一連のコスト計算に係る処理量を低減する。そこで、まず、図18~図20を参照して、本実施形態に係る画像符号化装置の概要について、特に、サンプル適応オフセットフィルタに着目して説明する。
図18は、H.265/HEVCにおけるイントラ予測の予測モードについて説明するための説明図である。イントラ予測の予測モードとしては、プレーナ予測、DC予測、及び方向性予測が存在し、方向性予測については32種類の予測方向が設定される。そのため、H.265/HEVCでは、プレーナ予測、DC予測、及び方向性予測の各予測方法と、当該方向性予測における各予測方向とのそれぞれを、予測モードとして設定することで区別している。
具体的には、図18に示すように、プレーナ予測の場合には、予測モードのモード値として「0」が設定される。また、DC予測の場合には、予測モードのモード値として「1」が設定される。
また、方向性予測の場合には、予測モードのモード値として「2~34」のいずれかが、予測方向に応じて設定される。具体的な一例として、図18に示すように、方向性予測の予測方向が水平方向(右から左に向けた方向)の場合には、予測モードのモード値として「10」が設定される。また、他の一例として、方向性予測の予測方向が垂直方向(下から上に向けた方向)の場合には、予測モードのモード値として「26」が設定される。
ここで、図19を参照して、イントラ予測の予測モードとして方向性予測が選択された場合の復号画像データの特徴について説明する。図19は、イントラ予測の予測モードとして方向性予測が選択された場合の復号画像データの特徴について説明するための説明図である。
図19において、参照符号d10は、原画像中の予測対象ブロックを示しており、参照符号d20は、予測対象ブロックd10の復号画像データを示している。また、参照符号d11は、予測対象ブロックd10に対するイントラ予測のための予測ブロックを示しており、参照符号d13は、方向性予測の予測方向を示している。
図19に示す例では、予測対象ブロックd10は、縦方向に各画素間の相関性が高い。そのため、図19に示す例の場合には、イントラ予測の予測モードとして、参照符号d13に示すように縦方向に沿った予測方向を示す方向性予測が選択され、予測モードのモード値として「26」が設定される。
図19に示す例において、予測対象ブロックd10と復号画像データd20とを比較するとわかるように、復号画像データd20の各画素は、予測方向d13と同じ方向に沿って画素間の相関性が高い。そのため、復号画像データd20は、イントラ予測の予測方向d13と同じ方向にはエッジが立ちにくい傾向にある。そのため、例えば、図19に示す復号画像データd20が処理対象の場合には、図1に示すエッジオフセットの各クラスEO_0~EO_3のうち、予測方向d13と同じ成分を有するクラスEO_1~EO_3は選択されにくく、クラスEO_0がより選択されやすい傾向にある。
そこで、本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、上記に説明した特性を利用することで、イントラ予測の各予測モードとSAOの各モードとをあらかじめ対応付けておく。例えば、図20に示す制御テーブルd30は、本実施形態に係る画像符号化装置における、イントラ予測の予測モードとSAOの各モードとの対応関係の一例を示している。
図20に示した制御テーブルd30において、「intra mode」は、図18に基づき説明した、イントラ予測の各予測モードにおけるモード値を示している。また、「SAO mode」は、図1及び図2に示したSAOの各モードを示している。また、「SaoTypeIdx」は、SAOのモードに応じて設定される符号化パラメタを示しており、同パラメタは、H.265/HEVCの規格に基づき規定されている。
図20に示すように、予測モードのモード値が「0」の場合(即ち、プレーナ予測の場合)、及び、モード値が「1」の場合(即ち、DC予測の場合)には、SAOのモードとしてバンドオフセットが設定される。図20において、「BO」は、バンドオフセットを示している。
また、予測モードのモード値が「2~34」の場合(即ち、方向性予測の場合)には、SAOのモードとしてエッジオフセットが設定される。具体的には、予測モードのモード値が示す予測方向と、エッジオフセットの対象画素cに対する隣接画素a及びbの方向との相対的な位置関係が、より垂直に近くなるように、当該モード値と、エッジオフセットの各クラスEO_0~EO_3とが対応付けられている。
例えば、予測モードのモード値が、2~5、30~34の場合には、エッジオフセットのクラスEO_2が対応付けられている。また、予測モードのモード値が、6~13の場合には、クラスEO_1が対応付けられている。同様に、予測モードのモード値が、14~21の場合には、クラスEO_3が対応付けられており、予測モードのモード値が、22~29の場合には、クラスEO_0が対応付けられている。
そして、サンプル適応オフセットフィルタは、復号画像データd20(CTU単位)に対応する予測対象ブロックd10の予測モードと、図20に示した制御テーブルd30とを照合することで、当該復号画像データd20におけるSAOのモードを特定する。
なお、前述したように、第1の実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、SAOのモードごとに(即ち、バンドオフセットと、エッジオフセットの各クラスそれぞれについて)、オフセット値及びコストを算出し、当該コストを比較することで、適用するSAOのモードとオフセット値とを決定していた。これに対して、本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、イントラ予測の予測モードに応じてSAOのモードを決定するため、決定されたモードにおけるオフセット値の算出のみを実行すればよい。即ち、本実施形態に係る画像符号化装置は、SAOのモードごとにオフセット値及びコストを算出する場合に比べて、コスト計算の処理量を低減することが可能となり、ひいては、消費電力を低減することも可能となる。
そこで、以降では、本実施形態に係る画像符号化装置について、前述した第1の実施形態とは異なる部分に着目し、特に、ループフィルタ内のサンプル適応オフセットフィルタについて、さらに詳しく説明する。
[3-2.ループフィルタの構成例]
まず、図21を参照して、本実施形態に係る画像符号化装置におけるループフィルタ24の構成の一例について説明する。図21は、本実施形態に係るループフィルタ24の構成の一例を示したブロック図である。なお、本説明では、第1の実施形態に係るループフィルタ24(図4参照)と異なる構成に着目して説明し、その他の構成については詳細な説明は省略する。
まず、図21を参照して、本実施形態に係る画像符号化装置におけるループフィルタ24の構成の一例について説明する。図21は、本実施形態に係るループフィルタ24の構成の一例を示したブロック図である。なお、本説明では、第1の実施形態に係るループフィルタ24(図4参照)と異なる構成に着目して説明し、その他の構成については詳細な説明は省略する。
図21に示すように、本実施形態に係るループフィルタ24では、サンプル適応オフセットフィルタ300は、処理対象となる復号画像データの各ブロックに対して、イントラ予測時に特定された予測モード(即ち、符号化パラメタのうちの予測パラメタ)を取得する。例えば、図6に示した画像符号化装置の一連の処理の流れのうち、ステップS11においてイントラ予測の予測モードが決定され、サンプル適応オフセットフィルタ300は、ステップS17に示す処理において、ステップS11で決定された予測モードを使用する。
なお、サンプル適応オフセットフィルタ300が、処理対象となるCTUに対して設定されたイントラ予測の予測モードを取得できれば、当該予測モードの取得元は特に限定されない。具体的な一例として、サンプル適応オフセットフィルタ300は、イントラ予測部30(図3参照)から、処理対象となるブロックに対応するイントラ予測の予測モードを取得してもよい。
以上、図21を参照して、本実施形態に係るループフィルタ24について説明した。
[3-3.サンプル適応オフセットフィルタの構成例]
次に、図22を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例について説明する。図22は、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例を示したブロック図である。なお、本実施形態に係るサンプル適応オフセットフィルタ300は、モード判定部340の動作が、前述した第1の実施形態に係るサンプル適応オフセットフィルタ300(図7参照)とは異なる。そこで、本説明では、モード判定部340に着目して説明し、その他の構成については、詳細な説明は省略する。
次に、図22を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例について説明する。図22は、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例を示したブロック図である。なお、本実施形態に係るサンプル適応オフセットフィルタ300は、モード判定部340の動作が、前述した第1の実施形態に係るサンプル適応オフセットフィルタ300(図7参照)とは異なる。そこで、本説明では、モード判定部340に着目して説明し、その他の構成については、詳細な説明は省略する。
本実施形態に係るモード判定部340は、復号画像データ中のCTUごとに、当該CTUに対して設定されたイントラ予測の予測モード(即ち、符号化パラメタのうちの予測パラメタ)を取得する。なお、当該予測モードの取得元としては、例えば、イントラ予測部30(図3参照)が挙げられる。
また、モード判定部340は、図20に示すような、イントラ予測の予測モードとSAOのモードとをあらかじめ対応付けた制御テーブルd30を参照可能に構成されている。なお、モード判定部340が、制御テーブルd30を参照可能であれば、当該制御テーブルd30のデータを記憶する場所は特に限定されない。
モード判定部340は、取得したイントラ予測の予測モードと、制御テーブルd30とを照合することで、処理対象となるCTUに対して設定するSAOのモードを決定する。
例えば、イントラ予測の予測モードのモード値が0の場合、即ち、プレーナ予測の場合には、モード判定部340は、制御テーブルd30に基づき、SAOのモードとしてバンドオフセットを選択する。また、イントラ予測の予測モードのモード値が1の場合、即ち、DC予測の場合についても、モード判定部340は、制御テーブルd30に基づき、SAOのモードとしてバンドオフセットを選択する。これらの場合には、SaoTypeIdxに対して、バンドオフセットを示す1が設定されることとなる。
また、イントラ予測の予測モードのモード値が2~34の場合、即ち、方向性予測の場合には、モード判定部340は、制御テーブルd30に基づき、SAOのモードとしてエッジオフセットを選択し、当該エッジオフセットのクラスを特定する。この場合には、SaoTypeIdxに対して、エッジオフセットを示す2が設定されることとなる。
SAOのモードを決定すると、モード判定部340は、決定したSAOのモードについて、オフセット値と当該オフセット値に対応するコストとを、オフセット判定部350に算出させる。
例えば、SAOのモードがバンドオフセットの場合には、モード判定部340は、当該バンドオフセットの各バンドそれぞれについて、オフセット値と当該オフセット値に対応するコストとをオフセット判定部350に算出させる。
また、SAOのモードがエッジオフセットの場合には、モード判定部340は、エッジオフセットの各クラスEO_0~EO_3のうち、決定されたクラスのみをオフセット値と当該オフセット値に対応するコストとの算出対象とする。即ち、モード判定部340は、決定されたクラスについて、カテゴリ1~4(図1参照)それぞれに対し、オフセット値と当該オフセット値に対応するコストとをオフセット判定部350に算出させる。
なお、オフセット判定部350は、前述した第1の実施形態と同様である。即ち、オフセット判定部350は、オフセット値の候補それぞれについてコストを算出し、算出した各コストを比較することで、符号化効率を最も向上させることが可能なオフセット値を特定する。
そして、モード判定部340は、オフセット判定部350に算出させたコストを評価することで、CTUごとにSAOのモードと当該モードに対応するオフセット値とを特定する。例えば、SAOのモードがバンドオフセットの場合には、モード判定部340は、各バンドそれぞれについて算出されたコストを比較することで、符号化効率を最も向上させることが可能なバンド(連続する4つのバンド)を特定する。また、SAOのモードがエッジオフセットの場合には、モード判定部340は、特定したクラスのカテゴリ1~4(図1参照)それぞれについて算出されたコストを比較することで、符号化効率を最も向上させることが可能なカテゴリを特定する。
そして、モード判定部340は、CTUごとに特定したモードと、当該モードに対応するオフセット値とを、するフィルタ処理部390と可逆符号化部16とに出力する。
なお、以降の処理については、前述した第1の実施形態に係るサンプル適応オフセットフィルタ300と同様である。即ち、フィルタ処理部390は、復号画像データの各CTUに対して、モード判定部340から供給されるSAOのモードとオフセット値とに基づいてSAO処理を施す。そして、フィルタ処理部390は、SAO処理が施された復号画像を、適応ループフィルタ400(図4参照)に出力する。
[3-4.モード判定部の処理の流れ]
次に、モード判定部の処理の流れについて説明する。なお、本説明では、本実施形態に係るモード判定部の特徴をわかりやすくするために、まず、従来の方式に基づくモード判定部の処理の流れを比較例として説明したうえで、本実施形態に係るモード判定部340の処理の流れについて説明する。
次に、モード判定部の処理の流れについて説明する。なお、本説明では、本実施形態に係るモード判定部の特徴をわかりやすくするために、まず、従来の方式に基づくモード判定部の処理の流れを比較例として説明したうえで、本実施形態に係るモード判定部340の処理の流れについて説明する。
<<3-4-1.モード判定部の比較例>>
図23を参照して、比較例に係るモード判定部の一連の処理の流れの一例について説明する。図23は、比較例に係るモード判定部の一連の処理の流れの一例を示したフローチャートである。なお、以降では、比較例に係るモード判定部と、本実施形態に係るモード判定部340とを明示的に区別する場合には、比較例に係るモード判定部を、「モード判定部340a」と記載する場合がある。
図23を参照して、比較例に係るモード判定部の一連の処理の流れの一例について説明する。図23は、比較例に係るモード判定部の一連の処理の流れの一例を示したフローチャートである。なお、以降では、比較例に係るモード判定部と、本実施形態に係るモード判定部340とを明示的に区別する場合には、比較例に係るモード判定部を、「モード判定部340a」と記載する場合がある。
(ステップS501~S503)
モード判定部340aは、まず、SAOのモードを示すパラメタ「SaoTypeIdx」に0を設定し(ステップS501)、SAO処理を適用しない場合のコストを計算する(ステップS502)。そして、SAO処理を適用しない場合のコストの計算が完了すると、モード判定部340aは、SaoTypeIdxをインクリメントする(ステップS503)。これにより、SaoTypeIdxに1が設定される。
モード判定部340aは、まず、SAOのモードを示すパラメタ「SaoTypeIdx」に0を設定し(ステップS501)、SAO処理を適用しない場合のコストを計算する(ステップS502)。そして、SAO処理を適用しない場合のコストの計算が完了すると、モード判定部340aは、SaoTypeIdxをインクリメントする(ステップS503)。これにより、SaoTypeIdxに1が設定される。
(ステップS504、S511、S512)
次いで、モード判定部340aは、SaoTypeIdxの値が1のため(ステップS504、NO、ステップS511、YES)、バンドオフセットの各バンドそれぞれについて、オフセット値と当該オフセット値に対応するコストとを、オフセット判定部350に算出させる(ステップS512)。これにより、バンドオフセットの各バンドそれぞれに対して、オフセット値と当該オフセット値に対応するコストとが設定される。
次いで、モード判定部340aは、SaoTypeIdxの値が1のため(ステップS504、NO、ステップS511、YES)、バンドオフセットの各バンドそれぞれについて、オフセット値と当該オフセット値に対応するコストとを、オフセット判定部350に算出させる(ステップS512)。これにより、バンドオフセットの各バンドそれぞれに対して、オフセット値と当該オフセット値に対応するコストとが設定される。
(ステップS513)
バンドオフセットの各バンドそれぞれについてコストの算出が完了すると、モード判定部340aは、SaoTypeIdxをインクリメントする。これにより、SaoTypeIdxに2が設定される。
バンドオフセットの各バンドそれぞれについてコストの算出が完了すると、モード判定部340aは、SaoTypeIdxをインクリメントする。これにより、SaoTypeIdxに2が設定される。
(ステップS504、S511、S514)
次いで、モード判定部340aは、SaoTypeIdxの値が2のため(ステップS504、NO、ステップS511、YES)、エッジオフセットの各クラスEO_0~EO_3と各カテゴリ1~4との組み合わせのそれぞれについて、オフセット値と当該オフセット値に対応するコストとを、オフセット判定部350に算出させる(ステップS514)。これにより、エッジオフセットの各クラスそれぞれの各カテゴリ1~4に対して、オフセット値と当該オフセット値に対応するコストとが設定される。
次いで、モード判定部340aは、SaoTypeIdxの値が2のため(ステップS504、NO、ステップS511、YES)、エッジオフセットの各クラスEO_0~EO_3と各カテゴリ1~4との組み合わせのそれぞれについて、オフセット値と当該オフセット値に対応するコストとを、オフセット判定部350に算出させる(ステップS514)。これにより、エッジオフセットの各クラスそれぞれの各カテゴリ1~4に対して、オフセット値と当該オフセット値に対応するコストとが設定される。
(ステップS515)
エッジオフセットの各クラスと各カテゴリとの組み合わせのそれぞれについてコストの算出が完了すると、モード判定部340aは、SaoTypeIdxをインクリメントする。これにより、SaoTypeIdxに3が設定される。
エッジオフセットの各クラスと各カテゴリとの組み合わせのそれぞれについてコストの算出が完了すると、モード判定部340aは、SaoTypeIdxをインクリメントする。これにより、SaoTypeIdxに3が設定される。
(ステップS504)
以上のようにして、SAOの各モードのそれぞれについて、オフセット値と当該オフセット値に対応するコストとが設定される。このとき、SaoTypeIdxには、前述の通り3が設定されていることとなる。
以上のようにして、SAOの各モードのそれぞれについて、オフセット値と当該オフセット値に対応するコストとが設定される。このとき、SaoTypeIdxには、前述の通り3が設定されていることとなる。
(ステップS520)
SaoTypeIdxが3以上の場合には(ステップS504、YES)、モード判定部340aは、SAOの各モードについて算出された各コストを比較し、当該比較結果に基づき、符号化効率を最も向上させることが可能なSAOのモードと、当該モードに対応するオフセット値とを特定する。
SaoTypeIdxが3以上の場合には(ステップS504、YES)、モード判定部340aは、SAOの各モードについて算出された各コストを比較し、当該比較結果に基づき、符号化効率を最も向上させることが可能なSAOのモードと、当該モードに対応するオフセット値とを特定する。
以上、説明したように、比較例に係るモード判定部340aは、SAOの全てのモード、即ち、バンドオフセットと、エッジオフセットの各クラスとのそれぞれについてコスト計算を行う。そして、モード判定部340aは、モードごとに計算されたコストを比較し、当該比較結果に基づいて、SAO処理のためのSAOのモードを特定している。
具体的には、画素のビット深度を8ビットとすると、モード判定部340aは、バンドオフセットにおけるバンド0~31それぞれについて、オフセット値の候補0~7それぞれのコストを計算する。即ち、モード判定部340aは、バンドオフセットについて、(バンド数)×(オフセットの候補数)=32×8=256回のコスト計算を行う。
同様に、モード判定部340aは、エッジオフセットにおけるクラスEO_0~EO_3とカテゴリ1~4との組み合わせのそれぞれについて、オフセット値の候補0~7それぞれのコストを計算する。即ち、モード判定部340aは、エッジオフセットについて、(クラス数)×(カテゴリ数)×(オフセットの候補数)=4×4×8=128回のコスト計算を行う。
即ち、比較例に係るモード判定部340aは、画素のビット深度が8ビットの場合には、SAOのモードを特定するために、計384回のコスト計算を行うこととなる。なお、画素のビット深度が10ビットの場合については、オフセット値の候補0~31となる点を除けば、その他の処理については同様である。このように、比較例に係るモード判定部340aは、SAOのモードを特定するためのコスト計算の処理量が大きくなる傾向にあり、消費電力の増加の要因となり得る。
そこで、本実施形態に係るモード判定部340は、処理対象となるCTUに対するイントラ予測の結果として特定される予測モードに応じて、SAOのモードの候補を制限する。これにより、本実施形態に係る画像符号化装置は、SAOのモードを特定するための処理量を低減することで、コスト計算に係る処理量を低減する。
<<3-4-2.モード判定部の処理の流れ>>
以下に、図24を参照して、本実施形態に係るモード判定部240の一連の処理の流れの一例について説明する。図24は、本実施形態に係るモード判定部240の一連の処理の流れの一例を示したフローチャートである。
以下に、図24を参照して、本実施形態に係るモード判定部240の一連の処理の流れの一例について説明する。図24は、本実施形態に係るモード判定部240の一連の処理の流れの一例を示したフローチャートである。
なお、ステップS501~S503に係る処理は、前述した比較例に係るモード判定部340aと同様のため、詳細な説明は省略する。即ち、モード判定部340は、SAOのモードを示すパラメタ「SaoTypeIdx」に0を設定し(ステップS501)、SAO処理を適用しない場合のコストを計算する(ステップS502)。そして、SAO処理を適用しない場合のコストの計算が完了すると、モード判定部340は、SaoTypeIdxをインクリメントする(ステップS503)。これにより、SaoTypeIdxに1が設定される。
(ステップS504、S531)
次いで、モード判定部340は、SaoTypeIdxの値が1のため(ステップS504、NO)、処理対象となるCTUに対して設定されたイントラ予測の予測モードを取得する。なお、当該予測モードの取得元としては、例えば、イントラ予測部30(図3参照)が挙げられる。
次いで、モード判定部340は、SaoTypeIdxの値が1のため(ステップS504、NO)、処理対象となるCTUに対して設定されたイントラ予測の予測モードを取得する。なお、当該予測モードの取得元としては、例えば、イントラ予測部30(図3参照)が挙げられる。
モード判定部340は、イントラ予測の予測モードとSAOのモードとをあらかじめ対応付けた制御テーブルd30(図20参照)と、取得した予測モードとを照合することで、処理対象となるCTUに対して設定するSAOのモードを決定する。そして、モード判定部340は、決定したSAOのモードに応じて、SaoTypeIdxを設定する。
具体的な一例として、イントラ予測の予測モードのモード値が0の場合、即ち、プレーナ予測の場合には、モード判定部340は、制御テーブルd30に基づき、SaoTypeIdxに対してバンドオフセットを示す1を設定する。また、イントラ予測の予測モードのモード値が1の場合、即ち、DC予測の場合についても、モード判定部340は、制御テーブルd30に基づき、SaoTypeIdxにバンドオフセットを示す1を設定する。
また、イントラ予測の予測モードのモード値が2~34の場合、即ち、方向性予測の場合には、モード判定部340は、制御テーブルd30に基づき、SaoTypeIdxにエッジオフセットを示す2を設定する。
(ステップS532、S533)
SaoTypeIdxに対してバンドオフセットを示す1が設定されている場合には(ステップS532、YES)、モード判定部340は、当該バンドオフセットの各バンドそれぞれについて、オフセット値と当該オフセット値に対応するコストとをオフセット判定部350に算出させる。
SaoTypeIdxに対してバンドオフセットを示す1が設定されている場合には(ステップS532、YES)、モード判定部340は、当該バンドオフセットの各バンドそれぞれについて、オフセット値と当該オフセット値に対応するコストとをオフセット判定部350に算出させる。
(ステップS534)
バンドオフセットの各バンドそれぞれについてオフセット値と当該オフセット値に対応するコストとの算出が完了すると、モード判定部340は、SaoTypeIdxに対して「3」を設定する。
バンドオフセットの各バンドそれぞれについてオフセット値と当該オフセット値に対応するコストとの算出が完了すると、モード判定部340は、SaoTypeIdxに対して「3」を設定する。
(ステップS532、S535)
また、SaoTypeIdxに対して1以外の値が設定されている場合(ステップS532、YES)、例えば、エッジオフセットを示す2が設定されている場合には、モード判定部340は、予測モードのモード値と制御テーブルd30とに基づき、エッジオフセットのクラス(図1参照)を設定する。
また、SaoTypeIdxに対して1以外の値が設定されている場合(ステップS532、YES)、例えば、エッジオフセットを示す2が設定されている場合には、モード判定部340は、予測モードのモード値と制御テーブルd30とに基づき、エッジオフセットのクラス(図1参照)を設定する。
(ステップS536)
そして、モード判定部340は、決定されたクラスについて、カテゴリ1~4(図1参照)それぞれに対し、オフセット値と当該オフセット値に対応するコストとをオフセット判定部350に算出させる。
そして、モード判定部340は、決定されたクラスについて、カテゴリ1~4(図1参照)それぞれに対し、オフセット値と当該オフセット値に対応するコストとをオフセット判定部350に算出させる。
(ステップS537)
決定されたクラスについて、カテゴリ1~4それぞれに対するオフセット値と当該オフセット値に対応するコストとの算出が完了すると、モード判定部340は、SaoTypeIdxに対して「3」を設定する。
決定されたクラスについて、カテゴリ1~4それぞれに対するオフセット値と当該オフセット値に対応するコストとの算出が完了すると、モード判定部340は、SaoTypeIdxに対して「3」を設定する。
(ステップS504)
以上のようにして、SAOのモードが決定され、当該モードについてオフセット値と当該オフセット値に対応するコストとが設定される。このとき、SaoTypeIdxには、前述の通り3が設定されていることとなる。
以上のようにして、SAOのモードが決定され、当該モードについてオフセット値と当該オフセット値に対応するコストとが設定される。このとき、SaoTypeIdxには、前述の通り3が設定されていることとなる。
(ステップS520)
SaoTypeIdxが3以上の場合には(ステップS504、YES)、モード判定部340は、オフセット判定部350に算出させたコストを評価することで、SAOのモードと当該モードに対応するオフセット値とを特定する。
SaoTypeIdxが3以上の場合には(ステップS504、YES)、モード判定部340は、オフセット判定部350に算出させたコストを評価することで、SAOのモードと当該モードに対応するオフセット値とを特定する。
例えば、SAOのモードがバンドオフセットの場合には、バンドオフセットの各バンドに対してのみ、オフセットと当該オフセットに対応するコストが設定されている。この場合には、モード判定部340は、各バンドそれぞれについて算出されたコストを比較することで、符号化効率を最も向上させることが可能なバンド(連続する4つのバンド)を特定する。なお、この場合には、モード判定部340は、SaoTypeIdxに対して、バンドオフセットを示す1を設定し直す。
また、SAOのモードがエッジオフセットの場合には、選択されたクラスについてのみ、カテゴリ1~4(図1参照)に対して、オフセットと当該オフセットに対応するコストが設定されている。この場合には、モード判定部340は、特定したクラスのそれぞれについて算出されたコストを比較することで、符号化効率を最も向上させることが可能なカテゴリを特定する。なお、この場合には、モード判定部340は、SaoTypeIdxに対して、エッジオフセットを示す2を設定し直す。
以上のようにして、本実施形態に係るモード判定部340は、SAOのモードと当該モードに対応するオフセット値とを特定する。以上、図24を参照して、本実施形態に係るモード判定部340の一連の処理の流れの一例について説明した。
[3-5.変形例]
次に、本実施形態に係るモード判定部340の変形例について説明する。上記に説明した例では、モード判定部340は、イントラ予測の予測モードに基づきSAOのモードの候補を制限していた。しかしながら、原画像データや復号画像データの特徴に応じてSAOのモードの候補を制限できれば、当該SAOのモードを制限する方法は、必ずしも、イントラ予測の予測モードを用いた方法には限定されない。そこで、以下に、原画像データや復号画像データの特徴に応じてSAOのモードの候補を制限する方法の一例について、変形例として説明する。
次に、本実施形態に係るモード判定部340の変形例について説明する。上記に説明した例では、モード判定部340は、イントラ予測の予測モードに基づきSAOのモードの候補を制限していた。しかしながら、原画像データや復号画像データの特徴に応じてSAOのモードの候補を制限できれば、当該SAOのモードを制限する方法は、必ずしも、イントラ予測の予測モードを用いた方法には限定されない。そこで、以下に、原画像データや復号画像データの特徴に応じてSAOのモードの候補を制限する方法の一例について、変形例として説明する。
例えば、H.265/HEVCでは、予測誤差データに直交変換を施さずに、当該予測誤差データを量子化することで量子化データを生成する、「トランスフォームスキップ」と呼ばれる技術を適用することが可能である。
例えば、直交変換後の予測誤差データを量子化する場合には、一部の帯域(例えば、高域)に対して量子化に伴うオフセットが適用される。これに対して、直交変換を行わずに予測誤差データを量子化する場合には、画像データ全体に対して一様にオフセットが適用される。そのため、トランスフォームスキップが適用された場合には、SAOのモードとしてバンドオフセットが選択されやすい傾向にある。
このような特性を利用して、モード判定部340は、トランスフォームスキップが適用されている場合には、SAOのモードとしてバンドオフセットを設定してもよい。
また、他の一例として、H.265/HEVCでは、「strong-intra-smoothing」と呼ばれる技術を適用することができる。このstrong-intra-smoothingでは、予測対象ブロックに対するイントラ予測のための予測ブロックに対して平滑化処理が施される。そのため、予測対象ブロックは、画素値の変化が小さい画像、即ち、濃淡の少ない、もしくは、濃淡の変化が緩やかな平坦な画像となりやすい。即ち、strong-intra-smoothingが適用された場合には、SAOのモードとしてバンドオフセットが選択されやすい傾向にある。
このような特性を利用して、モード判定部340は、strong-intra-smoothingが適用されている場合には、SAOのモードとしてバンドオフセットを設定してもよい。
また、前述した実施形態に係るモード判定部340では、イントラ予測の方向性予測における予測方向に基づき、画素間の相関性が高い方向を認識していた。しかしながら、画素間の相関性が高い方向を認識できれば、必ずしも、イントラ予測の方向性予測における予測方向に基づく方法には限定されない。
例えば、モード判定部340は、原画像データ中の特徴量に基づき、画素間の相関性が高い方向を認識してもよい。原画像データ中の特徴量に基づく方法としては、例えば、原画像データのテクスチャに応じて、画素間の相関性が高い方向を認識する方法が挙げられる。
具体的には、モード判定部340は、原画像データから抽出されたエッジの方向に基づき、画素間の相関性が高い方向を認識してもよい。なお、この場合には、例えば、統計量取得部330(図7または図22参照)が、原画像データに対してソーベルフィルタ等のフィルタ処理を施すことで、当該原画像データからエッジを抽出し、抽出されたエッジの情報を統計量としてモード判定部340に出力すればよい。
以上、変形例として、原画像データや復号画像データの特徴に応じてSAOのモードの候補を制限する方の一例について説明した。なお、変形例として上記に説明した各方法の一部または全部と、上述したイントラ予測の予測モードに基づく方法とは適宜組み合わせてもよい。また、上述したイントラ予測の予測モードに基づく方法を、変形例として上記に説明した各方法の一部または全部とを適宜置き換えてもよい。
[3-6.まとめ]
以上、説明したように、本実施形態に係る画像符号化装置では、モード判定部340は、イントラ予測の各予測モードとSAOの各モードとをあらかじめ対応付けておく。そして、モード判定部340は、処理対象となるCTUに対して設定されたイントラ予測の予測モードを取得し、取得した予測モードに基づきSAOのモードを特定する。このように、本実施形態に係るモード判定部340は、取得したイントラ予測の予測モードに応じて、SAOのモードの候補を制限している。そのうえで、モード判定部340は、特定したモードに対してのみ、オフセット値と当該オフセット値に対応するコストとを算出する。
以上、説明したように、本実施形態に係る画像符号化装置では、モード判定部340は、イントラ予測の各予測モードとSAOの各モードとをあらかじめ対応付けておく。そして、モード判定部340は、処理対象となるCTUに対して設定されたイントラ予測の予測モードを取得し、取得した予測モードに基づきSAOのモードを特定する。このように、本実施形態に係るモード判定部340は、取得したイントラ予測の予測モードに応じて、SAOのモードの候補を制限している。そのうえで、モード判定部340は、特定したモードに対してのみ、オフセット値と当該オフセット値に対応するコストとを算出する。
このような構成により、本実施形態に係るモード判定部340は、比較例に係るモード判定部340aのように、SAOの各モードについてコスト計算を行う場合に比べて、当該コスト計算に係る処理量を大幅に低減することが可能となる。
具体的には、画素のビット深度を8ビットとすると、本実施形態に係るモード判定部340は、バンドオフセットが選択された場合には、バンド0~31それぞれについてのみ、オフセット値の候補0~7それぞれのコストを計算すればよい。即ち、バンドオフセットが選択された場合には、モード判定部340は、(バンド数)×(オフセットの候補数)=32×8=256回のコスト計算を行えばよいこととなる。
同様に、モード判定部340は、エッジオフセットが選択された場合には、あわせて選択されたエッジオフセットのクラスについてのみ、カテゴリ1~4のそれぞれについて、オフセット値の候補0~7それぞれのコストを計算すればよい。即ち、エッジオフセットが選択された場合には、モード判定部340は、(カテゴリ数)×(オフセットの候補数)=4×8=32回のコスト計算を行えばよいこととなる。
前述した、比較例に係るモード判定部340aでは、SAOのモードを特定するために計384回のコスト計算を行う必要があった点を鑑みると、本実施形態に係るモード判定部340は、コスト計算に係る処理量を大幅に低減できることがわかる。また、本実施形態に係るモード判定部340は、コスト計算の処理量の低減に伴い、比較例に係るモード判定部340aに比べて消費電力を低減することが可能となることは言うまでもない。
なお、本実施形態に係るサンプル適応オフセットフィルタ300と、前述した第1の実施形態に係るサンプル適応オフセットフィルタ300とを組み合わせてもよい。
具体的な一例として、本実施形態に係るサンプル適応オフセットフィルタ300において、モード判定部340内のオフセット判定部350として、前述した第1の実施形態に係るオフセット判定部350を適用してもよい。このような構成とすることで、オフセット値を特定するためのコスト計算の処理量をさらに低減し、かつ、オフセット判定部350の回路規模を縮小することが可能となる。もちろん、コスト計算の処理量がさらに低減されるため、消費電力をさらに低減することが可能となる。
<4.第3の実施形態>
[4-1.概要]
次に、第3の実施形態に係る画像符号化装置について説明する。前述した第1の実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、スライス単位でSAO処理の適用の可否を制御していた。本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、SAO処理の適用の可否について、復号画像データに対して設定された符号化パラメタに基づき、スライス単位での制御に加えて、CTU(即ち、LCU)単位で制御する。そこで、まず、図25を参照して、本実施形態に係る画像符号化装置の概要について、特に、サンプル適応オフセットフィルタに着目して説明する。
[4-1.概要]
次に、第3の実施形態に係る画像符号化装置について説明する。前述した第1の実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、スライス単位でSAO処理の適用の可否を制御していた。本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、SAO処理の適用の可否について、復号画像データに対して設定された符号化パラメタに基づき、スライス単位での制御に加えて、CTU(即ち、LCU)単位で制御する。そこで、まず、図25を参照して、本実施形態に係る画像符号化装置の概要について、特に、サンプル適応オフセットフィルタに着目して説明する。
図25は、Bスライス(または、Bピクチャ)のうち、インター予測における双予測(Bi-prediction)に基づき生成される予測画像データの一例を模式的に示している。図25において、参照符号d60は、インター予測における双予測に基づき生成される予測画像データ(TU)の各画素の画素値の一例を模式的に示している。また、参照符号d61は、予測画像データd60を生成するために使用される、L0方向(過去)のIスライスまたはPスライスの復号画像データ(TU)の各画素の画素値の一例を模式的に示している。同様に、参照符号d62は、予測画像データd60を生成するために使用される、L1方向(未来)のIスライスまたはPスライスの復号画像データ(TU)の各画素の画素値の一例を模式的に示している。
図25に示すように、インター予測の双予測が適用された場合には、生成される予測画像データd60の各画素の画素値は、予測のための復号画像データd61及びd62の各画素の画素値の平均となる。そのため、インター予測の双予測が適用された場合には、Bスライスの復号画像データ(例えば、予測画像データd60の復号画像データ)は、IスライスまたはPスライスの復号画像データに比べて、ディティール感が損なわれた、画素値の変化がより小さい画像となりやすい傾向にある。また、Bスライスに対してイントラ予測が適用された場合についても、同様の傾向があることがわかっている。
また、Bスライスの予測画像データは、IスライスまたはPスライスの予測画像データに比べて、より大きい量子化ステップ(QP)が選択されやすい傾向にある。このように、量子化ステップが大きい場合においても、量子化ステップが小さい場合に比べて、ディティール感が損なわれた、画素値の変化がより小さい画像となりやすい傾向にある。
なお、前述したように、SAO処理は、復号画像データに発生した原画像データとの間の誤差(例えば、量子化誤差)を緩和する処理に相当し、対象となる画素値に対してオフセットを加減算することで平滑化処理を施す処理に相当する。そのため、図25に示す予測画像データd60の復号画像データのような、Bスライスの復号画像データに対してSAO処理を施した場合には、よりディティール感が損なわれる場合もある。このような場合には、SAO処理を施すことにより、Bスライスと、前後のIスライスまたはPスライスとの間の画質差がさらに大きくなり、主観として画質が劣化する可能性がある。
そこで、本実施形態に係るサンプル適応オフセットフィルタは、さらに、対象となる復号画像データに設定された符号化パラメタに応じて、SAO処理の適用の可否を制御する。また、本実施形態に係るサンプル適応オフセットフィルタは、SAO処理の適用の可否を、スライス単位の制御に加えて、CTU単位で制御する。なお、詳細は後述するが、符号化パラメタの一例としては、インター予測やイントラ予測の予測モードのような予測パラメタや、量子化ステップのような量子化パラメタ等が挙げられる。
具体的には、サンプル適応オフセットフィルタは、インター予測の双予測が適用された場合等のように、他のスライスに比べて、画素値の変化がより小さくなる場合には、処理対象となるSAO処理を、スライス単位もしくはCTU単位で非適用とする。
このような構成により、本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、符号化に伴う画質の劣化を抑制し、かつ、コスト計算の処理量を低減する。もちろん、本実施形態に係る画像符号化装置は、コスト計算の処理量が低減されるため、消費電力を低減することも可能となる。
そこで、以降では、本実施形態に係る画像符号化装置について、前述した第1の実施形態とは異なる部分に着目し、特に、ループフィルタ内のサンプル適応オフセットフィルタについて、さらに詳しく説明する。
[4-2.サンプル適応オフセットフィルタの構成例]
まず、図26を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例について説明する。図26は、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例を示したブロック図である。なお、本実施形態に係るサンプル適応オフセットフィルタ300は、切り替え判定部360の構成が、前述した第1の実施形態に係るサンプル適応オフセットフィルタ300(図7参照)とは異なる。そこで、本説明では、切り替え判定部360に着目して説明し、その他の構成については、詳細な説明は省略する。
まず、図26を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例について説明する。図26は、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例を示したブロック図である。なお、本実施形態に係るサンプル適応オフセットフィルタ300は、切り替え判定部360の構成が、前述した第1の実施形態に係るサンプル適応オフセットフィルタ300(図7参照)とは異なる。そこで、本説明では、切り替え判定部360に着目して説明し、その他の構成については、詳細な説明は省略する。
図26に示すように、本実施形態に係る切り替え判定部360は、第1の判定部370と、第2の判定部380とを含む。
第1の判定部370の機能は、前述した第1の実施形態に係る切り替え判定部360の機能に相当する。即ち、第1の判定部370は、復号画像データに対するSAO処理の適用の可否を、スライス単位で制御する。
ここで、図27を参照して、本実施形態に係る第1の判定部370の構成について詳しく説明する。図27は、スライス単位でSAO処理の適用の可否を制御するための第1の判定部370の構成の一例を示したブロック図である。
図27に示すように、第1の判定部370は、モード数カウント部371と、判定処理部373とを含む。
モード数カウント部371は、処理対象のスライスがBスライスの場合に、当該Bスライスの直前のスライス(即ち、IスライスまたはPスライス)において、SAO処理が適用されたブロック(CTU)の数を計上する。そして、モード数カウント部371は、計上した数、即ち、直前のスライスにおいてSAO処理が適用されたブロック(CTU)の数を、モード数として判定処理部373に出力する。
判定処理部373は、処理対象のスライスが、Iスライス及びPスライスのいずれかの場合には、当該スライスに対するSAO処理の適用を解析部320に指示する。
また、判定処理部373は、処理対象のスライスがBスライスの場合には、当該Bスライスの直前のスライスにおいてSAO処理が適用されたブロック(CTU)の数、即ち、モード数を、モード数カウント部371から取得する。そして、判定処理部373は、取得したモード数に応じて、当該Bスライスに対してSAO処理の適用の可否を制御する。
具体的な一例として、判定処理部373は、取得したモード数が所定の閾値TH11未満の場合には、処理対象のBスライスに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する。
なお、ここまでの処理は、前述した第1の実施形態に係る切り替え判定部360と同様である。
本実施形態に係る判定処理部373は、取得したモード数、即ち、SAO処理が適用されたブロック(CTU)の数が閾値TH11以上の場合には、復号画像データの復号元である量子化データを生成する際の量子化ステップ(QP)を取得する。なお、判定処理部373が、復号画像データの復号元である量子化データの量子化ステップを取得できれば、その取得元は特に限定されない。具体的な一例として、判定処理部373は、量子化部15(図3参照)から、当該量子化ステップを取得してもよい。
そして、判定処理部373は、取得した量子化ステップに基づき、処理対象のBスライスに対するSAO処理の適用の可否を制御する。
具体的には、判定処理部373は、取得した量子化ステップが所定の閾値TH12以下の場合には、処理対象のBスライスに対するSAO処理の適用を解析部320に指示する。また、取得した量子化ステップが所定の閾値TH12より大きい場合には、処理対象のBスライスに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する。
なお、量子化ステップに基づき処理対象のBスライスに対するSAO処理の適用の可否を制限するための閾値TH12には、事前の実験等に基づき決定した適切な値を、あらかじめ設定しておけばよい。
また、判定処理部373は、スライスごとのSAO処理の適用の可否を、符号化時のパラメタとして可逆符号化部16に出力する。なお、本処理については、前述した第1の実施形態に係る切り替え判定部360と同様である。
以上のようにして、第1の判定部370は、スライス単位でSAO処理の適用の可否を制御する。
なお、前述したように、量子化ステップが比較的大きいBスライスの復号画像データは、IスライスまたはPスライスの復号画像データに比べて、ディティール感が損なわれる傾向にあり、SAO処理を施すことでディティール感の損失が顕著に表れる場合がある。
しかしながら、第1の判定部370は、量子化ステップが比較的大きいBスライスについては、SAO処理の適用を制限する。即ち、第1の判定部370により、スライス単位でSAO処理の適用の可否が制御されることで、画質の劣化が抑えられ、かつ、コスト計算の処理量が低減される。
次に、図26を再度参照して、第2の判定部380について説明する。第2の判定部380は、復号画像データに対するSAO処理の適用の可否を、CTU(即ち、LCU)単位で、当該CTUに設定された符号化パラメタに基づき制御する。
具体的な一例として、第2の判定部380は、SAO処理の適用の可否を判定するための符号化パラメタとして、処理対象となるCTUに対して設定された予測モード(即ち、イントラ予測やインター予測)を示す予測パラメタを使用する。
なお、第2の判定部380が、処理対象となるCTUに対して設定された予測モードを示す予測パラメタを取得できれば、その取得元は特に限定されない。具体的な一例として、第2の判定部380は、選択部27(図3参照)が、イントラ予測及びインター予測それぞれのコストの大きさに応じて切り替えて出力する情報(即ち、イントラ予測またはインター予測に関する情報)として、当該予測パラメタを選択部27から取得してもよい。
第2の判定部380は、取得した予測パラメタに基づき、処理対象となるCTUに対して設定された予測モードを認識する。そして、第2の判定部380は、処理対象となるCTUに対して設定された予測モードが、イントラ予測と、インター予測における双予測とのうちのいずれかの場合には、当該CTUに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する。なお、イントラ予測及びインター予測における双予測のいずれでもない場合には、第2の判定部380は、処理対象となるCTUに対するSAO処理の適用を解析部320に指示する。
以上のようにして、第2の判定部380は、CTU単位でSAO処理の適用の可否を制御する。
なお、前述したように、インター予測の双予測が適用されたBスライスの復号画像データは、IスライスまたはPスライスの復号画像データに比べて、ディティール感が損なわれる傾向にあり、SAO処理を施すことでディティール感の損失が顕著に表れる場合がある。また、Bスライスに対してイントラ予測が適用された場合についても、同様の傾向があることがわかっている。
しかしながら、第2の判定部380は、処理対象となるCTUに対して設定された予測モードが、イントラ予測と、インター予測における双予測とのうちのいずれかの場合には、当該CTUに対するSAO処理の適用を制限する。即ち、第2の判定部380により、CTU単位でSAO処理の適用の可否が制御されることで、画質の劣化が抑えられ、かつ、コスト計算の処理量が低減される。
なお、以降の処理、即ち、切り替え判定部360の制御に応じた解析部320及びフィルタ処理部390の動作は、前述した第1及び第2の実施形態と同様である。以上、図26及び図27を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の構成の一例について説明した。
[4-3.サンプル適応オフセットフィルタの処理の流れ]
次に、図28を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の一連の処理の流れについて説明する。図28は、本実施形態に係るサンプル適応オフセットフィルタ300の一連の処理の流れの一例を示したフローチャートである。
次に、図28を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の一連の処理の流れについて説明する。図28は、本実施形態に係るサンプル適応オフセットフィルタ300の一連の処理の流れの一例を示したフローチャートである。
なお、本実施形態に係るサンプル適応オフセットフィルタ300は、ステップS100aで示された処理の内容と、ステップS300及びS400で示された処理が追加されている点とが、前述した第1の実施形態に係るサンプル適応オフセットフィルタ300(図8参照)と異なる。そこで、以降では、前述した第1の実施形態に係るサンプル適応オフセットフィルタ300と異なる、ステップS100a、S300、及びS400に着目して説明し、その他の処理については詳細な説明は省略する。
(ステップS100a)
切り替え判定部360は、復号画像データのスライスごとに、輝度と色度とのそれぞれについてSAO処理の適用の可否を判定し、判定結果に基づき解析部320の動作を制御する。特に、本実施形態に係る切り替え判定部360は、処理対象となるスライスがBスライスであり、かつ、量子化ステップが所定の閾値TH12以上の場合には、当該スライスに対するSAO処理の適用を制限する。なお、切り替え判定部360による、スライス単位のSAO処理の適用の可否の判定に係る動作については、詳細を別途後述する。
切り替え判定部360は、復号画像データのスライスごとに、輝度と色度とのそれぞれについてSAO処理の適用の可否を判定し、判定結果に基づき解析部320の動作を制御する。特に、本実施形態に係る切り替え判定部360は、処理対象となるスライスがBスライスであり、かつ、量子化ステップが所定の閾値TH12以上の場合には、当該スライスに対するSAO処理の適用を制限する。なお、切り替え判定部360による、スライス単位のSAO処理の適用の可否の判定に係る動作については、詳細を別途後述する。
(ステップS300)
スライスに対してSAO処理が適用されると判定された場合には(ステップS200、YES)、切り替え判定部360は、当該スライスのCTUごとに、輝度と色度とのそれぞれについてSAO処理の適用の可否を判定し、判定結果に基づき解析部320の動作を制御する。特に、本実施形態に係る切り替え判定部360は、処理対象となるCTUに対して設定された予測モードが、イントラ予測と、インター予測における双予測とのうちのいずれかの場合には、当該CTUに対するSAO処理の適用を制限する。なお、切り替え判定部360による、CTU単位のSAO処理の適用の可否の判定に係る動作については、詳細を別途後述する。
スライスに対してSAO処理が適用されると判定された場合には(ステップS200、YES)、切り替え判定部360は、当該スライスのCTUごとに、輝度と色度とのそれぞれについてSAO処理の適用の可否を判定し、判定結果に基づき解析部320の動作を制御する。特に、本実施形態に係る切り替え判定部360は、処理対象となるCTUに対して設定された予測モードが、イントラ予測と、インター予測における双予測とのうちのいずれかの場合には、当該CTUに対するSAO処理の適用を制限する。なお、切り替え判定部360による、CTU単位のSAO処理の適用の可否の判定に係る動作については、詳細を別途後述する。
(ステップS500)
CTUに対してSAO処理が適用されると判定された場合には(ステップS400、YES)、解析部320は、当該CTUについて、原画像データと(デブロックフィルタ処理後の)復号画像データとに基づき、SAO処理を施すためのSAOのモードとオフセット値とを決定する。
CTUに対してSAO処理が適用されると判定された場合には(ステップS400、YES)、解析部320は、当該CTUについて、原画像データと(デブロックフィルタ処理後の)復号画像データとに基づき、SAO処理を施すためのSAOのモードとオフセット値とを決定する。
(ステップS600)
フィルタ処理部390は、復号画像データの各CTUに対して、モード判定部340から供給されるSAOのモードとオフセット値とに基づいてSAO処理を施す。
フィルタ処理部390は、復号画像データの各CTUに対して、モード判定部340から供給されるSAOのモードとオフセット値とに基づいてSAO処理を施す。
(ステップS700)
以上の判定及び処理を、対象となるスライス中の一連のCTUについて実行し(ステップS700、NO)、一連のCTUに対する判定及び処理の完了をもって(ステップS700、YES)、対象となるスライスに対するSAO処理の適用が完了する。
以上の判定及び処理を、対象となるスライス中の一連のCTUについて実行し(ステップS700、NO)、一連のCTUに対する判定及び処理の完了をもって(ステップS700、YES)、対象となるスライスに対するSAO処理の適用が完了する。
(ステップS200)
なお、対象となるスライスに対してSAO処理を適用しない場合(ステップS200、NO)には、当該スライスに対して、ステップS300~S700で示された各処理は実行されない。
なお、対象となるスライスに対してSAO処理を適用しない場合(ステップS200、NO)には、当該スライスに対して、ステップS300~S700で示された各処理は実行されない。
次に、図29を参照して、図28においてステップS100aで示された処理、即ち、本実施形態に係る切り替え判定部360(具体的には、第1の判定部370)による、スライスごとのSAO処理の適用の可否の判定に係る処理の一例について説明する。図29は、本実施形態に係る切り替え判定部による、スライスごとのSAO処理の適用の可否の判定に係る処理の一例について示したフローチャートである。
なお、本実施形態に係る切り替え判定部360は、ステップS110で示された処理が追加されている点が、前述した第1の実施形態に係る切り替え判定部360(図9参照)と異なる。そこで、以降では、前述した第1の実施形態に係る切り替え判定部360と異なる、ステップS110で示された処理に着目して説明し、その他の処理については詳細な説明は省略する。
(ステップS101、S102)
本実施形態に係る切り替え判定部360は、処理対象のスライスがBスライスの場合には(ステップS101、YES)、当該Bスライスの直前のスライス(即ち、IスライスまたはPスライス)において、SAO処理が適用されたCTUの数(モード数)を取得する(ステップS102)。
本実施形態に係る切り替え判定部360は、処理対象のスライスがBスライスの場合には(ステップS101、YES)、当該Bスライスの直前のスライス(即ち、IスライスまたはPスライス)において、SAO処理が適用されたCTUの数(モード数)を取得する(ステップS102)。
(ステップS103)
切り替え判定部360は、取得したモード数が、所定の閾値TH11以上の場合には(ステップS103、NO)、復号画像データの復号元である量子化データを生成する際の量子化ステップ(QP)を取得する。そして、判定処理部373は、取得した量子化ステップに基づき、処理対象のBスライスに対するSAO処理の適用の可否を制御する。
切り替え判定部360は、取得したモード数が、所定の閾値TH11以上の場合には(ステップS103、NO)、復号画像データの復号元である量子化データを生成する際の量子化ステップ(QP)を取得する。そして、判定処理部373は、取得した量子化ステップに基づき、処理対象のBスライスに対するSAO処理の適用の可否を制御する。
(ステップS104)
具体的には、取得した量子化ステップが所定の閾値TH12以下の場合には(ステップS103、NO)、切り替え判定部360は、処理対象のBスライスに対するSAO処理の適用を解析部320に指示する。
具体的には、取得した量子化ステップが所定の閾値TH12以下の場合には(ステップS103、NO)、切り替え判定部360は、処理対象のBスライスに対するSAO処理の適用を解析部320に指示する。
(ステップS105)
また、取得した量子化ステップが所定の閾値TH12より大きい場合には(ステップS103、YES)、切り替え判定部360は、処理対象のBスライスに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する。
また、取得した量子化ステップが所定の閾値TH12より大きい場合には(ステップS103、YES)、切り替え判定部360は、処理対象のBスライスに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する。
以上のようにして、本実施形態に係る切り替え判定部360は、スライスごとにSAO処理の適用の可否を判定し、判定結果に基づき解析部320の動作を制御する。
次に、図30を参照して、図28においてステップS300で示された処理、即ち、本実施形態に係る切り替え判定部360(具体的には、第2の判定部380)による、CTUごとのSAO処理の適用の可否の判定に係る処理の一例について説明する。図30は、本実施形態に係る切り替え判定部による、CTUごとのSAO処理の適用の可否の判定に係る処理の一例について示したフローチャートである。
(ステップS301)
切り替え判定部360は、SAO処理の適用の可否を判定するための符号化パラメタとして、処理対象となるCTUに対して設定された予測モード(即ち、イントラ予測やインター予測)を示す予測パラメタを使用する。なお、切り替え判定部360は、当該予測パラメタを、例えば、選択部27(図3参照)から取得し、取得した予測パラメタに基づき、処理対象となるCTUに対して設定された予測モードを認識する。
切り替え判定部360は、SAO処理の適用の可否を判定するための符号化パラメタとして、処理対象となるCTUに対して設定された予測モード(即ち、イントラ予測やインター予測)を示す予測パラメタを使用する。なお、切り替え判定部360は、当該予測パラメタを、例えば、選択部27(図3参照)から取得し、取得した予測パラメタに基づき、処理対象となるCTUに対して設定された予測モードを認識する。
(ステップS302)
そして、切り替え判定部360は、認識した予測モードが、イントラ予測と、インター予測における双予測とのうちのいずれかに該当するか否かを判定する。
そして、切り替え判定部360は、認識した予測モードが、イントラ予測と、インター予測における双予測とのうちのいずれかに該当するか否かを判定する。
(ステップS304)
認識した予測モードが、イントラ予測と、インター予測における双予測とのうちのいずれかの場合には(ステップS302、YES)、切り替え判定部360は、当該CTUに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する。
認識した予測モードが、イントラ予測と、インター予測における双予測とのうちのいずれかの場合には(ステップS302、YES)、切り替え判定部360は、当該CTUに対するSAO処理の適用を制限する(即ち、非適用とする)ように解析部320に指示する。
(ステップS303)
なお、認識した予測モードが、イントラ予測及びインター予測における双予測のいずれでもない場合には(ステップS302、NO)、切り替え判定部360は、当該CTUに対するSAO処理の適用を解析部320に指示する。
なお、認識した予測モードが、イントラ予測及びインター予測における双予測のいずれでもない場合には(ステップS302、NO)、切り替え判定部360は、当該CTUに対するSAO処理の適用を解析部320に指示する。
なお、以降は、SAO処理の適用対象となったCTUに対してのみ、解析部320により、コストの算出とSAOのモード及びオフセット値の特定とが行われ、当該SAOのモード及びオフセット値に基づき、フィルタ処理部390によりSAO処理が施される。
以上、図28~図30を参照して、本実施形態に係るサンプル適応オフセットフィルタ300の一連の処理の流れについて説明した。以上のように、本実施形態に係るサンプル適応オフセットフィルタは、対象となる復号画像データに設定された符号化パラメタに応じて、SAO処理の適用の可否を制御する。また、本実施形態に係るサンプル適応オフセットフィルタは、SAO処理の適用の可否を、スライス単位の制御に加えて、CTU単位で制御する。
このような構成により、本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、符号化に伴う画質の劣化を抑制し、かつ、コスト計算の処理量を低減する。もちろん、本実施形態に係る画像符号化装置は、コスト計算の処理量が低減されるため、消費電力を低減することも可能となる。
[4-4.変形例]
次に、本実施形態に係る切り替え判定部360の変形例について説明する。上記に説明した例では、切り替え判定部360は、スライスの種別、インター予測やイントラ予測の予測モードのような予測パラメタ、及びQPのような量子化パラメタに基づき、SAO処理の適用の可否を、スライス単位またはCTU単位で制御していた。しかしながら、前述したように、SAO処理の適用に伴う画質への影響を加味して、当該SAO処理の適用の可否を、スライス単位またはCTU単位で制御可能であれば、その方法は、必ずしも、前述した予測パラメタや量子化パラメタに基づく方法には限定されない。
次に、本実施形態に係る切り替え判定部360の変形例について説明する。上記に説明した例では、切り替え判定部360は、スライスの種別、インター予測やイントラ予測の予測モードのような予測パラメタ、及びQPのような量子化パラメタに基づき、SAO処理の適用の可否を、スライス単位またはCTU単位で制御していた。しかしながら、前述したように、SAO処理の適用に伴う画質への影響を加味して、当該SAO処理の適用の可否を、スライス単位またはCTU単位で制御可能であれば、その方法は、必ずしも、前述した予測パラメタや量子化パラメタに基づく方法には限定されない。
具体的な一例として、復号画像データ中の各画素の輝度成分及び色差成分のうち、色差成分の方が、SAO処理を施すことによる画質改善の影響が大きいことが、実験等によりわかっている。
このような特性を利用して、切り替え判定部360は、復号画像データの輝度成分に対するSAO処理の適用を制限し、色度成分に対してのみSAO処理が適用されるように制御してもよい。
なお、このとき切り替え判定部360は、SAO処理の適用の可否を、スライス単位で制御してもよいし、CTU単位で制御してもよい。もちろん、切り替え判定部360は、一括して復号画像中の色度成分に対してのみSAO処理を適用するように制御してもよい。
また、変形例として上記に説明した方法を、上述した予測パラメタや量子化パラメタに基づく方法とは適宜組み合わせてもよい。また、上述した予測パラメタや量子化パラメタに基づく方法を、変形例として上記に説明した方法と適宜置き換えてもよい。
[4-5.まとめ]
以上、説明したように、本実施形態に係るサンプル適応オフセットフィルタは、対象となる復号画像データに設定された符号化パラメタに応じて、SAO処理の適用の可否を制御する。また、本実施形態に係るサンプル適応オフセットフィルタは、SAO処理の適用の可否を、スライス単位の制御に加えて、CTU単位で制御する。
以上、説明したように、本実施形態に係るサンプル適応オフセットフィルタは、対象となる復号画像データに設定された符号化パラメタに応じて、SAO処理の適用の可否を制御する。また、本実施形態に係るサンプル適応オフセットフィルタは、SAO処理の適用の可否を、スライス単位の制御に加えて、CTU単位で制御する。
このような構成により、本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、符号化に伴う画質の劣化を抑制し、かつ、コスト計算の処理量を低減する。もちろん、本実施形態に係る画像符号化装置は、コスト計算の処理量が低減されるため、消費電力を低減することも可能となる。
また、本実施形態に係るサンプル適応オフセットフィルタ300と、前述した第1及び第2の実施形態に係るサンプル適応オフセットフィルタ300のいずれかまたは双方とを組み合わせてもよい。
具体的な一例として、本実施形態に係るサンプル適応オフセットフィルタ300において、モード判定部340内のオフセット判定部350として、前述した第1の実施形態に係るオフセット判定部350を適用してもよい。このような構成とすることで、オフセット値を特定するためのコスト計算の処理量を低減し、かつ、オフセット判定部350の回路規模を縮小することが可能となる。
また、本実施形態に係るサンプル適応オフセットフィルタ300において、モード判定部340として、前述した第2の実施形態に係るモード判定部340を適用してもよい。このような構成とすることで、SAOのモードを特定するためのコスト計算の処理量をさらに低減することが可能となる。
また、上記に示すように、各実施形態に係るサンプル適応オフセットフィルタ300を適宜組み合わせることで、コスト計算の処理量がさらに低減されるため、消費電力をさらに低減することが可能となることは言うまでもない。
<5.第4の実施形態>
[5-1.概要]
次に、第4の実施形態に係る画像符号化装置について説明する。前述した第1の実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、オフセット値の候補を制限することで、当該オフセット値を特定するための処理量を低減することにより、一連のコスト計算に係る処理量を低減していた。これに対して、本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、対象となるピクチャのピクチャタイプに応じて、オフセット値の候補をさらに制限することで、当該オフセット値を特定するための処理量をさらに低減する。
[5-1.概要]
次に、第4の実施形態に係る画像符号化装置について説明する。前述した第1の実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、オフセット値の候補を制限することで、当該オフセット値を特定するための処理量を低減することにより、一連のコスト計算に係る処理量を低減していた。これに対して、本実施形態に係る画像符号化装置では、サンプル適応オフセットフィルタは、対象となるピクチャのピクチャタイプに応じて、オフセット値の候補をさらに制限することで、当該オフセット値を特定するための処理量をさらに低減する。
一般的に、各ピクチャと原画像との間の乖離度が高いほど(即ち、原画像に類似していないほど)、より大きいオフセット値が選択される傾向にある。これに対して、PピクチャやBピクチャのように、他のピクチャを参照した予測結果に基づき生成されるピクチャは、参照先となるピクチャとの間で時間的な相関性を有しており、原画像との間の差分(換言すると、オフセット値の候補の数)についても、参照先のピクチャに依存する。そのため、他のピクチャを参照した予測結果に基づき生成されるピクチャでは、参照先のピクチャで選択されたオフセット値よりも値の大きいオフセット値の候補(換言すると、より原画像から乖離するオフセット値の候補)が選択されない傾向にある。即ち、PピクチャやBピクチャにおいて選択され得るオフセット値(即ち、原画像との差分)の候補としては、参照先のピクチャで選択されたオフセット値の候補と同じ値か、または、より値の小さい候補となるため、PピクチャやBピクチャにおいて選択され得るオフセット値の候補の数は、参照先のピクチャ以下となる。
そこで、本実施形態に係る画像符号化装置におけるサンプル適応オフセットフィルタでは、処理対象となるピクチャのピクチャタイプが、PピクチャやBピクチャ(即ち、他のピクチャを参照した予測結果に基づき生成されるピクチャ)の場合には、当該ピクチャのオフセット値の候補の数を、参照先のピクチャで選択されたオフセット値の最大値までを対象とした候補の数に制限する。このような制御により、本実施形態に係るサンプル適応オフセットフィルタ(特に、オフセット判定部350)では、オフセット値の候補の数を制限することで、適用するオフセット値を決定するための、当該オフセット値の候補ごとのコスト計算の処理量を低減する。
以下に、図面を参照して、本実施形態に係る画像符号化装置におけるサンプル適応オフセットフィルタの動作の詳細について説明する。例えば、図31は、本実施形態に係る画像符号化装置の概要について説明するための説明図であり、各ピクチャ(即ち、Iピクチャ、Pピクチャ、及びBピクチャ)間の参照関係の一例を示している。なお、図31は、ピクチャデプスが3の場合における、各ピクチャ間の参照関係の一例を示している。
ここで、ピクチャデプスについて概要を説明する。インター予測においては、エンコード済みのピクチャを用いて、現時のエンコード対象のブロックが予測される。そのため、エンコードするピクチャの順序と参照関係が重要になる。ピクチャデプスは、画像のピクチャ間(GOP構造)の参照関係を示す情報であり、詳しくは、参照関係において、同じ状況にあるものを、例えば、1乃至5にグルーピングするものである。
図31に示す例では、横方向がデコード順序の時間を表している。また、長方形で示された部分のそれぞれは、各ピクチャを表しており、当該長方形で示された部分の中に提示されたI、B、及びPの符号のそれぞれは、当該ピクチャのピクチャタイプを示している。即ち、符号Iが付されたピクチャは、Iピクチャを示している。同様に、符号Bが付されたピクチャは、Bピクチャを示しており、符号Pが付されたピクチャは、Pピクチャを示している。また、各ピクチャ間をつなぐ矢印は、インター予測を行うために参照するピクチャ(即ち、ピクチャ間の参照関係)を示している。
例えば、図31に示す例では、ピクチャデプス1には、Iピクチャ及びPピクチャが含まれている。Iピクチャは、他のピクチャを参照しない。また、Pピクチャは、自身よりも左側(即ち、過去側)に位置するIピクチャ及びPピクチャのうち、直近のピクチャを参照する。具体的には、Iピクチャの右側(即ち、未来側)に位置するPピクチャは、当該Iピクチャを参照している。同様に、Pピクチャの右側に位置する他のPピクチャは、自身の左側(即ち、過去側)に位置するPピクチャを参照することとなる。
ピクチャデプス2には、ピクチャデプス1のピクチャを参照するBピクチャが含まれている。例えば、図31において、ピクチャデプス2に含まれるBピクチャのうち、IピクチャとPピクチャとの間に位置するBピクチャは、当該Iピクチャ及びPピクチャを参照している。また、Pピクチャと他のPピクチャとの間に位置するBピクチャは、当該Pピクチャ及び他のPピクチャを参照している。
また、ピクチャデプス3には、前後(即ち、過去及び未来)の参照方向のうち、一方については、ピクチャデプス1のピクチャ(即ち、IピクチャまたはPピクチャ)を参照し、他方についてはピクチャデプス2のピクチャ(即ち、Bピクチャ)を参照するBピクチャが含まれている。例えば、ピクチャデプス3に含まれるBピクチャのうち、ピクチャデプス1に含まれるIピクチャと、ピクチャデプス2に含まれるBピクチャとの間に位置するBピクチャは、当該ピクチャデプス1に含まれるIピクチャと、ピクチャデプス2に含まれるBピクチャとを参照している。同様に、ピクチャデプス2に含まれるBピクチャと、ピクチャデプス1に含まれるPピクチャとの間に位置するBピクチャは、当該ピクチャデプス2に含まれるBピクチャと、ピクチャデプス1に含まれるPピクチャとを参照している。
ここで、本実施形態に係るサンプル適応オフセットフィルタ(特に、オフセット判定部350)が、対象となるピクチャのピクチャタイプに応じて、当該ピクチャにおけるオフセット値の候補の数を制限する処理の内容について、具体的な例を挙げて説明する。例えば、図32は、本実施形態に係るサンプル適応オフセットフィルタが、ピクチャタイプに応じてオフセット値の候補の数を制限する処理の内容について説明するための説明図である。なお、図32において、Iピクチャ、Pピクチャ、及びBピクチャは、それぞれ参照関係にあるものとする。即ち、図32において、Pピクチャは、Iピクチャを参照しており、Bピクチャは、Iピクチャ及びPピクチャを参照しているものとする。
本実施形態に係るオフセット判定部350は、ピクチャタイプがIピクチャの場合には、第1の実施形態に係るオフセット判定部350と同様に、オフセット値の候補の数の最大値を「8」とする。即ち、ピクチャタイプがIピクチャの場合には、例えば、図13に示すオフセット測定部351のうち、Offset[0]測定部~Offset[7]測定部の全てが使用されることとなる。
また、ピクチャタイプがPピクチャの場合には、オフセット判定部350は、当該Pピクチャの参照先であるIピクチャにおいて選択されたオフセット値のうち最大値までを対象として、当該Pピクチャにおけるオフセット値の候補の数を制限する。なお、参照先のピクチャにおいて選択されたオフセット値の最大値については、例えば、当該参照先のピクチャにおけるオフセット値の特定のために算出した統計量に基づき取得することが可能である。
具体的な一例として、図32に示す例では、Iピクチャで選択されたオフセット値の最大が、Offset[5]測定部が対象とするオフセット値であったものとする。この場合には、オフセット判定部350は、当該Iピクチャを参照するPピクチャについては、Offset[5]測定部が対象とするオフセット値まで(即ち、Offset[0]測定部~Offset[5]測定部が対象とするオフセット値)を、当該Pピクチャに対応するオフセット値の候補とする。即ち、図32に示す例の場合には、Pピクチャについては、オフセット値の候補の数が「6」に制限され、図13に示すオフセット測定部351のうち、Offset[0]測定部~Offset[5]測定部が使用されることとなる。
また、ピクチャタイプがBピクチャの場合には、オフセット判定部350は、当該Bピクチャの参照先であるIピクチャ及びPピクチャにおいて選択されたオフセット値のうち最大値までを対象として、当該Bピクチャにおけるオフセット値の候補の数を制限する。
なお、このとき、オフセット判定部350は、各参照先(例えば、Iピクチャ及びPピクチャ)において選択されたオフセット値の最大値のうち、値の小さい方に基づき、当該Bピクチャにおけるオフセット値の候補の数を制限する。これは、Bピクチャは、自身の前後(例えば、図32におけるIピクチャ及びPピクチャ)を参照できるため、各参照先のピクチャのうち、原画像との差分がより少ないピクチャを参照すればよいことに起因する。
例えば、図32に示す例では、Iピクチャで選択されたオフセット値の最大が、Offset[5]測定部が対象とするオフセット値であり、Pピクチャで選択されたオフセット値の最大が、Offset[3]測定部が対象とするオフセット値であったものとする。この場合には、オフセット判定部350は、当該Iピクチャ及びPピクチャを参照するBピクチャについては、Offset[3]測定部が対象とするオフセット値まで(即ち、Offset[0]測定部~Offset[3]測定部が対象とするオフセット値)を、当該Bピクチャに対応するオフセット値の候補とする。即ち、図32に示す例の場合には、Bピクチャについては、オフセット値の候補の数が「4」に制限され、図13に示すオフセット測定部351のうち、Offset[0]測定部~Offset[3]測定部が使用されることとなる。
なお、図32を参照して示した例では、Bピクチャとして、図31に示す例において、ピクチャデプス2に含まれるBピクチャの場合の例について説明したが、他のピクチャデプスにおけるBピクチャについても、基本的な思想は変わらない。
例えば、図31に示す例において、ピクチャデプス1に含まれるIピクチャと、ピクチャデプス2に含まれるBピクチャとの間に位置するBピクチャ(即ち、デコード順序が「1」で示されたBピクチャ)に着目する。この場合には、オフセット判定部350は、ピクチャデプス1に含まれるIピクチャと、ピクチャデプス2に含まれるBピクチャとのそれぞれにおいて、選択されたオフセット値の最大値のうち、より低い値に基づき、ピクチャデプス2に含まれるBピクチャにおけるオフセット値の候補の数を制限する。
具体的な一例として、Iピクチャ側で選択されたオフセット値の最大値がOffset[5]測定部が対象とするオフセット値であり、ピクチャデプス2に含まれるBピクチャ側で選択されたオフセット値の最大値がOffset[3]測定部が対象とするオフセット値であるものとする。この場合には、オフセット判定部350は、Offset[3]測定部が対象とするオフセット値に基づき、ピクチャデプス2に含まれるBピクチャにおけるオフセット値の候補の数を制限することとなる。
なお、このとき、ピクチャデプス2に含まれるBピクチャは、ピクチャデプス1に含まれるIピクチャを参照している。そのため、ピクチャデプス2に含まれるBピクチャにおいて選択されたオフセット値の最大値は、ピクチャデプス1に含まれるIピクチャにおいて選択されたオフセット値の最大値を超えることはない。このような特性を利用して、オフセット判定部350は、例えば、参照先のピクチャのうちいずれか一方がBピクチャの場合には、当該Bピクチャにおいて選択されたオフセット値の最大値に基づき、対象となるピクチャ(即ち、よりピクチャデプスの深いBピクチャ)におけるオフセット値の候補の数を制限してもよい。
また、上記に説明した特性上、より深いピクチャデプスに含まれるピクチャほど、オフセット値の最大値はより小さくなり、オフセット値の候補の数はより制限されることとなる。そのため、オフセット判定部350は、例えば、複数の参照先を有するピクチャ(即ち、Bピクチャ)の場合には、より深いピクチャデプスに含まれるピクチャで選択されたオフセット値の最大値に基づき、対象となるピクチャにおけるオフセット値の候補の数を制限してもよい。
以上、図31及び図32を参照して、本実施形態に係る画像符号化装置におけるサンプル適応オフセットフィルタの概要について説明した。
[5-2.処理]
次に、本実施形態に係る画像符号化装置におけるサンプル適応オフセットフィルタの一連の処理の流れの一例について、特に、オフセット判定部350の処理に着目して説明する。例えば、図33及び図34は、本実施形態に係る画像符号化装置における、オフセット判定部350の一連の処理の流れの一例を示したフローチャートである。
次に、本実施形態に係る画像符号化装置におけるサンプル適応オフセットフィルタの一連の処理の流れの一例について、特に、オフセット判定部350の処理に着目して説明する。例えば、図33及び図34は、本実施形態に係る画像符号化装置における、オフセット判定部350の一連の処理の流れの一例を示したフローチャートである。
図33に示すフローチャートを、図17に示したフローチャートと比較するとわかるように、本実施形態に係るオフセット判定部350は、ステップS800で示した処理(即ち、オフセット値の候補数の数を制限するための処理)を含む点で、前述した第1の実施形態に係るオフセット判定部350と異なる。そこで、本説明では、本実施形態に係るオフセット判定部350の処理の流れの一例について、前述した第1の実施形態に係るオフセット判定部350(図17参照)と異なる部分に着目して説明し、その他の部分については、詳細な説明は省略する。
(ステップS800)
まず、オフセット判定部350は、対象となるピクチャのピクチャタイプに応じて、オフセット値の候補の数(即ち、オフセット値の候補の数の最大値N)を制限する。
まず、オフセット判定部350は、対象となるピクチャのピクチャタイプに応じて、オフセット値の候補の数(即ち、オフセット値の候補の数の最大値N)を制限する。
ここで、図34を参照する。図34は、オフセット判定部350が、対象となるピクチャのピクチャタイプに応じて、オフセット値の候補の数を制限する処理(即ち、図33においてステップS800で示された処理)の流れの一例について示したフローチャートである。
(ステップS801)
まず、オフセット判定部350は、処理の対象となるピクチャのピクチャタイプを示す情報に基づき、当該ピクチャが、I、P、及びBピクチャのいずれに相当するかを判別する。
まず、オフセット判定部350は、処理の対象となるピクチャのピクチャタイプを示す情報に基づき、当該ピクチャが、I、P、及びBピクチャのいずれに相当するかを判別する。
(ステップS805)
対象となるピクチャがIピクチャの場合には(ステップS803、YES)、オフセット判定部350は、オフセット値の候補の数の最大値Nを7に設定する。
対象となるピクチャがIピクチャの場合には(ステップS803、YES)、オフセット判定部350は、オフセット値の候補の数の最大値Nを7に設定する。
(ステップS809)
また、対象となるピクチャがPピクチャの場合には(ステップS803、NO、かつ、ステップS807、YES)、オフセット判定部350は、当該ピクチャのオフセット値の候補の数の最大値Nを、当該ピクチャが参照する他のピクチャ(例えば、IまたはPピクチャ)で選択されたオフセット値の最大値に基づき制限する。なお、このときオフセット判定部350は、参照先となる他のピクチャにおけるオフセット値の特定のために算出した統計量に基づき、当該他のピクチャで選択されたオフセット値の最大値を特定すればよい。
また、対象となるピクチャがPピクチャの場合には(ステップS803、NO、かつ、ステップS807、YES)、オフセット判定部350は、当該ピクチャのオフセット値の候補の数の最大値Nを、当該ピクチャが参照する他のピクチャ(例えば、IまたはPピクチャ)で選択されたオフセット値の最大値に基づき制限する。なお、このときオフセット判定部350は、参照先となる他のピクチャにおけるオフセット値の特定のために算出した統計量に基づき、当該他のピクチャで選択されたオフセット値の最大値を特定すればよい。
(ステップS809)
また、対象となるピクチャがBピクチャの場合には(ステップS803、NO、かつ、ステップS807、NO)、オフセット判定部350は、当該ピクチャのオフセット値の候補の数の最大値Nを、当該ピクチャが参照する他のピクチャ(例えば、I、P、またはBピクチャ)それぞれで選択されたオフセット値の最大値のうち、小さい方の値に基づき制限する。なお、このときオフセット判定部350は、参照先となる他のピクチャそれぞれにおけるオフセット値の特定のために算出した統計量に基づき、当該他のピクチャで選択されたオフセット値の最大値を特定すればよい。
また、対象となるピクチャがBピクチャの場合には(ステップS803、NO、かつ、ステップS807、NO)、オフセット判定部350は、当該ピクチャのオフセット値の候補の数の最大値Nを、当該ピクチャが参照する他のピクチャ(例えば、I、P、またはBピクチャ)それぞれで選択されたオフセット値の最大値のうち、小さい方の値に基づき制限する。なお、このときオフセット判定部350は、参照先となる他のピクチャそれぞれにおけるオフセット値の特定のために算出した統計量に基づき、当該他のピクチャで選択されたオフセット値の最大値を特定すればよい。
以上のようにして、オフセット判定部350は、対象となるピクチャのピクチャタイプに応じて、オフセット値の候補の数(即ち、オフセット値の候補の数の最大値N)を制限する。
なお、以降の処理(即ち、図33におけるステップS621以降の処理)については、前述した第1の実施形態に係るオフセット判定部350の場合と同様である。
なお、図33に示す例では、図17に示す例と比較した場合に、オフセット値の候補の数の最大値Nが、ステップS800の処理結果に基づき制限されている。そのため、本実施形態に係るオフセット判定部350に依れば、ピクチャタイプがPまたはBピクチャの場合については、制限されたオフセット値の候補の数だけ、当該候補に対応するコストの計算を省略することが可能となる(即ち、ステップS622~S628で示された一連の処理の実行回数(ループ回数)が制限される)。そのため、本実施形態に係るオフセット判定部350は、前述した第1の実施形態に係るオフセット判定部350(図17参照)に比べて、オフセット値を特定するための、オフセット値の候補ごとのコスト計算に係る処理量を低減することが可能となる。
以上、図33及び図34を参照して、本実施形態に係る画像符号化装置におけるサンプル適応オフセットフィルタの一連の処理の流れの一例について、特に、オフセット判定部350の処理に着目して説明した。
[5-3.まとめ]
以上、説明したように、本実施形態に係る画像符号化装置のサンプル適応オフセットフィルタは、対象となるピクチャのピクチャタイプに応じて、オフセット値の候補をさらに制限する。具体的には、サンプル適応オフセットフィルタは、対象となるピクチャが、PピクチャやBピクチャ(即ち、他のピクチャを参照した予測結果に基づき生成されるピクチャ)の場合には、当該ピクチャのオフセット値の候補の数を、参照先である他のピクチャで選択されたオフセット値の最大値に基づき制限する。このような構成により、本実施形態に係るサンプル適応オフセットフィルタは、適用するオフセット値を決定するための、当該オフセット値の候補ごとのコスト計算の処理量を低減することが可能となる。
以上、説明したように、本実施形態に係る画像符号化装置のサンプル適応オフセットフィルタは、対象となるピクチャのピクチャタイプに応じて、オフセット値の候補をさらに制限する。具体的には、サンプル適応オフセットフィルタは、対象となるピクチャが、PピクチャやBピクチャ(即ち、他のピクチャを参照した予測結果に基づき生成されるピクチャ)の場合には、当該ピクチャのオフセット値の候補の数を、参照先である他のピクチャで選択されたオフセット値の最大値に基づき制限する。このような構成により、本実施形態に係るサンプル適応オフセットフィルタは、適用するオフセット値を決定するための、当該オフセット値の候補ごとのコスト計算の処理量を低減することが可能となる。
特に、サンプル適応オフセットフィルタでは、一般的に、BピクチャやPピクチャを処理対象とする場合には、Iピクチャを処理対象とする場合に比べて処理量が大きくなる傾向にある。これに対して、本実施形態に係るサンプル適応オフセットフィルタでは、PピクチャやBピクチャを対象とする場合に、オフセット値の候補ごとのコスト計算の処理負荷が軽減されるため、PピクチャやBピクチャを対象とした場合の処理量を軽減することが可能となる。
なお、参照関係にあるピクチャ間がより類似する傾向にあるほど、各ピクチャにおいて選択されるオフセット値がより小さくなる傾向にある。即ち、本実施形態に係るサンプル適応オフセットフィルタでは、上記に説明した処理の特性上、参照関係にあるピクチャ間がより類似する場合において、PピクチャやBピクチャにおけるオフセット値の候補の数を、より制限することが可能となる。
具体的な一例として、フレームレートがより高いほど、各フレーム間の時系列に沿った距離がより短くなり、フレーム間がより類似する傾向にあるため、より小さいオフセット値が選択されやすくなる傾向にある。そのため、本実施形態に係るサンプル適応オフセットフィルタにおいては、フレームレートがより高いほど、PピクチャやBピクチャにおけるオフセット値の候補の数を、より制限することが可能となり、ひいては、処理量をより低減することが可能となる傾向にある。
<6.ハードウェア構成例>
上述した実施形態は、ソフトウェア、ハードウェア、及びソフトウェアとハードウェアとの組合せのいずれを用いて実現されてもよい。画像符号化装置10がソフトウェアを使用する場合、ソフトウェアを構成するプログラムは、例えば、装置の内部又は外部に設けられる記憶媒体(非一時的な媒体:non-transitory media)に予め格納される。そして、各プログラムは、例えば、実行時にRAM(Random Access Memory)に読み込まれ、CPU(Central Processing Unit)などのプロセッサにより実行される。
上述した実施形態は、ソフトウェア、ハードウェア、及びソフトウェアとハードウェアとの組合せのいずれを用いて実現されてもよい。画像符号化装置10がソフトウェアを使用する場合、ソフトウェアを構成するプログラムは、例えば、装置の内部又は外部に設けられる記憶媒体(非一時的な媒体:non-transitory media)に予め格納される。そして、各プログラムは、例えば、実行時にRAM(Random Access Memory)に読み込まれ、CPU(Central Processing Unit)などのプロセッサにより実行される。
図35は、上述した実施形態を適用可能なエンコーダのハードウェア構成の一例を示すブロック図である。図35を参照すると、エンコーダ800は、システムバス810、画像処理チップ820及びオフチップメモリ890を備える。画像処理チップ820は、n個(nは1以上)の処理回路830-1、830-2、…、830-n、参照バッファ840、システムバスインタフェース850及びローカルバスインタフェース860を含む。
システムバス810は、画像処理チップ820と外部モジュール(例えば、中央制御機能、アプリケーション機能、通信インタフェース又はユーザインタフェースなど)との間の通信路を提供する。処理回路830-1、830-2、…、830-nは、システムバスインタフェース850を介してシステムバス810と接続され、及びローカルバスインタフェース860を介してオフチップメモリ890と接続される。処理回路830-1、830-2、…、830-nは、オンチップメモリ(例えば、SRAM)に相当し得る参照バッファ840にもアクセスすることができる。オフチップメモリ890は、例えば、画像処理チップ820により処理される画像データを記憶するフレームメモリであってよい。
一例として、処理回路830-1は上述したイントラ予測部30に、処理回路830-2は上述したインター予測部35に、他の処理回路は直交変換部14に、また別の処理回路は可逆符号化部16に相当し得る。また、別の処理回路は、ループフィルタ24に相当し得る。また、ループフィルタ24を構成する、デブロックフィルタ200、サンプル適応オフセットフィルタ300、及び適応ループフィルタ400のそれぞれを、別の処理回路として構成してもよい。なお、これら処理回路は、同一の画像処理チップ820ではなく、別個のチップ上に形成されてもよい。
<7.応用例>
[7-1.様々な製品への応用]
上述した実施形態は、衛星回線、ケーブルTV回線、インターネット、若しくはセルラー通信ネットワークなどを用いて映像の符号化ストリームを送信する送信装置、又は映像の符号化ストリームを光ディスク、磁気ディスク若しくはフラッシュメモリなどの媒体に記録する記録装置、といった様々な電子機器に応用され得る。以下、3つの応用例について説明する。
[7-1.様々な製品への応用]
上述した実施形態は、衛星回線、ケーブルTV回線、インターネット、若しくはセルラー通信ネットワークなどを用いて映像の符号化ストリームを送信する送信装置、又は映像の符号化ストリームを光ディスク、磁気ディスク若しくはフラッシュメモリなどの媒体に記録する記録装置、といった様々な電子機器に応用され得る。以下、3つの応用例について説明する。
(1)第1の応用例
図36は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機920は、アンテナ921、通信部922、音声コーデック923、スピーカ924、マイクロホン925、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931、操作部932、センサ部933、バス934及びバッテリー935を備える。
図36は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機920は、アンテナ921、通信部922、音声コーデック923、スピーカ924、マイクロホン925、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931、操作部932、センサ部933、バス934及びバッテリー935を備える。
アンテナ921は、通信部922に接続される。スピーカ924及びマイクロホン925は、音声コーデック923に接続される。操作部932は、制御部931に接続される。バス934は、通信部922、音声コーデック923、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931及びセンサ部933を相互に接続する。
携帯電話機920は、音声通話モード、データ通信モード、撮影モード及びテレビ電話モードを含む様々な動作モードで、音声信号の送受信、電子メール又は画像データの送受信、画像の撮像、及びデータの記録などの動作を行う。
音声通話モードにおいて、マイクロホン925により生成されるアナログ音声信号は、音声コーデック923に供給される。音声コーデック923は、アナログ音声信号を音声データへ変換し、変換された音声データをA/D変換し圧縮する。そして、音声コーデック923は、圧縮後の音声データを通信部922へ出力する。通信部922は、音声データを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号をアンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して音声データを生成し、生成した音声データを音声コーデック923へ出力する。音声コーデック923は、音声データを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
また、データ通信モードにおいて、例えば、制御部931は、操作部932を介するユーザによる操作に応じて、電子メールを構成する文字データを生成する。また、制御部931は、文字を表示部930に表示させる。また、制御部931は、操作部932を介するユーザからの送信指示に応じて電子メールデータを生成し、生成した電子メールデータを通信部922へ出力する。通信部922は、電子メールデータを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号をアンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して電子メールデータを復元し、復元した電子メールデータを制御部931へ出力する。制御部931は、表示部930に電子メールの内容を表示させると共に、電子メールデータを記録再生部929の記憶媒体に記憶させる。
記録再生部929は、読み書き可能な任意の記憶媒体を有する。例えば、記憶媒体は、RAM又はフラッシュメモリなどの内蔵型の記憶媒体であってもよく、ハードディスク、磁気ディスク、光磁気ディスク、光ディスク、USBメモリ、又はメモリカードなどの外部装着型の記憶媒体であってもよい。
また、撮影モードにおいて、例えば、カメラ部926は、被写体を撮像して画像データを生成し、生成した画像データを画像処理部927へ出力する。画像処理部927は、カメラ部926から入力される画像データを符号化し、符号化ストリームを記録再生部929の記憶媒体に記憶させる。
また、テレビ電話モードにおいて、例えば、多重分離部928は、画像処理部927により符号化された映像ストリームと、音声コーデック923から入力される音声ストリームとを多重化し、多重化したストリームを通信部922へ出力する。通信部922は、ストリームを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号をアンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。これら送信信号及び受信信号には、符号化ビットストリームが含まれ得る。そして、通信部922は、受信信号を復調及び復号してストリームを復元し、復元したストリームを多重分離部928へ出力する。多重分離部928は、入力されるストリームから映像ストリーム及び音声ストリームを分離し、映像ストリームを画像処理部927、音声ストリームを音声コーデック923へ出力する。画像処理部927は、映像ストリームを復号し、映像データを生成する。映像データは、表示部930に供給され、表示部930により一連の画像が表示される。音声コーデック923は、音声ストリームを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
センサ部933は、加速度センサ及びジャイロセンサなどのセンサ群を含み、携帯電話機920の動きを表す指標を出力する。バッテリー935は、図中では省略されている電力供給ラインを介して、通信部922、音声コーデック923、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931及びセンサ部933に電力を供給する。
このように構成された携帯電話機920において、画像処理部927は、上述した実施形態に係る画像符号化装置10の機能を有する。それにより、携帯電話機920において、適用するSAOのモードと、適用するオフセット値とを決定するためのコスト計算の処理量を低減し、ひいては、携帯電話機920の消費電力や回路規模を低減することが可能となる。
(2)第2の応用例
図37は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置940は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置940は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置940は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置940は、音声データ及び映像データを復号する。
図37は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置940は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置940は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置940は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置940は、音声データ及び映像データを復号する。
記録再生装置940は、チューナ941、外部インタフェース942、エンコーダ943、HDD(Hard Disk Drive)944、ディスクドライブ945、セレクタ946、デコーダ947、OSD(On-Screen Display)948、制御部949、及びユーザインタフェース950を備える。
チューナ941は、アンテナ(図示せず)を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ941は、復調により得られた符号化ビットストリームをセレクタ946へ出力する。即ち、チューナ941は、記録再生装置940における伝送手段としての役割を有する。
外部インタフェース942は、記録再生装置940と外部機器又はネットワークとを接続するためのインタフェースである。外部インタフェース942は、例えば、IEEE1394インタフェース、ネットワークインタフェース、USBインタフェース、又はフラッシュメモリインタフェースなどであってよい。例えば、外部インタフェース942を介して受信される映像データ及び音声データは、エンコーダ943へ入力される。即ち、外部インタフェース942は、記録再生装置940における伝送手段としての役割を有する。
エンコーダ943は、外部インタフェース942から入力される映像データ及び音声データが符号化されていない場合に、映像データ及び音声データを符号化する。そして、エンコーダ943は、符号化ビットストリームをセレクタ946へ出力する。
HDD944は、映像及び音声などのコンテンツデータが圧縮された符号化ビットストリーム、各種プログラム及びその他のデータを内部のハードディスクに記録する。また、HDD944は、映像及び音声の再生時に、これらデータをハードディスクから読み出す。
ディスクドライブ945は、装着されている記録媒体へのデータの記録及び読み出しを行う。ディスクドライブ945に装着される記録媒体は、例えばDVDディスク(DVD-Video、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等)又はBlu-ray(登録商標)ディスクなどであってよい。
セレクタ946は、映像及び音声の記録時には、チューナ941又はエンコーダ943から入力される符号化ビットストリームを選択し、選択した符号化ビットストリームをHDD944又はディスクドライブ945へ出力する。また、セレクタ946は、映像及び音声の再生時には、HDD944又はディスクドライブ945から入力される符号化ビットストリームをデコーダ947へ出力する。
デコーダ947は、符号化ビットストリームを復号し、映像データ及び音声データを生成する。そして、デコーダ947は、生成した映像データをOSD948へ出力する。また、デコーダ904は、生成した音声データを外部のスピーカへ出力する。
OSD948は、デコーダ947から入力される映像データを再生し、映像を表示する。また、OSD948は、表示する映像に、例えばメニュー、ボタン又はカーソルなどのGUIの画像を重畳してもよい。
制御部949は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、記録再生装置940の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース950から入力される操作信号に応じて、記録再生装置940の動作を制御する。
ユーザインタフェース950は、制御部949と接続される。ユーザインタフェース950は、例えば、ユーザが記録再生装置940を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース950は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部949へ出力する。
このように構成された記録再生装置940において、エンコーダ943は、上述した実施形態に係る画像符号化装置10の機能を有する。それにより、記録再生装置940において、適用するSAOのモードと、適用するオフセット値とを決定とを決定するためのコスト計算の処理量を低減し、ひいては、記録再生装置940の消費電力や回路規模を低減することが可能となる。
(3)第3の応用例
図38は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置960は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
図38は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置960は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
撮像装置960は、光学ブロック961、撮像部962、信号処理部963、画像処理部964、表示部965、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、制御部970、ユーザインタフェース971、センサ972、バス973及びバッテリー974を備える。
光学ブロック961は、撮像部962に接続される。撮像部962は、信号処理部963に接続される。表示部965は、画像処理部964に接続される。ユーザインタフェース971は、制御部970に接続される。バス973は、画像処理部964、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、制御部970及びセンサ972を相互に接続する。
光学ブロック961は、フォーカスレンズ及び絞り機構などを有する。光学ブロック961は、被写体の光学像を撮像部962の撮像面に結像させる。撮像部962は、CCD又はCMOSなどのイメージセンサを有し、撮像面に結像した光学像を光電変換によって電気信号としての画像信号に変換する。そして、撮像部962は、画像信号を信号処理部963へ出力する。
信号処理部963は、撮像部962から入力される画像信号に対してニー補正、ガンマ補正、色補正などの種々のカメラ信号処理を行う。信号処理部963は、カメラ信号処理後の画像データを画像処理部964へ出力する。
画像処理部964は、信号処理部963から入力される画像データを符号化し、符号化データを生成する。そして、画像処理部964は、生成した符号化データを外部インタフェース966又はメディアドライブ968へ出力する。また、画像処理部964は、外部インタフェース966又はメディアドライブ968から入力される符号化データを復号し、画像データを生成する。そして、画像処理部964は、生成した画像データを表示部965へ出力する。また、画像処理部964は、信号処理部963から入力される画像データを表示部965へ出力して画像を表示させてもよい。また、画像処理部964は、OSD969から取得される表示用データを、表示部965へ出力する画像に重畳してもよい。
OSD969は、例えばメニュー、ボタン又はカーソルなどのGUIの画像を生成して、生成した画像を画像処理部964へ出力する。
外部インタフェース966は、例えばUSB入出力端子として構成される。外部インタフェース966は、例えば、画像の印刷時に、撮像装置960とプリンタとを接続する。また、外部インタフェース966には、必要に応じてドライブが接続される。ドライブには、例えば、磁気ディスク又は光ディスクなどのリムーバブルメディアが装着され、リムーバブルメディアから読み出されるプログラムが、撮像装置960にインストールされ得る。さらに、外部インタフェース966は、LAN又はインターネットなどのネットワークに接続されるネットワークインタフェースとして構成されてもよい。即ち、外部インタフェース966は、撮像装置960における伝送手段としての役割を有する。
メディアドライブ968に装着される記録媒体は、例えば、磁気ディスク、光磁気ディスク、光ディスク、又は半導体メモリなどの、読み書き可能な任意のリムーバブルメディアであってよい。また、メディアドライブ968に記録媒体が固定的に装着され、例えば、内蔵型ハードディスクドライブ又はSSD(Solid State Drive)のような非可搬性の記憶部が構成されてもよい。
制御部970は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、撮像装置960の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース971から入力される操作信号に応じて、撮像装置960の動作を制御する。
ユーザインタフェース971は、制御部970と接続される。ユーザインタフェース971は、例えば、ユーザが撮像装置960を操作するためのボタン及びスイッチなどを有する。ユーザインタフェース971は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部970へ出力する。
センサ972は、加速度センサ及びジャイロセンサなどのセンサ群を含み、撮像装置960の動きを表す指標を出力する。バッテリー974は、図中では省略されている電力供給ラインを介して、撮像部962、信号処理部963、画像処理部964、表示部965、メディアドライブ968、OSD969、制御部970及びセンサ972に電力を供給する。
このように構成された撮像装置960において、画像処理部964は、上述した実施形態に係る画像符号化装置10の機能を有する。それにより、撮像装置960において、適用するSAOのモードと、適用するオフセット値とを決定とを決定するためのコスト計算の処理量を低減し、ひいては、撮像装置960の消費電力や回路規模を低減することが可能となる。
[7-2.様々な実装レベル]
本開示に係る技術は、例えば、システムLSI(Large Scale Integration)などのプロセッサ、複数のプロセッサを用いるモジュール、複数のモジュールを用いるユニット、ユニットにさらにその他の機能を付加したセットなどの様々な実装レベルにおいて実現されてよい。
本開示に係る技術は、例えば、システムLSI(Large Scale Integration)などのプロセッサ、複数のプロセッサを用いるモジュール、複数のモジュールを用いるユニット、ユニットにさらにその他の機能を付加したセットなどの様々な実装レベルにおいて実現されてよい。
(1)ビデオセット
本開示に係る技術をセットとして実現する場合の例について、図39を参照して説明する。図39は、ビデオセットの概略的な構成の一例を示すブロック図である。
本開示に係る技術をセットとして実現する場合の例について、図39を参照して説明する。図39は、ビデオセットの概略的な構成の一例を示すブロック図である。
近年、電子機器は多機能化している。電子機器の開発又は製造は、個々の機能ごとに行われた後、複数の機能を統合する段階へと進む。従って、電子機器の一部のみを製造し又は販売する事業者が存在する。当該事業者は、単一の機能若しくは互いに関連する複数の機能を有する構成要素を提供し、又は統合的な機能群を有するセットを提供する。図39に示したビデオセット1300は、画像の符号化及び復号(いずれか一方でもよい)のための構成要素と、それら機能に関連する他の機能を有する構成要素とを統合的に含むセットである。
図39を参照すると、ビデオセット1300は、ビデオモジュール1311、外部メモリ1312、パワーマネージメントモジュール1313、及びフロントエンドモジュール1314を含むモジュール群と、コネクティビティモジュール1321、カメラ1322、及びセンサ1323を含む関連機能のためのデバイス群と、を有する。
モジュールは、互いに関連するいくつかの機能のための部品を集約することにより形成される構成要素である。モジュールは、どのような物理的構成を有していてもよい。一例として、モジュールは、同一の又は異なる機能を有する複数のプロセッサと、抵抗及びコンデンサなどの電子回路素子と、その他のデバイスとを回路基板に一体的に配置することにより形成され得る。モジュールに他のモジュール又はプロセッサなどを組合せることにより、別のモジュールが形成されてもよい。
図39の例では、ビデオモジュール1311において、画像処理に関する機能のための部品が集約されている。ビデオモジュール1311は、アプリケーションプロセッサ1331、ビデオプロセッサ1332、ブロードバンドモデム1333、及びベースバンドモジュール1334を有する。
プロセッサは、例えばSOC(System On a Chip)又はシステムLSI(Large Scale Integration)であってよい。SoC又はシステムLSIは、所定のロジックを実装するハードウェアを含んでもよい。また、SoC又はシステムLSIは、CPUと、当該CPUに所定の機能を実行させるためのプログラムを記憶する非一時的な有形の媒体(non-transitory tangible media)とを含んでもよい。プログラムは、例えば、ROMにより記憶され、実行時にRAM(Random Access Memory)に読み込まれた上でCPUにより実行され得る。
アプリケーションプロセッサ1331は、画像処理に関するアプリケーションを実行するプロセッサである。アプリケーションプロセッサ1331において実行されるアプリケーションは、画像処理のための何らかの演算に加えて、例えばビデオプロセッサ1332及びその他の構成要素の制御を行ってもよい。ビデオプロセッサ1332は、画像の符号化及び復号に関する機能を有するプロセッサである。なお、アプリケーションプロセッサ1331及びビデオプロセッサ1332は、1つのプロセッサに一体化されてもよい(図中の点線1341参照)。
ブロードバンドモデム1333は、インターネット又は公衆交換電話網などのネットワークを介する通信に関する処理を行うモジュールである。例えば、ブロードバンドモデム1333は、送信データを含むデジタル信号をアナログ信号に変換するためのデジタル変調、及び受信データを含むアナログ信号をデジタル信号に変換するためのデジタル復調を実行する。ブロードバンドモデム1333により処理される送信データ及び受信データは、例えば、画像データ、画像データの符号化ストリーム、アプリケーションデータ、アプリケーションプログラム及び設定データなどの任意の情報を含み得る。
ベースバンドモジュール1334は、フロントエンドモジュール1314を介して送受信されるRF(Radio Frequency)信号のためのベースバンド処理を行うモジュールである。例えば、ベースバンドモジュール1334は、送信データを含む送信ベースバンド信号を変調し及びRF信号へと周波数変換して、RF信号をフロントエンドモジュール1314へ出力する。また、ベースバンドモジュール1334は、フロントエンドモジュール1314から入力されるRF信号を周波数変換し及び復調して、受信データを含む受信ベースバンド信号を生成する。
外部メモリ1312は、ビデオモジュール1311の外部に設けられる、ビデオモジュール1311からアクセス可能なメモリデバイスである。多数のフレームを含む映像データのような大規模データが外部メモリ1312に格納される場合、外部メモリ1312は、例えばDRAM(Dynamic Random Access Memory)のような比較的安価で大容量の半導体メモリを含み得る。
パワーマネージメントモジュール1313は、ビデオモジュール1311及びフロントエンドモジュール1314への電力供給を制御するモジュールである。
フロントエンドモジュール1314は、ベースバンドモジュール1334に接続され、フロントエンド機能を提供するモジュールである。図39の例において、フロントエンドモジュール1314は、アンテナ部1351、フィルタ1352及び増幅部1353を有する。アンテナ部1351は、無線信号を送信し又は受信する1つ以上のアンテナ素子と、アンテナスイッチなどの関連する構成要素とを有する。アンテナ部1351は、増幅部1353により増幅されるRF信号を無線信号として送信する。また、アンテナ部1351は、無線信号として受信されるRF信号をフィルタ1352へ出力し、当該RF信号をフィルタ1352にフィルタリングさせる。
コネクティビティモジュール1321は、ビデオセット1300の外部接続に関する機能を有するモジュールである。コネクティビティモジュール1321は、任意の外部接続プロトコルをサポートしてよい。例えば、コネクティビティモジュール1321は、Bluetooth(登録商標)、IEEE802.11(例えばWi-Fi(登録商標))、NFC(Near Field Communication)又はIrDA(InfraRed Data Association)などの無線接続プロトコルをサポートするサブモジュールと、対応するアンテナとを有していてもよい。また、コネクティビティモジュール1321は、USB(Universal Serial Bus)又はHDMI(High-Definition Multimedia Interface)などの有線接続プロトコルをサポートするサブモジュールと、対応する接続端子とを有していてもよい。
また、コネクティビティモジュール1321は、磁気ディスク、光ディスク、光磁気ディスク、若しくは半導体メモリなどの記憶媒体、又はSSD(Solid State Drive)若しくはNAS(Network Attached Storage)などのストレージデバイスへのデータの書込み及び当該記憶媒体からのデータの読出しを行うドライブを含んでもよい。コネクティビティモジュール1321は、これら記憶媒体又はストレージデバイスを含んでもよい。また、コネクティビティモジュール1321は、画像を出力するディスプレイ又は音声を出力するスピーカへの接続性を提供してもよい。
カメラ1322は、被写体を撮像することにより撮像画像を取得するモジュールである。カメラ1322により取得される一連の撮像画像は、映像データを構成する。カメラ1322により生成される映像データは、例えば、必要に応じてビデオプロセッサ1332により符号化され、外部メモリ1312により又はコネクティビティモジュール1321に接続される記憶媒体により記憶され得る。
センサ1323は、例えば、GPSセンサ、音声センサ、超音波センサ、光センサ、照度センサ、赤外線センサ、角速度センサ、角加速度センサ、速度センサ、加速度センサ、ジャイロセンサ、地磁気センサ、衝撃センサ及び温度センサのうちの1つ以上を含み得るモジュールである。センサ1323により生成されるセンサデータは、例えば、アプリケーションプロセッサ1331によりアプリケーションの実行のために利用され得る。
このように構成されたビデオセット1300において、本開示に係る技術は、例えば、ビデオプロセッサ1332において利用され得る。この場合、ビデオセット1300は、本開示に係る技術を適用したセットとなる。
なお、ビデオセット1300は、画像データを処理する様々な種類の装置として実現されてよい。例えば、ビデオセット1300は、図20~図23を用いて説明したテレビジョン装置900、携帯電話機920、記録再生装置940又は撮像装置960に相当してもよい。また、ビデオセット1300は、図24を用いて説明したデータ伝送システム1000におけるPC1004、AV機器1005、タブレット装置1006若しくは携帯電話機1007などの端末装置、図25を用いて説明したデータ伝送システム1100における放送局1101若しくは端末装置1102、又は、図26を用いて説明したデータ伝送システム1200における撮像装置1201若しくはストリーム記憶装置1202に相当してもよい。
(2)ビデオプロセッサ
図40は、ビデオプロセッサ1332の概略的な構成の一例を示すブロック図である。ビデオプロセッサ1332は、入力映像信号及び入力音声信号をそれぞれ符号化して映像データ及び音声データを生成する機能と、符号化された映像データ及び音声データを復号して出力映像信号及び出力音声信号を生成する機能と、を有する。
図40は、ビデオプロセッサ1332の概略的な構成の一例を示すブロック図である。ビデオプロセッサ1332は、入力映像信号及び入力音声信号をそれぞれ符号化して映像データ及び音声データを生成する機能と、符号化された映像データ及び音声データを復号して出力映像信号及び出力音声信号を生成する機能と、を有する。
図40を参照すると、ビデオプロセッサ1332は、ビデオ入力処理部1401、第1スケーリング部1402、第2スケーリング部1403、ビデオ出力処理部1404、フレームメモリ1405、メモリ制御部1406、エンコード・デコードエンジン1407、ビデオES(Elementary Stream)バッファ1408A及び1408B、オーディオESバッファ1409A及び1409B、オーディオエンコーダ1410、オーディオデコーダ1411、多重化部(MUX)1412、逆多重化部(DEMUX)1413、並びに、ストリームバッファ1414を有する。
ビデオ入力処理部1401は、例えばコネクティビティモジュール1321から入力された映像信号をデジタル画像データに変換する。第1スケーリング部1402は、ビデオ入力処理部1401から入力される画像データについてフォーマット変換及びスケーリング(拡大/縮小)を行う。第2スケーリング部1403は、ビデオ出力処理部1404へ出力される画像データについてのフォーマット変換及びスケーリング(拡大/縮小)を行う。第1スケーリング部1402及び第2スケーリング部1403におけるフォーマット変換は、例えば、4:2:2/Y-Cb-Cr方式と4:2:0/Y-Cb-Cr方式との間の変換などであってよい。ビデオ出力処理部1404は、デジタル画像データを出力映像信号に変換し、出力映像信号を例えばコネクティビティモジュール1321へ出力する。
フレームメモリ1405は、ビデオ入力処理部1401、第1スケーリング部1402、第2スケーリング部1403、ビデオ出力処理部1404、及びエンコード・デコードエンジン1407によって共用される、画像データを記憶するメモリデバイスである。フレームメモリ1405は、例えばDRAMなどの半導体メモリを用いて実現されてよい。
メモリ制御部1406は、エンコード・デコードエンジン1407から入力される同期信号に基づき、アクセス管理テーブル1406Aに記憶されるフレームメモリ1405についてのアクセススケジュールに従って、フレームメモリ1405へのアクセスを制御する。アクセス管理テーブル1406Aは、エンコード・デコードエンジン1407、第1スケーリング部1402及び第2スケーリング部1403などにおいて実行される処理に依存し、メモリ制御部1406により更新される。
エンコード・デコードエンジン1407は、画像データを符号化して符号化映像ストリームを生成するためのエンコード処理、並びに、符号化映像ストリームから画像データを復号するためのデコード処理を行う。例えば、エンコード・デコードエンジン1407は、フレームメモリ1405から読み出した画像データを符号化し、符号化映像ストリームをビデオESバッファ1408Aに順次書き込む。また、例えば、ビデオESバッファ1408Bから符号化映像ストリームを順次読み出し、復号した画像データをフレームメモリ1405に書き込む。エンコード・デコードエンジン1407は、これら処理において、フレームメモリ1405を作業領域として使用し得る。エンコード・デコードエンジン1407は、例えば、各LCU(Largest Coding Unit)の処理を開始するタイミングで、メモリ制御部1406へ同期信号を出力する。
ビデオESバッファ1408Aは、エンコード・デコードエンジン1407によって生成された符号化映像ストリームをバッファリングする。ビデオESバッファ1408Aによりバッファリングされる符号化映像ストリームは、多重化部1412へ出力される。ビデオESバッファ1408Bは、逆多重化部1413から入力される符号化映像ストリームをバッファリングする。ビデオESバッファ1408Bによりバッファリングされる符号化映像ストリームは、エンコード・デコードエンジン1407へ出力される。
オーディオESバッファ1409Aは、オーディオエンコーダ1410によって生成された符号化音声ストリームをバッファリングする。オーディオESバッファ1409Aによりバッファリングされる符号化音声ストリームは、多重化部1412へ出力される。オーディオESバッファ1409Bは、逆多重化部1413から入力される符号化音声ストリームをバッファリングする。オーディオESバッファ1409Bによりバッファリングされる符号化音声ストリームは、オーディオデコーダ1411へ出力される。
オーディオエンコーダ1410は、例えばコネクティビティモジュール1321から入力される入力音声信号をデジタル変換し、例えばMPEGオーディオ方式又はAC3(Audio Code number 3)方式などの音声符号化方式に従って入力音声信号を符号化する。オーディオエンコーダ1410は、符号化音声ストリームをオーディオESバッファ1409Aに順次書き込む。オーディオデコーダ1411は、オーディオESバッファ1409Bから入力される符号化音声ストリームから音声データを復号し、アナログ信号へ変換する。オーディオデコーダ1411は、再生されたアナログ音声信号として、例えばコネクティビティモジュール1321へ音声信号を出力する。
多重化部1412は、符号化映像ストリームと符号化音声ストリームとを多重化して、多重化ビットストリームを生成する。多重化ビットストリームのフォーマットは、いかなるフォーマットであってもよい。多重化部1412は、所定のヘッダ情報をビットストリームに付加してもよい。また、多重化部1412は、ストリームのフォーマットを変換してもよい。例えば、多重化部1412は、符号化映像ストリームと符号化音声ストリームとが多重化されたトランスポートストリーム(転送用フォーマットのビットストリーム)を生成し得る。また、多重化部1412は、符号化映像ストリームと符号化音声ストリームとが多重化されたファイルデータ(記録用フォーマットのデータ)を生成し得る。
逆多重化部1413は、多重化部1412による多重化とは逆の手法で、多重化ビットストリームから符号化映像ストリーム及び符号化音声ストリームを逆多重化する。即ち、逆多重化部1413は、ストリームバッファ1414から読み出されるビットストリームから映像ストリームと音声ストリームとを抽出(又は分離)する。逆多重化部1413は、ストリームのフォーマットを変換(逆変換)してもよい。例えば、逆多重化部1413は、コネクティビティモジュール1321又はブロードバンドモデム1333から入力され得るトランスポートストリームをストリームバッファ1414を介して取得し、当該トランスポートストリームを映像ストリームと音声ストリームとに変換してもよい。また、逆多重化部1413は、コネクティビティモジュール1321により記憶媒体から読み出されるファイルデータをストリームバッファ1414を介して取得し、当該ファイルデータを映像ストリームと音声ストリームとに変換してもよい。
ストリームバッファ1414は、ビットストリームをバッファリングする。例えば、ストリームバッファ1414は、多重化部1412から入力されるトランスポートストリームをバッファリングし、所定のタイミングで又は外部からの要求に応じて、例えばコネクティビティモジュール1321又はブロードバンドモデム1333へトランスポートストリームを出力する。また、例えば、ストリームバッファ1414は、多重化部1412から入力されるファイルデータをバッファリングし、所定のタイミングで又は外部からの要求に応じて、例えばコネクティビティモジュール1321へ、当該ファイルデータを記録のために出力する。さらに、ストリームバッファ1414は、例えばコネクティビティモジュール1321又はブロードバンドモデム1333を介して取得されるトランスポートストリームをバッファリングし、所定のタイミングで又は外部からの要求に応じて、当該トランスポートストリームを逆多重化部1413へ出力する。また、ストリームバッファ1414は、例えばコネクティビティモジュール1321により記憶媒体から読み出されたファイルデータをバッファリングし、所定のタイミングで又は外部からの要求に応じて、当該ファイルデータを逆多重化部1413へ出力する。
このように構成されたビデオプロセッサ1332において、本開示に係る技術は、例えば、エンコード・デコードエンジン1407において利用され得る。この場合、ビデオプロセッサ1332は、本開示に係る技術を適用したチップ又はモジュールとなる。
図41は、ビデオプロセッサ1332の概略的な構成の他の例を示すブロック図である。図41の例において、ビデオプロセッサ1332は、映像データを所定の方式で符号化し及び復号する機能を有する。
図41を参照すると、ビデオプロセッサ1332は、制御部1511、ディスプレイインタフェース1512、ディスプレイエンジン1513、画像処理エンジン1514、内部メモリ1515、コーデックエンジン1516、メモリインタフェース1517、多重化/逆多重化部1518、ネットワークインタフェース1519、及びビデオインタフェース1520を有する。
制御部1511は、ディスプレイインタフェース1512、ディスプレイエンジン1513、画像処理エンジン1514、及びコーデックエンジン1516などの、ビデオプロセッサ1332内の様々な処理部の動作を制御する。制御部1511は、例えば、メインCPU1531、サブCPU1532及びシステムコントローラ1533を有する。メインCPU1531は、ビデオプロセッサ1332内の各処理部の動作を制御するためのプログラムを実行する。メインCPU1531は、プログラムの実行を通じて生成される制御信号を各処理部に供給する。サブCPU1532は、メインCPU1531の補助的な役割を果たす。例えば、サブCPU1532は、メインCPU1531が実行するプログラムの子プロセス及びサブルーチンを実行する。システムコントローラ1533は、メインCPU1531及びサブCPU1532によるプログラムの実行を管理する。
ディスプレイインタフェース1512は、制御部1511による制御の下、画像データを例えばコネクティビティモジュール1321へ出力する。例えば、ディスプレイインタフェース1512は、デジタル画像データから変換されるアナログ画像信号又はデジタル画像データそのものを、コネクティビティモジュール1321に接続されるディスプレイへ出力する。ディスプレイエンジン1513は、制御部1511による制御の下、画像データの属性が出力先のディスプレイの仕様に適合するように、画像データについてのフォーマット変換、サイズ変換及び色域変換などを実行する。画像処理エンジン1514は、制御部1511による制御の下、画像データについて、画質改善などの目的を有するフィルタリング処理を含み得る画像処理を実行する。
内部メモリ1515は、ディスプレイエンジン1513、画像処理エンジン1514、及びコーデックエンジン1516により共用される、ビデオプロセッサ1332の内部に設けられるメモリデバイスである。内部メモリ1515は、例えば、ディスプレイエンジン1513、画像処理エンジン1514、及びコーデックエンジン1516の間で画像データを入出力する際に利用される。内部メモリ1515は、いかなる種類のメモリデバイスであってもよい。例えば、内部メモリ1515は、ブロック単位の画像データ及び関連するパラメータを記憶するための、比較的小さいメモリサイズを有していてもよい。内部メモリ1515は、例えばSRAM(Static Random Access Memory)のような(例えば、外部メモリ1312に対して相対的に)小容量だが応答速度の速いメモリであってもよい。
コーデックエンジン1516は、画像データを符号化して符号化映像ストリームを生成するためのエンコード処理、並びに、符号化映像ストリームから画像データを復号するためのデコード処理を行う。コーデックエンジン1516によりサポートされる画像符号化方式は、任意の1つ又は複数の方式であってよい。図41の例において、コーデックエンジン1516は、MPEG-2 Video用ブロック1541、AVC/H.264用ブロック1542、HEVC/H.265用ブロック1543、HEVC/H.265(スケーラブル)用ブロック1544、HEVC/H.265(マルチビュー)用ブロック1545、及びMPEG-DASH用ブロック1551を有する。これら機能ブロックは、それぞれ、対応する画像符号化方式に従って画像データを符号化し及び復号する。
MPEG-DASH用ブロック1551は、画像データをMPEG-DASH方式に従って伝送することを可能とするための機能ブロックである。MPEG-DASH用ブロック1551は、標準仕様に準拠するストリームの生成、及び生成したストリームの伝送の制御を実行する。伝送される画像データの符号化及び復号は、コーデックエンジン1516に含まれる他の機能ブロックにより実行されてよい。
メモリインタフェース1517は、ビデオプロセッサ1332を外部メモリ1312と接続するためのインタフェースである。画像処理エンジン1514又はコーデックエンジン1516により生成されるデータは、メモリインタフェース1517を介して外部メモリ1312へ出力される。また、外部メモリ1312から入力されるデータは、メモリインタフェース1517を介して画像処理エンジン1514又はコーデックエンジン1516へ供給される。
多重化/逆多重化部1518は、符号化映像ストリーム及び関連するビットストリームの多重化及び逆多重化を行う。多重化の際に、多重化/逆多重化部1518は、多重化ストリームに所定のヘッダ情報を付加してもよい。また、逆多重化の際に、多重化/逆多重化部1518は、分離された個々のストリームに所定のヘッダ情報を付加してもよい。即ち、多重化/逆多重化部1518は、多重化又は逆多重化と共にフォーマット変換を実行し得る。例えば、多重化/逆多重化部1518は、複数のビットストリームと転送用フォーマットを有する多重化ストリームであるトランスポートストリームとの間の変換及び逆変換、並びに、複数のビットストリームと記録用フォーマットを有するファイルデータとの間の変換及び逆変換をサポートしてもよい。
ネットワークインタフェース1519は、例えば、ビデオプロセッサ1332をブロードバンドモデム1333又はコネクティビティモジュール1321へ接続するためのインタフェースである。ビデオインタフェース1520は、例えば、ビデオプロセッサ1332をコネクティビティモジュール1321又はカメラ1322へ接続するためのインタフェースである。
このように構成されたビデオプロセッサ1332において、本開示に係る技術は、例えば、コーデックエンジン1516において利用され得る。この場合、ビデオプロセッサ1332は、本開示に係る技術を適用したチップ又はモジュールとなる。
なお、ビデオプロセッサ1332の構成は、上述した2つの例に限定されない。例えば、ビデオプロセッサ1332は、1つの半導体チップとして実現されてもよく、又は複数の半導体チップとして実現されてもよい。また、ビデオプロセッサ1332は、複数の半導体を積層することにより形成される3次元積層LSI、又は複数のLSIの組合せとして実現されてもよい。
<8.まとめ>
以上、図1~図41を参照して、本開示の各実施形態に係る画像符号化装置について詳細に説明した。
以上、図1~図41を参照して、本開示の各実施形態に係る画像符号化装置について詳細に説明した。
なお、本開示に係る技術は、スケーラブル符号化技術に応用されてもよい。HEVCのスケーラブル符号化技術を、SHVC(Scalable HEVC)ともいう。例えば、上述した実施形態は、マルチレイヤの符号化ストリームに含まれる個々のレイヤ(ベースレイヤ及びエンハンスメントレイヤ)に適用可能である。決定されたSAOのモードやオフセット値に関する情報は、レイヤごとに生成され符号化されてもよく、又はレイヤ間で再利用されてもよい。また、本開示に係る技術は、マルチビュー符号化技術に応用されてもよい。例えば、上述した実施形態は、マルチビューの符号化ストリームに含まれる個々のビュー(ベースビュー及びノンベースビュー)に適用可能である。決定されたSAOのモードやオフセット値に関する情報は、ビューごとに生成され符号化されてもよく、又はビュー間で再利用されてもよい。
本明細書に記述したCU、PU及びTUとの用語は、HEVCにおいて、個々のブロックに関連付られるシンタックスをも含む論理的な単位を意味する。画像の一部分としての個々のブロックのみに着目する場合、これらは、CB(Coding Block)、PB(Prediction Block)及びTB(Transform Block)との用語にそれぞれ置き換えられてもよい。CBは、CTB(Coding Tree Block)を四分木(Quad-Tree)状に階層的に分割することにより形成される。1つの四分木の全体がCTBに相当し、CTBに対応する論理的な単位はCTU(Coding Tree Unit)と呼ばれる。
また、本明細書では、決定されたSAOのモードやオフセット値に関する情報が、符号化ストリームのヘッダに多重化されて、符号化側から復号側へ伝送される例について主に説明した。しかしながら、これら情報を伝送する手法はかかる例に限定されない。例えば、これら情報は、符号化ビットストリームに多重化されることなく、符号化ビットストリームと関連付けられた別個のデータとして伝送され又は記録されてもよい。ここで、「関連付ける」という用語は、ビットストリームに含まれる画像(スライス若しくはブロックなど、画像の一部であってもよい)と当該画像に対応する情報とを復号時にリンクさせ得るようにすることを意味する。即ち、情報は、画像(又はビットストリーム)とは別の伝送路上で伝送されてもよい。また、情報は、画像(又はビットストリーム)とは別の記録媒体(又は同一の記録媒体の別の記録エリア)に記録されてもよい。さらに、情報と画像(又はビットストリーム)とは、例えば、複数フレーム、1フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられてよい。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
なお、以下のような構成も本開示の技術的範囲に属する。
(1)
画像のビット深度に応じて制限されたオフセット値の候補から、復号された復号画像の画素に対して適用する前記オフセット値を設定する設定部と、
前記復号画像の画素に対して、前記設定部により設定された前記オフセット値を適用するフィルタ処理を実行するフィルタ処理部と、
を備える、画像処理装置。
(2)
前記設定部は、第1のビット深度よりも大きい第2のビット深度の場合における前記オフセット値の候補の数を、前記第1のビット深度の場合における前記オフセット値の候補の数に制限する、前記(1)に記載の画像処理装置。
(3)
前記設定部は、前記第2のビット深度の場合における前記オフセット値の候補の数を、前記第1のビット深度の場合に前記オフセット値がとり得る値の数に制限する、前記(2)に記載の画像処理装置。
(4)
当該第1のビット深度の場合に前記オフセット値のとり得る値は0~7であり、
当該第2のビット深度の場合に前記オフセット値のとり得る値は0~31である、前記(2)に記載の画像処理装置。
(5)
前記設定部は、前記画像を量子化する際に用いる量子化パラメタに応じて、前記復号画像の画素に対して適用する前記オフセット値の候補を設定する、前記(2)に記載の画像処理装置。
(6)
前記設定部は、前記量子化パラメタに応じて、前記復号画像の画素に対して適用する前記オフセット値の候補の最大値を制限する、前記(5)に記載の画像処理装置。
(7)
前記設定部は、前記量子化パラメタが小さいほど、前記オフセット値の候補の最大値が小さくなるように当該オフセット値の候補を設定する、前記(6)に記載の画像処理装置。
(8)
前記設定部は、前記量子化パラメタに応じて、隣接する候補間の間隔を設定する、前記(5)に記載の画像処理装置。
(9)
前記設定部は、前記量子化パラメタが大きいほど、隣接する候補間の間隔が大きくなるように、当該間隔を設定する、前記(8)に記載の画像処理装置。
(10)
前記設定部は、前記画像の特徴量に応じて、前記復号画像の画素に対して適用する前記オフセット値の候補を設定する、前記(2)に記載の画像処理装置。
(11)
前記特徴量は、前記画像における画素の画素値の分散値であり、
前記設定部は、前記分散値に応じて、前記復号画像の画素に対して適用する前記オフセット値の候補を設定する、前記(10)に記載の画像処理装置。
(12)
前記設定部は、前記分散値が小さいほど、前記オフセット値がとり得る値のうち、より小さい値を当該オフセット値の候補として設定する、前記(11)に記載の画像処理装置。
(13)
前記フィルタ処理部にフィルタ処理が実行された復号画像を用いて、前記画像を符号化する符号化部を更に備える、前記(1)に記載の画像処理装置。
(14)
前記符号化部は、CTB(Coding Tree Block)を再帰的に分割したCB(Coding Block)を単位として、前記画像を符号化する、前記(13)に記載の画像処理装置。
(15)
前記フィルタ処理部は、前記CTBを単位として、前記オフセット値を適用するフィルタ処理を実行する、前記(14)に記載の画像処理装置。
(16)
前記設定部は、前記オフセット値の候補の数を、前記復号画像のピクチャタイプに応じて制限する、前記(1)に記載の画像処理装置。
(17)
前記設定部は、対象となる復号画像のピクチャタイプが、他の復号画像を参照するピクチャタイプの場合には、前記オフセット値の候補の数を、参照先となる当該他の復号画像における前記オフセット値の候補の数に制限する、前記(16)に記載の画像処理装置。
(18)
プロセッサが、画像のビット深度に応じて制限されたオフセット値の候補から、復号された復号画像の画素に対して適用する前記オフセット値を設定することと、
前記復号画像の画素に対して、設定された前記オフセット値を適用するフィルタ処理を実行することと、
を含む、画像処理方法。
(1)
画像のビット深度に応じて制限されたオフセット値の候補から、復号された復号画像の画素に対して適用する前記オフセット値を設定する設定部と、
前記復号画像の画素に対して、前記設定部により設定された前記オフセット値を適用するフィルタ処理を実行するフィルタ処理部と、
を備える、画像処理装置。
(2)
前記設定部は、第1のビット深度よりも大きい第2のビット深度の場合における前記オフセット値の候補の数を、前記第1のビット深度の場合における前記オフセット値の候補の数に制限する、前記(1)に記載の画像処理装置。
(3)
前記設定部は、前記第2のビット深度の場合における前記オフセット値の候補の数を、前記第1のビット深度の場合に前記オフセット値がとり得る値の数に制限する、前記(2)に記載の画像処理装置。
(4)
当該第1のビット深度の場合に前記オフセット値のとり得る値は0~7であり、
当該第2のビット深度の場合に前記オフセット値のとり得る値は0~31である、前記(2)に記載の画像処理装置。
(5)
前記設定部は、前記画像を量子化する際に用いる量子化パラメタに応じて、前記復号画像の画素に対して適用する前記オフセット値の候補を設定する、前記(2)に記載の画像処理装置。
(6)
前記設定部は、前記量子化パラメタに応じて、前記復号画像の画素に対して適用する前記オフセット値の候補の最大値を制限する、前記(5)に記載の画像処理装置。
(7)
前記設定部は、前記量子化パラメタが小さいほど、前記オフセット値の候補の最大値が小さくなるように当該オフセット値の候補を設定する、前記(6)に記載の画像処理装置。
(8)
前記設定部は、前記量子化パラメタに応じて、隣接する候補間の間隔を設定する、前記(5)に記載の画像処理装置。
(9)
前記設定部は、前記量子化パラメタが大きいほど、隣接する候補間の間隔が大きくなるように、当該間隔を設定する、前記(8)に記載の画像処理装置。
(10)
前記設定部は、前記画像の特徴量に応じて、前記復号画像の画素に対して適用する前記オフセット値の候補を設定する、前記(2)に記載の画像処理装置。
(11)
前記特徴量は、前記画像における画素の画素値の分散値であり、
前記設定部は、前記分散値に応じて、前記復号画像の画素に対して適用する前記オフセット値の候補を設定する、前記(10)に記載の画像処理装置。
(12)
前記設定部は、前記分散値が小さいほど、前記オフセット値がとり得る値のうち、より小さい値を当該オフセット値の候補として設定する、前記(11)に記載の画像処理装置。
(13)
前記フィルタ処理部にフィルタ処理が実行された復号画像を用いて、前記画像を符号化する符号化部を更に備える、前記(1)に記載の画像処理装置。
(14)
前記符号化部は、CTB(Coding Tree Block)を再帰的に分割したCB(Coding Block)を単位として、前記画像を符号化する、前記(13)に記載の画像処理装置。
(15)
前記フィルタ処理部は、前記CTBを単位として、前記オフセット値を適用するフィルタ処理を実行する、前記(14)に記載の画像処理装置。
(16)
前記設定部は、前記オフセット値の候補の数を、前記復号画像のピクチャタイプに応じて制限する、前記(1)に記載の画像処理装置。
(17)
前記設定部は、対象となる復号画像のピクチャタイプが、他の復号画像を参照するピクチャタイプの場合には、前記オフセット値の候補の数を、参照先となる当該他の復号画像における前記オフセット値の候補の数に制限する、前記(16)に記載の画像処理装置。
(18)
プロセッサが、画像のビット深度に応じて制限されたオフセット値の候補から、復号された復号画像の画素に対して適用する前記オフセット値を設定することと、
前記復号画像の画素に対して、設定された前記オフセット値を適用するフィルタ処理を実行することと、
を含む、画像処理方法。
10 画像符号化装置
11 バッファ
13 減算部
14 直交変換部
15 量子化部
16 可逆符号化部
17 蓄積バッファ
18 レート制御部
21 逆量子化部
22 逆直交変換部
23 加算部
24 ループフィルタ
25 フレームメモリ
26 選択部
27 選択部
30 イントラ予測部
35 インター予測部
100 原画像保持部
200 デブロックフィルタ
240 モード判定部
300 サンプル適応オフセットフィルタ
310 制御部
320 解析部
330 統計量取得部
340 モード判定部
350 オフセット判定部
351 オフセット測定部
353 オフセット決定部
355 候補制御部
360 切り替え判定部
370 第1の判定部
371 モード数カウント部
373 判定処理部
380 第2の判定部
390 フィルタ処理部
400 適応ループフィルタ
11 バッファ
13 減算部
14 直交変換部
15 量子化部
16 可逆符号化部
17 蓄積バッファ
18 レート制御部
21 逆量子化部
22 逆直交変換部
23 加算部
24 ループフィルタ
25 フレームメモリ
26 選択部
27 選択部
30 イントラ予測部
35 インター予測部
100 原画像保持部
200 デブロックフィルタ
240 モード判定部
300 サンプル適応オフセットフィルタ
310 制御部
320 解析部
330 統計量取得部
340 モード判定部
350 オフセット判定部
351 オフセット測定部
353 オフセット決定部
355 候補制御部
360 切り替え判定部
370 第1の判定部
371 モード数カウント部
373 判定処理部
380 第2の判定部
390 フィルタ処理部
400 適応ループフィルタ
Claims (18)
- 画像のビット深度に応じて制限されたオフセット値の候補から、復号された復号画像の画素に対して適用する前記オフセット値を設定する設定部と、
前記復号画像の画素に対して、前記設定部により設定された前記オフセット値を適用するフィルタ処理を実行するフィルタ処理部と、
を備える、画像処理装置。 - 前記設定部は、第1のビット深度よりも大きい第2のビット深度の場合における前記オフセット値の候補の数を、前記第1のビット深度の場合における前記オフセット値の候補の数に制限する、請求項1に記載の画像処理装置。
- 前記設定部は、前記第2のビット深度の場合における前記オフセット値の候補の数を、前記第1のビット深度の場合に前記オフセット値がとり得る値の数に制限する、請求項2に記載の画像処理装置。
- 当該第1のビット深度の場合に前記オフセット値のとり得る値は0~7であり、
当該第2のビット深度の場合に前記オフセット値のとり得る値は0~31である、請求項2に記載の画像処理装置。 - 前記設定部は、前記画像を量子化する際に用いる量子化パラメタに応じて、前記復号画像の画素に対して適用する前記オフセット値の候補を設定する、請求項2に記載の画像処理装置。
- 前記設定部は、前記量子化パラメタに応じて、前記復号画像の画素に対して適用する前記オフセット値の候補の最大値を制限する、請求項5に記載の画像処理装置。
- 前記設定部は、前記量子化パラメタが小さいほど、前記オフセット値の候補の最大値が小さくなるように当該オフセット値の候補を設定する、請求項6に記載の画像処理装置。
- 前記設定部は、前記量子化パラメタに応じて、隣接する候補間の間隔を設定する、請求項5に記載の画像処理装置。
- 前記設定部は、前記量子化パラメタが大きいほど、隣接する候補間の間隔が大きくなるように、当該間隔を設定する、請求項8に記載の画像処理装置。
- 前記設定部は、前記画像の特徴量に応じて、前記復号画像の画素に対して適用する前記オフセット値の候補を設定する、請求項2に記載の画像処理装置。
- 前記特徴量は、前記画像における画素の画素値の分散値であり、
前記設定部は、前記分散値に応じて、前記復号画像の画素に対して適用する前記オフセット値の候補を設定する、請求項10に記載の画像処理装置。 - 前記設定部は、前記分散値が小さいほど、前記オフセット値がとり得る値のうち、より小さい値を当該オフセット値の候補として設定する、請求項11に記載の画像処理装置。
- 前記フィルタ処理部にフィルタ処理が実行された復号画像を用いて、前記画像を符号化する符号化部を更に備える、請求項1に記載の画像処理装置。
- 前記符号化部は、CTB(Coding Tree Block)を再帰的に分割したCB(Coding Block)を単位として、前記画像を符号化する、請求項13に記載の画像処理装置。
- 前記フィルタ処理部は、前記CTBを単位として、前記オフセット値を適用するフィルタ処理を実行する、請求項14に記載の画像処理装置。
- 前記設定部は、前記オフセット値の候補の数を、前記復号画像のピクチャタイプに応じて制限する、請求項1に記載の画像処理装置。
- 前記設定部は、対象となる復号画像のピクチャタイプが、他の復号画像を参照するピクチャタイプの場合には、前記オフセット値の候補の数を、参照先となる当該他の復号画像における前記オフセット値の候補の数に制限する、請求項16に記載の画像処理装置。
- プロセッサが、画像のビット深度に応じて制限されたオフセット値の候補から、復号された復号画像の画素に対して適用する前記オフセット値を設定することと、
前記復号画像の画素に対して、設定された前記オフセット値を適用するフィルタ処理を実行することと、
を含む、画像処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/120,657 US10666975B2 (en) | 2014-04-23 | 2015-03-18 | Image processing apparatus and image processing method |
US16/821,341 US20200221126A1 (en) | 2014-04-23 | 2020-03-17 | Image processing apparatus and image processing method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014-089245 | 2014-04-23 | ||
JP2014089245 | 2014-04-23 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/120,657 A-371-Of-International US10666975B2 (en) | 2014-04-23 | 2015-03-18 | Image processing apparatus and image processing method |
US16/821,341 Continuation US20200221126A1 (en) | 2014-04-23 | 2020-03-17 | Image processing apparatus and image processing method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2015163046A1 true WO2015163046A1 (ja) | 2015-10-29 |
Family
ID=54332217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2015/058013 WO2015163046A1 (ja) | 2014-04-23 | 2015-03-18 | 画像処理装置及び画像処理方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10666975B2 (ja) |
JP (1) | JP2015216627A (ja) |
WO (1) | WO2015163046A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140301438A1 (en) * | 2013-04-08 | 2014-10-09 | Qualcomm Incorporated | Sample adaptive offset scaling based on bit-depth |
CN109756736A (zh) * | 2017-11-01 | 2019-05-14 | 北京金山云网络技术有限公司 | Sao模式决策方法、装置、电子设备及可读存储介质 |
US20220303586A1 (en) * | 2021-03-19 | 2022-09-22 | Tencent America LLC | Adaptive Non-Linear Mapping for Sample Offset |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114697679A (zh) * | 2015-09-11 | 2022-07-01 | 株式会社Kt | 图像解码方法、图像编码方法和包括比特流的设备 |
WO2017208549A1 (ja) * | 2016-06-01 | 2017-12-07 | ソニー株式会社 | 画像処理装置及び画像処理方法 |
WO2018235405A1 (ja) * | 2017-06-23 | 2018-12-27 | ソニー株式会社 | 画像処理装置と画像処理方法 |
JP2021057620A (ja) * | 2018-01-09 | 2021-04-08 | シャープ株式会社 | 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 |
US20230143147A1 (en) * | 2021-11-09 | 2023-05-11 | Apple Inc. | Enhanced cross component sample offset filtering system for video coding and decoding |
CN116112678A (zh) * | 2021-11-09 | 2023-05-12 | 苹果公司 | 用于视频编码和解码的多特征样本偏移滤波系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013046990A1 (ja) * | 2011-09-29 | 2013-04-04 | シャープ株式会社 | オフセット復号装置、オフセット符号化装置、画像フィルタ装置、および、データ構造 |
JP2013138395A (ja) * | 2011-11-04 | 2013-07-11 | Sharp Corp | 画像フィルタ装置、画像復号装置、画像符号化装置、および、データ構造 |
WO2013154008A1 (ja) * | 2012-04-13 | 2013-10-17 | 三菱電機株式会社 | 動画像符号化装置、動画像復号装置、動画像符号化方法及び動画像復号方法 |
JP2013236358A (ja) * | 2012-03-14 | 2013-11-21 | Sharp Corp | 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2714349T3 (es) * | 2011-01-14 | 2019-05-28 | Ericsson Telefon Ab L M | Filtrado de desbloqueo |
EP2664149B1 (en) * | 2011-01-14 | 2016-11-16 | Telefonaktiebolaget LM Ericsson (publ) | Deblocking filtering |
PL2725797T3 (pl) * | 2011-06-23 | 2019-01-31 | Huawei Technologies Co., Ltd. | Urządzenie do dekodowania przesunięcia, urządzenie do kodowania przesunięcia, urządzenie do filtrowania obrazu i struktura danych |
-
2015
- 2015-03-18 US US15/120,657 patent/US10666975B2/en active Active
- 2015-03-18 WO PCT/JP2015/058013 patent/WO2015163046A1/ja active Application Filing
- 2015-03-18 JP JP2015054486A patent/JP2015216627A/ja active Pending
-
2020
- 2020-03-17 US US16/821,341 patent/US20200221126A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013046990A1 (ja) * | 2011-09-29 | 2013-04-04 | シャープ株式会社 | オフセット復号装置、オフセット符号化装置、画像フィルタ装置、および、データ構造 |
JP2013138395A (ja) * | 2011-11-04 | 2013-07-11 | Sharp Corp | 画像フィルタ装置、画像復号装置、画像符号化装置、および、データ構造 |
JP2013236358A (ja) * | 2012-03-14 | 2013-11-21 | Sharp Corp | 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 |
WO2013154008A1 (ja) * | 2012-04-13 | 2013-10-17 | 三菱電機株式会社 | 動画像符号化装置、動画像復号装置、動画像符号化方法及び動画像復号方法 |
Non-Patent Citations (4)
Title |
---|
ALEXIS MICHAEL TOURAPIS ET AL.: "SAO extension for higher bit-depth coding", JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11, JCTVC-N0201-R3, 14TH MEETING, July 2013 (2013-07-01), Vienna, AT, pages 1 - 6 * |
E. ALSHINA ET AL.: "AhG 18: On SAO performance at high bit-depth and high bit-rate", JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11, JCTVC-P0222_R3, 16TH MEETING, January 2014 (2014-01-01), San Jose, US, pages 1 - 15 * |
SHIH-TA HSIANG ET AL.: "AHG5: Modified SAO for range extensions", JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11, JCTVC-N0246R1, 14TH MEETING, July 2013 (2013-07-01), Vienna, AT, pages 1 - 5 * |
WOO-SHIK KIM ET AL.: "AhG 5 and 18: Sample Adaptive Offset on High Bit-depth", JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11, JCTVC-00091, 15TH MEETING, October 2013 (2013-10-01), Geneva, CH, pages 1 - 4 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140301438A1 (en) * | 2013-04-08 | 2014-10-09 | Qualcomm Incorporated | Sample adaptive offset scaling based on bit-depth |
US10334253B2 (en) * | 2013-04-08 | 2019-06-25 | Qualcomm Incorporated | Sample adaptive offset scaling based on bit-depth |
CN109756736A (zh) * | 2017-11-01 | 2019-05-14 | 北京金山云网络技术有限公司 | Sao模式决策方法、装置、电子设备及可读存储介质 |
US20220303586A1 (en) * | 2021-03-19 | 2022-09-22 | Tencent America LLC | Adaptive Non-Linear Mapping for Sample Offset |
US11683530B2 (en) * | 2021-03-19 | 2023-06-20 | Tencent America LLC | Adaptive non-linear mapping for sample offset |
US20230224503A1 (en) * | 2021-03-19 | 2023-07-13 | Tencent America LLC | Adaptive Non-Linear Mapping for Sample Offset |
Also Published As
Publication number | Publication date |
---|---|
US20170019685A1 (en) | 2017-01-19 |
US10666975B2 (en) | 2020-05-26 |
JP2015216627A (ja) | 2015-12-03 |
US20200221126A1 (en) | 2020-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10972722B2 (en) | Image processing device and image processing method | |
US10142634B2 (en) | Image processing apparatus and method | |
JP6780761B2 (ja) | 画像符号化装置および方法 | |
KR102161017B1 (ko) | 화상 처리 장치 및 적어도 하나의 컴퓨터 판독가능한 기억 매체 | |
WO2015163046A1 (ja) | 画像処理装置及び画像処理方法 | |
US9153040B2 (en) | Image processing device and image processing method | |
US10448057B2 (en) | Image processing device and method | |
WO2015163047A1 (ja) | 画像処理装置及び画像処理方法 | |
WO2014002898A1 (ja) | 復号装置および復号方法 | |
WO2011145601A1 (ja) | 画像処理装置と画像処理方法 | |
JPWO2015005025A1 (ja) | 画像処理装置及び画像処理方法 | |
JP2015005899A (ja) | 復号装置および復号方法、並びに、符号化装置および符号化方法 | |
WO2013047325A1 (ja) | 画像処理装置および方法 | |
WO2018235405A1 (ja) | 画像処理装置と画像処理方法 | |
WO2017208549A1 (ja) | 画像処理装置及び画像処理方法 | |
JP2015050738A (ja) | 復号装置および復号方法、並びに、符号化装置および符号化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15783106 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 15120657 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15783106 Country of ref document: EP Kind code of ref document: A1 |