KR20180131123A - 처리 장치들 및 그 제어 방법들 - Google Patents

처리 장치들 및 그 제어 방법들 Download PDF

Info

Publication number
KR20180131123A
KR20180131123A KR1020170067744A KR20170067744A KR20180131123A KR 20180131123 A KR20180131123 A KR 20180131123A KR 1020170067744 A KR1020170067744 A KR 1020170067744A KR 20170067744 A KR20170067744 A KR 20170067744A KR 20180131123 A KR20180131123 A KR 20180131123A
Authority
KR
South Korea
Prior art keywords
motion vector
coding unit
frame
additional information
information
Prior art date
Application number
KR1020170067744A
Other languages
English (en)
Other versions
KR102379196B1 (ko
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 KR1020170067744A priority Critical patent/KR102379196B1/ko
Priority to US16/495,469 priority patent/US20200099950A1/en
Priority to CN201880030707.3A priority patent/CN110612725B/zh
Priority to PCT/KR2018/002048 priority patent/WO2018221838A1/ko
Publication of KR20180131123A publication Critical patent/KR20180131123A/ko
Application granted granted Critical
Publication of KR102379196B1 publication Critical patent/KR102379196B1/ko

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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • 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/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/12Selection 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/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/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/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

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

처리 장치들 및 그 제어 방법들 { PROCESSING APPARATUSES AND CONTROL METHODS THEREOF }
본 발명은 처리 장치들 및 그 제어 방법들에 대한 것으로, 더욱 상세하게는 인터 코딩 및 인트라 코딩을 수행하는 처리 장치들 및 그 제어 방법들에 대한 것이다.
무선을 통한 비디오 컨텐츠 전송은 정해진 시간 내의 데이터 전송 과정에서 전송 Packet 손실 및 에러가 발생할 수 있다. 특히, 실시간성 및 저지연이 중요한 비디오 미러링의 경우 Packet 재전송을 통한 복원이 제한될 수 있다.
이러한 전송 에러를 복원하는 방법으로는 Frame/Sub-Frame Duplication 방법및 Context 기반 에러 은닉/복원 방법 등이 이용된다.
Frame/Sub-Frame Duplication 방법은 CRC(cyclic redundancy check)를 통해 에러 발생 여부를 판별하고, 에러가 발생한 경우 이전 마지막 정상 전송된 영상(프레임)을 반복 출력하거나 에러가 발생한 영상의 일부 영역(sub-frame)을 이전 마지막 정상 전송된 영상의 대응되는 영역으로 복사하여 출력한다.
다만, Frame/Sub-Frame Duplication 방법은 낮은 복원 정확도 및 이전 영상의 반복 재생으로 인한 freezing artifact로 인해 시청 품질 저하가 두드러지고, frame 또는 sub-frame 단위의 bit-stream에 대한 CRC 확인 과정에서 전송 지연이 항시 수반되게 된다. 특히, 연속된 frame에서 에러가 발생하는 경우에서, 지속하여 동일한 frame이 반복 재생되는 것으로 인한 freezing artifact는 가중되는 문제점이 있다.
Context 기반 에러 은닉/복원 방법은 인접 블록의 모드 및 화소 정보를 활용하여 손실된 영역의 화소를 예측 복원하는 방법으로, 인접 블록의 움직임 벡터(motion vector, MV) 및 이전 정상 복원된 프레임의 화소 정보를 활용하여 손실된 영역의 화소를 예측 복원하거나, 인접 블록의 모드, 화소 및 이전 정상 복원된 프레임의 화소 정보를 활용하여 디코더 내의 움직임 예측 과정을 통한 손실된 영역의 화소를 예측 복원하는 방법이다.
다만, Context 기반 에러 은닉/복원 방법은 주변 MV만을 통해 기준 MV를 생성하기 때문에 정확도가 떨어지게 되며, 부정확하게 복원된 영상의 에러가 마지막 프레임까지 전파되는 문제가 있다. 또한, 디코더 측에서 주변 화소를 활용한 MV 보정 기술의 경우 높은 계산 복잡도를 요구하며, 활용 가능한 주변 화소나 MV 정보가 없는 경우 에러 복원된 데이터가 연쇄적으로 사용되는 과정에서 복원 품질의 저하의 확산되는 문제점이 있다.
그에 따라, 비디오 컨텐츠의 무선 전송에 따른 시간적 제약 하에서도 에러를 복원하여 고품질의 영상을 제공하기 위한 방법이 개발되고 있다.
본 발명은 상술한 필요성에 따른 것으로, 본 발명의 목적은 비디오 컨텐츠를 구성하는 프레임에서 에러가 발생한 픽셀 영역의 복원 효율을 향상시키기 위한 처리 장치들 및 그 제어 방법들을 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따르면, 처리 장치는 비디오 컨텐츠가 저장된 메모리 및 상기 비디오 컨텐츠를 구성하는 프레임을 복수의 코딩 유닛으로 구분하고, 상기 복수의 코딩 유닛 각각에 대한 인코딩을 수행하여 인코딩된 프레임을 생성하는 프로세서를 포함하며, 상기 프로세서는 상기 복수의 코딩 유닛 각각에 대한 상기 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보를 상기 인코딩된 프레임에 추가할 수 있다.
또한, 상기 부가 정보는 상기 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함할 수 있다.
그리고, 부가 정보는 상기 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함될 수 있다
또한, 상기 프로세서는 현재 코딩 유닛을 포함하는 현재 프레임 및 상기 현재 프레임을 기준으로 기설정된 개수의 인접 프레임에서 상기 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하고, 상기 현재 프레임 및 상기 인접 프레임 중 상기 탐색된 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 상기 부가 정보에 추가할 수 있다.
그리고, 상기 프로세서는 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하고, 상기 탐색된 움직임 벡터에 대응되는 픽셀 영역과 상기 현재 코딩 유닛 간 대응되는 위치의 픽셀 값이 기설정된 조건을 만족하면, 상기 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 상기 부가 정보에 추가할 수 있다.
또한, 상기 프로세서는 하나의 프레임 내에서 적어도 두 개의 코딩 유닛에 대한 움직임 벡터가 동일한 경우, 상기 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 상기 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 상기 부가 정보에 추가할 수 있다.
그리고, 상기 프로세서는 상기 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성이 검출되면, 상기 검출된 규칙성에 대응되는 정보를 상기 부가 정보에 추가할 수 있다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따르면, 처리 장치는 인코딩된 비디오 컨텐츠가 저장된 메모리 및 상기 인코딩된 비디오 컨텐츠를 구성하는 인코딩된 프레임에 대해 코딩 유닛 단위로 디코딩을 수행하여 디코딩된 프레임을 생성하는 프로세서를 포함하며, 상기 인코딩된 비디오 컨텐츠는 상기 인코딩된 프레임을 구성하는 복수의 코딩 유닛 각각에 대한 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보가 상기 인코딩된 프레임 별로 추가된 것이며, 상기 프로세서는 현재 코딩 유닛의 디코딩이 불가능한 경우 상기 부가 정보에서 상기 현재 코딩 유닛에 대한 움직임 벡터를 획득하고, 상기 현재 코딩 유닛을 상기 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
또한, 상기 부가 정보는 상기 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함할 수 있다.
그리고, 상기 부가 정보는 상기 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함될 수 있다.
또한, 상기 부가 정보는 상기 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 포함하고, 상기 프로세서는 상기 현재 코딩 유닛의 디코딩이 불가능한 경우 상기 부가 정보에서 상기 현재 코딩 유닛에 대한 움직임 벡터 및 식별 정보를 획득하고, 상기 현재 코딩 유닛을 상기 획득된 식별 정보에 대응되는 프레임에서 상기 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
그리고, 상기 부가 정보는 상기 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 포함하고, 상기 프로세서는 상기 현재 코딩 유닛의 디코딩이 불가능한 경우 상기 부가 정보에서 상기 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 획득하고, 상기 획득된 정보에 기초하여 상기 현재 코딩 유닛을 상기 인접 코딩 유닛의 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
또한, 상기 부가 정보는 움직임 벡터가 동일한 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 상기 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 포함하고, 상기 프로세서는 상기 현재 코딩 유닛의 디코딩이 불가능한 경우, 상기 위치 정보에 기초하여 상기 현재 코딩 유닛을 상기 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
그리고, 상기 부가 정보는 상기 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성에 대응되는 정보를 포함하고, 상기 프로세서는 상기 현재 코딩 유닛의 디코딩이 불가능한 경우, 상기 규칙성에 대응되는 정보에 기초하여 상기 현재 코딩 유닛에 대응되는 움직임 벡터를 획득하고, 상기 현재 코딩 유닛을 상기 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
한편, 본 발명의 일 실시 예에 따르면, 처리 장치의 제어 방법은 비디오 컨텐츠를 구성하는 프레임을 복수의 코딩 유닛으로 구분하는 단계 및 상기 복수의 코딩 유닛 각각에 대한 인코딩을 수행하여 인코딩된 프레임을 생성하는 단계를 포함하며, 상기 인코딩된 프레임을 생성하는 단계는 상기 복수의 코딩 유닛 각각에 대한 상기 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보를 상기 인코딩된 프레임에 추가할 수 있다.
또한, 상기 부가 정보는 상기 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함할 수 있다.
그리고, 상기 부가 정보는 상기 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함될 수 있다.
또한, 상기 인코딩된 프레임을 생성하는 단계는 현재 코딩 유닛을 포함하는 현재 프레임 및 상기 현재 프레임을 기준으로 기설정된 개수의 인접 프레임에서 상기 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하는 단계 및 상기 현재 프레임 및 상기 인접 프레임 중 상기 탐색된 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 상기 부가 정보에 추가하는 단계를 포함할 수 있다.
그리고, 상기 인코딩된 프레임을 생성하는 단계는 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하는 단계 및 상기 탐색된 움직임 벡터에 대응되는 픽셀 영역과 상기 현재 코딩 유닛 간 대응되는 위치의 픽셀 값이 기설정된 조건을 만족하면, 상기 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 상기 부가 정보에 추가하는 단계를 포함할 수 있다.
한편, 본 발명의 일 실시 예에 따르면, 처리 장치의 제어 방법은 인코딩된 비디오 컨텐츠를 구성하는 인코딩된 프레임에 대해 코딩 유닛 단위로 디코딩을 수행하는 단계 및 상기 디코딩이 수행된 복수의 코딩 유닛을 기설정된 방향으로 배치하여 디코딩된 프레임을 생성하는 단계를 포함하고, 상기 인코딩된 비디오 컨텐츠는 상기 인코딩된 프레임을 구성하는 복수의 코딩 유닛 각각에 대한 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보가 상기 인코딩된 프레임 별로 추가된 것이며, 상기 디코딩을 수행하는 단계는 현재 코딩 유닛의 디코딩이 불가능한 경우 상기 부가 정보에서 상기 현재 코딩 유닛에 대한 움직임 벡터를 획득하고, 상기 현재 코딩 유닛을 상기 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 처리 장치들은 프레임을 구성하는 복수의 코딩 유닛 각각에 대한 움직임 벡터를 인코딩된 프레임에 추가하고, 에러 발생 시 이를 이용하여 복원 효율을 향상시킬 수 있다.
도 1은 본 발명의 이해를 돕기 위한 인코딩을 수행하는 처리 장치의 구성을 나타낸 블록도이다.
도 2는 본 발명의 이해를 돕기 위한 디코딩을 수행하는 처리 장치의 구성을 나타낸 블록도이다.
도 3은 본 발명의 일 실시 예에 따른 인코딩을 수행하는 처리 장치를 설명하기 위한 간략화된 블럭도이다.
도 4는 본 발명의 일 실시 예에 따른 부가 정보를 생성하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 다른 실시 예에 따른 부가 정보를 생성하는 방법을 설명하기 위한 도면이다.
도 6a 및 도 6b는 본 발명의 일 실시 예에 따른 Occlusion이 발생한 경우를 설명하기 위한 도면들이다.
도 7은 본 발명의 일 실시 예에 따른 부가 정보의 데이터양을 축소하기 위한 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 디코딩을 수행하는 처리 장치를 설명하기 위한 간략화된 블럭도이다.
도 9는 본 발명의 일 실시 예에 따른 인코딩을 수행하는 처리 장치의 제어 방법을 설명하기 위한 흐름도이다.
도 10은 본 발명의 일 실시 예에 따른 디코딩을 수행하는 처리 장치의 제어 방법을 설명하기 위한 흐름도이다.
이하에서, 첨부된 도면을 이용하여 본 발명의 다양한 실시 예들에 대하여 구체적으로 설명한다.
도 1은 본 발명의 이해를 돕기 위한 인코딩을 수행하는 처리 장치(100)의 구성을 나타낸 블록도이다. 도 1에 도시된 바와 같이, 처리 장치(100)는 움직임 예측부(111), 움직임 보상부(112), 인트라 예측부(120), 스위치(115), 감산기(125), 변환부(130), 양자화부(140), 엔트로피 부호화부(150), 역양자화부(160), 역변환부(170), 가산기(175), 필터부(180) 및 참조 프레임 버퍼(190)를 포함한다. 여기서, 각 기능부는 적어도 하나의 하드웨어 형태(예를 들어, 적어도 하나의 프로세서)도 구현되는 것도 가능하지만, 적어도 하나의 소프트웨어 또는 프로그램 형태로 구현되는 것도 가능하다.
처리 장치(100)는 비디오 컨텐츠를 인코딩하여 다른 신호 형태로 변경하는 장치이다. 여기서, 비디오 컨텐츠는 복수의 프레임을 포함하며, 각 프레임은 복수의 픽셀을 포함할 수 있다. 예를 들어, 처리 장치(100)는 가공되지 않은 원본 데이터를 압축하기 위한 장치일 수 있다. 또는, 처리 장치(100)는 기 인코딩된 데이터를 다른 신호 형태로 변경하는 장치일 수도 있다.
처리 장치(100)는 각 프레임을 복수의 블록으로 구분하여 인코딩을 수행할 수 있다. 처리 장치(100)는 블록 단위로 시간적 또는 공간적 예측, 변환, 양자화, 필터링, 엔트로피 인코딩 등을 거쳐 인코딩을 수행할 수 있다.
예측은 인코딩하고자 하는 타겟 블록과 유사한 예측 블록을 생성하는 것을 의미한다. 여기서, 인코딩하고자 하는 타겟 블록의 단위를 예측 유닛(Prediction Unit, PU)이라고 정의할 수 있으며, 예측은 시간적 예측 및 공간적 예측으로 구분된다.
시간적 예측은 화면 간 예측을 의미한다. 처리 장치(100)는 현재 인코딩하려는 프레임과 상관도가 높은 일부의 참조 프레임(Reference Frame)을 저장하고 이를 이용하여 화면 간 예측을 수행할 수 있다. 즉, 처리 장치(100)는 이전 시간에 인코딩 후 복원된 참조 프레임으로부터 예측 블록을 생성할 수 있다. 이 경우, 처리 장치(100)는 인터(Inter) 인코딩한다고 말한다.
인터 인코딩하는 경우, 움직임 예측부(111)는 참조 프레임 버퍼(190)에 저장되어 있는 참조 프레임에서 타겟 블록과 가장 시간적 상관도가 높은 블록을 검색할 수 있다. 움직임 예측부(111)는 참조 프레임을 보간(Interpolation)하여 보간된 프레임에서 타겟 블록과 가장 시간적 상관도가 높은 블록을 검색할 수도 있다.
여기서, 참조 프레임 버퍼(190)는 참조 프레임을 저장하는 공간이다. 참조 프레임 버퍼(190)는 화면 간 예측을 수행하는 경우에만 이용되며, 현재 인코딩하려는 프레임과 상관도가 높은 일부의 참조 프레임을 저장하고 있을 수 있다. 참조 프레임은 후술할 차분 블록을 순차적으로 변환, 양자화, 역양자화, 역변환, 필터링하여 생성된 프레임일 수 있다. 즉, 참조 프레임은 인코딩 후 복원된 프레임일 수 있다.
움직임 보상부(112)는 움직임 예측부(111)에서 찾은 타겟 블록과 가장 시간적 상관도가 높은 블록에 대한 움직임 정보를 바탕으로 예측 블록을 생성할 수 있다. 여기서, 움직임 정보는 움직임 벡터, 참조 프레임 인덱스 등을 포함할 수 있다.
공간적 예측은 화면 내 예측을 의미한다. 인트라 예측부(120)는 현재 프레임 내의 인코딩 후 복원된 인접 픽셀들로부터 공간적 예측을 수행하여 타겟 블록에 대한 예측 값을 생성할 수 있다. 이 경우, 처리 장치(100)는 인트라(Intra) 인코딩한다고 말한다.
인터 인코딩 또는 인트라 인코딩은 코딩 유닛(Coding Unit, CU) 단위로 결정될 수 있다. 여기서, 코딩 유닛은 적어도 하나의 예측 유닛을 포함할 수 있다. 인코딩의 예측 방법이 결정되면 스위치(115)의 위치가 인코딩의 예측 방법에 대응되도록 변경될 수 있다.
한편, 시간적 예측에서의 인코딩 후 복원된 참조 프레임은 필터링이 적용된 프레임이나, 공간적 예측에서의 인코딩 후 복원된 인접 픽셀들은 필터링이 적용되지 않은 픽셀들일 수 있다.
감산기(125)는 타겟 블록과 시간적 예측 또는 공간적 예측으로부터 얻어진 예측 블록의 차이를 구해 차분 블록(Residual block)을 생성할 수 있다. 차분 블록은 예측 과정에 의해서 중복성이 많이 제거된 블록일 수 있으나, 예측이 완벽하게 이루어지지 않아 인코딩해야 할 정보를 포함하는 블록일 수도 있다.
변환부(130)는 공간적 중복성을 제거하기 위해 화면 내 또는 화면 간 예측 이후의 차분 블록을 변환하여 주파수 영역의 변환 계수를 출력할 수 있다. 이때, 변환의 단위는 변환 유닛(Transform Unit, TU)이며, 예측 유닛과는 무관하게 결정될 수도 있다. 예를 들어, 복수의 차분 블록을 포함하는 프레임은 예측 유닛과는 무관하게 복수의 변환 유닛으로 분할되고, 변환부(130)는 각 변환 유닛 별로 변환을 수행할 수 있다. 변환 유닛의 분할은 비트율 최적화에 따라 결정될 수 있다.
다만, 이에 한정되는 것은 아니며, 변환 유닛은 코딩 유닛 및 예측 유닛 중 적어도 하나와 연관되어 결정될 수도 있다.
변환부(130)는 각 변환 유닛의 에너지를 특정 주파수 영역에 집중시키기 위해 변환을 수행할 수 있다. 예를 들어, 변환부(130)는 각 변환 유닛에 대해 DCT(Discrete Cosine Transform) 기반의 변환을 수행하여 저주파 영역으로 데이터를 집중시킬 수 있다. 또는, 변환부(130)는 DFT(Discrete Fourier Transform) 기반의 변환 또는 DST(Discrete Sine Transform) 기반의 변환을 수행할 수도 있다.
양자화부(140)는 변환 계수에 대해 양자화를 수행하며, 변환 계수를 기설정된 수의 대표 값으로 근사화할 수 있다. 즉, 양자화부(140)는 특정 범위의 입력 값을 하나의 대표 값으로 매핑할 수 있다. 이 과정에서 사람이 잘 인지하지 못하는 고주파 신호가 제거될 수 있으며, 정보의 손실이 발생할 수 있다.
양자화부(140)는 입력 데이터의 확률 분포나 양자화의 목적에 따라 균등 양자화 및 비균등 양자화 방법 중 하나를 이용할 수 있다. 예를 들어, 양자화부(140)는 입력 데이터의 확률 분포가 균등할 때에는 균등 양자화 방법을 이용할 수 있다. 또는, 양자화부(140)는 입력 데이터의 확률 분포가 균등하지 않을 때에는 비균등 양자화 방법을 이용할 수도 있다.
엔트로피 인코딩부(150)는 양자화부(140)에서 입력된 데이터에 대해 심볼(Symbol)의 발생 확률에 따라 심볼의 길이를 가변적으로 할당하여 데이터양을 축소할 수 있다. 즉, 엔트로피 인코딩부(150)는 입력된 데이터를 확률 모델을 기반으로 0과 1로 구성된 가변 길이의 비트열로 표현하여 비트 스트림을 생성할 수 있다.
예를 들어, 엔트로피 인코딩부(150)는 높은 발생 확률을 갖는 심볼에는 적은 수의 비트를 할당하고, 낮은 발생 확률을 갖는 심볼에는 많은 수의 비트를 할당하여 입력 데이터를 표현할 수 있다. 그에 따라, 입력 데이터의 비트열의 크기가 감소될 수 있고, 영상 인코딩의 압축 성능을 향상시킬 수 있다.
엔트로피 인코딩부(150)는 허프만 코딩 및 지수 골룸 코딩(Exponential-Golomb coding)과 같은 가변 길이 코딩(Variable Length Coding) 또는 산술 코딩(Arithmetic Coding) 방법에 의해 엔트로피 인코딩를 수행할 수 있다.
역양자화부(160) 및 역변환부(170)는 양자화된 변환 계수를 입력받아 각각 역양자화 후 역변환을 수행하여 복원된 차분 블록을 생성할 수 있다.
가산기(175)는 복원된 차분 블록과 시간적 예측 또는 공간적 예측으로부터 얻어진 예측 블록를 더해 복원 블록을 생성할 수 있다.
필터부(180)는 디블록킹 필터(Deblocking filter), SAO(Sample Adaptive Offset), ALF(Adaptive Loop Filter) 중 적어도 하나를 복원 영상에 적용할 수 있다. 필터링된 복원 프레임은 참조 프레임 버퍼(190)에 저장되어 참조 프레임으로서 활용될 수 있다.
도 2는 본 발명의 이해를 돕기 위한 디코딩을 수행하는 처리 장치(200)의 구성을 나타낸 블록도이다. 도 2에 도시된 바와 같이, 처리 장치(200)는 엔트로피 디코딩부(210), 역양자화부(220), 역변환부(230), 가산기(235), 인트라 예측부(240), 움직임 보상부(250), 스위치(255), 필터부(260) 및 참조 프레임 버퍼(270)를 포함한다.
디코딩을 수행하는 처리 장치(200)는 인코딩을 수행하는 처리 장치(100)에서 생성된 비트 스트림을 입력 받아 디코딩을 수행하여 비디오를 재구성할 수 있다. 처리 장치(200)는 블록 단위로 엔트로피 디코딩, 역양자화, 역변환, 필터링 등을 거쳐 디코딩을 수행할 수 있다.
엔트로피 디코딩부(210)는 입력된 비트 스트림을 엔트로피 디코딩하여 양자화된 변환 계수를 생성할 수 있다. 이때, 엔트로피 디코딩 방법은 도 1에 엔트로피 디코딩부(150)에서 이용한 방법을 역으로 적용한 방법일 수 있다.
역양자화부(220)는 양자화된 변환 계수를 입력받아 역양자화를 수행할 수 있다. 즉, 양자화부(140) 및 역양자화부(220)의 동작에 따라 특정 범위의 입력 값이 특정 범위 내의 어느 하나의 기준 입력 값으로 변경되며, 이 과정에서 입력 값과 어느 하나의 기준 입력 값의 차이만큼의 에러가 발생할 수 있다.
역변환부(230)는 역양자화부(220)로부터 출력된 데이터를 역변환하며, 변환부(130)에서 이용한 방법을 역으로 적용하여 역변환을 수행할 수 있다. 역변환부(230)는 역변환을 수행하여 복원된 차분 블록을 생성할 수 있다.
가산기(235)는 복원된 차분 블록과 예측 블록을 더해 복원 블록을 생성할 수 있다. 여기서, 예측 블록은 인터 인코딩 또는 인트라 인코딩을 통해 생성된 블록일 수 있다.
인터 디코딩하는 경우, 움직임 보상부(250)는 인코딩을 수행하는 처리 장치(100)로부터 디코딩하고자 하는 타겟 블록에 대한 움직임 정보를 수신 혹은 유도(주변 블록으로부터 derivation)하여, 수신된 혹은 유도된 움직임 정보를 바탕으로 예측 블록을 생성할 수 있다. 여기서, 움직임 보상부(250)는 참조 프레임 버퍼(270)에 저장되어 있는 참조 프레임에서 예측 블록을 생성할 수 있다. 움직임 정보는 타겟 블록과 가장 시간적 상관도가 높은 블록에 대한 움직임 벡터, 참조 프레임 인덱스 등을 포함할 수 있다.
여기서, 참조 프레임 버퍼(270)는 현재 디코딩하려는 프레임과 상관도가 높은 일부의 참조 프레임을 저장하고 있을 수 있다. 참조 프레임은 상술한 복원 블록을 필터링하여 생성된 프레임일 수 있다. 즉, 참조 프레임은 인코딩을 수행하는 처리 장치(100)에서 생성된 비트 스트림이 복원된 프레임일 수 있다. 또한, 디코딩을 수행하는 처리 장치(200)에서 이용되는 참조 프레임은 인코딩을 수행하는 처리 장치(100)에서 이용되는 참조 프레임과 동일할 수 있다.
인트라 디코딩하는 경우, 인트라 예측부(240)는 현재 프레임 내의 복원된 인접 픽셀들로부터 공간적 예측을 수행하여 타겟 블록에 대한 예측 값을 생성할 수 있다.
한편, 스위치(255)는 타겟 블록의 디코딩의 예측 방법에 따라 위치가 변경될 수 있다.
필터부(260)는 디블록킹 필터, SAO, ALF 중 적어도 하나를 복원 프레임에 적용할 수 있다. 필터링된 복원 프레임은 참조 프레임 버퍼(270)에 저장되어 참조 프레임으로서 활용될 수 있다.
한편, 처리 장치(200)는 비트 스트림에 포함되어 있는 인코딩된 프레임에 관련된 정보를 파싱하는 파싱부(미도시)를 더 포함할 수 있다. 파싱부는 엔트로피 디코딩부(210)를 포함할 수도 있고, 엔트로피 디코딩부(210)에 포함될 수도 있다.
상술한 바와 같이 인코딩을 수행하는 처리 장치(100)는 인코딩 과정을 통해 비디오의 데이터를 압축하고, 압축된 데이터를 디코딩을 수행하는 처리 장치(200)로 전송할 수 있다. 디코딩을 수행하는 처리 장치(200)는 압축된 데이터를 디코딩하여 비디오 컨텐츠를 재구성할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 인코딩을 수행하는 처리 장치(100)를 설명하기 위한 간략화된 블럭도이다.
도 3에 도시된 바와 같이, 처리 장치(100)는 메모리(310) 및 프로세서(320)를 포함한다.
메모리(310)는 프로세서(320)와는 별도로 구비되며, 하드디스크, 비휘발성 메모리 및 휘발성 메모리 등으로 구현될 수 있다. 다만 경우에 따라 메로리(310)는 프로세서(320) 내부의 메모리로 구현되는 것도 가능하다.
메모리(310)는 비디오 컨텐츠, 참조 프레임 등을 저장할 수 있다. 여기서, 참조 프레임은 프로세서(320)에 의해 인코딩된 프레임의 복원 프레임일 수 있다.
한편, 메모리(310)는 비디오 컨텐츠 전체를 저장할 수도 있지만, 외부 서버 등으로부터 스트리밍되는 비디오 컨텐츠의 일부를 실시간으로 저장할 수도 있다. 이 경우, 메모리(310)는 비디오 컨텐츠 중 실시간으로 수신되는 일부만을 저장하고, 인코딩이 완료된 비디오 컨텐츠의 데이터는 삭제할 수 있다.
프로세서(320)는 처리 장치(100)의 동작을 전반적으로 제어한다.
프로세서(320)는 비디오 컨텐츠를 구성하는 프레임을 복수의 코딩 유닛으로 구분하고, 복수의 코딩 유닛 각각에 대한 인코딩을 수행하여 인코딩된 프레임을 생성할 수 있다.
여기서, 복수의 코딩 유닛은 LCU(Largest Coding Unit)일 수 있다. 다만, 이에 한정되는 것은 아니며, 프로세서(320)는 얼마든지 다른 크기의 복수의 코딩 유닛으로 프레임을 구분할 수도 있다. 또한, 복수의 코딩 유닛의 크기는 모두 다를 수도 있다.
프로세서(320)는 복수의 코딩 유닛 각각에 대한 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보를 인코딩된 프레임에 추가할 수 있다.
구체적으로, 프로세서(320)는 현재 코딩 유닛에 대한 시간적 예측 및 공간적 예측을 수행할 수 있다. 그리고, 프로세서(320)는 시간적 예측에 의한 오차 및 공간적 예측에 의한 오차에 기초하여 현재 코딩 유닛을 인트라 인코딩할지 또는 인터 인코딩할지를 결정할 수 있다.
프로세서(320)는 현재 코딩 유닛의 인코딩 방법과 무관하게 현재 코딩 유닛의 움직임 벡터를 포함하는 부가 정보를 별도로 생성할 수 있다. 예를 들어, 프로세서(320)는 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 부가 정보를 포함시킬 수 있다. 여기서, 헤더는 SEI(Supplemental Enhancement Information) 헤더일 수 있다.
또는, 프로세서(320)는 헤더가 아닌 별도의 저장 영역에 부가 정보를 포함시킬 수 있다. 예를 들어, 프로세서(320)는 헤더 및 데이터 영역이 아닌 별도의 추가 영역을 생성하여 부가 정보를 저장할 수 있다. 이 경우, 후술할 디코딩을 수행하는 처리 장치(200) 역시 부가 정보가 저장된 위치에 대한 정보를 저장할 수 있다.
프로세서(320)는 현재 코딩 유닛을 인트라 인코딩하더라도 현재 코딩 유닛의 움직임 벡터를 포함하는 부가 정보를 별도로 생성할 수 있다. 종래에 현재 코딩 유닛이 인트라 인코딩되면, 현재 코딩 유닛의 움직임 벡터는 별도로 저장되지 않고 삭제된다.
프로세서(320)는 현재 코딩 유닛을 인터 인코딩하는 경우 인터 인코딩된 현재 코딩 유닛 및 움직임 벡터를 데이터 영역에 저장하고, 현재 코딩 유닛의 움직임 벡터를 포함하는 부가 정보를 별도로 생성할 수 있다. 즉, 프로세서(320)는 현재 코딩 유닛이 인터 인코딩하는 경우 현재 코딩 유닛의 움직임 벡터를 두 번 저장할 수 있다.
프로세서(320)는 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함하는 부가 정보를 별도로 생성할 수 있다. 프로세서(320)는 프레임 단위로 부가 정보를 생성할 수도 있으나, 이에 한정되는 것은 아니다. 예를 들어, 프로세서(320)는 슬라이스를 기준으로 부가 정보를 생성할 수도 있다. 이 경우, 프로세서(320)는 슬라이스 내에 포함된 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함하는 부가 정보를 별도로 생성하고, 생성된 부가 정보를 슬라이스의 헤더에 포함시킬 수 있다.
또는, 프로세서(320)는 복수의 프레임 단위로 부가 정보를 생성할 수도 있다. 프로세서(320)가 하나의 부가 정보에 포함되는 복수의 코딩 유닛에 대한 움직임 벡터의 개수에는 그 제한이 없다. 다만, 프로세서(320)는 인코딩된 컨텐츠를 실시간 전송하는 경우, 통신 상태에 기초하여 부가 정보를 생성할 수 있다.
프로세서(320)는 현재 코딩 유닛을 포함하는 현재 프레임 및 현재 프레임을 기준으로 기설정된 개수의 인접 프레임에서 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하고, 현재 프레임 및 인접 프레임 중 탐색된 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 부가 정보에 추가할 수 있다.
예를 들어, 프로세서(320)는 현재 코딩 유닛에 대한 시간적 예측 시 현재 코딩 유닛을 포함하는 현재 프레임 뿐만 아니라 인접 프레임에서도 움직임 벡터를 탐색할 수 있다. 이 경우, 움직임 벡터 만으로는 현재 코딩 유닛과 가장 유사하다고 탐색된 픽셀 영역을 표시할 수 없다. 그에 따라, 프로세서(320)는 탐색된 움직임 벡터에 대응되는 픽셀 영역을 포함하는 프레임의 식별 정보 및 움직임 벡터를 포함하는 부가 정보를 생성할 수 있다.
프로세서(320)는 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하고, 탐색된 움직임 벡터에 대응되는 픽셀 영역과 현재 코딩 유닛 간 대응되는 위치의 픽셀 값이 기설정된 조건을 만족하면, 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 부가 정보에 추가할 수 있다.
예를 들어, 프레임 내의 특정 영역에서 사람의 모션 등과 같은 이유로 Occlusion이 발생하여 특정 코딩 유닛의 픽셀 데이터가 일시적으로 전혀 달라질 수 있다. 특히, 현재 코딩 유닛의 시간적 예측 프레임 및 영역에 제한이 있는 경우, 현재 코딩 유닛과 픽셀 데이터 값의 차이가 큰 영역이 탐색될 수 있다. 후술할 디코딩을 수행하는 처리 장치(200)는 에러가 발생하는 경우 현재 코딩 유닛을 부가 정보에 포함되어 있는 움직임 벡터에 대응되는 픽셀 영역으로 대체하기 때문에, 현재 코딩 유닛과 움직임 벡터에 대응되는 픽셀 영역 간 픽셀 데이터 값의 차이가 큰 경우 시청자는 이질감을 느낄 수 있다. 따라서, 이 경우에는 탐색된 픽셀 영역보다는 차라리 현재 코딩 유닛의 주변 픽셀 영역을 이용하는 것이 이질감을 줄이는 방법일 수 있다. 그에 따라, 프로세서(320)는 탐색된 움직임 벡터에 대응되는 픽셀 영역과 현재 코딩 유닛 간 대응되는 위치의 픽셀 값을 모두 더하여 기설정된 값보다 크면, 현재 코딩 유닛의 움직임 벡터 대신 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 부가 정보에 추가할 수도 있다.
한편, 프로세서(320)는 하나의 프레임 내에서 적어도 두 개의 코딩 유닛에 대한 움직임 벡터가 동일한 경우, 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 부가 정보에 추가할 수 있다. 즉, 프로세서(320)는 이상과 같은 동작을 통해 부가 정보의 크기를 압축할 수 있다.
프로세서(320)는 하나의 프레임 내에서 기설정된 범위의 영역 내의 적어도 두 개의 코딩 유닛에 대한 움직임 벡터가 동일한 경우, 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 부가 정보에 추가할 수 있다. 예를 들어, 프로세서(320)는 연속된 적어도 두 개의 코딩 유닛에 대한 움직임 벡터가 동일한 경우, 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 부가 정보에 추가할 수 있다. 이 경우, 프로세서(320)는 움직임 벡터가 동일한 코딩 유닛 중 첫 번째부터 마지막까지의 코딩 유닛에 대한 정보만을 부가 정보에 추가하기 때문에 압축 효율을 향상시킬 수 있다.
프로세서(320)는 하나의 프레임 내에서 적어도 두 개의 코딩 유닛에 대한 움직임 벡터 및 움직임 벡터에 대응되는 픽셀 영역을 포함하는 프레임이 동일한 경우, 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터 및 움직임 벡터에 대응되는 픽셀 영역을 포함하는 프레임의 식별 정보를 부가 정보에 추가할 수도 있다.
한편, 프로세서(320)는 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성이 검출되면, 검출된 규칙성에 대응되는 정보를 부가 정보에 추가할 수 있다. 예를 들어, 프로세서(320)는 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성이 검출되면, 검출된 규칙성에 대응되는 테이블 또는 수식에 대한 정보를 부가 정보에 추가할 수 있다. 즉, 프로세서(320)는 이상과 같은 동작을 통해 부가 정보의 크기를 압축할 수 있다.
다만, 이에 한정되는 것은 아니며, 프로세서(320)는 복수의 코딩 유닛 전부가 아닌 복수의 코딩 유닛 일부에 대한 움직임 벡터 간의 규칙성을 검출할 수도 있다.
한편, 도 3에는 도시하지 않았으나, 처리 장치(100)는 인터페이스(미도시)를 더 포함하며, 인터페이스를 통해 후술할 디코딩을 수행하는 처리 장치(200)와 통신을 수행할 수 있다. 프로세서(320)는 인터페이스를 통해 디코딩을 수행하는 처리 장치(200)로 인코딩된 비트 스트림, 움직임 벡터 및 부가 정보 등을 전송할 수 있다.
인터페이스는 유/무선 LAN, WAN, 이더넷, 블루투스(Bluetooth), 지그비(Zigbee), IEEE 1394, 와이파이(Wifi) 또는 PLC(Power Line Communication) 등을 이용하여, 디코딩을 수행하는 처리 장치(200)와 통신을 수행할 수 있다.
도 4는 본 발명의 일 실시 예에 따른 부가 정보를 생성하는 방법을 설명하기 위한 도면이다.
도 4의 상단에 도시된 바와 같이, 프로세서(320)는 비디오 컨텐츠를 구성하는 프레임을 복수의 코딩 유닛으로 구분할 수 있다. 예를 들어, 프로세서(320)는 프레임을 12개의 코딩 유닛으로 구분할 수 있다. 다만, 이는 일 실시 예에 불과하고, 프로세서(320)는 프레임 별로 복수의 코딩 유닛의 개수를 다르게 구분할 수 있다.
프로세서(320)는 복수의 코딩 유닛 각각에 대한 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보를 인코딩된 프레임에 추가할 수 있다. 예를 들어, 도 4의 하단에 도시된 바와 같이, 프로세서(320)는 부가 정보를 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함시킬 수 있다. 여기서, 헤더의 리저브드 영역에 포함된 부가 정보는 복수의 코딩 유닛 전부에 대한 움직임 벡터(MV1 ~ MV12)를 포함할 수 있다.
한편, 프로세서(320)는 복수의 코딩 유닛 중 기설정된 크기 이상의 코딩 유닛에 대한 움직임 벡터 만을 부가 정보에 포함시킬 수도 있다. 예를 들어, 프로세서(320)는 복수의 코딩 유닛 중 기설정된 크기보다 큰 첫 번째 코딩 유닛과 마지막 코딩 유닛의 움직임 벡터인 MV1 및 MV12만을 부가 정보에 포함시킬 수도 있다.
즉, 프로세서(320)는 시청자의 눈으로 식별하기 어려운 작은 크기의 코딩 유닛의 움직임 벡터는 추가로 저장하지 않고, 시청자의 눈으로 식별 가능한 크기의 코딩 유닛의 움직임 벡터만을 추가로 저장할 수 있다. 디코딩을 수행하는 처리 장치(200)는 작은 크기의 코딩 유닛의 디코딩이 불가능한 경우 종래 기술에 따라 디코딩이 불가능한 코딩 유닛을 복원할 수 있다. 이 경우, 시청자는 디코딩이 불가능한 코딩 유닛의 크기가 매우 작기 때문에 이질감을 느끼지 않을 수도 있다. 반면, 디코딩을 수행하는 처리 장치(200)는 기설정된 크기 이상의 코딩 유닛의 디코딩이 불가능한 경우 부가 정보에 저장된 움직임 벡터를 이용하여 디코딩이 불가능한 코딩 유닛을 복원할 수 있다. 이 경우, 종래 기술보다 복원 성능이 개선되어 시청자가 느끼는 이질감을 최소화할 수 있다.
프로세서(320)는 복수의 코딩 유닛 중 기설정된 크기 이상의 코딩 유닛에 대한 움직임 벡터에 대한 비트열을 순차적으로 헤더에 포함시킬 수 있다. 상술한 예에 추가하여, 프로세서(320)는 MV1 및 MV12의 비트열을 별도의 코딩 유닛에 대한 식별자 없이 헤더에 포함시킬 수 있다. 이 경우, 디코딩을 수행하는 처리 장치(200)는 헤더에 저장되어 있는 복수의 코딩 유닛의 크기 정보에 기초하여 비트열내의 첫 번째 움직임 벡터가 MV1이고, 두 번째 움직임 벡터가 MV12임을 결정할 수 있다.
도 5는 본 발명의 다른 실시 예에 따른 부가 정보를 생성하는 방법을 설명하기 위한 도면이다.
프로세서(320)는 현재 코딩 유닛을 포함하는 현재 프레임 및 현재 프레임을 기준으로 기설정된 개수의 인접 프레임에서 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하고, 현재 프레임 및 인접 프레임 중 탐색된 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 부가 정보에 추가할 수 있다.
시간적 예측 시 탐색 대상이 되는 프레임이 많을수록 탐색의 정확도가 올라단다. 그에 따라, 프로세서(320)는 현재 코딩 유닛이 포함된 프레임의 이전 프레임만을 탐색 대상으로 하지 않고, 그 이전 프레임 또는 현재 코딩 유닛이 포함된 프레임의 이후 프레임을 탐색 대상으로 포함시킬 수 있다. 이 경우, 탐색된 픽셀 영역에 대한 움직임 벡터만을 저장하는 경우 에러가 발생할 수 있으며, 프로세서(320)는 탐색된 픽셀 영역을 포함하는 프레임에 대한 식별 정보를 추가적으로 부가 정보에 포함시킬 수 있다.
프로세서(320)는 제1 코딩 유닛에 대한 제1 움직임 벡터, 제1 움직임 벡터에 대응되는 픽셀 영역을 포함하는 프레임, 제2 움직임 벡터, 제2 움직임 벡터에 대응되는 픽셀 영역을 포함하는 프레임, ..., 제n 움직임 벡터, 제n 움직임 벡터에 대응되는 픽셀 영역을 포함하는 프레임을 순차적으로 부가 정보에 포함시킬 수 있다. 다만, 이에 한정되는 것은 아니며, 프로세서(320)는 얼마든지 다른 순서로 부가 정보를 생성할 수도 있다.
도 6a 및 도 6b는 본 발명의 일 실시 예에 따른 Occlusion이 발생한 경우를 설명하기 위한 도면들이다. 상술한 바와 같이, Occlusion이 발생한 경우에는 탐색된 픽셀 영역보다는 현재 코딩 유닛의 주변 픽셀 영역을 이용하는 것이 효율적일 수 있다.
프로세서(320)는 도 6a에 도시된 바와 같이, 현재 코딩 유닛(T)과 현재 코딩 유닛(T)에 대응되는 탐색된 픽셀 영역(A)를 비교할 수 있다. 그리고, 프로세서(320)는 현재 코딩 유닛(T)과 탐색된 픽셀 영역(A) 간 대응되는 위치의 픽셀 값의 차이를 계산할 수 있다. 예를 들어, 프로세서(320)는 좌측 상단 픽셀의 픽셀 값의 차이 A1-T1을 계산하고, 나머지 픽셀의 픽셀 값의 차이를 계산할 수 있다.
프로세서(320)는 4개 픽셀 영역의 픽셀 값의 차이를 모두 더하고, 합계가 기설정된 값보다 크면 현재 코딩 유닛(T)과 탐색된 픽셀 영역(A)의 차이가 크다고 판단할 수 있다. 이 경우, 프로세서(320)는 도 6b에 도시된 바와 같이, 현재 코딩 유닛(T)의 인접 코딩 유닛(620~690)의 움직임 벡터를 이용하도록 하는 정보를 부가 정보에 추가할 수 있다.
또한, 프로세서(320)는 탐색된 움직임 벡터에 대응되는 픽셀 영역(A)과 현재 코딩 유닛(T) 간 대응되는 위치의 픽셀 값이 기설정된 조건을 만족하면, 현재 코딩 유닛(T)과 현재 코딩 유닛(T)의 인접 코딩 유닛(620~690) 각각을 비교할 수 있다. 비교 방법은 현재 코딩 유닛(T)과 탐색된 픽셀 영역(A)을 비교하는 방법과 동일할 수 있다.
예를 들어, 프로세서(320)는 현재 코딩 유닛(T)과 인접 코딩 유닛(620) 간 대응되는 위치의 픽셀 값의 차이를 산출하고, 산출된 차이를 모두 더한 합계를 산출할 수 있다. 그리고, 프로세서(320)는 나머지 인접 코딩 유닛(630~690)에 대하여도 동일한 계산을 반복할 수 있다. 최종적으로, 프로세서(320)는 8개의 합계를 산출할 수 있고, 8개의 합계 중 가장 작은 합계에 대응되는 인접 코딩 유닛을 결정할 수 있다. 그리고, 프로세서(320)는 현재 코딩 유닛(T)의 움직임 벡터 대신 복수의 인접 코딩 유닛(620~690) 중 결정된 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 부가 정보에 추가할 수 있다.
도 7은 본 발명의 일 실시 예에 따른 부가 정보의 데이터양을 축소하기 위한 방법을 설명하기 위한 도면이다.
프로세서(320)는 하나의 프레임 내에서 적어도 두 개의 코딩 유닛에 대한 움직임 벡터가 동일한 경우, 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 부가 정보에 추가할 수 있다.
예를 들어, 프로세서(320)는 도 7에 도시된 바와 같이, 10개의 코딩 유닛 중 움직임 벡터가 MV4로 동일한 3개의 코딩 유닛에 대한 위치 정보 및 MV4를 부가 정보에 추가할 수 있다.
프로세서(320)는 연속된 적어도 두 개의 코딩 유닛에 대한 움직임 벡터가 동일한 경우, 연속된 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 연속된 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 부가 정보에 추가할 수도 있다.
또한, 프로세서(320)는 하나의 프레임이 아닌 복수의 프레임 내에서도 적어도 두 개의 코딩 유닛에 대한 움직임 벡터가 동일한 경우, 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 부가 정보에 추가할 수도 있다.
한편, 프로세서(320)는 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성이 검출되면, 검출된 규칙성에 대응되는 정보를 부가 정보에 추가할 수 있다.
예를 들어, 프로세서(320)는 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 선형성이 검출되면, 선형성을 나타내는 수식을 부가 정보에 추가하고, 추가된 수식이 적용되는 코딩 유닛에 대한 정보를 부가 정보에 추가할 수 있다.
다만, 이에 한정되는 것은 아니며, 프로세서(320)는 테이블을 생성하여 부가 정보에 추가할 수도 있다.
프로세서(320)는 이상과 같은 과정을 모든 프레임을 구성하는 복수의 코딩 유닛에 대하여 반복하여 부가 정보를 생성할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 디코딩을 수행하는 처리 장치(200)를 설명하기 위한 간략화된 블럭도이다.
도 8에 도시된 바와 같이, 처리 장치(200)는 메모리(810) 및 프로세서(820)를 포함한다.
메모리(810)는 프로세서(820)와는 별도로 구비되며, 하드디스크, 비휘발성 메모리 및 휘발성 메모리 등으로 구현될 수 있다.
메모리(810)는 인코딩된 비디오 컨텐츠, 참조 프레임 등을 저장할 수 있다. 여기서, 참조 프레임은 프로세서(820)에 의해 인코딩된 프레임의 복원 프레임일 수 있다.
한편, 메모리(810)는 인코딩된 비디오 컨텐츠 전체를 저장할 수도 있지만, 인코딩을 수행하는 처리 장치(100) 등으로부터 스트리밍되는 인코딩된 비디오 컨텐츠의 일부를 실시간으로 저장할 수도 있다. 이 경우, 메모리(810)는 인코딩된 비디오 컨텐츠 중 실시간으로 수신되는 일부만을 저장하고, 디스플레이된 비디오 컨텐츠의 데이터는 삭제할 수 있다.
프로세서(820)는 처리 장치(100)의 동작을 전반적으로 제어한다.
프로세서(820)는 인코딩된 비디오 컨텐츠를 구성하는 인코딩된 프레임에 대해 코딩 유닛 단위로 디코딩을 수행하여 디코딩된 프레임을 생성할 수 있다. 여기서, 인코딩된 비디오 컨텐츠는 인코딩된 프레임을 구성하는 복수의 코딩 유닛 각각에 대한 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보가 인코딩된 프레임 별로 추가된 컨텐츠일 수 있다.
프로세서(820)는 현재 코딩 유닛의 디코딩이 불가능한 경우 부가 정보에서 현재 코딩 유닛에 대한 움직임 벡터를 획득하고, 현재 코딩 유닛을 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
예를 들어, 프로세서(820)는 통신이 일시적으로 단절되어 특정 데이터를 수신하지 못했거나 특정 데이터가 훼손된 경우와 같이 현재 코딩 유닛의 디코딩 과정에서 디코딩이 불가능한 경우에 부가 정보에서 현재 코딩 유닛에 대한 움직임 벡터를 획득하고, 현재 코딩 유닛을 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
여기서, 부가 정보는 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함할 수 있다. 다만, 이에 한정되는 것은 아니며, 부가 정보는 복수의 코딩 유닛 일부에 대한 움직임 벡터를 포함할 수 있다. 또는, 부가 정보는 복수의 코딩 유닛 전부에 대한 움직임 벡터에 대한 정보를 변형한 상태로 포함할 수도 있다.
그리고, 부가 정보는 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함될 수 있다. 다만, 이에 한정되는 것은 아니며, 부가 정보는 데이터 영역과는 별도로 포함되어 있다면 어디든 무방하다. 즉, 부가 정보에 포함된 움직임 벡터는 인터 인코딩 과정에서 저장되는 움직임 벡터와는 별도로 저장될 수 있다. 또한, 움직임 벡터는 인트라 인코딩된 코딩 유닛에 대하여도 별도로 저장될 수 있다.
부가 정보는 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 포함할 수 있고, 프로세서(820)는 현재 코딩 유닛의 디코딩이 불가능한 경우 부가 정보에서 현재 코딩 유닛에 대한 움직임 벡터 및 식별 정보를 획득하고, 현재 코딩 유닛을 획득된 식별 정보에 대응되는 프레임에서 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
또한, 부가 정보는 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 포함하고, 프로세서(820)는 현재 코딩 유닛의 디코딩이 불가능한 경우 부가 정보에서 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 획득하고, 획득된 정보에 기초하여 현재 코딩 유닛을 인접 코딩 유닛의 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
한편, 부가 정보는 움직임 벡터가 동일한 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 포함하고, 프로세서(820)는 현재 코딩 유닛의 디코딩이 불가능한 경우, 위치 정보에 기초하여 현재 코딩 유닛을 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
그리고, 부가 정보는 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성에 대응되는 정보를 포함하고, 프로세서(820)는 현재 코딩 유닛의 디코딩이 불가능한 경우, 규칙성에 대응되는 정보에 기초하여 현재 코딩 유닛에 대응되는 움직임 벡터를 획득하고, 현재 코딩 유닛을 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
한편, 도 9에는 도시하지 않았으나, 처리 장치(200)는 인터페이스(미도시)를 더 포함하며, 인터페이스를 통해 인코딩을 수행하는 처리 장치(100)와 통신을 수행할 수 있다. 프로세서(820)는 인터페이스를 통해 인코딩을 수행하는 처리 장치(100)로부터 인코딩된 비트 스트림, 움직임 벡터 및 부가 정보 등을 수신할 수 있다.
인터페이스는 유/무선 LAN, WAN, 이더넷, 블루투스(Bluetooth), 지그비(Zigbee), IEEE 1394, 와이파이(Wifi) 또는 PLC(Power Line Communication) 등을 이용하여, 인코딩을 수행하는 처리 장치(100)와 통신을 수행할 수 있다.
도 9는 본 발명의 일 실시 예에 따른 인코딩을 수행하는 처리 장치의 제어 방법을 설명하기 위한 흐름도이다. 여기서, 처리 장치는 메모리 및 프로세서를 포함할 수 있다.
먼저, 비디오 컨텐츠를 구성하는 프레임을 복수의 코딩 유닛으로 구분한다(S910). 그리고, 복수의 코딩 유닛 각각에 대한 인코딩을 수행하여 인코딩된 프레임을 생성한다(S920).
인코딩된 프레임을 생성하는 단계(S920)는 복수의 코딩 유닛 각각에 대한 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보를 인코딩된 프레임에 추가할 수 있다.
여기서, 부가 정보는 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함할 수 있다. 또한, 부가 정보는 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함될 수 있다.
한편, 인코딩된 프레임을 생성하는 단계(S920)는 현재 코딩 유닛을 포함하는 현재 프레임 및 현재 프레임을 기준으로 기설정된 개수의 인접 프레임에서 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하는 단계 및 현재 프레임 및 인접 프레임 중 탐색된 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 부가 정보에 추가하는 단계를 포함할 수 있다.
또는, 인코딩된 프레임을 생성하는 단계(S920)는 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하는 단계 및 탐색된 움직임 벡터에 대응되는 픽셀 영역과 현재 코딩 유닛 간 대응되는 위치의 픽셀 값이 기설정된 조건을 만족하면, 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 부가 정보에 추가하는 단계를 포함할 수 있다.
또는, 인코딩된 프레임을 생성하는 단계(S920)는 하나의 프레임 내에서 적어도 두 개의 코딩 유닛에 대한 움직임 벡터가 동일한 경우, 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 부가 정보에 추가할 수 있다.
또는, 인코딩된 프레임을 생성하는 단계(S920)는 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성이 검출되면, 검출된 규칙성에 대응되는 정보를 부가 정보에 추가할 수 있다.
도 10은 본 발명의 일 실시 예에 따른 디코딩을 수행하는 처리 장치의 제어 방법을 설명하기 위한 흐름도이다. 여기서, 처리 장치는 메모리 및 프로세서를 포함할 수 있다.
먼저, 인코딩된 비디오 컨텐츠를 구성하는 인코딩된 프레임에 대해 코딩 유닛 단위로 디코딩을 수행한다(S1010). 그리고, 디코딩이 수행된 복수의 코딩 유닛을 기설정된 방향으로 배치하여 디코딩된 프레임을 생성한다(S1020). 여기서, 인코딩된 비디오 컨텐츠는 인코딩된 프레임을 구성하는 복수의 코딩 유닛 각각에 대한 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보가 인코딩된 프레임 별로 추가된 것일 수 있다.
디코딩을 수행하는 단계(S1010)는 현재 코딩 유닛의 디코딩이 불가능한 경우 부가 정보에서 현재 코딩 유닛에 대한 움직임 벡터를 획득하고, 현재 코딩 유닛을 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
여기서, 부가 정보는 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함할 수 있다. 또한, 부가 정보는 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함될 수 있다.
한편, 부가 정보는 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 포함하고, 디코딩을 수행하는 단계(S1010)는 현재 코딩 유닛의 디코딩이 불가능한 경우 부가 정보에서 현재 코딩 유닛에 대한 움직임 벡터 및 식별 정보를 획득하고, 현재 코딩 유닛을 획득된 식별 정보에 대응되는 프레임에서 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
또는, 부가 정보는 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 포함하고, 디코딩을 수행하는 단계(S1010)는 현재 코딩 유닛의 디코딩이 불가능한 경우 부가 정보에서 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 획득하고, 획득된 정보에 기초하여 현재 코딩 유닛을 인접 코딩 유닛의 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
또는, 부가 정보는 움직임 벡터가 동일한 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 포함하고, 디코딩을 수행하는 단계(S1010)는 현재 코딩 유닛의 디코딩이 불가능한 경우, 위치 정보에 기초하여 현재 코딩 유닛을 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
또는, 부가 정보는 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성에 대응되는 정보를 포함하고, 디코딩을 수행하는 단계(S1010)는 현재 코딩 유닛의 디코딩이 불가능한 경우, 규칙성에 대응되는 정보에 기초하여 현재 코딩 유닛에 대응되는 움직임 벡터를 획득하고, 현재 코딩 유닛을 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행할 수 있다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 처리 장치들은 프레임을 구성하는 복수의 코딩 유닛 각각에 대한 움직임 벡터를 인코딩된 프레임에 추가하고, 에러 발생 시 이를 이용하여 복원 효율을 향상시킬 수 있다.
한편, 이러한 다양한 실시 예에 따른 방법들은 프로그래밍되어 각종 저장 매체에 저장될 수 있다. 이에 따라, 저장 매체를 실행하는 다양한 유형의 전자 장치에서 상술한 다양한 실시 예에 따른 방법들이 구현될 수 있다.
구체적으로는, 상술한 제어 방법을 순차적으로 수행하는 프로그램이 저장된 비일시적 판독 가능 매체(non-transitory computer readable medium)가 제공될 수 있다.
비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 어플리케이션 또는 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100 : 처리 장치 310 : 메모리
320 : 프로세서 200 : 처리 장치
810 : 메모리 820 : 프로세서

Claims (20)

  1. 비디오 컨텐츠가 저장된 메모리; 및
    상기 비디오 컨텐츠를 구성하는 프레임을 복수의 코딩 유닛으로 구분하고, 상기 복수의 코딩 유닛 각각에 대한 인코딩을 수행하여 인코딩된 프레임을 생성하는 프로세서;를 포함하며,
    상기 프로세서는,
    상기 복수의 코딩 유닛 각각에 대한 상기 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보를 상기 인코딩된 프레임에 추가하는, 처리 장치.
  2. 제1항에 있어서,
    상기 부가 정보는,
    상기 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함하는, 처리 장치.
  3. 제1항에 있어서,
    상기 부가 정보는,
    상기 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함되는, 처리 장치.
  4. 제1항에 있어서,
    상기 프로세서는,
    현재 코딩 유닛을 포함하는 현재 프레임 및 상기 현재 프레임을 기준으로 기설정된 개수의 인접 프레임에서 상기 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하고,
    상기 현재 프레임 및 상기 인접 프레임 중 상기 탐색된 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 상기 부가 정보에 추가하는, 처리 장치.
  5. 제1항에 있어서,
    상기 프로세서는,
    현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하고, 상기 탐색된 움직임 벡터에 대응되는 픽셀 영역과 상기 현재 코딩 유닛 간 대응되는 위치의 픽셀 값이 기설정된 조건을 만족하면, 상기 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 상기 부가 정보에 추가하는, 처리 장치.
  6. 제1항에 있어서,
    상기 프로세서는,
    하나의 프레임 내에서 적어도 두 개의 코딩 유닛에 대한 움직임 벡터가 동일한 경우, 상기 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 상기 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 상기 부가 정보에 추가하는, 처리 장치.
  7. 제1항에 있어서,
    상기 프로세서는,
    상기 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성이 검출되면, 상기 검출된 규칙성에 대응되는 정보를 상기 부가 정보에 추가하는, 처리 장치.
  8. 인코딩된 비디오 컨텐츠가 저장된 메모리; 및
    상기 인코딩된 비디오 컨텐츠를 구성하는 인코딩된 프레임에 대해 코딩 유닛 단위로 디코딩을 수행하여 디코딩된 프레임을 생성하는 프로세서;를 포함하며,
    상기 인코딩된 비디오 컨텐츠는,
    상기 인코딩된 프레임을 구성하는 복수의 코딩 유닛 각각에 대한 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보가 상기 인코딩된 프레임 별로 추가된 것이며,
    상기 프로세서는,
    현재 코딩 유닛의 디코딩이 불가능한 경우 상기 부가 정보에서 상기 현재 코딩 유닛에 대한 움직임 벡터를 획득하고, 상기 현재 코딩 유닛을 상기 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행하는, 처리 장치.
  9. 제8항에 있어서,
    상기 부가 정보는,
    상기 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함하는, 처리 장치.
  10. 제8항에 있어서,
    상기 부가 정보는,
    상기 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함되는, 처리 장치.
  11. 제8항에 있어서,
    상기 부가 정보는,
    상기 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 포함하고,
    상기 프로세서는,
    상기 현재 코딩 유닛의 디코딩이 불가능한 경우 상기 부가 정보에서 상기 현재 코딩 유닛에 대한 움직임 벡터 및 식별 정보를 획득하고, 상기 현재 코딩 유닛을 상기 획득된 식별 정보에 대응되는 프레임에서 상기 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행하는, 처리 장치.
  12. 제8항에 있어서,
    상기 부가 정보는,
    상기 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 포함하고,
    상기 프로세서는,
    상기 현재 코딩 유닛의 디코딩이 불가능한 경우 상기 부가 정보에서 상기 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 획득하고, 상기 획득된 정보에 기초하여 상기 현재 코딩 유닛을 상기 인접 코딩 유닛의 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행하는, 처리 장치.
  13. 제8항에 있어서,
    상기 부가 정보는,
    움직임 벡터가 동일한 적어도 두 개의 코딩 유닛에 대한 위치 정보 및 상기 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터를 포함하고,
    상기 프로세서는,
    상기 현재 코딩 유닛의 디코딩이 불가능한 경우, 상기 위치 정보에 기초하여 상기 현재 코딩 유닛을 상기 적어도 두 개의 코딩 유닛 중 하나의 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행하는, 처리 장치.
  14. 제8항에 있어서,
    상기 부가 정보는,
    상기 복수의 코딩 유닛 전부에 대한 움직임 벡터 간의 규칙성에 대응되는 정보를 포함하고,
    상기 프로세서는,
    상기 현재 코딩 유닛의 디코딩이 불가능한 경우, 상기 규칙성에 대응되는 정보에 기초하여 상기 현재 코딩 유닛에 대응되는 움직임 벡터를 획득하고, 상기 현재 코딩 유닛을 상기 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행하는, 처리 장치.
  15. 처리 장치의 제어 방법에 있어서,
    비디오 컨텐츠를 구성하는 프레임을 복수의 코딩 유닛으로 구분하는 단계; 및
    상기 복수의 코딩 유닛 각각에 대한 인코딩을 수행하여 인코딩된 프레임을 생성하는 단계;를 포함하며,
    상기 인코딩된 프레임을 생성하는 단계는,
    상기 복수의 코딩 유닛 각각에 대한 상기 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보를 상기 인코딩된 프레임에 추가하는, 제어 방법.
  16. 제15항에 있어서,
    상기 부가 정보는,
    상기 복수의 코딩 유닛 전부에 대한 움직임 벡터를 포함하는, 제어 방법.
  17. 제15항에 있어서,
    상기 부가 정보는,
    상기 인코딩된 프레임에 대응되는 헤더의 리저브드(reserved) 영역에 포함되는, 제어 방법.
  18. 제15항에 있어서,
    상기 인코딩된 프레임을 생성하는 단계는,
    현재 코딩 유닛을 포함하는 현재 프레임 및 상기 현재 프레임을 기준으로 기설정된 개수의 인접 프레임에서 상기 현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하는 단계; 및
    상기 현재 프레임 및 상기 인접 프레임 중 상기 탐색된 움직임 벡터에 대응되는 픽셀 영역을 포함하는 적어도 하나의 프레임의 식별 정보를 상기 부가 정보에 추가하는 단계;를 포함하는, 제어 방법.
  19. 제15항에 있어서,
    상기 인코딩된 프레임을 생성하는 단계는,
    현재 코딩 유닛에 대응되는 움직임 벡터를 탐색하는 단계; 및
    상기 탐색된 움직임 벡터에 대응되는 픽셀 영역과 상기 현재 코딩 유닛 간 대응되는 위치의 픽셀 값이 기설정된 조건을 만족하면, 상기 현재 코딩 유닛의 인접 코딩 유닛의 움직임 벡터를 이용하도록 하는 정보를 상기 부가 정보에 추가하는 단계;를 포함하는, 제어 방법.
  20. 처리 장치의 제어 방법에 있어서,
    인코딩된 비디오 컨텐츠를 구성하는 인코딩된 프레임에 대해 코딩 유닛 단위로 디코딩을 수행하는 단계; 및
    상기 디코딩이 수행된 복수의 코딩 유닛을 기설정된 방향으로 배치하여 디코딩된 프레임을 생성하는 단계;를 포함하고,
    상기 인코딩된 비디오 컨텐츠는,
    상기 인코딩된 프레임을 구성하는 복수의 코딩 유닛 각각에 대한 인코딩 과정에서 획득되는 움직임 벡터를 포함하는 부가 정보가 상기 인코딩된 프레임 별로 추가된 것이며,
    상기 디코딩을 수행하는 단계는,
    현재 코딩 유닛의 디코딩이 불가능한 경우 상기 부가 정보에서 상기 현재 코딩 유닛에 대한 움직임 벡터를 획득하고, 상기 현재 코딩 유닛을 상기 획득된 움직임 벡터에 대응되는 픽셀 영역으로 대체하여 디코딩을 수행하는, 제어 방법.
KR1020170067744A 2017-05-31 2017-05-31 처리 장치들 및 그 제어 방법들 KR102379196B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170067744A KR102379196B1 (ko) 2017-05-31 2017-05-31 처리 장치들 및 그 제어 방법들
US16/495,469 US20200099950A1 (en) 2017-05-31 2018-02-20 Processing devices and control methods therefor
CN201880030707.3A CN110612725B (zh) 2017-05-31 2018-02-20 处理设备及其控制方法
PCT/KR2018/002048 WO2018221838A1 (ko) 2017-05-31 2018-02-20 처리 장치들 및 그 제어 방법들

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170067744A KR102379196B1 (ko) 2017-05-31 2017-05-31 처리 장치들 및 그 제어 방법들

Publications (2)

Publication Number Publication Date
KR20180131123A true KR20180131123A (ko) 2018-12-10
KR102379196B1 KR102379196B1 (ko) 2022-03-28

Family

ID=64456445

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170067744A KR102379196B1 (ko) 2017-05-31 2017-05-31 처리 장치들 및 그 제어 방법들

Country Status (4)

Country Link
US (1) US20200099950A1 (ko)
KR (1) KR102379196B1 (ko)
CN (1) CN110612725B (ko)
WO (1) WO2018221838A1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001298728A (ja) * 2000-04-12 2001-10-26 Meidensha Corp 遠方監視システム及び画像符号化処理方法
KR20080073047A (ko) * 2007-02-05 2008-08-08 삼성전자주식회사 동영상 복호화시 프레임 손실 은폐 방법 및 장치
KR20100067129A (ko) * 2007-10-12 2010-06-18 콸콤 인코포레이티드 비디오 블록 헤더 정보의 적응적 코딩
KR20100072347A (ko) * 2007-10-12 2010-06-30 콸콤 인코포레이티드 계층화 인코딩된 비트스트림 구조
JP2012105179A (ja) * 2010-11-12 2012-05-31 Mitsubishi Electric Corp 画像復号装置
KR20160066013A (ko) * 2012-10-08 2016-06-09 후아웨이 테크놀러지 컴퍼니 리미티드 움직임 벡터 예측을 위한 움직임 벡터 목록을 작성하는 방법 및 장치

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5270813A (en) * 1992-07-02 1993-12-14 At&T Bell Laboratories Spatially scalable video coding facilitating the derivation of variable-resolution images
CN100446560C (zh) * 2003-01-10 2008-12-24 汤姆森特许公司 用于平滑在误差掩蔽期间产生的人为产物的解码器装置和方法
US7646815B2 (en) * 2003-07-15 2010-01-12 Lsi Corporation Intra estimation chroma mode 0 sub-block dependent prediction
US7616692B2 (en) * 2003-09-07 2009-11-10 Microsoft Corporation Hybrid motion vector prediction for interlaced forward-predicted fields
KR101217627B1 (ko) * 2006-02-02 2013-01-02 삼성전자주식회사 블록 기반의 움직임 추정 방법 및 장치
KR101082581B1 (ko) * 2010-01-29 2011-11-10 충북대학교 산학협력단 H.264/avc 복호화기의 에러 은닉 장치 및 방법
KR101144283B1 (ko) * 2010-07-27 2012-05-11 중앙대학교 산학협력단 디코딩된 비디오에 포함된 에러를 은닉하는 장치 및 방법
WO2012095467A1 (en) * 2011-01-12 2012-07-19 Canon Kabushiki Kaisha Video encoding and decoding with low complexity
AU2012216026B2 (en) * 2011-02-10 2016-04-28 Sun Patent Trust Moving picture coding method, moving picture coding apparatus, moving picture decoding method, moving picture decoding apparatus, and moving picture coding and decoding apparatus

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001298728A (ja) * 2000-04-12 2001-10-26 Meidensha Corp 遠方監視システム及び画像符号化処理方法
KR20080073047A (ko) * 2007-02-05 2008-08-08 삼성전자주식회사 동영상 복호화시 프레임 손실 은폐 방법 및 장치
KR20100067129A (ko) * 2007-10-12 2010-06-18 콸콤 인코포레이티드 비디오 블록 헤더 정보의 적응적 코딩
KR20100072347A (ko) * 2007-10-12 2010-06-30 콸콤 인코포레이티드 계층화 인코딩된 비트스트림 구조
JP2012105179A (ja) * 2010-11-12 2012-05-31 Mitsubishi Electric Corp 画像復号装置
KR20160066013A (ko) * 2012-10-08 2016-06-09 후아웨이 테크놀러지 컴퍼니 리미티드 움직임 벡터 예측을 위한 움직임 벡터 목록을 작성하는 방법 및 장치

Also Published As

Publication number Publication date
CN110612725B (zh) 2023-01-17
WO2018221838A1 (ko) 2018-12-06
CN110612725A (zh) 2019-12-24
KR102379196B1 (ko) 2022-03-28
US20200099950A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
JP7379647B2 (ja) ビデオコーディングおよびデコーディングのための方法、装置、媒体、およびプログラム
JP7257535B2 (ja) 変換スキップモードとブロック差分パルスコード変調の改善された残差コーディング
JP7213264B2 (ja) デコードまたはエンコードのための方法並びに装置およびコンピュータプログラム
JP7436715B2 (ja) ビデオコーディングの方法および装置、ならびにコンピュータプログラム
US7738716B2 (en) Encoding and decoding apparatus and method for reducing blocking phenomenon and computer-readable recording medium storing program for executing the method
JP7343669B2 (ja) Vvcにおける色変換のための方法及び機器
KR20060088461A (ko) 영상신호의 엔코딩/디코딩시에 영상블록을 위한 모션벡터를베이스 레이어 픽처의 모션벡터로부터 유도하는 방법 및장치
JP7337164B2 (ja) ビデオ復号及び符号化の方法、装置並びにコンピュータプログラム
JP7221390B2 (ja) ビデオ復号及び符号化の方法、装置並びにプログラム
KR20130070574A (ko) 메모리 요건을 완화한 영상 전송 시스템
KR102218696B1 (ko) 영상 변환 부호화/복호화 방법 및 장치
CN112514400B (zh) 视频解码方法、视频解码器、计算机设备和可读存储介质
KR20130108948A (ko) 적응적 전처리 기법을 이용한 영상 인코딩 방법
KR101375667B1 (ko) 영상의 부호화, 복호화 방법 및 장치
KR20180040517A (ko) 비디오 부호화, 복호화 방법 및 장치
KR100968371B1 (ko) 영상의 복호화 방법 및 장치
KR20140109770A (ko) 영상 부호화/복호화 방법 및 장치
JP2023542029A (ja) 低ビット精度のニューラルネットワーク(nn)に基づくクロスコンポーネント予測のための方法、機器、及びコンピュータプログラム
US10104389B2 (en) Apparatus, method and non-transitory medium storing program for encoding moving picture
CN114762332A (zh) 构建合并候选列表的方法
US11956453B2 (en) Content-adaptive online training for DNN-based cross component prediction with scaling factors
KR20080084890A (ko) 동영상 부호화 및 재생 방법 및 장치
JP6564315B2 (ja) 符号化装置、復号装置、及びプログラム
KR20220074973A (ko) 비디오 코딩 방법 및 장치
KR102379196B1 (ko) 처리 장치들 및 그 제어 방법들

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant