WO2014155543A1 - 符号化装置、方法、プログラム、コンピュータシステム、記録媒体 - Google Patents

符号化装置、方法、プログラム、コンピュータシステム、記録媒体 Download PDF

Info

Publication number
WO2014155543A1
WO2014155543A1 PCT/JP2013/058864 JP2013058864W WO2014155543A1 WO 2014155543 A1 WO2014155543 A1 WO 2014155543A1 JP 2013058864 W JP2013058864 W JP 2013058864W WO 2014155543 A1 WO2014155543 A1 WO 2014155543A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
motion vector
target frame
depth
frame
Prior art date
Application number
PCT/JP2013/058864
Other languages
English (en)
French (fr)
Inventor
芳 印
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2013/058864 priority Critical patent/WO2014155543A1/ja
Priority to JP2015507753A priority patent/JP6090430B2/ja
Publication of WO2014155543A1 publication Critical patent/WO2014155543A1/ja
Priority to US14/767,546 priority patent/US20160057429A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria

Definitions

  • the present invention relates to an encoding device, a computer system, an encoding method, an encoding program, and a recording medium.
  • a block similar to a target block obtained by dividing a target frame to be encoded in a moving image is searched from a reference frame as a reference destination, and a spatial position difference from the target block to a similar block is targeted.
  • a technique for detecting a motion vector of a block is searched from a reference frame as a reference destination, and a spatial position difference from the target block to a similar block is targeted.
  • the size and reliability of a region motion vector of a reduced divided region image obtained by generating a reduced encoding target image and a reduced reference image and dividing the reduced encoding target image into a plurality of regions are narrowed down based on the above.
  • a new evaluation value is calculated from the difference information for a plurality of block sizes selected based on the evaluation value generated from the difference information between the signal obtained by filtering the input signal of the motion compensation prediction method and the moving image signal.
  • the block size of the target block is made variable and a motion vector candidate is obtained for each block size candidate that is a candidate for the block size, the amount of calculation for motion vector detection increases.
  • the present invention provides an encoding device, a computer system, an encoding method, an encoding program, and a recording medium that can reduce the amount of calculation for motion vector detection while suppressing deterioration in image quality.
  • the purpose is to do.
  • a motion vector of a block is selected from a plurality of block size candidates of blocks divided from the reference frame.
  • One of dividing the target frame from a plurality of block size candidates based on the identified block size when the block size at the time of detection is specified and the motion vector of the block divided from the target frame is detected An encoding device, a computer system, an encoding method, an encoding program, and a recording medium that select block size candidates are proposed.
  • FIG. 1 is an explanatory diagram illustrating an operation example of the encoding apparatus according to the present embodiment.
  • FIG. 2 is a block diagram illustrating an example of hardware of a computer system.
  • FIG. 3 is a block diagram illustrating a hardware configuration example of the encoding device.
  • FIG. 4 is an explanatory diagram showing an example of the relationship between CTB and CU.
  • FIG. 5 is an explanatory diagram showing an example of the type of CU.
  • FIG. 6 is an explanatory diagram showing an example of the type of PU.
  • FIG. 7 is a block diagram illustrating an example of functions of the encoding device.
  • FIG. 8 is an explanatory diagram illustrating an example of the depth of a reference frame.
  • FIG. 1 is an explanatory diagram illustrating an operation example of the encoding apparatus according to the present embodiment.
  • FIG. 2 is a block diagram illustrating an example of hardware of a computer system.
  • FIG. 3 is a block diagram illustrating a hardware configuration example of the
  • FIG. 9 is an explanatory diagram illustrating a first example of a depth candidate that performs motion vector detection of a target frame.
  • FIG. 10 is an explanatory diagram illustrating a second example of a depth candidate that performs motion vector detection of a target frame.
  • FIG. 11 is an explanatory diagram illustrating a third example of a depth candidate that performs motion vector detection of a target frame.
  • FIG. 12 is a flowchart illustrating a first example of the motion vector detection processing procedure in the target frame.
  • FIG. 13 is a flowchart illustrating a second example of the motion vector detection processing procedure in the target frame.
  • FIG. 14 is a flowchart illustrating an example of a first motion vector detection processing procedure.
  • FIG. 15 is a flowchart illustrating an example of the second motion vector detection processing procedure.
  • FIG. 1 is an explanatory diagram showing an operation example of the encoding apparatus according to the present embodiment.
  • the encoding device 100 is a computer that detects a motion vector.
  • the encoding apparatus 100 encodes a moving image for each block into which a frame is divided in accordance with a standard defined by HEVC (High Efficiency Video Coding).
  • HEVC High Efficiency Video Coding
  • H.264 and MPEG (Moving Picture Experts Group) -2 divide each frame constituting a moving image into blocks of 16 ⁇ 16 [pixels], and perform an encoding process for each divided block.
  • HEVC provides a method in which the degree of freedom of the block size of the divided blocks is increased.
  • a frame is divided into N ⁇ N [pixel] square blocks, where N is an integer.
  • a square block of N ⁇ N [pixels] is referred to as LCU (Large Coding Unit).
  • N is set to 64.
  • LCU is divided
  • the CTB is divided into blocks called CU (Coding Unit). The relationship between CTB and CU will be described later with reference to FIG.
  • a 64 ⁇ 64 [pixel] CU is defined as Depth0.
  • a 32 ⁇ 32 [pixel] CU is defined as Depth1.
  • a 16 ⁇ 16 [pixel] CU is defined as Depth2.
  • the CU of 8 ⁇ 8 [pixel] is defined as Depth3.
  • the size of the CU is referred to as “Depth”. Further, the CU block size candidates are hereinafter simply referred to as “Depth candidates”. Depth will be described with reference to FIG. Further, in HEVC, a CU is further divided into PUs (Prediction Units) as a unit for performing inter-frame prediction. The type of PU will be described later with reference to FIG.
  • PUs Prediction Units
  • the position coordinates of an object with respect to a reference frame of a block are evaluated in the target frame to be encoded, and the position coordinates of the most similar block are detected.
  • the motion vector represents from the position coordinate of a certain block to the position coordinate of the most similar block.
  • an apparatus that performs encoding in accordance with the standard defined by HEVC performs a process of determining a motion vector candidate of a CU for each depth candidate of a plurality of depth candidates. Then, the encoding apparatus detects the most similar motion vector candidate as a motion vector from the CU motion vector candidates for each Depth candidate. Specifically, a motion vector is determined for each PU into which a CU is divided, but in FIG. 1, for the sake of simplification of description, “detect a CU motion vector” is described.
  • the encoding apparatus uses an evaluation value representing a difference between a pixel value of a block divided according to each depth candidate and a pixel value of a reference block indicated by a motion vector candidate within a search range on the reference frame. Is calculated. Then, the encoding apparatus uses the motion vector candidate having the smallest evaluation value as the motion vector candidate of the block for each depth candidate. Subsequently, the encoding apparatus detects a motion vector candidate having the smallest evaluation value as a motion vector from the motion vector candidates of the block for each depth candidate.
  • a specific example of the evaluation value will be described later with reference to FIG.
  • a device that performs encoding according to the standard defined by HEVC encodes the vicinity of the edge portion in the CTB with the size of the CU as a detailed unit, and the portion with a flat change is the size of the CU as a large unit. It becomes possible to encode with.
  • motion vector candidates are obtained for each CU size, and the amount of calculation for motion vector detection processing increases.
  • the encoding apparatus 100 when performing the motion vector detection of the block of the target frame, uses a block size that approximates the block size adopted when detecting the motion vector of the block of the reference frame. As a result, the encoding apparatus 100 can reduce the amount of calculation required for the motion vector detection process while suppressing deterioration of the image quality of the encoded moving image.
  • FIG. 1 a target frame tF to be encoded in a series of frames and a reference frame rF that is a reference destination of the target frame tF are displayed. It is assumed that a series of frames is a moving image in which a change such as the sky is small.
  • the reference frame rF is an already encoded frame.
  • the target frame tF shown in FIG. 1 is a copy of the state in which the cloud shown in the reference frame rF shown in FIG. 1 has moved leftward. Thus, the reference frame rF and the target frame tF are likely to be similar images.
  • the encoding apparatus 100 assumes that a motion vector candidate of a block divided by 32 ⁇ 32 [pixel] which is Depth 1 among the four types of Depth candidates for a certain CTB of the reference frame rF is the most similar.
  • the encoding apparatus 100 specifies the Depth when the motion vector of the CU is detected from the plurality of Depth candidates divided from the reference frame rF.
  • the encoding device 100 specifies Depth as the size of the CU.
  • the encoding apparatus 100 when detecting a motion vector of a CU that is divided from the target frame tF, is any one that divides the target frame tF among the plurality of Depth candidates based on the specified size of the CU.
  • the depth candidates are selected. There may be one or more depth candidates.
  • the encoding apparatus 100 selects Depth 0 to Depth 2 that approximates Depth 1 from among a plurality of Depth candidates as one of the Depth candidates. After selecting a depth candidate, the encoding apparatus 100 determines a motion vector candidate for each CU divided by the size of the selected CU for each of the selected depth candidates.
  • the encoding apparatus 100 obtains motion vector candidates by focusing on one of the selected depth candidate motion vectors, thereby suppressing deterioration in image quality and reducing the amount of calculation for motion vector detection. be able to.
  • the process of determining motion vector candidates for a plurality of depth candidates and detecting the motion vector is referred to as a first motion vector detection process.
  • the process of determining a motion vector candidate of any one of the selected depth candidates from among the plurality of depth candidates and detecting the motion vector is referred to as a second motion vector detection process.
  • the encoding apparatus 100 will be described with reference to FIGS.
  • the computer system 200 is a system having a function of recording / reproducing moving images, for example, and is specifically a personal computer, a television, a recorder, a smartphone, a video camera, a digital camera, or the like.
  • FIG. 2 is a block diagram showing an example of computer system hardware.
  • the computer system 200 includes a CPU (Central Processing Unit) 201, a ROM (Read-Only Memory) 202, and a RAM (Random Access Memory) 203.
  • the computer system 200 includes an image sensor 204, an image sensor I / F (InterFace) 205, an operation panel 206, a recording medium 207, an external I / F 208, and the encoding device 100.
  • a CPU Central Processing Unit
  • ROM Read-Only Memory
  • RAM Random Access Memory
  • the computer system 200 includes a display 209 and a display output I / F 210.
  • the CPU 201 to RAM 203, the image sensor I / F 205, the external I / F 208, the display output I / F 210, and the encoding device 100 are connected to each other via a bus 211.
  • the CPU 201 is an arithmetic processing unit that controls the entire computer system 200.
  • the ROM 202 is a non-volatile memory that stores programs such as a boot program of the computer system 200.
  • a RAM 203 is a volatile memory used as a work area for the CPU 201.
  • the image sensor 204 is a device that converts light emitted from an object into an electrical signal.
  • the image sensor 204 is a CCD (Charge Coupled Device) image sensor, a CMOS (Complementary Metal Oxide Semiconductor) image sensor, or the like.
  • the image sensor I / F 205 is a device that converts the signal from the image sensor 204 into an image format and stores it in the RAM 203 by controlling the image sensor 204 during recording.
  • the operation panel 206 is a liquid crystal touch panel or operation buttons that the computer system 200 has.
  • the recording medium 207 is a storage device such as a flash ROM. Further, the recording medium 207 may record the encoding program according to the present embodiment.
  • the external I / F 208 controls the operation panel 206 and the recording medium 207. Further, the external I / F 208 may be connected to a device other than the computer system 200 through a network such as a LAN (Local Area Network), a WAN (Wide Area Network), or the Internet through a communication line.
  • LAN Local Area Network
  • WAN Wide Area Network
  • Display 209 displays the image format recorded by image sensor 204.
  • the display output I / F 210 controls the display 209.
  • FIG. 3 is a block diagram illustrating a hardware configuration example of the encoding device.
  • the encoding apparatus 100 includes a prediction error signal generation unit 301, an integer conversion unit 302, a quantization unit 303, an entropy encoding unit 304, an inverse quantization unit 305, an inverse integer conversion unit 306, and a reference frame generation Unit 307 and a loop filter processing unit 308. Furthermore, the encoding apparatus 100 includes a frame memory 309, an intra-frame prediction unit 310, a motion detection unit 311, a motion compensation unit 312, and a predicted image selection unit 313.
  • the integer conversion unit 302 outputs a signal obtained by performing integer conversion on the prediction error signal from the prediction error signal generation unit 301.
  • the quantization unit 303 quantizes the output signal from the integer conversion unit 302. The code amount of the prediction error signal is reduced by the processing of the quantization unit 303.
  • the entropy encoding unit 304 entropy-encodes the quantized data from the quantization unit 303, the output data from the intra-frame prediction unit 310, and the motion vector information output from the motion detection unit 311 to obtain the target frame tF.
  • the encoded image data for is output.
  • Data obtained by outputting encoded image data for each frame of the input moving image is an output moving image.
  • entropy coding refers to a coding method in which a variable-length code is assigned according to the appearance frequency of a symbol.
  • the inverse quantization unit 305 inversely quantizes the quantized data from the quantization unit 303.
  • the inverse integer transform unit 306 performs an inverse integer transform process on the output data from the inverse quantization unit 305. By the process of the inverse integer transform unit 306, a signal comparable to the prediction error signal before encoding can be obtained.
  • the reference frame generation unit 307 adds the pixel value of the PU subjected to motion compensation by the motion compensation unit 312 and the prediction error signal decoded by the inverse quantization unit 305 and the inverse integer transform unit 306. Through the processing of the reference frame generation unit 307, the pixel value of the PU of the reference frame rF subjected to motion compensation is generated.
  • the loop filter processing unit 308 performs a deblocking filter, a sample adaptive offset (SAO) and an adaptive loop filter (ALF) on the pixel value of the PU, and blocks noise. After the occurrence is suppressed, it is stored in the frame memory 309.
  • SAO sample adaptive offset
  • ALF adaptive loop filter
  • the intra-frame prediction unit 310 generates a macro block of a predicted image from surrounding pixels in the same frame.
  • the motion detection unit 311 calculates and outputs a motion vector based on the pixel value of the input moving image and the data of the reference frame rF read from the frame memory 309. Details of the motion detector 311 will be described later with reference to FIG.
  • the motion compensation unit 312 Based on the motion vector output from the motion detection unit 311, the motion compensation unit 312 performs motion compensation on the data of the reference frame rF read from the frame memory 309, thereby generating a PU of the motion compensated prediction image To do.
  • the predicted image selection unit 313 selects a macroblock of a predicted image output from either the intra-frame prediction unit 310 or the motion compensation unit 312 and outputs the selected macroblock to the prediction error signal generation unit 301 and the reference frame generation unit 307.
  • CTB, CU, and PU defined by HEVC will be described with reference to FIGS.
  • FIG. 4 is an explanatory diagram showing an example of the relationship between CTB and CU.
  • the LCU is divided into CTBs that are sub-blocks that perform transformation, quantization, and the like.
  • CTB 16 ⁇ 16 [pixel]
  • Depth that can be taken by the CU is Depth2 and Depth3.
  • the depth that the CU can take is Depth1 to Depth3.
  • CTB is recursively divided by quad tree block division according to the characteristics of image data. Specifically, the CTB is divided into four areas, and the process of subdividing the divided area into four areas is repeated. An area obtained by this division is called a CU.
  • the CU is the basic unit of the encoding process. In a moving image that uses quadtree block division, the edge portion where the change in the image is abrupt and the vicinity of the edge portion are encoded with a block of detailed units, and the portion where the change is flat is encoded with a block of a large unit.
  • an apparatus that performs encoding by quadtree block division encodes a part where an object outline or the like is displayed in a detailed unit in an image with a moving image to be encoded in fine units, It is possible to encode a portion with little change in a rough unit.
  • the type of CU will be described with reference to FIG.
  • FIG. 5 is an explanatory diagram showing an example of the type of CU.
  • the types of CUs are 64 ⁇ 64 [pixel] which is Depth0, 32 ⁇ 32 [pixel] which is Depth1, 16 ⁇ 16 [pixel] which is Depth2, and 8 ⁇ which is Depth3.
  • the CU performs inter-frame prediction in units of PU.
  • the type of PU will be described with reference to FIG.
  • FIG. 6 is an explanatory diagram showing an example of the type of PU.
  • a CU includes one or more PUs.
  • the PU can be selected from three types: the same size as the CU, two divisions in the horizontal direction, and two divisions in the vertical direction.
  • PU size when the CU is Depth0, there are three types of PUs: 64 ⁇ 64 [pixels], 64 ⁇ 32 [pixels], and 32 ⁇ 64 [pixels]. As shown in FIG. 6, there are 12 types of PUs from 8 ⁇ 8 [pixel] to 64 ⁇ 64 [pixel]. The size of the PU is referred to as “PU size”.
  • FIG. 7 is a block diagram illustrating an example of functions of the encoding device.
  • the encoding apparatus 100 includes a determination unit 701, a specification unit 702, a selection unit 703, a calculation unit 704, and a detection unit 705.
  • the determination unit 701 to the detection unit 705 may implement the functions of the determination unit 701 to the detection unit 705 by causing the CPU 201 to execute a program stored in the storage device.
  • the storage device is, for example, the ROM 202, the RAM 203, the recording medium 207, etc. shown in FIG.
  • the encoding apparatus 100 can access the depth candidate table 711.
  • the depth candidate table 711 is stored in a storage area in the encoding device 100 or a storage device such as the ROM 202, the RAM 203, and the recording medium 207.
  • An example of the contents stored in the depth candidate table 711 is shown in FIGS.
  • the determining unit 701 determines whether the target frame tF is a frame in a predetermined order in a series of frames. Further, the determination unit 701 may determine whether or not a value representing a difference between the pixel value of the target frame tF and the pixel value of the reference frame rF is less than a predetermined threshold value.
  • the predetermined order and the predetermined threshold are numerical values specified by the developer of the encoding device 100 or the user of the encoding device 100.
  • the predetermined order is 2nd to 9th, 11th to 19th, and so on.
  • the determination unit 701 may determine whether the target frame tF is not a frame in a predetermined order in a series of frames. At this time, the predetermined order is first, tenth, twentieth,... For example, the determination unit 701 determines whether or not the difference between the average pixel value of the target frame tF and the average pixel value of the reference frame rF is less than a predetermined threshold. Details will be described later with reference to FIG. Note that the determination result is stored in a storage area in the encoding device 100.
  • the identifying unit 702 identifies Depth for the reference frame rF when the motion vector of each PU in the CU is detected from among a plurality of Depth candidates of blocks divided from the reference frame rF.
  • the specifying unit 702 may specify a depth that is divided from the reference frame rF. For example, when the determining unit 701 determines that the frames are second to ninth, eleventh to nineteenth,... In a predetermined order, the specifying unit 702 specifies Depth divided from the reference frame rF. May be. Note that the determination unit 701 may determine a case where the specifying unit 702 is not executed.
  • the identifying unit 702 may identify the block size when the determining unit 701 determines that the value is less than a predetermined threshold. Note that the specified Depth is stored in a storage area in the encoding device 100.
  • the selection unit 703 When the selection unit 703 detects a motion vector of each PU in the CU divided from the target frame tF, the selection unit 703 divides the target frame tF among the plurality of depth candidates based on the Depth specified by the specification unit 702. One of the depth candidates to be selected is selected. A specific selection procedure will be described later with reference to FIGS.
  • the selection unit 703 may select any Depth candidate that divides the target frame tF among the plurality of Depth candidates based on the relatively small Depth of each Depth of the plurality of Depths. Good. Further, when a plurality of depths are specified, the selection unit 703 selects any one of the depths for dividing the target frame tF among the plurality of depth candidates based on the number of CUs divided according to the depths of the depths. Candidates may be selected. The case where a plurality of depths are specified will be described later with reference to FIG. Further, the selected depth candidate is stored in a storage area in the encoding device 100.
  • the calculation unit 704 corresponds to any depth candidate selected by the selection unit 703, the pixel value of each CU divided according to any depth candidate from the target frame tF, and the search range on the reference frame rF.
  • An evaluation value representing a difference from the pixel value of the block is calculated. A specific example of calculating the evaluation value will be described in the later-described equation (2).
  • the detection unit 705 detects the motion vector of the block into which the target frame tF is divided based on the evaluation value of each block divided according to any block size candidate calculated by the calculation unit 704. A specific example of detection will be described later with reference to FIGS. 14 and 15.
  • the calculated motion vector is stored in a storage area in the encoding device 100.
  • FIG. 8 is an explanatory diagram showing an example of the depth of the reference frame.
  • the encoding apparatus 100 specifies the depth result of the reference frame rF based on the CU included in the CTB of the reference frame rF. At this time, a case where a plurality of Depth results of the reference frame rF are specified will be described with reference to (a) of FIG. 8 and (b) of FIG.
  • the encoding apparatus 100 selects any depth candidate that divides the target frame tF based on the CU having the smallest size among the CUs included in the CTB of the reference frame rF.
  • FIG. 8B illustrates an example in which one of the block size candidates for dividing the target frame tF is selected based on the CU having the largest number among the CUs included in the CTB of the reference frame rF.
  • the encoding apparatus 100 selects any depth candidate that divides the target frame tF based on the depth 2 with the smallest depth.
  • the CTB shown in FIG. 8B includes two CUs of 32 ⁇ 32 [pixels] that are Depth1, seven CUs of 16 ⁇ 16 [pixels] that are Depth2, and 8 ⁇ 8 [ Pixel] four CUs.
  • the encoding apparatus 100 selects any depth candidate that divides the target frame tF based on Depth 2 having the largest number.
  • the depth candidate table 711 shown in FIGS. 9 to 11 is a table for storing depth candidates for each depth.
  • “Depth” of each record is omitted for simplification of display.
  • the depth candidate table 711 will be described with reference to FIG.
  • FIG. 9 is an explanatory diagram illustrating a first example of a depth candidate that performs motion vector detection of a target frame.
  • the depth candidate table 711 shown in FIG. 9 has records 901-1 to 901-4.
  • the depth candidate table 711 has two fields: a reference frame depth and a target frame depth candidate.
  • the reference frame depth field the depth result of the reference frame rF serving as a search key is stored.
  • the target frame depth candidate field the value of the depth candidate of the target frame tF corresponding to the identified reference frame depth described in FIG. 8 is stored.
  • the record 901-2 indicates that when the reference frame Depth is Depth1, the target frame Depth candidates are Depth0 to Depth2.
  • the record 901-2 and the record 901-3 store a depth of the same size as the reference frame depth, a smaller depth, and a larger depth as the approximate depth in the target frame depth candidate field.
  • the record 901-1 stores Depth0 to Depth2 in the target frame Depth candidate field because the reference frame Depth is Depth0 having the largest Depth. Also, the record 901-1 may store Depth0 in the reference frame Depth field, and store Depth0 and Depth1 in the target frame Depth candidate field.
  • FIG. 10 is an explanatory diagram illustrating a second example of a depth candidate that performs motion vector detection of a target frame.
  • the depth candidate table 711 illustrated in FIG. 10 includes records 1001-1 to 1001-4.
  • the record 1001-2 indicates that when the reference frame Depth is Depth1, the target frame Depth candidates are Depth0 to Depth2.
  • the record 1001-3 and the record 1001-4 store a depth of the same size as the reference frame Depth, one larger depth, and two larger depths as approximate depths in the target frame depth candidate field.
  • Depth0 to Depth2 are stored in the target frame Depth candidate field.
  • the record 1001-2 may store Depth0 and Depth1 in the target frame Depth candidate field.
  • the depth candidate table 711 shown in FIG. 10 selects depth candidates so that the depth is large. Degradation of image quality can be further suppressed.
  • FIG. 11 is an explanatory diagram illustrating a third example of a depth candidate that performs motion vector detection of a target frame.
  • the depth candidate table 711 shown in FIG. 11 includes records 1101-1 to 1101-4.
  • the record 1101-2 indicates that when the reference frame Depth is Depth1, the target frame Depth candidates are Depth1 to Depth3.
  • the record 1101-1 and the record 1101-2 store a depth of the same size as the reference frame depth, one smaller depth, and two smaller depths as approximate depths in the target frame depth candidate field.
  • the record 1101-3 may store Depth2 and Depth3 in the target frame Depth candidate field.
  • the depth candidate table 711 shown in FIG. 11 selects depth candidates so that the depth is small. Therefore, if the moving image to be encoded has many edges and is captured with many changes, Degradation of image quality can be further suppressed.
  • the depth candidate table 711 shown in FIG. 9 to FIG. 11 shows stored contents when the CTB is 64 ⁇ 64 [pixels]. For example, when the CTB is 32 ⁇ 32 [pixel], two depths or one depth is stored in the target frame depth candidate field of the depth candidate table 711.
  • the difference between the depth candidate tables 711 shown in FIGS. 9 to 11 will be described.
  • the degree of suppression of image quality degradation when the depth candidate table 711 shown in FIGS. 9 to 11 is employed will be described.
  • the case where the deterioration of the image quality can be further suppressed is when the probability that the Depth determined by the second motion vector detection process matches the Depth determined by the first motion vector detection process is high.
  • the probability of matching becomes higher than when the encoding apparatus 100 adopts the Depth candidate table 711 shown in FIG. 11.
  • the experimental results were obtained.
  • depth candidate tables 711 shown in FIG. 9 to FIG. 11 which depth candidate table 711 the encoding apparatus 100 uses may be designated by the developer of the encoding apparatus 100, The user of the device 100 may specify.
  • the encoding device 100 When the user of the encoding device 100 designates, for example, the encoding device 100 displays a setting screen on the display 209 and displays a dialog for selecting a depth candidate table 711 to be used from the depth candidate table 711. To do. Then, the encoding device 100 receives the identification information of the depth candidate table 711 specified by the user of the encoding device 100 according to the content of the moving image to be encoded. For example, if the moving image to be encoded is a moving image obtained by photographing the sky or the like, the user of the encoding device 100 designates the depth candidate table 711 shown in FIG. If there is, the depth candidate table 711 shown in FIG. 11 is designated. Next, flowcharts executed by the encoding apparatus 100 will be described with reference to FIGS.
  • the encoding apparatus 100 employs either the flowchart shown in FIG. 12 or the flowchart shown in FIG. 13 to detect a motion vector.
  • FIG. 12 is a flowchart showing a first example of a motion vector detection processing procedure in the target frame.
  • the motion vector detection process in the target frame is a process for detecting the motion vector of each PU included in the target frame tF.
  • the encoding apparatus 100 selects the first LCU in the target frame tF (step S1201). Next, the encoding apparatus 100 determines whether the target frame tF is the first frame or a frame to be refreshed (step S1202). Here, the refreshed frame is a frame other than a predetermined order.
  • the encoding apparatus 100 selects the first CTB in the selected LCU (step S1203).
  • the encoding apparatus 100 performs a first motion vector detection process (step S1204). Details of the first motion vector detection process will be described later with reference to FIG. Subsequently, the encoding apparatus 100 determines whether all CTBs in the LCU have been selected (step S1205). If there is a CTB that has not yet been selected (step S1205: No), the encoding apparatus 100 selects the next CTB (step S1206). Then, the encoding apparatus 100 proceeds to the process of step S1204.
  • step S1202 When the target frame tF is not the first frame and is not a frame to be refreshed (step S1202: No), the encoding apparatus 100 selects the first CTB in the selected LCU (step S1207). Next, the encoding apparatus 100 performs a second motion vector detection process (step S1208). Details of the second motion vector detection process will be described later with reference to FIG. Subsequently, the encoding apparatus 100 determines whether all the CTBs in the LCU have been selected (step S1209). If there is a CTB that has not yet been selected (step S1209: No), the encoding apparatus 100 selects the next CTB (step S1210). Then, the encoding apparatus 100 proceeds to the process of step S1208.
  • step S1205 Yes, step S1209: Yes
  • the encoding apparatus 100 determines whether all the LCUs in the target frame tF have been selected (step S1211). If there is an LCU that has not yet been selected (step S1211: No), the encoding apparatus 100 selects the next LCU (step S1212). Then, the encoding apparatus 100 proceeds to the process of step S1202.
  • step S1211 the encoding device 100 ends the motion vector detection process in the target frame tF.
  • the encoding apparatus 100 can detect the motion vector of each PU included in the target frame tF.
  • FIG. 13 is a flowchart showing a second example of the motion vector detection processing procedure in the target frame.
  • the motion vector detection process in the target frame is a process for detecting the motion vector of each PU included in the target frame tF.
  • Step S1301 and steps S1303 to S1312 shown in FIG. 13 are the same as steps S1201 and S1203 to S1212, and thus the description thereof is omitted.
  • the encoding apparatus 100 determines whether or not ABS (the flatness of the LCU of the target frame tF ⁇ the flatness of the LCU of the reference frame rF) is greater than a predetermined threshold (Ste S1302).
  • ABS () is a function that returns the absolute value of the argument. Further, the flatness is obtained by the following equation (1).
  • the pixel value in the LCU is, for example, the luminance signal Y.
  • the pixel value in the LCU may be the color difference signals Cb and Cr.
  • the total number of pixels in the LCU is 4096.
  • the flatness may be an average of pixel values in the LCU, a variance of pixel values in the LCU, or a standard deviation of pixel values in the LCU.
  • step S1302 If the ABS (the LCU flatness of the target frame tF ⁇ the LCU flatness of the reference frame rF) is larger than a predetermined threshold (step S1302: Yes), the encoding apparatus 100 executes the process of step S1303. On the other hand, when the ABS (the LCU flatness of the target frame tF ⁇ the LCU flatness of the reference frame rF) is equal to or less than a predetermined threshold (step S1302: No), the encoding apparatus 100 proceeds to the process of step S1307.
  • the encoding device 100 can detect the motion vector of each PU included in the target frame tF. Furthermore, the encoding apparatus 100 performs the first motion vector detection process when the target frame tF greatly changes from the reference frame rF by comparing the difference in flatness. Therefore, when the reference frame rF and the target frame tF are not similar, the motion vector detection process is performed for all the depths, and thus the encoding apparatus 100 can suppress deterioration in image quality from the flowchart shown in FIG. it can.
  • the evaluation value of PU and the evaluation value of CU use ME (Motion Estimation) cost as an evaluation value.
  • the ME cost is an estimate of the amount of code for specifying a motion vector and the reference image.
  • the calculation formula for Cost which is the ME cost, is the following formula (2).
  • is the entire set of candidate modes for encoding the relevant PU.
  • SAD Sud of Absolute Difference
  • is a Lagrange undetermined multiplier given as a function of the quantization parameter.
  • R is the total code amount when encoding is performed in the mode Mode.
  • the evaluation value is not limited to the expression (2), and SAD, SSE (Summation of Square Error) may be used.
  • FIG. 14 is a flowchart showing an example of the first motion vector detection processing procedure.
  • the first motion vector detection process is a process of determining motion vectors by calculating evaluation values of all depth candidates.
  • CTB is 64 ⁇ 64 [pixel].
  • the encoding apparatus 100 performs motion vector candidate detection for each PU of Depth0 and calculates an evaluation value for each PU (step S1401). Specifically, the encoding apparatus 100 includes the evaluation value of the PU of 64 ⁇ 64 [pixel], the sum of the evaluation value of the PU above 64 ⁇ 32 [pixel] and the evaluation value of the lower PU, and 32 ⁇ 64. The sum of the evaluation value of the left PU and the evaluation value of the right PU of [Pixel] is calculated. The evaluation value is a value calculated using equation (2). In addition, the sum of the evaluation value of the PU above 64 ⁇ 32 [pixel] and the evaluation value of the lower PU is referred to as “evaluation value of PU of 64 ⁇ 32 [pixel]”. Similarly, the sum of the evaluation value of the left PU and the evaluation value of the right PU of 32 ⁇ 64 [pixel] is defined as “the evaluation value of the PU of 32 ⁇ 64 [pixel]”.
  • the encoding apparatus 100 determines the PU size of Depth0 based on the evaluation value of each PU of Depth0 (step S1402). Specifically, the encoding apparatus 100 includes a PU ⁇ 64 [pixel] PU evaluation value, a 64 ⁇ 32 [pixel] PU evaluation value, and a 32 ⁇ 64 [pixel] PU evaluation value. The PU having the smallest evaluation value is determined as the PU size of Depth0. Further, the evaluation value that is minimized is set as the evaluation value of Depth0.
  • the encoding apparatus 100 performs motion vector candidate detection for each PU of Depth 1 and calculates an evaluation value for each PU (step S1403). Specifically, the encoding apparatus 100 calculates the sum of the evaluation value of the PU of 32 ⁇ 32 [pixel], the evaluation value of the PU above 32 ⁇ 16 [pixel], and the evaluation value of the lower PU, and 16 ⁇ 32 The sum of the evaluation value of the left PU and the evaluation value of the right PU of [Pixel] is calculated. If CTB is 64 ⁇ 64 [pixels], Depth1 can include four CUs, and thus encoding apparatus 100 repeats the process of step S1403 four times.
  • the sum of the evaluation value of the PU above 32 ⁇ 16 [pixel] and the evaluation value of the PU below is defined as “evaluation value of the PU of 32 ⁇ 16 [pixel]”.
  • the sum of the evaluation value of the left PU and the evaluation value of the right PU of 16 ⁇ 32 [pixel] is defined as “the evaluation value of the PU of 16 ⁇ 32 [pixel]”.
  • the encoding apparatus 100 determines the PU size of Depth1 based on the evaluation value of each PU of Depth1 (step S1404). Specifically, the encoding apparatus 100 includes a 32 ⁇ 32 [pixel] PU evaluation value, a 32 ⁇ 16 [pixel] PU evaluation value, and a 16 ⁇ 32 [pixel] PU evaluation value. The PU having the smallest evaluation value is determined as the PU size of Depth1. Also, the encoding apparatus 100 sets the evaluation value that is minimized as the evaluation value of Depth1. If CTB is 64 ⁇ 64 [pixels], Depth1 can include four CUs, and thus encoding apparatus 100 repeats the process of step S1404 four times.
  • the encoding apparatus 100 performs motion vector candidate detection for each PU of Depth 2 and calculates an evaluation value for each PU (step S1405). Specifically, the encoding device 100 calculates the sum of the evaluation value of 16 ⁇ 16 [pixel] PU, the evaluation value of PU above 16 ⁇ 8 [pixel], and the evaluation value of PU below, and 8 ⁇ 16. The sum of the evaluation value of the left PU and the evaluation value of the right PU of [Pixel] is calculated. If CTB is 64 ⁇ 64 [pixels], Depth2 can include 16 CUs, and thus encoding apparatus 100 repeats the process of step S1405 16 times.
  • evaluation value of the PU above 16 ⁇ 8 [pixel] and the evaluation value of the PU below is defined as “evaluation value of the PU of 16 ⁇ 8 [pixel]”.
  • evaluation value of the PU of 16 ⁇ 8 [pixel] is defined as “evaluation value of the PU of 16 ⁇ 8 [pixel]”.
  • evaluation value of the left PU and the evaluation value of the right PU of 8 ⁇ 16 [pixel] is referred to as “evaluation value of the PU of 8 ⁇ 16 [pixel]”.
  • the encoding apparatus 100 determines the PU size of Depth2 based on the evaluation value of each PU of Depth2 (step S1406). Specifically, the encoding device 100 includes a 16 ⁇ 16 [pixel] PU evaluation value, a 16 ⁇ 8 [pixel] PU evaluation value, and an 8 ⁇ 16 [pixel] PU evaluation value. The PU having the smallest evaluation value is determined as the PU size of Depth2. Also, the encoding apparatus 100 sets the evaluation value that is minimized as the evaluation value of Depth2. If CTB is 64 ⁇ 64 [pixels], Depth2 can include 16 CUs, and thus encoding apparatus 100 repeats the process of step S1406 16 times.
  • the encoding apparatus 100 performs motion vector candidate detection for each PU of Depth 3 and calculates an evaluation value for each PU (step S1407). Specifically, the encoding apparatus 100 calculates the sum of the evaluation value of the PU of 8 ⁇ 8 [pixel], the evaluation value of the PU above 8 ⁇ 4 [pixel], and the evaluation value of the lower PU, and 4 ⁇ 8. The sum of the evaluation value of the left PU and the evaluation value of the right PU of [Pixel] is calculated. If CTB is 64 ⁇ 64 [pixels], Depth3 can include 64 CUs, and thus encoding apparatus 100 repeats the process of step S1407 64 times.
  • the sum of the evaluation value of the PU above 8 ⁇ 4 [pixel] and the evaluation value of the lower PU is set as “evaluation value of PU of 8 ⁇ 4 [pixel]”.
  • the sum of the evaluation value of the left PU and the evaluation value of the right PU of 4 ⁇ 8 [pixel] is referred to as “the evaluation value of the PU of 4 ⁇ 8 [pixel]”.
  • the encoding apparatus 100 determines the PU size of Depth 3 based on the evaluation value of each PU of Depth 3 (step S1408). Specifically, the encoding apparatus 100 includes an 8 ⁇ 8 [pixel] PU evaluation value, an 8 ⁇ 4 [pixel] PU evaluation value, and a 4 ⁇ 8 [pixel] PU evaluation value. The PU having the smallest evaluation value is determined as the PU size of Depth3. Also, the encoding apparatus 100 sets the evaluation value that is minimized as the evaluation value of Depth3. If CTB is 64 ⁇ 64 [pixels], Depth3 can include 64 CUs, and thus encoding apparatus 100 repeats the process of step S1408 64 times.
  • the encoding apparatus 100 detects a motion vector based on the evaluation value of the PU size determined by Depth0 to Depth3 (step S1409). Specifically, encoding apparatus 100 selects a Depth having the smallest evaluation value from among the evaluation values of Depth0 to Depth3 obtained in the processes of steps S1402, S1404, S1406, and S1408. Then, the encoding apparatus 100 detects the motion vector candidate of the PU size determined by the depth that is minimized as a motion vector.
  • the encoding apparatus 100 in the selected CTB, adds one of the evaluation values of four CUs located at the upper left of Depth3 and one of Depth2 that is the same region as the region where the four CUs of Depth3 are combined.
  • the evaluation value of CU is compared.
  • encoding apparatus 100 has the same region as the sum of the evaluation values of four CUs located at the upper left of Depth2 and the region in which the four CUs of Depth1 are combined.
  • the magnitude of the evaluation value of one CU is compared.
  • encoding apparatus 100 divides the upper left region in the selected CTB by the four CUs of Depth2. Then, the encoding apparatus 100 performs the same process for the remaining areas. In this way, the encoding apparatus 100 divides the selected CTB by a plurality of Depth CUs.
  • the encoding apparatus 100 ends the first motion vector detection process.
  • the encoding apparatus 100 can detect a motion vector having a minimum evaluation value.
  • FIG. 14 shows a case where CTB is 64 ⁇ 64 [pixels].
  • the encoding apparatus 100 executes the processes of steps S1403 to S1409.
  • FIG. 15 is a flowchart showing an example of the second motion vector detection processing procedure.
  • the second motion vector detection process is a process of determining a motion vector by calculating an evaluation value of a Depth candidate that approximates the reference frame Depth.
  • the encoding apparatus 100 identifies the depth of the CTB at the same position in the reference frame rF (step S1501). A specific procedure for determining the depth of the CTB at the same position in the reference frame rF is described in FIG. Next, the encoding apparatus 100 refers to the depth candidate table 711 and selects any depth candidate corresponding to the depth of the CTB at the same position in the reference frame rf (step S1502). Subsequently, the encoding apparatus 100 selects the first Depth candidate among any selected Depth candidates (Step S1503).
  • the encoding apparatus 100 performs motion vector candidate detection for each PU of the selected Depth candidate and calculates an evaluation value for each PU (step S1504). Subsequently, the encoding apparatus 100 determines the PU size of the selected Depth based on the evaluation value of each PU of the selected Depth candidate (Step S1505). The content of the process in step S1504 and the content of the process in step S1505 vary depending on the selected depth.
  • the encoding apparatus 100 performs the same process as the process of Step S1401 as the process of Step S1504, and the same process as the process of Step S1402 as the process of Step S1505 I do. If the selected Depth is Depth1, the encoding apparatus 100 performs the same process as the process of step S1403 as the process of step S1504, and performs the same process as the process of step S1404 as the process of step S1505. .
  • the encoding apparatus 100 performs the same process as the process of step S1405 as the process of step S1504, and performs the same process as the process of step S1406 as the process of step S1505. Do. If the selected Depth is Depth 3, the encoding apparatus 100 performs the same process as the process of step S1407 as the process of step S1504, and performs the same process as the process of step S1408 as the process of step S1505. .
  • the encoding apparatus 100 determines whether all the depth candidates of any depth candidate have been selected (step S1506). If there is a depth candidate that has not yet been selected from any one of the depth candidates (step S1506: No), the encoding apparatus 100 selects the next depth candidate from any one of the depth candidates (step S1507). After the process of step S1507 is completed, the encoding apparatus 100 proceeds to the process of step S1504.
  • step S1506 When all the depth candidates are selected (step S1506: Yes), the encoding apparatus 100 detects a motion vector based on the determined PU size evaluation values of all the depth candidates (step S1508). . After the process of step S1508 is completed, the encoding apparatus 100 ends the second motion vector detection process. By executing the second motion vector detection process, the encoding apparatus 100 can detect the motion vector having the minimum evaluation value from any one of the Depth candidates that approximates the Depth of the reference frame rF.
  • the encoding apparatus 100 when the motion vector of the block of the target frame is detected, a block size equivalent to the block size adopted when detecting the motion vector of the block of the reference frame is used. As a result, the encoding apparatus 100 can reduce the amount of calculation required for the motion vector detection process while suppressing deterioration of the image quality of the encoded moving image.
  • the encoding apparatus 100 performs motion vector detection processing for three depths in contrast to processing for performing motion vector detection processing for four depths, the amount of calculation required for the motion vector detection processing is reduced. , 25% reduction.
  • the motion vector may be detected by calculating an evaluation value for the selected depth candidate among all the depth candidates. Therefore, since encoding apparatus 100 calculates an evaluation value for the selected depth candidate, it is possible to reduce the amount of calculation required for motion vector detection while suppressing deterioration in image quality.
  • the encoding apparatus 100 may specify one depth as the number to be specified as the depth of the reference frame rF, or may specify two or more depths. For example, when the depth of the reference frame rF is Depth0 to Depth2, the encoding apparatus 100 may specify Depth1 as the Depth of the reference frame rF, or specify Depth0 and Depth1. When there is a possibility that two Depths of the reference frame rF may be specified, the Depth candidate table 711 may store a record with two Depths of the reference frame rF.
  • the depth of the reference frame rF is specified based on the depths of the plurality of depths. May be.
  • the encoding apparatus 100 may specify the smallest Depth among the plurality of Depths as the Depth of the reference frame rF. If there is a depth that is subdivided in the reference frame rF, there is a high possibility that the target frame tF will be subdivided. Therefore, the encoding apparatus 100 can suppress deterioration in image quality by specifying the smallest Depth as the Depth of the reference frame rF.
  • the encoding apparatus 100 when a plurality of Depths are specified when the motion vector of the reference frame rF is detected, any one is determined based on the number of CUs divided according to the Depth of each of the plurality of Depths. Such a depth candidate may be selected.
  • the encoding apparatus 100 may specify the Depth having the largest number of CU sizes among a plurality of Depths as the Depth of the reference frame rF.
  • the encoding apparatus 100 performs motion vector detection by narrowing down to the depth closest to the depth obtained by dividing the reference frame rF, and thus can suppress deterioration in image quality.
  • the encoding apparatus 100 specifies the depth of the reference frame rF based on the number of CU sizes that have been weighted as the size of the CU size. Also good.
  • the second motion vector detection process is performed, and if the target frame tF is not a frame in a predetermined order, the second frame is detected.
  • One motion vector detection process may be performed. For example, it is assumed that there is a state where the reference frame rF and the target frame tF are not similar as a result of a scene change or the like in any one of a series of frames.
  • the encoding apparatus 100 since the encoding apparatus 100 performs the first motion vector detection process when the target frame tF is not a frame in a predetermined order, the encoding apparatus 100 can perform encoding with a block size suitable for the content of the image. Deterioration can be suppressed.
  • the second motion vector detection process is performed.
  • One motion vector detection process may be performed. For example, it is assumed that there is a scene change from the reference frame rF to the target frame. At this time, since the flatness of the target frame tF and the flatness of the reference frame rF change greatly, the encoding device 100 performs the first motion vector detection process. Thus, since the encoding apparatus 100 performs the first motion vector detection process when the reference frame rF and the target frame tF are no longer similar, it is possible to suppress deterioration in image quality.
  • the calculation target of the motion vector detection process is reduced by reducing the PU calculation target that is the inter-frame prediction unit, but the TU (Transform Unit) that is the unit of the orthogonal transform can be selected.
  • the block size may be reduced.
  • Orthogonal transformation is a mechanism that decomposes pixel values of an image before conversion into a low-frequency component and a high-frequency component in order to facilitate image compression at the stage of pre-processing for image compression.
  • the encoding method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
  • This encoding program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, or a DVD, and is executed by being read from the recording medium by the computer.
  • the encoding program may be distributed through a network such as the Internet.
  • the encoding apparatus 100 described in the present embodiment includes an application-specific IC (hereinafter simply referred to as “ASIC”) such as a standard cell or a structured ASIC (Application Specific Integrated Circuit), or a PLD (Programmable) such as an FPGA. It can also be realized by Logic Device. Specifically, for example, by determining the function of the determination unit 701 to the detection unit 705 and the depth candidate table 711 of the encoding device 100 described above by HDL description, logically synthesizing the HDL description and giving it to the ASIC or PLD The encoding device 100 can be manufactured.
  • ASIC application-specific IC
  • PLD Application Specific Integrated Circuit

Abstract

 画質の劣化を抑制しつつ、動きベクトル検出処理にかかる演算量を削減する。符号化装置(100)は、4種類のDepth候補のうち、参照フレーム(rF)から分割される複数のDepth候補の中から、CUの動きベクトルが検出された際のDepthを特定する。続けて、符号化装置(100)は、対象フレーム(tF)から分割されるCUの動きベクトルを検出する際に、特定したCUのサイズに基づいて、複数のDepth候補のうちの対象フレーム(tF)を分割するいずれかのDepth候補を選択する。

Description

[規則37.2に基づきISAが決定した発明の名称] 符号化装置、方法、プログラム、コンピュータシステム、記録媒体
 本発明は、符号化装置、コンピュータシステム、符号化方法、符号化プログラム、および記録媒体に関する。
 従来、動画像のうちの符号化対象となる対象フレームを分割した対象ブロックに類似するブロックを参照先となる参照フレームから探索し、対象ブロックから類似するブロックまでの空間的な位置の差を対象ブロックの動きベクトルとして検出する技術がある。また、符号化後の動画像の画質の劣化を抑制するために、対象ブロックのブロックサイズを可変にして動きベクトルを検出する技術がある。
 関連する先行技術としては、たとえば、縮小符号化対象画像と縮小参照画像とを生成し、縮小符号化対象画像を複数個の領域に分割した縮小分割領域画像の領域動きベクトルの大きさと信頼度とに基づいて、符号化対象ブロックのサイズの候補を絞り込むものがある。また、動き補償予測方式の入力信号にフィルタ処理をした信号と動画像信号との差分情報から生成した評価値を基に選択した複数のブロックサイズについて差分情報から新たな評価値を算出し、新たな評価値を基に最適なブロックサイズを選択する技術がある。(たとえば、下記特許文献1、2を参照。)
特開2006-180196号公報 特開2007-060164号公報
 しかしながら、従来技術によれば、対象ブロックのブロックサイズを可変にして、ブロックサイズの候補となるブロックサイズ候補ごとに動きベクトルの候補を求めると、動きベクトル検出にかかる演算量が増大する。
 1つの側面では、本発明は、画質の劣化を抑制しつつ、動きベクトル検出にかかる演算量を削減することができる符号化装置、コンピュータシステム、符号化方法、符号化プログラム、および記録媒体を提供することを目的とする。
 本発明の一側面によれば、一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、ブロックの動きベクトルが検出された際のブロックサイズを特定し、対象フレームから分割されるブロックの動きベクトルを検出する際に、特定したブロックサイズに基づいて、複数のブロックサイズ候補のうちの対象フレームを分割するいずれかのブロックサイズ候補を選択する符号化装置、コンピュータシステム、符号化方法、符号化プログラム、および記録媒体が提案される。
 本発明の一態様によれば、画質の劣化を抑制しつつ、動きベクトル検出にかかる演算量を削減することを図ることができるという効果を奏する。
図1は、本実施の形態にかかる符号化装置の動作例を示す説明図である。 図2は、コンピュータシステムのハードウェアの一例を示すブロック図である。 図3は、符号化装置のハードウェア構成例を示すブロック図である。 図4は、CTBとCUの関係の一例を示す説明図である。 図5は、CUの種類の一例を示す説明図である。 図6は、PUの種類の一例を示す説明図である。 図7は、符号化装置の機能例を示すブロック図である。 図8は、参照フレームのDepthの一例を示す説明図である。 図9は、対象フレームの動きベクトル検出を行うDepth候補の第1の例を示す説明図である。 図10は、対象フレームの動きベクトル検出を行うDepth候補の第2の例を示す説明図である。 図11は、対象フレームの動きベクトル検出を行うDepth候補の第3の例を示す説明図である。 図12は、対象フレームにおける動きベクトル検出処理手順の第1の例を示すフローチャートである。 図13は、対象フレームにおける動きベクトル検出処理手順の第2の例を示すフローチャートである。 図14は、第1動きベクトル検出処理手順の一例を示すフローチャートである。 図15は、第2動きベクトル検出処理手順の一例を示すフローチャートである。
 以下に図面を参照して、開示の符号化装置、コンピュータシステム、符号化方法、符号化プログラム、および記録媒体の実施の形態を詳細に説明する。
 図1は、本実施の形態にかかる符号化装置の動作例を示す説明図である。符号化装置100は、動きベクトルを検出するコンピュータである。符号化装置100は、HEVC(High Efficiency Video Coding)が定める規格に従って、フレームが分割されたブロックごとに動画像を符号化する。
 HEVCより前の規格である、H.264やMPEG(Moving Picture Experts Group)-2は、動画像を構築する各フレームを、16×16[画素]のブロックで分割し、分割したブロックごとに、符号化処理を行う。これに対し、HEVCは、分割するブロックのブロックサイズの自由度を高めた手法を提供する。
 具体的に、HEVCにおいて、フレームは、Nを整数として、N×N[画素]の正方形のブロックに分割される。N×N[画素]の正方形のブロックは、LCU(Largest Coding Unit)と呼称される。HEVCでは、Nを、64とする。さらに、HEVCにおいて、LCUは、CTB(Coding Tree Block)に分割される。CTBは、CU(Coding Unit)というブロックに分割される。CTBとCUの関係は、図4にて後述する。CUの複数のブロックサイズ候補としては、64×64[画素]と、32×32[画素]と、16×16[画素]と、8×8[画素]という4種類がある。
 64×64[画素]のCUは、Depth0と定義される。32×32[画素]のCUは、Depth1と定義される。16×16[画素]のCUは、Depth2と定義される。8×8[画素]のCUは、Depth3と定義される。
 以下、CUのサイズを、「Depth」と称する。また、CUのブロックサイズ候補を、以下、単に「Depth候補」と称する。図5にて、Depthについて説明する。また、HEVCにおいて、CUは、さらに、フレーム間予測を行う単位として、PU(Prediction Unit)に分割される。PUの種類については、図6にて後述する。
 圧縮符号化方式における動きベクトル検出処理は、符号化対象の対象フレームにおいて、あるブロックの参照フレームに対する物体の位置座標が評価され、最も類似するブロックの位置座標が検出される。動きベクトルは、あるブロックの位置座標から最も類似するブロックの位置座標までを表す。
 ここで、HEVCが定める規格に従って符号化する装置は、複数のDepth候補の各々のDepth候補ごとにCUの動きベクトル候補を決定する処理を行う。そして、符号化する装置は、Depth候補ごとのCUの動きベクトル候補から、最も類似する動きベクトル候補を動きベクトルとして検出する。なお、具体的には、CUが分割されたPUごとに動きベクトルが決定されることになるが、図1では、説明の簡略化のため、「CUの動きベクトルを検出」と記述する。
 具体的に、符号化を行う装置は、各々のDepth候補に従って分割したブロックの画素値と、参照フレーム上の探索範囲内の、動きベクトル候補が示す参照ブロックの画素値との差分を表す評価値を算出する。そして、符号化を行う装置は、評価値が最も小さい動きベクトル候補を、各々のDepth候補ごとのブロックの動きベクトル候補とする。続けて、符号化を行う装置は、各々のDepth候補ごとのブロックの動きベクトル候補から、評価値が最も小さい動きベクトル候補を、動きベクトルとして検出する。評価値の具体例については、図14にて後述する。
 これにより、HEVCが定める規格に従って符号化する装置は、CTB内のエッジ部分の近傍部分は詳細な単位となるCUのサイズで符号化するとともに、変化が平坦な部分は大きな単位となるCUのサイズで符号化する、ということが可能になる。しかしながら、HEVCが定める規格に従って符号化すると、CUのサイズごとに動きベクトル候補を求めるため、動きベクトル検出処理にかかる演算量が増大することになる。
 そこで、本実施の形態にかかる符号化装置100は、対象フレームのブロックの動きベクトル検出を行う際に、参照フレームのブロックの動きベクトル検出時に採用したブロックサイズに近似するブロックサイズを用いる。これにより、符号化装置100は、符号化後の動画像の画質の劣化を抑制しつつ、動きベクトル検出処理にかかる演算量を削減することができる。
 図1では、一連のフレームにおける符号化対象の対象フレームtFと、対象フレームtFの参照先となる参照フレームrFと、を表示する。一連のフレームは、空等の変化の少ないものを写した動画像であるとする。参照フレームrFは、既に符号化済のフレームである。図1に示す対象フレームtFは、図1に示す参照フレームrFに映った雲が左方向に移動した状態を写したものである。このように、参照フレームrFと対象フレームtFとは、似たような画像になる可能性が高い。
 符号化装置100は、参照フレームrFの、あるCTBについて、4種類のDepth候補のうち、Depth1である32×32[画素]で分割されたブロックの動きベクトル候補が最も類似したとする。
 そして、符号化装置100は、参照フレームrFから分割される複数のDepth候補の中から、CUの動きベクトルが検出された際のDepthを特定する。図1の例では、符号化装置100は、CUのサイズとしてDepthを特定する。
 続けて、符号化装置100は、対象フレームtFから分割されるCUの動きベクトルを検出する際に、特定したCUのサイズに基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択する。いずれかのDepth候補は、1つでもよいし、複数でもよい。
 図1の例では、符号化装置100は、複数のDepth候補のうちの、Depth1に近似する、Depth0~Depth2をいずれかのDepth候補として選択する。Depth候補を選択後、符号化装置100は、選択したいずれかのDepth候補ごとに、選択したCUのサイズで分割したCUごとに動きベクトル候補を決定する。
 このように、符号化装置100は、選択したいずれかのDepth候補の動きベクトル候補に絞って動きベクトル候補を求めることにより、画質の劣化を抑制して、動きベクトル検出にかかる演算量を削減することができる。ここで、複数のDepth候補の動きベクトル候補を決定して、動きベクトルを検出する処理を、第1動きベクトル検出処理とする。また、複数のDepth候補のうちの選択したいずれかのDepth候補の動きベクトル候補を決定して、動きベクトルを検出する処理を、第2動きベクトル検出処理とする。以下、図2~図15を用いて、符号化装置100について説明する。
(コンピュータシステム200のハードウェア構成例)
 次に、符号化装置100が適用されるコンピュータシステム200のハードウェアの一例について説明する。コンピュータシステム200は、たとえば、動画像を記録・再生する機能を有するシステムであり、具体的には、たとえば、パーソナル・コンピュータ、テレビジョン、レコーダ、スマートフォン、ビデオカメラ、デジタルカメラなどである。
 図2は、コンピュータシステムのハードウェアの一例を示すブロック図である。図2において、コンピュータシステム200は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を含む。また、コンピュータシステム200は、撮像素子204と、撮像素子I/F(InterFace)205と、操作パネル206と、記録メディア207と、外部I/F208と、符号化装置100とを含む。
 また、コンピュータシステム200は、ディスプレイ209と、ディスプレイ出力I/F210とを含む。また、CPU201~RAM203と、撮像素子I/F205と、外部I/F208と、ディスプレイ出力I/F210と、符号化装置100とは、バス211で相互に接続される。
 CPU201は、コンピュータシステム200の全体の制御を司る演算処理装置である。ROM202は、コンピュータシステム200のブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM203は、CPU201のワークエリアとして使用される揮発性メモリである。
 撮像素子204は、対象物から発した光を電気信号に変換する装置である。たとえば、撮像素子204は、CCD(Charge Coupled Device)イメージセンサ、やCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどである。
 撮像素子I/F205は、記録時に撮像素子204を制御することにより、撮像素子204からの信号を画像フォーマットに変換してRAM203に格納する装置である。操作パネル206は、コンピュータシステム200が有する液晶タッチパネルや操作ボタンである。記録メディア207は、フラッシュROM等といった記憶装置である。また、記録メディア207は、本実施の形態にかかる符号化プログラムを記録してもよい。外部I/F208は、操作パネル206、および記録メディア207を制御する。また、外部I/F208は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークを介して、コンピュータシステム200以外の他の装置に接続されてもよい。
 ディスプレイ209は、撮像素子204が記録した画像フォーマットを表示する。ディスプレイ出力I/F210は、ディスプレイ209の制御を行う。
 図3は、符号化装置のハードウェア構成例を示すブロック図である。符号化装置100は、予測誤差信号生成部301と、整数変換部302と、量子化部303と、エントロピー符号化部304と、逆量子化部305と、逆整数変換部306と、参照フレーム生成部307と、ループフィルタ処理部308を有する。さらに符号化装置100は、フレームメモリ309と、フレーム内予測部310と、動き検出部311と、動き補償部312と、予測画像選択部313とを有する。
 入力動画像は、動画像を形成する各フレームの分割に四分木ブロック分割が採用されたものとする。予測誤差信号生成部301は、入力動画像のうちの対象フレームtFと予測画像信号とが入力され、対象フレームtFと予測フレームとなる参照フレームrFの差分を演算することにより、予測誤差信号を生成する。
 整数変換部302は、予測誤差信号生成部301からの予測誤差信号を整数変換した信号を出力する。量子化部303は、整数変換部302からの出力信号を量子化する。量子化部303の処理により、予測誤差信号の符号量が低減される。
 エントロピー符号化部304は、量子化部303からの量子化データと、フレーム内予測部310からの出力データと、動き検出部311から出力される動きベクトルの情報とをエントロピー符号化し、対象フレームtFに対する符号化画像データを出力する。入力動画像の各フレームに対して符号化画像データを出力したデータが、出力動画像となる。ここで、エントロピー符号化とは、シンボルの出現頻度に応じて可変長の符号を割り当てる符号化方式を指す。
 逆量子化部305は、量子化部303からの量子化データを逆量子化する。逆整数変換部306は、逆量子化部305からの出力データに逆整数変換処理を施す。逆整数変換部306の処理により、符号化前の予測誤差信号と同程度の信号を得ることができる。
 参照フレーム生成部307は、動き補償部312により動き補償されたPUの画素値と、逆量子化部305および逆整数変換部306によって復号された予測誤差信号とを加算する。参照フレーム生成部307の処理により、動き補償された参照フレームrFのPUの画素値が生成される。
 ループフィルタ処理部308は、PUの画素値に対してデブロッキングフィルタ、サンプル・アダプティプ・オフセット(SAO:Sample Adaptive Offset)と適応型ループフィルタ(ALF:Adaptive Loop Filter)処理を行って、ブロックノイズの発生を抑制した後、フレームメモリ309に蓄積する。
 フレーム内予測部310は、同じフレームにおける周辺画素から、予測画像のマクロブロックを生成する。動き検出部311は、入力動画像の画素値と、フレームメモリ309から読み込んだ参照フレームrFのデータを基に動きベクトルを算出し、出力する。動き検出部311の詳細は、図7にて後述する。
 動き補償部312は、動き検出部311から出力された動きベクトルに基づいて、フレームメモリ309から読み込んだ参照フレームrFのデータに対して動き補償することにより、動き補償された予測画像のPUを生成する。
 予測画像選択部313は、フレーム内予測部310または動き補償部312のどちらか一方から出力される予測画像のマクロブロックを選択し、予測誤差信号生成部301および参照フレーム生成部307に出力する。次に、HEVCにて定義されたCTBと、CUと、PUとについて、図4~図6を用いて説明する。
 図4は、CTBとCUの関係の一例を示す説明図である。LCUは、変換や量子化などを行うサブブロックであるCTBに分割される。CTBは、16×16[画素]と、32×32[画素]と、64×64[画素]の3種類がある。CTBが16×16[画素]である場合、CUが取り得るDepthは、Depth2とDepth3となる。また、CTBが32×32[画素]である場合、CUが取り得るDepthは、Depth1~Depth3となる。
 CTBは、画像データの特徴に合わせて、四分木(Quad Tree)ブロック分割により再帰的に分割される。具体的に、CTBは、4つの領域に分割され、分割した領域がさらに4つの領域に細分される、という処理が繰り返される。この分割による領域が、CUと呼ばれる。CUが符号化処理の基本単位となる。四分木ブロック分割を採用した動画像は、画像中の変化が激しいエッジ部や、エッジ部分の近傍部分は詳細な単位のブロックで符号化され、変化が平坦な部分は大きな単位のブロックで符号化される、ということが可能となる。たとえば、四分木ブロック分割による符号化を行う装置は、符号化対象の動画像のある画像内の、物体の輪郭などが表示された箇所を細かな単位でより詳細に符号化し、空等の変化が少ない箇所を大まかな単位で符号化する、ということが可能である。CUの種類について、図5を用いて説明する。
 図5は、CUの種類の一例を示す説明図である。CUの種類は、図5に示すように、Depth0である64×64[画素]と、Depth1である32×32[画素]と、Depth2である16×16[画素]と、Depth3である8×8[画素]という4種類がある。CUは、PUという単位でフレーム間予測を行う。PUの種類について、図6を用いて説明する。
 図6は、PUの種類の一例を示す説明図である。PUは、CUのDepthごとに3つの種類がある。CUは、一つ以上のPUを含む。PUは、CUと同一サイズと、横方向に2分割と、縦方向に2分割と、という3種類から選択することができる。
 たとえば、CUがDepth0の場合、PUは、64×64[画素]と、64×32[画素]と、32×64[画素]という3種類がある。図6に示すように、PUは、8×8[画素]から64×64[画素]までの12種類がある。また、PUのサイズを、「PUサイズ」と呼称する。
(符号化装置100の機能)
 次に、符号化装置100の機能について説明する。図7は、符号化装置の機能例を示すブロック図である。符号化装置100は、判断部701と、特定部702と、選択部703と、算出部704と、検出部705と、を含む。
 なお、判断部701~検出部705は、記憶装置に記憶されたプログラムをCPU201が実行することにより、判断部701~検出部705の機能を実現してもよい。記憶装置とは、具体的には、たとえば、図2に示したROM202、RAM203、記録メディア207などである。
 また、符号化装置100は、Depth候補テーブル711にアクセス可能である。Depth候補テーブル711は、符号化装置100内の記憶領域、またはROM202、RAM203、記録メディア207、といった記憶装置に格納される。Depth候補テーブル711の記憶内容の一例は、図9~図11に示す。
 判断部701は、対象フレームtFが一連のフレームにおける所定の順番のフレームであるか否かを判断する。また、判断部701は、対象フレームtFの画素値と、参照フレームrFの画素値との差分を表す値が所定の閾値未満か否かを判断してもよい。ここで、所定の順番や所定の閾値は、符号化装置100の開発者または符号化装置100の利用者によって指定される数値である。
 たとえば、所定の順番は、2番目~9番目、11番目~19番目、…、となる。また、判断部701は、対象フレームtFが一連のフレームにおける所定の順番のフレームでないか否かを判断してもよい。このとき、所定の順番は、1番目、10番目、20番目、…となる。また、たとえば、判断部701は、対象フレームtFの画素値の平均と、参照フレームrFの画素値の平均との差分が、所定の閾値未満か否かを判断する。より詳細については、図13にて後述する。なお、判断結果は、符号化装置100内の記憶領域に記憶される。
 特定部702は、参照フレームrFについて、参照フレームrFから分割されるブロックの複数のDepth候補の中から、CU内の各PUの動きベクトルが検出された際のDepthを特定する。
 また、特定部702は、判断部701によって対象フレームtFが所定の順番のフレームであると判断された場合、参照フレームrFから分割されるDepthを特定してもよい。たとえば、特定部702は、判断部701が所定の順番として、2番目~9番目、11番目~19番目、…、のフレームであるとは判断した場合、参照フレームrFから分割されるDepthを特定してもよい。なお、判断部701が、特定部702を実行しない場合を判断してもよい。
 また、特定部702は、判断部701によって値が所定の閾値未満であると判断された場合、ブロックサイズを特定してもよい。なお、特定されたDepthは、符号化装置100内の記憶領域に記憶される。
 選択部703は、対象フレームtFから分割されるCU内の各PUの動きベクトルを検出する際に、特定部702によって特定されたDepthに基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択する。具体的な選択手順は、図9~図11にて後述する。
 また、特定部702によって参照フレームrFが分割されたブロックの動きベクトルが検出された際にDepthが複数特定される場合がある。このとき、選択部703は、複数のDepthの各々のDepthのうちの相対的に小さいDepthに基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択してもよい。また、Depthが複数特定された場合、選択部703は、複数のDepthの各々のDepthに従って分割されたCUの個数に基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択してもよい。なお、Depthが複数特定された場合については、図8にて後述する。また、選択されたDepth候補は、符号化装置100内の記憶領域に記憶される。
 算出部704は、選択部703によって選択されたいずれかのDepth候補に対応して、対象フレームtFからいずれかのDepth候補に従って分割される各CUの画素値と参照フレームrF上の探索範囲内のブロックの画素値との差分を表す評価値を算出する。具体的な評価値の算出例は、後述する(2)式にて説明する。
 検出部705は、算出部704によって算出されたいずれかのブロックサイズ候補に従って分割した各ブロックの評価値に基づいて、対象フレームtFが分割されたブロックの動きベクトルを検出する。具体的な検出の例は、図14と図15にて後述する。なお、算出された動きベクトルは、符号化装置100内の記憶領域に記憶される。
 図8は、参照フレームのDepthの一例を示す説明図である。符号化装置100は、参照フレームrFのCTBに含まれるCUに基づいて、参照フレームrFのDepth結果を特定する。このとき、参照フレームrFのDepth結果が複数特定された場合について、図8の(a)と図8の(b)について説明する。
 図8の(a)では、符号化装置100が、参照フレームrFのCTBに含まれるCUのうちの、最もサイズが小さいCUに基づいて、対象フレームtFを分割するいずれかのDepth候補を選択する例について説明する。図8の(b)では、参照フレームrFのCTBに含まれるCUのうちの、最も個数が多いCUに基づいて、対象フレームtFを分割するいずれかのブロックサイズ候補を選択する例について説明する。
 図8の(a)が示すCTBは、Depth1である32×32[画素]の3個のCUと、Depth2である16×16[画素]の4個のCUと、を含む。符号化装置100は、Depthが最も小さいDepth2に基づいて、対象フレームtFを分割するいずれかのDepth候補を選択する。
 図8の(b)が示すCTBは、Depth1である32×32[画素]の2個のCUと、Depth2である16×16[画素]の7個のCUと、Depth3である8×8[画素]の4個のCUと、を含む。符号化装置100は、最も個数が多いDepth2に基づいて、対象フレームtFを分割するいずれかのDepth候補を選択する。
 次に、図9~図11を用いて、具体的なDepth候補の選択例を3つ説明する。図9~図11に示すDepth候補テーブル711は、DepthごとのDepth候補を記憶するテーブルである。図9~図11に示すDepth候補テーブル711は、表示の簡略化のため、各レコードの“Depth”を省略してある。Depth候補テーブル711の説明は、図9にて行う。
 図9は、対象フレームの動きベクトル検出を行うDepth候補の第1の例を示す説明図である。図9に示すDepth候補テーブル711は、レコード901-1~レコード901-4を有する。
 Depth候補テーブル711は、参照フレームDepthと、対象フレームDepth候補という2つのフィールドを有する。参照フレームDepthフィールドには、検索キーとなる参照フレームrFのDepth結果が格納される。対象フレームDepth候補フィールドは、図8にて説明した、特定した参照フレームDepthに対応する、対象フレームtFのDepth候補の値が格納される。
 たとえば、レコード901-2は、参照フレームDepthがDepth1であった場合に、対象フレームDepth候補がDepth0~Depth2であることを示す。
 レコード901-2とレコード901-3は、対象フレームDepth候補フィールドに、近似するDepthとして、参照フレームDepthと同一サイズのDepthと、1つ小さいDepthと1つ大きいDepthとを記憶する。
 レコード901-1は、参照フレームDepthが、Depthが最も大きいDepth0であるため、対象フレームDepth候補フィールドに、Depth0~Depth2を記憶する。また、レコード901-1は、参照フレームDepthフィールドにDepth0を記憶し、対象フレームDepth候補フィールドに、Depth0と、Depth1とを記憶してもよい。
 図10は、対象フレームの動きベクトル検出を行うDepth候補の第2の例を示す説明図である。図10に示すDepth候補テーブル711は、レコード1001-1~レコード1001-4を有する。たとえば、レコード1001-2は、参照フレームDepthがDepth1であった場合に、対象フレームDepth候補がDepth0~Depth2であることを示す。
 レコード1001-3とレコード1001-4は、対象フレームDepth候補フィールドに、近似するDepthとして、参照フレームDepthと同一サイズのDepthと、1つ大きいDepthと2つ大きいDepthとを記憶する。
 レコード1001-2は、参照フレームDepthよりDepthが2つ大きいDepthがないため、対象フレームDepth候補フィールドに、Depth0~Depth2を記憶する。また、レコード1001-2は、対象フレームDepth候補フィールドに、Depth0と、Depth1とを記憶してもよい。
 このように、図10に示すDepth候補テーブル711は、Depthが大きくなるようにDepth候補を選択するため、符号化対象となる動画像が空等の変化の少ないものを撮影したものであれば、画質の劣化をより抑えることができる。
 図11は、対象フレームの動きベクトル検出を行うDepth候補の第3の例を示す説明図である。図11に示すDepth候補テーブル711は、レコード1101-1~レコード1101-4を有する。たとえば、レコード1101-2は、参照フレームDepthがDepth1であった場合に、対象フレームDepth候補がDepth1~Depth3であることを示す。
 レコード1101-1とレコード1101-2は、対象フレームDepth候補フィールドに、近似するDepthとして、参照フレームDepthと同一サイズのDepthと、1つ小さいDepthと2つ小さいDepthとを記憶する。
 レコード1101-3は、参照フレームDepthより2つ小さいDepthがないため、対象フレームDepth候補フィールドに、Depth1~Depth3を記憶する。また、レコード1101-3は、対象フレームDepth候補フィールドに、Depth2と、Depth3とを記憶してもよい。
 このように、図11に示すDepth候補テーブル711は、Depthが小さくなるようにDepth候補を選択するため、符号化対象となる動画像がエッジが多い、変化の多いものを撮影したものであれば、画質の劣化をより抑えることができる。
 図9~図11で示したDepth候補テーブル711は、CTBが64×64[画素]であるときの記憶内容を示す。たとえば、CTBが32×32[画素]である場合、Depth候補テーブル711の対象フレームDepth候補フィールドには、2つのDepth、または1つのDepthが格納される。
 ここで、図9~図11で示したDepth候補テーブル711の違いについて説明する。まず、図9~図11で示したDepth候補テーブル711を採用した際の画質の劣化の抑制度合いについて説明する。画質の劣化をより抑制できる場合とは、第2動きベクトル検出処理により決定されたDepthと第1動きベクトル検出処理により決定されたDepthとが一致する確率が高いときである。符号化装置100が図9と図10とが示したDepth候補テーブル711を採用した場合、符号化装置100が図11で示すDepth候補テーブル711を採用した場合よりも、一致する確率が高くなる、という実験結果が得られた。
 また、図9~図11で示したDepth候補テーブル711のうち、符号化装置100がどのDepth候補テーブル711を使用するかは、符号化装置100の開発者が指定してもよいし、符号化装置100の利用者が指定してもよい。
 符号化装置100の利用者が指定する場合、たとば、符号化装置100は、ディスプレイ209に設定画面を表示して、Depth候補テーブル711のうち、使用するDepth候補テーブル711を選択するダイアログを表示する。そして、符号化装置100は、符号化装置100の利用者が符号化対象となる動画像の内容に応じて指定したDepth候補テーブル711の識別情報を受け付ける。たとえば、符号化対象となる動画像が、空等を撮影した動画像であれば、符号化装置100の利用者は、図10で示したDepth候補テーブル711を指定し、エッジが多い動画像であれば、図11で示したDepth候補テーブル711を指定する。次に、図12~図15を用いて、符号化装置100が実行するフローチャートについて説明する。
 まず、図12と図13とを用いて、対象フレームtFにおける動きベクトル検出処理のフローチャートを説明する。符号化装置100は、図12で示すフローチャートか図13で示すフローチャートかのいずれかを採用して、動きベクトルを検出する。
 図12は、対象フレームにおける動きベクトル検出処理手順の第1の例を示すフローチャートである。対象フレームにおける動きベクトル検出処理は、対象フレームtFに含まれる各PUの動きベクトルを検出する処理である。
 符号化装置100は、対象フレームtF内の、先頭のLCUを選択する(ステップS1201)。次に、符号化装置100は、対象フレームtFが先頭のフレームまたはリフレッシュされるフレームか否かを判断する(ステップS1202)。ここで、リフレッシュされるフレームとは、所定の順番以外のフレームである。
 対象フレームtFが先頭のフレームまたはリフレッシュされるフレームである場合(ステップS1202:Yes)、符号化装置100は、選択したLCU内の先頭のCTBを選択する(ステップS1203)。次に、符号化装置100は、第1動きベクトル検出処理を実行する(ステップS1204)。第1動きベクトル検出処理の詳細は、図14にて後述する。続けて、符号化装置100は、LCU内の全てのCTBを選択したか否かを判断する(ステップS1205)。まだ選択していないCTBがある場合(ステップS1205:No)、符号化装置100は、次のCTBを選択する(ステップS1206)。そして、符号化装置100は、ステップS1204の処理に移行する。
 対象フレームtFが先頭のフレームでなく、かつ、リフレッシュされるフレームでない場合(ステップS1202:No)、符号化装置100は、選択したLCU内の先頭のCTBを選択する(ステップS1207)。次に、符号化装置100は、第2動きベクトル検出処理を実行する(ステップS1208)。第2動きベクトル検出処理の詳細は、図15にて後述する。続けて、符号化装置100は、LCU内の全てのCTBを選択したか否かを判断する(ステップS1209)。まだ選択していないCTBがある場合(ステップS1209:No)、符号化装置100は、次のCTBを選択する(ステップS1210)。そして、符号化装置100は、ステップS1208の処理に移行する。
 全てのCTBを選択した場合(ステップS1205:Yes、ステップS1209:Yes)、符号化装置100は、対象フレームtF内の全てのLCUを選択したか否かを判断する(ステップS1211)。まだ選択していないLCUがある場合(ステップS1211:No)、符号化装置100は、次のLCUを選択する(ステップS1212)。そして、符号化装置100は、ステップS1202の処理に移行する。
 全てのLCUを選択した場合(ステップS1211:Yes)、符号化装置100は、対象フレームtFにおける動きベクトル検出処理を終了する。対象フレームにおける動きベクトル検出処理を実行することにより、符号化装置100は、対象フレームtFに含まれる各PUの動きベクトルを検出することができる。
 図13は、対象フレームにおける動きベクトル検出処理手順の第2の例を示すフローチャートである。対象フレームにおける動きベクトル検出処理は、対象フレームtFに含まれる各PUの動きベクトルを検出する処理である。また、ステップ図13に示すステップS1301、ステップS1303~ステップS1312は、ステップS1201、ステップS1203~ステップS1212と同一の処理であるため、説明を省略する。
 ステップS1301、またはステップS1312の処理終了後、符号化装置100は、ABS(対象フレームtFのLCUの平坦度-参照フレームrFのLCUの平坦度)が所定の閾値より大きいか否かを判断する(ステップS1302)。ここで、ABS()は、引数の絶対値を返す関数である。また、平坦度は、下記(1)式により求められる。
 平坦度=(ΣABS(LCU内の画素値-LCU内の画素平均値))/LCU内の総画素数 …(1)
 LCU内の画素値は、たとえば、輝度信号Yとなる。また、LCU内の画素値は、色差信号Cb、Crでもよい。LCU内の総画素数は、4096となる。また、(1)式の代わりに、平坦度は、LCU内の画素値の平均でもよいし、LCU内の画素値の分散でもよいし、LCU内の画素値の標準偏差でもよい。
 ABS(対象フレームtFのLCUの平坦度-参照フレームrFのLCUの平坦度)が所定の閾値より大きい場合(ステップS1302:Yes)、符号化装置100は、ステップS1303の処理を実行する。一方、ABS(対象フレームtFのLCUの平坦度-参照フレームrFのLCUの平坦度)が所定の閾値以下の場合(ステップS1302:No)、符号化装置100は、ステップS1307の処理に移行する。
 対象フレームにおける動きベクトル検出処理を実行することにより、符号化装置100は、対象フレームtFに含まれる各PUの動きベクトルを検出することができる。さらに、符号化装置100は、平坦度の差分を比較することにより、対象フレームtFが参照フレームrFから大きく変化した場合に第1動きベクトル検出処理を行うことになる。したがって、参照フレームrFと対象フレームtFが類似しない場合に、全てのDepthに対する動きベクトル検出処理を行うことになるため、符号化装置100は、図13に示すフローチャートより画質の劣化を抑制することができる。
 図14と図15とでは、PUの評価値とCUの評価値とを算出する。PUの評価値とCUの評価値とは、ME(Motion Estimation)コストを評価値として用いる。MEコストとは、動きベクトルの符号量や参照画像を指定するための符号量を見積もったものである。MEコストであるCostの算出式は、下記(2)式となる。
 Cost(Mode∈Ω)=SAD+λ*R …(2)
 ただし、Ωは、当該PUを符号化するための候補モードの全体集合である。SAD(Sum of Absolute Difference)は、動きベクトル検出対象ブロックと参照フレームrF中のブロックの各々対応する位置にある画素の値の差分絶対値を合計した差分絶対値和を示す。λは、量子化パラメータの関数として与えられるLagrange未定乗数である。また、Rは、当該モードModeで符号化した場合の総符号量である。また、評価値には(2)式に限らず、SAD、SSE(Summation of Square Error)を使用してもよい。
 図14は、第1動きベクトル検出処理手順の一例を示すフローチャートである。第1動きベクトル検出処理は、全てのDepth候補の評価値を算出して、動きベクトルを決定する処理である。また、図14では、CTBが64×64[画素]であるとする。
 符号化装置100は、Depth0の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1401)。具体的に、符号化装置100は、64×64[画素]のPUの評価値と、64×32[画素]の上のPUの評価値および下のPUの評価値の和と、32×64[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。評価値は、(2)式を用いて算出された値である。また、64×32[画素]の上のPUの評価値および下のPUの評価値の和を、「64×32[画素]のPUの評価値」とする。同様に、32×64[画素]の左のPUの評価値および右のPUの評価値の和を、「32×64[画素]のPUの評価値」とする。
 次に、符号化装置100は、Depth0の各PUの評価値に基づいて、Depth0のPUサイズを決定する(ステップS1402)。具体的に、符号化装置100は、64×64[画素]のPUの評価値と、64×32[画素]のPUの評価値と、32×64[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth0のPUサイズに決定する。また、最小となった評価値を、Depth0の評価値とする。
 続けて、符号化装置100は、Depth1の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1403)。具体的に、符号化装置100は、32×32[画素]のPUの評価値と、32×16[画素]の上のPUの評価値および下のPUの評価値の和と、16×32[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。また、CTBが64×64[画素]であれば、Depth1は、4個のCUを含むことができるため、符号化装置100は、ステップS1403の処理を4回繰り返す。また、32×16[画素]の上のPUの評価値および下のPUの評価値の和を、「32×16[画素]のPUの評価値」とする。同様に、16×32[画素]の左のPUの評価値および右のPUの評価値の和を、「16×32[画素]のPUの評価値」とする。
 次に、符号化装置100は、Depth1の各PUの評価値に基づいて、Depth1のPUサイズを決定する(ステップS1404)。具体的に、符号化装置100は、32×32[画素]のPUの評価値と、32×16[画素]のPUの評価値と、16×32[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth1のPUサイズに決定する。また、符号化装置100は、最小となった評価値を、Depth1の評価値とする。また、CTBが64×64[画素]であれば、Depth1は、4個のCUを含むことができるため、符号化装置100は、ステップS1404の処理を4回繰り返す。
 続けて、符号化装置100は、Depth2の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1405)。具体的に、符号化装置100は、16×16[画素]のPUの評価値と、16×8[画素]の上のPUの評価値および下のPUの評価値の和と、8×16[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。また、CTBが64×64[画素]であれば、Depth2は、16個のCUを含むことができるため、符号化装置100は、ステップS1405の処理を16回繰り返す。また、16×8[画素]の上のPUの評価値および下のPUの評価値の和を、「16×8[画素]のPUの評価値」とする。同様に、8×16[画素]の左のPUの評価値および右のPUの評価値の和を、「8×16[画素]のPUの評価値」とする。
 次に、符号化装置100は、Depth2の各PUの評価値に基づいて、Depth2のPUサイズを決定する(ステップS1406)。具体的に、符号化装置100は、16×16[画素]のPUの評価値と、16×8[画素]のPUの評価値と、8×16[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth2のPUサイズに決定する。また、符号化装置100は、最小となった評価値を、Depth2の評価値とする。また、CTBが64×64[画素]であれば、Depth2は、16個のCUを含むことができるため、符号化装置100は、ステップS1406の処理を16回繰り返す。
 続けて、符号化装置100は、Depth3の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1407)。具体的に、符号化装置100は、8×8[画素]のPUの評価値と、8×4[画素]の上のPUの評価値および下のPUの評価値の和と、4×8[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。また、CTBが64×64[画素]であれば、Depth3は、64個のCUを含むことができるため、符号化装置100は、ステップS1407の処理を64回繰り返す。また、8×4[画素]の上のPUの評価値および下のPUの評価値の和を、「8×4[画素]のPUの評価値」とする。同様に、4×8[画素]の左のPUの評価値および右のPUの評価値の和を、「4×8[画素]のPUの評価値」とする。
 次に、符号化装置100は、Depth3の各PUの評価値に基づいて、Depth3のPUサイズを決定する(ステップS1408)。具体的に、符号化装置100は、8×8[画素]のPUの評価値と、8×4[画素]のPUの評価値と、4×8[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth3のPUサイズに決定する。また、符号化装置100は、最小となった評価値を、Depth3の評価値とする。また、CTBが64×64[画素]であれば、Depth3は、64個のCUを含むことができるため、符号化装置100は、ステップS1408の処理を64回繰り返す。
 続けて、符号化装置100は、Depth0~Depth3の決定したPUサイズの評価値に基づいて、動きベクトルを検出する(ステップS1409)。具体的に、符号化装置100は、ステップS1402、ステップS1404、ステップS1406、ステップS1408の処理にて得たDepth0~Depth3の評価値のうち、評価値が最小となるDepthを選択する。そして、符号化装置100は、最小となったDepthの決定したPUサイズの動きベクトル候補を、動きベクトルとして検出する。
 具体的に、符号化装置100は、選択したCTB内において、Depth3の左上に位置する4つのCUの評価値の和と、Depth3の4つのCUを結合した領域と同領域となるDepth2の1つのCUの評価値とを比較する。Depth2の1つのCUの評価値が小さい場合、符号化装置100は、Depth2の左上に位置する4つのCUの評価値の和と、Depth1の4つのCUを結合した領域と同領域となるDepth1の1つのCUの評価値との大小を比較する。たとえば、Depth2の左上に位置する4つのCUの評価値の和が小さい場合、符号化装置100は、選択したCTB内の左上の領域を、Depth2の4つのCUで分割する。そして、符号化装置100は、残りの領域についても同様に処理する。このようにして、符号化装置100は、選択したCTBを、複数のDepthのCUで分割する。
 ステップS1409の処理終了後、符号化装置100は、第1動きベクトル検出処理を終了する。第1動きベクトル検出処理を実行することにより、符号化装置100は、評価値が最小となる動きベクトルを検出することができる。
 なお、図14に示したフローチャートは、CTBが64×64[画素]である場合について示した。たとえば、CTBが32×32[画素]である場合、符号化装置100は、ステップS1403~ステップS1409の処理を実行する。
 図15は、第2動きベクトル検出処理手順の一例を示すフローチャートである。第2動きベクトル検出処理は、参照フレームDepthに近似するDepth候補の評価値を算出して、動きベクトルを決定する処理である。
 符号化装置100は、参照フレームrFの同位置のCTBのDepthを特定する(ステップS1501)。具体的な参照フレームrFの同位置のCTBのDepth特定手順は、図8にて記述した。次に、符号化装置100は、Depth候補テーブル711を参照して、参照フレームrfの同位置のCTBのDepthに対応するいずれかのDepth候補を選択する(ステップS1502)。続けて、符号化装置100は、選択したいずれかのDepth候補のうちの先頭のDepth候補を選択する(ステップS1503)。
 次に、符号化装置100は、選択したDepth候補の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1504)。続けて、符号化装置100は、選択したDepth候補の各PUの評価値に基づいて、選択したDepthのPUサイズを決定する(ステップS1505)。ステップS1504の処理の内容と、ステップS1505の処理の内容は、選択したDepthによって変わることになる。
 具体的に、符号化装置100は、選択したDepthがDepth0であれば、ステップS1504の処理として、ステップS1401の処理と同一の処理を行い、ステップS1505の処理として、ステップS1402の処理と同一の処理を行う。また、符号化装置100は、選択したDepthがDepth1であれば、ステップS1504の処理として、ステップS1403の処理と同一の処理を行い、ステップS1505の処理として、ステップS1404の処理と同一の処理を行う。
 同様に、符号化装置100は、選択したDepthがDepth2であれば、ステップS1504の処理として、ステップS1405の処理と同一の処理を行い、ステップS1505の処理として、ステップS1406の処理と同一の処理を行う。また、符号化装置100は、選択したDepthがDepth3であれば、ステップS1504の処理として、ステップS1407の処理と同一の処理を行い、ステップS1505の処理として、ステップS1408の処理と同一の処理を行う。
 次に、符号化装置100は、いずれかのDepth候補の全てのDepth候補を選択したか否かを判断する(ステップS1506)。いずれかのDepth候補のうちまだ選択していないDepth候補がある場合(ステップS1506:No)、符号化装置100は、いずれかのDepth候補のうちの次のDepth候補を選択する(ステップS1507)。ステップS1507の処理終了後、符号化装置100は、ステップS1504の処理に移行する。
 いずれかのDepth候補全てを選択した場合(ステップS1506:Yes)、符号化装置100は、いずれかのDepth候補全ての決定したPUサイズの評価値に基づいて、動きベクトルを検出する(ステップS1508)。ステップS1508の処理終了後、符号化装置100は、第2動きベクトル検出処理を終了する。第2動きベクトル検出処理を実行することにより、符号化装置100は、参照フレームrFのDepthに近似する、いずれかのDepth候補の中から評価値が最小となる動きベクトルを検出することができる。
 以上説明したように、符号化装置100によれば、対象フレームのブロックの動きベクトル検出を行う際に、参照フレームのブロックの動きベクトル検出時に採用したブロックサイズと同等のブロックサイズを用いる。これにより、符号化装置100は、符号化後の動画像の画質の劣化を抑制しつつ、動きベクトル検出処理にかかる演算量を削減することができる。
 具体的に、符号化装置100は、4つのDepthに対して動きベクトル検出処理を行う処理に対して、3つのDepthに対して動きベクトル検出処理を行うため、動きベクトル検出処理にかかる演算量を、25%削減することができる。
 また、符号化装置100によれば、全てのDepth候補のうちの選択したDepth候補に対して評価値を算出して、動きベクトルを検出してもよい。これにより、符号化装置100は、選択したDepth候補に対して評価値を算出するため、画質の劣化を抑制しつつ動きベクトルの検出にかかる演算量を削減することができる。
 また、符号化装置100は、参照フレームrFのDepthとして特定する個数として、1つのDepthを特定してもよいし、2つ以上のDepthを特定してもよい。たとえば、符号化装置100は、参照フレームrFのDepthが、Depth0~Depth2である場合、参照フレームrFのDepthとしてDepth1を特定してもよいし、Depth0とDepth1とを特定してもよい。参照フレームrFのDepthが2つ特定される可能性がある場合、Depth候補テーブル711が、参照フレームrFのDepthが2つのレコードと、を記憶しておけばよい。
 また、符号化装置100によれば、参照フレームrFの動きベクトルが検出された際に複数のDepthが特定された場合、複数のDepthの各々のDepthに基づいて、参照フレームrFのDepthを特定してもよい。たとえば、符号化装置100は、複数のDepthのうちの最も小さいDepthを、参照フレームrFのDepthとして特定してもよい。参照フレームrFにて小さく分割されたDepthがあると、対象フレームtFでも小さく分割される可能性が高い。そこで、符号化装置100は、最も小さいDepthを参照フレームrFのDepthとして特定しておくことにより、画質の劣化を抑制することができる。
 また、符号化装置100によれば、参照フレームrFの動きベクトルが検出された際に複数のDepthが特定された場合、複数のDepthの各々のDepthに従って分割されたCUの個数に基づいて、いずれかのDepth候補を選択してもよい。たとえば、符号化装置100は、複数のDepthのうちのCUサイズの個数が最も多いDepthを、参照フレームrFのDepthとして特定してもよい。これにより、符号化装置100は、参照フレームrFが分割されたDepthに最も近似するDepthに絞り込んで動きベクトル検出を行うことになるため、画質の劣化を抑制することができる。また、符号化装置100は、CUサイズが小さい程、CUサイズの個数が多くなるため、CUサイズの大きさという重み付けを行ったCUサイズの個数に基づいて、参照フレームrFのDepthを特定してもよい。
 また、符号化装置100によれば、対象フレームtFが一連のフレームにおける所定の順番のフレームであれば第2動きベクトル検出処理を行い、対象フレームtFがる所定の順番のフレーム以外であれば第1動きベクトル検出処理を行ってもよい。たとえば、一連のフレームのいずれかのフレームにてシーンチェンジ等をした結果、参照フレームrFと対象フレームtFとが類似しない状態があるとする。このとき、符号化装置100は、対象フレームtFが所定の順番のフレーム以外の時に第1動きベクトル検出処理を行うため、画像の内容に適したブロックサイズで符号化を行うことができ、画質の劣化を抑制することができる。
 また、符号化装置100によれば、対象フレームtFの平坦度と参照フレームrFの平坦度との差分が所定の閾値以下であれば第2動きベクトル検出処理を行い、所定の閾値より大きければ第1動きベクトル検出処理を行ってもよい。たとえば、参照フレームrFから対象フレームにかけてシーンチェンジがあったとする。このとき、対象フレームtFの平坦度と参照フレームrFの平坦度とが大きく変化することになるため、符号化装置100は、第1動きベクトル検出処理を行うことになる。このように、符号化装置100は、参照フレームrFと対象フレームtFとが類似しなくなったときに、第1動きベクトル検出処理を行うため、画質の劣化を抑制することができる。
 また、本実施の形態では、フレーム間予測単位となるPUの計算対象を減らして、動きベクトル検出処理にかかる演算量を削減したが、直交変換の単位となるTU(Transform Unit)の選択可能なブロックサイズを削減してもよい。TUは、4×4[画素]と、8×8[画素]と、16×16[画素]と、32×32[画素]との4種類がある。直交変換とは、画像圧縮を行う前処理の段階において、画像圧縮をしやすくするために、変換前の画像の画素値を低周波成分と高周波成分に分解する仕組みのことである。
 なお、本実施の形態で説明した符号化方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本符号化プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本符号化プログラムは、インターネット等のネットワークを介して配布してもよい。
 また、本実施の形態で説明した符号化装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した符号化装置100の判断部701~検出部705と、Depth候補テーブル711とをHDL記述によって機能定義し、HDL記述を論理合成してASICやPLDに与えることにより、符号化装置100を製造することができる。
 tF 対象フレーム
 rF 参照フレーム
 100 符号化装置
 200 コンピュータシステム
 701 判断部
 702 特定部
 703 選択部
 704 算出部
 705 検出部

Claims (10)

  1.  一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定する特定部と、
     前記対象フレームから分割されるブロックの動きベクトルを検出する際に、前記特定部によって特定された前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する選択部と、
     を有することを特徴とする符号化装置。
  2.  前記選択部によって選択された前記いずれかのブロックサイズ候補に対応して、前記対象フレームから前記いずれかのブロックサイズ候補に従って分割される各ブロックの画素値と前記参照フレーム上の探索範囲内の参照ブロックの画素値との差分を表す評価値を算出する算出部と、
     前記算出部によって算出された前記いずれかのブロックサイズ候補に従って分割した各ブロックの評価値に基づいて、前記対象フレームが分割されたブロックの動きベクトルを検出する検出部と、
     を有することを特徴とする請求項1に記載の符号化装置。
  3.  前記選択部は、
     前記特定部によって前記参照フレームが分割されたブロックの動きベクトルが検出された際に前記ブロックのブロックサイズが複数特定された場合、複数のブロックサイズの各々のブロックサイズのうちの相対的に小さいブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択することを特徴とする請求項1または2に記載の符号化装置。
  4.  前記選択部は、
     前記特定部によって前記参照フレームが分割されたブロックの動きベクトルが検出された際に前記ブロックのブロックサイズが複数特定された場合、複数のブロックサイズの各々のブロックサイズに従って分割されたブロックの個数に基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択することを特徴とする請求項1~3のいずれか一つに記載の符号化装置。
  5.  前記対象フレームが前記一連のフレームにおける所定の順番のフレームであるか否かを判断する判断部を有し、
     前記特定部は、
     前記判断部によって前記対象フレームが前記所定の順番のフレームであると判断された場合、前記ブロックサイズを特定することを特徴とする請求項1~4のいずれか一つに記載の符号化装置。
  6.  前記対象フレームの画素値と、前記参照フレームの画素値との差分を表す値が所定の閾値未満か否かを判断する判断部を有し、
     前記特定部は、
     前記判断部によって前記値が前記所定の閾値未満であると判断された場合、前記ブロックサイズを特定することを特徴とする請求項1~5のいずれか一つに記載の符号化装置。
  7.  一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定する特定部と、
     前記対象フレームから分割されるブロックの動きベクトルを検出する際に、前記特定部によって特定された前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する選択部と、
     を有するコンピュータを含むことを特徴とするコンピュータシステム。
  8.  コンピュータが、
     一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定し、
     前記対象フレームから分割されるブロックの動きベクトルを検出する際に、特定した前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する、
     処理を実行することを特徴とする符号化方法。
  9.  コンピュータに、
     一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定し、
     前記対象フレームから分割されるブロックの動きベクトルを検出する際に、特定した前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する、
     処理を実行させることを特徴とする符号化プログラム。
  10.  一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定し、
     前記対象フレームから分割されるブロックの動きベクトルを検出する際に、特定した前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する、
     処理をコンピュータに実行させる符号化プログラムを記録したことを特徴とする記録媒体。
PCT/JP2013/058864 2013-03-26 2013-03-26 符号化装置、方法、プログラム、コンピュータシステム、記録媒体 WO2014155543A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2013/058864 WO2014155543A1 (ja) 2013-03-26 2013-03-26 符号化装置、方法、プログラム、コンピュータシステム、記録媒体
JP2015507753A JP6090430B2 (ja) 2013-03-26 2013-03-26 符号化装置、方法、プログラム、コンピュータシステム、記録媒体
US14/767,546 US20160057429A1 (en) 2013-03-26 2015-08-12 Coding apparatus, method, computer product, and computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/058864 WO2014155543A1 (ja) 2013-03-26 2013-03-26 符号化装置、方法、プログラム、コンピュータシステム、記録媒体

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/767,546 Continuation US20160057429A1 (en) 2013-03-26 2015-08-12 Coding apparatus, method, computer product, and computer system

Publications (1)

Publication Number Publication Date
WO2014155543A1 true WO2014155543A1 (ja) 2014-10-02

Family

ID=51622623

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/058864 WO2014155543A1 (ja) 2013-03-26 2013-03-26 符号化装置、方法、プログラム、コンピュータシステム、記録媒体

Country Status (3)

Country Link
US (1) US20160057429A1 (ja)
JP (1) JP6090430B2 (ja)
WO (1) WO2014155543A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105430415A (zh) * 2015-12-02 2016-03-23 宁波大学 一种3d-hevc深度视频帧内快速编码方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6394876B2 (ja) * 2014-09-17 2018-09-26 株式会社ソシオネクスト 符号化回路、符号化方法
CN112702603A (zh) * 2019-10-22 2021-04-23 腾讯科技(深圳)有限公司 视频编码方法、装置、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007194935A (ja) * 2006-01-19 2007-08-02 Victor Co Of Japan Ltd 動画像符号化装置および動画像符号化プログラム
JP2007329693A (ja) * 2006-06-08 2007-12-20 Hitachi Ltd 画像符号化装置、及び画像符号化方法
JP2008017209A (ja) * 2006-07-06 2008-01-24 Canon Inc 動きベクトル検出装置、動きベクトル検出方法、コンピュータプログラム及び記憶媒体

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100999091B1 (ko) * 2003-11-17 2010-12-07 삼성전자주식회사 임의 크기의 가변 블록을 이용한 영상 압축 방법 및 장치
EP1949338A1 (en) * 2005-10-12 2008-07-30 Active Optics Pty Ltd. Image processing method and system
CN102301714B (zh) * 2009-01-28 2014-01-22 法国电信公司 用于对实施运动补偿的图像序列进行编码和解码的方法、以及对应的编码和解码装置
JP5616984B2 (ja) * 2011-01-26 2014-10-29 株式会社日立製作所 画像復号化装置
JP2013046282A (ja) * 2011-08-25 2013-03-04 Sony Corp 画像処理装置および画像処理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007194935A (ja) * 2006-01-19 2007-08-02 Victor Co Of Japan Ltd 動画像符号化装置および動画像符号化プログラム
JP2007329693A (ja) * 2006-06-08 2007-12-20 Hitachi Ltd 画像符号化装置、及び画像符号化方法
JP2008017209A (ja) * 2006-07-06 2008-01-24 Canon Inc 動きベクトル検出装置、動きベクトル検出方法、コンピュータプログラム及び記憶媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105430415A (zh) * 2015-12-02 2016-03-23 宁波大学 一种3d-hevc深度视频帧内快速编码方法

Also Published As

Publication number Publication date
JPWO2014155543A1 (ja) 2017-02-16
JP6090430B2 (ja) 2017-03-08
US20160057429A1 (en) 2016-02-25

Similar Documents

Publication Publication Date Title
JP6334006B2 (ja) ビデオ符号化用の高コンテンツ適応型品質回復フィルタ処理のためのシステムおよび方法
EP3389276B1 (en) Hash-based encoder decisions for video coding
CN106331703B (zh) 视频编码和解码方法、视频编码和解码装置
JP4723025B2 (ja) 画像符号化方法および画像符号化装置
WO2010001916A1 (ja) 画像処理装置および方法
TW202038611A (zh) 用於視訊寫碼之三角運動資訊
JP2017536002A (ja) 画像予測方法および関連装置
US20150117540A1 (en) Coding apparatus, decoding apparatus, coding data, coding method, decoding method, and program
US20240015300A1 (en) Image encoding/decoding method and device
CN114830651A (zh) 帧内预测方法、编码器、解码器以及计算机存储介质
US10034016B2 (en) Coding apparatus, computer system, coding method, and computer product
JP6090430B2 (ja) 符号化装置、方法、プログラム、コンピュータシステム、記録媒体
US8253817B2 (en) Image compression method, device, electronic camera, and program
CN104602025A (zh) 处理图像的方法和装置
Ma et al. A fast background model based surveillance video coding in HEVC
US11528485B2 (en) Encoding apparatus and program
US9948932B2 (en) Image processing apparatus and control method of image processing apparatus
JP5571262B2 (ja) 画像符号化方法及び画像復号化方法
JP6066583B2 (ja) 動画像符号化装置及び動画像符号化方法
JP6248648B2 (ja) 情報処理装置、符号化単位の選択方法、及びプログラム
WO2006084419A1 (en) Method for reducing bit rate requirements for encoding multimedia data
JP5509398B1 (ja) 画像符号化方法及び画像復号化方法
JP2014131293A (ja) 画像符号化方法及び画像復号化方法
JP2014131295A (ja) 画像符号化方法及び画像復号化方法
JP5571229B2 (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: 13880680

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015507753

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13880680

Country of ref document: EP

Kind code of ref document: A1