본 명세서 도처에서 "일 실시예" 또는 "실시예"를 언급하는 것은 그 실시예와 관련되서 설명하는 특정 형상, 구조 또는 특징이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서의 다양한 위치에 나타나는 "일 실시예에서" 또는 "실시예"라는 문구가 반드시 모두 동일한 실시예를 지칭하는 것은 아니다. 또한, 특정 형상, 구조 또는 특징이 하나 이상의 실시예에서 조합될 수 있다.
도 1은 본 발명의 실시예에 따른 인코더 시스템(100)을 도시하고 있다. 인코더 시스템(100)은 계수 추정 로직(102), 양자화기(quantizer, 104), 전체/로컬 필터 선택부(106), 필터 유형 선택 로직(108), 필터 계수 예측 및 엔트로피 코더 선택 로직(110), 적응 위너 필터(adaptive Wiener filter, 112) 및 RD 값 계산기(114)를 포함한다. 일 실시예에서, 2008년 4월 9일자로 출원된 Chiu 및 Xu의 미국 특허 출원 제 12/082,182 호 "IN-LOOP ADAPTIVE WIENER FILTER FOR VIDEO CODING AND DECODING" 및 2008년 4월 11일자로 출언된 Chui 및 Xu의 미국 특허 출원 제 12/082,561 호 "ADAPTIVE FILTERING FOR BIT-DEPTH SCALABLE VIDEO CODEC"(대리인 서류 번호 P27258 및 P27259)(집합적으로 이하 "참조문헌")에 개시된 비디오 인코더로부터의 인코더 시스템(100)에 입력 픽셀 및 비디오 영역으로부터의 재구성된 픽셀("rec.pixel")이 제공될 수 있다. 또한, 2008년 4월 8일자로 출원된 Chui 및 Xu의 미국 특허 출원 제 12/082,182 호 "IN-LOOP ADAPTIVE WIENER FILTER FOR VIDEO CODING AND DECODING"의 도 1에 관해 설명된 바와 같은 비디오 인코더 루프가 입력 픽셀 및 재구성된 픽셀에 제공될 수 있다.
적응 위너 필터(112)는 계수 추정 로직(102), 양자화기(104), 전체/로컬 필터 선택 로직(106), 필터 유형 선택 로직(108) 및 필터 계수 예측 및 엔트로피 코더 선택 로직(110) 각각에 의해 선택되는 파라미터에 따른 비디오 영역을 인코딩할 수 있다. RD 값 계산기(114)는 선택된 파라미터를 사용하여 비디오 영역에 적응 위너 필터링을 적용하기 위한 레이트 왜곡(Rate-Distortion, RD)을 결정할 수 있다. 또한, RD 값 계산기(114)는 적응 위너 필터가 적용되지 않을 때에 대한 RD 값을 결정한다. RD 값 계산기(114)가 최저 RD 값이 적응 위너 필터링을 사용하지 않는 것과 관련된다고 결정하면, 비디오 영역은 인코더(100)에 의해 적응 위너 필터링을 적용하지 않고 전송된다. RD 값 계산기(114)가 최저 RD 값이 적응 위너 필터링의 사용과 관련된다고 결정하면, 최저 RD 값과 관련되는 파라미터는 디코딩을 위해 이러한 파라미터에 따라 인코딩되는 비디오와 함께 저장 장치 또는 전송 매체로 전송된다. 비디오 영역은 순차적 레벨, 그림 그룹(GOP) 레벨, 그림 레벨, 슬라이스 레벨, 매크로블록 레벨, 블록 레벨 또는 임의의 그림 영역일 수 있다.
계수 추정 로직(102)은 적응 위너 필터(112)가 적용될 필터 계수를 결정할 수 있다. 계수 추정 로직(102)이 계수를 결정하는 한 가지 방식이 참조 문헌에 설명되어 있다. 계수 추정 로직(120)는 비디오 영역의 픽셀 세기에 기초하여 계수를 결정할 수 있다. 계수 추정 로직(102)은 M×N 차원일 수 있는 계수 행렬을 결정할 수 있다. 예를 들어, 계수 행렬 크기는 3×3, 5×5, 7×7 또는 9×9 또는 다른 크기일 수 있지만 대칭적일 필요는 없다. 계수 추정 로직은 그 부동점 계수 행렬을 양자화기(104)로 출력한다.
양자화기(104)는 계수 추정 로직(102)에 의해 결정되는 부동점 필터 계수를 양자화함으로써 고정점 계수를 결정할 수 있다. 다양한 양자화 스텝(quantization step)이 사용될 수 있는데, 예를 들어, 8비트, 10비트, 12비트 또는 다른 단계 값의 단계가 사용될 수 있다. 많은 양자화 스텝을 사용함으로써 왜곡을 감소시킬 수 있지만 더 많은 비트를 생성하여 필터 계수를 전송하기 위해 사용되는 비트 레이트를 증가시킬 수 있다.
전체/로컬 필터 선택 로직(106)은 하나 이상의 전체 필터 테이블 및 하나 이상의 로컬 필터 테이블을 사용하여 그림의 필터링 및/또는 그림의 영역을 선택할 수 있다. 전체/로컬 필터 선택 로직(106)은 양자화기(104)로부터 양자화 계수를 사용할 수 있다. 전체 필터 테이블은 그림으로부터의 픽셀로부터 생성될 수 있다. 로컬 필터는 그림의 영역으로부터의 하나 이상의 픽셀으로부터 생성될 수 있다. 더 많은 로컬 필터 테이블을 사용함으로써 왜곡을 감소시킬 수 있지만 필터 계수를 전송하기 위해 사용되는 비트 수를 증가시킬 수 있다.
필터 유형 선택 로직(108)는 2-D 분리 불가능한 필터, 1-D 분리 가능한 필터 및/또는 대칭 필터와 같은 적용할 다양한 위너 필터 유형들 중 적어도 하나를 선택할 수 있다.
필터 계수 예측 및 엔트로피 코더 선택 로직(110)는 양자화 계수, 선택된 필터 테이블 및 필터 유형에 적용할 다양한 예측 및 인코딩 모드들 중 하나를 선택할 수 있다. 일반적으로 필터 계수는 공간적 및 시간적 상관을 갖는다. 필터 계수 예측을 위해, 필터 계수 예측 및 엔트로피 코더(110)는 공간 계수 예측, 시간 계수 예측, 공간-시간 계수 예측, 직접 모드(계수 예측 없음) 중 적어도 하나를 사용하여 필터 계수를 전송함으로써 야기되는 비트레이트를 감소시킬 수 있다.
엔트로피 코딩을 위해, 필터 계수 예측 및 엔트로피 코더 선택 로직(110)는 Exp-Golomb 코드, 고정 길이 코드 및 크기-값 코드 중 하나를 선택할 수 있다. 다른 엔트로피 코딩 모드 및/또는 추가 엔트로피 코딩 모드가 적용될 수 있다. 고정된 길이 코드를 결정하는 것은 최대 절대 값(C)를 갖는 위너 필터 계수를 발견하고, Ceil(log2(C+1))+1을 사용하여 모든 계수를 인코딩하는 것과, Exp-Golomb 코드를 사용하여 Ceil(log2(C+1))+1의 수를 인코딩하는 것과, 디코더로 코드를 전송하는 것을 포함할 수 있다. 함수 Ceil은 더 높은 정수로 반올림하는 것을 포함할 수 있다.
크기-값 코드를 결정하는 것은 다음을 포함할 수 있다. 다음은 계수의 크기(즉, 계수의 비트 수)를 인코딩하는 데에 사용될 수 있는데, 절대 값(C)를 갖는 각 계수에 대해 그 크기를 동일한 Ceil(log2(C+1))+1로 코딩하고 Exp-Golomb 코드를 사용한다. 크기-값 코드의 값을 인코딩하기 위해, 고정된 길이 코딩이 사용된 다. 계수 값이 음수이면, 코딩된 값은 (1<<Ceil(log2(C+1)))-C)이다. 계수 값이 음수가 아니면, 코딩된 값은 계수의 값이다.
계수 추정 로직(102), 양자화기(104), 전체/로컬 필터 선택부(106), 필터 유형 선택부(108), 및 필터 계수 예측 및 엔트로피 코더(110)의 각각은 특정 비디오 영역의 인코딩을 위해 선택된 파라미터를 적응 위너 필터(112) 및 RD 값 계산기(114)로 제공할 수 있다.
적응 위너 필터(112)는 로직(102-110)에 의해 선택된 파라미터에 기초하여 재구성된 픽셀에 적응적 필터링을 적용하고 필터링된 픽셀을 출력할 수 있다. 위너 필터는 랜덤 노이즈를 통해 모델링된 재구성된 신호와 소스 신호 사이의 최저 평균 제곱 에러를 달성할 수 있는 필터이다. 일 실시예에서, 적응 위너 필터(112)는 아래의 식 (1)을 적용함으로써 재구성된 픽셀을 필터링할 수 있다. 적응 위너 필터(112)의 일 실시예가 참조 문헌에 설명되어 있다. 적응 위너 필터(112)는 필터링된 픽셀, P'x,y 를 RD 값 계산기(114)로 출력한다.
여기서, P x,y 는 재구성된 픽셀을 나타내며,
C i,j 는 Q x,y 와 P' x,y 사이의 왜곡을 최소화하여 얻어지는 양자화기(104)로부터 양자화 계수를 나타내고, Q x,y 는 인코더(100)로의 입력 픽셀을 나타낸다.
적응 위너 필터(112)는 참조 문헌에서 설명되는 방식으로 P x,y 와 Q x,y 사이의 왜곡을 감소시킬 수 있다. 적응적 필터(112)는 메모리로의 저장 또는 전송을 위해 설정된 각 파라미터를 사용하여 인코딩된 비디오를 출력한다.
RD 값 계산기(114)는 적응 위너 필터(112)에 의해 적용된 모든 파라미터 순열에 대한 RD 값을 결정할 수 있고, 최저 RD 값을 얻게 하는 파라미터를 선택할 수 있다. 각 파라미터 순열에 대해, RD 값 계산기(114)는 식(2)로부터 각 순열에 대한 RD 값을 결정할 수 있다.
여기서,
R(Pass)은 필터 계수의 비트 레이트이고,
D는 SSD(Sum of Squared Difference)이며,
λ는 합력 결정을 위한 라그랑지 인수(a Lagrangian factor)이다.
예를 들어, Pass1은 적응 위너 필터(112)를 사용하지 않게 하고 Pass2는 적응 위너 필터(112)를 사용하게 하자. 그러면, D와 R은 다음과 같이 표현된다.
D(Pass1) = SSD(P
x,y
, Q
x,y
)
R(Pass1) = 0
D(Pass2) = SSD(P'
x,y
, Q
x,y
)
R(Pass2) = Bits = Bits(C
i,j
)
RD 값 계산기(114)는 적응 위너 필터(112)의 사용이 최저 RD 값을 얻게 하는지를 판단한다. 적응 위너 필터(112)의 사용이 최저 RD 값을 얻게 하지 못하는 경우, 비디오 영역은 적응 위너 필터(112)에 의해 인코딩하지 않고 전송된다. 적응 위너 필터(112)의 사용이 최저 RD 값을 얻게 하는 경우, RD 값 계산기는 이러한 파 라미터에 따라 인코딩되는 비디오 영역을 갖는 최저 RD 값을 얻게 하는 적응 위너 필터(112)에 의해 적용된다. RD 값 계산기(114)는 선택된 파라미터 설정을 비트 스트림으로 인코딩하고 이 비트 스트림을 스토리지 또는 디코더를 전송할 수 있다.
도 1의 인코더는, 예를 들어, 압축 표준 H.264(향상된 비디오 코덱(AVC) 및 MPEG-4 파트 10)과 일치할 수 있다. H.264 표준은 JVT(Joint Video Team)에 의해 준비되어 왔는데, 이는 VCEG(Video Coding Expert Group)으로도 알려진 ITU-T SG16 Q.6을 포함하며, MPEG(Motion Picture Expert Group)으로 알려진 ISO-IEC JTC1/SC29/WG11(2003)에 관한 것이다. H.264는 디지털 TV 방송, 직접 방송 위성 비디오, 디지털 가입자 회선 비디오, 대화형 저장매체, 멀티미디어 메시징, 디지털 지상 TV 방송 및 원격 영상 감시 분야에서의 적용을 위해 설계되며, 몇몇 예를 언급한다.
일 실시예는 H.264 비디오 코딩과 일치할 수 있지만, 본 발명이 이에 한정되는 것은 아니다. 대신, 실시예는 MPEG-2(스위스 제네바 국제 표준화 기구로부터 입수 가능한 ISO/IEC 13818-1(2000) MPEG-2) 및 VCI(뉴욕 10601 SMPTE 화이트 플레인즈로부터 입수 가능한 SMPTE 421M(2006))를 포함하는 영상 압축 시스템에서 사용될 수 있다.
도 2는, 본 발명의 실시예에 따른, 양자화 스텝 파라미터를 선택할 수 있는 양자화기(200)의 실시예를 도시하고 있다. 예를 들어, 양자화기(200)는 계수 추정 로직(102)로부터의 계수에 적용하기 위해 Q0, Q1 내지 Qn 사이의 임의의 양자화 스텝을 선택할 수 있다. 양자화기(200)는 적응 위너 필터(112) 및 RD 값 계산기(114)에 양자화 스텝 파라미터를 통신할 수 있다.
도 3은 본 발명의 일 실시예에 따른, 필터 설정 선택 로직(300)의 실시예를 도시하고 있다. 예를 들어, 필터 설정 선택 로직(300)는 S0 내지 Sn 사이에 설정된 임의의 필터 테이블을 선택할 수 있다. 필터 테이블은 전체 필터 테이블과 로컬 필터 테이블 사이에서 선택될 수 있다. 필터 설정 선택 로직(300)는 적응 위너 필터(112)와 RD 값 계산기(114)에 필터 테이블 설정 파라미터를 통신할 수 있다.
도 4는 본 발명의 실시예에 따른, 필터 유형 선택 로직(400)의 실시예를 도시하고 있다. 예를 들어, 필터 유형 선택 로직(400)는 T0 내지 Tn 사이의 임의의 필터 유형을 선택할 수 있다. 필터 유형은 적어도 하나의 2-D 분리 불가능한 필터, 1-D 분리 가능한 필터, 비대칭 필터 및/또는 대칭 필터 사이로부터 선택될 수 있다. 필터 유형 선택 로직(400)는 적응 위너 필터(112) 및 RD 값 계산기(114)로 필터 유형 파라미터를 통신할 수 있다.
도 5는 본 발명의 실시예에 따른, 계수 예측 선택 로직(500)의 실시예를 도시하고 있다. 계수 예측 로직(500)는 직접 모드(계수 예측 없음), 공간 계수 예측, 시간적 계수 예측 및 공간-시간적 계수 예측 중 하나를 선택할 수 있다. 계수 예측 선택 로직(500)는 선택된 계수 예측 모드를 적응 위너 필터(112) 및 RD 값 계산기(114)로 선택된 계수 예측 모드를 전송할 수 있다.
도 6은 본 발명의 실시예에 따른, 엔트로피 코더(600)을 도시하고 있다. 엔트로피 코더(600)는 Exp-Golomb 코드, 고정된 길이 코드 및 크기-값 코드 중 하나를 선택하여 선택된 필터 유형, 필터 세트 및 양자화 계수에 적용할 수 있다. 엔 트로피 코더(600)는 적응 위너 필터(112) 및 RD 값 계산기(114)에 선택된 엔트로피 코딩 모드를 전송할 수 있다.
도 7은, 본 발명의 일 실시예에 따른, 원하는 레이트 왜곡 값을 얻게 하는 인코더 파라미터를 결정하는 데에 사용될 수 있는 예시적 흐름도이다. 블록(702)은 인코더에서 비디오 영역을 수신하는 단계를 포함할 수 있다. 비디오 영역은 하나 이상의 그림, 슬라이스, 매크로블록, 블록 또는 픽셀을 포함할 수 있다.
블록(704)은 적응 위너 필터가 사용되지 않을 때에 비디오 영역의 레이트-왜곡 값을 결정하는 단계를 포함할 수 있다. 레이트-왜곡 값은 식(1)을 사용하여 측정될 수 있다.
블록(706)은 새로운 파라미터 세트를 사용하여 적응 위너 필터링을 사용하여 비디오 영역을 인코딩하는 단계를 포함할 수 있다. 적응적 필터링은 그림의 일부, 그림 전체 또는 복수의 연속적인 그림에서의 픽셀 세기의 분석에 의존 또는 기초하는 콘텐츠인 필터링을 포함할 수 있다. 예를 들어, 수신되는 비디오 정보의 유형, 그래픽 또는 스트림 뷰 비디오는 상이한 유형의 비디오에 대한 위너 필터의 상이한 탭을 얻는다. 따라서, 적응적 필터 탭은 주어진 그림 부분, 그림 또는 일련의 그림의 각 픽셀의 세기의 관찰의 결과이다. 파라미터는 다양한 계수, 양자화 레벨, 필터 크기, 필터 유형, 계수 예측 및 엔트로피 코딩들 사이로부터 선택될 수 있다. 예를 들어, 파라미터는 인코더(100)의 요소(102-110)에 관해 설명되는 것과 유사한 방식으로 선택될 수 있다.
블록(708)은 새로운 파라미터 세트를 사용하여 적응 위너 필터링으로부터 얻 어지는 비디오 영역에 대한 레이트-왜곡 값을 결정하는 단계를 포함할 수 있다.
블록(710)은 현재 인코더 파라미터 세트에 대한 레이트-왜곡 값이 최저 측정된 레이트 왜곡 값인지를 판단하는 단계를 포함할 수 있다. 레이트-왜곡 값이 최저인 경우, 블록(712)은 블록(710)에 이어진다. 레이트-왜곡 값이 최저가 아닌 경우, 블록(714)은 블록(710)에 이어진다.
블록(712)은 현재 레이트-왜곡 값에 대한 레이트-왜곡 값을 최저 측정된 레이트-왜곡 값으로 설정하는 단계를 포함할 수 있다. 또한, 블록(712)은 최저 측정된 레이트-왜곡 값과 관련되는 인코더 파라미터를 식별하는 단계를 포함할 수 있다.
블록(714)은 모든 파라미터 세트가 적응 위너 필터에 의해 적용되었는지를 판단하는 단계를 포함할 수 있다. 모든 파라미터 세트가 적응 위너 필터에 의해 적용된 경우, 블록(716)은 블록(714)에 이어질 수 있다. 모든 파라미터 세트가 인코더에 의해 적용되지 않은 경우, 블록(706)은 블록(714)에 이어질 수 있다.
블록(716)은 최저 레이트-왜곡 값을 얻게 하는 현재 비디오 영역에 대한 필터 파라미터 세트를 전송하는 단계를 포함할 수 있다. 필터 파라미터는 최저 레이트-왜곡 값을 얻게 하는 필터 파라미터 세트를 사용하여 처리되는 비디오 영역을 사용하여 전송될 수 있다. 예를 들어, 프레임 버퍼는 모든 필터 파라미터 세트를 사용하여 인코딩되는 현재 비디오 영역을 저장할 수 있다. 프레임 버퍼는 모든 인코더 파라미터 세트로 인코딩된 최저 측정된 비디오 영역에 대응하는 필터 파라미터 세트로 인코딩된 비디오 영역을 전송할 수 있다.
그러나, 적응 위너 필터링을 사용하지 않는 것과 관련되는 레이트 왜곡이 최저 레이트 왜곡 값인 경우, 적응 위너 필터링은 비디오 영역에 적용되지 않으며 필터 파라미터는 비디오 영역을 사용하여 전송되지 않는다.
도 8을 참조하면, 도 1 내지 도 6에 도시된 인코더와 로직은, 일 실시예에서, 그래픽 프로세서(812)의 일부일 수 있다. 본 발명의 실시예는, 마더보드를 사용하여 상호접속되는 마이크로칩 또는 집적회로, 하드와이어드 로직, 메모리 소자에 의해 저장되고 마이크로프로세서에 의해 실행되는 소프트웨어, 펌웨어, 주문형 집적 회로(ASIC) 및/또는 FPGA(a field programmable gate array) 중 하나 또는 그 조합으로 구현될 수 있다. "로직"이라는 용어는 예시적으로 소프트웨어 또는 하드웨어 및/또는 소프트웨어와 하드웨어의 조합을 포함할 수 있다.
소프트웨어로 구현하는 경우, 메인 메모리(832)를 포함하는 임의의 적합한 반도체, 자기 또는 광학 메모리에 적합한 코드가 저장될 수 있다. 따라서, 일 실시예에서, 소스 코드(839)는 메인 메모리(832)와 같은 머신 판독 가능한 메체에 저장될 수 있으며, 프로세서(800) 또는 그래픽 프로세서(812)와 같은 프로세서에 의해 실행된다.
컴퓨터 시스템(830)은 버스(804)에 의해 칩셋 코어 로직(810)에 연결되는 하드 드라이브(834) 및 제거 가능한 매체(836)를 포함할 수 있다. 코어 로직은 일 실시예에서 (버스(805)를 통해) 그래픽 프로세서(812)와 메인 프로세서(800)에 연결될 수 있다. 또한, 그래픽 프로세서(812)는 버스(806)에 의해 프레임 버퍼(814)에 연결될 수 있다. 프레임 버퍼(814)는 버스(807)에 의해 디스플레이 스크 린(818)에 연결되어, 키보드 또는 마우스(820)와 같은 종래 구성요소에 버스(808)에 의해 연결될 수 있다.
그래픽 및/또는 비디오 프로세성 기술은 다양한 하드웨어 아키텍처로 구현될 수 있다. 예를 들어, 그래픽 및/또는 비디오 기능성이 한 칩셋 내에서 통합될 수 있다. 이와 달리, 분리된 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또 다른 실시예로서, 그래픽 및/또는 비디오 기능은 멀티코어 프로세서를 포함하는 범용 프로세서에 의해 구현될 수 있다. 다른 실시예에서, 소비자 전자 장치로 기능성이 구현될 수 있다.
본 발명의 실시예에는 머신-실행 가능한 인스트럭션을 저장한 하나 이상의 머신-판독 가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있는데, 컴퓨터, 컴퓨터 네트워크 또는 기타 전자 장치와 같은 하나 이상의 머신에 의해 실행되면 본 발명의 실시예에 따른 동작을 수행하는 하나 이상의 머신을 얻을 수 있다. 머신-판독 가능한 매체는 플로피 디스켓, 광 디스크, CD-ROM(Compact Disc-Read Only Memories), 및 자기-광 디스크, ROM(Read Only Memories), RAM(Random Access Memories), EPROM(Erasable Programmable Read Only Memories), EEPROM(Electrically Erasable Programmable Read Only Memories), 자기 또는 광학 카드, 플래시 메모리 또는 다른 유형의 머신-실행 가능한 인스트럭션을 저장하기에 적합한 매체/머신-판독 가능한 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다.
도면과 전술한 설명은 본 발명의 예를 제공하였다. 몇몇의 다른 기능적 아 이템으로서 도시되어 있지만, 당업자는 이러한 요소 중 하나 이상이 단일 기능적 요소로 조합될 수 있다는 것을 인식할 것이다. 이와 달리, 소정 요소들이 다수의 기능적 요소들로 분할될 수 있다. 일 실시예로부터의 요소가 다른 실시예에 추가될 수 있다. 예를 들어, 본 명에서세서 설명되는 프로세서의 순서는 변경될 수 있으며 본 명세서에서 설명되는 방식으로 한정되지 않는다. 또한, 임의의 흐름도의 동작은 도시된 순서대로 구현될 필요가 없으며, 모든 동작이 반드시 수행되어야 하는 것도 아니다. 또한, 이들 동작은 다른 동작에 의존하지 않으며 다른 동작과 나란히 수행될 수 있다. 그런, 본 발명의 범위는 이들 예에 의해 제한되는 것이 아니다. 명세서에 명시적으로 제공되었든 그렇지 않든 간에 구조, 크기 및 재료의 사용의 차이와 같은 많은 변형이 가능하다. 본 발명은 최소한 다음의 청구범위에 의해 제공되는 범위를 갖는다.