KR100429020B1 - Mpeg-4 영상의 복호 방법 - Google Patents

Mpeg-4 영상의 복호 방법 Download PDF

Info

Publication number
KR100429020B1
KR100429020B1 KR10-2002-0006563A KR20020006563A KR100429020B1 KR 100429020 B1 KR100429020 B1 KR 100429020B1 KR 20020006563 A KR20020006563 A KR 20020006563A KR 100429020 B1 KR100429020 B1 KR 100429020B1
Authority
KR
South Korea
Prior art keywords
error
macroblock
decoding
mpeg
vop
Prior art date
Application number
KR10-2002-0006563A
Other languages
English (en)
Other versions
KR20030066225A (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 KR10-2002-0006563A priority Critical patent/KR100429020B1/ko
Priority to US10/287,358 priority patent/US7212575B2/en
Priority to JP2002381449A priority patent/JP2003289541A/ja
Publication of KR20030066225A publication Critical patent/KR20030066225A/ko
Application granted granted Critical
Publication of KR100429020B1 publication Critical patent/KR100429020B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • H04N19/895Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder in combination with error concealment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • H04N19/68Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience involving the insertion of resynchronisation markers into the bitstream
    • 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/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 데이터 분할된 심플 프로파일의 MPEG-4 디지털 영상을 복호하는 방법에 관한 것이다. 특히, 무선 전송 환경과 같이 전송 채널에서 복구 불가능한 에러가 첨가될 수 있는 환경에서 MPEG-4가 제공하는 에러 내성 알고리즘을 적절히 이용하여 저렴한 비용으로 합리적인 에러 내성을 갖는 MPEG-4 영상 복호기를 구현하는 방법에 관한 것이다.
본 발명에 따르면, 비트 에러가 발생하는 전송 환경에서 데이터 분할된 MPEG-4 영상 비트스트림을 복호하는 방법에 있어서, 입력되는 영상 비트스트림에서 다음 차례의 VP(비디오 패킷)/VOP(프레임)의 시작 코드를 탐색하는 단계와; 상기 탐색된 VP/VOP 시작코드에 이어지는 다음의 VP/VOP 헤더들을 복호하는 단계와; 현재 VP의 MBA(매크로블록 어드레스)와 다음 VP의 MBA를 이용하여 MBA에 에러의 유무를 확인하는 단계와; 상기 단계들을 통하여 MBA의 범위가 정해진 VP를 대상으로 에러의 유무를 스캔(에러 검출)하는 단계와; 상기 VP 스캔의 결과에 따라 현재 VP의 각 매크로블록에 대하여 정상적으로 복호를 수행하거나 에러은닉을 수행하는 단계를 포함하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법이 제시된다.

Description

MPEG-4 영상의 복호 방법{Method for decoding of MPEG-4 video}
본 발명은 데이터 분할된 심플 프로파일의 MPEG-4 디지털 영상을 복호하는 방법에 관한 것이다. 보다 상세하게는 무선 전송 환경과 같이 전송 채널에서 복구 불가능한 에러가 첨가될 수 있는 환경에서 MPEG-4가 제공하는 에러 내성 알고리즘을 적절히 이용하여 저렴한 비용으로 합리적인 에러 내성을 갖는 MPEG-4 영상 복호기를 구현하는 방법에 관한 것이다.
이러한 방법은 MPEG-4 에러 내성 도구를 하드웨어로 구현하면서 설계 비용이나 복잡도를 크게 증가시키지 않고도 무선 전송 환경에서 수신 영상의 화질을 어느 정도 수준으로 유지하는 데 유용하게 쓰일 수 있다.
초저비트율에서의 전송이 가능하도록 설계되어 1999년 표준이 완성된 MPEG-4는 무선 전송환경에서 사용되는 것을 고려하였기 때문에 채널에서 생길 수 있는 복구 불가능한 에러에 대해 내성을 가질 수 있는 도구들이 포함되어 있고, 이들은 심플 프로파일부터 의무적으로 지원해야 하는 항목들이다.
MPEG-4 표준은 다음 3가지의 에러 내성 알고리즘을 지원한다.
첫째, 재동기(resynchronization) 마커는 비트스트림 복호시에 에러 전파를저지하기 위하여 특정 비트패턴으로 구성되는 고정장부호(fixed length code)를 비트스트림 내에 배치하여 올바르게 복호가 개시될 수 있는 점을 표시하는 용도로 사용된다. 이 재동기마커는 가변장부호들의 어떤 조합과도 일치하지 않는 유일한 비트패턴으로 구성된다. 이 재동기마커를 이용하여 하나의 프레임은 몇 개의 비디오 패킷으로 나눠지고(도 1 참조), 하나의 비디오 패킷에 에러가 발생하더라도 다음 비디오 패킷은 독립적으로 복호될 수 있다.
둘째, 데이터분할(data partition)은 비디오 패킷 내에서 정보의 전달 순서를 변경함으로써 에러 내성을 향상시키는 기술로서 보다 좋은 에러 은닉을 위해 제공된다. 데이터분할 기법이 사용되면, 비디오 패킷에 포함된 매크로블록 헤더 정보 중에서 중요한 정보를 비디오 패킷의 전반부에 놓고, 나머지는 후반부에 배치한다. 그리고 그 두 부분의 사이에 특정 비트열을 넣어 전반부에 들어 있는 정보의 에러 유무를 판정할 수 있다.(도 2 참조)
세째, 리버서블(reversible) 가변장부호화는 비디오 패킷 내에서 에러를 국소화시키는 기술이다. 순방향으로 복호를 하다 에러가 검출되면 다음 비디오 패킷의 재동기마커를 찾은 다음 역방향으로 복호를 한다.(도 3 참조)
MPEG-4 표준의 annex E는 위에서 언급한 에러 내성 알고리즘을 기본으로 하여, 다음과 같이 에러 복원을 위한 복호기의 동작을 제시한다.
1. 일반적인 오류 검출에는 VLC 표에 없는 비트스트림이 입력되었을 때와; 한 블록에 64개가 넘는 DCT 계수가 복호되었을 때 및; 앞뒤가 맞지 않는 재동기 헤더 정보(예를 들어, 양자화계수가 범위를 벗어난 경우 이전 VP의 MBA가 큰 현재 VP의 MBA보다 큰 경우 등) 등이 해당한다.
2. 재동기화(Resynchronization)에는 비트스트림에 에러가 발생하면 복호기는 다음에 나오는 재동기 시점(VOP 시작 코드 또는 재동기마커)을 찾는다. 그리고 그 VP의 뒤에 따라오는 비트열을 통해 그 VP에 에러가 있는지 조사한다. 만약 VP의 마지막 부분에 8개 이상의 1이 연속되거나 " 0111..."의 모양이 아니라면 그 VP에 에러가 포함되어 있음을 의미한다. 이 때, 비트스트림이 유실된 블록은 이전 프레임의 같은 위치의 블록으로 대체될 수 있다.
3. 리버서블가변장부호(RVLC)에서는 비트스트림에 에러가 검출되었을 때, 리버서블가변장부호를 복호하는 방법에 대하여 기술하기로 한다.
3-1. 순방향 및 역방향 복호에서 에러를 검출하기 위한 기준은 다음과 같은 경우 에러로 간주한다.
* RVLC 표에 없는 비트스트림이 나왔을 때
* 한 블록에서 64개가 넘는 DCT 계수가 복호되었을 때
3-2. RVLC 복호 전략에서 비트스트림은 먼저 순방향으로 복호된다. 그리고 나서 에러가 검출되지 않으면 비트스트림이 유효한 것으로 가정하고 그 VP에 대한 복호를 마친다. 그러나 에러가 검출되었다면 양방향 복호가 적용된다. 다음 전략을 이용해서 어떤 비트들을 버리고 어떤 비트들을 이용할 것인지를 결정할 수 있다. 이 때, 아래 주어진 정의들이 사용된다.
* L : 하나의 VP에서 DCT 계수 부분에 해당되는 총 비트수
* N : 하나의 VP에서 매크로블록의 총 개수
* L1 : 순방향 복호에서 에러 검출 전까지 복호될 수 있는 비트수
* L2 : 역방향 복호에서 에러 검출 전까지 복호될 수 있는 비트수
* N1 : 순방향으로 완전히 복호될 수 있는 매크로블록의 개수(0<=N1<=(N-1))
* N2 : 역방향으로 완전히 복호될 수 있는 매크로블록의 개수(0<=N2<=(N-1))
* f_mb(S) : S 비트가 순방향으로 복호될 수 있을 때 복호되는 매크로블록의 개수. 매크로블록 내에서 한 비트 이상이 복호될 수 있으면 f_mb(S)는 카운트된다.
* b_mb(S) : S 비트가 역방향으로 복호될 수 있을 때 복호되는 매크로블록의 개수. 매크로블록 내에서 한 비트 이상이 복호될 수 있으면 b_mb(S)는 카운트된다.
* T : 90
(1) 전략 1 : L1+L2 < L이고 N1+N2 < N일 때
; 앞쪽 f_mb(L1-T) 개의 매크로블록과 뒤쪽 b_mb(L2-T) 개의 매크로블록은 복호에 사용되고, 나머지 부분인 도 4의 빗금친 부분은 버린다.
(2) 전략 2 : L1+L2 < L이고 N1+N2 >= N일 때
; 앞쪽 N-N2-1 개의 매크로블록과 뒤쪽 N-N1-1 개의 매크로블록은 복호에 사용되고, 나머지 부분인 도 5의 빗금친 부분은 버린다.
(3) 전략 3 : L1+L2 >= L이고 N1+N2 < N일 때
; 앞쪽 N-b_mb(L2) 개의 매크로블록과 뒤쪽 N-f_mb(L1) 개의 매크로블록은 복호에 사용되고, 나머지 부분인 도 6의 빗금친 부분은 버린다.
(4) 전략 4 : L1+L2 >= L이고 N1+N2 >= N일 때
; 앞쪽 Min{N-b_mb(L2), N-N2-1} 개의 매크로블록과 뒤쪽 Min{N-f_mb(L1),N-N-1} 개의 매크로블록은 복호에 사용되고, 나머지 부분인 도 7의 빗금친 부분은 버린다. 여기서 Min{A, B}는 A와 B 중 크지 않은 것을 의미한다.
그러나, 상기와 같은 종래 기술들은 다음과 같은 문제점들을 초래한다.
1) 어떤 VP에 대해 비트스트림이 들어오는대로 복호를 시작하기 때문에 그 VP에 포함되는 매크로블록의 개수를 모르는 상태로 복호를 하게 된다. 그런 상태로 에러가 섞인 first part를 복호할 경우, 에러 때문에 복호되는 길이가 틀려지고, 그 결과로 에러가 검출되지 않으면서 DC_MARKER나 MOTION_MARKER도 검출되지 않을 수 있다.
따라서 first part 헤더의 에러를 검출하기 위해 실제 first part의 길이 보다 더 많은 비트스트림을 복호해야 하는 경우가 생기고, 그것이 복호 시간 증가로 이어지는 문제점이 있다.
또한 DC_MARKER나 MOTION_MARKER는 first part에 사용되는 VLC의 조합으로 나타낼 수 있기 때문에 VP의 매크로블록 개수를 모를 경우, 별도의 시간을 들여 DC_MARKER나 MOTION_MARKER의 위치를 먼저 탐색하지 않는 한 그것들을 제대로 이용하지 못하는 문제점도 있다.
2) VP 텍스처를 복호하다가 에러가 검출될 경우 그 에러가 발생한 지점까지 텍스처를 복호했던 결과가 쓸모 없어지게 된다.
따라서 무선 전송 환경처럼 비트에러율이 비교적 높은 채널에 대해서 비디오 패킷의 복호를 바로 시작하는 것은 복호 시간의 증가로 이어지는 문제점이 있다.
또한 VP를 복호하는 것이 실제 복호 회로에 있어서, 내부 및 외부의 여러 메모리에 대한 접근을 요구할 경우 전력 소모를 증가시키는 문제점도 있다.
3) 도 4 내지 도 7 까지의 리버서블가변장부호의 복호 전략에서 f_mb(S)와 b_mb(S)의 의미는 실제로 복호 시스템에서 바로 통할 수 없는 문제점이 있다. 왜냐하면 각 매크로블록마다 비트 길이가 다르기 때문에 이 기호에 각 매크로블록의 길이를 반영하는 또는 그에 준하는 과정이 필요하다. 본 발명은 그 과정을 간단하게 수행하는 방법을 제안한다.
4) 데이터 분할된 VP의 first part가 second part 헤더와 DC_MARKER 또는 MOTION_MARKER로 구분된 것과 달리 second part 헤더는 second part의 텍스처와 아무 구분 없이 연결된다. 게다가 second part 헤더는 리버서블가변장부호에 비해 에러 검출이 잘 되지 않는 일반적인 가변장부호화로 이루어져 있어 에러 검출이 되지 않을 확률이 크다.
따라서 second part 헤더의 에러를 검출하지 못해서, 그것이 그대로 복호에 반영될 경우 화질의 저하를 가져오는 문제점이 있다. 예를 들어 P-VOP의 second part 헤더에 들어 있는 DC 계수의 에러가 검출되지 않았을 경우 해당 블록은 주변과 눈에 띄게 다른 색을 나타낼 수 있다.
5) 비디오 패킷에서 검출된 에러를 은닉하기 위해 에러 은닉할 매크로블록을 항상 이전 프레임의 데이터로 대체하는 것은 아주 간단하고 쉬운 방법이다.
그러나 움직임이 빠르거나 장면 전환이 잦은 동영상의 경우, 이전 프레임의 데이터는 현재 프레임의 데이터와 많은 차이가 있으므로, 에러가 발생한 부분이 주변과 맞지 않게 전혀 엉뚱하게 은닉될 수 있는 문제점이 있다. 또한 그 부분이 이후 프레임에 계속 영향을 주게 될 수 있는 문제점도 있다.
따라서, 본 발명은 상기한 문제점을 해결하기 위한 것으로서 본 발명의 목적은 비트 에러가 첨가될 수 있는 전송 환경에서 MPEG-4가 제공하는 에러 내성 알고리즘을 적절히 이용하여 저렴한 비용으로 합리적인 에러 내성을 갖는 MPEG-4 영상 복호기를 구현하는 방법을 제공하는데 있다.
상기한 본 발명의 목적을 달성하기 위한 기술적 사상으로써 본 발명은
비트 에러가 발생하는 전송 환경에서 데이터 분할된 MPEG-4 영상 비트스트림을 복호하는 방법에 있어서,
입력되는 영상 비트스트림에서 다음 차례의 VP(비디오 패킷)/VOP(프레임)의 시작 코드를 탐색하는 제 1단계와;
상기 탐색된 VP/VOP 시작코드에 이어지는 다음의 VP/VOP 헤더들을 복호하는 제 2단계와;
현재 VP의 MBA(매크로블록 어드레스)와 다음 VP의 MBA를 이용하여 MBA에 에러의 유무를 확인하는 제 3단계와;
상기 제 1,2,3단계들을 통하여 MBA의 범위가 정해진 VP를 대상으로 에러의 유무를 스캔(에러 검출)하는 제 4단계와;
상기 VP 스캔의 결과에 따라 현재 VP의 각 매크로블록에 대하여 정상적으로 복호를 수행하거나 에러은닉을 수행하는 제 5단계를 포함하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법을 제공한다.
도 1 내지 도 3은 종래 MPEG-4에서 제공하는 에러 내성 도구의 재동기마커, 데이터분할, 리버서블가변장부호화를 각각 설명하기 위한 개략도이다.
도 4 내지 도 7은 종래 리버서블가변장부호(RVLC)의 복호 전략들을 각각 설명하기 위한 개략도이다.
도 8은 본 발명에 따라 비트 에러가 발생하는 전송 환경에서 데이터 분할된 MPEG-4 영상의 복호 과정을 설명하기 위한 순서도이다.
도 9는 도 8에 도시된 비디오 패킷(VP) 스캔의 상세한 과정을 설명하기 위한 순서도이다.
도 10은 도 9에 도시된 VP 내에서 에러 은닉할 매크로블록 결정의 상세한 과정을 설명하기 위한 순서도이다.
도 11은 도 8에 도시된 VP 복호의 상세한 과정을 설명하기 위한 순서도이다.
도 12는 본 발명에 따라 여러 가지의 경우에 대한 에러 은닉 방법을 설명하기 위한 도표이다.
도 13은 본 발명에 따라 각각의 에러 은닉 방법에 대한 매크로블록 헤더 및 제어변수 설정 방법을 설명하기 위한 도표이다.
도 14는 본 발명에 따라 에러 은닉 방법이 적용된 MPEG-4 영상 텍스처 복호기의 실시예를 나타낸 블록도이다.
도 15 및 도 16은 본 발명에 의한 에러 은닉 성능 향상의 실시예를 나타낸 것이다.
이하, 본 발명의 실시예에 대한 구성 및 그 작용을 첨부한 도면을 참조하면서 상세히 설명하기로 한다.
도 8은 본 발명에 따라 비트 에러가 발생하는 전송 환경에서 데이터 분할된 MPEG-4 영상 비트스트림을 복호하기 위한 방법을 나타낸 순서도이다.
도 8을 살펴보면, VOP 시작 코드 탐색(101)은 입력되는 비트스트림에 32 비트로 구성되는 VOP 시작 코드가 나올 때까지의 그 입력되는 비트스트림을 복호한다. VOP 시작 코드가 나오기 전까지의 복호 잡업은 VOL 헤더, GOV 헤더 등의 복호를 포함한다. VOP 헤더 복호(102)는 VOP 복호에 필요한 헤더들을 복호한다.
VP/VOP 시작 코드 탐색(103)은 입력 비트스트림에서 다음에 나오는 VP 또는 VOP의 시작 코드를 찾는 작업으로서, 이번에 복호할 VP의 끝부분을 찾기 위해 수행된다. 여기서 VP 시작 코드는 재동기마커와 같은 뜻이다. 하나의 VP는 그것이 다른 VP와 분리되는 방법에 따라 다음의 4가지 종류로 나누어진다;
1) 시작 부분이 VOP 시작코드로 동기화되고, 끝 부분도 VOP 시작코드로 동기화되는 VP : VOP가 1개의 VP로만 구성될 때, 그 VP
2) 시작 부분이 VP 시작코드로 동기화되고, 끝 부분은 VOP 시작코드로 동기화되는 VP : VOP의 마지막 VP
3) 시작 부분이 VOP 시작코드로 동기화되고, 끝 부분은 VP 시작코드로 동기화되는 VP : VOP의 처음 VP
4) 시작 부분이 VP 시작코드로 동기화되고, 끝 부분도 VP 시작코드로 동기화되는 VP : VOP가 3개 이상의 VP로 구성될 때, 처음 VP도 아니고, 마지막 VP도 아닌 VP 로서 이상 4가지 종류의 VP는 도 8에서 별도의 구분없이 통합되어 다루어진다.
VP/VOP 헤더 복호(104)는 103에서 찾은 VP/VOP 시작 코드에 이어지는 VP/VOP의 헤더들을 복호한다. 다음 동기화가 VP 시작 코드(또는 재동기마커)에 의해 이루어진다면 VP 헤더가 복호되고, 다음 동기화가 VOP 시작 코드에 의해 이루어진다면 VOP 헤더가 복호된다. VP 헤더에는 MBA, 양자화계수 등이 포함된다.
이 작업의 주요 목표는 다음 VP의 MBA 값을 구하는 것으로서, 그 MBA는 현재 VP에 포함되는 매크로블록의 개수를 파악하고, MBA 에러를 확인하는 데 이용된다. VOP 헤더가 복호될 경우 다음 VP의 MBA 값은 VOP 내의 MBA 값의 최대값보다 1 큰 값으로 설정된다.
105는 현재 VP의 MBA(MBAk)와 다음 VP의 MBA(MBAk+1)를 가지고 MBA에 에러가 있는지 판단한다.
즉, 결과가 수학식 1를 만족하면 MBA 에러로 간주하는데, 하나의 VOP 안에서 MBA는 계속 증가해야 하기 때문이다. 만약 수학식 1에 의해 다음 VP의 MBA에 에러가 발생했다면, 현재 VP에 포함된 매크로블록의 개수를 알 수 없으므로 현재 VP에 해당하는 비트스트림은 버리고, VP/VOP 시작 코드 탐색(103)으로 가서 다음 VP/VOP 시작 코드를 찾아 다음 VP의 MBA(MBAk+2)를 구한다.
그리고 MBAk+1>=MBAk+2가 거짓이라면, 새로 찾은 VP는 MBA 에러가 없는 것으로 판단하여, 현재 VP가 MBAk부터 MBAk+2-1에 해당되는 매크로블록들을 포함하도록 설정하고, VP 스캔(106)으로 넘어간다.
여기서 MBAk+1을 사용하지 않고 MBAk와 MBAk+2를 사용한 것은 MBAk+1에 비해 에러일 확률이 훨씬 작다고 판단되기 때문이다. 물론 MBAk+1>=MBAk+2가 참이 되어 MBA 에러가 연속적으로 일어날 수도 있지만, 실제로 MBA는 전체 비트스트림에 비해 차지하는 비율이 극히 미미하여 에러가 날 확률이 상당히 작고, 그 에러가 연속해서 발생할 확률은 더 작다. 그럼에도 불구하고 연속해서 MBA 에러가 발생한다면 다음의 일반적인 규칙을 따른다.
" VPk의 MBA를 MBAk, VPk+1의 MBA를 MBAk+1이라 했을 때, 수학식 1이 성립한다면 MBAk<MBAk+n이 되는 VPk+n(n>=2)을 찾아서, 현재 프레임의 매크로블록 번호 MBAk부터 MBAk+n-1에 해당하는 매크로블록들을 현재 VP로 구성하고, VP 스캔(106) 단계로 넘어간다."
VP 스캔(106)은 도 8의 101 ~ 105를 통해 매크로블록 번호의 범위가 정해진 VP를 대상으로 에러 유무를 판단한다. VP 스캔(106)은 first part 및 second part 헤더의 복호와 second part 텍스처의 스캔으로 구성된다. 텍스처를 " 스캔 " 한다는 것은 입력 비트스트림이 VLC 또는 RVLC table에 있는지를 확인하고, 한 블록에서 64개를 초과하하는 DCT 계수가 복호되는지를 확인하는 작업을 의미한다.
즉, 텍스처를 스캔하는 것은 VLC 또는 RVLC만 복호하는 것으로 볼 수 있고, 그 외의 AC/DC 계수 예측, 역이산여현변환, 움직임 보상 등의 과정은 포함시키지 않는다.
VP의 매크로블록에 대해 바로 복호를 시작하지 않고 VP 스캔이라는 과정을 먼저 거침으로서 종래 기술의 두번째 문제점(2)이 해결된다. 단, 복호 시간만 놓고 볼 때, 본 발명에서 제안하는 방법은 매크로블록 에러가 어느 정도 자주 생겨서 실제로 에러가 없는 VP에 대해서 VP 스캔을 하는 비율이 높지 않아야 한다.
그러나 본 발명에서 텍스처를 복호하기 전에 수행하는 스캔 과정을 제안한 것은 MPEG-4가 무선 이동 단말기에 사용될 수 있고, 따라서 MPEG-4 비트스트림 복호기의 전력 소모를 줄이는 것이 중요하기 때문이다. 텍스처 스캔은 VLC 복호기 또는 RVLC 복호기의 일부분만 동작시켜 수행시킬 수 있고, 기타 외부 메모리의 접근이 필요하지 않게 하기가 용이하여, 텍스쳐 복호보다 훨씬 적은 전력을 소모하게 할 수 있다.
VP 복호(107)는 VP 스캔(106)의 결과에 따라 현재 VP의 각 매크로블록에 대해 정상적으로 복호를 수행하거나 에러 은닉 모드로 동작한다.
복호 종료 여부 판단(108)은 더 이상 복호할 비트스트림이 없다는 신호를 받았을 때 MPEG-4 영상 비트스트림의 복호 작업을 모두 끝낸다. 그렇지 않으면 VP/VOP 시작 코드 탐색(103) 과정으로 넘어간다.
도 9는 상기 VP 스캔(106)의 상세한 과정을 나타낸 순서도이다.
도 9를 살펴보면, 201은 VP_PART1_ERROR, VP_PART2_HEAD_ERROR, 그리고VP_PART2_TEXT_ERROR를 0으로 초기화 한다.
이 세 변수는 차례대로 first part, second part 헤더, second part 텍스처의 에러 유무를 나타내는데, 0이면 에러가 없는 것이다. 이 값들은 VP 내의 매크로블록들을 복호하거나 에러 은닉하는데 이용된다.
first part 복호(202)는 first part를 복호한다. 여기에는 I-VOP 또는 P-VOP여부에 따라 다른 종류의 매크로블록헤더가 포함된다. 202는 MB_IN_VP개의 매크로블록에 대해 first part를 복호하다가 매크로블록헤더 종류별로 VLC table에 없는 비트스트림이 들어오면 에러로 간주하고, 203으로 넘어간다. 202에서 MB_IN_VP개의 매크로블록에 해당하는 first part를 복호함으로써 종래 기술의 첫번째 문제점(1)이 해결된다. 또한 이것은 복호 시스템의 전력 소모의 감소에도 도움이 된다.
203은 202에서 에러가 발생했다면, 204에서 VP_PART1_ERROR를 1로 설정하도록 하고, 그렇지 않으면 205로 넘어가도록 한다. 205는 현재 VOP가 I-VOP인지 판단해서 I-VOP가 아니면, 즉 P-VOP이면 206으로, 반대로 I-VOP이면 207로 넘어간다.
206은 다음에 읽어지는 17 비트가 MOTION_MARKER가 아니면 first part 복호(202)에서 에러가 발생한 것으로 간주하고 204로 이동한다. 마찬가지로 207은 다음에 이어지는 19 비트가 DC_MARKER가 아니면 first part 복호(202)에서 에러가 발생한 것으로 간주하고 204로 이동한다.
이렇게 MB_IN_VP개의 매크로블록에 해당하는 first part를 복호하고, 그 뒤의 비트스트림이 DC_MARKER 또는 MOTION_MARKER인지 확인하는 방식은 first part의 에러 검출율을 높일 수 있다. 그 이유는 다음과 같다.
" first part에 사용된 mcbpc, cbpy, mvd 등의 VLC는 table에 남는 항목이 거의 없어 에러 비트스트림이 입력되어도 에러로 처리되기 보다는 table의 다른 항목으로 인식될 확률이 높다. 그러나 그렇게 table의 다른 항목으로 인식되었을 때 그에 해당하는 VLC의 길이가 틀려질 확률은 비교적 높다. "
따라서 오류가 있는 first part를 정확하다고 생각되는 매크로블록의 개수만큼 복호하고서 다음에 오는 비트열이 특정 비트열(여기서는 DC_MARKER 또는 MOTION_MARKER)인지 아닌지를 확인하는 것은 first part의 에러 검출율을 높이는 좋은 방법이 된다.
206, 207에서도 에러가 없는 것으로 확인되면 second part 헤더 복호(208)를 수행한다. second part 헤더에는 I-VOP 또는 P-VOP이냐에 따라 다른 종류의 매크로블록 헤더가 포함된다.
208은 MB_IN_VP개의 매크로블록에 대해 second part 헤더를 복호하다가 매크로블록 헤더 종류별로 VLC table에 없는 비트스트림이 들어오면 에러로 간주하고, 209로 넘어간다. 209는 208에서 에러가 발생했다면, 210에서 VP_PART2_HEAD_ERROR를 1로 설정하도록 하고, 그렇지 않으면 211로 넘어가도록 한다.
Second part 텍스처 순방향 스캔(211)은 입력된 second part 텍스처 비트스트림에 대해 다음의 작업을 수행한다;
1) 입력된 비트스트림 순서대로 VLC 또는 RVLC table에 있는지 확인한다. table에 없는 비트스트림이 들어오면 에러로 간주한다.
2) 한 블록에 대해 64개를 초과하는 DCT 계수가 복호되는지 확인한다. 64개를 초과하면 에러로 간주한다.
3) 새로운 매크로블록에 대해 텍스처 스캔을 시작할 때마다 현재 VP의 second part 텍스처 시작 지점을 기준으로 그 매크로블록의 시작 위치를 비트단위로 MBSPk에 저장한다. 여기서 k는 VP 내에서 매크로블록의 일렬번호이다. 순방향 스캔에서 k는 0부터 매크로블록 단위로 1씩 증가한다. 이 정보는 RVLC 복호 전략 수행에 사용된다.
4) 스캔이 완전히 끝난 매크로블록의 개수를 RVLD_N1에 저장한다.
5) 비트스트림 상에서 second part 텍스처 시작 지점을 기준으로 순방향 스캔이 끝난 위치를 비트단위로 FSCAN_ENDPOS에 저장한다. 만약 실제로 에러가 없다면, 이 위치는 second part의 끝과 일치할 것이다.
텍스처 스캔은 복호된 영상을 만드는 텍스처 복호와 달리 VLC 또는 RVLC의 에러 확인 작업만 포함하기 때문에 텍스처의 비트스트림이 내부 메모리로 읽어진 상태라면 내부/외부의 다른 메모리를 접근하지 않고도 신속하게 진행될 수 있다.
212는 second part 텍스처 순방향 스캔(211)에서 에러가 발생했는지 판단한다. 211에서 에러가 발생했다면 214로 이동하고, 그렇지 않으면 213으로 이동한다.
213은 현재 비트스트림 위치가 second part의 끝과 일치하는지 확인한다. Second part 텍스처에 에러가 없다면 현재 비트스트림 위치가 second part의 끝과 일치해야 하지만, 에러가 생겼을 때는, 그 둘이 어긋나기 쉽다. 213에서 현재 비트스트림 위치가 second part의 끝과 일치하면 VP 스캔(106)을 종료하고, 이 때는 VP전체에 대해 에러가 없는 결과가 된다.
214는 VOL 헤더 복호 결과에 근거하여 second part 텍스처에 RVLC가 사용되었는지 판단한다. 만약 RVLC가 사용되었다면 215로 이동하고, 그렇지 않으면 210에서 VP_PART2_HEAD_ERROR = 1로 설정한다.
여기서, 210으로 이동하는 것은, 텍스처로 VLC를 사용한 비트스트림에서 에러가 발생했을 경우, 실제 에러 지점의 위치를 대략이라도 알기가 힘들고, second part 헤더에 발생한 에러가 검출이 늦게 된 것일 수도 있기 때문이다.
215는 2ND_HEAD_ERROR_GUESS가 참이면 210으로 이동하고, 거짓이면 216으로 이동한다. 2ND_HEAD_ERROR_GUESS는 다음과 같이 정의된다.
여기서 T는 MPEG-4 annex E에서 정한 값으로 90이다. 따라서 2ND_HEAD_ERROR_GUESS가 참이면 순방향 텍스처 스캔 에러가 앞쪽 T 비트내에서 발생한 것이고, 이 결과를 second part 헤더의 오류가 텍스처로 넘어와서 검출된 것으로 받아들인다. 이것은 종래 기술의 네번째 문제점을 대부분 해결한다. " 대부분 " 의 의미는 확률적으로 second part헤더의 오류가 검출되지 않고 텍스처로 넘어와도 T 비트 이내에 검출되지 않는 경우도 있을 수 있다는 것이다.
Second part 헤더는 I-VOP일 경우 ac_pred_flag, cbpy가 있고, P-VOP일 경우 ac_pred_flag, cbpy, dquant, DC가 있다. 이중 ac_pred_flag는 오류 확인이 불가능하고, cbpy와 DC에 이용된 VLC table은 구조상 에러가 포함된 비트스트림을 검출할확률이 그리 높지 않다.
또한 second part 헤더와 second part 텍스처 사이는 first part와 second part 헤더 사이에 MARKER가 있는 것과 달리 아무 것도 없다. 그런데, 텍스처보다는 헤더가 화질에 더 큰 영향을 미치는 정보이기 때문에 second part 헤더에 에러가 난 것을 모르고 뒤의 texture 복호를 진행하게 되면, 예를 들어 틀린 DC값을 이용했을 때, 복호된 영상에 눈에 거슬리는 특이점이 발생하게 된다.
특히 이 특이점이 이어지는 프레임에 전파될 경우 화질의 현저한 저하를 가져온다. 이 문제는 RVLD를 이용하여 어느 정도 해결할 수 있는데, second part 헤더 에러가 발생하면 원래 그 에러가 없을 때 second part 헤더가 끝나는 위치와 다른 위치에서 끝날 확률이 크다. 그것은 second part 헤더 에러로 인해 second part 텍스처가 처음부터 에러를 가지고 시작하는 결과로 이어지고, RVLD를 사용할 경우 이 에러가 second part 텍스처 초반에 검출될 것이다. 여기서는 초반의 기준을 T로 잡았다.
Second part 텍스처 역방향 스캔(216)은 입력된 second part 텍스처 비트스트림에 대해 다음 작업을 수행한다. 이 작업은 RVLC가 사용되었을 때만 수행된다;
1) 입력된 비트스트림의 second part 끝부분부터 거꾸로 RVLC table에 있는지 확인한다. table에 없는 비트스트림이 들어오면 에러로 간주한다.
2) 한 블록에 대해 64개를 초과하는 DCT 계수가 복호되는지 확인한다. 64개를 초과하면 에러로 간주한다.
3) 새로운 매크로블록에 대해 텍스처 스캔을 마칠 때마다 비트스트림 상의second part 텍스처 시작 지점을 기준으로 그 매크로블록의 시작 위치를 MBSPk에 저장한다. 여기서 k는 VP 내에서 매크로블록의 일렬번호이다. 역방향 스캔에서 k는 MB_IN_VP-1부터 매크로블록 단위로 1씩 감소한다. 이 정보는 RVLC 복호 전략에 사용된다.
4) 스캔이 완전히 끝난 매크로블록의 개수를 RVLD_N2에 저장한다.
5) 비트스트림 상에서 second part 텍스처 시작 지점을 기준으로 역방향 스캔이 끝난 위치를 BSCAN_ENDPOS로 저장한다. 만약 실제로 에러가 없다면, 이 위치는 second part 텍스처의 시작과 일치할 것이다.
217은 VP_PART2_TEXT_ERROR=1로 설정해서 second part 텍스처에 에러가 있다는 사실을 저장한다. 218은 VP 내에서 에러 은닉할 매크로블록을 결정한다. 즉, VP 내에서 매크로블록 단위로 에러를 국소화하는 과정을 수행한다.
도 10은 VP 내에서 에러 은닉할 매크로블록 결정(218)의 자세한 과정을 나타낸 순서도이다.
도 10을 살펴보면, 301은 k를 0으로 초기화하는데, k는 VP 내에서 매크로블록의 일렬 번호를 나타낸다. 302는 VP의 k번째 매크로블록을 정상 복호할 수 있는지 판단한다. 302의 판단식은 아래의 수학식 3과 같다.
수학식 3에서 Min{}는 {}안의 항들 중 가장 작은 것을 의미하고, and는 논리곱을 의미한다.
302에서 수학식 3이 참이면 VP내의 k번째 매크로블록이 복호 가능함을 의미하고, 303으로 넘어간다.
303 ~ 305에서는 VP내의 k번째 매크로블록이 인트라 매크로블록일 경우 MB_EC[k]를 강제로 1로 설정하여 에러 은닉이 되도록 한다.
306에서 k를 1 증가시킨 다음 302로 이동하여 다음 매크로블록에 대해 정상 복호 여부를 판단한다. 만약 302에서 이번 매크로블록이 에러 은닉 되어야 한다고 판단되면 307로 이동한다.
307 ~ 312는 301 ~ 306을 역방향에 대응시킨 것이다. 즉, 307 ~ 312는 텍스처의 뒷부분부터 앞으로 오면서 매크로블록이 정상 복호 가능한지와 인트라인지를 판단하여 MB_EC[]값을 저장한다. 308의 판단식은 수학식 4와 같다.
수학식 4에서 Max{}는 {}안의 항들 중 가장 큰 것을 의미하고, and는 논리곱을 의미한다.
만약 308에서 VP 내의 k번째 매크로블록이 에러 은닉 되어야 한다고 판단되면 313로 이동한다. 313은 301~312를 거치고 나서 MB_EC[]가 설정되지 않은 매크로블록들에 대해 MB_EC[]값을 1로 설정하여 에러 은닉이 되도록 한다.
수학식 3,4는 도 4 ~ 도 7의 RVLC 복호 전략을 모두 포함한다. 그리고, VP스캔(106)을 거치면서 쉽게 저장된 비트스트림 위치인 MBSPk, FSACN_ENDPOS, BSCAN_ENDPOS과 매크로블록 개수 RVLD_N1, RVLD_N2만을 이용하여, 간단히 VP 내의 k번째 매크로블록이 텍스처의 앞쪽 또는 뒤쪽에서 복호가 가능한지를 판단할 수 있게 한다. 이것은 종래 기술의 세번째 문제점(3)을 해결해준다.
도 11은 상기의 VP 복호(107)의 상세한 과정을 나타낸 순서도이다.
도 11를 살펴보면, 에러 은닉 방법 결정(401)은 도 12에 기초하여 여러 가지 경우에 대해 에러 은닉 방법을 결정한다.
402는 그림 13에 기초하여 401에서 결정된 에러 은닉 방법에 해당되는 매크로블록 헤더 및 기타 제어 변수를 설정한다. 여기서 매크로블록 헤더를 설정하는 것은 에러에 의해 손상된 헤더가 있을 수 있기 때문이다.
403은 402에서 설정한 매크로 블록 헤더 및 기타 제어 변수에 따라 매크로블록 복호 또는 에러 은닉을 수행한다. 404는 401~403이 VP내의 모든 매크로블록에 대해 수행되도록 한다.
도 12는 여러 가지 경우에 대한 에러 은닉 방법을 나타낸 것이다. 그 여러 가지 경우는 먼저 SR0 ~ SR3으로 구분되는데, 각각의 정의와 의미는 표 1과 같다. 표 1에 따르면 SR0에서 SR3으로 갈수록 VP 내의 에러 비율이 커진다.
EC는 VP 내에서 현재 매크로블록에 해당하는 MB_EC[] 값으로서, 1이면 현재 매크로블록을 에러 은닉하고, 0이면 정상 복호한다. Intra MB는 이전 화면과 상관없는 매크로블록이고, 반대로 inter MB는 이전 화면으로부터 움직임 보상을 통해부호화된 매크로블록이다.
UIDV는 use_intra_dc_vlc의 약자로서, intra MB의 DC를 별도의 방법으로 부호화했는지의 여부를 나타낸다. 이 값은 매크로블록마다 다른 값을 가질 수 있으며, VP 내에서 intra MB의 DC 계수의 위치에 영향을 준다. 즉, 1이면 I-VOP의 intra MB의 DC 계수는 first part에 나오고, P-VOP의 intra MB의 DC 계수는 second part 헤더에 나온다. 반대로 0이면 매크로블록의 DC 계수는 second part 텍스처 부분에 같이 포함된다.
이름 정의 의미
SR0 VP_PART1_ERROR=0,VP_PART2_HEAD_ERROR=0,VP_PART2_TEXT_ERROR=0 VP에 에러가 없음
SR1 VP_PART2_TEXT_ERROR=1 Second part 텍스처 에러
SR2 VP_PART2_HEAD_ERROR=1 Second part 전체 에러
SR3 VP_PART1_ERROR=1 First part 및 second part 전체 에러
여기서, VP_PART1_ERROR는 first part 에러 유무를 나타낸다. 0이면 에러가 없는 것이다. VP_PART2_HEAD_ERROR는 second part 헤더의 에러 유무를 나타낸다. 0이면 에러가 없는 것이다. VP_PART2_TEXT_ERROR는 second part 텍스처의 에러 유무를 나타낸다. 0이면 에러가 없는 것이다.
DCAx(DC Availability)는 가로로 x번째 매크로블록에서 위로 인접한 매크로블록에 포함된 블록들의 DC 계수 사용이 허락되는지를 나타낸다. 1이면 사용할 수 있고, 0이면 사용할 수 없다. VOP 내의 가로방향 매크로블록 개수를 MBC라 하면DCAx에서 x는 0부터 MBC-1까지의 값을 가진다.
예를 들어 QCIF 크기의 화면에서는 DCA0~DCA10이 존재한다. VOP 복호를 시작하면 DCAx(x=0, 1, …, MBC-1)값이 0으로 초기화된다. 이렇게 함으로써 VOP 가장 윗쪽의 매크로블록들은 위로 인접한 매크로블록의 블록들의 DC 계수를 항상 사용할 수 없게 한다. VOP를 복호하면서 각 매크로블록에 대해 DCAx를 설정하는 방법은 도 13을 따른다.
도 12에서는 18가지 경우에 대해 A, B, C, D, E, 또는 F 타입의 에러 은닉을 적용한다. A ~ F 타입의 의미는 표 2와 같다.
에러 은닉 방법 의미
A 에러 은닉을 수행하지 않는 정상적인 복호.
B 매크로블록의 각 블록에 대해 위로 인접하는 블록의 DC 계수만 이용하여 복호.
C 이전 VOP에서 같은 위치에 해당되는 복호 결과로 대체.
D 현재 매크로블록에서 나온 DC 계수만 이용하여 복호.
E 복호된 움직임벡터에 해당되는 이전 VOP의 복호 결과로 대체.
F 위로 인접하는 블록의 움직임벡터에 해당되는 이전 VOP의 복호 결과로 대체. 위로 인접하는 블록이 없을 경우 움직임벡터는 (0,0)이 된다.
도 12에서 에러 은닉 방법을 정하는 과정의 특징은 다음과 같다. 다음 특징들은 종래 기술의 다섯번째 문제점(5)을 개선한다.
1) Intra MB에서는 DC 계수를 최대한 활용한다. (도 12의 번호 3 ~ 5, 8 ~ 12, 15 ~ 16) Intra MB는 이전 프레임과 관계가 적은 매크로블록이고, 특히 P-VOP의 intra MB는 이전 VOP의 같은 위치의 매크로블록이 현재 VOP의 주변 위치의 매크로블록과 많은 차이를 보일 확률이 높다. 따라서 이전 프레임의 같은 위치의 복호결과를 가져오는 것보다 같은 VOP 내에서 DC 계수를 이용하여 은닉하는 것이 더 효과적이다.
2) Inter MB라도 위로 인접하는 MB가 intra이면 그 intra MB의 DC 계수를 이용한다. (도 12의 번호 6, 13, 17) P-VOP의 intra MB는 이전 VOP의 주변 위치의 매크로블록과 많은 차이를 보일 확률이 높고, 종종 장면의 바뀜을 반영하기도 한다. 이 때 매크로블록 하나만 단독적으로 장면이 바뀌기 보다는 그 주변도 같이 바뀔 확률이 높다.
따라서 위로 인접한 매크로블록이 intra이면 그 intra MB의 DC 계수를 이용하는 것이 이전 VOP의 복호 결과를 가져오는 것보다 효과적이다. 실제로 시뮬레이션에서도 이 특징을 적용했을 때, 이전 VOP으로부터 상이한 매크로블록으로 은닉되어 그것이 이어지는 여러 VOP에도 화질 열화를 가져왔던 현상이 상당히 감소하였다.
주변 MB 중에서 위로 인접하는 MB를 이용하는 것은 첫째, 왼쪽이나 오른쪽으로 인접하는 MB는 현재 MB와 같은 VP에 소속되어 같이 에러가 발생했을 확률이 크고, 둘째 아래쪽으로 인접하는 MB의 정보를 이용하려면 그 MB를 복호할 차례까지 기다려야 하고, 그 사이의 필요한 정보를 담아두는 메모리도 필요하기 때문이다. 반면 위로 인접하는 MB는 현재 MB가 에러라도 에러가 아닐 확률이 상대적으로 높고, 이미 복호 순서가 지났기 때문에 추가적인 지연 시간이 생기지 않고, 원래의 복호 목적으로 사용되는 메모리를 공유할 수 있다.
3) 움직임벡터가 유실되고, 위로 인접하는 MB가 inter이면 위로 인접하는 블록의 움직임벡터를 이용하여 이전 VOP의 복호 결과를 가져온다.(도 12의 번호 18) 위/아래로 인접한 매크로블록은 움직임도 서로 유사할 확률이 높기 때문에 이전 프레임의 같은 위치의 복호 결과를 가져오는 것보다 위로 인접한 블록들의 움직임 벡터를 이용하는 것이 더 효과적이다. 단, 위로 인접하는 블록이 없을 경우는 움직임벡터를 (0,0)으로 은닉한다.
도 13은 에러 은닉 방법 A ~ F에 해당되는 매크로블록 헤더 및 기타 제어 변수의 설정을 나타낸 것이다.
도 13을 살펴보면, 에러 은닉 방법이 A일 경우는 정상 복호하는 경우로서, 움직임 벡터 은닉, DC 계수 은닉 중 어느 것도 수행하지 않고, DCAx는 intra MB일 경우만 1로 설정한다. 즉, intra MB일 때는 아래로 인접하는 매크로블록에서 DC 계수를 참조할 수 있도록 허락한다.
에러 은닉 방법이 B일 경우는 not_coded=0, mb_type=3, cbp=0, ac_pred_flag=0으로 설정함으로써 현재 블록의 복호에 DC 계수만 반영될 수 있도록 설정한다. 그리고 DC 계수 은닉 여부를 1로 설정함으로써 위로 인접하는 블록의 DC 값을 현재 블록의 DC 값으로 사용하도록 한다. 그리고 DCAx는 0으로 설정한다. 즉, 현재 블록에서 위로 인접하는 블록의 DC 계수가 사용 가능하면 후에 아래로 인접하는 블록은 현재 블록의 DC 계수를 사용하지 못하도록 한다.
에러 은닉 방법이 C일 경우는 not_coded=1로 설정하고 움직임벡터 은닉, DC 계수 은닉 중 어느 것도 수행하지 않음으로써 움직임벡터가 (0,0)이 되도록 한다.즉, 이것은 이전 프레임의 같은 위치의 매크로블록의 복호 결과를 가져오도록 한다. 그리고 DCAx는 변화시키지 않는다.
에러 은닉 방법이 D일 경우는 cbp=0, ac_pred_flag=0으로 설정한다. 에러 은닉 방법 D는 intra MB일 때만 해당되므로, 현재 블록의 복호에 DC 계수만 반영된다. 현재 블록에 해당되는 에러의 영향을 받지 않은 DC 계수가 사용 가능하므로 움직임벡터 은닉, DC 계수 은닉 중 어느 것도 수행하지 않는다. 그리고 DCAx는 항상 1로 설정하는데, 현재 블록에서 유효한 DC 계수가 생겼으므로 기존의 DCAx값에 관계없이 아래 블록들이 현재 블록의 DC 계수를 사용할 수 있게 한다.
에러 은닉 방법이 E일 경우는 cbp=0, ac_pred_flag=0으로 설정한다. 에러 은닉 방법 E는 inter MB일 때만 해당되므로, 현재 블록의 복호에 움직임벡터만 반영된다. 현재 블록에 해당되는 에러의 영향을 받지 않은 움직임벡터가 사용 가능하므로 움직임벡터 은닉, DC 계수 은닉 중 어느 것도 수행하지 않는다. 그리고 DCAx는 변화시키지 않는다.
에러 은닉 방법이 F일 경우는 not_coded=1로 설정하고 움직임벡터 은닉 여부를 1로 설정함으로써, 위로 인접하는 블록의 움직임벡터를 이용하여 이전 VOP의 복호 결과를 가져온다. 단, 위로 인접하는 블록이 없을 경우는 움직임벡터를 (0,0)으로 설정하여 이전 VOP의 복호 결과를 가져온다. 그리고 DCAx는 변화시키지 않는다.
도 14는 도 13의 에러 은닉 방법에 따른 매크로블록 헤더 및 기타 제어 변수설정이 적용된 MPEG-4 영상 텍스처 복호기의 실시예이다.
도 14를 살펴보면, 가변장부호복호기(variable length decoding; 701)는 가변장부호화된 비트스트림을 복호하여 AC/DC 예측된 이산여현변환 계수를 출력한다. 역스캔기(inverse scan; 702)는 가변장부호복호기(701)의 출력을 8 ×8 픽셀로 구성되는 블록 단위로 AC/DC 계수 예측 방향과 AC 계수 예측 여부에 따라 지그재그 스캔, 가로 방향 스캔, 또는 세로 방향 스캔을 한다.
AC/DC 계수 복원기(inverse AC/DC prediction; 703)는 부호화기에서 행했던 AC/DC 계수 예측의 반대 과정을 수행한다. MPEG-4는 디지털 영상의 압축 효율을 더욱 높이기 위해 부호화 과정에서 AC/DC 예측을 수행한다.
예측메모리(704)는 AC/DC 계수 복원을 수행하기 위해 매크로블록 약 한 줄에 해당되는 DC 계수와 AC 계수 일부를 저장하는 메모리이다. 역양자화기(inverse quantization; 705)는 역양자화를 하고, 역이산여현변화기(inverse DCT; 706)는 역이산여현변환을 하여 주파수 영역의 영상데이타를 공간 영역으로 바꾸어준다.
움직임보상기(motion compensation; 707)는 역이산여현변화기(706)의 출력과 움직임 벡터 및 이전 VOP 복호 결과에 의한 영상데이타를 더하여 최종적으로 복호된 영상을 출력한다.
움직임벡터 메모리(708)는 움직임보상기가 움직임벡터 예측값을 구하기 위해 매크로블록 한 줄에 해당되는 움직임벡터를 저장하는 메모리이다. 701 ~ 708을 거치는 과정은 최소한 8 ×8 픽셀로 구성되는 블록 단위로 이루어져야 한다.
예를 들어 어떤 매크로블록에 에러 은닉 방법 B를 적용해야 한다면, 즉 위로인접하는 블록의 DC 계수를 현재 블록의 DC 계수로 이용해야 한다면, 별도의 메모리를 넣지 않고도, (704)에 저장된 위로 인접한 블록의 DC 계수를 이용할 수 있다.
또한 어떤 매크로블록에 에러 은닉 방법 F를 적용해야 한다면, 즉 위로 인접하는 블록의 움직임벡터를 이용하여 이전 VOP의 복호 결과를 가져와야 한다면, 별도의 메모리를 넣지 않고도, (708)에 저장된 위로 인접한 블록의 움직임벡터를 이용할 수 있다. 단, 위로 인접하는 블록이 없을 경우는 움직임벡터를 (0,0)으로 설정하여 이전 VOP의 복호 결과를 가져온다.
도 14에서는 에러 은닉을 위한 별도의 회로를 넣지 않은 MPEG-4 영상 텍스쳐 복호기이지만, 본 발명은 그것을 이용하여 적절한 에러 은닉을 수행하는 방법을 제안하였다.
도 15 및 도 16은 본 발명에 의한 에러 은닉 성능이 향상된 예를 실시예로 나타낸 것이다.
도 15를 살펴보면 부호 801을 N번째 VOP라 하면, 802와 803은 각각 종래 기술을 적용한 N+1번째 VOP와 N+9번째 VOP이다. 그리고 804와 805는 각각 본 발명의 제안을 적용한 N+1번째 VOP와 N+9번째 VOP이다. 이들 VOP는 QCIF 크기로서 양자화계수 30으로 부호화되었고, 비트에러율 10-3, 그리고 도플러주파수 5Hz의 에러 환경이 적용되었다. 802의 점선으로 둘러싸인 부분은 그 VOP에서 에러가 발생한 부분을 나타낸다.
점선 안의 매크로블록들은 intra MB와 inter MB를 모두 포함한다. 802의 점선 안은 이전 VOP인 801에서 그대로 가져온 것인데 반해 804의 같은 부분은 에러 은닉 방법 B의 적용을 받아 위로 인접하는 블록의 DC로 은닉한 것이다. 804는 거의 에러가 없는 것처럼 보인다. 803은 802의 부적절한 에러 은닉에 의해 이후 VOP들이 받는 영향을 보여준다. 803에는 8개의 VOP가 지났음에도 불구하고, 802의 부적절한 에러 은닉의 흔적이 남아 있음을 볼 수 있다. 반면, 805는 에러 은닉의 흔적을 볼 수 없다.
또한, 도 16의 901 ~ 905는 도 15의 801 ~ 805와 구성이 유사하므로 그에 대한 설명은 생략하기로 한다.
이상에서와 같이 본 발명에 의한 MPEG-4 디지털 영상을 복호하는 방법에 대하여 상세하게 설명하였으나, 본 명세서의 이해를 돕기 위하여 각각 제시되는 변수의 의미를 간략히 살펴보기로 한다.(알파벳순)
* ac_pred_flag : 매크로블록 헤더 중의 하나로, 그 매크로블록에서 AC 계수 예측이 수행되었는지를 나타내는 1 비트. 이 값이 1이면 AC/DC 계수 복원 이후 AC 계수값이 달라질 수 있다.
* cbpy : 매크로블록 헤더 중의 하나로, 휘도 정보 블록의 코딩 여부를 담는 가변장부호.
* DC_MARKER : I-VOP에서 first part와 second part를 구분하는 특정 비트열. (17 비트)
* DCT : Discrete Cosine Transform. 이산여현변환.
* first part : 데이터 분할된 VP에서 DC_MARKER 또는 MOTION_MARKER 앞쪽부분.
* GOV : Group of VOP. 특정 개수의 VOP마다 한 번 씩 나올 수 있는 헤더이다. 시간 정보를 포함한다.
* I-VOP : 이전 VOP와 관계없이 자체 정보만 사용하는 VOP.
* intra MB : 이전 화면과 상관없는 매크로블록.
* inter MB : 이전 화면으로부터 움직임 보상을 통해 부호화된 매크로블록.
* MB : 매크로블록.
* MBA : 매크로블록 주소. 어떤 비디오 패킷의 처음에 나오는 매크로블록의 주소로서 화면 왼쪽 위부터 오른쪽 방향으로 붙여지는 매크로블록의 일렬번호이다. QCIF 화면일 경우 MBA는 0부터 98까지의 값을 가진다.
* MBC : VOP에 포함되는 가로 매크로블록 개수.
* mcbpc : 매크로블록 헤더 중의 하나로, 매크로블록 타입과 색차 정보 블록의 코딩 여부를 담는 가변장부호.
* mvd : 매크로블록 헤더 중의 하나로, 움직임벡터의 차분치를 담는 가변장부호.
* MOTION_MARKER : P-VOP에서 first part와 second part를 구분하는 특정 비트열.(19 비트)
* P-VOP : 이전 VOP로부터 움직임 보상을 이용하는 VOP.
* QCIF : 화소가 가로로 176개, 세로로 144개인 화면 크기.
* RVLD : 리버서블 가변장부호.
* second part : 데이터 분할된 VP에서 DC_MARKER 또는 MOTION_MARKER 뒤쪽 부분.
* UIDV : use_intra_dc_vlc의 약자로서, intra MB의 DC를 별도의 기준으로 부호화했는지의 여부를 나타낸다.
* VLC : 가변장부호.
* VOL : Video Object Layer. 일련의 VOP로 구성되는 동영상을 의미한다.
* VOP : Video Object Plane. 프레임과 같은 의미로 사용된다.
* VP : Video Packet. 비디오 패킷. 재동기 마커 또는 VOP 시작 코드로 구분되는 재동기 단위
다음은 본 발명에서 주로 사용된 변수들에 대한 설명이다.(알파벳순)
* 2ND_HEAD_ERROR_GUESS : RVLC가 사용된 VP를 스캔할 때, first part와 second part 헤더에서 에러가 검출되지 않고, second part 텍스처의 앞부분 T 비트 이내에서 에러가 검출되었다면 1이 되고, 그렇지 않으면 0이다. 이 값은 RVLC가 second part 텍스처의 에러 위치에 따라 에러 검출이 비교적 어려운 second part 헤더의 에러를 추측하는 데 이용될 수 있다.
* BSCAN_ENDPOS : RVLC가 사용된 second part 텍스처를 역방향으로 스캔을 마친 위치이다. Second part 텍스처 시작을 기준한다.
* DCA : DC Availability. 윗 블록의 DC 값이 사용가능한지를 나타내는 변수. VOP의 가로 매크로블록 개수만큼의 정보를 가지고 있다.
* EC : SR1 타입의 에러 VP 내에서 어떤 매크로블록이 에러 은닉 대상이면이 값은 1을 갖고, 그렇지 않으면 0을 갖는다.
* FSCAN_ENDPOS : RVLC가 사용된 second part 텍스처를 순방향으로 스캔을 마친 위치이다. Second part 텍스처 시작을 기준한다.
* MB_EC[k] : VP의 k번째 매크로블록이 에러 은닉 대상인지를 저장. 1이면 에러 은닉 대상임을 의미한다.
* MB_IN_VP : VP 안에 포함된 매크로블록의 개수. 다음 VP의 MBA에서 현재 VP의 MBA를 뺀 값으로부터 구해진다.
* MBSPk: 비트스트림 상에서 VP의 k번째 매크로블록의 시작 위치. Second part 텍스처의 시작 지점을 기준으로 한다.
* RVLD_N1 : RVLC가 사용된 second part 텍스처를 순방향으로 스캔을 마쳤을 때, 스캔이 완전히 끝난 매크로블록의 개수
* RVLD_N2 : RVLC가 사용된 second part 텍스처를 역방향으로 스캔을 마쳤을 때, 스캔이 완전히 끝난 매크로블록의 개수
이상에서와 같이 본 발명에 의한 MPEG-4 디지털 영상을 복호하는 방법에 따르면 다음과 같은 효과가 있다.
첫째, 현재 VP를 복호할 때, 다음 VP의 MBA를 먼저 구해 현재 VP에 포함된 매크로블록 개수를 알고 first part 를 복호하기 때문에 에러가 섞인 first part를 복호할 때 그 에러를 검출하지 못해서 실제보다 더 많은 비트스트림을 복호하는 경우가 없어져 복호 시간이 단축되었다.
또한 정해진 매크로블록 개수만큼 first part를 복호하고 나서 다음 비트열이 DC_MARKER 또는 MOTION_MARKER인지 아닌지 확인하면 에러가 검출될 수 있도록 하여, 에러가 검출될 때까지 계속 복호를 진행하는 종래기술에 비해 에러 검출 확률이 높아지고, 복호 시간이 단축되었다.
둘째, VP에서 가장 큰 비중을 차지하는 second part 텍스쳐를 바로 복호하지 않고, 입력된 비트스트림에 대해 에러가 있는지만 확인을 하는 스캔 작업을 먼저 진행함으로써, 실제로 에러가 있는 VP를 복호하다가 에러가 검출되어 복호된 결과를 버리게 되는 경우가 없어졌다. 그로 인해, 높은 에러율의 전송 환경에서 복호 시간이 단축되었다.
또한 일반적으로 텍스처 복호는 텍스처 스캔에 비해 많은 메모리 접근을 요구하여 훨씬 많은 전력을 소모하기 때문에, 텍스처 스캔을 미리 수행함으로써 전력 소모가 감소되었다.
세째, 상기의 수학식 3,4는 도 4 내지 도 7의 RVLC 복호 전략을 모두 포함한다. 그리고, 상기의 VP 스캔(106)을 거치면서 쉽게 저장된 비트스트림 위치인 MBSPk, FSACN_ENDPOS, BSCAN_ENDPOS과 매크로블록 개수 RVLD_N1, RVLD_N2만을 이용하여, 간단히 VP 내의 k번째 매크로블록이 텍스처의 앞쪽 또는 뒤쪽에서 복호가 가능한지를 판단할 수 있게 한다. 이것은 종래기술의 문제점(3)을 해결해 줌으로서 MPEG-4 복호기를 더 간단하게 구현할 수 있게 한다.
네째, RVLC가 사용된 second part 텍스처를 순방향 스캔하여 에러가 앞쪽의 일정 범위 내에서 검출될 경우 second part 헤더 에러로 간주하여, second part 헤더 에러 검출의 어려움으로 인해 화질 저하가 일어날 수 있는 문제점을 대부분 해결하였다. 다만, 확률적으로 second part 헤더에 에러가 있더라도 second part 텍스처 앞쪽의 일정 범위 내에서 에러가 검출되지 않을 수 있다.
다섯째, VLC가 사용된 second part 텍스처를 스캔하다 에러가 검출된다면, 그 에러 위치에 관계없이 second header까지 에러가 난 것으로 간주하여, second part 헤더 에러 검출의 어려움으로 인해 화질 저하가 일어날 수 있는 문제점을 대부분 해결할 수 있다.
여섯째, 에러가 발생한 매크로블록에 대해 다양한 은닉 방법을 적용하여, 무조건 이전 VOP의 같은 위치의 복호 결과를 가져오는 것으로부터 생기는 문제점을 해결하였다. 이 효과에 의한 본 발명의 실시예를 도 15 및 도 16에 제시하였다.
일곱째, 상기 항목 1 ~ 6의 효과로 간단한 에러 검출 및 은닉을 통해 합리적인 에러 내성을 가질 수 있게 되고, 특히 상기 항목 6에서 언급한 에러 은닉 방법은 별도의 연산을 필요로 하지 않고, 에러 은닉을 위한 메모리도 복호를 위한 메모리와 공유할 수 있도록 함으로써 하드웨어의 복잡도에 대비하여 높은 에러 내성을 얻을 수 있는 이점이 있다.

Claims (28)

  1. 비트 에러가 발생하는 전송 환경에서 데이터 분할된 MPEG-4 영상 비트스트림을 복호하는 방법에 있어서,
    입력되는 영상 비트스트림에서 다음 차례의 VP(비디오 패킷)/VOP(프레임)의 시작 코드를 탐색하는 제 1단계와;
    상기 탐색된 VP/VOP 시작코드에 이어지는 다음의 VP/VOP 헤더들을 복호하는 제 2단계와;
    현재 VP의 MBA(매크로블록 어드레스)와 다음 VP의 MBA를 이용하여 MBA에 에러의 유무를 확인하는 제 3단계와;
    상기 제 1,2,3단계들을 통하여 MBA의 범위가 정해진 VP를 대상으로 에러의 유무를 스캔(에러 검출)하는 제 4단계와;
    상기 VP 스캔의 결과에 따라 현재 VP의 각 매크로블록에 대하여 정상적으로 복호를 수행하거나 에러은닉을 수행하는 제 5단계를 포함하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  2. 청구항 1에 있어서, 상기 제 3단계에서 현재 VP인 VPk의 MBA를 MBAk, 다음 VP인 VPk+1의 MBA를 MBAk+1이라 했을 때, 아래의 수학식 5가 성립한다면 MBA 에러로 간주하고, MBAk<MBAk+n이 되는 VPk+n(n>=2)을 찾아서 현재 프레임의 매크로블록 번호MBAk부터 MBAk+n-1에 해당하는 매크로블록들을 현재 VP로 구성한 후 다음 단계로 넘어가는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  3. 청구항 1에 있어서, 상기 제 4단계에서 MBA는 현재 VP에 포함되는 매크로블록의 개수를 파악하고, MBA의 에러를 확인하는데 이용되는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  4. 청구항 1에 있어서, 상기 제 4단계에서는 아래의 단계를 더 포함하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
    (a) first part의 복호 및 에러의 유무를 확인하는 단계;
    (b) second part의 헤더 복호 및 에러의 유무를 확인하는 단계;
    (c) 상기 second part의 텍스처 스캔 및 에러의 유무를 확인하는 단계;
  5. 청구항 4에 있어서, 상기 (a)단계에서 first part를 현재 VP에 포함된 매크로블록 개수 만큼 복호하고서 에러가 발견되지 않았을 때, 다음 비트열이 I-VOP일 경우 DC_MARKER, P-VOP일 경우 MOTION_MARKER 인지의 여부를 확인하여 에러를 검출하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  6. 청구항 4에 있어서, 상기(c)단계에는 아래의 단계를 더 포함하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
    (c1) second part 텍스처를 순방향으로 스캔을 수행하는 단계;
    (c2) 상기 단계에서 에러가 발생하지 않았을 경우 스캔이 끝난 위치와 second part 텍스처의 끝 위치를 비교해서 일치하면 VP의 스캔을 종료하는 단계;
    (c3) 상기 second part 텍스처에 RVLC가 사용되지 않았을 경우 second part 헤더에 에러가 발생한 것으로 설정하고 VP의 스캔을 종료하는 단계;
    (c4) 상기 순방향 스캔이 끝난 위치가 second part 텍스처 앞부분의 일정 범위 안에 들어오면 second part 헤더에 에러가 발생한 것으로 설정하고 VP의 스캔을 종료하고, 그렇지 않으면 second part 텍스처를 역방향으로 스캔을 수행하는 단계와;
    (c5) 상기 second part 텍스처에 에러가 발생한 것으로 설정하고, VP 내에서 에러를 은닉할 매크로블록을 결정하는 단계
  7. 청구항 6에 있어서, 상기 (c5) 단계에는 아래의 단계를 더 포함하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
    (c5-1) 아래의 수학식 6을 이용하여 second part 텍스처 앞부분에서 정상 복호할 매크로블록의 범위를 정하는 단계;
    (c5-2) 아래의 수학식 7를 이용하여 second part 텍스처 뒷부분에서 정상 복호할 매크로블록의 범위를 정하는 단계;
    (c5-3) 정상으로 복호되지 않는 나머지 매크로블록들에 대해 에러 은닉하도록 설정하는 단계;
  8. 청구항 1에 있어서, 상기 제 5단계에는 아래의 단계를 더 포함하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
    (a) 상기 VP의 스캔 결과에 따라 에러 은닉 방법을 결정하는 단계;
    (b) 상기 단계에서 정해진 에러 은닉 방법에 해당되는 매크로블록 헤더 및 기타 제어 변수들을 설정하는 단계;
    (c) 매크로블록 복호 또는 은닉을 실제로 수행하는 단계;
  9. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 텍스처만이 에러이고, VP 내에서 에러 은닉을 하도록 결정되었고, 인트라이고, UIDV=0 이고, 위로 인접하는 블록의 DC 계수를 사용할 수 있는 매크로블록의 경우, 상기 매크로블록에 포함되는 각 블록에 대해 위로 인접하는 블록의 DC 계수만 이용하여 복호하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  10. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 텍스처만이 에러이고, VP 내에서 에러 은닉을 하도록 결정되었고, 인트라이고, UIDV=0 이고, 위로 인접하는 블록의 DC 계수를 사용할 수 없는 매크로블록의 경우, 이전 프레임의 같은 위치에 해당되는 복호 결과로 대체하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  11. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 텍스처만이 에러이고, VP 내에서 에러 은닉을 하도록 결정되었고, 인트라이고, UIDV=1인 매크로블록의 경우, 현재 매크로블록에서 나온 DC 계수만을 이용하여 복호하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  12. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 텍스처만이 에러이고, VP 내에서 에러 은닉을 하도록 결정되었고, 인터이고, 위로 인접하는 블록의 DC 계수를 사용할 수 있는 매크로블록의 경우, 상기 매크로블록에 포함되는 각 블록에 대해 위로 인접하는 블록의 DC 계수만 이용하여 복호하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  13. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 텍스처만이 에러이고, VP 내에서 에러 은닉을 하도록 결정되었고, 인터이고, 위로 인접하는 블록의 DC 계수를 사용할 수 없는 매크로블록의 경우, 복호된 움직임벡터에 해당되는 이전 프레임의 복호 결과로 대체하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  14. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 전체가 에러이고, I-VOP 이고, UIDV=0 이고, 위로 인접하는 블록의 DC 계수를 사용할 수 있는 매크로블록의 경우, 상기 매크로블록에 포함되는 각 블록에 대해 위로 인접하는 블록의 DC 계수만 이용하여 복호하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  15. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 전체가 에러이고, I-VOP 이고, UIDV=0 이고, 위로 인접하는 블록의 DC 계수를 사용할 수 없는 매크로블록의 경우, 이전 프레임의 같은 위치에 해당하는 복호 결과로 대체하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  16. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 전체가 에러이고, I-VOP 이고, UIDV=1인 매크로블록의 경우, 현재 매크로블록에서 나온 DC 계수만을 이용하여 복호하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  17. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 전체가 에러이고, P-VOP 이고, 인트라이고, 위로 인접하는 블록의 DC 계수를 사용할 수 있는 매크로블록의 경우, 상기 매크로블록에 포함되는 각 블록에 대해 위로 인접하는 블록의 DC 계수만 이용하여 복호하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  18. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 전체가 에러이고, P-VOP 이고, 인트라이고, 위로 인접하는 블록의 DC 계수를 사용할 수 없는 매크로블록의 경우, 이전 프레임과 같은 위치에 해당되는 복호 결과로 대체하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  19. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 전체가 에러이고, P-VOP 이고, 인터이고, 위로 인접하는 블록의 DC 계수를 사용할 수 있는 매크로블록의 경우, 상기 매크로블록에 포함되는 각 블록에 대해 위로 인접하는 블록의 DC 계수만 이용하여 복호하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  20. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; second part 전체가 에러이고, P-VOP 이고, 인터이고, 위로 인접하는 블록의 DC 계수를 사용할 수 없는 매크로블록의 경우, 복호된 움직임벡터에 해당되는 이전 프레임의 복호 결과로 대체하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  21. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; first part 및 second part 전체가 에러이고, I-VOP 이고, 위로 인접하는 블록의 DC 계수를 사용할 수 있는 매크로블록의 경우, 상기 매크로블록에 포함되는 각 블록에 대해 위로 인접하는 블록의 DC 계수만 이용하여 복호하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  22. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; first part 및 second part 전체가 에러이고, I-VOP 이고, 위로 인접하는 블록의 DC 계수를 사용할 수 없는 매크로블록의 경우, 이전 프레임의 같은 위치에 해당되는 복호 결과로 대체하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  23. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; first part 및 second part 전체가 에러이고, P-VOP 이고, 위로 인접하는 블록의 DC 계수를 사용할 수 있는 매크로블록의 경우, 상기 매크로블록에 포함되는 각 블록에 대해 위로 인접하는 블록의 DC 계수만 이용하여 복호하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  24. 청구항 8에 있어서, 상기 (a)단계에서의 VP 스캔 결과; first part 및second part 전체가 에러이고, P-VOP 이고, 위로 인접하는 블록의 DC 계수를 사용할 수 없는 매크로블록의 경우, 위로 인접하는 블록의 움직임벡터에 해당되는 이전 프레임의 복호 결과로 대체하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  25. 청구항 24에 있어서, 상기 매크로블록의 각 블록에 대하여 위로 인접하는 블록이 없을 경우, 움직임벡터를 (0,0)으로 설정하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  26. 청구항 9,12,14,17,19,21,23 중 어느 하나의 항에 있어서, 상기 매크로블록의 각 블록에 대하여 위로 인접하는 블록의 DC 계수를 이용하기 위해, 복호화기에서 행해지는 AC/DC 계수 예측의 반대 과정을 수행하는 AC/DC 계수 복원기의 예측 메모리를 공유하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  27. 청구항 24에 있어서, 상기 매크로블록의 각 블록에 대하여 위로 인접하는 블록의 움직임벡터를 이용하기 위해, 최종적으로 복호된 영상을 출력하는 움직임보상기의 움직임벡터 메모리를 공유하는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
  28. 청구항 9,10,12,13,14,15,17,18,19,20,21,22,23,24 중 어느 하나의 항에 있어서, 상기 매크로블록의 각 블록에 대하여 위로 인접하는 매크로블록의 DC 계수가 사용 가능한지를 나타내기 위해 한 프레임의 가로 매크로블록 개수 만큼 1비트 DC계수의 사용 가능 정보를 이용하며;
    정상 복호되는 인트라 매크로블록의 경우, 상기 매크로블록의 가로 위치에 해당되는 DC 계수 사용 가능 정보를 1로 설정하고;
    위로 인접하는 DC 계수로 에러 은닉되는 매크로블록의 경우, 상기 매크로블록의 가로 위치에 해당되는 DC 계수 사용 가능 정보를 0으로 설정하고;
    이전 프레임의 같은 위치의 복호 결과로 에러 은닉되는 매크로블록의 경우, 상기 매크로블록의 가로 위치에 해당되는 DC 계수 사용 가능 정보를 변화시키지 않고;
    현재 매크로블록의 DC 계수만으로 에러 은닉되는 매크로블록의 경우, 상기 매크로블록의 가로 위치에 해당되는 DC 계수 사용 가능 정보를 1로 설정하고;
    현재 매크로블록의 움직임벡터를 이용하여 그에 해당하는 이전 프레임의 복호 결과로 에러 은닉되는 매크로블록의 경우, 상기 매크로블록의 가로 위치에 해당되는 DC 계수 사용 가능 정보를 변화시키지 않고;
    위로 인접하는 블록의 움직임벡터를 이용하여 그에 해당하는 이전 프레임의 복호 결과로 에러 은닉되는 매크로블록의 경우, 상기 매크로블록의 가로 위치에 해당되는 DC 계수 사용 가능 정보를 변화시키지 않는 것을 특징으로 하는 MPEG-4 영상의 복호 방법.
KR10-2002-0006563A 2002-02-05 2002-02-05 Mpeg-4 영상의 복호 방법 KR100429020B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2002-0006563A KR100429020B1 (ko) 2002-02-05 2002-02-05 Mpeg-4 영상의 복호 방법
US10/287,358 US7212575B2 (en) 2002-02-05 2002-11-04 Method for decoding of MPEG-4 video
JP2002381449A JP2003289541A (ja) 2002-02-05 2002-12-27 Mpeg−4映像の復号方法及び復号装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0006563A KR100429020B1 (ko) 2002-02-05 2002-02-05 Mpeg-4 영상의 복호 방법

Publications (2)

Publication Number Publication Date
KR20030066225A KR20030066225A (ko) 2003-08-09
KR100429020B1 true KR100429020B1 (ko) 2004-04-29

Family

ID=27656389

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0006563A KR100429020B1 (ko) 2002-02-05 2002-02-05 Mpeg-4 영상의 복호 방법

Country Status (3)

Country Link
US (1) US7212575B2 (ko)
JP (1) JP2003289541A (ko)
KR (1) KR100429020B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040031868A (ko) * 2002-10-07 2004-04-14 엘지전자 주식회사 동영상 부호화 방법
US6931061B2 (en) * 2002-11-13 2005-08-16 Sony Corporation Method of real time MPEG-4 texture decoding for a multiprocessor environment
KR101044935B1 (ko) 2004-01-14 2011-06-28 삼성전자주식회사 전송 에러가 발생한 지점을 탐지하여 바르게 디코딩된데이터를 복원하는 디코딩 방법 및 그 디코딩 장치
US20060062312A1 (en) * 2004-09-22 2006-03-23 Yen-Chi Lee Video demultiplexer and decoder with efficient data recovery
US7636395B2 (en) * 2005-03-14 2009-12-22 Nokia Corporation Method and device for splicing video data in compressed domain
KR100736041B1 (ko) * 2005-06-30 2007-07-06 삼성전자주식회사 에러 은닉 방법 및 장치
JP4523886B2 (ja) 2005-07-08 2010-08-11 富士通株式会社 動画像復号装置、動画像復号方法および動画像復号プログラム
US20080301538A1 (en) * 2005-12-02 2008-12-04 Koninklijke Philips Electronics, N.V Method and Apparatus for Detecting Video Data Errors
KR100799998B1 (ko) * 2006-02-14 2008-01-31 엘지전자 주식회사 디지털 방송 수신기 및 그의 데이터 에러 처리방법
WO2009040873A1 (ja) * 2007-09-26 2009-04-02 Fujitsu Limited 可変長データのメモリ格納方法、および可変長データ記憶装置
KR100972599B1 (ko) * 2009-12-24 2010-07-28 표재숙 저수부에 의한 스팀 토출형 구이판
TWI442778B (zh) * 2010-02-05 2014-06-21 Acer Inc 視訊解碼裝置
CN103813177A (zh) * 2012-11-07 2014-05-21 辉达公司 一种视频解码系统和方法
CN110617778B (zh) * 2019-09-27 2021-06-22 广东工业大学 一种基于复光束角度传感器的大型非球面形貌检测方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990040315A (ko) * 1997-11-17 1999-06-05 곽치영 엠피이쥐 시스템 스트림의 순방향 및 역방향 재생방법 및 그 장치
KR20000037751A (ko) * 1998-12-02 2000-07-05 구자홍 화상통신기기의 데이터 전송 프로토콜
KR20020072108A (ko) * 2001-03-09 2002-09-14 주식회사 한단정보통신 디지털 엠펙 데이터를 저장 매체에 저장하고 재생하는시스템 및 그 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6404817B1 (en) * 1997-11-20 2002-06-11 Lsi Logic Corporation MPEG video decoder having robust error detection and concealment
JP2002204450A (ja) * 2000-12-28 2002-07-19 Sony Corp データ処理装置および方法
KR100357093B1 (ko) * 1999-06-02 2002-10-18 엘지전자 주식회사 동영상 압축 복원시스템에서의 오류 은폐장치 및 방법
JP2001169281A (ja) * 1999-12-13 2001-06-22 Matsushita Electric Ind Co Ltd 動画像符号化装置、および動画像符号化方法
US8275047B2 (en) * 2001-09-20 2012-09-25 Xilinx, Inc. Method and device for block-based conditional motion compensation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990040315A (ko) * 1997-11-17 1999-06-05 곽치영 엠피이쥐 시스템 스트림의 순방향 및 역방향 재생방법 및 그 장치
KR20000037751A (ko) * 1998-12-02 2000-07-05 구자홍 화상통신기기의 데이터 전송 프로토콜
KR20020072108A (ko) * 2001-03-09 2002-09-14 주식회사 한단정보통신 디지털 엠펙 데이터를 저장 매체에 저장하고 재생하는시스템 및 그 방법

Also Published As

Publication number Publication date
US7212575B2 (en) 2007-05-01
KR20030066225A (ko) 2003-08-09
US20030147469A1 (en) 2003-08-07
JP2003289541A (ja) 2003-10-10

Similar Documents

Publication Publication Date Title
KR100908830B1 (ko) 비디오 코딩에서의 에러 은폐를 위한 방법 및 장치
US6081551A (en) Image coding and decoding apparatus and methods thereof
US7260150B2 (en) Systems and methods for decoding of partially corrupted reversible variable length code (RVLC) intra-coded macroblocks and partial block decoding of corrupted macroblocks in a video decoder
US6125144A (en) Picture coding method and picture coder
KR100878057B1 (ko) 비디오 부호화
US6643403B2 (en) Moving-picture coding and/or decoding system resistant to transmission error
KR100429020B1 (ko) Mpeg-4 영상의 복호 방법
CN106464886B (zh) 视频中的画面的鲁棒编码和解码
JPH10234040A (ja) ビデオ情報をパケット化する方法
KR20010001208A (ko) 동영상 압축 복원시스템에서의 오류 은폐장치 및 방법
US8311127B2 (en) Method and apparatus to check for wrongly decoded macroblocks in streaming multimedia applications
US20050089102A1 (en) Video processing
JP2001197490A (ja) グレー形状情報を含むデジタル動映像の符号化方法
Suh et al. Motion vector recovery for error concealment
Aladrovic et al. An error resilience scheme for layered video coding
Park Motion vector recovery for error concealment

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130424

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140402

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160325

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170327

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 16