KR20200078501A - 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 - Google Patents
고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20200078501A KR20200078501A KR1020207011528A KR20207011528A KR20200078501A KR 20200078501 A KR20200078501 A KR 20200078501A KR 1020207011528 A KR1020207011528 A KR 1020207011528A KR 20207011528 A KR20207011528 A KR 20207011528A KR 20200078501 A KR20200078501 A KR 20200078501A
- Authority
- KR
- South Korea
- Prior art keywords
- transform coefficient
- current block
- transform coefficients
- coefficient region
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
도 2는 본 개시가 적용될 수 있는 비디오/영상 인코딩 장치의 구성을 개략적으로 설명하는 도면이다.
도 3은 본 개시가 적용될 수 있는 비디오/영상 디코딩 장치의 구성을 개략적으로 설명하는 도면이다.
도 4는 일 실시예에 따른 고주파 제로잉을 설명하기 위한 도면이다.
도 5는 고주파 제로잉이 적용된 현재 블록에 대한 변환 계수들을 스캔하는 방법의 일 예시를 설명하기 위한 도면이다.
도 6은 고주파 제로잉이 적용된 현재 블록에 대한 변환 계수들을 스캔하는 방법의 다른 일 예시를 설명하기 위한 도면이다.
도 7a 및 도 7b는 일 실시예에 따른 엔트로피 인코딩부의 구성 및 동작을 설명하기 위한 도면이다.
도 8a 및 도 8b는 일 실시예에 따른 엔트로피 디코딩부의 구성 및 동작 방법을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 인코딩 장치의 동작을 도시하는 흐름도이다.
도 10은 일 실시예에 따른 인코딩 장치의 구성을 도시하는 블록도이다.
도 11은 일 실시예에 따른 디코딩 장치의 동작을 도시하는 흐름도이다.
도 12는 일 실시예에 따른 디코딩 장치의 구성을 도시하는 블록도이다.
도 13은 본 문서의 개시가 적용될 수 있는 컨텐츠 스트리밍 시스템의 예를 나타낸다.
| LastSignificantCoeffXorLastSignificantCoeffY | codeword | length of the codeword |
| 0 | 0 | 1 |
| 1 | 10 | 2 |
| 2 | 110 | 3 |
| 3 | 1110 | 4 |
| 4, 5 | 11110 | 5 |
| 6, 7 | 111110 | 6 |
| 8~11 | 1111110 | 7 |
| 12~15 | 11111110 | 8 |
| 16~23 | 111111110 | 9 |
| 24~31 | 111111111 | 9 |
| LastSignificantCoeffXorLastSignificantCoeffY | codeword | length of the codeword |
| 0 | 0 | 1 |
| 1 | 10 | 2 |
| 2 | 110 | 3 |
| 3 | 1110 | 4 |
| 4, 5 | 11110 | 5 |
| 6, 7 | 111110 | 6 |
| 8~11 | 1111110 | 7 |
| 12~15 | 11111110 | 8 |
| 16~23 | 111111110 | 9 |
| 24~31 | 1111111110 | 10 |
| 32~47 | 11111111110 | 11 |
| 48~63 | 11111111111 | 11 |
| residual_coding( x0, y0, log2TbWidth, log2TbHeight, cIdx ) { | Descriptor |
| if( transform_skip_enabled_flag && ( cIdx ! = 0 | | cu_mts_flag[ x0 ][ y0 ] = = 0 ) && ( log2TbWidth <= 2 ) && ( log2TbHeight <= 2 ) ) | |
| transform_skip_flag[ x0 ][ y0 ][ cIdx ] | ae(v) |
| last_sig_coeff_x_prefix | ae(v) |
| last_sig_coeff_y_prefix | ae(v) |
| if( last_sig_coeff_x_prefix > 3 ) | |
| last_sig_coeff_x_suffix | ae(v) |
| if( last_sig_coeff_y_prefix > 3 ) | |
| last_sig_coeff_y_suffix | ae(v) |
| log2SbSize = ( Min( log2TbWidth, log2TbHeight ) < 2 ? 1 : 2 ) | |
| numSbCoeff = 1 << ( log2SbSize << 1 ) | |
| lastScanPos = numSbCoeff | |
| lastSubBlock = ( 1 << ( log2TbWidth + log2TbHeight - 2 * log2SbSize ) ) -1 | |
| do { | |
| if( lastScanPos = = 0 ) { | |
| lastScanPos = numSbCoeff | |
| lastSubBlock- - | |
| } | |
| lastScanPos- - | |
| xS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 0 ] | |
| yS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 1 ] | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ lastScanPos ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ lastScanPos ][ 1 ] | |
| } while( ( xC != LastSignificantCoeffX ) | | ( yC != LastSignificantCoeffY ) ) | |
| QState = 0 | |
| for( i = lastSubBlock; i >= 0; i- - ) { | |
| startQStateSb = QState | |
| xS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 0 ] | |
| yS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 1 ] | |
| inferSbDcSigCoeffFlag = 0 | |
| if( ( i < lastSubBlock ) && ( i > 0 ) ) { | |
| coded_sub_block_flag[ xS ][ yS ] | ae(v) |
| inferSbDcSigCoeffFlag = 1 | |
| } | |
| firstSigScanPosSb = numSbCoeff | |
| lastSigScanPosSb = -1 | |
| for( n = ( i = = lastSubBlock ) ? lastScanPos - 1 : numSbCoeff -1; n >= 0; n-- ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( coded_sub_block_flag[ xS ][ yS ] && ( n > 0 | | !inferSbDcSigCoeffFlag ) ) { | |
| sig_coeff_flag[ xC ][ yC ] | ae(v) |
| } | |
| if( sig_coeff_flag[ xC ][ yC ] ) { | |
| par_level_flag[ n ] | ae(v) |
| rem_abs_gt1_flag[ n ] | ae(v) |
| if( lastSigScanPosSb = = -1 ) | |
| lastSigScanPosSb = n | |
| firstSigScanPosSb = n | |
| } | |
| AbsLevelPass1[ xC ][ yC ] = sig_coeff_flag[ xC ][ yC ] + par_level_flag[ n ] + 2 * rem_abs_gt1_flag[ n ] | |
| if( dep_quant_enabled_flag ) | |
| QState = QStateTransTable[ QState ][ par_level_flag[ n ] ] | |
| } | |
| for( n = numSbCoeff - 1; n >= 0; n-- ) { | |
| if( rem_abs_gt1_flag[ n ] ) | |
| rem_abs_gt2_flag[ n ] | ae(v) |
| } | |
| for( n = numSbCoeff - 1; n >= 0; n-- ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( rem_abs_gt2_flag[ n ] ) | |
| abs_remainder[ n ] | |
| AbsLevel[ xC ][ yC ] = AbsLevelPass1[ xC ][ yC ] + 2 * ( rem_abs_gt2_flag[ n ] + abs_remainder[ n ] ) | |
| } | |
| if( dep_quant_enabled_flag | | !sign_data_hiding_enabled_flag ) | |
| signHidden = 0 | |
| else | |
| signHidden = ( lastSigScanPosSb - firstSigScanPosSb > 3 ? 1 : 0 ) | |
| for( n = numSbCoeff - 1; n >= 0; n-- ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( sig_coeff_flag[ xC ][ yC ] && ( !signHidden | | ( n != firstSigScanPosSb ) ) ) | |
| coeff_sign_flag[ n ] | ae(v) |
| } | |
| if( dep_quant_enabled_flag ) { | |
| QState = startQStateSb | |
| for( n = numSbCoeff - 1; n >= 0; n--) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( sig_coeff_flag[ xC ][ yC ] ) | |
| TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = ( 2 * AbsLevel[ xC ][ yC ] - ( QState > 1 1 : 0 ) ) * ( 1 - 2 * coeff_sign_flag[ n ] ) | |
| QState = QStateTransTable[ QState ][ par_level_flag[ n ] ] | |
| } else { | |
| sumAbsLevel = 0 | |
| for( n = numSbCoeff - 1; n >= 0; n--) | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( sig_coeff_flag[ xC ][ yC ] ) { | |
| TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = AbsLevel[ xC ][ yC ] * ( 1 - 2 * coeff_sign_flag[ n ] ) | |
| if( signHidden ) { | |
| sumAbsLevel += AbsLevel[ xC ][ yC ] | |
| if( ( n = = firstSigScanPosSb ) && ( sumAbsLevel % 2 ) = = 1 ) ) | |
| TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = -TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if( cu_mts_flag[ x0 ][ y0 ] && ( cIdx = = 0 ) && !transform_skip_flag[ x0 ][ y0 ][ cIdx ] && ( ( CuPredMode[ x0 ][ y0 ] = = MODE_INTRA && numSigCoeff > 2 ) | | ( CuPredMode[ x0 ][ y0 ] = = MODE_INTER ) ) ) { | |
| mts_idx[ x0 ][ y0 ] | ae(v) |
| } | |
| residual_coding( x0, y0, log2TbWidth, log2TbHeight, cIdx ) { | Descriptor |
| if( transform_skip_enabled_flag && ( cIdx ! = 0 | | cu_mts_flag[ x0 ][ y0 ] = = 0 ) && ( log2TbWidth <= 2 ) && ( log2TbHeight <= 2 ) ) | |
| transform_skip_flag[ x0 ][ y0 ][ cIdx ] | ae(v) |
| last_sig_coeff_x_prefix | ae(v) |
| last_sig_coeff_y_prefix | ae(v) |
| if( last_sig_coeff_x_prefix > 3 ) | |
| last_sig_coeff_x_suffix | ae(v) |
| if( last_sig_coeff_y_prefix > 3 ) | |
| last_sig_coeff_y_suffix | ae(v) |
| log2SbSize = ( Min( log2TbWidth, log2TbHeight ) < 2 ? 1 : 2 ) | |
| numSbCoeff = 1 << ( log2SbSize << 1 ) | |
| lastScanPos = numSbCoeff | |
| lastSubBlock = ( 1 << ( log2TbWidth + log2TbHeight - 2 * log2SbSize ) ) -1 | |
| do { | |
| if( lastScanPos = = 0 ) { | |
| lastScanPos = numSbCoeff | |
| lastSubBlock- - | |
| } | |
| lastScanPos- - | |
| xS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 0 ] | |
| yS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 1 ] | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ lastScanPos ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ lastScanPos ][ 1 ] | |
| } while( ( xC != LastSignificantCoeffX ) | | ( yC != LastSignificantCoeffY ) ) | |
| QState = 0 | |
| for( i = lastSubBlock; i >= 0; i- - ) { | |
| startQStateSb = QState | |
| xS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 0 ] | |
| yS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 1 ] | |
| inferSbDcSigCoeffFlag = 0 | |
| if( ( i < lastSubBlock ) && ( i > 0 ) ) { | |
| coded_sub_block_flag[ xS ][ yS ] | ae(v) |
| inferSbDcSigCoeffFlag = 1 | |
| } | |
| firstSigScanPosSb = numSbCoeff | |
| lastSigScanPosSb = -1 | |
| for( n = ( i = = lastSubBlock ) ? lastScanPos - 1 : numSbCoeff -1; n >= 0; n-- ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( coded_sub_block_flag[ xS ][ yS ] && ( n > 0 | | !inferSbDcSigCoeffFlag ) ) { | |
| sig_coeff_flag[ xC ][ yC ] | ae(v) |
| } | |
| if( sig_coeff_flag[ xC ][ yC ] ) { | |
| par_level_flag[ n ] | ae(v) |
| rem_abs_gt1_flag[ n ] | ae(v) |
| if( lastSigScanPosSb = = -1 ) | |
| lastSigScanPosSb = n | |
| firstSigScanPosSb = n | |
| } | |
| AbsLevelPass1[ xC ][ yC ] = sig_coeff_flag[ xC ][ yC ] + par_level_flag[ n ] + 2 * rem_abs_gt1_flag[ n ] | |
| if( dep_quant_enabled_flag ) | |
| QState = QStateTransTable[ QState ][ par_level_flag[ n ] ] | |
| } | |
| for( n = numSbCoeff - 1; n >= 0; n-- ) { | |
| if( rem_abs_gt1_flag[ n ] ) | |
| rem_abs_gt2_flag[ n ] | ae(v) |
| } | |
| for( n = numSbCoeff - 1; n >= 0; n-- ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( rem_abs_gt2_flag[ n ] ) | |
| abs_remainder[ n ] | |
| AbsLevel[ xC ][ yC ] = AbsLevelPass1[ xC ][ yC ] + 2 * ( rem_abs_gt2_flag[ n ] + abs_remainder[ n ] ) | |
| } | |
| if( dep_quant_enabled_flag | | !sign_data_hiding_enabled_flag ) | |
| signHidden = 0 | |
| else | |
| signHidden = ( lastSigScanPosSb - firstSigScanPosSb > 3 ? 1 : 0 ) | |
| for( n = numSbCoeff - 1; n >= 0; n-- ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( sig_coeff_flag[ xC ][ yC ] && ( !signHidden | | ( n != firstSigScanPosSb ) ) ) | |
| coeff_sign_flag[ n ] | ae(v) |
| } | |
| if( dep_quant_enabled_flag ) { | |
| QState = startQStateSb | |
| for( n = numSbCoeff - 1; n >= 0; n---- xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( sig_coeff_flag[ xC ][ yC ] ) | |
| TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = ( 2 * AbsLevel[ xC ][ yC ] - ( QState > 1 1 : 0 ) ) * ( 1 - 2 * coeff_sign_flag[ n ] ) | |
| QState = QStateTransTable[ QState ][ par_level_flag[ n ] ] | |
| } else { | |
| sumAbsLevel = 0 | |
| for( n = numSbCoeff - 1; n >= 0; n--- | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( sig_coeff_flag[ xC ][ yC ] ) { | |
| TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = AbsLevel[ xC ][ yC ] * ( 1 - 2 * coeff_sign_flag[ n ] ) | |
| if( signHidden ) { | |
| sumAbsLevel += AbsLevel[ xC ][ yC ] | |
| if( ( n = = firstSigScanPosSb ) && ( sumAbsLevel % 2 ) = = 1 ) ) | |
| TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = -TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if( cu_mts_flag[ x0 ][ y0 ] && ( cIdx = = 0 ) && !transform_skip_flag[ x0 ][ y0 ][ cIdx ] && ( ( CuPredMode[ x0 ][ y0 ] = = MODE_INTRA && numSigCoeff > 2 ) | | ( CuPredMode[ x0 ][ y0 ] = = MODE_INTER ) ) ) { | |
| mts_idx[ x0 ][ y0 ] | ae(v) |
| } |
| The column position of the last significant coefficient in scanning order within a transform block LastSignificantCoeffX is derived as follows:- If last_sig_coeff_x_suffix is not present, the following applies:LastSignificantCoeffX = last_sig_coeff_x_prefix- Otherwise (last_sig_coeff_x_suffix is present), the following applies:LastSignificantCoeffX= (1<<((last_sig_coeff_x_prefix>>1)-1)) * (2+(last_sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffixThe row position of the last significant coefficient in scanning order within a transform block LastSignificantCoeffY is derived as follows:- If last_sig_coeff_y_suffix is not present, the following applies:LastSignificantCoeffY = last_sigcoeff_y_prefix- Otherwise (last_sig_coeff_y_suffix is present), the following applies:LastSignificantCoeffY=(1<<((last_sig_coeff_y_prefix>>1)-1))*(2+(last_sig_coeff_y_prefix&1))+last_sig_coeff_y_suffix |
| LastSignificantCoeffXorLastSignificantCoeffY | codeword | length of the codeword |
| 0 | 0 | 1 |
| 1 | 10 | 2 |
| 2 | 110 | 3 |
| 3 | 1110 | 4 |
| 4, 5 | 11110 | 5 |
| 6, 7 | 111110 | 6 |
| 8~11 | 1111110 | 7 |
| 12~15 | 11111110 | 8 |
| 16~23 | 111111110 | 9 |
| 24~31 | 111111111 | 9 |
| 32~47 | N/A | N/A |
| 48~63 | N/A | N/A |
| The column position of the last significant coefficient in scanning order within a transform block LastSignificantCoeffX is derived as follows:- If last_sig_coeff_x_suffix is not present, the following applies:LastSignificantCoeffX = last_sig_coeff_x_prefix- Otherwise (last_sig_coeff_x_suffix is present), the following applies:LastSignificantCoeffX= (1<<((last_sig_coeff_x_prefix>>1)-1)) * (2+(last_sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffixThe row position of the last significant coefficient in scanning order within a transform block LastSignificantCoeffY is derived as follows:- If last_sig_coeff_y_suffix is not present, the following applies:LastSignificantCoeffY = last_sigcoeff_y_prefix- Otherwise (last_sig_coeff_y_suffix is present), the following applies:LastSignificantCoeffY=(1<<((last_sig_coeff_y_prefix>>1)-1))*(2+(last_sig_coeff_y_prefix&1))+last_sig_coeff_y_suffix |
| Magnitude of last position component | last_sig_coeff_x_prefixorlast_sig_coeff_y_prefix(context coded bin) | last_sig_coeff_x_suffixorlast_sig_coeff_y_suffix(bypass bin) |
| 0 | 0 | |
| 1 | 10 | |
| 2 | 110 | |
| 3 | 1110 | |
| 4, 5 | 11110 | X |
| 6, 7 | 111110 | X |
| 8~11 | 1111110 | XX |
| 12~15 | 11111110 | XX |
| 16~23 | 111111110 | XXX |
| 24~31 | 1111111110 | XXX |
| 32~47 | 11111111110 | XXXX |
| 48~63 | 11111111111 | XXXX |
| Magnitude of last position component | last_sig_coeff_x_prefixorlast_sig_coeff_y_prefix(context coded bin) | last_sig_coeff_x_suffixorlast_sig_coeff_y_suffix(bypass bin) |
| 0 | 0 | |
| 1 | 10 | |
| 2 | 110 | |
| 3 | 1110 | |
| 4, 5 | 11110 | X |
| 6, 7 | 111110 | X |
| 8~11 | 1111110 | XX |
| 12~15 | 11111110 | XX |
| 16~23 | 111111110 | XXX |
| 24~31 | 111111111 | XXX |
| 32~47 | N/A | N/A |
| 48~63 | N/A | N/A |
| Magnitude of last position component | VTM3.0 | Proposed method |
| 0 | 1 | 1 |
| 1 | 2 | 2 |
| 2 | 3 | 3 |
| 3 | 4 | 4 |
| 4, 5 | 5 | 5 |
| 6, 7 | 6 | 6 |
| 8~11 | 7 | 7 |
| 12~15 | 8 | 8 |
| 16~23 | 9 | 9 |
| 24~31 | 10 | 9 |
| 32~47 | 11 | N/A |
| 48~63 | 11 | N/A |
| All Intra Main10 | |||||
| Over VTM-3.0 | |||||
| Y | U | V | EncT | DecT | |
| Class A1 | 0.03% | -0.07% | 0.03% | 100% | 101% |
| Class A2 | 0.02% | 0.00% | -0.03% | 100% | 100% |
| Class B | 0.01% | 0.05% | -0.02% | 100% | 102% |
| Class C | 0.00% | 0.01% | -0.03% | 100% | 101% |
| Class E | 0.02% | -0.02% | -0.03% | 100% | 99% |
| Overall | 0.01% | 0.00% | -0.02% | 100% | 101% |
| Class D | 0.00% | 0.01% | -0.01% | 100% | 100% |
| Class F | -0.01% | 0.03% | 0.02% | 100% | 99% |
| Random access Main10 | |||||
| Over VTM-3.0 | |||||
| Y | U | V | EncT | DecT | |
| Class A1 | 0.05% | -0.09% | 0.00% | ||
| Class A2 | 0.01% | 0.07% | 0.03% | ||
| Class B | -0.01% | -0.02% | -0.04% | 100% | 100% |
| Class C | 0.00% | 0.02% | -0.01% | 99% | 100% |
| Class E | |||||
| Overall | 0.01% | -0.01% | -0.01% | ||
| Class D | 0.00% | 0.03% | 0.06% | 100% | 100% |
| Class F | -0.01% | -0.03% | -0.07% | 100% | 99% |
| residual_coding( x0, y0, log2TbWidth, log2TbHeight, cIdx ) { | Descriptor |
| if( transform_skip_enabled_flag && ( cIdx ! = 0 | | tu_mts_flag[ x0 ][ y0 ] = = 0 ) && ( log2TbWidth <= 2 ) && ( log2TbHeight <= 2 ) ) | |
| transform_skip_flag[ x0 ][ y0 ][ cIdx ] | ae(v) |
| last_sig_coeff_x_prefix | ae(v) |
| last_sig_coeff_y_prefix | ae(v) |
| if( last_sig_coeff_x_prefix > 3 ) | |
| last_sig_coeff_x_suffix | ae(v) |
| if( last_sig_coeff_y_prefix > 3 ) | |
| last_sig_coeff_y_suffix | ae(v) |
| log2SbSize = ( Min( log2TbWidth, log2TbHeight ) < 2 ? 1 : 2 ) | |
| numSbCoeff = 1 << ( log2SbSize << 1 ) | |
| lastScanPos = numSbCoeff | |
| log2TbWidth = Min( log2TbWidth, 5 ) | |
| log2TbHeight = Min( log2TbHeight, 5 ) | |
| lastSubBlock = ( 1 << ( log2TbWidth + log2TbHeight - 2 * log2SbSize ) ) -1 | |
| do { | |
| if( lastScanPos = = 0 ) { | |
| lastScanPos = numSbCoeff | |
| lastSubBlock- - | |
| } | |
| lastScanPos- - | |
| xS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 0 ] | |
| yS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 1 ] | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ lastScanPos ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ lastScanPos ][ 1 ] | |
| } while( ( xC != LastSignificantCoeffX ) | | ( yC != LastSignificantCoeffY ) ) | |
| numSigCoeff = 0 | |
| QState = 0 | |
| for( i = lastSubBlock; i >= 0; i- - ) { | |
| startQStateSb = QState | |
| xS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 0 ] | |
| yS = DiagScanOrder[ log2TbWidth - log2SbSize ][ log2TbHeight -log2SbSize ] [ lastSubBlock ][ 1 ] | |
| inferSbDcSigCoeffFlag = 0 | |
| if( ( i < lastSubBlock ) && ( i > 0 ) ) { | |
| coded_sub_block_flag[ xS ][ yS ] | ae(v) |
| inferSbDcSigCoeffFlag = 1 | |
| } | |
| firstSigScanPosSb = numSbCoeff | |
| lastSigScanPosSb = -1 | |
| remBinsPass1 = ( log2SbSize < 2 ? 6 : 28 ) | |
| remBinsPass2 = ( log2SbSize < 2 ? 2 : 4 ) | |
| firstPosMode0 = ( i = = lastSubBlock ? lastScanPos - 1 : numSbCoeff -1 ) | |
| firstPosMode1 = -1 | |
| firstPosMode2 = -1 | |
| for( n = ( i = = firstPosMode0; n >= 0 && remBinsPass1 >= 3; n- - ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( coded_sub_block_flag[ xS ][ yS ] && ( n > 0 | | !inferSbDcSigCoeffFlag ) ) { | |
| sig_coeff_flag[ xC ][ yC ] | ae(v) |
| remBinsPass1- - | |
| if( sig_coeff_flag[ xC ][ yC ] ) | |
| inferSbDcSigCoeffFlag = 0 | |
| } | |
| if( sig_coeff_flag[ xC ][ yC ] ) { | |
| numSigCoeff++ | |
| abs_level_gt1_flag[ n ] | ae(v) |
| remBinsPass1- - | |
| if( abs_level_gt1_flag[ n ] ) { | |
| par_level_flag[ n ] | ae(v) |
| remBinsPass1- - | |
| if( remBinsPass2 > 0 ) { | |
| remBinsPass2- - | |
| if( remBinsPass2 = = 0 ) | |
| firstPosMode1 = n - 1 | |
| } | |
| } | |
| if( lastSigScanPosSb = = -1 ) | |
| lastSigScanPosSb = n | |
| firstSigScanPosSb = n | |
| } | |
| AbsLevelPass1[ xC ][ yC ] = sig_coeff_flag[ xC ][ yC ] + par_level_flag[ n ] + abs_level_gt1_flag[ n ] | |
| if( dep_quant_enabled_flag ) | |
| QState = QStateTransTable[ QState ][ AbsLevelPass1[ xC ][ yC ] & 1 ] | |
| if( remBinsPass1 < 3 ) | |
| firstPosMode2 = n - 1 | |
| } | |
| if( firstPosMode1 < firstPosMode2 ) | |
| firstPosMode1 = firstPosMode2 | |
| for( n = numSbCoeff - 1; n >= firstPosMode2; n-- ) | |
| if( abs_level_gt1_flag[ n ] ) | |
| abs_level_gt3_flag[ n ] | ae(v) |
| for( n = numSbCoeff - 1; n >= firstPosMode1; n-- ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( abs_level_gt3_flag[ n ] ) | |
| abs_remainder[ n ] | ae(v) |
| AbsLevel[ xC ][ yC ] = AbsLevelPass1[ xC ][ yC ] + 2 * ( abs_level_gt3_flag[ n ] + abs_remainder[ n ] ) | |
| } | |
| for( n = firstPosMode1; n > firstPosMode2; n- - ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( abs_level_gt1_flag[ n ] ) | |
| abs_remainder[ n ] | ae(v) |
| AbsLevel[ xC ][ yC ] = AbsLevelPass1[ xC ][ yC ] + 2 * abs_remainder[ n ] | |
| } | |
| for( n = firstPosMode2; n >= 0; n- - ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| dec_abs_level[ n ] | ae(v) |
| if(AbsLevel[ xC ][ yC ] > 0 ) | |
| firstSigScanPosSb = n | |
| if( dep_quant_enabled_flag ) | |
| QState = QStateTransTable[ QState ][ AbsLevel[ xC ][ yC ] & 1 ] | |
| } | |
| if( dep_quant_enabled_flag | | !sign_data_hiding_enabled_flag ) | |
| signHidden = 0 | |
| else | |
| signHidden = ( lastSigScanPosSb - firstSigScanPosSb > 3 ? 1 : 0 ) | |
| for( n = numSbCoeff - 1; n >= 0; n-- ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( sig_coeff_flag[ xC ][ yC ] && ( !signHidden | | ( n != firstSigScanPosSb ) ) ) | |
| coeff_sign_flag[ n ] | ae(v) |
| } | |
| if( dep_quant_enabled_flag ) { | |
| QState = startQStateSb | |
| for( n = numSbCoeff - 1; n >= 0; n-- ) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( sig_coeff_flag[ xC ][ yC ] ) | |
| TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = ( 2 * AbsLevel[ xC ][ yC ] - ( QState > 1 1 : 0 ) ) * ( 1 - 2 * coeff_sign_flag[ n ] ) | |
| QState = QStateTransTable[ QState ][ par_level_flag[ n ] ] | |
| } else { | |
| sumAbsLevel = 0 | |
| for( n = numSbCoeff - 1; n >= 0; n--) { | |
| xC = ( xS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 0 ] | |
| yC = ( yS << log2SbSize ) + DiagScanOrder[ log2SbSize ][ log2SbSize ][ n ][ 1 ] | |
| if( sig_coeff_flag[ xC ][ yC ] ) { | |
| TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = AbsLevel[ xC ][ yC ] * ( 1 - 2 * coeff_sign_flag[ n ] ) | |
| if( signHidden ) { | |
| sumAbsLevel += AbsLevel[ xC ][ yC ] | |
| if( ( n = = firstSigScanPosSb ) && ( sumAbsLevel % 2 ) = = 1 ) ) | |
| TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = -TransCoeffLevel[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if( tu_mts_flag[ x0 ][ y0 ] && ( cIdx = = 0 ) ) | |
| mts_idx[ x0 ][ y0 ][ cIdx ] | ae(v) |
| } |
Claims (15)
- 디코딩 장치에 의하여 수행되는 영상 디코딩 방법에 있어서,
레지듀얼 정보를 포함하는 비트스트림을 수신하는 단계;
상기 비트스트림에 포함된 상기 레지듀얼 정보를 기반으로 현재 블록에 대한 양자화된 변환 계수들을 도출하는 단계;
역양자화 과정(inverse quantization process)에 기반하여 상기 양자화된 변환 계수들로부터 상기 현재 블록에 대한 변환 계수들을 도출하는 단계;
상기 도출된 변환 계수들에 역변환(inverse transform)을 적용하여 상기 현재 블록에 대한 레지듀얼 샘플들을 도출하는 단계; 및
상기 현재 블록에 대한 상기 레지듀얼 샘플들을 기반으로 복원 픽처를 생성하는 단계를 포함하되,
상기 현재 블록에 대한 상기 변환 계수들 각각은, 변환 계수 0으로 구성된 고주파 변환 계수 영역 또는 적어도 하나의 유효 변환 계수를 포함하는 저주파 변환 계수 영역과 관련되고,
상기 현재 블록에 대한 변환 계수들 중 상기 저주파 변환 계수 영역과 관련된 변환 계수들에 대해서 변환 계수 스캐닝(transform coefficient scanning)이 수행되는 것을 특징으로 하는, 영상 디코딩 방법. - 제1항에 있어서,
상기 레지듀얼 정보는 상기 현재 블록 내 서브 블록에 대한 변환 계수들의 변환 계수 레벨이 모두 0인지 여부를 나타내는 코디드 서브 블록 플래그(coded subblock flag)를 포함하고,
상기 서브 블록은 상기 저주파 변환 계수 영역과 관련되는 것을 특징으로 하는, 영상 디코딩 방법. - 제1항에 있어서,
상기 고주파 변환 계수 영역과 관련된 변환 계수들에 대해서는 상기 변환 계수 스캐닝이 수행되지 않는 것을 특징으로 하는, 영상 디코딩 방법. - 제1항에 있어서,
상기 저주파 변환 계수 영역의 폭 또는 상기 저주파 변환 계수 영역의 높이는 32 이하인 것을 특징으로 하는, 영상 디코딩 방법. - 제4항에 있어서,
상기 현재 블록의 폭이 32 미만이라는 결정을 기반으로, 상기 저주파 변환 계수 영역의 상기 폭은 상기 현재 블록의 상기 폭과 동일한 것으로 결정되고,
상기 현재 블록의 높이가 32 미만이라는 결정을 기반으로, 상기 저주파 변환 계수 영역의 상기 높이는 상기 현재 블록의 상기 높이와 동일한 것으로 결정되고,
상기 현재 블록의 상기 폭이 32 이상이라는 결정을 기반으로, 상기 저주파 변환 계수 영역의 상기 폭은 32로 결정되고,
상기 현재 블록의 상기 높이가 32 이상이라는 결정을 기반으로, 상기 저주파 변환 계수 영역의 상기 높이는 32로 결정되는 것을 특징으로 하는, 영상 디코딩 방법. - 제5항에 있어서,
상기 저주파 변환 계수 영역의 상기 폭 및 상기 저주파 변환 계수 영역의 상기 높이는 아래의 수학식을 기반으로 결정되고,
log2(ZoTbWidth) = Min(log2(TbWidth), 5)
log2(ZoTbHeight) = Min(log2(TbHeight), 5)
상기 제5항의 수학식에서 상기 ZoTbWidth는 상기 저주파 변환 계수 영역의 상기 폭을 나타내고, 상기 ZoTbHeight는 상기 저주파 변환 계수 영역의 상기 높이를 나타내고, 상기 TbWidth는 상기 현재 블록의 상기 폭을 나타내고, 상기 TbHeight는 상기 현재 블록의 상기 높이를 나타내는 것을 특징으로 하는, 영상 디코딩 방법. - 제4항에 있어서,
상기 고주파 변환 계수 영역과 관련된 변환 계수들에 대하여 제로잉(zeroing)이 적용되고, 상기 제로잉이 적용된 변환 계수들의 개수는 상기 저주파 변환 계수 영역의 상기 폭 또는 상기 저주파 변환 계수 영역의 상기 높이에 기반하여 결정되는 것을 특징으로 하는, 영상 디코딩 방법. - 인코딩 장치에 의하여 수행되는 영상 인코딩 방법에 있어서,
현재 블록에 대한 레지듀얼 샘플들을 도출하는 단계;
상기 현재 블록에 대한 상기 레지듀얼 샘플들을 변환하여 상기 현재 블록에 대한 변환 계수들을 도출하는 단계;
양자화 과정에 기반하여 상기 변환 계수들로부터 양자화된 변환 계수들을 도출하는 단계; 및
상기 양자화된 변환 계수들에 대한 정보를 포함하는 레지듀얼 정보를 인코딩하는 단계를 포함하되,
상기 현재 블록에 대한 상기 변환 계수들 각각은, 변환 계수 0으로 구성된 고주파 변환 계수 영역 또는 적어도 하나의 유효 변환 계수를 포함하는 저주파 변환 계수 영역과 관련되고,
상기 현재 블록에 대한 변환 계수들 중 상기 저주파 변환 계수 영역과 관련된 변환 계수들에 대해서 변환 계수 스캐닝이 수행되는 것을 특징으로 하는, 영상 인코딩 방법. - 제8항에 있어서,
상기 레지듀얼 정보는 상기 현재 블록 내 서브 블록에 대한 변환 계수들의 변환 계수 레벨이 모두 0인지 여부를 나타내는 코디드 서브 블록 플래그(coded subblock flag)를 포함하고,
상기 서브 블록은 상기 저주파 변환 계수 영역과 관련되는 것을 특징으로 하는, 영상 인코딩 방법. - 제8항에 있어서,
상기 고주파 변환 계수 영역과 관련된 변환 계수들에 대해서는 상기 변환 계수 스캐닝이 수행되지 않는 것을 특징으로 하는, 영상 인코딩 방법. - 제8항에 있어서,
상기 저주파 변환 계수 영역의 폭 또는 상기 저주파 변환 계수 영역의 높이는 32 이하인 것을 특징으로 하는, 영상 인코딩 방법. - 제11항에 있어서,
상기 현재 블록의 폭이 32 미만이라는 결정을 기반으로, 상기 저주파 변환 계수 영역의 상기 폭은 상기 현재 블록의 상기 폭과 동일한 것으로 결정되고,
상기 현재 블록의 높이가 32 미만이라는 결정을 기반으로, 상기 저주파 변환 계수 영역의 상기 높이는 상기 현재 블록의 상기 높이와 동일한 것으로 결정되고,
상기 현재 블록의 상기 폭이 32 이상이라는 결정을 기반으로, 상기 저주파 변환 계수 영역의 상기 폭은 32로 결정되고,
상기 현재 블록의 상기 높이가 32 이상이라는 결정을 기반으로, 상기 저주파 변환 계수 영역의 상기 높이는 32로 결정되는 것을 특징으로 하는, 영상 인코딩 방법. - 제12항에 있어서,
상기 저주파 변환 계수 영역의 폭 및 상기 저주파 변환 계수 영역의 상기 높이는 아래의 수학식을 기반으로 결정되고,
log2(ZoTbWidth) = Min(log2(TbWidth), 5)
log2(ZoTbHeight) = Min(log2(TbHeight), 5)
상기 제5항의 수학식에서 상기 ZoTbWidth는 상기 저주파 변환 계수 영역의 상기 폭을 나타내고, 상기 ZoTbHeight는 상기 저주파 변환 계수 영역의 상기 높이를 나타내고, 상기 TbWidth는 상기 현재 블록의 상기 폭을 나타내고, 상기 TbHeight는 상기 현재 블록의 상기 높이를 나타내는 것을 특징으로 하는, 영상 인코딩 방법. - 제11항에 있어서,
상기 고주파 변환 계수 영역과 관련된 변환 계수들에 대하여 제로잉이 적용되고, 상기 제로잉이 적용된 변환 계수들의 개수는 상기 저주파 변환 계수 영역의 상기 폭 또는 상기 저주파 변환 계수 영역의 상기 높이에 기반하여 결정되는 것을 특징으로 하는, 영상 인코딩 방법. - 영상 디코딩을 수행하는 디코딩 장치에 있어서,
레지듀얼 정보를 포함하는 비트스트림을 수신하고, 상기 비트스트림에 포함된 상기 레지듀얼 정보를 기반으로 현재 블록에 대한 양자화된 변환 계수들을 도출하는 엔트로피 디코딩부;
역양자화 과정(inverse quantization process)에 기반하여 상기 양자화된 변환 계수들로부터 상기 현재 블록에 대한 변환 계수들을 도출하는 역양자화부;
상기 도출된 변환 계수들에 역변환(inverse transform)을 적용하여 상기 현재 블록에 대한 레지듀얼 샘플들을 도출하는 역변환부; 및
상기 현재 블록에 대한 상기 레지듀얼 샘플들을 기반으로 복원 픽처를 생성하는 가산부를 포함하되,
상기 현재 블록에 대한 상기 변환 계수들 각각은, 변환 계수 0으로 구성된 고주파 변환 계수 영역 또는 적어도 하나의 유효 변환 계수를 포함하는 저주파 변환 계수 영역과 관련되고,
상기 현재 블록에 대한 변환 계수들 중 상기 저주파 변환 계수 영역과 관련된 변환 계수들에 대해서 변환 계수 스캐닝이 수행되는 것을 특징으로 하는, 디코딩 장치.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020227012763A KR102489599B1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862780925P | 2018-12-17 | 2018-12-17 | |
| US62/780,925 | 2018-12-17 | ||
| US201962792826P | 2019-01-15 | 2019-01-15 | |
| US62/792,826 | 2019-01-15 | ||
| PCT/KR2019/017723 WO2020130514A1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020227012763A Division KR102489599B1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20200078501A true KR20200078501A (ko) | 2020-07-01 |
| KR102388807B1 KR102388807B1 (ko) | 2022-04-20 |
Family
ID=71102256
Family Applications (4)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020227012763A Active KR102489599B1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
| KR1020237036592A Active KR102768903B1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
| KR1020207011528A Active KR102388807B1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
| KR1020237001450A Active KR102595372B1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
Family Applications Before (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020227012763A Active KR102489599B1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
| KR1020237036592A Active KR102768903B1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020237001450A Active KR102595372B1 (ko) | 2018-12-17 | 2019-12-13 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
Country Status (6)
| Country | Link |
|---|---|
| US (2) | US11838512B2 (ko) |
| EP (1) | EP3700206A4 (ko) |
| JP (1) | JP2021510943A (ko) |
| KR (4) | KR102489599B1 (ko) |
| CN (3) | CN115442608B (ko) |
| WO (1) | WO2020130514A1 (ko) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2023191261A1 (ko) * | 2022-03-30 | 2023-10-05 | 엘지전자 주식회사 | 영상 코딩 시스템에서 레지듀얼 정보를 코딩하는 방법 및 장치 |
| CN114742950B (zh) * | 2022-04-19 | 2024-02-02 | 上海海事大学 | 船舶外形3d数字重构方法、装置、存储介质及电子设备 |
| CN119545022B (zh) * | 2022-04-28 | 2026-03-17 | Oppo广东移动通信有限公司 | 视频编码中的子块编码推断 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20130095289A (ko) * | 2010-10-01 | 2013-08-27 | 퀄컴 인코포레이티드 | 조인트 콘텍스트 모델을 사용한 계수들의 엔트로피 코딩 |
| KR20180048739A (ko) * | 2015-09-30 | 2018-05-10 | 엘지전자 주식회사 | 비디오 코딩 시스템에서 레지듀얼 신호 코딩 방법 및 장치 |
Family Cites Families (55)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6226327B1 (en) * | 1992-06-29 | 2001-05-01 | Sony Corporation | Video coding method and apparatus which select between frame-based and field-based predictive modes |
| JP3732867B2 (ja) * | 1995-03-09 | 2006-01-11 | 株式会社ルネサステクノロジ | 画像伸張装置 |
| FR2830157A1 (fr) * | 2001-09-25 | 2003-03-28 | Koninkl Philips Electronics Nv | Procede de conversion de donnees video codees |
| US7760808B2 (en) * | 2005-06-21 | 2010-07-20 | Nokia Corporation | Image processing of DCT-based video sequences in compressed domain |
| US8665943B2 (en) * | 2005-12-07 | 2014-03-04 | Sony Corporation | Encoding device, encoding method, encoding program, decoding device, decoding method, and decoding program |
| US8275045B2 (en) * | 2006-07-12 | 2012-09-25 | Qualcomm Incorporated | Video compression using adaptive variable length codes |
| MX2011004850A (es) * | 2008-11-07 | 2011-05-30 | Mitsubishi Electric Corp | Codificador de imagenes y decodificador de imagenes. |
| KR101457894B1 (ko) * | 2009-10-28 | 2014-11-05 | 삼성전자주식회사 | 영상 부호화 방법 및 장치, 복호화 방법 및 장치 |
| KR101483179B1 (ko) * | 2010-10-06 | 2015-01-19 | 에스케이 텔레콤주식회사 | 주파수 마스크 테이블을 이용한 주파수변환 블록 부호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치 |
| CN102231830B (zh) * | 2010-11-23 | 2013-04-17 | 浙江大学 | 用于上下文算术编解码的运算单元 |
| US8976861B2 (en) * | 2010-12-03 | 2015-03-10 | Qualcomm Incorporated | Separately coding the position of a last significant coefficient of a video block in video coding |
| US9288496B2 (en) * | 2010-12-03 | 2016-03-15 | Qualcomm Incorporated | Video coding using function-based scan order for transform coefficients |
| KR101763113B1 (ko) * | 2010-12-06 | 2017-08-01 | 에스케이 텔레콤주식회사 | 노이즈성분을 위한 공간영역에서의 영상 부호화/복호화 방법 및 장치 |
| US9706214B2 (en) * | 2010-12-24 | 2017-07-11 | Microsoft Technology Licensing, Llc | Image and video decoding implementations |
| US9106913B2 (en) * | 2011-03-08 | 2015-08-11 | Qualcomm Incorporated | Coding of transform coefficients for video coding |
| US9491469B2 (en) * | 2011-06-28 | 2016-11-08 | Qualcomm Incorporated | Coding of last significant transform coefficient |
| HUE050522T2 (hu) * | 2011-06-28 | 2020-12-28 | Samsung Electronics Co Ltd | Video kódolási és dekódolási eljárás felhasználva aritmetikai kódolást az utolsó szignifikáns együttható kétdimenziós jelzésével |
| KR101955374B1 (ko) * | 2011-06-30 | 2019-05-31 | 에스케이 텔레콤주식회사 | 고속 코딩 단위(Coding Unit) 모드 결정을 통한 부호화/복호화 방법 및 장치 |
| KR101943049B1 (ko) * | 2011-06-30 | 2019-01-29 | 에스케이텔레콤 주식회사 | 영상 부호화/복호화 방법 및 장치 |
| KR101762294B1 (ko) * | 2011-10-18 | 2017-07-28 | 주식회사 케이티 | 영상 부호화 방법, 영상 복호화 방법, 영상 부호화기 및 영상 복호화기 |
| AU2011236109B2 (en) * | 2011-10-18 | 2015-02-19 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding the significance map for residual coefficients of a transform unit |
| JPWO2013065702A1 (ja) * | 2011-11-04 | 2015-04-02 | シャープ株式会社 | 算術復号装置、画像復号装置、算術符号化装置、画像符号化装置、および、算術復号方法 |
| US9357185B2 (en) * | 2011-11-08 | 2016-05-31 | Qualcomm Incorporated | Context optimization for last significant coefficient position coding |
| CN108471535A (zh) * | 2011-11-08 | 2018-08-31 | 三星电子株式会社 | 用于对视频进行解码的方法 |
| CN104956674B (zh) * | 2012-01-20 | 2019-02-15 | 谷歌技术控股有限责任公司 | 用于最末重要系数位置编解码中的上下文减少的设备和方法 |
| WO2013116849A1 (en) * | 2012-02-04 | 2013-08-08 | General Instrument Corporation | Devices and methods for context reduction in last significant coefficient position coding |
| EP2866443A4 (en) * | 2012-06-22 | 2016-06-15 | Sharp Kk | ARITHMETIC DECODING DEVICE, ARITHMETIC CODING DEVICE, IMAGE DECODING DEVICE AND IMAGE DEVICES |
| US10257520B2 (en) * | 2012-06-26 | 2019-04-09 | Velos Media, Llc | Modified coding for transform skipping |
| CN108632611A (zh) * | 2012-06-29 | 2018-10-09 | 韩国电子通信研究院 | 视频解码方法、视频编码方法和计算机可读介质 |
| WO2014007524A1 (ko) * | 2012-07-02 | 2014-01-09 | 삼성전자 주식회사 | 비디오의 엔트로피 부호화 방법 및 장치, 비디오의 엔트로피 복호화 방법 및 장치 |
| CN104272735B (zh) * | 2013-01-16 | 2018-04-13 | 黑莓有限公司 | 针对视频的上下文自适应二进制熵编码的变换系数编码 |
| JP6197496B2 (ja) * | 2013-08-30 | 2017-09-20 | 富士通株式会社 | 量子化装置、量子化方法および量子化プログラム |
| US9215464B2 (en) * | 2013-09-19 | 2015-12-15 | Blackberry Limited | Coding position data for the last non-zero transform coefficient in a coefficient group |
| US9432696B2 (en) * | 2014-03-17 | 2016-08-30 | Qualcomm Incorporated | Systems and methods for low complexity forward transforms using zeroed-out coefficients |
| KR102333000B1 (ko) * | 2015-01-15 | 2021-12-01 | 한국전자통신연구원 | 고속 변환 계수 부호화 방법 및 장치 |
| US10306229B2 (en) * | 2015-01-26 | 2019-05-28 | Qualcomm Incorporated | Enhanced multiple transforms for prediction residual |
| US10284849B2 (en) * | 2015-04-13 | 2019-05-07 | Qualcomm Incorporated | Quantization parameter (QP) calculation for display stream compression (DSC) based on complexity measure |
| KR102230264B1 (ko) * | 2015-08-28 | 2021-03-22 | 삼성전자주식회사 | 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치 |
| US10616604B2 (en) * | 2015-09-01 | 2020-04-07 | Qualcomm Incorporated | Coefficient level coding in video coding |
| KR101743665B1 (ko) * | 2016-02-02 | 2017-06-05 | 세종대학교산학협력단 | 인트라 예측 기반의 비디오 신호 처리 방법 및 장치 |
| CN106162184B (zh) * | 2016-07-28 | 2020-01-10 | 华为技术有限公司 | 一种数据块编码方法及装置 |
| CN106331715B (zh) * | 2016-08-24 | 2019-04-12 | 上海富瀚微电子股份有限公司 | 基于视频压缩编码标准h.265的熵编码系统及其编码方法 |
| US10880564B2 (en) * | 2016-10-01 | 2020-12-29 | Qualcomm Incorporated | Transform selection for video coding |
| KR20260027320A (ko) * | 2016-10-04 | 2026-02-27 | 주식회사 비원영상기술연구소 | 영상 데이터 부호화/복호화 방법 및 장치 |
| EP3306924A1 (en) * | 2016-10-05 | 2018-04-11 | Thomson Licensing | Method and device for context-adaptive binary arithmetic coding a sequence of binary symbols representing a syntax element related to picture data |
| KR20180096194A (ko) * | 2017-02-20 | 2018-08-29 | 한국전자통신연구원 | 변환 계수 부호화 및 복호화 장치와 이를 구비하는 부호화 장치 및 복호화 장치 |
| JP2018182444A (ja) * | 2017-04-07 | 2018-11-15 | 株式会社Jvcケンウッド | 画像符号化装置、画像符号化方法及び画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム |
| MX2019012293A (es) * | 2017-04-13 | 2020-01-20 | Lg Electronics Inc | Metodo y dispositivo para codificacion y decodificacion de entropia de señal de video. |
| CN108810552B (zh) * | 2017-04-28 | 2021-11-09 | 华为技术有限公司 | 图像预测方法和相关产品 |
| CN107580224B (zh) * | 2017-08-08 | 2019-11-22 | 西安理工大学 | 一种面向hevc熵编码的自适应扫描方法 |
| WO2019132577A1 (ko) * | 2017-12-28 | 2019-07-04 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
| CN108235013B (zh) * | 2018-01-22 | 2020-03-17 | 合肥工业大学 | 一种基于hevc的低周期cabac解码器及其解码方法 |
| US11051036B2 (en) * | 2018-07-14 | 2021-06-29 | Mediatek Inc. | Method and apparatus of constrained overlapped block motion compensation in video coding |
| US11039139B2 (en) * | 2018-09-14 | 2021-06-15 | Tencent America LLC | Method and apparatus for identity transform in multiple transform selection |
| EP3709658B1 (en) * | 2018-11-12 | 2025-03-26 | LG Electronics Inc. | Method for coding transform coefficient on basis of high frequency zeroing and apparatus therefor |
-
2019
- 2019-12-13 KR KR1020227012763A patent/KR102489599B1/ko active Active
- 2019-12-13 KR KR1020237036592A patent/KR102768903B1/ko active Active
- 2019-12-13 EP EP19874755.2A patent/EP3700206A4/en not_active Withdrawn
- 2019-12-13 CN CN202211053759.7A patent/CN115442608B/zh active Active
- 2019-12-13 CN CN202211046061.2A patent/CN115426495B/zh active Active
- 2019-12-13 JP JP2020526132A patent/JP2021510943A/ja active Pending
- 2019-12-13 KR KR1020207011528A patent/KR102388807B1/ko active Active
- 2019-12-13 WO PCT/KR2019/017723 patent/WO2020130514A1/ko not_active Ceased
- 2019-12-13 KR KR1020237001450A patent/KR102595372B1/ko active Active
- 2019-12-13 CN CN201980006034.2A patent/CN111587575B/zh active Active
-
2020
- 2020-04-22 US US16/855,785 patent/US11838512B2/en active Active
-
2023
- 2023-10-24 US US18/383,327 patent/US12294711B2/en active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20130095289A (ko) * | 2010-10-01 | 2013-08-27 | 퀄컴 인코포레이티드 | 조인트 콘텍스트 모델을 사용한 계수들의 엔트로피 코딩 |
| KR20180048739A (ko) * | 2015-09-30 | 2018-05-10 | 엘지전자 주식회사 | 비디오 코딩 시스템에서 레지듀얼 신호 코딩 방법 및 장치 |
Also Published As
| Publication number | Publication date |
|---|---|
| KR102388807B1 (ko) | 2022-04-20 |
| CN111587575B (zh) | 2022-09-16 |
| CN115442608A (zh) | 2022-12-06 |
| CN115426495B (zh) | 2024-05-28 |
| EP3700206A4 (en) | 2020-11-18 |
| KR20230154085A (ko) | 2023-11-07 |
| US20200252615A1 (en) | 2020-08-06 |
| EP3700206A1 (en) | 2020-08-26 |
| US20240056579A1 (en) | 2024-02-15 |
| KR102489599B1 (ko) | 2023-01-18 |
| KR20230013164A (ko) | 2023-01-26 |
| JP2021510943A (ja) | 2021-04-30 |
| US12294711B2 (en) | 2025-05-06 |
| WO2020130514A1 (ko) | 2020-06-25 |
| CN111587575A (zh) | 2020-08-25 |
| CN115426495A (zh) | 2022-12-02 |
| CN115442608B (zh) | 2024-05-24 |
| KR102595372B1 (ko) | 2023-10-27 |
| KR20220053051A (ko) | 2022-04-28 |
| US11838512B2 (en) | 2023-12-05 |
| KR102768903B1 (ko) | 2025-02-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11240533B2 (en) | Video decoding method using residual information in video coding system, and apparatus thereof | |
| KR102531145B1 (ko) | 고주파 제로잉을 기반으로 변환 계수를 코딩하는 방법 및 그 장치 | |
| KR102448535B1 (ko) | 변환 계수 레벨 코딩 방법 및 그 장치 | |
| US12294711B2 (en) | Method of determining transform coefficient scan order based on high frequency zeroing and apparatus thereof | |
| KR20210042168A (ko) | 변환 계수 코딩 방법 및 그 장치 | |
| KR20210060498A (ko) | 변환 계수 코딩 방법 및 장치 | |
| US11677955B2 (en) | Image decoding method for coding residual information on basis of high frequency zeroing in image coding system, and device therefor | |
| US12238287B2 (en) | Image decoding method for residual coding based on transform-skip-related flag in image coding system, and apparatus therefor |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0105 | International application |
St.27 status event code: A-0-1-A10-A15-nap-PA0105 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| E13-X000 | Pre-grant limitation requested |
St.27 status event code: A-2-3-E10-E13-lim-X000 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
| D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| E13-X000 | Pre-grant limitation requested |
St.27 status event code: A-2-3-E10-E13-lim-X000 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| A107 | Divisional application of patent | ||
| GRNT | Written decision to grant | ||
| PA0104 | Divisional application for international application |
St.27 status event code: A-0-1-A10-A18-div-PA0104 St.27 status event code: A-0-1-A10-A16-div-PA0104 |
|
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U12-oth-PR1002 Fee payment year number: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R11-asn-PN2301 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R14-asn-PN2301 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 5 |
|
| U11 | Full renewal or maintenance fee paid |
Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-OTH-PR1001 (AS PROVIDED BY THE NATIONAL OFFICE) Year of fee payment: 5 |


