KR101756582B1 - 병렬 프로세싱을 위한 적응적 타일 분할 방법 및 이를 이용한 비디오 부호화/복호화 방법 - Google Patents
병렬 프로세싱을 위한 적응적 타일 분할 방법 및 이를 이용한 비디오 부호화/복호화 방법 Download PDFInfo
- Publication number
- KR101756582B1 KR101756582B1 KR1020160013403A KR20160013403A KR101756582B1 KR 101756582 B1 KR101756582 B1 KR 101756582B1 KR 1020160013403 A KR1020160013403 A KR 1020160013403A KR 20160013403 A KR20160013403 A KR 20160013403A KR 101756582 B1 KR101756582 B1 KR 101756582B1
- Authority
- KR
- South Korea
- Prior art keywords
- complexity
- current frame
- tile
- tiles
- coding tree
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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 using parallelised computational arrangements
-
- 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/156—Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
-
- 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/42—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
멀티 코어 시스템에서 운용되는 HEVC 복호화기(Decoder)의 병렬화(Parallelization) 성능을 향상시키기 위해 각 타일에 대한 복잡도(Complexity)를 예측하여 적응적으로 타일을 분할하는 방법 및 이를 이용한 비디오 부호화/복호화 방법에 관한 기술이 개시된다. 타일 분할 방법은, 이전 프레임(previous frame)에 포함된 코딩 트리 유닛(coding tree unit)들의 복잡도를 이용하여 현재 프레임(current frame)에 포함된 코딩 트리 유닛들의 복잡도를 추정하는 단계와; 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도에 기반하여 현재 프레임의 복잡도를 획득하는 단계와; 현재 프레임의 복잡도를 고려한 부하 균형(load balance) 및 부호화 효율(coding efficiency)에 기반하여 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계를 포함한다.
Description
본 발명은 비디오 부호화/복호화에 관한 것으로, 더욱 상세하게는 멀티 코어 시스템에서 운용되는 HEVC 복호화기(Decoder)의 병렬화(Parallelization) 성능을 향상시키기 위해 각 타일에 대한 복잡도(Complexity)를 예측하여 적응적으로 타일을 분할하는 방법 및 이를 이용한 비디오 부호화/복호화 방법에 관한 것이다.
Joint Collaborative Team on Video Coding(JCT-VC)에서는 High Efficiency Video Coding(HEVC) 표준을 개발하였다. HEVC는 3840×2160 해상도와 120 초당 프레임 수(Frame per second)를 갖는 Ultra HD급 고해상도 영상을 지원할 수 있다.
또한, HEVC는 압축 효율을 H.264/AVC에 비해 50% 증가시키는 것을 목적으로 하고 있다. 그러나, 이를 이루기 위해서는 상당한 양의 계산 작업이 요구된다.
한편, HEVC는 60 초당 프레임 수 보다 높은 Ultra HD 급의 해상도를 큰 부호화 손실 없이 실시간으로 지원하기 위해서 병렬화를 기반으로 한 타일(Tile) 및 Wavefront Parallel Processing(WPP) 기법 등을 제안하였다. WPP 기법은 Coding Tree Block(CTB) 행 당 하나의 화면 분할(Picture partition)을 정의한다.
반면에, 타일 기법은 하나의 화면을 수직·수평 경계를 이용하여 여러 개의 직사각형 CTB 집합으로 분할한다. 현재의 타일 분할 기법에서는 균일(Uniform) 분할 방법으로 타일을 분할할 수 있다. 즉, 균일 분할 방법은 부호화기에 의해 각 타일 내의 Coding Tree Unit(CTU) 개수가 동일하게 분배할 수 있다.
그러나, 균일 분할 방법을 이용하여 같은 크기의 타일들을 각 코어 별로 할당할 경우 각 타일은 서로 다른 내용과 서로 다른 복잡도를 갖고 있기 때문에 타일을 복호함에 있어 코어들 사이의 부하 불균형 문제가 발생할 수 있다. 따라서, 이러한 문제는 멀티 코어 시스템의 이용률(Utilization) 감소를 야기할 수 있는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 복호화기 병렬화 성능 저하의 문제를 극복할 수 있는 적응적 타일 분할 방법을 제공하는데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 복호화기 병렬화 성능 저하의 문제를 극복할 수 있는 적응적 타일 분할 방법을 이용한 비디오 부호화 방법을 제공하는데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 또 다른 목적은, 복호화기 병렬화 성능 저하의 문제를 극복할 수 있는 적응적 타일 분할 방법을 이용한 비디오 복호화 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 실시예에 따른 타일 분할 방법은, 이전 프레임(previous frame)에 포함된 코딩 트리 유닛(coding tree unit)들의 복잡도를 이용하여 현재 프레임(current frame)에 포함된 코딩 트리 유닛들의 복잡도를 추정하는 단계와; 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도에 기반하여 현재 프레임의 복잡도를 획득하는 단계와; 현재 프레임의 복잡도를 고려한 부하 균형(load balance) 및 부호화 효율(coding efficiency)에 기반하여 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계를 포함한다.
여기에서, 상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도를 추정하는 단계는, 이전 프레임에 포함된 코딩 트리 유닛들에 대한 비트량을 이용하여 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도를 추정할 수 있다.
여기에서, 상기 현재 프레임의 복잡도를 획득하는 단계는, 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도를 좌표에 따라 행렬로 표현할 수 있다.
여기에서, 상기 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계는, 타일 개수가 증가함에 따라 부하 균형이 개선되고, 부호화 효율이 저하되는 상관 관계에 기초하여 현재 프레임에 대한 타일 개수 및 타일 구조를 결정할 수 있다.
여기에서, 상기 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계는, 현재 프레임에 대한 복잡도의 최대값과 최소값의 차이를 기준으로 부하 균형(load balance)을 평가할 수 있다.
상기 다른 목적을 달성하기 위한 본 발명의 실시예에 따른 비디오 부호화 방법은, 이전 프레임(previous frame)에 포함된 코딩 트리 유닛(coding tree unit)들의 복잡도를 이용하여 추정된 현재 프레임(current frame)에 포함된 코딩 트리 유닛들의 복잡도에 기반하여 상기 현재 프레임의 복잡도를 획득하는 단계와; 현재 프레임의 복잡도를 고려한 부하 균형(load balance) 및 부호화 효율(coding efficiency)에 기반하여 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계와; 현재 프레임에 대한 타일 개수 및 타일 구조에 따른 부호화를 수행하여 비트스트림을 생성하는 단계를 포함한다.
상기 또 다른 목적을 달성하기 위한 본 발명의 실시예에 따른 비디오 복호화 방법은, 부호화된 비트스트림을 수신하는 단계와; 부호화된 비트스트림으로부터 현재 프레임(current frame)의 복잡도를 반영한 타일 정보를 획득하는 단계와; 타일 정보에 따라 현재 프레임에 대한 타일 개수 및 타일 구조를 산출하는 단계와; 현재 프레임에 대한 타일 개수 및 타일 구조에 따라 멀티 코어에 타일에 대한 복호화를 할당하는 단계를 포함한다.
여기에서, 상기 현재 프레임(current frame)의 복잡도는, 이전 프레임(previous frame)에 포함된 코딩 트리 유닛(coding tree unit)들의 복잡도를 이용하여 추정된 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도를 좌표에 따라 행렬로 표현함으로써 산출될 수 있다.
여기에서, 상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도는, 이전 프레임에 포함된 코딩 트리 유닛들에 대한 비트량을 이용하여 추정될 수 있다.
여기에서, 상기 현재 프레임에 대한 타일 개수 및 타일 구조는, 현재 프레임의 복잡도를 고려한 부하 균형(load balance) 및 부호화 효율(coding efficiency)에 기반하여 결정될 수 있다.
여기에서, 상기 현재 프레임에 대한 타일 개수 및 타일 구조는, 타일 개수가 증가함에 따라 부하 균형(load balance)이 개선되고, 부호화 효율(coding efficiency)이 저하되는 상관 관계에 기초하여 결정될 수 있다.
여기에서, 상기 현재 프레임에 대한 타일 개수 및 타일 구조는, 현재 프레임에 대한 복잡도의 최대값과 최소값의 차이를 기준으로 부하 균형(load balance)을 평가함으로써 산출될 수 있다.
상기와 같은 본 발명의 실시예에 따른 병렬 프로세싱을 위한 적응적 타일 분할 방법 및 이를 이용한 비디오 부호화/복호화 방법은 균등한 코어 작업량 할당을 통해 복호화 시간을 단축시킴과 동시에 부호화 효율을 향상시킬 수 있다.
또한, 종래 HEVC 복호화기의 균일 타일 분할 방법에 따른 병렬화 성능 저하의 문제를 해결할 수 있다.
도 1은 균일하게 분할된 타일 구조를 가지는 프레임을 설명하기 위한 예시도이다.
도 2는 균일하게 분할된 타일 구조를 가지는 프레임에 대한 타일 별 복호화 시간을 나타내는 그래프이다.
도 3은 본 발명의 실시예에 따라 복잡도에 기반하여 비균일하게 분할된 타일 구조를 가지는 프레임을 설명하기 위한 예시도이다.
도 4는 균일하게 분할된 타일 구조를 가지는 프레임과 복잡도에 기반하여 비균일하게 분할된 타일 구조를 가진 프레임에 대한 복호화 시간을 비교하여 나타내는 그래프이다.
도 5는 부호화된 비트량에 따른 코딩 트리 유닛에 대한 복호화 시간을 나타내는 그래프이다.
도 6은 프레임을 구성하는 타일의 개수에 따른 최대 신호 대 잡음비(Peak Signal-to-Noise Ratio, PSNR)을 나타내는 그래프이다.
도 7은 본 발명의 실시예에 따라 멀티 코어에 할당할 프레임의 타일 개수 및 타일 구조를 결정하는 알고리즘을 설명하기 위한 예시도이다.
도 8은 본 발명의 실시예에 따른 병렬 프로세싱을 위한 적응적 타일 분할을 이용한 비디오 부호화 방법을 설명하기 위한 흐름도이다.
도 9는 본 발명의 실시예에 따른 병렬 프로세싱을 위한 적응적 타일 분할을 이용한 비디오 복호화 방법을 설명하기 위한 흐름도이다.
도 2는 균일하게 분할된 타일 구조를 가지는 프레임에 대한 타일 별 복호화 시간을 나타내는 그래프이다.
도 3은 본 발명의 실시예에 따라 복잡도에 기반하여 비균일하게 분할된 타일 구조를 가지는 프레임을 설명하기 위한 예시도이다.
도 4는 균일하게 분할된 타일 구조를 가지는 프레임과 복잡도에 기반하여 비균일하게 분할된 타일 구조를 가진 프레임에 대한 복호화 시간을 비교하여 나타내는 그래프이다.
도 5는 부호화된 비트량에 따른 코딩 트리 유닛에 대한 복호화 시간을 나타내는 그래프이다.
도 6은 프레임을 구성하는 타일의 개수에 따른 최대 신호 대 잡음비(Peak Signal-to-Noise Ratio, PSNR)을 나타내는 그래프이다.
도 7은 본 발명의 실시예에 따라 멀티 코어에 할당할 프레임의 타일 개수 및 타일 구조를 결정하는 알고리즘을 설명하기 위한 예시도이다.
도 8은 본 발명의 실시예에 따른 병렬 프로세싱을 위한 적응적 타일 분할을 이용한 비디오 부호화 방법을 설명하기 위한 흐름도이다.
도 9는 본 발명의 실시예에 따른 병렬 프로세싱을 위한 적응적 타일 분할을 이용한 비디오 복호화 방법을 설명하기 위한 흐름도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하에서 후술할 영상 부호화 장치(Video Encoding Apparatus), 영상 복호화 장치(Video Decoding Apparatus)는 개인용 컴퓨터(PC: Personal Computer), 노트북 컴퓨터, 개인 휴대 단말기(PDA: Personal Digital Assistant), 휴대형 멀티미디어 플레이어(PMP: Portable Multimedia Player), 플레이스테이션 포터블(PSP: PlayStation Portable), 무선 통신 단말기(Wireless Communication Terminal), 스마트폰(Smart Phone), TV 응용 서버와 서비스 서버 등 서버 단말기일 수 있으며, 각종 기기 또 등과 같은 사용자 단말기이거나 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 영상을 부호화하거나 복호화하거나 부호화 또는 복호화를 위해 화면간 또는 화면내 예측하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리, 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치를 의미할 수 있다.
또한, 영상 부호화 장치에 의해 비트스트림으로 부호화된 영상은 실시간 또는 비실시간으로 인터넷, 근거리 무선 통신망, 무선랜망, 와이브로망, 이동통신망 등의 유무선 통신망 등을 통하거나 케이블, 범용 직렬 버스(USB: Universal Serial Bus) 등과 같은 다양한 통신 인터페이스를 통해 영상 복호화 장치로 전송되어 영상 복호화 장치에서 복호화되어 영상으로 복원되고 재생될 수 있다.
통상적으로 동영상은 일련의 픽쳐(Picture) 또는 프레임(frame)로 구성될 수 있으며, 각 픽쳐들은 유닛(unit), 블록(Block)과 같은 소정의 영역으로 분할될 수 있다. 영상의 영역이 블록으로 분할되는 경우에는 분할된 블록은 부호화 방법에 따라 크게 인트라 블록(Intra Block), 인터 블록(Inter Block)으로 분류될 수 있다. 인트라 블록은 화면 내 예측 부호화(Intra Prediction Coding) 방식을 사용하여 부호화되는 블록을 뜻하는데, 화면 내 예측 부호화란 현재 부호화를 수행하는 현재 픽쳐 내에서 이전에 부호화되고 복호화되어 복원된 블록들의 화소를 이용하여 현재 블록의 화소를 예측함으로써 예측 블록을 생성하고 현재 블록의 화소와의 차분값을 부호화하는 방식이다. 인터 블록은 화면 간 예측 부호화(Inter Prediction Coding)를 사용하여 부호화되는 블록을 뜻하는데, 화면 간 예측 부호화란 하나 이상의 과거 픽쳐 또는 미래 픽쳐를 참조하여 현재 픽쳐 내의 현재 블록을 예측함으로써 예측 블록을 생성하고 현재 블록과의 차분값을 부호화하는 방식이다. 여기서, 현재 픽쳐를 부호화하거나 복호화하는데 참조되는 프레임을 참조 프레임(Reference Frame)이라고 한다. 또한, 이하에 기재된 "픽쳐(picture)"이라는 용어는 영상(image), 프레임(frame) 등과 같은 동등한 의미를 갖는 다른 용어로 대치되어 사용될 수 있음을 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 또한, 본 발명에 있어서 참조가 되는 픽쳐는 복원된 픽쳐를 의미하는 것은 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
더 나아가, 블록(block)이라는 용어는 HEVC 표준의 코딩 트리 유닛(Coding Tree Unit, CTU), 코딩 유닛(Coding Unit, CU), 예측 유닛(Prediction Unit, PU) 및 변환 유닛(Transform Unit, TU)을 포함하는 개념일 수 있다. 예를 들어, CTU가 64×64일 때, 이를 네 개의 32×32 블록으로 분할하여 부호화할 수 있는데, 이 때 각각의 32×32 블록이 CU에 해당할 수 있다.
또한, HEVC의 타일(tile)은 병렬 인코딩 및 디코딩을 지원하기 위해 도입된 개념이다. 타일은 프레임을 분할하는 개념으로 CTU 단위를 경계로 분할될 수 있다. 즉, 타일은 동시에 인코딩하거나 디코딩할 수 있는 영역을 의미하는 것으로, 타일이 사용된 경우 각 분할 영역에서 발생한 비트들이 서브 비트스트림으로 표현되고, 각 서브 비트스트림의 시작 위치가 슬라이스 헤더를 통하여 전송되기 때문에, 타일을 사용한 경우 엔트로피 복호화 부분에 대해서도 병렬 처리가 가능하다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 균일하게 분할된 타일 구조를 가지는 프레임을 설명하기 위한 예시도이고, 도 2는 균일하게 분할된 타일 구조를 가지는 프레임에 대한 타일 별 복호화 시간을 나타내는 그래프이다.
도 1을 참조하면, 프레임은 균일한 사이즈의 타일로 분할될 수 있다. 예를 들어, 하나의 프레임은 네 개의 타일로 분할될 수 있고, 각각의 타일의 사이즈는 동일할 수 있다.
여기서, 네 개의 타일 각각을 Tile 0, Tile 1, Tile 2 및 Tile 3으로 명명할 수 있다. Tile 0, Tile 1, Tile 2 및 Tile 3 중에서 Tile 3이 가장 복잡도가 낮은 화소 구성을 가지는 것을 알 수 있다.
프레임을 분할한 타일은 멀티 코어에 각각 할당되어 처리될 수 있다. 예를 들어, Tile 0, Tile 1, Tile 2 및 Tile 3은 각각 서로 다른 코어에 할당되어 복호화될 수 있다.
도 2를 참조하면, 각 타일에 대한 복호화 시간(Decoding time)을 알 수 있다.
상세하게는, 도 2에서 구획된 영역(20)을 살펴보면, Tile 3의 복호화 시간이 다른 타일들에 비해 매우 짧은 것을 알 수 있으며, 이는 Tile 3이 다른 타일들과 해 비교적 간단한 이미지를 가지고 있어 복호화 복잡도가 비교적 낮기 때문이다.
이러한 경우, Tile 3을 복호화한 코어는 나머지 코어들이 다른 타일들에 대한 복호화를 완료할 때까지 기다려야 하며, 이는 HEVC 병렬 복호화 성능을 저하시키는 원인이 된다.
따라서, 본 발명에서는 종래의 균일 타일 분할 방법이 가지는 병렬화 성능 저하 문제를 해결하고자 비균일(Non-uniform) 타일 분할 방법을 이용하여 분할된 타일들을 멀티 코어에 할당함으로써, 각 코어에 보다 균등한 작업량(Workload)를 할당하고자 한다.
비균일 타일 분할 방법을 이용하여 각 코어에 균등한 작업량을 할당하는 본 발명은 이하에서 구체적으로 설명하도록 한다.
도 3은 본 발명의 실시예에 따라 복잡도에 기반하여 비균일하게 분할된 타일 구조를 가지는 프레임을 설명하기 위한 예시도이고, 도 4는 균일하게 분할된 타일 구조를 가지는 프레임과 복잡도에 기반하여 비균일하게 분할된 타일 구조를 가진 프레임에 대한 복호화 시간을 비교하여 나타내는 그래프이다.
도 3을 참조하면, 본 발명의 실시예에 따르면, 프레임은 화소의 복잡도에 기반하여 비균일한 크기의 타일로 분할될 수 있다.
상세하게는, 프레임은 영역 별로 상이한 복잡도를 가지는 화소 분포를 가질 수 있다. Tile 0, Tile 1, Tile 2 및 Tile 3 중에서 Tile 0과 Tile 2의 복잡도가 상대적으로 높은 것을 알 수 있다.
따라서, 본 발명의 실시예에 따른 비균일 타일 분할 방법은 Tile 0과 Tile 2의 크기를 Tile 1과 Tile 3 보다 상대적으로 작게 설정하여 분할할 수 있다.
도 4는 도 1과 같이 균일 분할한 타일 구조에 따른 복호화 시간(41)과 도 3과 같이 비균일 분할한 타일 구조에 따른 복호화 시간(42)을 나타낸다.
도 4를 참조하면, 도 1과 같이 균일 분할한 타일 구조에 따른 복호화 시간(41)은 약 11800??sec이고, 도 3과 같이 비균일 분할한 타일 구조에 따른 복호화 시간(42)은 약 8300??sec인 것을 알 수 있다. 즉, 비균일 분할한 타일 구조에 따라 타일을 분할하여 ?F티 코어에 할당한 경우에, 약 29%의 시간을 감축시킬 수 있다.
따라서, 도 3과 같이 비균일 분할한 타일 구조에 따라 멀티 코어에 타일을 할당한 경우에, 각 코어에 보다 균등한 작업량(Workload)를 할당함으로써, 복호화 시간을 줄일 수 있다.
본 발명의 실시예에 따르면, 각 타일에 대한 복잡도를 예측하고, 이를 기반으로 부하 균형(load balance)과 부호화 효율(coding efficiency)을 고려하여 각 코어에 할당할 타일 개수 및 타일의 구조를 제어할 수 있다.
도 5는 부호화된 비트량에 따른 코딩 트리 유닛에 대한 복호화 시간을 나타내는 그래프이다.
본 발명의 실시예에 따르면, 멀티코어 시스템의 성능을 향상시키기 위해 부하 균형을 고려한 비균일 타일 분할 알고리즘을 이용할 수 있다. 특히, 보다 빠른 알고리즘을 설계하기 위해 각 타일에 대한 작업량(Workload)를 예측할 수 있다.
도 5는 하나의 CTU의 부호화된 비트(encoded bits) 량과 복호화 시간 사이의 관계를 나타내고, 이러한 관계(모델)는 다음의 수학식 1과 같이 표현될 수 있다.
여기서, 모델 매개변수 α와 β는 매 프레임 마다 업데이트될 수 있고, 현재 프레임을 기준으로 이전의 Nwnd개 프레임들의 CTU 데이터를 수집한 뒤 오차 함수(Error function)를 최소화하도록 업데이트될 수 있다.
여기서, 오차함수는 다음 수학식 2와 같이 정의할 수 있다.
예를 들어, 복호화기(Decoder)가 부호화기(Encoder)에게 프레임 단위의 모델 매개 변수를 알려줌으로써, 부호화기는 상술한 수학식 1을 이용하여 CTU의 복잡도를 예측할 수 있다.
또한, 복호화기가 부호화기에게 아무런 모델 매개 변수를 알려주지 않을 경우도, 부호화기는 시스템 실행 이전에 모델 매개 변수에 대한 프로파일링(Profiling) 정보를 통해 CTU의 복잡도를 예측할 수 있다.
특히, 현재 프레임의 CTU들의 복잡도는 이전 프레임의 CTU들 복잡도와 유사할 수 있다.
따라서, n번째 프레임의 i번째 열과 j번째 행에 해당하는 CTU의 복잡도는 이전 n-1번째 프레임의 비트량()을 이용하여 계산할 수 있고, 이는 다음의 수학식 3과 같이 표현될 수 있다.
따라서, n번째 프레임의 복잡도 행렬(Complexity matrix)은 다음의 수학식 4과 같이 정의될 수 있다.
도 6은 프레임을 구성하는 타일의 개수에 따른 최대 신호 대 잡음비(Peak Signal-to-Noise Ratio, PSNR)을 나타내는 그래프이다.
부하 균형(load balance)과 부호화 효율(Coding efficiency) 사이에는 상관 관계(Tradeoff)가 존재한다.
상세하게는, 멀티 코어 시스템에서 타일 크기를 좀 더 작게 나누면, 보다 공평하게 부하 균형을 맞출 수 있다.
반면에, 도 6을 참조하면, 타일의 크기가 커지면, 부호화 효율(Coding efficiency)은 높아진다. 즉, 타일의 크기가 작아질수록 PSNR이 커지는 것을 알 수 있다.
따라서, 본 발명의 실시예에 따르면, 부하 균형과 부호화 효율의 상관관계를 고려하여 타일의 개수와 타일의 구조를 결정할 수 있다.
본 발명의 실시예에 따른 비균일 타일 분할 방법은, 프레임에 대한 복잡도 행렬()을 기반으로 다음의 수학식 5를 최소화는 동시에 다음의 수학식 6을 만족시킴으로써, 프레임 내 타일의 열 개수()과 행 개수() 및 타일을 나누는 열 좌표()와 행 좌표()를 결정할 수 있다. .
상기 수학식 7에 따르면, n번째 타일의 복잡도는 n번째 타일에 포함된 CTU들의 복잡도의 합으로 나타낼 수 있다.
상기 수학식 8에 따르면, 프레임의 복잡도는 해당 프레임에 포함된 CTU들의 복잡도의 합으로 나타낼 수 있다.
도 7은 본 발명의 실시예에 따라 멀티 코어에 할당할 프레임의 타일 개수 및 타일 구조를 결정하는 알고리즘을 설명하기 위한 예시도이다.
도 7을 참조하여 본 발명의 실시예에 따른 비균일 타일 분할 방법을 실행하는 알고리즘(비균일 타일 분할 알고리즘)을 설명한다.
비균일 타일 분할 알고리즘은 타일 분할의 부하 균형을 계산하기 위해 도 loadImbalance 변수를 정의할 수 있고, 이 변수는 이 주어질 때 한 프레임 내에서 가능한 모든 타일들의 최대 복잡도()와 최소 복잡도()의 차이값을 의미할 수 있다.
만약, loadImbalance 변수가 목표 임계값보다 작다면, 알고리즘을 종료하고 선택된 값을 이용하여 현재 프레임을 분할할 수 있다. 또한, loadImbalance가 목표 임계값보다 큰 경우에는, 보다 큰 타일 개수를 적용하여 도 7의 3~10번 줄을 반복하여 수행할 수 있다.
더 나아가, 본 발명의 실시예에 따른 비균일 타일 분할 알고리즘은 전체 부호화 시간의 1%에도 못 미치는 적은 계산량을 가질 수 있다.
도 8은 본 발명의 실시예에 따른 병렬 프로세싱을 위한 적응적 타일 분할을 이용한 비디오 부호화 방법을 설명하기 위한 흐름도이다.
도 8을 참조하면, 본 발명의 실시예에 따른 비디오 부호화 방법은 프레임의 복잡도에 기반하여 적응적으로 분할될 타일을 이용하여 부호화된 비트스트림을 생성할 수 있다. 여기서, 비디오 부호화 방법은 부호화기에 의해 수행될 수 있다.
이전 프레임(previous frame)에 포함된 코딩 트리 블록(coding tree unit)들의 복잡도를 이용하여 현재 프레임(current frame)에 포함된 코딩 트리 블록들의 복잡도를 추정할 수 있다(S810).
상술한 수학식 3을 참조하면, 현재 프레임(current frame)에 포함된 코딩 트리 블록들의 복잡도는 이전 프레임(previous frame)에 포함된 코딩 트리 블록(coding tree block)들의 복잡도에 기반하여 추정될 수 있다.
특히, 하나의 CTU의 부호화된 비트(encoded bits) 량과 복호화 시간 사이의 관계는 도 5 및 수학식 1에 의해 나타날 수 있으며, 이로 인하여 이전 프레임에 포함된 코딩 트리 블록들에 대한 비트량을 이용하여 현재 프레임에 포함된 코딩 트리 블록들의 복잡도를 추정할 수 있다.
현재 프레임에 포함된 코딩 트리 블록들의 복잡도에 기반하여 현재 프레임의 복잡도를 획득할 수 있다(S820). 즉, 현재 프레임에 포함된 코딩 트리 블록들의 복잡도를 좌표에 따라 행렬로 표현할 수 있다. 예를 들어, 현재 프레임의 복잡도는 상술한 수학식 4에 따른 복잡도 행렬(Complexity matrix)로 표현될 수 있다.
현재 프레임의 복잡도를 고려한 부하 균형(load balance) 및 부호화 효율(coding efficiency)에 기반하여 현재 프레임에 대한 타일 개수 및 타일 구조를 결정할 수 있다(S830).
상세하게는, 도 6과 같이 타일 개수가 증가함에 따라 부하 균형이 개선되고, 부호화 효율이 저하되는 상관 관계에 기초하여 현재 프레임에 대한 타일 개수 및 타일 구조가 결정될 수 있다. 따라서, 수학식 5 내지 8에 따라 프레임을 분할 가능한 타일 개수, 프레임을 구성하는 CTU들의 복잡도, 프레임의 복잡도 등을 고려하여 타일 개수 및 타일 구조를 최종적으로 결정할 수 있다. 여기서, 부하 균형(load balance)은 현재 프레임에 대한 복잡도의 최대값과 최소값의 차이를 기준으로 평가될 수 있다.
현재 프레임에 대한 타일 개수 및 타일 구조에 따른 부호화를 수행하여 비트스트림을 생성할 수 있다(S840). 따라서, 현재 프레임에 대한 타일 개수 및 타일 구조에 따른 병렬 처리가 가능하도록 부호화를 수행한 비트스트림을 생성할 수 있다.
도 9는 본 발명의 실시예에 따른 병렬 프로세싱을 위한 적응적 타일 분할을 이용한 비디오 복호화 방법을 설명하기 위한 흐름도이다.
도 9에 따른 비디오 복호화 방법은 상술한 도 8에 의해 부호화된 비트스트림을 복호화하는 과정이다. 따라서, 도 8에 대한 설명을 참조하여 보다 명확히 이해될 수 있다. 여기서, 비디오 복호화 방법은 복호화기에 의해 수행될 수 있다.
부호화된 비트스트림을 수신할 수 있다(S910). 즉, 복호화기는 상술한 도 8의 과정을 통해 생성된 비트스트림을 수신할 수 있다.
부호화된 비트스트림으로부터 현재 프레임(current frame)의 복잡도를 반영한 타일 정보를 획득할 수 있다(S920).
상세하게는, 현재 프레임(current frame)의 복잡도는 이전 프레임(previous frame)에 포함된 코딩 트리 블록(coding tree unit)들의 복잡도를 이용하여 추정된 현재 프레임에 포함된 코딩 트리 블록들의 복잡도를 좌표에 따라 행렬로 표현함으로써 산출될 수 있다. 여기서, 현재 프레임에 포함된 코딩 트리 블록들의 복잡도는 이전 프레임에 포함된 코딩 트리 블록들에 대한 비트량을 이용하여 추정될 수 있다.
타일 정보에 따라 현재 프레임에 대한 타일 개수 및 타일 구조를 산출할 수 있다(S930). 여기서, 현재 프레임에 대한 타일 개수 및 타일 구조는 현재 프레임의 복잡도를 고려한 부하 균형(load balance) 및 부호화 효율(coding efficiency)에 기반하여 결정될 수 있다. 즉, 현재 프레임에 대한 타일 개수 및 타일 구조는 타일 개수가 증가함에 따라 부하 균형(load balance)이 개선되고, 부호화 효율(coding efficiency)이 저하되는 상관 관계에 기초하여 결정될 수 있다. 예를 들어, 현재 프레임에 대한 타일 개수 및 타일 구조는 현재 프레임에 대한 복잡도의 최대값과 최소값의 차이를 기준으로 부하 균형(load balance)을 평가함으로써 산출될 수 있다.
현재 프레임에 대한 타일 개수 및 타일 구조에 따라 멀티 코어에 타일에 대한 복호화를 할당할 수 있다(S940).
따라서, 본 발명의 실시예에 따른 비디오 복호화 방법은 복잡도에 따라 적응적으로 분할된 타일을 보다 효과적으로 멀티 코어에 할당하여 복호화할 수 있고, 이를 통하여 복호화 시간을 단축시킬 수 있다.
본 발명의 실시예에 따른 비디오 부호화/복호화 방법의 동작은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다.
상술한 본 발명의 실시예에 따른 병렬 프로세싱을 위한 적응적 타일 분할 방법 및 이를 이용한 비디오 부호화/복호화 방법은 균등한 코어 작업량 할당을 통해 복호화 시간을 단축시킴과 동시에 부호화 효율을 향상시킬 수 있다.
또한, 종래 HEVC 복호화기의 균일 타일 분할 방법에 따른 병렬화 성능 저하의 문제를 해결할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
Claims (12)
- 이전 프레임(previous frame)에 포함된 코딩 트리 유닛(coding tree unit)들의 복잡도를 이용하여 현재 프레임(current frame)에 포함된 코딩 트리 유닛들의 복잡도를 추정하는 단계;
상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도에 기반하여 상기 현재 프레임의 복잡도를 획득하는 단계; 및
상기 현재 프레임의 복잡도를 고려한 부하 균형(load balance) 및 부호화 효율(coding efficiency)에 기반하여 상기 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계를 포함하고,
상기 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계는,
상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도에 기초하여 도출되는 각 타일의 복잡도 중 최대값과 최소값의 차이가 최소화되도록 타일 개수 및 타일 구조를 결정하는, 타일 분할 방법. - 청구항 1에 있어서,
상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도를 추정하는 단계는,
상기 이전 프레임에 포함된 코딩 트리 유닛들에 대한 비트량을 이용하여 상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도를 추정하는 것을 특징으로 하는,
타일 분할 방법. - 청구항 1에 있어서,
상기 현재 프레임의 복잡도를 획득하는 단계는,
상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도를 좌표에 따라 행렬로 표현하는 것을 특징으로 하는,
타일 분할 방법. - 청구항 1에 있어서,
상기 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계는,
상기 타일 개수가 증가함에 따라 부하 균형이 개선되고, 부호화 효율이 저하되는 상관 관계에 기초하여 상기 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 것을 특징으로 하는,
타일 분할 방법. - 삭제
- 이전 프레임(previous frame)에 포함된 코딩 트리 유닛(coding tree unit)들의 복잡도를 이용하여 추정된 현재 프레임(current frame)에 포함된 코딩 트리 유닛들의 복잡도에 기반하여 상기 현재 프레임의 복잡도를 획득하는 단계;
상기 현재 프레임의 복잡도를 고려한 부하 균형(load balance) 및 부호화 효율(coding efficiency)에 기반하여 상기 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계; 및
상기 현재 프레임에 대한 타일 개수 및 타일 구조에 따른 부호화를 수행하여 비트스트림을 생성하는 단계를 포함하고,
상기 현재 프레임에 대한 타일 개수 및 타일 구조를 결정하는 단계는,
상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도에 기초하여 도출되는 각 타일의 복잡도 중 최대값과 최소값의 차이가 최소화되도록 타일 개수 및 타일 구조를 결정하는, 비디오 부호화 방법. - 부호화된 비트스트림을 수신하는 단계;
상기 부호화된 비트스트림으로부터 현재 프레임(current frame)의 복잡도를 반영한 타일 정보를 획득하는 단계;
상기 타일 정보에 따라 현재 프레임에 대한 타일 개수 및 타일 구조를 산출하는 단계; 및
상기 현재 프레임에 대한 타일 개수 및 타일 구조에 따라 멀티 코어에 타일에 대한 복호화를 할당하는 단계를 포함하고,
상기 현재 프레임에 대한 타일 개수 및 타일 구조는,
상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도에 기초하여 도출되는 각 타일의 복잡도 중 최대값과 최소값의 차이가 최소화되도록 산출되는, 비디오 복호화 방법. - 청구항 7에 있어서,
상기 현재 프레임(current frame)의 복잡도는,
이전 프레임(previous frame)에 포함된 코딩 트리 유닛(coding tree unit)들의 복잡도를 이용하여 추정된 상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도를 좌표에 따라 행렬로 표현함으로써 산출되는 것을 특징으로 하는,
비디오 복호화 방법. - 청구항 8에 있어서,
상기 현재 프레임에 포함된 코딩 트리 유닛들의 복잡도는,
상기 이전 프레임에 포함된 코딩 트리 유닛들에 대한 비트량을 이용하여 추정되는 것을 특징으로 하는,
비디오 복호화 방법. - 청구항 7에 있어서,
상기 현재 프레임에 대한 타일 개수 및 타일 구조는,
상기 현재 프레임의 복잡도를 고려한 부하 균형(load balance) 및 부호화 효율(coding efficiency)에 기반하여 결정되는 것을 특징으로 하는,
비디오 복호화 방법. - 청구항 7에 있어서,
상기 현재 프레임에 대한 타일 개수 및 타일 구조는,
상기 타일 개수가 증가함에 따라 부하 균형(load balance)이 개선되고, 부호화 효율(coding efficiency)이 저하되는 상관 관계에 기초하여 결정되는 것을 특징으로 하는,
비디오 복호화 방법. - 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20160003765 | 2016-01-12 | ||
KR1020160003765 | 2016-01-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101756582B1 true KR101756582B1 (ko) | 2017-07-11 |
Family
ID=59354536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160013403A KR101756582B1 (ko) | 2016-01-12 | 2016-02-03 | 병렬 프로세싱을 위한 적응적 타일 분할 방법 및 이를 이용한 비디오 부호화/복호화 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101756582B1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014527316A (ja) | 2011-08-25 | 2014-10-09 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化方法、符号化装置、復号方法、および復号装置 |
-
2016
- 2016-02-03 KR KR1020160013403A patent/KR101756582B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014527316A (ja) | 2011-08-25 | 2014-10-09 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化方法、符号化装置、復号方法、および復号装置 |
Non-Patent Citations (1)
Title |
---|
Yong-Jo Ahn, et al., ‘COMPLEXITY MODEL BASED LOAD-BALANCING ALGORITHM FOR PARALLEL TOOLS OF HEVC’,Visual Communications and Image Processing (VCIP), 2013, IEEE, (2014.01.09)* |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110024392B (zh) | 用于视频译码的低复杂度符号预测 | |
US11388405B2 (en) | Content aware scheduling in a HEVC decoder operating on a multi-core processor platform | |
US10291925B2 (en) | Techniques for hardware video encoding | |
US10666940B2 (en) | Video encoding method and apparatus, and video decoding method and apparatus | |
RU2518635C2 (ru) | Способ и устройство для кодирования и декодирования блока кодирования границы картинки | |
US8218640B2 (en) | Picture decoding using same-picture reference for pixel reconstruction | |
US8218641B2 (en) | Picture encoding using same-picture reference for pixel reconstruction | |
EP2805499B1 (en) | Video decoder, video encoder, video decoding method, and video encoding method | |
CN111757106B (zh) | 使用多级复合预测对视频流中的当前块编译的方法和设备 | |
US10116942B2 (en) | Method and apparatus for decoding a video using an intra prediction | |
CN107071419B (zh) | 图像编码设备和方法以及图像解码设备和方法 | |
US20100020877A1 (en) | Multiple reference frame motion estimation in video coding | |
US20150063452A1 (en) | High efficiency video coding (hevc) intra prediction encoding apparatus and method | |
TW201507439A (zh) | 視訊編碼方法與裝置以及非暫時性電腦可讀記錄媒體 | |
CN107231557B (zh) | 用于在视频编码中的高级帧内预测的递归块分区中的智能重排的编、解码方法及装置 | |
US10855983B2 (en) | Encoding video using two-stage intra search | |
US20210360246A1 (en) | Shape adaptive discrete cosine transform for geometric partitioning with an adaptive number of regions | |
KR101756582B1 (ko) | 병렬 프로세싱을 위한 적응적 타일 분할 방법 및 이를 이용한 비디오 부호화/복호화 방법 | |
US20170302930A1 (en) | Method of transcoding video data with fusion of coding units, computer program, transcoding module and telecommunications equipment associated therewith | |
US10743009B2 (en) | Image processing apparatus and image processing method | |
EP3149943B1 (en) | Content aware scheduling in a hevc decoder operating on a multi-core processor platform | |
Kuang et al. | Fast HEVC to SCC transcoding based on decision trees | |
Baaklini et al. | H. 264 parallel optimization on graphics processors | |
US20200162756A1 (en) | Image processing device and method, and program | |
KR20170114427A (ko) | 동영상 병렬 부호화를 위한 로드 밸런싱 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |