KR20010011309A - 저 복잡도의 동영상 인코더 장치 및 방법 - Google Patents

저 복잡도의 동영상 인코더 장치 및 방법 Download PDF

Info

Publication number
KR20010011309A
KR20010011309A KR1019990030615A KR19990030615A KR20010011309A KR 20010011309 A KR20010011309 A KR 20010011309A KR 1019990030615 A KR1019990030615 A KR 1019990030615A KR 19990030615 A KR19990030615 A KR 19990030615A KR 20010011309 A KR20010011309 A KR 20010011309A
Authority
KR
South Korea
Prior art keywords
unit
motion
intra
video signal
inter
Prior art date
Application number
KR1019990030615A
Other languages
English (en)
Other versions
KR100323235B1 (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 KR1019990030615A priority Critical patent/KR100323235B1/ko
Publication of KR20010011309A publication Critical patent/KR20010011309A/ko
Application granted granted Critical
Publication of KR100323235B1 publication Critical patent/KR100323235B1/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/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
    • 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
    • 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/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

Landscapes

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

Abstract

본 발명은 저 복잡도의 동영상 인코더 장치 및 방법에 관한 것으로, 외부로부터 NTSC 디코더를 통한 비디오 신호가 포맷 변환부에서 블록 단위의 스캐닝으로 변환되어 전달되면 각 매크로 블록에 대해 인트라 또는 인터로의 인코딩을 결정하는 인트라/인터 선택부와,
상기의 매크로 블록에 대해 변환을 위한 계수를 주파수 좌표로 변환하는 이산 코사인 변환부 및 진폭을 정수치로 치환하여 출력하는 양자화부를 통하여 전달받아 출현 빈도의 대수 절대값에 비례하는 길이를 가진 부호로 압축된 비디오 신호로 버퍼를 통해 출력하는 가변 길이 부호화부와,
상기 양자화부에서 역양자화부 및 역이산 코사인 변환부를 통하여 귀환되는 매크로 블록에 대해 인트라 또는 인터의 인코딩을 결정하는 인트라/인터 선택부와,
상기의 비디오 신호를 1프레임 단위로 프레임 메모리에 저장하면서 움직임 벡터를 추정한 후 이에 대한 보상을 수행하는 움직임 추정 및 보상부와,
상기 움직임 추정 및 보상부에 전달되는 비디오 신호에 대해 움직임 보상의 사용 여부를 결정하는 움직임 보상/움직임 안보상 선택부들로 구성함으로써 많은 응용에 적용할 수 있으며 저가로 구현이 가능하도록 한 것이다.

Description

저 복잡도의 동영상 인코더 장치 및 방법 {Algorithm and Implementation Method of a Low-Complexity Video Encoder}
본 발명은 저 복잡도의 동영상 인코더 장치 및 구현 방법에 관한 것으로, 특히 많은 응용에 적용할 수 있으며 저가로 구현이 가능하도록 하고 소프트웨어적인 부분을 하드웨어로 대치함으로써 쉽게 구현할 수 있도록 설계한 저 복잡도의 동영상 인코더 장치 및 방법에 관한 것이다.
세계적으로 화상회의/전화, 디지털 VCR, DVD(Digital Video Disc), 디지털 카메라, 감시 및 보안시스템 등의 디지털 멀티미디어 시스템들의 연구개발이 활발히 진행되고 있는 이미 주지된 사실이다.
그리고 이러한 멀티미디어 시스템에서는 특히 신호의 전송에 소요되는 시간 및 경로를 줄이거나 비디오 신호를 저장할 때 그 용량을 줄이기 위하여는 비디오 신호의 압축(특히 인코더)의 구현 기술이 매우 중요하다.
비디오 신호의 압축 규격은 ISDN 망을 이용한 화상 회의용인 H.261, 일반 전화망(PSTN)을 이용한 화상 전화용인 H.263, CD-ROM과 같은 DSM(Digital Storage Media)을 이용한 멀티미디어용인 MPEG-1, 현행 TV 규격과 향후 HDTV 방송용인 MPEG-2 등의 표준화 작업이 완료되었다.
선진 외국에서는 이러한 추세에 따라 디지털 VCR, 디지털 카메라 등의 디지털 영상 가전제품들의 개발에 많은 투자를 하고 있다.
영상정보를 이용하여 도로의 교통흐름, 노면상태를 비롯한 각종상황을 제어하기 위한 ITS(Intelligent Transportation System)가 국내외적으로 활발히 개발 중에 있으며, 또한 일반 전화망(PSTN), 종합정보 통신망(ISDN), 광대역 통신망(B-ISDN) 등을 통한 화상회의/전화 시스템 및 영상 통신 시스템의 개발에 국내외적으로 박차를 가하고 있는 실정이다.
이러한 화상 관련 디지털 멀티미디어 시스템에는 비디오 신호 압축관련 부품, 특히 비디오 인코더가 필수적인데 지금까지는 국내외적으로 수상기에 적용하는 비디오 디코더 위주로 개발하였다.
최근에 외국의 유수 업체에서 MPEG-1 급의 비디오 인코더를 구현할 수 있는 DSP(Digital Signal Processor)를 개발하였는데 구현상의 난이도, 가격, 집적도면에서 보급화 되기에는 어려움이 많았다.
그러므로 가능한 단일칩으로 구현되고, 여러 용도에 적용할 수 있는 비디오 인코더의 개발이 필요하여 미국의 C-Cube 사에서 비디오 인코더를 구현할 수 있는 프로세서(Processor)인 CL-4110을 선보였으며, 몇몇의 외국 기업에서 이를 이용한 MPEG-1 인코더(Encoder) 보드를 구현하여 상품화하였다.
또한 미국의 Array사에서도 이와 비슷한 프로세서를 개발하여 상품화를 추진하고 있다.
그러나 상기와 같은 종래의 비디오 인코더를 구현하기 위한 칩들은 하드웨어를 동작시는 소프트웨어(Software)를 같이 개발해야 하기 때문에 구현상에 어려움이 많이 따르게 되는 단점이 있었다.
따라서 본 발명은 많은 응용에 적용할 수 있으며 저가로 구현이 가능한 다목적용 저 복잡도의 동영상 인코더 장치 및 방법을 제공하는 것을 그 목적으로 한다.
또한 본 발명은 소프트웨어적인 부분을 하드웨어로 대치함으로써 쉽게 구현할 수 있도록 설계하는 것을 다른 목적으로 한다.
이와 같은 목적을 달성하기 위한 본 발명은 외부로부터 NTSC 디코더를 통한 비디오 신호가 포맷 변환부에서 블록 단위의 스캐닝으로 변환되어 전달되면 각 매크로 블록에 대해 인트라 또는 인터로의 인코딩을 결정하는 인트라/인터 선택부와,
상기의 매크로 블록에 대해 변환을 위한 계수를 주파수 좌표로 변환하는 이산 코사인 변환부 및 진폭을 정수치로 치환하여 출력하는 양자화부를 통하여 전달받아 출현 빈도의 대수 절대값에 비례하는 길이를 가진 부호로 압축된 비디오 신호로 버퍼를 통해 출력하는 가변 길이 부호화부와,
상기 양자화부에서 역양자화부 및 역이산 코사인 변환부를 통하여 귀환되는 매크로 블록에 대해 인트라 또는 인터의 인코딩을 결정하는 인트라/인터 선택부와,
상기의 비디오 신호를 1프레임 단위로 프레임 메모리에 저장하면서 움직임 벡터를 추정한 후 이에 대한 보상을 수행하는 움직임 추정 및 보상부와,
상기 움직임 추정 및 보상부에 전달되는 비디오 신호에 대해 움직임 보상의 사용 여부를 결정하는 움직임 보상/움직임 안보상 선택부들로 구성함으로써 많은 응용에 적용할 수 있으며 저가로 구현이 가능하도록 한 것이다.
도 1은 본 발명의 전체적인 구성을 나타낸 블럭도.
도 2는 본 발명의 포맷 변환부의 샘플링을 나타낸 개략도.
도 3은 본 발명의 인트라/인터 선택부의 결정 기준을 나타낸 개략도.
도 4는 본 발명의 MFSS의 예를 나타낸 개략도.
도 5는 본 발명의 움직임 보상/움직임 안보상의 결정기준을 나타낸 개략도.
도 6은 본 발명의 실시예에 따른 전체적인 구성을 나타낸 블럭도.
도 7은 본 발명의 실시예에 따른 DRAM 메모리의 구성을 나타낸 블럭도.
도 8은 상기 DRAM 메모리의 동작을 나타내는 타임선도.
도 9는 본 발명의 실시예에 따른 움직임 추정부의 구성을 나타낸 블럭도.
도 10은 본 발명 실시예에 따른 프로세서 엘리먼트의 구성을 나타낸 블럭도.
도 11은 본 발명 실시예에 따른 프로세서 어레이의 구성을 나타낸 블록도.
도 12는 본 발명의 실시예에 따른 움직임 보상부의 구성을 나타낸 블럭도.
도 13은 본 발명의 실시예에 따른 U/V 데이터의 움직임 보상부의 구성을 나타낸 블럭도.
도 14는 본 발명의 실시예에 따른 움직임 보상을 수행하는 동작을 나타낸 타임선도.
도 15는 본 발명의 실시예에 따른 ITF부의 구성을 나타낸 블럭도.
도 16은 본 발명의 실시예에 따른 가변 길이 부호화부의 구성을 나타낸 블럭도.
* 도면의 주요 부분에 대한 부호의 설명 *
1, 21 : NTSC 디코더 2 : 포맷 변환부
3, 10 : 인트라/인터 선택부 4, 26 : 이산 코사인 변환부
5, 27 : 양자화부 6, 28 : 가변 길이 부호화부
8,29 : 역양자화부 9, 30 : 역이산 코사인 변환부
11 : 프레임 메모리 12, 25 : 움직임 추정 및 보상부
22 : 인터페이스부 24 : ITF부
이하 본 발명을 첨부 도면에 의거 상세히 기술하면 다음과 같다.
도 1은 본 발명의 일실시예에 따른 동영상 부호화기의 전체적인 구성을 나타낸 것으로서,
외부로부터 입력되는 NTSC의 비디오 신호의 조합에 대해 그 조합에 해당하는 신호를 출력하는 NTSC 디코더(1)와,
상기 NTSC 디코더(1)로부터 입력되는 비디오 신호의 4:2:2 Y/U/V 포맷의 입력 영상을 4:2:0 Y/U/V 포맷으로 변환하면서 래스터 스캐닝의 입력을 8x8 이나 16x16 블록 단위의 스캐닝으로 변환하는 포맷 변환부(2)와,
상기의 포맷 변환부(2)로부터 GOP의 크기에 따라 I 픽처와 P 픽처만으로 구성되는 매크로 블록에 대해 인트라 또는 인터로의 인코딩을 결정하는 인트라/인터 선택부(Intra/Inter Decision)(3)와,
상기 인트라/인터 선택부(3)로부터 비디오 신호의 매크로 블록에 대해 변환을 위한 계수를 코사인 함수의 값으로 용이하게 계산하여 주파수 좌표로 변환하는 이산 코사인 변환부(4)와,
상기 이산 코사인 변환부(4)로부터 전달되는 주파수 좌표로 변환된 비디오 신호에 대해 연속적인 곡선의 파형을 계단 파형으로 바꾸면서 진폭을 적당한 레벨을 단위로 하여 정수치로 치환하여 출력하는 양자화부(5)와,
상기 양자화부(5)로부터 전달되는 계단 파형의 정수치에 대해 출현 빈도의 대수 절대값에 비례하는 길이를 가진 부호를 그 값에 할당하면서 압축된 비디오 신호로 버퍼(7)를 통해 출력하는 가변 길이 부호화부(6)와,
상기 양자화부(5)에서 전달되는 레벨 단위의 정수치를 주파수 좌표의 비디오 신호로 환원시켜 출력하는 역양자화부(8)와,
상기 역양자화부(8)로부터 전달되는 코사인 함수의 값인 주파수 좌표의 비디오 신호를 원래의 비디오 신호로 환원하는 역이산 코사인 변환부(9)와,
상기 역이산 코사인 변환부(9)로부터 전달되는 비디오 신호의 매크로 블록에 대해 인트라 또는 인터로의 인코딩을 결정하는 인트라/인터 선택부(10)와,
역이산 코사인 변환부(9)에서 인트라/인터 선택부(10)를 거쳐 전달되는 비디오 신호를 1프레임 단위로 저장하였다가 출력하는 프레임 메모리(11)와,
상기 NTSC 디코더(1)에서 포맷 변환부(2)를 거쳐 입력되는 비디오 신호와 상기 프레임 메모리(11)에서 전달되는 1프레임 단위의 비디오 신호에 대해 움직임 벡터를 추정한 후 이에 대한 보상을 수행하여 상기의 인트라/인터 선택부(3)로 전달하는 움직임 추정 및 보상부(12)와,
상기 움직임 추정 및 보상부(12)에 전달되는 비디오 신호에 대해 움직임 보상의 사용 여부를 결정하는 움직임 보상/움직임 안보상 선택부(13)들로 구성한다.
일반적인 동영상 부호화기에서 압축 방법은 크게 손실 압축인 시간적, 공간적인 압축부와 무손실 압축인 가변 길이 부호화부로 나눌 수 있으며, 공간적 압축방법은 이산 코사인 변환부 및 양자화를 이용하여 공간적으로 존재하는 영상의 유사성을 제거하는 방법이고, 시간적 압축 방법은 시간적으로 인접한 영상간에는 서로의 시간차가 짧아 매우 유사성이 높으므로 이러한 유사성을 움직임 추정과 움직임 보상 방법을 이용하여 가장 유사한 영상을 찾아 그 영상의 차분치만 보내는 방법이다.
위의 두 가지 압축 방법에 가변 길이 부호화 방법을 사용하여 최종 압축된 영상을 출력하는데, 가변 길이 부호화는 데이터의 발생확률이 높은 값에는 짧은 부호를 할당하고 발생 확률이 낮은 값에 대해서는 긴 부호를 할당하여 평균 부호 길이를 줄이는 압축 방법이다.
본 발명의 동영상 부호화기인 동영상 인코더에 NTSC 디코더(1)를 통하여 입력되는 4:2:2 Y/U/V 포맷의 입력 영상인 비디오 신호는 포맷 변환부(2)에서 도 2에 도시한 것과 같이 4:2:0 Y/U/V 포맷으로 변환되고, 또한 래스터 스캐닝의 입력을 8x8 혹은 16x16 블록 단위의 스캐닝으로 변환하게 된다.
이러한 변환된 입력은 인코딩 모드와 GOP(Group of Picture)의 크기에 따라 I와 P 픽처(Picture)만으로 구성이 되는 픽처의 타입이 결정된다.
픽처의 타입이 인트라인 경우 픽처내의 모든 매크로블록은 인트라로 인코딩 되며 이산 코사인 변환, 양자화, 가변 길이 부화화의 과정을 통해 인코딩 된다.
픽처의 타입이 인터(P 픽처)인 경우 픽처내의 매크로블록은 인트라 또는 인터로 인코딩 될 수 있다.
우선 입력된 영상에 대해 움직임 추정에 의해 움직임 벡터를 계산한 후 움직임 보상을 사용한 경우와 사용하진 않은 경우에 대해 복원된 영상과 SAD(Sum of Absolute Difference)를 이용하여 움직임 보상의 사용 여부를 결정하고 그 결과에 대해 재구성된 블록의 분산과 인코딩하는 매크로블록의 분산을 비교하여 인트라 매크로블록으로 인코딩 할 것인지 비인트라 매크로블록으로 인코딩 할 것인지를 결정한다.
인트라 매크로블록 인 경우는 이산 코사인 변환, 양자화 및 가변 길이 부호화를 통해 인코딩하며 비인트라 매크로블록 인 경우는 이전 프레임의 참조 매크로블록과의 차분치를 이산 코사인 변환, 양자화 및 가변 길이 부호화를 이용하여 인코딩 한다.
인코딩된 영상은 비인트라 픽처의 참조 영상으로 사용하기 위해 양자화부(5)에서 출력된 신호를 인코딩의 역순으로 디코딩하여 프레임 메모리(11)에 저장한다.
B 픽처는 사용되지 않으므로 이전 한 프레임의 영상만을 저장하면 된다.
가변 길이 부호화부(VLC)(6)는 MPEG 규격에서 정한 코드 북(code book)을 이용하여 코딩을 수행한다.
상기의 포맷 변환부(2)로부터 포맷이 변환된 상태인 매크로 블록을 전달받는 인트라/인터 선택부(3)(10)에서는 P 픽처의 매크로블록을 인트라 또는 비인트라로 선택적으로 인코딩할 수 있으며, 움직임 추정 및 보상부(12)와 움직임 보상/움직임 안보상 선택부(13)에 의해 얻어진 결과와 인트라 매크로블록으로 인코딩 할 때와의 효율을 비교하여 코딩 효율이 높은 것을 선택하게 된다.
본 실시예에서 사용한 방법은 현재 매크로블록의 분산과 현재 매크로블록과 이전 영상으로부터 움직임이 보상된 매크로블록과의 분산 값을 비교하여 결정하게 되는 것으로 도 3에 도시한 것과 같이 VAR 64까지는 모두 인터인 비 인트라(non intra)가 되며 VAR 64와 VAROR 64의 교차점에서 VAR 256과 VAROR 256의 교차점을 연결하는 사선이 인터와 인트라를 선택하는 기준선이 된다.
상기의 인트라/인터 선택부(3)로부터 선택적으로 인코딩되는 픽처를 전달받는 이산 코사인 변환부(DST : Discrete Cosine Transform)(4)와 역이산 코사인 변환부(IDST : Inverse Discrete Cosine Transform)(9)는 2차원 공간상의 중복성을 줄이도록 한다.
상기 이산 코사인 변환부(4)는 2차원 축 변환을 통해서 데이터의 상관성을 제거하는 방법으로 픽처를 8 x 8 블록으로 나누어 수행하고, 이렇게 변환된 데이터들은 저주파 대역으로 편중되는데 이렇게 얻어진 데이터를 양자화부(5)에서 양자화하면서 고주파 성분을 제거하여 공간적 압축을 하게 된다.
본 실시예에서 사용되는 이산 코사인 변환부(4)와 역이산 코사인 변환부(9)의 수식적 표현은 다음의 식 (1)과 같다.
상기의 이산 코사인 변환부(4)에서 얻어진 데이터는 저주파에 정보가 편중되어 있고, HVS(Human Visual System)의 특성이 고주파 성분보다는 저주파 성분에 민감하므로 양자화부(5)에서는 이런 특성을 이용하여 주파수 성분에 따라 서로 다른 가중치를 두어 나누어줌으로써 고주파 성분을 제거하여 적은 손실로서 큰 압축효과를 얻을 수 있게 된다.
본 실시예에서 적용하는 양자화부(5)의 알고리즘은 다음과 같다.
즉 매크로블록 타입이 인트라인 경우 양자화부(5)와 역양자화부(8)에서는 DC 계수와 AC 계수로 나누어 다음의 식(2)와 같이 수행한다.
DC 계수는 화면의 평균 밝기를 나타내는 것으로서 사람의 눈에 가장 민감한 요소로 손실을 줄이기 위해 고정된 값 8로 양자화하며, AC 계수는 양자화 매트릭스와 양자화 스텝 값에 의해 양자화한다.
인터(비인트라) 매크로블록의 경우는 움직임 보상된 영상과의 차에 대한 값이므로 DC 와 AC 계수에 관계없이 다음의 식 (3)과 같이 동일하게 수행한다.
여기서 w(i,j)는 양자화 매트릭스로 디폴트 양자화 매트릭스는 다음의 표와 같다.
디폴트 인트라 매트릭스의 특징을 보면 인트라의 경우 상대적으로 중요성이 적은 고주파 성분에 대해서는 큰 값을 부여하고 저주파 성분에 대해서는 작은 값을 부여하도록 구성되어 있으며 비인트라 매트릭스는 동일한 값으로 구성되어 있다.
본 실시예의 비디오 인코더는 디폴트 양자화 매트릭스만 사용한다.
상기의 움직임 추정(Motion Estimation) 및 보상부(12)는 움직임이 있는 영상에서 시간적 정보의 중복성을 제거하기 위한 압축 방법으로 현재 매크로블록과 이전 영상에서 가장 잘 대응되는 블록에 대한 수평 수직성분의 움직임 벡터를 찾는 것이다.
탐색 영역에서 현재 매크로블록에 가장 잘 대응되는 매크로블록을 찾는 방법으로는 블록 정합 알고리즘(BMA : Block Matching Algorithm)이 가장 많이 이용되고 있으며, 블록 정합 알고리즘에는 FS(Full Search), HS(Hierarchical Search), TSS(Three-Step Search), FSS(Four-Step Search) 등이 대표적으로 이용되고 있다.
이중 FS는 가장 성능이 우수하지만 많은 연산량이 필요로 하므로 실시간 구현에 어려움이 있고, HS는 고속 알고리즘의 가장 이상적인 형태지만 역시 연산량이 많고 VLSI의 구조가 복잡하며, TSS는 통계적인 움직임 벡터를 고려하지 않고 모든 움직임 벡터의 가능성을 같게 보기 때문에 실제 적용에서는 비효율적인 면이 있다.
반면에 FSS는 FS만큼 많은 양의 연산을 요구하지 않으면서 TSS보다 높은 효율성을 갖는 것으로 알려져 있다.
그러므로 본 실시예에서는 기존의 FSS 알고리즘을 변형한 MFSS(Modified Four-Step Search) 알고리즘을 사용한다.
MFSS의 특징은 기존의 FSS보다 탐색점의 수는 다소 많지만, 각 단계에서 탐색점의 간격이 일정하고 9점으로 구성된 베이스 모듈(Base Module)의 단위 모듈로 이루어져 있기 때문에 하드웨어 구현이 용이하고 충분한 탐색점의 분포로 움직임이 많고 적음에 크게 영향을 받지 않으며 FS(Full Search)에 거의 근접한 성능을 나타낸다는 장점이 있는 것이다.
MFSS의 알고리즘의 탐색 방법은 도 4에 도식적으로 도시한 것과 같이,
원점과 주위 8 개의 탐색점을 포함하여 9 점에 대해 최소 에러점을 찾는 단계와,
이전 스텝의 최소 에러점을 기준으로 3 점에 대해 최소 에러점을 구하는 단계와,
여기서 탐색점들의 분포는 기준점에서 좌측상단 쪽으로 3, 우측 하단으로 2의 범위내의 점들이 된다.
이전 스텝의 최소 에러점을 기준으로 36 점에 대해 최소 에러점을 구하는 단계와,
여기서 탐색점의 분포는 분포의 중심에 있는 4 점 중에 탐색점의 분포가 원 점에서 멀어지는 방향으로 설정한다.
이전 스텝의 최소 에러점을 기준으로 원점과 주위의 8개의 탐색점을 포함하는 9점에 대해 최소 에러점을 찾는 단계와,
이때 찾아진 점과 원점과의 거리가 움직임 벡터가 된다.
상기의 움직임 추정 및 보상부(12)의 움직임 추정에 의해 얻어진 데이터를 전달받는 움직임 보상/움직임 안보상 선택부(Motion compensation / No motion compensation Decision)(13)는 상기의 움직임 추정에서 얻어진 데이터와 움직임 보상을 하지 않은 데이터와 인코딩의 효율을 비교하여 움직임 보상의 사용 여부를 결정한다.
이것은 현재 매크로블록에 대하여 움직임 보상에 의해 재구성된 매크로블록과 움직임 보상을 사용하지 않고 재구성된 매크로블록(움직임 벡터가 0인 경우) 과의 에러를 비교하여 큰 차이가 없을 경우 움직임 보상을 사용하지 않고 인코딩함으로써 움직임 벡터의 전송에서 오는 비트 발생을 줄이도록 한다.
본 실시예에서 사용한 움직임 보상/움직임 안보상 선택부(MC / No MC)(13)의 결정은 SM3(Simulation Model 3)에서 제안한 방법을 하드웨어로 구현이 용이하도록 변형하여 사용한 것으로서,
에러의 비교 방법은 SAD를 이용하였으며, 도 5에 도시한 것과 같이 움직임 보상의 영역과 움직임 안보상의 영역이 x=1의 수직선과 y=2x의 사선과 x=1의 수직선 및 y=x의 사선들에 의해 구별되는 영역의 나뉘게 되는 특성을 갖는다.
도 6은 본 발명의 실시예에 따른 비디오 인코더를 하나의 칩으로 구현한 상태를 나타낸 블록도로서,
NTSC 디코더(21)로부터 직접 디지털 영상 신호를 입력받는 인터페이스부(22)에서는 외부에 접속된 DRAM 메모리(23)에 저장하였다가 시스템 클럭의 속도로 동작에 필요한 비디오 포맷 형태인 8x8 및 16x16 블록 단위로 스캐닝하여 출력하고,
여기서 동작에 따른 시간의 지연은 별도의 지연소자를 사용하는 것이 아니라, DRAM 메모리(23)에서 읽어내는 시간을 조절하여 필요로 하는 메모리의 용량을 최소화한다.
DRAM 메모리(23)로부터 입력되는 영상 신호는 ITF(Inter Frame Processor) 부(24)로 입력되어 인트라(Intra)/인터(Inter)의 모드를 결정하도록 하고,
여기서 GOP(Group of Picture)의 첫번째 프레임은 항상 인트라 프레임 모드가 된다.
ITF부(24)에는 움직인 추정 및 보상부(25)로부터 움직임이 보상된 영상도 귀환되어 입력되므로 다음에 이산 코사인 변환부(26)와 양자화부(27)를 거치고 가변 길이 부호화부(28)를 거쳐 출력되도록 한다.
동시에 움직임 추정 및 보상을 위해 역이산 코사인 변환부(29), 역양자화부 (30)(Inverse Quantization)를 거쳐 복원된 영상은 다시 DARM 메모리(23)에 프레임 단위로 저장된다.
DRAM 메모리(23)에 저장된 복원 영상은 움직임 추정 및 보상부(25)로 귀환되어 움직임 추정의 과정을 거쳐 움직임 벡터를 찾은 다음 이를 이용하여 움직임 보상된 데이터를 ITF부(24)로 출력하도록 한다.
도 7은 인터페이스부의 상세한 구성을 도시한 것으로서 DRAM 메모리(23)에 저장하는 데이터가 3가지이므로 이들을 각각 저장하기 위한 저장영역을 필요하게 되며 이들을 입/출력을 제어한다.
즉, NTSC 디코더(21)로부터 입력되는 영상신호를 블록 및 매크로 블록 포맷으로 변환하기 위해 필요한 프레임 메모리인 CFB(Current Frame Buffer)와 움직임 보상을 위해 복원된 영상을 저장하기 위한 RFB(Reconstructed Frame Buffer), 마지막으로 압축된 비트열의 저장을 위한 CB(Channel Buffer)의 3가지로 이루어진 데이터를 각각 저장하기 위하여 외부에 DRAM 메모리(23)를 구성한다.
이때 프레임 메모리는 읽기와 쓰기를 번갈아 수행해야 하므로 4 프레임을 저장할수 있는 메모리 용량이 필요하고 CB는 선입선출(FIFO)의 구조로 설계한다.
상기 인터페이스부(22)는 상기의 3가지 메모리를 효율적으로 입/출력하기 위하여 DRAM 메모리(23)를 제어하면서 필요한 동기 신호를 발생하여 인코더를 이루는 다른 모듈로 출력하여 동작의 주기가 일치하도록 하며, DRAM 메모리(23)를 운용할 때 다양한 영상 포맷을 지원하고 그에 맞게 제어한다.
NTSC 디코더(21)로부터 비디오 신호(Video Signal)를 전달받는 콘트롤러(31)는 모드 신호(Mode Signal)와 클럭 신호(Clock)를 전달받으면서 동기 신호(Sync.)를 출력하여 내부의 안정된 동작이 가능하도록 하고,
상기 콘트롤러(31)의 제어를 받으면서 NTSC 디코더(21)로부터 비디오 신호(Video Signal)를 전달받아 일시 저장하는 CFWB(Current Frame Write Buffer) (32)는 블록 및 매크로 블록 포맷으로 변환하여 DRAM 메모리(23)에 블록 단위로 저장하기에 필요한 제어신호와 번지 값을 출력하도록 하고,
상기 콘트롤러(31)의 제어를 받는 CFRB(Current Frame Read Buffer)(33)는 블록 및 매크로 블록 포맷으로 DRAM 메모리(23)에 저장되었던 비디오 신호(Video Signal)를 읽기에 필요한 제어신호와 번지 값을 출력하도록 하고,
상기 콘트롤러(31)의 제어를 받으면서 역이산 코사인 변환부(29)로부터 복원된 프레임 단위의 비디오 신호(Video Signal)를 전달받아 일시 저장하는 RFWB (Reconstructed Frame Write Buffer)(34)는 움직임 보상을 위해 복원된 프레임의 영상을 DRAM 메모리(23)에 저장하기 위한 제어신호 및 번지 값을 발생하고,
상기 콘트롤러(31)의 제어를 받는 RFRB(Reconstructed Frame Read Buffer) (35)는 프레임 단위로 DRAM 메모리(23)에 저장되었던 비디오 신호(Video Signal)를 읽기에 필요한 제어신호와 번지 값을 출력하도록 하고,
움직임 추정 및 보상부(25)에서 움직임의 보상이 완료되어 가변 길이 부호화부(28)로부터 압축된 비트열을 저장하였다가 순차적으로 출력하는 CB(Channel Buffer)(36)는 원하는 속도로 읽어 출력하기 위한 제어신호 및 번지 값을 출력하도록 한다.
상기 콘트롤러(31), CFWB(32), CFRB(33), RFWB(34), RFRB(35) 및 CB(36)로부터 제어신호와 번지값에 해당하는 정보를 전달받는 인터페이스(37)는 다양한 형태의 모드에 따라 원하는 기능을 수행하도록 제어하면서 DRAM 메모리(23)에 직접 접속할 수 있는 제어신호(Address, Data, RAS, CAS, OEN, WEN 등)를 출력한다.
여기서 DRAM 메모리(23)는 입력되는 비디오 포맷에 따라 메모리 맵핑(Memory Mapping)이 달라지는데, 앞에서 설명한 데이터들을 지원하기 위해 Time-Sharing을 통해 DRAM 메모리(23)를 액세스(Access)할 수 있는 대역폭을 나누어 사용하였다.
이때 DRAM 메모리(23)의 이용 효율성을 높이기 위해 DRAM 메모리(23)의 지원 모드 중에서 Fast Page / Hyper Page Mode를 사용하였고 CFWB(32), CFRB(33), RFWB(34), RFRB(35) 및 CB(36)의 동작은 시분할 처리하였고, 도 8에는 인터페이스 (37)에서 DRAM 메모리(23)로 출력되는 제어신호(Address, RAS, LCAS, UCAS, WEN, OEN, wData, rData)들의 타임 선도를 나타내었다.
여기서 CB(36)를 위한 타이밍은 영상 데이터가 유효하지 않은 블랭킹 (Blanking) 기간 동안에 RFWB(34)와 RFRB(36)의 타이밍을 이용한다.
도 9는 전술한 MFSS 알고리즘을 적용한 움직임 추정부에 대한 전체적인 구조에 나타낸 블록도로서,
탐색 영역의 데이터를 저장하는 SW 메모리(41)와,
기준 매크로 블록의 데이터를 저장하는 DB 메모리(42)와,
상기 SW 메모리(41) 및 DB 메모리(42)의 데이터 입출력을 제어하는 메모리 제어부(43)와,
9 개의 탐색점으로 구성되는 베이스 모듈(Base Module)에 대한 SAD(Sum of Absolute Difference) 값을 계산하기 위해 9 개의 제어 엘리먼트(Process Element)로 구성되는 제어 어레이(Processor Array)(44)와,
상기 제어 어레이(44)에 의해 구해진 9 개의 SAD값 중 최소값의 위치를 구하는 PMVG(45),
상기 메모리 제어부(43)와 제어 어레이(Processor Array)(44) 및 PMVG(45)의 내부 동작을 제어하면서 최종 움직임 벡터를 구하는 MEP 콘트롤러(46)들로 구성하였다.
상기 메모리 제어부(43)에는 탐색 영역의 데이터 입력인 SW, 기준 매크로 블록의 데이터 입력인 DB, 움직임 추정의 시작 신호인 START가 입력되며,
상기 메모리 제어부(43)와 MEP 콘트롤러(46)에는 상기 SW와 DB의 입력 동기신호인 NNEX가 동시에 입력되고,
상기 MEP 콘트롤러(46)에는 탐색 영역이 화면 가장자리에 걸쳐 있음을 나타내는 BND_SIG와 클럭(CLK)와 리세트(RESET)가 입력된다.
도 10은 움직임 추정을 위한 연산이 32비트, 즉 4화소를 동시에 연산하는 방법을 적용하기 위한 9개의 제어 엘리먼트의 구성을 나타낸 것으로서,
제 1 지연소자(50)를 통하여 전달되는 바로 전의 프레임 데이터와 현재의 데이터에 대해 제 2 지연 소자(51)로부터의 인에이블 신호(PE-E)를 전달받으면 절대 오차(Absolute Difference)를 구하는 오차 검출부(52)(53)(54)(55)와,
상기 오차 검출부(52,53)(54,55)의 오차값을 합하는 가산부(56)(57)와,
상기 가산부(56)(57)의 가산치를 더하는 가산부(58)와,
상기 가산부(58)의 가산치를 누적하여 제어 엘리먼트 출력값(PEOUT)를 출력하는 누적기(59)들로 구성한다.
도 11은 9개의 제어 엘리먼트(Process Element)로 구성되는 제어 어레이 (Processor Array)의 구성을 나타낸 것으로서,
제 1 내지 제 9 단위 제어 엘리먼트(PE0)∼(PE8)들의 제어 엘리먼트 출력값 (PEOUT0)∼(PEOUT8)을 멀티플렉서(MUX)에서 혼합하여 SAD를 출력하도록 한다.
여기서 제어 어레이(44)를 9개의 단위 제어 엘리먼트(PE0)∼(PE8)들로 구성되는 이유는 MFSS 알고리즘을 구성하는 탐색점이 9개 단위로 분할되기 때문이다.
이렇게 9개의 단위 제어 엘리먼트(PE0)∼(PE8)에서 SAD값이 계산되면 비교되는 순서에 맞게 SAD값을 출력하기 위해 멀티플렉서(MUX)가 각 단위 제어 엘리먼트 (PE0)∼(PE8)들의 출력단에 연결된다.
MEP 콘트롤러(46)에서 움직임 추정기의 전체적인 동작을 제어하는데 그 중 중요한 일을 몇 가지로 요약하면 다음과 같다.
첫째, 베이스 모듈(Base Module)을 구성하는 9 개의 탐색점에 대한 최소 에러점을 계산하기 위한 SW, DB의 데이터를 읽어오기 위해 메모리 제어부(43)에 데이터 읽기 시작신호와 SW의 읽기 시작 어드레스를 생성한다.
둘째, 9개의 단위 제어 엘리먼트(PE0)∼(PE8)들의 최종 출력 위치를 알려주는 신호를 생성한다.
세째, PMVG가 9개의 출력 값에 대해 최소값을 비교하기 위한 동기 신호를 생성한다.
이렇게 하여 움직임 추정의 최종단계를 거쳐 움직임 벡터가 계산되면 움직임 추정 동기 신호(mc_sync)와 제어 신호(mvx, mvy)를 출력하게 된다.
전체적으로 MEP 콘트롤러(46)의 동작 제어는 내부 카운터로 이루어지는데 start 신호에 동기를 맞춰 시작되고 최종 움직임 벡터가 출력되면 리세트된다.
전체적인 동작 순서는 MFSS 알고리즘의 스텝에 맞게 스텝 카운터(step_ counter)가 0부터 3까지 증가하고 각 스텝 카운터 값에 대해 다시 베이스 모듈 단위 연산을 하기 위해 서브 스텝 카운터가 0부터 3까지 증가하도록 되어 있다.
상기 서브 스텝 카운터가 변할 때마다 베이스 모듈에서의 최소 에러값들을 비교하고 메모리 제어부(43)로 읽어낼 데이터의 시작 어드레스를 알려준다.
도 12는 움직임 보상부의 내부 구성을 도시한 것으로서,
Y 영상에 대해 움직임 보상하는 MC_Y(Motion Compensation_Y)(61)와,
U와 V에 대해 움직임 보상하는 부분인 MC_UV(62)와,
상기 MC_Y(61) 및 MC_UV(62)로부터 출력되는 움직임이 보상된 데이터(MCed)를 출력하는 MC_MUX(63)들로 구성한다.
상기 MC_Y(61)에는 Y에 대한 보상 데이터(SWY0, SWY1, SWY2, SWY3)들이 입력되며, MC_UV(62)에는 U, V 영상에 대한 SW 데이터 입력으로 SW, 움직임 벡터 출력의 동기 신호인 MV_SYNC, 움직임 벡터인 MVX와 MVY, 움직임 보상 시작을 알리는 START들이 입력되고,
상기 MC_Y(61)MC_UV(62)에서 보상된 데이터를 전달받는 MC_MUX(63)에서는 마지막으로 움직임 보상된 데이터(Mced)를 출력한다.
여기서 Y에 대한 움직임 보상은 움직임 추정부의 마지막 Step의 마지막 탐색점에 해당하는 매크로블럭의 데이터가 움직임 보상된 영상이기 때문에 이를 입력받아 출력 포맷을 조정하여 출력한다.
컬러 영상은 명암정보(Y : Luminance)와 색깔정보(U, V : Chrominance)로 구성되는데 움직임 추정에서는 Y성분에 대해서만 적용하였다.
그것은 당연히 명암정보가 움직이면 그에 따른 색깔정보도 같이 움직이기 때문에 U, V에 대해서는 할 필요는 없다.
하지만 움직임 보상에서는 Y, U, V 영상에 대해 각기 적용되어야 하는데 Y,U,V가 4:2:0으로 샘플링 되었을 경우 그에 따른 움직임 벡터의 적용도 다를 수 있다.
즉, 영상의 4:2:0 구성은 화면 내에서 Y 화소가 4개 있으면 그에 대해 색깔 정보로 U, V가 각각 2개씩 있음을 의미하고, 이를 움직임 벡터에 적용해보면 U, V에서의 움직임 벡터는 Y의 움직임 벡터의 절반이 되야 한다는 것을 알 수 있다.
따라서 U, V의 움직임 보상에는 움직임 벡터를 2로 나누어 사용하면 된다.
움직임 추정 및 보상부(25)의 움직임 보상은 크게 Y에 대한 움직임 보상 방법과 U와 V의 움직임 보상 방법이 동일하기 때문에 같은 구조를 서로 공유하는 형태를 가지고 있다.
도 13은 U와 V에 대한 움직임 보상 방법의 실시예에 따른 구성을 나타낸 것으로서,
U 영상의 데이터를 저장하는 U_SW 메모리(64)와,
V 영상의 데이터를 저장하는 V_SW 메모리(65)와,
U, V 영상에 대해 움직임 보상하기 위해 읽기를 제어하는 MCUV_R(Motion Compensation Read Control of U, V)(66)와,
U, V 영상에 대해 움직임 보상하기 위해 쓰기를 제어하는 MCUV_W(Motion Compensation Write Control of U, V)(67)와,
상기 MCUV_R(66) 및 MCUV_W(67)로부터의 제어 신호에 대해 상기의 U_SW 메모리(64) 및 V_SW 메모리(65)의 데이터를 입출력하면서 신호의 보간을 구하면서 움직임이 보상된 데이터(MCed)를 출력하는 MCUV_NFT(68)들로 구성한다.
상기 MCUV_R(66)에는 움직임 벡터 출력의 동기 신호인 MV_SYNC, 움직임 벡터인 MVX와 MVY, 움직임 보상 시작을 알리는 START들이 입력되고,
MCUV_W(67)에는 움직임 보상 시작을 알리는 START와 제어 신호 MCU_W_ST가 입력되며,
상기 MCUV_R(66) 및 MCUV_W(67)에서 제어 신호를 전달받으면서 보간에 의한 보상을 수행하는 MCUV_NTF(68)에서는 마지막으로 움직임 보상된 데이터(Mced)를 출력한다.
한편 상기의 움직임 보상을 위한 동작은 도 14에 타임도로 도시한 것과 같이 Y 영상 데이터를 출력한 후 U, V 영상 데이터를 입력받고 U 영상 데이터를 출력한 다음에 다시 Y 영상 데이터를 출력하는 과정을 반복하도록 한다.
그리고 이들 동작을 위한 제어 신호(STSRT, MCU_W_ST, MCU_ST, MCV_ST)들이 각각 입력되는 시점에 동작이 바뀌도록 한다.
그리고 U/V의 움직임 보상은 SW에 데이터를 저장하고 움직임 보상을 위해 읽는 시간이 겹치지 않는 시간에 수행되도록 하였기 때문에 메모리의 크기를 반으로 줄이게 된다.
도 15는 도 6을 통해 설명되었던 ITF부의 구성을 나타낸 것으로서,
움직임이 보상되어 입력되는 8x8 블록 단위의 Predicted Frame과 DRAM 메모리(23)로부터 입력되는 8x8 블록 단위의 Current frame을 전달받는 인트라/인터 선택부(71)에서 Intra-Frame 모드와 Inter-Frame 모드 중에서 매크로블럭 단위로 모드를 결정한다.
인트라/인터의 선택(Decision)을 위해서는 1 매크로블럭 기간이 필요하게 되는데, 이러한 지연은 제 1 선입선출 버퍼(FIFO1)(72)와 제 2 선입선출 버퍼 (FIFO2)(73)를 통해 각각 보상된다.
상기의 지연이 보상된 입력 영상은 인트라-프레임(Intra-Frame) 모드인 경우에는 MUX_SUB(74)에서 Current Frame 데이터를 출력하고 인터-프레임(Inter-Frame) 모드인 경우에는 두 입력의 차를 이산 코사인 변환부(DCT)(26)로 출력하게 된다.
또한 역이산 코사인 변환부(30)로부터 입력되는 영상과 Predicted Frame 영상의 지연을 역시 제 3 선입선출 버퍼(FIFO3)(75)과 제 4 선입선출 버퍼(FIFO4) (76)를 통해 보상한 후 MUX_ADD(77)에 입력된다.
인트라 프레임 모드인 경우 역이산 코사인 변환부(30)로부터 입력되는 영상을 출력하고 인트라 프레임 모드인 경우에는 두 입력 영상의 합을 통해 보상된 영상은 DRAM 메모리(23)의 Reconstructed Frame Buffer로 출력한다.
도 16은 가변 길이 부호화부의 구성을 도시한 것으로서,
도 6의 양자화부(27)로부터 전달되는 이산 코사인 변환 계수(DCT Coefficients)들의 런(Run)과 랭쓰(Length)를 계산하기 위해서는 8x8 블록 시간이 필요한데, 이러한 지연의 보상을 위한 제 5 선입선출 버퍼(FIFO5)(81)와,
상기의 런(Run)과 랭쓰(Length)를 계산하는 런 랭쓰 코더(Run Length Coder) (82)와,
상기의 계수(Coefficients) 이외에 다른 Syntax Data 및 Header 등을 발생하는 헤더 코더(Header Coder)(83)와,
상기 계수(Coefficients)의 런 및 랭쓰(Run, Length)와 기타 Header를 선택하는 멀티플렉서(MUX)(84)와,
상기의 정보로부터 롬(ROM)(86)에 저장된 코드 북(Codebook) 정보를 읽어내어 최종 코드를 발생하는 가변 길이 부호 코드 발생부(VLC Code Generator)(85)와,
발생된 가변길이의 코드를 32 비트 단위로 묶어서 출력해주는 32-Bit 파커 (Packer)(87)와,
상기의 런 랭쓰 코더(82)와 헤더 코더(83) 및 멀티플렉서(84)의 동작을 제어하면서 데이터의 처리가 MPEG Syntax 구조에 맞도록 다중화를 조절하는 콘트롤러 (88)들로 구성한다.
여기서 특히 시퀸스(Sequence), GOP, 픽처(Picture) 수준의 상위 계층의 헤더 신호들은 수직 브랭킹(Vertical Blanking) 기간 동안에 코드를 발생하여 다중화한다.
슬라이스(Slice) 계층의 헤더(Header) 정보들은 수평 블랭킹(Horizontal Blanking) 기간 동안에 코드를 발생하여 다중화 하고, 매크로 블록 단위의 헤더 정보(Quant, Motion Vector, MBA, CBP,..)들은 매크로 블록의 기간을 7개의 8x8 블록 기간을 할당하여 1 블록의 블랭킹 기간 동안에 처리하도록 한다.
주요 코드 북은 롬(86)에 룩업 테이블(lookup Table)로 저장하게 되는데, 저장되는 포맷은 각기 다른 코드 북을 분리하여 저장한 후에 코딩하기 위한 데이터의 어드레스(Address)가 입력되면 롬(86)에서 출력되는 코드 북에 대한 정보는 다음과 같이 저장된다.
16 비트 폭을 갖는 롬(86)을 이용할 경우, 16 비트는 각 6 비트와 10비트로 나뉘어 구분된다.
이때 6 비트는 코드의 길이를 알려주는 (Code Length) 정보이고 나머지 10 비트는 실제 코드 정보이다.
모든 코드는 길이가 5 비트 이상이면, 항상 앞 코드의 앞부분은 0으로 시작하게 되므로 롬(86)에서 읽어온 16 비트를 이용하여 먼저 코드의 길이를 해석 한 다음 코드의 길이가 10 비트를 넘어 갈 경우에는 앞에다 0을 부족한 만큼 채우면 된다.
바로 이러한 작업을 가변 길이 부호 코드 발생기(85)에서 수행하게 된다.
가변 길이 부호 발생기(85)에서 출력되는 코드의 길이는 32 비트가 최대이고 가변적이기 때문에 32 Bit 파커(87)에서는 32 비트 단위로 채워서 항상 32 비트 단위로 출력하는 역할을 수행한다.
이와 같은 본 발명의 저 복잡도의 동영상 인코더 장치 및 방법에 의하여서는 외부로부터 NTSC 디코더를 통한 비디오 신호가 포맷 변환부에서 블록 단위의 스캐닝으로 변환되어 전달되면 인트라/인터 선택부에서 각 매크로 블록에 대해 인트라 또는 인터로의 인코딩을 결정하고,
상기의 매크로 블록에 대해 변환을 위한 계수를 주파수 좌표로 변환하는 이산 코사인 변환부 및 진폭을 정수치로 치환하여 출력하는 양자화부를 통하여 전달받는 가변 길이 부호화부에서 출현 빈도의 대수 절대값에 비례하는 길이를 가진 부호로 압축된 비디오 신호로 버퍼를 통해 출력하고,
상기 양자화부에서 역양자화부 및 역이산 코사인 변환부를 통하여 귀환되는 매크로 블록에 대해 인트라/인터 선택부에서 인트라 또는 인터의 인코딩을 결정하도록 하고,
상기의 비디오 신호에 대해 움직임 추정 및 보상부에서 움직임 보상/움직임 안보상 선택부의 결정에 의해 1프레임 단위로 프레임 메모리에 저장하면서 움직임 벡터를 추정한 후 이에 대한 보상을 수행하도록 함으로써 많은 응용에 적용할 수 있으며 저가로 구현이 가능하도록 한 것이다.

Claims (7)

  1. 외부로부터 입력되는 비디오 신호를 NTSC 디코더(1)를 통해 조합에 해당하는 신호로 입력받아 4:2:2 Y/U/V 포맷의 입력 영상을 4:2:0 Y/U/V 포맷으로 변환하면서 래스터 스캐닝의 입력을 8x8 이나 16x16 블록 단위의 스캐닝으로 변환하는 포맷 변환부(2)와,
    상기의 포맷 변환부(2)로부터 GOP의 크기에 따라 I 픽처와 P 픽처만으로 구성되는 매크로 블록에 대해 VAR 64까지는 모두 인터인 비 인트라(non intra)가 되며 VAR 64와 VAROR 64의 교차점에서 VAR 256과 VAROR 256의 교차점을 연결하는 사선이 인터와 인트라를 선택하는 기준선이 되도록 인트라 또는 인터로의 인코딩을 결정하는 인트라/인터 선택부(Intra/Inter Decision)(3)와,
    상기 인트라/인터 선택부(3)로부터 비디오 신호의 매크로 블록에 대해 변환을 위한 계수를 코사인 함수의 값으로 용이하게 계산하면서 2차원 축 변환을 통해서 데이터의 상관성을 제거하는 방법으로 픽처를 8 x 8 블록으로 나누어 수행하는 이산 코사인 변환부(4)와,
    상기 이산 코사인 변환부(4)로부터 전달되는 주파수 좌표로 변환된 비디오 신호에 대해 연속적인 곡선의 파형을 고주파 성분을 제거하면서 계단 파형으로 바꾸어 진폭을 적당한 레벨 단위의 정수치로 치환하여 출력하는 양자화부(5)와,
    상기 양자화부(5)로부터 전달되는 이산 코사인 변환 계수들을 지연시키면서 런과 랭쓰를 계산하여 계수의 런 및 랭쓰와 기타 Header를 선택하여 부호 코드 발생부에서 롬(86)에 저장된 코드 북 정보를 읽어내어 최종 코드를 발생한 후 파커(87)에 의해 32 비트 단위로 묶이도록 한 후 압축된 비디오 신호로 버퍼(7)를 통해 출력하는 가변 길이 부호화부(6)와,
    상기 양자화부(5)에서 전달되는 레벨 단위의 정수치를 주파수 좌표의 비디오 신호로 환원시켜 출력하는 역양자화부(8)와,
    상기 역양자화부(8)로부터 전달되는 코사인 함수의 값인 주파수 좌표의 비디오 신호를 원래의 비디오 신호로 환원하는 역이산 코사인 변환부(9)와,
    상기 역이산 코사인 변환부(9)로부터 전달되는 비디오 신호의 매크로 블록에 대해 인트라 또는 인터로의 인코딩을 결정하는 인트라/인터 선택부(10)와,
    상기 NTSC 디코더(1)에서 포맷 변환부(2)를 거쳐 입력되는 비디오 신호와 상기 프레임 메모리(11)에서 전달되는 1프레임 단위의 비디오 신호에 대해 탐색점의 간격이 일정하고 9점으로 구성된 베이스 모듈(Base Module)의 단위 모듈로 움직임 벡터를 추정한 후 이에 대한 보상을 수행하는 MFSS(Modified Four-Step Search) 알고리즘에 의한 보상을 하여 상기의 인트라/인터 선택부(3)로 전달하는 움직임 추정 및 보상부(12)와,
    상기 움직임 추정 및 보상부(12)에 전달되는 비디오 신호에 대해 움직임 보상의 사용 여부를 결정하는 움직임 보상/움직임 안보상 선택부(13)들로 구성됨을 특징으로 하는 저 복잡도의 동영상 인코더 장치.
  2. 상기의 움직임 추정 및 보상부(12)는 원점과 주위 8 개의 탐색점을 포함하여 9 점에 대해 최소 에러점을 찾는 단계와,
    이전 스텝의 최소 에러점을 기준으로 기준점에서 좌측상단 쪽으로 3, 우측 하단으로 2의 범위내의 3 점에 대해 최소 에러점을 구하는 단계와,
    이전 스텝의 최소 에러점을 기준으로 분포의 중심에 있는 4 점 중에 탐색점의 분포가 원 점에서 멀어지는 방향으로 설정되는 36 점에 대해 최소 에러점을 구하는 단계와,
    이전 스텝의 최소 에러점을 기준으로 원점과 주위의 8개의 탐색점을 포함하는 9점에 대해 최소 에러점을 찾아 찾아진 점과 원점과의 거리를 움직임 벡터로 추정하는 단계에 의해 MFSS 알고리즘을 수행함을 특징으로 하는 저 복잡도의 동영상 인코더 장치.
  3. 제 1 항에 있어서, 상기 비디오 인코더를 NTSC 디코더(21)로부터 직접 디지털 영상 신호를 입력받는 인터페이스부(22)에서는 외부에 접속된 DRAM 메모리(23)에 저장하였다가 시스템 클럭의 속도로 동작에 필요한 비디오 포맷 형태인 8x8 및 16x16 블록 단위로 스캐닝하여 출력하도록 하고,
    상기의 DRAM 메모리(23)로부터 입력되는 영상 신호는 ITF부(24)로 입력되어 인트라/인터의 모드를 결정하도록 하고,
    상기 ITF부(24)에는 움직인 추정 및 보상부(25)로부터 움직임이 보상된 영상도 귀환 입력받아 다음에 이산 코사인 변환부(26)와 양자화부(27)를 거치고 가변 길이 부호화부(28)를 거쳐 출력하도록 하고,
    상기의 움직임 추정 및 보상을 위해 역이산 코사인 변환부(29), 역양자화부 (30)(Inverse Quantization)를 거쳐 복원된 영상이 다시 DARM 메모리(23)에 프레임 단위로 저장되도록 하고,
    상기 DRAM 메모리(23)에 저장된 복원 영상은 움직임 추정 및 보상부(25)로 귀환되어 움직임 추정의 과정을 거쳐 움직임 벡터를 찾은 다음 이를 이용하여 움직임 보상된 데이터를 ITF부(24)로 출력하도록 하는 하나의 칩으로 구성한 저 복잡도의 동영상 인코더 장치.
  4. 제 3 항에 있어서, 상기 인터페이스부는 NTSC 디코더(21)로부터 비디오 신호를 전달받는 콘트롤러(31)는 모드 신호와 클럭 신호를 전달받으면서 동기 신호를 출력하여 내부의 안정된 동작이 가능하도록 하고,
    상기 콘트롤러(31)의 제어를 받으면서 NTSC 디코더(21)로부터 비디오 신호를 전달받아 일시 저장하는 CFWB(32)는 블록 및 매크로 블록 포맷으로 변환하여 DRAM 메모리(23)에 블록 단위로 저장하기 위한 제어신호와 번지 값을 출력하도록 하고,
    상기 콘트롤러(31)의 제어를 받는 CFRB(33)는 블록 및 매크로 블록 포맷으로 DRAM 메모리(23)에 저장된 비디오 신호를 읽기 위한 제어신호와 번지 값을 출력하도록 하고,
    상기 콘트롤러(31)의 제어를 받으면서 역이산 코사인 변환부(29)로부터 복원된 프레임 단위의 비디오 신호를 전달받아 일시 저장하는 RFWB(34)는 움직임 보상을 위해 복원된 프레임의 영상을 DRAM 메모리(23)에 저장하기 위한 제어신호 및 번지 값을 발생하고,
    상기 콘트롤러(31)의 제어를 받는 RFRB(35)는 프레임 단위로 DRAM 메모리 (23)에 저장된 비디오 신호를 읽기 위한 제어신호와 번지 값을 출력하도록 하고,
    움직임 추정 및 보상부(25)에서 움직임의 보상이 완료되어 가변 길이 부호화부(28)로부터 압축된 비트열을 저장하였다가 순차적으로 출력하는 CB(36)는 원하는 속도로 읽어 출력하기 위한 제어신호 및 번지 값을 출력하도록 하고,
    상기 콘트롤러(31), CFWB(32), CFRB(33), RFWB(34), RFRB(35) 및 CB(36)로부터 제어신호와 번지 값에 해당하는 정보를 전달받는 인터페이스(37)는 다양한 형태의 모드에 따라 원하는 기능을 수행하도록 제어하면서 DRAM 메모리(23)에 직접 접속할 수 있는 제어신호(Address, Data, RAS, CAS, OEN, WEN)를 출력하도록 하고,
    입력되는 비디오 포맷에 따라 메모리 맵핑이 달라지는 상기 DRAM 메모리(23)에 모든 데이터들을 지원하고 이용 효율성을 높이기 위해 지원 모드 중에서 Fast Page / Hyper Page Mode를 사용한 저 복잡도의 동영상 인코더 장치.
  5. 제 3 항에 있어서, 상기 움직임 추정 및 보상부에서 매크로 블록 단위의 에러를 계산하는 각각의 단위 제어 엘리먼트는 제 1 지연소자(50)를 통하여 전달되는 바로 전의 프레임 데이터와 현재의 데이터에 대해 제 2 지연 소자(51)로부터의 인에이블 신호(PE-E)를 전달받는 오차 검출부(52)∼(55)에서 절대 오차(Absolute Difference)를 구하도록 하고,
    상기 오차 검출부(52,53)(54,55)의 오차값을 가산부(56)(57)와 가산부(58)에서 합한 후 누적기(59)에서 가산치를 누적하여 제어 엘리먼트 출력값(PEOUT)를 출력하도록 하고,
    제 1 내지 제 9 단위 제어 엘리먼트(PE0)∼(PE8)들의 제어 엘리먼트 출력값 (PEOUT0)∼(PEOUT8)을 멀티플렉서(MUX)에서 혼합하여 SAD를 출력하도록 하고,
    움직임 보상부는 Y 신호는 움직임 추정부로부터 마지막 스텝의 마지막 탐색점에 대한 매크로블럭을 입력하여 메모리에 저장후 출력 포맷으로 변환하여 보상하고, U/V는 Y에 대해 추정된 움직임 벡터를 이용하여 탐색영역으로부터 움직임 보상을 수행하도록 한 저 복잡도의 동영상 인코더 장치.
  6. 제 3 항에 있어서, 상기 ITF는 움직임이 보상되어 입력되는 8x8 블록 단위의 Predicted Frame과 DRAM 메모리(23)로부터 입력되는 8x8 블록 단위의 Current frame을 전달받는 인트라/인터 선택부(71)에서 Intra-Frame 모드와 Inter-Frame 모드 중에서 매크로블럭 단위로 모드를 결정하도록 하고,
    상기 인트라/인터의 선택을 위한 1 매크로 블럭의 기간을 제 1 선입선출 버퍼(FIFO1)(72)와 제 2 선입선출 버퍼(FIFO2)(73)를 통해 보상하도록 하고,
    상기의 입력 영상은 인트라-프레임 모드인 경우 MUX_SUB(74)에서 Current Frame 데이터를 출력하면서 인터-프레임 모드인 경우 두 입력의 차를 이산 코사인 변환부(DCT)(26)로 출력하도록 하고,
    역이산 코사인 변환부(30)로부터 입력되는 영상과 Predicted Frame 영상의 지연을 역시 제 3 선입선출 버퍼(FIFO3)(75)과 제 4 선입선출 버퍼(FIFO4)(76)를 통해 보상한 후 MUX_ADD(77)에 입력되도록 하고,
    인트라 프레임 모드인 경우 역이산 코사인 변환부(30)로부터 입력되는 영상을 출력하고 인트라 프레임 모드인 경우에는 두 입력 영상의 합을 통해 보상된 영상은 DRAM 메모리(23)의 Reconstructed Frame Buffer로 출력하도록 한 저 복잡도의 동영상 인코더 장치.
  7. 제 3 항에 있어서, 상기 가변 길이 부호화부는 양자화부(27)로부터 전달되는 이산 코사인 변환 계수(DCT Coefficients)들의 런(Run)과 랭쓰(Length)를 계산하기 위한 8x8 블록의 지연을 위한 제 5 선입선출 버퍼(FIFO5)(81)와,
    상기의 런(Run)과 랭쓰(Length)를 계산하는 런 랭쓰 코더(82)와,
    상기의 계수 이외에 다른 Syntax Data 및 Header 등을 발생하는 헤더 코더 (83)와,
    상기 계수의 런 및 랭쓰와 기타 Header를 선택하는 멀티플렉서(84)와,
    상기의 정보로부터 롬(86)에 저장된 코드 북 정보를 읽어내어 최종 코드를 발생하는 가변 길이 부호 코드 발생부(85)와,
    발생된 가변길이의 코드를 32 비트 단위로 묶어서 출력하는 32-Bit 파커 (Packer)(87)와,
    상기의 런 랭쓰 코더(82)와 헤더 코더(83) 및 멀티플렉서(84)의 동작을 제어하면서 데이터의 처리가 MPEG Syntax 구조에 맞도록 다중화를 조절하는 콘트롤러 (88)들로 구성하여 전체 코드의 길이가 10비트 이상일 경우 앞부분의 0을 제외하고 10비트 이하로 줄여 저장하고, 32 비트 이하의 가변길이 코드를 입력하여 32 비트가 다 채워지면 한번씩 32 비트씩 출력하도록 구성한 저 복잡도의 동영상 인코더 장치.
KR1019990030615A 1999-07-27 1999-07-27 저 복잡도의 동영상 인코더 장치 및 방법 KR100323235B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990030615A KR100323235B1 (ko) 1999-07-27 1999-07-27 저 복잡도의 동영상 인코더 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990030615A KR100323235B1 (ko) 1999-07-27 1999-07-27 저 복잡도의 동영상 인코더 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20010011309A true KR20010011309A (ko) 2001-02-15
KR100323235B1 KR100323235B1 (ko) 2002-02-19

Family

ID=19605005

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990030615A KR100323235B1 (ko) 1999-07-27 1999-07-27 저 복잡도의 동영상 인코더 장치 및 방법

Country Status (1)

Country Link
KR (1) KR100323235B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100390813B1 (ko) * 2001-05-29 2003-07-12 주식회사 하이닉스반도체 하드웨어의 메모리를 절반으로 줄인 디지탈 텔레비젼비디오 디코딩 장치 및 방법
US6867714B2 (en) * 2002-07-18 2005-03-15 Samsung Electronics Co., Ltd. Method and apparatus for estimating a motion using a hierarchical search and an image encoding system adopting the method and apparatus
KR100654436B1 (ko) * 2004-07-07 2006-12-06 삼성전자주식회사 비디오 코딩 방법과 디코딩 방법, 및 비디오 인코더와디코더
KR100713400B1 (ko) * 2004-04-30 2007-05-04 삼성전자주식회사 평균 히스토그램 오차 방식을 이용한 h.263/mpeg비디오 인코더 및 그 제어 방법
CN117939134A (zh) * 2024-03-22 2024-04-26 鹰驾科技(深圳)有限公司 一种无线视频通信方法及***

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100750110B1 (ko) 2003-04-22 2007-08-17 삼성전자주식회사 4×4인트라 휘도 예측 모드 결정방법 및 장치

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100390813B1 (ko) * 2001-05-29 2003-07-12 주식회사 하이닉스반도체 하드웨어의 메모리를 절반으로 줄인 디지탈 텔레비젼비디오 디코딩 장치 및 방법
US6867714B2 (en) * 2002-07-18 2005-03-15 Samsung Electronics Co., Ltd. Method and apparatus for estimating a motion using a hierarchical search and an image encoding system adopting the method and apparatus
KR100713400B1 (ko) * 2004-04-30 2007-05-04 삼성전자주식회사 평균 히스토그램 오차 방식을 이용한 h.263/mpeg비디오 인코더 및 그 제어 방법
KR100654436B1 (ko) * 2004-07-07 2006-12-06 삼성전자주식회사 비디오 코딩 방법과 디코딩 방법, 및 비디오 인코더와디코더
CN117939134A (zh) * 2024-03-22 2024-04-26 鹰驾科技(深圳)有限公司 一种无线视频通信方法及***
CN117939134B (zh) * 2024-03-22 2024-05-31 鹰驾科技(深圳)有限公司 一种无线视频通信方法及***

Also Published As

Publication number Publication date
KR100323235B1 (ko) 2002-02-19

Similar Documents

Publication Publication Date Title
JP3268306B2 (ja) 画像符号化方法
KR100400538B1 (ko) 동화상의 부호화방법 및 복호화방법
US5453799A (en) Unified motion estimation architecture
JP4092734B2 (ja) ディジタル信号変換方法およびディジタル信号変換装置
JP3358620B2 (ja) 画像符号化方法及び画像符号化装置
US5796434A (en) System and method for performing motion estimation in the DCT domain with improved efficiency
JP4223571B2 (ja) 画像符号化方法及び装置
US5731850A (en) Hybrid hierarchial/full-search MPEG encoder motion estimation
US5768537A (en) Scalable MPEG2 compliant video encoder
KR960006762B1 (ko) 화상부호화를 위한 효율적인 2차원 데이타의 주사선택회로
EP0585051B1 (en) Image processing method and apparatus
US5963222A (en) Multi-format reduced memory MPEG decoder with hybrid memory address generation
JPH10145791A (ja) ディジタル・ビデオ・デコーダおよびディジタル・ビデオ信号をデコードする方法
JPH06189281A (ja) 適応的フレーム/フィールドフォーマット圧縮を用いた映像信号符号化装置
US5748240A (en) Optimal array addressing control structure comprising an I-frame only video encoder and a frame difference unit which includes an address counter for addressing memory addresses
KR19990036188A (ko) 부호화된 디지탈 비디오 신호의 복호화 방법 및 장치
US5606372A (en) Video signal decoding apparatus capable of reducing blocking effects
US20080123748A1 (en) Compression circuitry for generating an encoded bitstream from a plurality of video frames
JP3707118B2 (ja) 画像符号化方法及び装置
KR100323235B1 (ko) 저 복잡도의 동영상 인코더 장치 및 방법
JPH09182087A (ja) ディジタルビデオ信号を符号化する方法及び装置
US5614953A (en) Image signal decoding apparatus having an encoding error compensation
JPH0918873A (ja) 画像符号化方法、画像符号化装置及び画像記録媒体
KR0134505B1 (ko) 적응적 움직임 검출기능을 가진 영상 부호화기
JPH07107464A (ja) 画像符号化装置および復号化装置

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
FPAY Annual fee payment

Payment date: 20070122

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee