KR19990067491A - 모션 벡터 양자화 선택 시스템 - Google Patents

모션 벡터 양자화 선택 시스템 Download PDF

Info

Publication number
KR19990067491A
KR19990067491A KR1019980703510A KR19980703510A KR19990067491A KR 19990067491 A KR19990067491 A KR 19990067491A KR 1019980703510 A KR1019980703510 A KR 1019980703510A KR 19980703510 A KR19980703510 A KR 19980703510A KR 19990067491 A KR19990067491 A KR 19990067491A
Authority
KR
South Korea
Prior art keywords
block
motion
current block
vector
current
Prior art date
Application number
KR1019980703510A
Other languages
English (en)
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 웨인 에이치.왓킨스
Publication of KR19990067491A publication Critical patent/KR19990067491A/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/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/19Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/146Data rate or code amount at the encoder output
    • 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/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/141Systems for two-way working between two video terminals, e.g. videophone
    • H04N7/147Communication arrangements, e.g. identifying the communication as a video-communication, intermediate storage of the signals

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

비디오 전화 시스템은 비디오 이미지를 생성하는 카메라(14)를 포함한다. 처리 회로(88, 100)는 비디오 이미지를 원격 지점의 메모리(도 7)로의 전송을 위해 상대적으로 적은 양의 데이터로 비디오 이미지를 나타내기 위해서 비디오 이미지에 대해 벡터 양자화를 수행한다. 비디오 이미지는 블록(54)으로 더 분할되는 프레이메 의해 나타내어 진다. 현재 블록은 소정의 시간에 고려되고 있는 블록이다. 조건부 이전 블록은 현재 블록이 현재 프레임에서 차지하는 이전 프레임에 위치한다. 모션 이전 블록은 현재 블록의 데이터와 유사한 데이터를 포함하는 이전 프레임(42A)의 블록이다. 비디오 이미지를 나타내기 위해 필요되어지는 데이터의 양을 더 감소하기 위해서, 처리 회로(88, 100)는, 필요하다면, 현재 블록에 대해서 무슨 양자화가 필요한지를 결정한다. 상기 처리 회로(88, 100)는 현재 블록에 대해서 벡터 양자화를 수행하거나, 또는 현재 블록 및 모션 이전 블록 사이의 잉여에 대해서 벡터 양자화를 수행하거나, 또는 조건부 이전 블록의 벡터 양자화가 충분하다는 것을 나타내는 비트를 전송한다. 발생하는 결정(96)은 현재 블록, 모션 이전 블록, 및 조건부 이전 블록과 관련된 여러 거리에 의존한다. 본 발명은 특히 비디오 전화 시스템에서 사용되는 이미지에 대해 적용된다.

Description

모션 벡터 양자화 선택 시스템
이미지를 전자적 형태(electronic form)로 나타내기 위해서는 방대한 수의 비트가 사용된다. 이러한 이미지의 예로는 비디오 전화 시스템 및 자기 공명 영상화(magnetic resonance imaging)에 사용되는 이미지를 들 수 있다. 전화선과 같은 데이터 라인을 통한 이러한 전자적 이미지의 전송은 상당한 시간을 요할 것이다. 또한, 이러한 데이터의 저장은 상당한 양의 메모리를 필요로 할 것이다.
이미지를 나타내는데 요구되는 데이터 비트의 수를 감소하기 위해 벡터 양자화(vector quantization; VQ)(인코딩 형태)가 개발되어 왔다. 감소된 데이터 비트의 수를 통해, 비트를 전송하는 시간 및 데이터 비트를 저장하는데 필요한 메모리가 또한 감소된다. VQ는 샘플 블록(벡터로 칭해짐)을 한꺼번에 처리하고, 그 결과, VQ는 스칼라 양자화(scalar quantization)와 비교해서 몇 몇 수행 능력상의 이점을 갖는다. VQ는 패턴 매칭으로 고찰될 수 있는데, 여기서 입력 패턴 또는 벡터는 코드북에 저장된 많은 패턴 중 하나에 의해 근사된다. 이러한 근사로부터 발생하는 양자화 에러는 코드벡터(codevectors)로 칭해지는 저장된 패턴이 입력 벡터를 얼마나 잘 나타내는지에 의존한다. 결과적으로, 코드북 생성은 정보 소스(information source)의 사전 지식(prior knowledge)에 의해 크게 향상될 것이고 VQ의 수행능력에 중요하다.
(화상 요소에 대해) 픽셀로 칭해지는 다수의 작은 영역으로 분할되는 이미지를 고려해보자. 픽셀은 충분히 작아서 이미지의 강도는 픽셀 영역 전체에 걸쳐 거의 일정하다. 예를들면, 집의 블랙 및 화이트 이미지는 600 열의 그리드(grid) 및 열당 600 픽셀로 나누어 질 것이다. 각 픽셀은 이미지에서 작은 점과 유사할 것이다. 동일한 영역에서의 픽셀의 블록 또는 그룹은 부이미지(subimage)로 간주될 수 있는 벡터를 형성할 것이다. 예를들면, 6×6의 정방형 픽셀 블록은 36 요소 벡터를 형성하고, 이것은 밝은 배경(light background)에 대해서 그림자 또는 지붕 라인의 일부의 부분을 나타낼 것이다.
평균값 제거 벡터 양자화(mean-removed vector quantization; MRVQ)는 곱코드(product codes)의 특별한 경우이다. 곱코드는 하나의 큰 코드북이 하나 이상의 작은 코드북에 의해 대체되는 벡터 양자화 방법의 일군(a family of)에 적용된다. 결과적으로, 전체 양자화기(quantizer)에 의해 나타내어지는 벡터 공간은 작은 벡터 공간의 데카르트 곱, 즉 데카르트 곱코드로 주어진다. MRVQ에 있어서, 각 입력 벡터의 샘플 평균이 계산되고 그 다음 각 벡터 성분으로부터 제거된다. 그 결과 발생하는 평균이 제거된, 또는 잉여(residual) 벡터는 그 후 양자화된다. MRVQ의 활용은 잉여 벡터가 원래의 이미지 벡터에 비해서 훨씬 적은 코드벡터로 적절히 나타내어 질 수 있다는 점이다. 각 벡터의 평균도 또한 코드화되고 각 코드벡터 인덱스와 함께 포함된다. 평균은 스칼라 양이기 때문에, 스칼라 양자화된다. 결과적으로, 평균은 스칼라 양자화기의 가능한 모든 양자화 레벨을 포함한다. MRVQ는 직접 VQ에 비해서 VQ 시스템의 총체적인 복잡성에서 상당한 감소를 제공할 수 있다.
본 발명은 모션 중재기 시스템(motion arbiter system)에 관한 것으로, 특히 비디오 이미지 블록에 대한 벡터 양자화가 감소되어야할지 또는 제거되어야 할지를 결정하는 비디오 전화 시스템에서의 모션 중재기 시스템에 관한 것이다.
도 1은 비디오 전화 시스템의 양호한 실시예의 비디오 카메라 및 초기 처리 블록을 나타내는 블록도.
도 2는 비디오 전화 시스템의 양호한 실시예의 처리 블록을 나타내는 블록도.
도 3A는 현재 블록을 포함하는 현재의 프레임을 나타내는 도면.
도 3B는 모션 이전 벡터 및 조건부 이전 블록을 포함하는 이전 프레임을 나타내는 도면.
도 4는 도 2의 처리 블록의 일부를 간단히 표현한 블록도.
도 5는 도 2의 계층적 적응 다중단 VQ 블록*(Hierarchical Adaptive Multistage VQ Block)의 처리 블록의 상세한 블록도.
도 6은 또 다른 계층적 적응 다중단 VQ 블록의 단순화된 블록도.
도 7은 도 2의 처리 블록으로부터 압축 비디오 신호를 수신하는 최종 처리 블록의 블록도.
도 8은 도 1, 도 2 및 도 4 내지 도 7의 블록으로부터 멀리 떨어진 위치에서의 압축해제(decompression) 블록의 블록도.
본 발명은 비디오 이미지 블록에 대한 벡터 양자화의 필요성을 감소시키거나 또는 제거하기 위한 기술을 포함한다. 본 발명의 특정 실시예에서, 비디오 전화 시스템은 비디오 이미지를 생성하는 카메라를 포함한다. 처리 회로는 원거리 지점이나 메모리로 전송하기 위한 상대적으로 적은 양의 데이터로 비디오 이미지를 나타내기 위해서 비디오 이미지에 대해 벡터 양자화를 수행한다. 비디오 이미지는 프레임에 의해 나타내어지는데, 상기 프레임은 블록으로 더 분할된다. 현재 블록(current block)은 소정의 시간에 고려되는 블록이다. 조건부 이전 블록(conditional previous block)은 이전 프레임 내에 위치하고 현재 블록은 현재 프레임 내에 위치한다. 모션 이전 블록(motion previous block)은 현재 블록의 데이터와 유사한 데이터를 포함하는 이전 프레임의 블록이다. 비디오 이미지를 나타내는데 필요한 데이터의 양을 더 감소하기 위해서, 처리 회로는, 필요하다면, 현재 블록에 대해서 어떠한 양자화가 필요한지를 판단한다. 처리 회로는 (1) 현재 블록에 대해서 벡터 양자화를 수행하거나, (2) 현재 블록과 모션 이전 블록 간의 잉여에 대해서 벡터 양자화를 수행하거나, 또는 (3) 조건부 이전 블록이 충분하다는 것을 나타내는 비트를 전달한다. 어느 것을 수행하는냐 하는 판단은 현재 블록에 관련하는 다양한 간격과, 모션 이전 블록, 및 조건부 이전 블록에 의존한다.
본 발명의 여러 다른 양상은 하기에 설명된다.
본 발명은 비디오 전화 시스템, 감시 카메라, CD-ROM, 초음파 시스템 등을 포함하는 여러 이미지 시스템에서 사용될 수 있다. 도 1, 도 2, 및 도 4 내지 도 7은 비디오 전화 신호 시스템(video telephone signal system; 10)의 신호 생성 빛 인코더부의 블록도이다. 도 8은 비디오 전화 신호 시스템(10)의 원격 디코더 시스템의 블록도이다.
물론, 본 발명은 상이한 구조를 갖는 다른 비디오 전화 시스템에서 구현될 수도 있다. 본원에서 상술되는 블록도의 몇 몇 블록*의 기능 또는 상세는 부품의 이용가능성, 경제적 이유, 또는 다른 이유로 인해 변화될 수도 있다. (블록도에서의 "블록*"은 256 픽셀의 16×16 블록과 같은, 데이터 그룹으로서의 "블록"과 혼동되어서는 안된다. 이들 둘은 구별하기 위해서, 블록도의 블록*에는 위첨자 "*"가 첨부된다.) 회로라는 용어는 소프트웨어 또는 펌웨어(firmware)와 함께 동작하는 회로 또는 소프트웨어 또는 펌웨어 없이 동작하는 회로를 포함할 것이다. 예를들면, 문맥에 따라서, 회로는 하나 이상의 마이크로프로세서를 포함할 것이다. 하나 이상의 블록의 기능을 수행하기 위해 하나 이상의 마이크로프로세서가 사용되는 경우에 있어서, 블록도는 순서도를 나타낸다.
몇 몇 경우(예를들면 메모리)를 제외하면, 블록도의 블록*은 (전자 회로를 포함하는) 하드웨어, 소프트웨어, 또는 펌웨어, 또는 이들의 조합으로 구현될 수 있다. 따라서, "블록*"이라는 용어는 이들 중 어느 것에도 제한되지 않는다. 속도 및 가격은 블록*을 어떻게 구현할 것인가를 선택하는 요인이다. 블록*의 특정 구성에 대한 널리 공지된 여러 기술은 기술적인 분야에서 능숙한 자에게는 명백할 것이다.
하드웨어로 구현되는 블록*의 경우에 있어서, 하드웨어가 그 기능을 수행하도록 하고, 그 후 다른 블록*의 출력에 따라서 그 기능을 사용하던지 하지 않던지 하는 것이 이치에 적합할 것이다. 대조적으로, 블록*이 소프트웨어로 구현되는 경우에 있어서, 기능이 필요되지 않으면 기능이 수행되지 않도록 하는 것이 이치에 적합할 것이다.
본원에서 "양호한 실시예"라는 용어의 사용은 다른 실시예가 적합하지 않다는 것을 의미하는 것은 아니다. 실제로, 본원 발명의 상세한 설명을 통해 기술적인 분야에서 능숙한 자에게는 명백하게 될 본 발명은 여러 방법을 통해 구현될 수 있을 것이다.
A. 카메라 및 초기 처리
도 1에 도시된 바와 같은 양호한 실시예에 있어서, 칼라 텔레비젼용 카메라(14)는 아날로그 필터 블록*(16), NTSC/YIQ 변환기 블록*(National Television System Committe to YIQ Converter Block; 22), 디지털 필터 블록*(24), 수평 추출 블록*(Horizontal Decimation Block; 28) 및 수직 추출 블록*(30)에 의해 처리되는 비디오 이미지를 생성한다.
카메라(14)는 가격 및 이용가능성을 염두에 둔 임의의 카메라가 될 수 있다. 양호한 실시예에 있어서, 카메라(14)는 수평으로 512 픽셀 및 수직으로 적어도 480 라인의 해상도를 갖는다. 디자인 관점에서 순차 스캔(progressive scan) 카메라가 다루기에 가장 쉽지만, 비월(interlaced) 비디오를 제공하는 카메라가 선호된다. 도 1에 도시된 바와 같이, 예를들면, 카메라(14)는 수평으로 720 픽셀 및 수직으로 480 라인을 갖는 프레임을 초당 30 프레임 생성한다.
양호한 실시예에 있어서, 아날로그 필터(16)는 (비디오가 수평 라인의 활성 부의 512 샘플에서 디지털화될 때와 같은) 앨리어싱(aliasing)을 제거한다.
NTSC/YIQ 변환기 블록*(22)은 레드, 그린, 및 블루 성분을 압축을 위한 교대적인 칼라 공간으로 변환한다. 변환은 YIQ 칼라 공간이거나, YUV 칼라 공간, 또는 다른 칼라 공간일 수 있다. NTSC/YIQ 변환기 블록*(22)은 NTSC/YUV 변환기 블록*(22)이 될 수도 있다. YIQ 또는 YUV가 선택되는 것은 본 발명에서는 중요하지 않다. YIQ 및 YUV 칼라 공간으로의 변환을 위한 식은 널리 공지되어 있다.
디지털 필터 블록*(24)은 이미지가 추출(decimate)될 때 앨리어싱을 방지하기 위해 이미지를 더 여과한다(filter). 비디오 전화 시스템(10)이 고해상도 모드(512×448)에서 작동하면, 디지털 필터 블록*(24)은 Y 성분에 대해 여과(filtering)가 발생하지 않도록 프로그램될 것이다. U 및 V 성분은 앨리어싱 없이 라인의 활성 부분마다 128 샘플에서 수평으로 서브샘플(subsample)되도록 여과할 것이다. 전화기가 저해상도 모드(128×112)에서 동작하고 있으면, 디지털 필터 블록*(24)은 라인의 활성부 마다 128 샘플로 앨리어싱을 방지하기 위해 수평으로 Y 이미지를 여과할 것이다. U 및 V 성분은 활성 수평 라인 마다 32 샘플에서 서브샘플링이 있을 때 앨리어싱을 방지하기 위해 여과될 것이다. 2차원 컨볼루션(convolution)을 수행할 필터는 수직 추출 블록*(30)에 대해서 수직으로 여과(filtering)를 허용할 것이다.
수평 추출 블록*(28)은 양호한 실시예에서 다음과 같이 동작할 것이다. 비디오 전화 시스템(10)이 고해상도 모드에서 동작하는 경우, 이미지의 Y 성분에 대해서 어떠한 동작도 수행되지 않는다. U 및 V 성분에 대해서, 매 4 픽셀중 3 픽셀은 수평으로 떨어지고(dropped)(매 4번째 픽셀을 유지), 128 픽셀을 각 활성 라인에 남겨둔다. Y 이미지의 저해상도 모드에 대해서, 매 4 픽셀 중 3 픽셀은 떨어지고(매 4번째 픽셀은 유지), 128 픽셀을 수평으로 남겨둔다. U 및 V 이미지에 대해서, 매 16 픽셀 중 15 픽셀은 떨어지고(매 16번째 픽셀은 유지), 32 픽셀을 수평으로 남겨둔다. 이미지가 디지털 필터 블록*(24)에서 적절하게 여과되었기 때문에 단순히 픽셀을 떨어뜨리는 것은 허용된다.
수직 추출 블록*(30)은 다음과 같이 동작할 것이다. 고해상도 모드에서, Y 이미지는 영향을 받지 않는다. U 및 V에 대해서, 수직 추출 블록*(30)은 한 라인(한 필드)씩 걸러서 버림으로써 2의 인자만큼 추출하고(decimate), 그 다음 두 라인을 서로 평균하여 한 라인을 얻음으로써 다시 2의 인자만큼 추출한다. 저해상도 모드에서, 모든 이미지(Y, U, V)에 대해서, 한 라인 걸러 한 라인은 버려진다. Y 이미지에 대해서, 수직 추출 블록*(30)은 한 라인을 얻기 위해 두 라인을 함께 평균함으로써 2만큼 추출한다(decimates). 이것은 120라인을 수직으로 남겨둔다. 또한, 8개의 부가적인 라인이 버려져서(상부 및/또는 바닥) 112라인으로 줄어든다. U 및 V 이미지에 대해서, 수직 추출 블록*(30)은 한 라인을 얻기 위해 8 라인을 평균함으로써 더 추출한다(decimates). 이것은 수직으로 30라인을 남겨둔다. 두 개의 더미 라인이 바닥에서 부가되어 수직으로 32라인을 얻게된다.
한 실시예에서, 수평 및 수직 추출(decimation) 후에 이미지 크기는 다음과 같다:
고해상도 모드 Y 512×448
U 128×128
V 128×128
저해상도 모드 Y 128×112
U 32×32
V 32×32
NTSC/YIQ 변환기 블록*(22)으로부터의 신호(Y) 및 수직 추출 블록*(30)으로부터의 신호는 고정된 프레임 기억장치(fixed frame store; 40) 및 프레임 평균(34)에 의해 수신된다.
프레임 평균 블록*(34)은 초당 30 프레임 비디오에서 초당 10 프레임 비디오로 변환한다. 양호한 실시예에 있어서, 프레임 평균 블록*(34)은 저해상도 모드에서만 활성이다. 고해상도 모드에서, 프레임 캡쳐가 있다. P1(i,j)를 프레임 1의 위치(i,j)에서의 픽셀이라고 가정하자. P2(i,j) 및 P3(i,j)는 각각 프레임 2 및 프레임 3에서의 픽셀이다. 새로운 픽셀에서의 Pnew(i,j)는 다음과 같이 될 것이다:
Pnew(i,j) = [P1(i,j) + P2(i,j) = P3(i,j)]/3
이러한 평균은 Y, U, 및 V에 대한 전체 프레임에 걸쳐 픽셀마다 일어난다. U 및 V 이미지에 대해서, Pnew(i,j) = P2(i,j)이고, 이것이 하드웨어를 더 간단하게 하면 수용가능하다.
이러한 처리에 대한 다른 대안은, 만약 카메라의 스캔율에 대한 제어가 있다면, 초당 10프레임에서 카메라(14)를 스캔하는 것이다. 이것은 초당 30프레임 대신 초당 10프레임에서 진행하면 되기 때문에 이전에 논의된 모든 여과(filtering) 및 추출(decimation)을 더 쉽게 할 것이다.
현재의 비디오 프레임은 현재 프레임 기억 장치 블록*(38A), 및 다음 프레임이 채워지는 동안의 처리를 위해 고정 프레임 기억장치 블록*(40)에 저장된다.
도 2를 참조하면, 이전 프레임 기억장치 버퍼(또는 메모리)(42A 및 42B)는 압축해제된 이전 프레임을 저장하는데, 이것은 모션 보상 모드(모션 예측(motion prediction)으로도 칭해진다) 및 조건적인 갱신 모드에서 사용된다. 본 발명의 일 실시예에서, 이전 프레임 동작은 시스템이 저해상도 모드에 있을 때만 수행된다. 고해상도 모드에서, 비디오 전화 시스템(10)은 평균 제거 인트라프레임 VQ(mean removed intraframe VQ)을 수행한다. Y, U, 및 V 이미지에 대한 이전 프레임 정보는 이전 프레임 기억장치 버퍼(42A)에 저장된다. 이전 프레임 기억장치 버퍼(42B)는 다음 프레임에 대해서 이전 프레임 정보가 될 현재 프레임의 디코드된 이미지를 저장하기 위해 사용된다. 이전 프레임 기억장치 버퍼(42A 및 42B)는 각각의 연속적인 프레임에서 왔다갔다 한다(ping-pong).
양호한 실시예에 있어서, 모션 포맷터(46)는 모션 예측 회로의 요구에 따라 특정한 방식으로 이미지 데이터를 16×16 블록으로 포맷한다. 물론, 블록이 16×16 블록, 또는 256 픽셀이 될 필요는 없다. 예를들면, 32×8의 형태도 가능하다.
모션 검출 블록*(48)(또는 모션 보상기(motion compensator))은 H 모션 벡터 및 V 모션 벡터를 모션 잉여 계산기 블록*(Motion Residual calculator Block; 68) 및 비트스트림 포맷터 블록*(Bitstream Formatter Block; 58)으로 제공한다.
모션 검출 블록*(48)은 어느 픽셀 세트가 모션 이전 블록(66)을 가장 잘 형성하는지를 결정하는데, 이것은 현재 블록(60)의 프레임에 가장 잘 대응하는 이전 프레임으로부터의 블록이다. (물론, 동등할 수도 있는데, 이때는 동등한 블록의 어떠한 것도 다른 블록만큼 양호하다.) 이러한 것을 달성하기 위한 한 기술은 다음과 같다. 현재 프레임으로부터의 현재 블록은 에러 잉여 블록을 생성하기 위해서 이전 프레임의 나란히 배열된(collocated) 블록으로부터 한 픽셀씩 추출된다. 에러 잉여 블록에서의 픽셀의 절대값은 함께 합산되어 L1H=0, V=0거리 크기(distance measurement)를 생성한다. 이것은 다른 L1 거리 크기를 생성하기 위해서 수직 또는 수평 방향에서 픽셀만큼 이전 프레임 블록을 오프셋함으로써 반복된다. 이것은 검색 영역(예를들면, 32×32 픽셀)에 걸쳐 계속된다. (검색 영역은 통상적으로 전체적인 이전 프레임보다 작다.) 그 다음 가장 작은 L1 거리를 갖는 이전 이미지로부터의 블록이 가장 잘 일치하는 것으로 선택된다. 이 블록으로부터의 오프셋(H 및 V)은 모션 벡터이다. 다른 기술은 기술적인 분야에서 능숙한 자에게 명백할 것이다.
수행된 모션 보상의 종류는 어떠한 칩이 사용성 및 경제적으로 이용가능한지에 크게 의존할 것이다. 한 양호한 실시예에 있어서, 최소 요구조건은 다음과 같다:
1. Y, U, 및 V 이미지에 대해 16×16 블록 크기.
2. Y에 대해서 -16에서 +15의 검색 영역과 U 및 V에 대해서 -4에서 +3의 검색 영역.
3. 전체 검색 영역에 대한 가장 잘 일치하는 L1 거리 검색. 1/2 픽셀 검색 해상도.
4. 가장 잘 일치하는 모션 벡터의 출력.
블록*포맷터 블록*(54)은 이미지로부터 16×16 블록을 판독하고 그것을 다른 처리를 위해 적절한 선형 픽셀 스트림으로 포맷한다. 여러 순서가 사용될 수 있지만, 이미지의 16×16 블록을 선형 픽셀 스트림으로 변환하는 픽셀 정렬화의 실시예가 하기에 나타난다.
B. 비-모션 VQ의 개요, 모션 보상, 및 조건부 갱신 모드
시스템(10)은 하기의 4 개의 모드를 포함하는 여러 모드에서 동작한다: (1) 비모션 VQ 모드(nonmotion VQ mode), (2) 모션 보상 모드, (3) 조건부 갱신 모드, 및(4) 강제(forded) 비-모션 VQ 모드. 단순화된 레벨에서, 4 개의 모드는 도 3A 및 도 3B를 참조로 다음과 같이 이해될 수 있을 것이다.
도 3A는 16×16의 현재 블록(60)을 포함하는 현재의 프레임(58)을 도시한다. 16×16의 현재 블록(60)의 크기는 도해적인 목적을 위해 현재 프레임(58)에 대해 과자오디었다. 블록의 위치는 단일 지정 픽셀(designation pixel)에 의해 식별되고, 이것은 블록의 좌측 상부 코너에 존재할 것이다. 예를들면, 현재 블록(60)의 위치는 지정 픽셀(X,Y)에 의해 식별된다.
도 3B는 16×16 조건부 이전 블록 및 16×16 모션 이전 블록(66)을 포함하는 이전 프레임(62)을 도시한다. 블록(64 및 66)의 크기는 이전 프레임(62)에 대해서 과장되었다. 조건부 이전 블록(64)의 지정 픽셀은 (X,Y)이고, 따라서 이전 프레임(62)에서의 위치와 현재 프레임(58)에서 현재 블록(60)이 차지하는 위치가 같다.
모션 이전 블록(66)의 지정 픽셀은 (X+H, Y+V)이고, 여기서 H는 모션 이전 블록(66) 및 현재 블록(60)의 지정 픽셀 사이의 수평 변위이고 Y는 수직 변위이다. H 및 V는 각각 양수 음수가 될 수 있다. 모션 이전 블록(66)이 되도록 결정되는 블록의 위치는 널리 공지된 기술을 통해 행해진다.
이미지에서 모션이 존재하지 않아(또는 수용가능한 모션 이전 블록이 식별될 수 없어서), 그 결과 모션 벡터가 H=0, V=0의 값을 갖게되는 경우, 모션 이전 블록(66)은 조건부 이전 블록(64)과 동일하게 된다. 시스템(10)은 모션 이전 블록(66)의 위치를 정하기 전에 조건부 이전 블록(64)이 현재 블록(60)과 본질적으로 동일한지를 우선 평가할 것이다. 만약 조건부 이전 블록(64)이 현재 블록(60)과 본질적으로 동일하면, 모션 이전 블록(66)을 식별할 필요가 없게된다.
비모션 VQ 모드에서, 시스템(10)의 인코더부는 현재 블록(60) 및 모션 이전 블록(66) 사이의 잉여(residual)에 대해서 VQ를 수행하고, 압축된 잉여 및 모션 벡터(H,V)를 원격 디코더에 전송한다. 원격 디코더는 잉여를 압축해제하고 그것을 원격 디코더에서 이전 프레임의 모션 이전 블록에 더한다. 이전 프레임의 모션 이전 블록은 X+H 및 Y+V에 의해 식별된다. (이전 프레임은 시스템(10)의 인코더부 및 원격 디코더 둘 다에 저장된다.) 원격 디코더의 현재 프레임의 현재 블록은 압축해제된 잉여 및 모션 이전 블록의 합이 된다.
조건부 갱신 모드에서, 시스템(10)의 인코더부는 원격 디코더가 원격 디코더의 현재 프레임의 현재 블록이 조건부 이전 블록의 데이터를 구비해야 하는 것으로 해석하는 비트를 원격 디코더로 전송한다. 조건부 이전 블록은 지정 픽셀(X,Y)을 구비하는 원격 디코더의 이전 프레임의 블록이다.
강제 비-모션 VQ 모드에서, 시스템(10)은 비-모션 VQ 모드에서와 동일하게 동작한다.
일반적으로, 모션 보상 모드 또는 조건부 갱신 모드는 데이터 처리에 있어서 상당한 절약을 제공하지만, 질적으로 약간 저하된다. 주위 상황에 의존해서, 저하된 질은 인식되지 않을 수도 있다. 시스템(10)은 모션 보상 모드 또는 조건부 갱신 모드가 수용가능한지를 결정한다.
C. 비모션 VQ, 모션 보상, 및 조건부 갱신 모드의 선택에 관한 상세
잉여 계산 블록*(68)은 블록*포맷터 블록*(54)으로부터 현재 블록(60)을 판독하고 모션 검출기 블록*(48)으로부터 모션 벡터(H,V)를 판독한다. 잉여 계산 블록*(68)은 이전 프레임 기억장치 블록*(42A 또는 42B)으로부터, 블록 포맷터 명세(specification)에서 상기 상술된 바와 같은 동일한 픽셀 순서로 모션 벡터(H,V)에 의해 특정된 X+H, Y+V 좌표에서 시작하는, 모션 이전 블록(66)을 또한 판독한다. 잉여 계산 블록(68)은 현재 블록(60)의 픽셀(Curpixi) 및 모션 이전 블록(66)의 픽셀(Motprevpixi) 사이의 차이(Ei(mot))를 결정하는데, 수학식 1과 같이 된다:
Ei(mot)= Curpixi- Motprevpixi(i= 0∼255)
"mot"는 모션을 의미한다. Ei(mot)는 현재 블록(60) 및 이전 블록(66) 사이의 잉여의 예이다.
모션 보상된 에러 잉여(Ei(mot)에 대한 L1 거리(L1mot)는 하기의 수학식 2에 따라 계산된다:
L1mot는 얼마나 많은 정보가 잉여(Ei(mot)) 내에 있는지를 제공한다.
무모션(no motion) 잉여 계산 블록*(70)은 현재 블록(60)의 픽셀(Curpixi) 및 조건부 이전 블록(64)의 픽셀(CondPrevpixi) 사이의 잉여(Ei(CU))를 하기의 수학식 3에 따라 계산한다:
Ei(CU)= Curpixi- CondPrevpixi(i는 0에서 255)
"CU"는 조건부 갱신을 나타낸다. (255+1=256은 16×16 블록에서의 픽셀의 수임을 주지하라.) 조건부 이전 블록에 대한 모션 벡터는 (H=0, V=0)이다. 조건부 이전 블록의 모션 벡터가 (H=0, V=0)이기 때문에, 무모션 잉여 계산 블록*(70)에서는 어떠한 모션 벡터도 고려될 필요가 없다. Ei(CU)는 현재 블록(60) 및 조건부 이전 블록(64) 사이의 잉여의 일 예이다.
평균 계산 블록*(72)은 하기의 수학식 4와 같이 블록의 모든 256 픽셀을 가산하고 256으로 나눔으로써 현재 블록(60)의 평균(MEAN)을 계산한다:
여기서 Curpixi는 현재 블록(60)의 i번째 픽셀의 값이다. 나눗셈은 전체 합으로부터 8 LSBs를 떨어뜨림으로서 이루어진다.
평균 제거 거리 계산 블록*(Mean Removed Distance Calculation Block; 74)은 하기의 수학식 5에 따라 평균 제거 벡터(L1nomot)의 전체 L1 거리를 결정한다:
여기서 "nomot"는 "모션이 없음(no motion)"을 의미하고, MEAN은 수학식 4에 따라 계산되며, curpixi는 평균이 계산되는 현재 블록(60)의 픽셀이다. L1nomot는 얼마나 많은 정보가 평균 제거 후의 잉여에 포함되어 있는지를 나타낸다.
L1 및 L-inf 거리 계산 블록*(80)은 하기의 수학식 6에 따라 L1CU(L1 거리 가정 모션(L1 distance assuming motion))을 계산한다:
여기서 Ei(CU)는 수학식 3에 따라 계산된다. L1CU는 Ei(CU)내의 정보의 양을 나타낸다.
L1 및 L-inf 거리 계산 블록*(80)은 수학식 7에 따라 L-inf(L-무한 거리(L-infinity distance))를 계산한다:
L-inf=MAX|Ei(CU)| (i=0에서 255)
조건부 갱신 거리 계산 블록*(84)은 하기의 수학식 8에 따라서 CUdist(전체 거리 또는 조건부 갱신 조건의 점검에 대한 에러)를 계산한다:
CUdist = (C1 * L1CU) + (C2 * (L-inf * C3))
여기서 L1CU는 수학식 6에 따라 계산되고, L-inf는 수학식 7에 따라 계산되며, C1, C2, 및 C3은 프로그램 가능한 실수이다. "*"는 승산을 나타낸다. C1 및 C2의 값은 특정 상황에 따라 선택되고 유연성 및 미세 조정 능력을 허용한다. 현재 블록(60)이 16×16의 크기를 갖는 경우, C3는 되도록 256인데, L1이 256 개 성분을 갖기 때문이다.
많은 경우에 있어서, 조건부 갱신 잉여의 평균 에러는 상대적으로 낮다. 그러나, 적어도 하나의 픽셀에 대해 큰 에러가 존재할 수도 있다. 그러한 경우에 있어서, 현재 블록(60)보다는 오히려 조건부 이전 블록(64)이 선택되는 경우, 재구성된 이미지는 다른 픽셀과는 눈에 띄게 일치하지 않는 픽셀을 포함할 것이고, 산란 또는 바람직하지 않은 효과를 유발할 것이다.
이러한 이유로 인해, CUdist는 "+" 부호에 의해 분리되는 두 성분을 갖는다. 첫 번째 성분인 C1*L1CU는 Ei(CU)내의 정보의 양을 나타내는데, 아마도 C1만큼의 비례 인수에 종속할 것이다. 두 번째 성분인 (C2*(L-inf*C3))는 단일 픽셀에서 가장 큰 에러를 나타낸다. 만약 두 성분이 너무 크면, CUdist는 크게되어, 조건부 이전 블록(64)이 현재 블록(60)에 대해 선택되지 않도록 할 것이다.
모션 중재기 블록*(88)은 시스템(10)이 (1) 비모션 VQ 모드, (2) 모션 보상 모드, (3) 조건부 갱신 모드, 및 (4) 강제 비-모션 VQ 모드 중 어느 모드에 있는지를 결정한다. 이러한 결정을 위해서, 수학식 2의 L1mot는 수학식 5의 L1nomot와 비교된다. 본질적으로, 상기 비교는 현재 블록(60)에 대해 평균 제거 VQ를 수행하던지 또는 잉여(Ei(mot))에 대해 VQ를 수행함으로써 (전화선과 같은) 전송 링크를 통해 더 적은 정보가 전송되는 지를 결정한다.
단순화된 표현에서, 선택은 다음과 같이 이루어진다:
If(L1mot≤(L1nomot*CONST)
do motion compensation(e.g., perform mean removed VQ on Ei(mot)of
equation (1))
else
perform mean removed VQ on current block 60,
여기서 CONST는 일부 기록가능한 임의의 값이다. CONST는 회로 또는 소프트웨어를 단순하게 하기 위해 1.0으로 선택될 수 있고 그로인해 비용을 증가 및/또는 감소시킨다. 모션 보상은 현재 블록(60)에 무엇이 포함되어 있는지를 예측하기 위해 모션 이전 블록(66)을 사용하기 때문에 예측된 모션으로 칭해질 수도 있다.
상기 상술된 모션-비모션 결정은 모션 카운터 블록*(90)내의 갱신 카운터에 의해 번복(override)될 수 있다. 카운터는 Y, I, 및 Q 또는 Y, U, 및 V 이미지의 각 블록에 대해서 유지될 수 있다. L1nomot조건이 선택될 때마다(즉, 평균 제거 VQ가 현재 블록(60)에 대해서 수행될 때마다), 갱신 카운터는 0으로 설정된다. 그러나, 만약 블록이 모션 보상 또는 조건부 갱신으로 전송되면, 갱신 카운터는 1씩 증가한다. 소정의 블록 모션을 전송할 지 또는 비모션을 전송할 지를 결정하기 전에, 카운터는 프레임의 최대 수를 포함하는 레지스터와 비교되고 벡터가 비모션으로 강제적으로 전송되기 전에 모션 또는 조건부 갱신으로 전송된다.
이미지의 많은 블록이 거의 동시에 비-모션 VQ로 강제로 전송되는 가능성을 방지하는 것이 바람직한데 그 이유는 이것이 큰 그룹에서 많은 수의 비트가 전송되도록 하기 때문이다. 따라서, 다른 카운터는 마지막 블록이 강제로 비-모션으로 전송된 후 얼마나 많은 블록이 전달되었는지를 카운트한다. 모션 보상이 존재하는지에 대한 마지막 결정은 다음과 같이 결정된다. PREDFLAG는 변수이고, 그 값은 L1nomot≤ (L1nomot*C4 인지에 기초하는데, 여기서 C4는 프로그램 가능한 상수, 즉, 모션 보상 또는 비-모션 VQ 중 어느 것이 번복 사건(overriding event) 없이 발생할 것인지를 나타낸다.
UPDATEFLAG[i][j]는 현재 프레임(58)의 블록ij에 대한 갱신 플래그 신호이다. UPDATECOUNTER는 최종 강제 갱신 이후 블록의 수를 계수하는 변수이다. UPDATEFRAME은 강제 갱신 이전에 진행되는 최대 프레임을 나타내는 프로그램가능한 상수이다. UPDATEFRAME값의 예는 40이다. UPDATECOUNT는 강제 갱신 사이의 블록의 수를 나타내는 프로그램가능한 상수이다. CUdist는 조건부 갱신 거리 계산 블록*(Conditional Update Distance Calculation Block; 84)에서 수학식 7에 따라 계산된 조건부 갱신 거리이다. 하기의 순서도는 판단 과정을 기술한다.
If(Lmot≤(L1nomot*CONST))
PREDFLAG=1; (motion)
else
PREDFLAG=2; (non-motion)
If((PREDFLAG==1)&&(UPDATEFLAG[i][j]>UPDATEFRAME))
{
If(UPDATECOUNTER≥UPDATECOUNT)
{
FREDFLAG=2;
UPDATECOUNTER=0;
}
else
{
UPDATECOUNT=UPDATECOUNT+1;
}
}
If(PREDFLAG==2)
{
UPDATEFLAG[i][j]=0;
Do non-motion compensated VQ(i.e. perform mean removed VQ on current block60)
}
else
{
UPDATEFLAG[i][j]=UPDATEFLAG[i][j]+1;
}
If(PREDFLAG==1)
{
If((CUdist<THRESHOLD)
Do conditional update(e.g., sending two bits indicating that previously quantized block is adequate)
Else
DO motion compensation(e.g., Peform VQ on Ei(mot)form equation (1))
}
여기서, PREDFLAG, UPDATECOUNT, UPDATEFLAG, UPDATEFRAME, CUdist, L1mot및 L1nomot는 상술되었고, C4 및 THRESHOLD는 특수한 필요성에 따라 선택되는 프로그램가능한 상수이다.
양호한 실시예에서, 시스템(10)이 고해상도 모드일 때, 평균 제거 VQ가 모든 현재 블록 상에서 수행되기 때문에 PREDFLAG는 항상 2가 된다(즉, 시스템(10)은 비-모션 모드에서 작동한다).
다른 단순화된 알고리즘은 하기와 같이 표현된다.
If(MOTIONCOUNTER=1)
then do non-motion VQ
Else if(CUdist<THRESHOLD)
then do conditional update
Else if(L1mot≤L1nomot*C4)
then do motion compensated VQ
Else
do non-motion VQ,
여기서, MOTIONCOUNTER는 소정수의 프레임이 경과한 이후 모션 카운터(90)의 값이고, 현재 블록(60)은 벡터 양자화되며(비-모션 VQ라 지칭됨), CUdist, THRESHOLD, L1mot, L1nomot및 C4는 상술되어있다.
MUX 블록*(94)은 모션 중재기 블록*(88)의 결과에 기초하여 Ei(mot)(모션 보상 잉여) 또는 현재 블록(60)을 벡터로서 VQ 압축기로 보낸다.
선택 코드 발생기 블록*(Selection Code Generator Block; 96)은 모션 중재기 블록(88)에 의해 선택된 모드에 적절한 선택 코드를 발생한다. 압축된 이미지 데이터의 16×16 블록 각각은 1 또는 2비트 헤더를 필요로 한다. 이 헤더는 하기와 같다.
모션 보상 VQ 헤더=0
비-모션 VQ 헤더=10
조건부 갱신 헤더=11
상기 헤더는 디코더로의 비트 스트림에 주입되고, 디코더에 기대되는 것을 지시한다. 만약, 조건부 갱신이 선택되었다면, 단지 헤더만이 블록으로 송신된다. 만약, 비-모션 VQ가 선택되었다면, 헤더와 상기 블록에 속하는 모든 VQ 정보가 전송된다. 만약, 모션 보상 VQ가 선택되었다면, 헤더와 모션 벡터와 그 블록에 속하는 모든 정보가 전송된다.
도 4는 도 2의 더욱 단순화된 변형이다.
하기의 순서도는 특정한 조건이 충족되었을 경우에, 선택된 실시예의 시스템(10)의 응답을 요약한다.
모드 응답
모션 보상 모드 수학식 1로부터의 Ei(mot)에 대해 평균 제거 VQ를 수행하 고, 그 결과를 원격 디코더(250)의 디코드된 모션 이전 블록에 더한다.
비-모션 VQ 모드 현재 블록(60)에 대해 평균 제거 VQ를 수행한다.
조건부 갱신 모드 이전에 양자화된 블록이 적절한지를 나타내는 비트(예 를들면, 2비트)를 디코더로 송신한다.
강제 비-모션 VQ모드 비-모션 VQ 모드가 선택된 것과 동일하게 응답한다.
D. 계층적 적응 다중단 VQ
계층적 적응 다중단 VQ 블록*(Hierarchical Adaptive Multi-Stave VQ Block; 100)은 하기와 같이 작동될 수 있다. 블록*(100)은 인코딩 기능을 수행한다. 계층적 적응 다중단 VQ 블록*(100)이 도 5에 도시된다. 도 6은 도 5의 블록의 단순화된 변형이다. 요약하면, 계층적 적응 다중단 VQ 블록*(100)은 L1 거리가 THRESHOLD 보다 작아질 때 까지 더 작은 부분으로 블록을 분할한다(물론, 작거나 같은 관계가 선택될 수 있다). 블록*(100)내의 THRESHOLD는 블록*(88)내의 THRESHOLD와 동일한 것이 바람직하다. 비록, 다른 거리 치수가 사용되더라도 L1 거리는 수학식 2에서와 유사하게 계산된다. 하기에 기술된 부동(still) 프레임 모드를 제외하고는, THRESHOLD는 버퍼내의 데이터의 양에 기초하여 적응가능하게 제어된다. 상기 적응성 제어가 일정한 비트 속도를 유지한다.
세부적으로 기술하기 이전에, 계층적 적응 다중단 VQ 블록*(100)의 알고리즘을 일반적으로 설명한다. VQ 모드용으로 사용되는 두 개의 코드북이 있고, 하나는 평균 제거 모션 보상된 잉여이다. 두 개의 코드북은 동일한 크기와 형상이다. 이미지의 16×16블록 각각은 다른 VQ 백터 크기를 사용하여 기록될 수 있다. 그 크기는 하기와 같이 될 수 있다.
16×16
16×8
8×8
8×4
4×4
4×2
소정의 크기, 예로서, 16X8은 포함될 수 없다. 다른 크기는 사용될 수 있다.
제한이 아닌 단지 예로서, 각각의 벡터 크기마다, 다중단 VQ 검색(search)이 6단 동안 단마다 4비트로 수행된다. 전체 코드북의 크기는 하기와 같다.
16×16=(16×16pix/vec)*(16entries/stage)*(6stages)=24576words(각각의 word는 9비트)16×8=(16×8pix/vec)*(16entries/stage)*(6stages)=12288words 등등……
각각의 작은 벡터 크기는 하나전의 크기의 1/2이다.
전체 코드북 크기=48384 워드
두 개의 완전한 코드북 세트가 있으므로 전체 코드북 크기는 96768 워드이다.
16×16 벡터 크기로 시작하여, 그 스테이지에서의 L1 거리는 THRESHOLD*CON ST1과 비교된다(여기서, CONST1은 모션 블록과 비-모션 블록 사이의 차이가 될 수 있는 소정의 기록가능한 상수; 일반적으로 THRESHOLD는 비-모션 블록용으로는 더 낮아질 수 있다). 만약, L1 거리가 THRESHOLD보다 작다면, 조사는 그 스테이지에서 만족된다. 만약, 아니라면, 현 스테이지로부터 오류 잉여가 이후 스테이지에서 코드북과 비교된다, 등등. 만약, THRESHOLD에 대한 솔루션을 찾지 못하고 최종 스테이지에 도달된다면, 상기 16×16벡터는 더작은 벡터로 분할되고, 이 블록 크기를 위해 동일한 처리가 반복된다(단지 이제 L1 거리가 THRESHOLD*CONST1*CONST2와 비교되고, 여기서, CONST2는 소정의 프로그램가능한 상수이며, 일반적으로 0.5 내지 0.6이다). 이것이 임계 솔루션이 소정 블록 크기 및 스테이지에서 발견될 때까지 또는 벡터의 최종 블록(예로서, 4×2)에 도달할 때까지 연속된다.
각각의 벡터 크기마다, 가능한 보상 포인트는 하기와 같다.
1. 보상만의 경우 (Ei(mot)용 L1 거리가 THRESHOLD보다 작을 때 발 생; 모션 보상 모드가 선택되었을 때만 발생할 수 있음)
2. 평균만의 경우 (평균 제거 이후 오류 잉여가 THRESHOLD 보다 작을 때 발생; 모션 보상 모드 또는 비-모션 VQ 모드가 선택되었을 때 발생할 수 있음)
3. VQ 단 1
4. VQ 단 2
5. VQ 단 3
6. VQ 단 4
7. VQ 단 5
8. VQ 단 6
계층적 적응 다중단 VQ 블록*(100)은 두 방향에서 적응적이다. 첫 번째로 THRESHOLD는 지점 1., 2., 3.,…, 8.의 방향에서 적응적이다. 두 번째로 THRESHOLD는 점점 더 작은 벡터로 블록이 분할될 때 적응적이다.
계층 적응성 다중단 VQ 블록*(100)이 도 5를 참조로 기술된다.
계층적 벡터 순서결정 블록*(104)은 256 픽셀 잉여 벡터를 래치한다. 벡터 순서 결정 블록*(104)은 알고리즘에 따라 더 작은 벡터로 세분된다. 벡터 순서 결정 블록*(104)은 256 픽셀 벡터를 반으로 분할함으로써 두 개의 128 픽셀 벡터를 발생한다. 그 후, 벡터 순서 결정 블록*(104)은 이들 각각을 두 개의 64 픽셀 벡터로 세분하고, 이런식으로 서른 두 개의 8 픽셀 벡터로 분할될 때까지 세분한다. 상기 기능이 하드웨어에서 실행될 경우에, 하드웨어는 블록이 분할될 필요가 있든 아니든 블록을 분할하고, 각각의 블록의 분할된 부분에 대해 VQ를 수행한다. 소프트웨어의 경우에는 바람직하게 단지 필요한 경우에만 블록을 분할한다.
모션 보상만의 거리 계산 블록*(Motion Compensation Only Distance Calculation; 106)에서, 각각의 벡터 크기의 L1 거리는 THRESHOLD와 비교된다. 상기 L1 거리는 잉여 벡터 내의 각각의 픽셀의 절대값을 합산하는 것에 의해 계산된다.
모션 보상만의 거리 비교 블록*(Motion Compensation Only Distance Compare Block; 110)에서, 각각의 벡터 크기에 대해 계산된 L1 거리는 하기와 같이 THRESHOLD와 비교된다.
L1(16×16)<THRESHOLD*CONST11
L1(16×8)<THRESHOLD*CONST12
L1(8×8)<THRESHOLD*CONST13
L1(8×4)<THRESHOLD*CONST14
L1(4×4)<THRESHOLD*CONST15
L1(4×2)<THRESHOLD*CONST16
여기서, CONST1은 기록가능한 상수이고(일반적으로 0.5 내지 0.6), CONST12= CONST1*CONST1; CONST13= CONST1*CONST1*CONST1; 등등이다. CONST1의 지수는 더 적은 수의 픽셀이 포함되기 때문에 증가한다. 이 비교의 TRUE-FALSE 결과는 벡터 헤더 발생기 블록*(154)으로 전송된다.
평균 계산 블록*(112)에서, 각각의 벡터 크기의 평균은 벡터의 모든 픽셀을 합산하고, 벡터의 픽셀의 수로 나눔으로써 계산된다(상기 평균은 비록 평균 계산 블록*(72)이 사용될지라도 평균 계산 블록*(72)의 출력이 불필요해지도록 재계산됨을 인지하여야 한다). 모든 4×2 블록의 평균을 계산하고, 그 후 이 평균값을 더 큰 블록에 대한 평균을 계산하기 위해 사용하는 것이 아주 쉬운 것임을 예상할 수 있는데, 예를들면,
MEAN(4×4) = (MEAN(4×2#1)+MEAN(4×2#2))/2
MEAN(8×4) = (MEAN(4×4#1)+MEAN(4×4#2)+MEAN(4×4#3)+MEAN(4×4#4))/4 등등.
하드웨어 구현에 있어서, 만약 더 큰 블록이 THRESHOLD보다 작다면 MEAN은 2X2 분할 블록에 대해 먼저 계산되고 평균될 수 있다.
평균 제거 및 L1 거리 계산 블록*(116)에서, 각각의 벡터에 대한 평균값은 벡터의 각각의 픽셀로부터 감해진다. 그 후, 각각의 벡터 크기에 대한 L1 거리가 평균 제거 벡터의 각각의 픽셀의 절대값을 합산함으로써 계산된다.
평균만의 거리 비교 블록*(Mean Only Distance Compare Block; 118)에서, 각각의 벡터 크기에 대한 평균만의 잉여에 대해 계산된 L1 거리는 모션 보상만에 대한 방식과 동일한 방식으로 THRESHOLD와 비교된다. 하기는 예시이다.
L1(16×16)<THRESHOLD*CONST11
L1(16×8)<THRESHOLD*CONST12
L1(8×8)<THRESHOLD*CONST13
L1(8×4)<THRESHOLD*CONST14
L1(4×4)<THRESHOLD*CONST15
L1(4×2)<THRESHOLD*CONST16
여기서, CONST1은 기록가능한 상수이다(일반적으로 0.5 내지 0.6). 이 비교의 TRUE-FALSE 결과는 벡터 헤더 발생기 블록*(154)으로 전송된다.
단 MUX 블록*(Stage MUX Block; 122)은 VQ 비교에 대해 새로운 벡터내에 실려 있는지 VQ 비교의 이전 스테이지로부터의 잉여인 잉여 벡터내에 실려있는지를 선택한다.
잉여 저장 블록*(126)은 VQ 코드북과 비교되어 기인된 벡터를 저장하도록 사용된다.
스테이지 X 벡터 선택 블록*(128)은 VQ 비교 코어이다. 스테이지 X 벡터 선택 블록*(128)을 이행하기 위한 다양한 구조는 예시를 제공하는 이스라엘슨(Israelsen)의 "벡터 양자화 병렬 처리를 위한 장치 및 방법(Method and Apparatus for Vector Quantization Parallel Processing)"이라는 제목의 미국 특허 제 5,031,037호와 함께 본 기술의 숙련자들에게 명백할 것이다. 스테이지 X 벡터 선택 블록*(128)은 입수되는 벡터(9비트 데이터)를 16 코드북 엔트리에 일제히 비교하고, 최소의 L1 거리 치수를 가진 코드북 엔트리의 4비트 주소를 출력한다.
오프칩(off-chip) 인코드 코드북 메모리 블록*(132)은 VQ 비교 코드북을 포함한다. 상술한바와 같이, 이 메모리의 전체 크기는 96768 9비트 워드이다. 이것은 각각 12096 워드의 8개의 분리된 칩으로 분할된다. 각각의 메모리칩은 VQ 비교 우회로에 연결된 분리된 버스를 갖는다. 선택된 실시예에서, 상기 코드북 메모리는 입력 픽셀 비교당 2회씩 액세스된다. 짝수 코드북 엔트리는 강하 클록 에지에 실려지고, 홀수 코드북 엔트리는 상승 클록 에지상에 실려진다. 각각의 16×16 블록이 36회(6개의 다른 벡터 크기 곱하기 벡터 크기 당 6스테이지) 처리되기 때문에, 상기 메모리의 대략적인 액세스 시간이 계산될 수 있다. 예로서,
(64blocks/frame)*(256pixel/block)*(10frames/sec) = 163,840pixel/second
(163,840pix/sec) * (36compares/pix) = 5,898,240compares/sec
(5,898,240compares/sec) * (2mem access/compare) = 11,796,480 memory accesses per second
이것은 코드북 액세스당 대략 84 나노세컨드이다.
인코더 코드북 메모리 어드레스 순서결정 블록*(134)은 코드북 메모리를 액세스하기 위한 메모리 어드레스를 발생한다. 상기 어드레스는 모션 또는 비-모션 처리에 근거한 OFFSET1과, 처리되는 현재 벡터 크기에 근거한 OFFSET2와, 다중단 검색의 현재 단에 기초한 OFFSET3와 비교될 현재 픽셀에 의해 결정된 PIXADDRESS로 구성된다.
MEMADDRESS=OFFSET1 + OFFSET2 + OFFSET3 + PIXADDRESS
VQ 잉여 L1 거리 비교 블록*(VQ Residual L1 Distance Compare Block; 138)에서, 최상의 일치 벡터의 L1 거리(VQ 단 선택 블록*(128)으로부터)는 보상만가지고 있거나 평균만 가지고 있기 때문에 THRESHOLD에 비교된다. 예로서,
L1(16×16)<THRESHOLD*CONST11
L1(16×8)<THRESHOLD*CONST12
L1(8×8)<THRESHOLD*CONST13
L1(8×4)<THRESHOLD*CONST14
L1(4×4)<THRESHOLD*CONST15
L1(4×2)<THRESHOLD*CONST16
여기서, CONST1은 기록가능한 상수이다(일반적으로 0.5 내지 0.6). 이 보상의 TRUE-FALSE의 결과는 벡터 헤더 발생기(154)로 보내진다.
오프칩 압축해제 코드북 메모리 블록*(Off-Chip Decompression Codebook Memory Block; 142)은 수반되는 단에 대한 잉여를 발생하기 위해 다중단 검색의 각각의 단을 압축해제하기 위한 VQ 코드북을 포함한다. 이것은 인코더 코드북과 동일한 정보를 포함하고 있지만 형태가 다르다. 본 명세서에 제공된 실시예에서, 이 메모리의 전체 크기는 인코더 메모리와 동일한 96,768의 9비트 워드이다. 이 디코더 코드북은 단일의 분리된 메모리칩을 가질 수 있거나 인코더북과 동일한 메모리칩을 포함할 수 있다. 이 코드북은 비교 사이클당 단 한 번만 액세스되므로 액세스 타임은 인코더 액세스 타임의 반 또는 168 나노세컨드이다.
디코더 코드북 메모리 어드레스 순서 결정장치 블록*(Decoder Codebook Memory Address Sequencer Block; 146)은 디코더 메모리내의 메모리 위치를 액세스하기 위한 어드레스를 발생한다. 이 어드레스는 모션 또는 비-모션 처리에 근거한 OFFSET1과, 처리되는 현재 벡터 크기에 근거한 OFFSET2와, 현재 VQ 비교 단에 근거한 OFFSET3와, 인코더로부터 가장 잘 일치되는 4비트 어드레스에 근거한 OFFSET4와, 액세스될 벡터의 픽셀 위치에 근거한 PIXADDRESS로 구성된다.
MEMADDRESS=OFFSET1 + OFFSET2 + OFFSET3 + OFFSET3 + PIXADDRESS
잉여 계산 블록*(150)은 비교될 현재 벡터를 취하고 압축해제 메모리 블록*(142)으로부터 읽어들인 대응하는 디코드된 벡터로부터 이를 감한다(픽셀 단위로). 이것이 다중단 VQ 비교의 다음 단을 위해 사용될 잉여 발생시킨다.
벡터 헤더 발생기 블록*(154)은 보상만의 블록*(110)과, 평균만의 블록*(118)과, 다중단 VQ 비교 블록*(138)으로부터 THRESHOLD에 L1 거리를 비교한 결과를 수신한다. 그곳에서 블록 크기 임계 비교가 만족되는 것을 기입하는 비디오 포맷터 블록*(158)으로 보내지는 워드가 발생된다. 임계 솔루션(threshold solution)이 있는 가장 큰 블록 크기를 받아들이는 것이 바람직하다. 또한, 그 다중단 검색 수준에서 임계 솔루션이 발견되었음을 기입하는 3비트 벡터 헤드 워드가 발생된다. 벡터 헤더는 하기와 같이 기술된다.
보상만 000 주 : 이는 단지 모션 보상 블록에서만 발생할 수 있다.
평균만 001
VQ 다중단 #1 010
VQ 다중단 #2 011
VQ 다중단 #3 100
VQ 다중단 #4 101
VQ 다중단 #5 110
VQ 다중단 #6 111
VQ 어드레스 레지스터(160)는 VQ 다중단 검색으로부터 입수된 4비트 어드레스를 저장한다. 이것은 4비트 폭의 FIFO(First In First Out; 선입선출)처럼 활동한다. 이는 실제로 FIFO일 수 있거나, 주소지정 가능한(addressable) 랜덤 액세스 메모리(RAM)가 될 수 있다. L1거리≥THRESHOLD인 VQ 다중단 검색의 각각의 단에서 4비트 최상의 일치 어드레스는 FIFO로 들어간다. L1 거리<THRESHOLD인 제 1의 단에서, 상기 어드레스는 FIFO로 들어가지만 수반되는 단에서는 그렇지 않다. 비디오 포맷터 블록*(158)은 벡터 헤더 발생기(154)에 의해 공급된 벡터 헤더에 근거한 FIFO로부터 얼마나 많은 4비트 어드레스가 판독되는 지를 확인한다. 만약 이 벡터 크기 단에서 6이 임계 솔루션을 찾지 못하고 도달된다면, 그후, 비디오 포맷터는 FIFO로부터 모든 어드레스를 판독하고 그들을 버린다. 모션 선택 신호(MotionSel signal)는 모션 보상 또는 비-모션 VQ가 모션 결정 블록*(88)에 의해 선택되었는지 아닌지를 비디오 포맷터 블록*(158)에 지시한다.
잉여 선택 블록*(164)은 임계가 동일하지 않음에 대한 솔루션이 발견되었을 때 나가는 벡터 잉여 픽셀을 선택한다(그리고, 가능한 저장한다). 그 후, 이들은 다음 프레임에서는 이전 프레임이 될 디코드된 이미지를 발생하도록 압축해제기 블록*(200)에 이용될 수 있도록 된다.
도 2를 참조로 하여, 압축해제기(200)는 다음 프레임의 처리가 시작되었을 때 이전 이미지가 될 압축해제된 이미지의 발생한다. 압축해제된 이미지는 프레임 기억장치(42A, 42B)의 현재 절반에 저장된다. 이 압축해제된 이미지는 라인의 다른 단부에서 수신 디코더에서 발생되는 압축해제된 이미지와 정확히 동일하게 보인다. 압축해제기는 세 가지 조건 중 하나에서 작동한다.
1. 조건부 갱신
16×16 블록의 조건부 갱신의 경우에, 압축해제기는 현재(H, V) 위치에서 시작하는 이전 프레임 버퍼(42A, 42B)로부터 16×16 블록을 단순히 취하고, 현재 H, V 위치에서 이전 프레임 버퍼(42A, 42B)의 현재 절반으로 위치시킨다.
2. 모션 보상만
압축해제기(200)는 X+H, Y+V 위치에서 시작하는 이전 프레임 버퍼(42A, 42B)로부터 16×16 블록을 취하고, 현재 H, V 위치에서 이전 프레임 버퍼(42A, 42B)의 현재 절반으로 위치시킨다.
3. 보션 보상 또는 비-모션과 평균 제거와 가능한 VQ 스테이지의 합
압축해제된 이미지는 압축해제로 들어가는 모든 요소(모션 잉여, 평균, VQ 코드북 값)를 합산함에 의해 재생될 수 있다. 이는 디코더가 수신 단부에서 사용하는 접근이다.
세 경우 전부에서, VQ 섹션으로부터 발생하는 최종 잉여(이는 최종 오류 잉여이다)는 픽셀 단위로 원래 이미지 벡터(PRESENTFRAME(0,0))로부터 감산된다. 이것은 동일한 디코드된 이미지를 생산한다. 그후, 이 이미지는 현재 H, V 위치에서 이전 프레임 버퍼(42A 또는 42B)의 현재 절반으로 배치된다. 숫자 1인 경우에, 통과하는 잉여는 PRESENTFRAME(0,0)-PREVIOUSFRAME(0,0)가 될 것이다. 숫자 2인 경우에, 잉여는 PRESENTFRAME(0,0)-PREVIOUSFRAME(H1,V1)이다. 여기서, H1과 V1은 모션 벡터이다. 3의 경우에, 잉여는 평균 제거 및 VQ 이후의 최종 잉여가 될 것이다.
비디오 포맷터(158)는 선택 코드 발생기(96)로부터 선택 코드를 판독하고, 모션 벡터 래치로부터 모션 벡터를 판독하고, 벡터 크기를 판독하고, HAMSVQ 블록*(100)으로부터 벡터 헤더와 벡터 평균과 벡터 어드레스를 판독한다. 이것이 9비트 평균 데이터의 허프만 코딩을 초래한다. X 및 Y모션 벡터와 VQ 벡터 헤더도 또한 허프만 코드 된다. 그 후, 이것은 출력 데이터 스트림에 이 정보를 포맷 및 팩(pack)하고, 이것을 외부계(outside world)로 래치한다. 외부계는 모든 래치된 정보를 블록 사이클내에서 판독하여 그것이 다음 블록에 재배치될 수 있도록 한다. 실제로, 이곳의 출력내에서 작은 FIFO를 갖는 것은 좋은 아이디어가 될 수 있다.
각각의 16×16 입력 블록을 위한 비디오 출력은 하기와 같이 구성된다.
1. 블록 헤더
만약, 선택된 코드가 모션 보상을 특정한다면, 그 후 블록 헤더는 허프만 코드된 Y 모션 벡터가 뒤따르는 허프만 코드된 X 모션 벡터가 뒤따르는 0으로 구성된다.
만약, 선택 코드가 비-모션을 기입한다면, 블록 헤더는 2비트(10)으로 구성된다.
만약, 선택 코드가 조건부 갱신을 기입한다면, 블록헤더는 2비트(11)로 구성된다.
2. 블록 본체
만약, 블록 헤더가 조건부 갱신을 특정한다면, 그 후, 블록 본체는 비워진다. 만약 블록 헤더가 모션 보상 또는 비-모션 중 하나를 특정한다면, 블록 본체는 벡터 헤더가 수반되고, 허프만 코드된 벡터 평균이 수반되고, 각각의 벡터 크기 사용을 위한 가능한 벡터 어드레스 데이터가 수반되는 벡터 분할 비트로 구성된다.
만약, 주어진 벡터 크기(16×16에서 시작되고 4×2에서 끝난다)를 위해 임계 솔루션이 발견된다면, 그후 벡터 세분 비트는 0으로 설정된다. 이는 그후 허프만 코드된 벡터 헤더가 수반된다. 그후, 이는 선택적으로 허프만 코드된 평균이 수반되고, 이것은 선택적으로 하나 이상의 4비트 VQ 주소가 수반된다.
만약, 주어진 벡터 크기(16×16에서 시작되고 4×2에서 끝난다)에 대해 임계 솔루션이 발견되지 않는다면, 그 후 벡터 세분 비트는 1로 설정된다. 이는 그후에 이 벡터 크기를 뒤따르는 더 이상의 비트가 존재하지 않을 것이라는 점은 공지되어 있다. 그러므로, 1은 세분된 벡터의 제 1의 절반을 위해 벡터 세분 비트가 수반되고, 이는 선택적으로 세분된 벡터를 위한 정보가 수반된다. 이는 그후 세분된 벡터의 제 2의 절반을 위한 벡터 세분 비트가 수반되고, 이는 선택적으로 세분된 벡터를 위한 정보가 수반된다. 이것은 솔루션이 16×16 블록의 모든 부분에서 발견될 때까지 연속된다.
만약, 4×2 벡터가 도달되었다면, 그후, 그들이 세분될 수 없기 때문에 벡터 세분 비트 삽입부를 가질 필요가 없다. 또한, 만약, 4×2 벡터의 최종 VQ 단이 솔루션을 찾지 못하고 L1 거리< THRESHOLD에 도달되었다면, 평균에다 상기 4×2 벡터에 대한 VQ 어드레스의 24비트 더한 것이 사용된다.
또한, 이 섹션은 평균 워드와, H 및 V 모션 벡터와, 벡터 헤더의 허프만 코딩을 초래한다. 평균 워드는 -256으로부터 +255까지의 9비트의 부호화된 수로서 도달한다. 평균값의 막대그래프는 그들이 0의 둘레에서 고도로 집단을 이루고 있음을 도시한다. 발생의 약 85%가 -10과 +10 사이에 있다. 만약, +N과 -N 사이의 데이터를 커버하는 허프만 워드의 제한된 세트가 성립되었다면, 그 후, 인입하는 평균값이 문제의 범위 내에서 존재하는지를 보도록 점검된다. 만약, 존재한다면, 그 후, 허프만 룩업 테이블(2N 값)이 조사되고, 추출된다. 만약, 그것이 상기 범위 내에 존재하지 않았다면, 허프만 헤더와 원시 데이터의 합산으로서의 평균값이 보내진다. 모션 벡터는 가변의 길이로 허프만 코드된 6비트값이다. 벡터 헤더는 가변의 길이로 허프만 코드된 3비트값이다. 모든 허프만 테이블은 기록가능한 테이블내에 저장된다.
E. 출력 블록 * 및 임계
도 7을 참조하면, 포맷 및 동기 블록*(204)은 오디오 정보를 비디오 데이터 스트림에 부가하고 그 다음 프레임 동기 워드를 프레임의 끝에 삽입한다. 이것은 데이터 스트림으로 디코더의 재동기(resyncing)를 허용한다. 에러 보정에 대한 비트는 만약 필요하다면 이때 부가될 수 있다.
적응성 임계 피드백이 설명될 것이다. 출력 FIFO 블록*(210)은 모뎀에 의해 전송되기를 기다리고 있을 때 데이터를 저장한다. FIFO 블록*(210)은 모뎀(220)으로의 포트의 (단지)일 실시예이고 원격 모뎀으로의 (전화선과 같은) 전송 링크이다. 모뎀(220)은 전송 링크의 일부로서 고려될 수도 있다. 또한, 모뎀(220)은 포트로서 고려될 수도 있다. FIFO 블록*(210)은 약 64K비트 크기이다. FIFO 블록*(210)은 비거나 또는 오버플로우되어서는 안된다. 이것은 비디오 프로세서로 통하는 THRESHOLD 피드백에 의해 제어된다. FIFO로부터 데이터가 제거되는 비율은 모뎀의 전송율에 의해 제어된다.
비디오 프로세서로 되돌아가는 THRESHOLD를 제어하기 위해서, FIFO 충만 카운터(FIFO Fullness counter; 214)는 언제나 FIFO가 얼마나 찼는지를 결정한다. 한 비트가 FIFO로 들어갈 때마다, 충만 카운터는 1씩 증가한다. FIFO로부터 모뎀으로 비트가 제거될 때마다, 카운터는 1씩 감소한다. 만약 FIFO가 비트에 기초하지 않고 워드에 기초한다면, 증가 및 감소는 비트에 기초하지 않고 각 워드의 삽입 및 제거에 기초한다.
임계 전송 함수 블록*(Threshold Transfer Function Block; 218)은 FIFO 충만을 압축된 비디오 데이터율을 제어하기 위해 사용되는 THRESHOLD에 매핑하는 룩업 테이블(lookup table)이다. FIFO 충만 카운터(214)의 출력은 이 테이블로의 어드레스이고 데이터 출력은 THRESHOLD이다. 전송 함수는 하기와 같을 것이다:
그래프에 있어서, 수직축은 THRESHOLD를 나타낸다. THRESHOLD는 선형일 필요는 없다. 몇몇 응용에 있어서, 여러 비선형 함수가 더 바람직할 수도 있다.
임계 멀티플렉서 블록*(234)은 임계 전송 함수 블록으로부터의 임계나 또는 호스트 컨트롤러에 의해 제공되는 고정된 임계를 선택한다. 고정된 임계는 고품질 스틸 이미지가 시스템(10)을 통해 처리될 때 유용할 것이다. 비디오폰 모드(초당 10프레임)에서 동작하는 경우, 이것은 테이블로부터 임계를 선택한다. 스틸 프레임 모드에서 동작하는 경우, 이것은 호스트로부터 고정된 임계를 선택한다. 이 임계는 각 16×16 블록 싸이클마다 정보 상호교환에 대한 비디오 처리기 미국 표준 코드(video processor American Standard Code for Information Interchange(ASIC))로 래치된다.
적절한 모뎀(220) 및 관련 회로가 선택되어야만 한다. 예를들면, 이러한 모뎀은 초당 28.8 비트를 지원할 수 있고 비동기 또는 동기 동작 모드에서 동작할 수 있는 V.34 모뎀일 것이다. 또한 동기 모드에서 에러 검출 및 보정 기능을 갖는 것이 유용하다. 몇 몇 응용에 있어서, 모뎀은 ISDN, 이더넷, ATM 등과 같은 다른 전송 매체로 대체될 수도 있다.
오디오 처리 블록*(224, 226, 및 228)은 관련 회로를 구비하는 오디오 처리 칩에 의해 수행될 것이다. 압축 오디오 데이터 비율은 초당 4800비트 내외이다. 오디오 압축 알고리즘은 적절한 알고리즘이 유효하게 되면 메인 컴퓨터 중앙 처리 유닛(CPU)에서 소프트웨어로 수행될 것이다.
F. 원격 디코더
도 8을 참조하면, 시스템(10)의 원격 디코더 시스템(250)은 압축된 벡터 양자화 비디오 신호(compressed vector quantized video signals)를 모뎀(254)을 통해 수신하는데, 상기 모뎀은 도 7의 모뎀(220)의 대응부(counterpart)이다. 동기 및 오디오 디멀티플렉서 블록*(258)은 에러 보정 비트가 인코더에 부가된 경우 에러 보정을 수행한다. 블록*(258)은 프레임 동기 워드를 찾고 필요하면 데이터 스트림을 재동기화시킨다. 블록*(258)은 오디오 비트를 떼어내어 오디오 디코더로 전송한다. 비디오 데이터 스트림은 32 비트 폭으로 비디오 FIFO에 입력된다.
비디오 FIFO 블록*(264)은 압축해제를 위한 압축된 데이터 스트림을 저장하는 32 비트폭의 FIFO이다. FIFO는 데이터가 유효하지 않은 경우 압축해제기(decompressor)가 FIFO로부터 데이터를 판독하지 않도록 언제 FIFO가 비어있는지를 나타내는 출력을 갖는다.
비디오 디코더 블록*(266)은 DSP(digital signal processing chip; 디지털 신호 처리 칩)을 사용해서 구현되거나, 또는 개인용 컴퓨터(PC)의 메인 CPU에서 구현되거나, 또는 전용 하드웨어로 구현될 수 있을 것이다. 비디오 디멀티플렉서 블록*(268), 잉여 룩업 및 평균 복원 블록*(272), 코드북 메모리 블록*(274), 이전 프레임 복원 블록*(278), 멀티플렉서 블록*(282), 멀티플렉서 블록*(284), 프레임 저장 블록*(288), 프레임 저장 블록*(290), 및 프레임 보간기 블록*(294)은 하드웨어 블록도 접근보다는 동작적으로 설명될 것이다. 비디오 디멀티플렉서 블록*(268)은 도 2에 도시된 인코더의 비디오 포맷터 블록*의 역동작을 수행한다. 비디오 디멀티플렉서 블록*(268)은 모션 벡터(H,V)가 존재하면 이들을 떼어낸다. 비디오 디멀티플렉서*(268)는 어떤 블록 크기 및 단에서 블록이 압축되었는지를 결정하고 블록을 재구성하는데 필요한 평균 및 VQ 어드레스를 생성한다. 각각 16×16 블록에 대한 데이터 스트림은 다음과 같다.
1. 블록 헤더:
비디오 디멀티플렉서 블록*(268)은 블록의 첫 번째 비트를 주목함으로써 시작한다. 만약 이 비트가 0이면, 블록은 모션 보상을 사용하여 인코드되었고 다음 N 비트는 허프만 코드화된 H 모션 벡터이고 그 다음 M 비트의 허프만 코드화된 V 모션 벡터가 뒤따른다. 만약 첫 번째 비트가 1이면, 그 다음 비트를 점검한다. 만약 다음 비트가 0이면, 블록은 비-모션 VQ로 코드화되었다. 만약 두 번째 비트가 1이면, 블록은 조건부 갱신으로 인코드되었고 상기 16×16 블록에 대해 더 이상의 데이터 비트가 존재하지 않을 것이다.
2. 블록 몸체(BLOCK BODY):
만약 16×16 블록이 모션 보상 또는 비-모션으로 코드화된 경우, 블록 헤더가 판독된 다음에, 얼마나 많은 블록이 인코드되었는지를 결정하기 위해서 스트림을 파싱(parsing)할 필요가 있다.
a. 블록 몸체의 첫 번째 비트=0:
만약 블록 몸체의 첫 번째 비트가 0이면, 16×16 블록은 단일의 16×16 벡터로 인코드되었다. 다음 N 비트는 다중단 검색의 어느 단에서 벡터가 압축되었는지를 나타내는 허프만(Huffman) 코드화된 벡터 헤더이다. 벡터 헤더는 다음과 같이 정의된다:
보상만 000 주의 : 이것은 모션 보상 블록에 대해서만 일으난다.
평균만 001
VQ 다중단 #1 010
VQ 다중단 #2 011
VQ 다중단 #3 100
VQ 다중단 #4 101
VQ 다중단 #5 110
VQ 다중단 #6 111
만약 벡터 헤드가 000이면, 벡터는 단지 보상으로서 압축되고 이 16×16 블록에 대해 더 이상의 비트가 존재하지 않을 것이다.
만약 벡터 헤더가 001이면, 벡터는 단지 평균으로서 압축되었다. 다음 N 비트는 허프만 코드화된 평균값이다. 이들 N 비트는 9비트 평균값을 생성하기 위해서 허프만 디코드된다.
만약 벡터 헤더가 010이면, 벡터는 평균 제거 1 단 다중단 VQ(mean removed 1 stage multi-stage VQ)로서 압축되었다. 다음 N 비트는 허프만 코드화된 평균값이고, 다음 4비트는 다중단 VQ의 첫 번째 단의 VQ 어드레스이다.
만약 벡터 헤더가 011 내지 111이면, 벡터는 다중단 VQ의 M 단으로 압축되었다. N 비트의 허프만 평균 다음에 다중단 VQ의 각 단에 대한 4 비트의 VQ 어드레스가 존재할 것이다. 이때 16×16 블록은 완전히 분해된다.
b. 블록 몸체의 첫 번째 비트=1:
만약 블록 몸체의 첫 번째 비트가 1이면, 16×16 블록은 적어도 두 개의 16×8 벡터로 나누어진다. 다음 비트는 첫 번째 16×8 벡터에 대한 정보를 제공한다. 만약 이것이 0인 경우, 상기 상술된 16×16 벡터에 대한 것과 동일한 처리가 이 16×8 벡터에 대해서 되풀이된다. 만약 이것이 1인 경우, 이 16×8 벡터는 적어도 두 개의 8×8 벡터로 나누어진다.
첫 번째 16×8 벡터에 대한 모든 비트가 검토된 후, 다음 비트는 두 번째 16×8 벡터에 대한 분할 비트(subdivision bit)이다. 이것은 첫 번째 16×8 벡터가 처리된 것처럼 처리된다.
이 처리는 어느 벡터 크기에서 16×16 블록의 모든 부분이 인코드되었는지를 결정할 때까지 계속된다. 만약 4×2 벡터가 예상되는 지점이 도달되면, 이들 벡터는 이들은 더 이상 분할될 수 없기 때문에 이들과 관련된 분할 비트를 갖지 않음이 공지되어 있다.
잉여 룩업 및 평균 복원 블록*(272)은 각 벡터에 대해 허프만 코드화된 평균 값을 취하고, 허프만 디코드를 수행하며, 이것을 다중단 검색의 첫 번째 단에 대한 4 비트 어드레스에 의해 특정된 메모리 오프셋으로부터 판독되는 코드북 메모리 블록*(274)로부터의 픽셀값에 조건적으로 부가한다. 이것은 다중단 검색의 두 번재 4 비트 어드레스에서 판독된 픽셀에 선택적으로 축적된다. 이것은 각 연속적인 단에 대해 유효한 4 비트 어드레스가 존재할 때까지 계속된다.
코드북 메모리 블록*(274)은 인코드의 압축해제기 코드북 메모리와 아주 유사한 포맷의 코드북을 포함하는 외부 메모리일 것이다. 이 메모리의 전체 크기는 인코드 메모리처럼 96,768의 9비트 워드이다. 이 코드북은 되도록 하나의 칩에 포함된다.
이전 프레임 메모리 복원 블록*(278)은 다음과 같이 동작할 것이다. 만약 16×16 블록이 모션 보상으로 인코드되어 있고, 잉여 룩업 및 평균 복원 블록*(272)으로부터의 16×16 출력은 위치(H,V)에서 블록 오프셋으로 이전 프레임 기억장치 블록*(290)으로부터 복원된 16×16 이미지 블록에 한 픽셀씩 부가된다.
이미지 선택 멀티플렉서 블록9282, 284)은 시스템이 조건부 갱신, 모션 보상 VQ, 또는 비-모션 VQ 모드 중 어느 모드에 있는 지에 기초해서 어느 이미지가 디스플레이될 것인지를 선택한다. 만약 모든 이러한 처리가 DSP, 또는 컴퓨터 메인 CPU에서 수행되면, 이 블록은 디스플레이될 실질적으로 단 하나의 특정 이미지가 디코드될 때 실제 존재하지 않는다.
프레임 기억 장치 블록*(288, 290)은 두 부분으로 이루어져 있다. 한 부분은 조건부 갱신 및 모션 보상 픽셀을 복원하기 위해 사용되는 이전에 디코드된 프레임이다. 두 번째 부분은 다음 프레임 사이클에서 이전 프레임이 될 현재 디코드된 프레임이다. 이들 프레임 기억장치는 각각의 연속적인 프레임 사이를 왔다갔다 한다.
프레임 보간기(294)는 다음과 같이 동작한다.
이때 비디오는 다음과 같이 나타난다:
스틸 프레임 모드:
Y = 512×448
I = 128×112
U = 128×112
비디오 폰 모드:
Y = 128×112
I = 32×28
U = 32×28
초당 10 프레임에서.
1. 시간 보간(temporal interpolation)
비디오 폰 모드에서, Y, I, 및 Q 이미지는 초당 10 프레임에서 초당 30 프레임으로 시간적으로 보간된다. 만약 프레임(F1 및 F2)이 초당 10프레임에서 디코드되면 분실 프레임(missing frames; F1a 및 F1b)을 생성하는 것이 바람직하다:
F1 F1a F1b F2 F2a F2b F3 …등등.
-----------------> 시간
이때 F1a 및 F1b에 대한 픽셀:
F1a(x,y) = 2/3(F1(x,y)) + 1/3(F2(x,y))
F1b(x,y) = 1/3(F1(x,y)) + 2/3(F2(x,y))
Y 이미지에 대해서 0≤x≤127 0≤y≤111
U 및 V 이미지에 대해서 0≤x≤31 0≤y≤27
스틸 프레임 모드에 있어서, 시간 보간은 수행되지 않는다.
2. 공간 보간(spatial interpolation)
동작의 두 모드에 있어서 I 및 Q 이미지의 분실 픽셀값을 보간하여 이들을 Y 이미지와 동일한 차원을 갖게 하는 것이 요구된다. 이것은 각 현존하는 픽셀 쌍 사이의 분실된 3 픽셀을 재생성하는 선형 보간(수평 및 수직적으로)을 수행함으로써 행해진다. 재생성된 픽셀 세트는 다음과 같이 나타나게 되는데 여기서 Ex는 현존하는 픽셀이고, Nx는 새로운 픽셀이다.
각 픽셀(N1 내지 N15)은 현존하는 픽셀(E1, E2, Ei, 및 Ej)의 선형 조합이다. 이 처리는 전체 이미지에 대해 수행된다.
이때 이미지는 다음과 같이 나타난다:
스틸 이미지 모드:
Y = 512×448
I = 512×448
U = 512×448
비디오 전화 모드:
Y = 128×112
I=128×112
U = 128×112
초당 30프레임에서.
YIQ/레드, 블루 그린(RGB) 변환 블록*(296)은 Y, I, 및 Q 이미지를 RGB에서 YIQ로 변환하는 인코더에서 사용되는 방정식의 역인 널리 공지된 방정식을 이용하여 R, G, 및 B 이미지로 변환한다.
RGB 비디오 정보는 호스트 CPU가 정보를 판독하고 그것을 호스트 컴퓨터의 디스플레이 어댑터에 이동하게 되어있는 메모리 위치에 기록된다. 정보는 비디오 디스플레이(298)에서 디스플레이된다.
특허청구범위에 사용된 바와 같이, "접속", "접속가능", 또는 "접속된"이란 용어는 직접적인 접속에 반드시 제한되는 것은 아니다. 예를들면, 계층적 적응 다중단 VQ 블록*((100)은 모뎀(220)에 연결되지만, 그 접속은 간접적인 것이다.
본원에 사용된 바와 같이, "비디오"라는 용어는 이미지의 전자적 표현을 나타내기 위해 막연히 사용된 것으로 (NTSC 또는 PAL 표준과 같이) 특정 표준 또는 (래스터 스캔 음극선관(raster scan cathode tube) 또는 액정 디스플레이와 같은) 특정 매체에 제한되는 것은 아니다. 본원에서 사용된 바와 같이, "프레임"이란 용어는 이미지를 형성하는 비월 프레임과 같은 특정 포맷에 제한되는 것은 아니다. 오히려, 프레임은 전체적인 이미지를 포함할 것이다.
L1 거리(또는 표준(norm))는 거리 크기의 일 예이다. 다른 예는 L2 거리(또는 표준), L3 거리(또는 표준), (상기 수학식 7에서 계산된) L-inf, 및 (상기 수학식 8에서 계산된) CUDist를 포함한다.
상수(constants)를 프로그램가능하게 하는 것이 바람직하지만, 이들은 ROM 변수에 영구 결합되거나 설정되어 있을 것이다.
본원에서 사용된 바와 같이, "더 적은 관련"은 "보다 적은" 또는 "같거나 보다 적은"을 나타낸다.
"시스템"이란 용어는 소프트웨어 또는 펌웨어로 또는 이들 없이 동작하는 장치(들)를 포함한다.

Claims (19)

  1. 이미지 데이터의 연속적인 프레임을 처리하는 이미지 처리 시스템에 있어서,
    포트; 및
    현재 프레임 및 이전 프레임을 포함하는 이미지 데이터의 연속적인 프레임을 수신하는 국부 인코더를 포함하고,
    상기 국부 인코더는,
    이전 프레임에서 모션 이전 블록 및 조건부 이전 블록을 식별하고, 현재 블록을 압축하고 현재 블록 및 모션 이전 블록 사이의 잉여를 압축하며;
    현재 블록을 나타내는 포트로 표현적 데이터(representational data)를 제공하는 회로를 포함하고,
    상기 회로는 표현적 데이터가 (a) 압축된 현재 블록을 나타내는 데이터, (b) 현재 블록 및 모션 이전 블록 사이의 압축된 잉여를 나타내는 데이터, 또는 (c) 현재 프레임에서 현재 블록과 나란히 배열된 이전 프레임의 블록을 나타내는 데이터 중 어느 것을 포함하는 지를 결정하는 이미지 처리 시스템.
  2. 제 1항에 있어서, 전송 링크에 의해 상기 국부 인코더와 분리된 원격 디코더를 더 포함하고, 상기 표현적 데이터는 전송 링크를 통해 포트로부터 원격 디코더로 전송되며, 상기 원격 디코더는 표현적 데이터에 의해 제공된 명령으로부터 현재 프레임을 구성하는 이미지 처리 시스템.
  3. 제 2항에 있어서, 상기 회로는 압축을 수행하는 벡터 양자화기, 및 (1) 상기 벡터 양자화기가 현재 블록에 대해서 벡터 양자화를 수행하는지, (2) 상기 벡터 양자화기가 상기 현재 블록 및 모션 이전 블록 사이의 모션 잉여에 대해서 벡터 양자화를 수행하는지, 또는 (3) 나란히 배열된 블록이 디코더에 의한 현재의 프레임의 조합을 위한 현재 블록으로서 수용가능한지를 나타내는 비트가 원격 디코더로의 전송을 위한 포트로 전달되는지를 선택하는 중재기를 포함하는 이미지 처리 시스템.
  4. 제 2항에 있어서, 국부 인코더와 동일한 원격 인코더, 및 원격 디코더와 동일한 국부 디코더를 더 포함하고, 상기 국부 인코더 및 국부 디코더는 국부 시스템에 포함되고, 상기 원격 인코더 및 원격 디코더는 원격 시스템에 포함되고, 상기 국부 및 원격 시스템은 통신 링크를 통해 통신하며, 상기 포트는 국부 시스템에 포함되는 이미지 처리 시스템.
  5. 제 4항에 있어서, 상기 시스템은 상기 국부 및 원격 시스템 사이에 오디오 전송을 또한 포함하는 비디오 전화 시스템을 포함하는 이미지 처리 시스템.
  6. 제 1항에 있어서, 상기 압축된 현재 블록을 나타내는 데이터는 평균 제거 인자(mean removed factor)를 포함하는 이미지 처리 시스템.
  7. 제 1항에 있어서, 상기 압축은 벡터 양자화를 통하는 이미지 처리 시스템.
  8. 제 1항에 있어서, 상기 회로는 현재 블록을 나타내기 위해 사용된 압축의 양이 감소되는지 제거되는지를 결정하는 모션 중재기(motion arbiter)를 포함하는 이미지 처리 시스템.
  9. 제 1항에 있어서, 현재 프레임의 적어도 일부를 저장하는 버퍼를 더 포함하고, 상기 인코더는 상기 버퍼로부터 연속적인 프레임을 수신하는 이미지 처리 시스템.
  10. 제 1항에 있어서, 상기 인코더는 전용 하드웨어에서 구현되는 이미지 처리 시스템.
  11. 제 1항에 있어서, 상기 인코더는 적어도 하나의 마이크로프로세서에 의해 적어도 부분적으로 구현되는 이미지 처리 시스템.
  12. 제 1항에 있어서, 상기 인코더는 마이크로프로세서에 의해 적어도 부분적으로 구현되고, 압축하는 상기 회로는 적어도 부분적으로 마이크로프로세서에 포함되는 이미지 처리 시스템.
  13. 제 1항에 있어서, i=0에서 N에 대해서, 상기 잉여는 Curpixi- Motprevpixi와 동일하고, Curpixi는 현재 블록의 픽셀이고, Motprevpixi는 모션 이전 블록의 픽셀이며, N은 현재 블록의 픽셀의 수보다 적은 이미지 처리 시스템.
  14. 제 1항에 있어서, 상기 회로는 현재 블록 및 모션 이전 블록 사이의 모션 잉여를 결정하고, 상기 모션 잉여에 관련된 거리를 결정하는 이미지 처리 시스템.
  15. 제 1항에 있어서, 상기 회로는 현재 블록 및 모션 이전 블록 사이의 잉여에 관련된 거리를 결정하는 이미지 처리 시스템.
  16. 제 1항에 있어서, 상기 회로는 현재 블록 및 평균 사이의 잉여에 관련된 거리를 결정하는 이미지 처리 시스템.
  17. 제 15 또는 제 16항에 있어서, 만약 현재 블록 및 모션 이전 블록 사이의 잉여와 관련된 거리가 현재 블록 및 상수에 의해 승산된 평균에 관련된 거리보다 작거나 같은 경우, 상기 회로는 표현적 데이터가 현재 블록 및 모션 이전 블록 사이의 압축된 잉여를 나타내는 데이터를 포함하는 지를 결정하는 이미지 처리 시스템.
  18. 제 1항에 있어서, 나란히 배열된 블록과 관련된 거리는 두 요소를 포함하고, 그 하나는 왜곡의 최대 양을 포함하는 이미지 처리 시스템.
  19. 현재 프레임 및 이전 프레임을 포함하는 이미지 데이터의 연속적인 프레임을 수신하는 단계와;
    이전 프레임에서 모션 이전 블록 및 조건부 이전 블록을 식별하고, 현재 블록과 모션 이전 블록 사이의 잉여 및 현재 블록을 압축하는 단계; 및
    현재 블록을 나타내기 위해 표현적 데이터를 포트로 제공하고 상기 표현적 데이터가 (a) 압축된 현재 블록을 나타내는 데이터, (b) 현재 블록 및 모션 이전 블록 사이의 압축된 잉여를 나타내는 데이터, 또는 (c) 현재 프레임에서 현재 블록과 나란히 배열된 이전 프레임의 블록을 나타내는 데이터 중 어느 것을 포함하는 지를 결정하는 단계를 포함하는 이미지 처리 방법.
KR1019980703510A 1995-11-09 1996-11-08 모션 벡터 양자화 선택 시스템 KR19990067491A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US555,435 1995-11-09
US08/555,435 US5844612A (en) 1995-11-09 1995-11-09 Motion vector quantizing selection system
PCT/US1996/017946 WO1997017810A1 (en) 1995-11-09 1996-11-08 Motion vector quantizing selection system

Publications (1)

Publication Number Publication Date
KR19990067491A true KR19990067491A (ko) 1999-08-25

Family

ID=24217246

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980703510A KR19990067491A (ko) 1995-11-09 1996-11-08 모션 벡터 양자화 선택 시스템

Country Status (8)

Country Link
US (1) US5844612A (ko)
EP (1) EP0860088A4 (ko)
JP (1) JP2000500312A (ko)
KR (1) KR19990067491A (ko)
AU (1) AU730809B2 (ko)
CA (1) CA2236674C (ko)
IL (1) IL124369A (ko)
WO (1) WO1997017810A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047100A (en) * 1994-10-20 2000-04-04 Thomson Licensing S.A. Trick play stream derivation for pre-recorded digital video recording
US5867221A (en) * 1996-03-29 1999-02-02 Interated Systems, Inc. Method and system for the fractal compression of data using an integrated circuit for discrete cosine transform compression/decompression
JP3633159B2 (ja) * 1996-12-18 2005-03-30 ソニー株式会社 動画像信号符号化方法及び装置、並びに動画像信号伝送方法
EP0858206B1 (en) * 1997-02-06 2005-10-19 STMicroelectronics S.r.l. Method for memory requirement reduction in a video decoder
US6222885B1 (en) * 1997-07-23 2001-04-24 Microsoft Corporation Video codec semiconductor chip
US6826524B1 (en) * 1998-01-08 2004-11-30 Purdue Research Foundation Sample-adaptive product quantization
US6122321A (en) * 1998-05-12 2000-09-19 Hitachi America, Ltd. Methods and apparatus for reducing the complexity of inverse quantization operations
US6642956B1 (en) * 1998-05-29 2003-11-04 Agilent Technologies, Inc. Digital image processor for a digital camera
US6162174A (en) * 1998-09-16 2000-12-19 Siemens Medical Systems, Inc. Method for compensating for object movement in ultrasound images
JP4300446B2 (ja) * 1998-10-20 2009-07-22 ソニー株式会社 画像処理装置及び画像処理方法
US20030142107A1 (en) * 1999-07-16 2003-07-31 Intel Corporation Pixel engine
JP4224748B2 (ja) * 1999-09-13 2009-02-18 ソニー株式会社 画像符号化装置および画像符号化方法、画像復号装置および画像復号方法、記録媒体、並びに画像処理装置
CN1297148C (zh) * 2001-08-28 2007-01-24 株式会社Ntt都科摩 动画图像编码传送系统、动画图像编码传送方法、该系统和方法使用的适合的编码装置、译码装置、编码方法、译码方法以及程序
US7558428B2 (en) * 2004-09-13 2009-07-07 Microsoft Corporation Accelerated video encoding using a graphics processing unit
JP4271115B2 (ja) * 2004-09-29 2009-06-03 株式会社東芝 画像マッチング装置、画像マッチング方法および画像マッチングプログラム
WO2006077715A1 (ja) * 2005-01-20 2006-07-27 Hitachi Medical Corporation 磁気共鳴イメージング装置
US11185305B2 (en) * 2016-06-30 2021-11-30 Koninklijke Philips N.V. Intertial device tracking system and method of operation thereof

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4652905A (en) * 1978-04-19 1987-03-24 Quanticon Inc. Instantaneous neutral colors in dither-quantized color television
US4560977A (en) * 1982-06-11 1985-12-24 Mitsubishi Denki Kabushiki Kaisha Vector quantizer
JPS6029090A (ja) * 1983-07-28 1985-02-14 Kokusai Denshin Denwa Co Ltd <Kdd> ベクトル信号の繰込み量子化方式
US4670851A (en) * 1984-01-09 1987-06-02 Mitsubishi Denki Kabushiki Kaisha Vector quantizer
CA1289656C (en) * 1985-02-28 1991-09-24 Tokumichi Murakami Interframe adaptive vector quantization encoding apparatus
DE3670746D1 (de) * 1985-12-04 1990-05-31 Siemens Ag Verfahren zur datenreduktion digitaler bildsignale durch vektorquantisierung.
US4903317A (en) * 1986-06-24 1990-02-20 Kabushiki Kaisha Toshiba Image processing apparatus
FR2625060B1 (fr) * 1987-12-16 1990-10-05 Guichard Jacques Procede et dispositifs de codage et de decodage pour la transmission d'images a travers un reseau a debit variable
CA1333420C (en) * 1988-02-29 1994-12-06 Tokumichi Murakami Vector quantizer
US4943855A (en) * 1988-07-22 1990-07-24 At&T Bell Laboratories Progressive sub-band image coding system
US5031037A (en) * 1989-04-06 1991-07-09 Utah State University Foundation Method and apparatus for vector quantizer parallel processing
US5124791A (en) * 1989-05-31 1992-06-23 Utah State University Foundation Frame-to-frame compression of vector quantized signals and other post-processing
US4958225A (en) * 1989-06-09 1990-09-18 Utah State University Foundation Full-search-equivalent method for matching data and a vector quantizer utilizing such method
WO1992009142A1 (en) * 1989-06-13 1992-05-29 Utah State University Foundation Method and apparatus for data compression with reduced distortion
US5255346A (en) * 1989-12-28 1993-10-19 U S West Advanced Technologies, Inc. Method and apparatus for design of a vector quantizer
US5194864A (en) * 1990-10-03 1993-03-16 Olympus Optical Co., Ltd. Vector quantization method and apparatus
US5487086A (en) * 1991-09-13 1996-01-23 Comsat Corporation Transform vector quantization for adaptive predictive coding
US5247348A (en) * 1991-11-19 1993-09-21 Scientific Atlanta, Inc. Method for selecting reproduction quality of transmitted vector quantized data
US5172228A (en) * 1991-11-19 1992-12-15 Utah State University Foundation Image compression method and apparatus employing distortion adaptive tree search vector quantization
US5235418A (en) * 1991-11-19 1993-08-10 Scientific-Atlanta, Inc. Method and apparatus for low frequency removal in vector quantization
US5231485A (en) * 1991-11-19 1993-07-27 Scientific-Atlanta, Inc. Method and apparatus for transforming between fixed-rate vector quantized data and variable rate vector quantized data
US5204899A (en) * 1991-11-19 1993-04-20 Scientific-Atlanta, Inc. Vector quantization method employing mirrored input vectors to search codebook
US5371544A (en) * 1992-02-07 1994-12-06 At&T Corp. Geometric vector quantization
US5272529A (en) * 1992-03-20 1993-12-21 Northwest Starscan Limited Partnership Adaptive hierarchical subband vector quantization encoder
US5592302A (en) * 1992-03-23 1997-01-07 Canon Kabushiki Kaisha Coding method for coding pixel blocks and apparatus therefor
US5387938A (en) * 1992-10-08 1995-02-07 Matsushita Electric Industrial Co., Ltd. Adaptive interframe/intraframe block coding method and apparatus
US5432554A (en) * 1993-06-16 1995-07-11 Intel Corporation Method and apparatus for decoding images using a specified data format
US5488568A (en) * 1993-06-16 1996-01-30 Intel Corporation Playback method and system for processing image data
US5440346A (en) * 1993-06-16 1995-08-08 Intel Corporation Mode selection for method and system for encoding images
JP3356516B2 (ja) * 1993-12-28 2002-12-16 シャープ株式会社 動画像符号化装置
US5457495A (en) * 1994-05-25 1995-10-10 At&T Ipm Corp. Adaptive video coder with dynamic bit allocation

Also Published As

Publication number Publication date
EP0860088A1 (en) 1998-08-26
CA2236674C (en) 2003-09-16
WO1997017810A1 (en) 1997-05-15
CA2236674A1 (en) 1997-05-15
EP0860088A4 (en) 1999-01-07
AU730809B2 (en) 2001-03-15
US5844612A (en) 1998-12-01
AU7673996A (en) 1997-05-29
JP2000500312A (ja) 2000-01-11
IL124369A (en) 2001-08-26
IL124369A0 (en) 1998-12-06

Similar Documents

Publication Publication Date Title
US5799110A (en) Hierarchical adaptive multistage vector quantization
US6414992B1 (en) Optimal encoding of motion compensated video
KR19990067491A (ko) 모션 벡터 양자화 선택 시스템
US5010401A (en) Picture coding and decoding apparatus using vector quantization
US7092445B2 (en) Video coder providing implicit coefficient prediction and scan adaptation for image coding and intra coding of video
US5973742A (en) System and method for performing motion estimation with reduced memory loading latency
EP1528813B1 (en) Improved video coding using adaptive coding of block parameters for coded/uncoded blocks
US5272529A (en) Adaptive hierarchical subband vector quantization encoder
AU627421B2 (en) Adaptive motion compensation for digital television
US5812788A (en) Encoding/decoding video signals using quantization tables based on explicitly encoded base and scale matrices
EP0630157B1 (en) Systems and methods for coding alternate fields of interlaced video sequences
US5646618A (en) Decoding one or more variable-length encoded signals using a single table lookup
US5909513A (en) Bit allocation for sequence image compression
KR950000830B1 (ko) 디지탈 비디오 신호의 부호화 방법 및 이를 이용한 고능률 부호화장치
US6603814B2 (en) Video compression scheme using wavelets
JP2002517176A (ja) デジタル動きビデオ信号のコード化と復号の方法および装置
JPH03136595A (ja) デイジタル動画像の記憶または伝送に用いるビデオ画像データの処理方法
US6005622A (en) Video coder providing implicit or explicit prediction for image coding and intra coding of video
KR19990036188A (ko) 부호화된 디지탈 비디오 신호의 복호화 방법 및 장치
US5778190A (en) Encoding video signals using multi-phase motion estimation
US5684544A (en) Apparatus and method for upsampling chroma pixels
JPH09233477A (ja) 動きベクトル生成方法
US5751861A (en) Reducing residual artifacts in video coding schemes with integer motion compensation
KR100574732B1 (ko) 영상코딩장치,영상코딩방법,영상디코딩방법,영상디코딩장치,영상데이터전송방법및기록매체
USRE35414E (en) Picture coding and decoding apparatus using vector quantization

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application