KR102446097B1 - 비디오 시퀀스의 이미지를 인코딩하기 위한 방법 및 시스템 - Google Patents

비디오 시퀀스의 이미지를 인코딩하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR102446097B1
KR102446097B1 KR1020200154923A KR20200154923A KR102446097B1 KR 102446097 B1 KR102446097 B1 KR 102446097B1 KR 1020200154923 A KR1020200154923 A KR 1020200154923A KR 20200154923 A KR20200154923 A KR 20200154923A KR 102446097 B1 KR102446097 B1 KR 102446097B1
Authority
KR
South Korea
Prior art keywords
block
motion vector
encoding
image
cost
Prior art date
Application number
KR1020200154923A
Other languages
English (en)
Other versions
KR20210069564A (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 엑시스 에이비
Publication of KR20210069564A publication Critical patent/KR20210069564A/ko
Application granted granted Critical
Publication of KR102446097B1 publication Critical patent/KR102446097B1/ko

Links

Images

Classifications

    • 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/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
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • 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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • 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/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/182Methods 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 a pixel
    • 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/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
    • H04N19/517Processing of motion vectors by encoding
    • 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/527Global motion vector estimation
    • 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/567Motion estimation based on 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/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/57Motion estimation characterised by a search window with variable size or shape

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

비디오 시퀀스의 이미지를 인코딩하기 위한 방법 및 시스템이 제공된다. 상기 방법은, 상기 비디오 시퀀스에서 이전에 인코딩된 이미지 이후, 임계값보다 더 긴 거리 벡터로 이동된 상기 이미지 내의 코히런트 영역을 식별하도록 상기 비디오 시퀀스 내의 움직임을 분석한다. 이미지의 픽셀 블록 각각에 대해, 블록을 인터-코딩(Inter-coding)하기 위한 코스트(Cost)는 잔차(Residual)와 움직임 벡터를 인코딩하기 위한 코스트의 조합으로서 계산된다. 코히런트 영역 내의 적어도 하나의 픽셀 블록에 대해, 움직임 벡터를 인코딩하기 위한 코스트는 이미지 내에서 주변 픽셀 블록의 움직임 벡터를 기준으로 계산되는 대신에, 코히런트 영역의 거리 벡터를 기준으로 계산된다. 다음으로, 모션 벡터를 인코딩하기 위한 결합된 코스트 및 잔차를 인코딩하기 위한 코스트가 결합될 때 픽셀 블록을 인트라-코딩(Intra-coding)하기 위한 코스트보다 작으면 블록이 인터-코딩된다.

Description

비디오 시퀀스의 이미지를 인코딩하기 위한 방법 및 시스템{A METHOD AND SYSTEM FOR ENCODING AN IMAGE OF A VIDEO SEQUENCE}
본 발명은 비디오 코딩의 분야에 관한 것이다. 특히, 본 발명은 비디오 시퀀스의 이미지를 인코딩하기 위한 방법 및 시스템에 관한 것이다.
비디오 프레임의 시퀀스를 인코딩할 때, 비디오 프레임 각각을 픽셀 블록으로 나누고 프레임을 블록 단위로 인코딩하는 것이 일반적이다. 이러한 블록은 H.264/MPEG-4 AVC의 매크로 블록과 H.265/HEVC의 코딩 단위로 알려져 있다. 블록은 때때로 I-블록으로 지칭되는 인트라-블록(Intra-block)으로서, 또는 때때로 P-블록 또는 B-블록으로 지칭되는 인터-블록(Inter-block)으로서 인코딩될 수 있다.
블록이 인트라-코딩된 경우, 픽셀 값은, 예를 들어 동일한 프레임에 있는 주변 블록의 가장자리로부터 외삽(Extrapolating)함으로써, 현재 프레임의 픽셀 값만을 참조하여 인코딩된다. 이는 참조 프레임에서 매칭 픽셀 블록을 참조하여 인코딩되는 인터-코딩된 블록과 대조된다. 구체적으로, 픽셀 블록의 인터-코딩은 참조 프레임에서 매칭 픽셀 블록을 가리키는 움직임 벡터를 인코딩하는 단계 및 픽셀 블록과 매칭 픽셀 블록 사이의 잔차(Residual)를 인코딩하는 단계를 관여시킨다. 픽셀 블록의 움직임 벡터의 인코딩을 좀 더 효율적으로 만들기 위해, 픽셀 블록의 움직임 벡터는 일반적으로 가까운 픽셀 블록의 움직임 벡터에 관해, 예를 들어, 동일한 프레임에서 이전에 인코딩된 주변 블록의 움직임 벡터에 관해, 인코딩된다.
인트라-프레임으로 지칭되는 일부 프레임에서는, 모든 픽셀 블록이 인트라-코딩된다. 인터 프레임으로 지칭되는 다른 프레임에서는, 일부 픽셀 블록은 인트라-코딩되고 다른 픽셀 블록은 인터-코딩된다. 인터-프레임에서, 픽셀 블록을 인트라 코딩된 블록으로서 또는 인터-코딩된 블록으로서 인코딩할지 여부는 블록 단위로 결정된다. 이 결정은 일반적으로 인트라-코딩 및 인터-코딩 중 어느 것이 가장 낮은 인코딩 코스트(Encoding Cost)를 제공하는지에 기반하여 이루어진다. 블록을 인트라-코딩하기 위한 코스트는 기정의된 값으로 주어질 수 있는 한편, 블록을 인터-코딩하기 위한 코스트는 움직임 벡터 및 잔차를 인코딩하기 위한 결합된 코스트로 결정된다.
블록 단위로 픽셀 블록을 인트라-코딩할지 또는 인터-코딩할지를 결정하는 접근법은 몇 가지 단점을 갖는다. 구체적으로, 블록 레벨에서 최적으로 보일 수 있는 결정은 어떤 상황에서는 프레임 레벨에서 차선책일 수 있고, 결국 프레임 인코딩에 불필요하게 높은 코스트를 초래할 수 있다.
이러한 상황의 예는, 다수의 픽셀 블록에 걸쳐 있는 객체가, 이전에 인코딩된 프레임 이후, 상당한 거리를 이동한 경우이다. 객체 내의 픽셀 블록의 경우, 움직임 검색은, 상당한 길이를 갖고 이전에 인코딩된 프레임 이후 객체의 움직임에 대응되는 후보 움직임 벡터를 제안할 가능성이 높다. 긴 움직임 벡터는 인코딩하는 데 코스트가 많이 들기 때문에, 임의의 단일 픽셀 블록에 대해 긴 움직임 벡터를 사용하는 것은 좋은 결정으로 보이지 않을 수 있다. 특히 높은 압축 수준에서 이론적으로 잔차가 더 작아지기 때문에, 이는 더 높은 압축 수준에 대한 경우일 것이나, 움직임 벡터를 인코딩하기 위한 코스트는 압축 수준에 관계없이 동일하게 유지된다. 대신, 기존의 블록 단위 방법론은 객체 내의 블록을 인트라-코딩된 블록으로서 또는 더 짧은 모션 벡터를 사용하여 인터-코딩된 블록으로서 인코딩하는 것을 결정할 것이다. 그러나, 프레임 레벨에 대한 더 나은 결정은, 움직임 벡터들이 서로에 관해 인코딩된다는 점을 염두에 두고 긴 움직임 벡터를 인코딩하기 위해 추가 코스트를 지불할 가능성이 컸다. 따라서 개선의 여지가 있다.
위의 관점에서, 따라서 본 발명의 목적은, 비디오 시퀀스에서 이전에 인코딩된 이미지 이후, 상당한 거리를 이동한 객체를 묘사하는 이미지를 인코딩하기 위한 총 비트 코스트(Bit Cost)를 감소시키는 것이다.
본 발명의 제1 양태에 따르면, 상기 목적은 비디오 시퀀스의 이미지를 인코딩하는 방법에 의해 달성되며, 상기 방법은,
상기 비디오 시퀀스에서 이전에 인코딩된 이미지 이후 임계값보다 더 긴 거리 벡터로 이동된 상기 이미지 내의 코히런트 (Coherent) 영역을 식별하도록 상기 비디오 시퀀스 내의 움직임을 분석하는 단계, 및
상기 이미지 내의 픽셀 블록을 인코딩하는 단계를 포함하되,
상기 이미지 내의 픽셀 블록을 인코딩하는 단계는, 각각의 픽셀 블록에 대해서:
블록 매칭을 수행하여, 참조 이미지 내에서 매칭 픽셀 블록을 가리키는 움직임 벡터를 찾고, 상기 픽셀 블록과 상기 매칭 픽셀 블록 사이의 잔차(Residual)를 계산하고,
상기 움직임 벡터를 인코딩하기 위한 코스트(Cost) - 상기 움직임 벡터를 인코딩하기 위한 상기 코스트는, 상기 코히런트 영역 내에 있는 적어도 하나의 픽셀 블록에 대해, 상기 이미지 내에서 주변 픽셀 블록의 움직임 벡터에 관한 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산되는 대신에, 상기 코히런트 영역의 상기 거리 벡터에 관한 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산됨 - 및 상기 잔차를 인코딩하기 위한 코스트를 계산하고,
상기 움직임 벡터를 인코딩하기 위한 상기 코스트와 상기 잔차를 인코딩하기 위한 상기 코스트가, 결합되었을 때 상기 픽셀 블록을 인트라-코딩(Intra-coding)하기 위한 코스트보다 작은 경우에, 인터-코딩된(Inter-coded) 블록으로서 상기 픽셀 블록을 인코딩함으로써, 이루어진다.
이 접근 방식을 사용하면, 픽셀 블록을 인트라-코딩할지 또는 인터-코딩할지 여부에 대한 결정이 블록 수준에서 내려진다. 그럼에도 불구하고, 코히런트 영역에서 적어도 하나의 픽셀 블록에 대해 움직임 벡터를 인코딩하기 위한 코스트가 계산되는 방식을 변경함으로써, 인코더는 코히런트 영역에 있는 하나 이상의 블록에 대한 긴 움직임 벡터를 인코딩하기 위한 추가 코스트를 부담하도록 "속을 수 있다". 이러한 방식으로, 코히런트 영역을 인코딩하기 위한 총 실제 비트 코스트(Bit Cost)가 감소될 수 있다.
좀 더 구체적으로, 움직임 벡터를 인코딩하기 위한 코스트는 일반적으로 이미지 내에서 주변 픽셀 블록의 움직임 벡터와 관련하여 평가된다. 이러한 코스트 계산 방식은 움직임 벡터를 인코딩하는 실제 비트 코스트에 대응된다. 따라서, 인코더는 일반적으로 이미지 내에서 주변 픽셀 블록의 움직임 벡터와 유사한 움직임 벡터를 인코딩하는 것이 저렴하다고 간주한다.
그러나, 코히런트 영역에 있는 적어도 하나의 픽셀 블록에 대해, 움직임 벡터를 인코딩하기위한 코스트는 대신 코히런트 영역의 거리 벡터와 관련하여 평가된다. 이러한 방식으로, 코히런트 영역에 있는 적어도 하나의 픽셀 블록에 대해, 인코더는 코히런트 영역의 거리 벡터와 유사한 움직임 벡터를 인코딩하는 것이 저렴하다고 믿게 된다. 그 결과, 인코더는 코히런트 영역의 거리 벡터와 같거나 또는 가까운 움직임 벡터를 사용하여 적어도 하나의 픽셀 블록을 인터-코딩하기로 결정할 가능성이 더 높아질 것이다. 그러나, 실제로, 적어도 하나의 픽셀 블록의 움직임 벡터를 인코딩하기 위한 실제 비트 코스트는 여전히 주변 픽셀 블록의 움직임 벡터에 관한 움직임 벡터를 인코딩하기 위한 코스트일 것 이다. 이러한 방식으로, 인코더는 코히런트 영역에서 적어도 하나의 픽셀 블록에 대해 길고 코스트가 많이 드는 움직임 벡터를 인코딩하기 위한 추가 코스트를 지불하도록 "속는다". 다음으로, 코히런트 영역의 다른 픽셀 블록의 움직임 벡터는 적어도 하나의 픽셀 블록의 길고 코스트가 많이 드는 움직임 벡터에 비하여 저코스트로 인코딩될 수 있다. 따라서, 결국, 코히런트 영역을 인코딩하기 위한 총 실제 비트 코스트가 감소될 수 있다.
이미지 내에서 코히런트 영역은 이미지 내에서 연속적인 픽셀의 영역을 의미한다. 식별된 코히런트 영역은 이미지 내에서 거의 동일한 양만큼 동일한 방향으로 이동된 영역에 대응된다. 코히런트 영역은 예를 들어, 비디오에 묘사된 움직이는 객체에 대응될 수 있다. 코히런트 영역은 또한 예를 들어, 이미지가 패닝(Panning) 및/또는 틸팅(Tilting) 카메라에 의해 캡처될 때 전체 이미지에 대응될 수 있다.
비디오 시퀀스에서 이전에 인코딩된 이미지는 인코딩 순서에서 현재 이미지 앞에 있는 비디오 시퀀스의 이미지를 의미한다. 이것은 P-타입 코딩의 경우 비디오 시퀀스에서 이전 이미지이거나, 또는 B-타입 코딩의 경우 비디오 시퀀스에서 미래 이미지일 수 있다.
코히런트 영역의 거리 벡터는, 일반적으로 비디오 시퀀스에서 이전에 인코딩된 이미지 이후 이미지에서 코히런트 영역의 움직임의 양과 방향을 나타내는 벡터를 의미한다. 거리 벡터는 코히런트 영역 내의 픽셀들의 평균 이동량 및 방향에 대응될 수 있다. 거리 벡터는 이미지에서 코히런트 영역의 위치로부터 이전에 인코딩된 이미지의 코히런트 영역의 위치를 가리킨다.
참조 이미지는 일반적으로 비디오 시퀀스의 현재 이미지가 인코딩되는 것과 관련된 이미지를 의미한다. 참조 이미지는 비디오 시퀀스에서 이전에 인코딩된 이미지에 대응될 수 있다. 구체적으로, 참조 이미지는 비디오 시퀀스에서 이전에 인코딩된 이미지로부터 계산될 수 있다. 예를 들어, 참조 이미지는 비디오 코딩에서의 일반적인 관행과 같이 먼저 이전에 인코딩된 이미지를 인코딩한 다음 이것을 다시 디코딩함으로써 계산될 수 있다.
다른 벡터에 관한 움직임 벡터를 인코딩하는 것은 일반적으로 움직임 벡터 및 다른 벡터 사이의 차이가 인코딩됨을 의미한다. 따라서 다른 벡터에 관한 움직임 벡터를 인코딩하기 위한 코스트는 움직임 벡터와 다른 벡터 사이의 차이를 인코딩하기 위한 코스트로서 계산될 수 있다.
움직임 벡터를 인코딩하기 위한 코스트가 거리 벡터에 관해 계산되는 코히런트 영역의 적어도 하나의 픽셀 블록은 인코딩될 코히런트 영역 내의 제1 픽셀 블록을 포함할 수 있다. 좀 더 구체적으로 코히런트 영역 내의 픽셀 블록들은 기결정된 순서로 인코딩될 수 있으며, 상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은 상기 기결정된 순서에 따라 첫 번째로 인코딩되는 상기 코히런트 영역 내의 픽셀 블록을 포함할 수 있다. 예를 들어, 픽셀 블록은 래스터 스캔(Raster Scan) 순서로 인코딩될 수 있고, 래스터 스캔 순서에서 처음 나타나는 코히런트 영역 내의 픽셀 블록은 적어도 하나의 픽셀 블록에 포함된다. 이러한 방식으로, 코히런트 영역의 거리 벡터에 대응되는 긴 움직임 벡터를 인코딩하기 위한 추가 코스트는 코히런트 영역 내의 첫 번째 인코딩된 픽셀 블록에 대해 이미 사용된다. 코히런트 영역에서 나중에 인코딩된 픽셀 블록의 움직임 벡터는 그 긴 움직임 벡터에 비해 적은 코스트로 인코딩될 수 있다.
일부 경우에, 상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은 상기 기결정된 순서에 따라 첫 번째로 인코딩되는 상기 코히런트 영역 내의 픽셀 블록만을 포함한다. 이것은 긴 움직임 벡터를 인코딩하기 위한 추가 코스트가 단지 한 번만 사용된다는 점에서 유리하다. 이것은 H.265/HEVC 표준의 경우와 같이, 인터-코딩된 블록의 움직임 벡터가 이미지에서 이전에 인코딩된 주변 픽셀 블록들 중 어느 하나에 대해 인코딩되는 경우에 충분할 수 있다.
다른 경우에 있어서, 상기 이미지 내의 주변 픽셀 블록의 상기 움직임 벡터는 상기 이미지 내의 이전에 인코딩된 다수(전형적으로 홀수)의 주변 픽셀 블록의 움직임 벡터의 중앙값에 대응된다. 이것은 예를 들어, H.264/MPEG-4 AVC 표준의 경우로, 여기서 인터-코딩된 블록의 움직임 벡터는 이미지에서 이전에 인코딩된 3 개의 주변 픽셀 블록의 움직임 벡터의 중앙값에 대해 인코딩된다. 이러한 다른 경우에, 코히런트 영역 내의 적어도 하나의 픽셀 블록은 바람직하게는 둘 이상의 픽셀 블록을 포함한다.
좀 더 일반적으로, 상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은 상기 영역 내의 이전에 인코딩된 주변 픽셀 블록들의 기결정된 개수보다 적은, 상기 코히런트 영역 내의 모든 픽셀 블록을 포함할 수 있다. 이러한 요건은 긴 움직임 벡터를 인코딩하기 위한 추가 코스트가 드는 블록의 수를 최소로 유지하는 동시에 코히런트 영역 내에 남아있는 모든 블록의 움직임 벡터가 이전에 인코딩된 긴 움직임 벡터에 비해 적은 코스트로 인코딩될 수 있도록 한다.
위에서 언급된 H.265/HEVC에 대해서, 상기 영역 내에 이전에 인코딩된 주변 블록이 없는 경우 상기 영역 내의 블록에 대해서만 추가 코스트가 사용된다. 이 경우에, 기결정된 수는 따라서 1과 같다. 세 개의 주변 블록에 대한 움직임 벡터의 중앙값이 계산되는 H.264/MPEG-4 AVC의 경우에, 상기 영역에서 이전에 인코딩된 주변 블록이 두 개 미만인 블록에 대해 추가 코스트가 사용된다. 이 경우에, 기결정된 수는 따라서 2와 같다.
바람직하게는, 상기 영역에 대한 인코딩 코스트를 최적화하기 위해서, 상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은 상기 영역 내의 이전에 인코딩된 주변 픽셀 블록들의 기결정된 개수보다 적은, 상기 코히런트 영역 내의 상기 픽셀 블록만을 포함한다.
일부 경우에 있어서, 상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은 상기 코히런트 영역 내의 모든 픽셀 블록을 포함할 수 있다. 이 접근법은 어떤 인코딩 표준이 사용되는지에 관계없이 사용될 수 있다.
상기 블록 매칭을 수행하는 단계는, 움직임 벡터 검색 윈도우를 사용해 상기 참조 이미지 내의 매칭 픽셀 블록을 가리키는 상기 움직임 벡터를 찾는 단계를 포함할 수 있다. 상기 검색 윈도우는 주변 픽셀 블록의 움직임 벡터를 중심으로 할 수 있다. 즉, 검색 윈도우는 주변 블록의 움직임 벡터가 가리키는 참조 이미지 내의 픽셀 블록을 중심으로 한다. 검색 윈도우의 이러한 위치 결정은 일반적으로 이미지 내의 픽셀 블록에 대해서 사용된다. 그러나, 코히런트 영역 내에 있는 적어도 하나의 픽셀 블록에 대해, 검색 윈도우는 대신 코히런트 영역의 거리 벡터를 중심으로 할 수 있다. 이러한 방식에 있어서, 블록 매칭은 코히런트 영역에 있는 적어도 하나의 픽셀 블록에 대한 거리 벡터에 대응되는 움직임 벡터를 찾는 것으로 끝날 가능성이 더 높을 것이다.
검색 윈도우의 상기 위치 결정은 또한 움직임 벡터 인코딩 코스트 계산을 구현하기 위해서 편리하게 사용될 수 있다. 구체적으로, 상기 매칭 픽셀 블록의 상기 움직임 벡터를 인코딩하기 위한 코스트는 상기 움직임 벡터 검색 윈도우가 중심으로 하는 벡터를 기준으로 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산될 수 있다. 코히런트 영역 내의 적어도 하나의 픽셀 블록에 대해, 검색 윈도우는 코히런트 영역의 거리 벡터를 중심으로 하고, 따라서 움직임 벡터를 인코딩하기 위한 코스트는 코히런트 영역의 거리 벡터를 중심으로 이러한 블록에 대해서 계산될 것이다. 이는 검색 윈도우가 이미지 내의 주변 픽셀 블록의 움직임 벡터를 중심으로 하는 이미지 내의 다른 픽셀 블록과 대조적이고, 결과적으로 움직임 벡터를 인코딩하기 위한 코스트는 주변 픽셀 블록의 움직임 벡터를 중심으로 계산된다.
상기 비디오 시퀀스는 이동 가능한 시야(Field-of-view)를 갖는 카메라에 의해 캡처될 수 있고, 상기 비디오 시퀀스 내의 움직임을 분석하는 단계는 상기 시야의 움직임에 관한 상기 카메라로부터의 입력을 기반으로 한다. 예를 들어, 카메라는 팬 및 틸트 기능을 구비하는 카메라 일 수 있다. 전체 시야의 움직임이 이미지에 전체적인 움직임을 도입하기 때문에, 이미지 내의 코히런트 영역은 이 경우 전체 이미지로 식별될 수 있고, 거리 벡터는 이전에 인코딩된 이미지 이후 이미지에서 전체적인 이동의 양과 방향에 대응된다. 시야의 움직임이 알려지면 이 전체적인 이동이 유도될 수 있다.
상기 비디오 시퀀스에서 움직임을 분석하는 단계는 객체 검출 알고리즘을 사용하여 상기 비디오 시퀀스에서 객체 및 이의 움직임을 검출하는 단계를 포함할 수 있다. 예를 들어, 딥 러닝 기술에 기반한 객체 감지 알고리즘이 이러한 목적을 위해 사용될 수 있다.
상기 이미지 내에서 상기 코히런트 영역의 크기는 상기 코히런트 영역의 상기 거리 벡터의 길이에 의존하는 임계값보다 더 길 수 있다. 이러한 방식에 있어서, 코히런트 영역 내의 적어도 하나의 픽셀 블록에 대한 긴 움직임 벡터를 인코딩하는 데 소요되는 추가 코스트는 코히런트 영역의 나머지 픽셀 블록에 대해 적은 인코딩 코스트를 얻음으로써 얻어지는 것과 균형을 이룰 수 있다. 추가 인코딩 코스트가 거리 벡터의 길이에 따라 증가됨에 따라, 상기 방법이 효과를 갖기 위해서 더 긴 거리 벡터에 대해 더 큰 코히런트 영역이 필요할 수 있다. 따라서 영역 크기 임계값은 거리 벡터의 길이에 따라 증가될 수 있다.
상기 방법은 이미지 내에 둘 이상의 코히런트 영역이 있는 경우에도 확장된다. 구체적으로, 상기 방법은:
상기 비디오 시퀀스에서 이전에 인코딩된 이미지 이후 임계값보다 더 긴 제2 거리 벡터로 이동된 상기 이미지 내의 제2 코히런트 영역을 식별하도록 상기 비디오 시퀀스 내의 움직임을 분석하는 단계를 더 포함하되,
상기 제2 코히런트 영역에 있는 적어도 하나의 픽셀 블록에 대해, 상기 움직임 벡터를 인코딩하기 위한 코스트는, 상기 이미지 내에서 주변 픽셀 블록의 움직임 벡터를 기준으로 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산되는 대신에, 상기 제2 코히런트 영역의 상기 제2 거리 벡터를 기준으로 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산된다.
제2 양태에 따르면, 비디오 시퀀스의 이미지를 인코딩하기 위한 시스템이 제공되며, 이 시스템은:
상기 비디오 시퀀스에서 이전에 인코딩된 이미지 이후 임계값보다 더 긴 거리 벡터로 이동된 상기 이미지 내의 코히런트 영역을 식별하게끔 상기 비디오 시퀀스 내의 움직임을 분석하도록 구성된 분석기, 및
상기 이미지 내의 픽셀 블록을 인코딩하도록 구성된 인코더를 포함하되,
상기 이미지 내의 픽셀 블록을 인코딩하도록 구성된 상기 인코더는, 각각의 픽셀 블록에 대해서:
블록 매칭을 수행하여, 참조 이미지 내에서 매칭 픽셀 블록을 가리키는 움직임 벡터를 찾고, 상기 픽셀 블록과 상기 매칭 픽셀 블록 사이의 잔차(Residual)를 계산하고,
상기 움직임 벡터를 인코딩하기 위한 코스트 - 상기 움직임 벡터를 인코딩하기 위한 상기 코스트는, 상기 코히런트 영역 내에 있는 적어도 하나의 픽셀 블록에 대해, 상기 이미지 내에서 주변 픽셀 블록의 움직임 벡터에 관한 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산되는 대신에, 상기 코히런트 영역의 상기 거리 벡터에 관한 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산됨 - 및 상기 잔차를 인코딩하기 위한 코스트를 계산하고,
상기 움직임 벡터를 인코딩하기 위한 상기 코스트와 상기 잔차를 인코딩하기 위한 상기 코스트가, 결합되었을 때 상기 픽셀 블록을 인트라-코딩(Intra-coding)하기 위한 코스트보다 작은 경우에, 인터-코딩된(Inter-coded) 블록으로서 상기 픽셀 블록을 인코딩한다.
제3 양태에 따르면, 프로세서에 의해 실행될 때 상기 프로세서가 제1 양태의 방법을 수행하게끔 하는 컴퓨터 코드 인스트럭션(Instruction)이 저장된 비일시적 (Non-transitory) 컴퓨터 판독가능 매체가 제공된다.
제2 및 제3 양태는 일반적으로 제1 양태와 동일한 특징 및 장점을 가질 수 있다. 본 발명은 달리 명시적으로 언급되지 않는 한, 특징부의 모든 가능한 조합에 관한 것이라는 점에 또한 주의한다.
본 발명의 추가적인 목적, 특징 및 장점뿐만 아니라 상기 내용은 첨부된 도면을 참조하여 본 발명의 실시예에 대한 다음의 예시적이고 비제한적인 상세한 설명을 통해 더 잘 이해될 것이며, 도면에서, 유사한 요소에는 동일한 참조 번호가 사용될 것이다.
도 1은 실시예에 따른 비디오 시퀀스의 이미지를 인코딩하기 위한 시스템을 개략적으로 도해한다.
도 2는 실시예에 따른 비디오 시퀀스의 이미지를 인코딩하기 위한 방법의 흐름도이다.
도 3 및 도 4는 각각 도 1에 도시된 시스템의 분석기에 의해 비디오 시퀀스의 이미지에서 식별된 코히런트(Coherent) 영역 및 연관된 거리 벡터를 개략적으로 도해한다.
도 5는 이미지에서 제1 형상의 코히런트 영역 내부 및 외부의 픽셀 블록을 개략적으로 도해한다.
도 6은 이미지에서 제2 형상의 코히런트 영역 내부 및 외부의 픽셀 블록을 개략적으로 도해한다.
도 7은 실시예에 따른 이미지 내의 픽셀 블록의 움직임 벡터에 대한 정규 코스트 계산을 개략적으로 도해한다.
도 8은 실시예에 따른 이미지 내의 픽셀 블록의 움직임 벡터에 대한 수정된 코스트 계산을 개략적으로 도해한다.
도 9는 실시예에 따른 비디오 시퀀스의 이미지를 인코딩하기 위한 방법의 흐름도이다.
도 10 및 도 11은 실시예에 따른 블록 매칭 및 움직임 벡터 코스트 계산을 수행하는 것과 관련하여 사용되는 움직임 벡터 검색 윈도우를 도해한다.
본 발명은 이제, 본 발명의 실시예가 도시되는 첨부 도면을 참조하여, 이하에서 더욱 충분히 설명될 것이다.
도 1은 비디오 시퀀스(106)를 인코딩하기 위한 시스템(100)을 도해한다. 시스템은 분석기(102) 및 인코더(104)를 포함한다. 시스템(100)은 비디오 시퀀스(106)를 캡처하는 비디오 카메라에서 구현될 수 있다. 비디오 카메라는 팬-틸트-줌 카메라와 같은 이동 가능한 시야(Field-of-view)를 갖는 비디오 카메라일 수 있다.
인코더(104)는 비디오 시퀀스(106)를 수신하고 이를 인코딩하여 인코딩된 비디오 시퀀스(110)를 출력하도록 구성된다. 인코더(104)의 일반적인 목적은 비디오 시퀀스(106)를 가능한 한 효율적으로, 즉, 비디오의 품질을 희생하지 않고 가능한 한 적은 비트(Bit)를 사용하여 인코딩하는 것이다.
이러한 목적을 달성하기 위해, 인코더(104)는 분석기(102)로부터의 입력(108)을 더 수신한다. 입력(108)은 비디오 시퀀스(108)의 이미지 각각에 대해, 이미지의 하나 이상의 코히런트(Coherent) 영역 및 코히런트 영역 각각에 대한 거리 벡터를 나타낼 수 있다. 거리 벡터는 비디오 시퀀스(106)에서 이전에 인코딩된 이미지 이후로 코히런트 영역이 이동된 방향과 거리를 알려준다. 임계 거리가 설정될 수 있어, 임계 거리보다 더 긴 거리 벡터와 연관된 코히런트 영역만이 인코더(104)로 보내지는 입력(108)에 포함된다. 또한, 크기 임계값이 설정될 수 있어, 코히런트 영역이 크기 임계값보다 큰 경우에 단지 입력(108)에 포함된다. 크기 임계값은 미리 정해진 관계에 따라 코히런트 영역의 거리 벡터의 길이에 따라 달라질 수 있다. 일반적으로, 크기 임계값은 거리 벡터의 길이가 증가함에 따라 증가된다.
추가 입력(108)을 사용함으로써, 인코더(104)는 이러한 코히런트 영역이 있는 이미지를 보다 효율적으로 인코딩할 수 있다. 이것은 이제 비디오 시퀀스(106)에서 이미지를 인코딩할 때 시스템(100)의 동작을 예시하는 도 2의 흐름도를 참조하여 더 상세히 설명될 것이다.
단계(S102)에서, 분석기(102)는 비디오 시퀀스(106)의 움직임을 분석한다. 특히, 분석기(102)는 비디오 시퀀스(106)의 이미지에서 객체를 검출하고 객체가 프레임들 사이에서 어떻게 이동하는지 분석할 수 있다. 이를 위해, 분석기(102)는 임의의 알려진 객체 검출 알고리즘 또는 객체 추적 알고리즘을 구현할 수 있다. 예를 들어, 분석기(102)는 이러한 객체 검출 및/또는 객체 추적 알고리즘을 구현하는 딥 러닝 네트워크(Deep Learning Network)를 포함할 수 있다. 이 프로세스를 더 예시하기 위해, 도 3은 비디오 시퀀스(106)의 세 개의 연속 이미지(106-1, 106-2, 106-3)를 도시하며, 이미지 각각에서 분석기(102)가 객체(302)를 검출하였다. 검출된 객체(302)는 세 개의 이미지(106-1, 106-2, 106-3)에서 각각 302-1, 302-2, 302-3으로 표시된다. 객체(302)는, 픽셀이 두 개의 연속된 이미지들 사이에서 대략 동일한 양 만큼 그리고 동일한 방향으로 이동된, 이미지 내의 코히런트 영역으로서 보일 수 있다. 객체(302)가 검출되면, 분석기(102)는 이미지들(106-1,106-2,106-3) 사이의 움직임을 찾을 수 있다. 구체적으로, 분석기(102)는 이전에 인코딩된 이미지 이후 객체(302)가 어느 방향으로 얼마나 멀리 이동되었는지 찾을 수 있다. 이 예시에서는, 이전에 인코딩된 이미지가 비디오 시퀀스의 이전 이미지에 대응된다고 가정된다. 이것은 P-타입 코딩에 대한 경우일 것이다. B-타입 코딩의 경우, 이전에 인코딩된 이미지는 대신에 비디오 시퀀스에서 미래 프레임이다. 예를 들어, 분석기(102)는 이전에 인코딩된 이미지(106-1)에서 객체(302-1)의 위치와 현재 이미지(106-2)에서 객체(302-2)의 위치 사이의 차이를 계산할 수 있다. 그 차이는 거리 벡터(304-2)로 표현될 수 있다. 이 계산을 위해, 객체(302-1 및 302-2)의 중심이 객체의 위치로 사용될 수 있다. 도시된 바와 같이, 거리 벡터(304-2)는 이전에 인코딩된 이미지(106-1)에서 코히런트 영역의 위치를 다시 가리킨다. 도해를 위해, 이전에 인코딩된 이미지(106-1)에서 객체(302-1)의 위치는 파선을 사용하여 이미지(106-2)로 도시된다. 유사한 방식으로, 거리 벡터(304-3)가 시퀀스의 이미지(106-3)에 대해 계산될 수 있다.
비디오 시퀀스(106)가 이동 가능한 시야를 갖는 비디오 카메라에 의해 캡처되는 경우, 분석기(102)는 추가적으로 또는 대안적으로 비디오 카메라의 움직임에 기초하여 비디오 시퀀스(106)의 움직임을 분석할 수 있다. 이를 위해, 분석기(102)는 카메라 시야의 움직임에 관한 입력(112)을 카메라로부터 수신할 수 있다. 입력(112)은 예를 들어, 카메라의 팬(Pan) 및 틸트(Tilt) 움직임에 관한 것일 수 있다. 시야의 움직임은 비디오 시퀀스(106)의 이미지에 전체적인 이동을 도입한다. 분석기(102)는 입력(112)에 의해 표현된 바와 같은 카메라 이동으로부터 이미지의 전체적인 이동을 계산하고 이를 거리 벡터의 관점에서 표현할 수 있다. 따라서, 이 경우 분석기(102)는 전체 이미지를 대략적으로 동일한 방향으로 동일한 양의 이동을 갖는 코히런트 영역으로 식별할 수 있다.
이것은 비디오 시퀀스(106)의 세 개의 연속적인 이미지(106-4, 106-5, 106-6)를 도시하는 도 4에서 더 도해된다. 이 예시에서, 카메라의 시야가 오른쪽 방향으로 패닝(Panning)된다고 가정된다. 이것은 이미지(106-4, 106-5, 106-6)에서 왼쪽으로 전체적인 이동을 도입한다. 따라서, 이미지 각각에 대해, 전체 이미지는 두 이미지 사이에서 동일한 방식으로 이동되는 코히런트 영역으로 보일 수 있다. 분석기(102)는 거리 벡터(404-1, 404-2, 404-3)의 관점에서 코히런트 영역의 전체적인 이동을 나타낼 수 있다. 도 3의 예시와 유사하게, 거리 벡터(404-1, 404-2, 404-3)는 이전에 인코딩된 이미지에서의 코히런트 영역의 위치와 현재 이미지에서의 코히런트 영역의 위치 간의 차이로서 계산될 수 있다. 따라서, 거리 벡터는 이전에 인코딩된 이미지에서 코히런트 영역의 위치를 다시 가리킨다.
분석기(102)는 이미지에서 하나 이상의 코히런트 영역 및 연관된 거리 벡터를 식별할 때, 입력(108)으로서 이 정보를 인코더(104)에 제공할 수 있다.
인코더(104)는 다음으로 계속해서 이미지 인코딩을 할 수 있다. 일반적으로, 인코더(104)는 이미지를 때때로 I-프레임으로 알려진 인트라-코딩된(Intra-coded) 이미지로서, 또는 때때로 P-프레임 또는 B-프레임으로 알려진 인터-코딩된(Inter-coded) 이미지로서 인코딩할 수 있다. 이미지를 인트라-코딩할지 또는 인터-코딩할지 여부는, 비디오 시퀀스(106)에서 인트라-코딩된 이미지 및 인터-코딩된 이미지의 순서를 지정하면서, 픽쳐 그룹(GOP: Group-of-Pictures) 구조에 의해 지정될 수 있다. 본 경우, 이미지가 인터-코딩되는 것으로 가정된다.
인코더(104)는 이미지를 블록 단위로 인코딩한다. 특히, 이미지는 8x8 픽셀 블록, 16x16 픽셀 블록, 32x32 픽셀 블록과 같이 특정 크기의 픽셀 블록으로 나뉘어 차례로 인코딩된다. 이러한 픽셀 블록은 또한 본 기술분야에 매크로블록(Macroblock) 또는 코딩 단위로서 알려져 있다. 인코더(104)는 기결정된 순서로 이러한 픽셀 블록들을 인코딩할 수 있다. 기결정된 순서는 일반적으로 래스터 스캔 방향에 대응된다.
따라서 단계(S104)에서, 인코더(104)는 인코딩될 이미지에 또 다른 픽셀 블록이 있는지 여부를 체크한다. 그렇다면, 인코더(104)는 처리될 다음 블록에 대해 단계(S106), 단계(S107), 단계(S108a) 또는 단계(S108b), 단계(S110), 단계(S112)를 수행한다. 그렇지 않으면, 이 방법은 종료되고, 시스템(100)은 계속해서 비디오 시퀀스(106)에서 다음 이미지를 분석하고 인코딩할 것이다.
이미지를 인터-코딩할 때, 일부 블록은 인터-코딩되고 다른 블록은 인터-코딩될 수 있다. 구체적으로, 좀 더 상세히 설명되는 바와 같이, 인코더(104)는 각 블록에 대해 각 블록이 인트라-코딩되어야 하는지 또는 인터-코딩되어야 하는지 여부를 결정한다. 이 결정은, 예를 들어, 블록을 인코딩하는 데 필요한 비트 수로 표현되는 것과 같은, 블록을 인코딩하기 위한 코스트(Cost)를 최소화하기 위해 이루어진다. 간단히 말해서, 단계(S106), 단계(S107), 단계(S108a) 또는 단계(S108b), 및 단계(S110)에서 인코더(104)는 픽셀 블록을 인터-코딩하기 위한 코스트를 계산하고, 단계(S112)에서 인코더는 픽셀 블록을 인터-코딩할지 또는 인트라-코딩할지에 대한 결정을 내린다.
단계(S106)에서, 인코더(104)는 참조 프레임에서 "최상의" 매칭 픽셀 블록을 찾는 것을 목표로하는 블록 매칭 절차를 시작한다. 참조 프레임은 전형적으로 비디오 시퀀스(106)에서 이전에 인코딩된 이미지의 인코딩되고 후속적으로 디코딩된 버전에 대응한다. 구체적으로, 인코더(104)는 참조 이미지 내에서 최상의 매칭을 제공하는 픽셀 블록을 찾기 위해 현재 처리되는 이미지에서의 픽셀 블록을 참조 이미지에서의 복수의 후보 픽셀 블록에 매칭할 수 있다. 참조 프레임 내의 후보 픽셀 블록은 참조 프레임 내의 검색 윈도우에 포함될 수 있다. 참조 프레임 내 후보 픽셀 블록 각각에 대해, 인코더(104)는 움직임 벡터 및 잔차(Residual) 즉, 블록들 간의 픽셀 단위 차이를 계산할 수 있다.
두 개의 블록 사이에서 양호한 매칭을 구성하는 것을 평가하기 위해, 인코더(104)는 일반적으로 코스트 함수를 사용한다. 참조 이미지 내에서 코스트 함수를 최소화하는 후보 픽셀 블록이 최상의 매칭으로서 선택된다. 인코더(104)는 움직임 벡터를 인코딩하기 위한 코스트와 후보 픽셀 블록의 잔차를 인코딩하기 위한 코스트의 조합인 코스트 함수를 사용할 수 있다. 본 발명의 개념에 따르면, 움직임 벡터를 인코딩하기 위한 코스트를 계산하는 두 가지 다른 접근법(본원에서 수정된 코스트 계산 및 정규 코스트 계산이라 함)이 이미지 내 상이한 픽셀 블록들에 대해 사용된다.
단계(S107)에서, 인코더(104)는 단계(S106)에서 찾은 움직임 벡터를 인코딩하기 위한 코스트를 계산하기 위해 수정된 코스트 계산 또는 정규 코스트 계산이 사용되어야 하는지 여부를 체크한다. 이미지 내 대부분의 픽셀 블록에 대해 정규 코스트 계산이 적용된다. 그러나, 각각의 코히런트 영역 내 적어도 하나의 픽셀 블록에 대해, 수정된 코스트 계산이 사용된다.
이러한 체크를 수행하기 위해, 인코더(104)는 블록이 정규 코스트 계산 또는 수정된 코스트 계산을 따라야 하는 시기에 대한 규칙 세트를 가질 수 있다. 이러한 규칙은 실시예의 상이한 그룹에 대해 달라질 수 있다. 규칙은 정규 코스트 계산이 수행되는 방법과 관련될 수도 있다.
실시예의 제1 그룹에서, 인코더(104)는 단계(S107)에서, 현재 처리되는 블록이 인코딩될 코히런트 영역 내의 제1 블록인지 여부를 체크한다. 이 원리는 인코딩될 이미지(506)를 개략적으로 도해하는 도 5에서 예시된다. 이미지(506)는 복수의 픽셀 블록(501)을 포함한다. 또한, 음영 영역에 의해 도해되는 바와 같이 이미지 내에 코히런트 영역(502)이 있다. 블록들(501) 중 일부는 코히런트 영역(502) 외부에 있고, 다른 블록은 코히런트 영역(502) 내에 있다. 일반적으로, 블록 내 모든 픽셀이 코히런트 영역(502) 내에 있으면 픽셀 블록이 코히런트 영역(502) 내에 있다고 할 수 있다. 대안적으로, 블록 내 픽셀의 대부분이 코히런트 영역(502) 내에 있으면 픽셀 블록이 코히런트 영역(502) 내에 있다고 할 수 있다. 이미지(506)의 픽셀 블록(501)은 화살표(504)에 의해서 표시된 바와 같이 기결정된 순서로 인코딩될 수 있다. 이 경우 블록(501)은 래스터 스캔 방향으로 인코딩된다. 이 순서로 블록들을 인코딩할 때, 픽셀 블록(501a)은 코히런트 영역(502) 내에서 인코딩될 첫 번째 블록이 될 것이다. 따라서, 이 예시에서, 인코더(104)는 픽셀 블록(501a)에 대해 수정된 코스트 계산을 사용하는 반면, 다른 모든 픽셀 블록에 대해 정규 코스트 계산을 사용할 것이다. 이 예시에서는, 단지 하나의 코히런트 영역이 표시된다. 그러나, 이미지 내에 하나 이상의 코히런트 영역이 있다면, 인코더(104)는 수정된 코스트 계산을 각각의 코히런트 영역 내 첫 번째로 인코딩되는 블록에 적용하고, 정규 코스트 계산을 이미지 내 다른 모든 픽셀 블록에 적용할 것임이 이해되어야 한다.
실시예의 제2 그룹에서, 인코더(104)는 단계(S107)에서, 현재 처리되는 블록이 코히런트 영역 내에 있고 이 코히런트 영역 내에 이전에 인코딩된 주변 픽셀 블록이 없는지 여부를 체크한다. 일반적으로, 픽셀 블록은 이미지에서 최대 아홉 개의 주변 픽셀 블록을 가질 수 있다. 이러한 블록들 중 일부는 코히런트 영역 내에 있을 수 있고, 일부는 코히런트 영역 밖에 있을 수 있다. 또한, 주변 블록 중 일부는 이미 인코딩되었을 수 있지만 다른 블록은 인코딩될 상태로 남아 있을 수 있다.
다시, 도 5를 참조하면, 픽셀 블록(501a)은 아홉 개의 주변 픽셀 블록을 갖는다. 이들 중 네 개(위에 세 개, 왼쪽에 한 개)가 블록(501a) 전에 인코딩된다. 그러나, 이러한 이전에 인코딩된 블록 중 어느 것도 코히런트 영역 내에 있지 않다. 따라서, 픽셀 블록(501a)은 영역(502) 내에 이전에 인코딩된 주변 픽셀 블록이 없다. 따라서 인코더(104)는 수정된 코스트 계산을 픽셀 블록(501a)에 적용할 것이다. 그러나, 블록 501b의 경우 상황이 다르다. 블록(501b)은 또한 이전에 인코딩된 네 개의 주변 픽셀 블록(위에 세 개, 왼쪽에 한 개)을 갖는다. 이들 중 하나, 즉 블록(501a)은 코히런트 영역(502) 내에 있다. 따라서, 인코더(104)는 수정된 코스트 계산을 블록(501b)에 적용하지 않을 것이다. 이 연습이 이미지(506) 내 블록 각각에 대해 수행되면, 이 경우에도 수정된 코스트 계산이 픽셀 블록(501a)에만 적용된다는 점을 알 수 있다.
그러나, 코히런트 영역의 형상에 따라, 실시예의 제1 그룹 및 제2 그룹은 항상 동일한 결과를 제공하지 않을 것이다. 이러한 예시는 도 6에 도해되어 있으며, 복수의 픽셀 블록(601) 및 코히런트 영역(602)을 갖는 이미지(606)를 도시한다. 이 경우, 실시예의 제1 그룹은 수정된 코스트 계산을 픽셀 블록(601a)에만 적용할 수 있는데, 이는 이것이 코히런트 영역(602) 내에 첫 번째로 인코딩되는 블록이기 때문이다. 그런데, 실시예의 제2 그룹은 블록(601a)뿐만 아니라, 코히런트 영역(602) 내에 이전에 인코딩된 주변 블록을 갖지 않기 때문에 수정된 코스트 계산을 픽셀 블록(601b)에도 적용할 것이다. 따라서 실시예의 제2 그룹은 코히런트 영역의 형상에 관해서 더 유연하다.
실시예의 제3 그룹에서, 인코더(104)는 단계(S107)에서, 현재 처리되는 블록이 코히런트 영역 내에 있고 이 코히런트 영역 내에 이전에 인코딩된 주변 픽셀 블록을 한 개 이하로 갖는지 여부를 체크한다. 이 규칙을 만족하는 블록에 대해, 인코더(104)는 수정된 코스트 계산을 적용할 것이고, 정규 코스트 계산은 나머지 블록에 적용될 것이다. 이 규칙이 도 5의 예시에 적용되면, 블록(501a, 501b, 501c)은 이 영역 내에 이전에 인코딩된 주변 블록을 갖지 않거나 단지 하나만 갖기 때문에 모두 규칙을 만족하는 것으로 밝혀졌다. 도 6의 예시에서, 블록(601a 및 601b)은 이 규칙을 만족하므로, 수정된 코스트 계산의 대상이 될 것이다.
실시예의 제4 그룹에서, 인코더(104)는 단계(S107)에서, 현재 처리되는 블록이 코히런트 영역(502) 내에 있는지 여부를 체크한다. 이 규칙을 만족하는 블록에 대해, 인코더(104)는 수정된 코스트 계산을 적용할 것이다. 코히런트 영역 외부의 블록에 대해, 인코더(104)는 정규 코스트 계산을 적용할 것이다. 실시예의 제4 그룹에서, 인코더(104)는 따라서 수정된 코스트 계산을 코히런트 영역(502) 내의 모든 블록에 적용할 것이다.
후술되는 바와 같이, 이러한 상이한 실시예의 그룹은 상이한 상황에서 유리하다. 예를 들어, H.265/HEVC 코딩은 일반적으로 이전에 인코딩된 주변 블록 중 어느 하나의 움직임 벡터와 관련하여 블록의 움직임 벡터를 코딩하기 때문에, 실시예의 제2 그룹은 일반적으로 인코더(104)가 H.265/HEVC 코딩을 사용하여 픽셀 블록을 인터-코딩하도록 구성될 때 적용된다. 따라서 이 영역 내의 각 블록은 수정된 코스트 계산이 적용된 이 영역에서 이전에 인코딩된 하나의 주변 블록을 갖는 것으로 충분하다. 유사하게, H.264/MPEG-4 AVC 코딩은 일반적으로 이전에 인코딩된 주변 블록 중 세 개의 움직임 벡터의 중앙값과 관련하여 움직임 벡터를 코딩하기 때문에, 실시예의 제3 그룹은 일반적으로 인코더(104)가 H.264/MPEG-4 AVC 코딩을 사용하여 픽셀 블록을 인터-코딩하도록 구성될 때 적용된다. 따라서 이 영역 내의 각 블록은 수정된 코스트 계산이 적용된 이 영역에서 이전에 인코딩된 두 개의 주변 블록을 갖는 것으로 충분하다. 실시예의 제4 그룹은 인코더(104)에 의해 사용되는 인코딩 표준에 관계없이 적용될 수 있다는 점에서 유리하다. 이것은, 수정된 코스트 계산이 적용되는 블록의 선택은 인코더(104)가 이전에 인코딩된 주변 블록의 움직임 벡터를 선택하는 방법과 관련이 없기 때문이다. 실시예의 제1 그룹은 어느 블록이 수정된 코스트 계산을 사용하여 처리되어야 하는지를 결정하는 것에 관한 한 실시예의 제2 그룹의 단순화로 볼 수 있다.
인코더(104)가 단계(S107)에서 수정된 코스트 계산이 현재 처리되는 픽셀 블록에 적용되지 않음을 발견하면, 인코더는 단계(S108a)로 진행되고, 정규 방식으로 참조 이미지에서 후보 픽셀 블록 각각의 움직임 벡터를 인코딩하기 위한 코스트를 계산한다. 보다 구체적으로, 움직임 벡터를 인코딩하기 위한 코스트는 이미지 내의 주변 픽셀 블록의 움직임 벡터에 대한 움직임 벡터를 인코딩하기 위한 코스트로서 계산된다. 구체적으로, 주변 픽셀 블록은 이전에 인코딩된 주변 픽셀 블록일 수 있다.
이 절차는 도 5의 예시의 연속인 도 7에서 더 설명된다. 단계(S107)에서, 인코더(104)는 정규 코스트 계산이 픽셀 블록(501d)의 후보 움직임 벡터(708a)에 적용되어야 한다고 결정했다(실시예의 세 개의 그룹 각각에서). 코스트 계산을 수행하기 위해, 움직임 벡터(708a)는 이전에 인코딩된 주변 픽셀 블록의 움직임 벡터(710)와 비교되고, 이들 두 벡터 간의 차이를 인코딩하기 위한 코스트가 계산된다. 예를 들어, 차이를 인코딩하기 위한 코스트는 차이의 길이와 동일(또는 비례)하게 설정될 수 있으며, 이 예시에서는 한 블록의 길이와 동일하다. 따라서, 인코더(104)는 블록(501d)의 후보 움직임 벡터(708a)를 인코딩하기 위한 코스트가 1과 같다는 결론에 도달될 수 있다. 후보 움직임 벡터(708b 또는 708c)의 경우, 움직임 벡터를 인코딩하기 위한 코스트는 대신 각각 두 개와 세 개였다(맨해튼 타입(Manhattan-type)의 거리 계산이 사용된다고 가정). 따라서, 정규 코스트 계산이 적용될 때, 인코더(104)는 주변 블록의 움직임 벡터와 유사한 움직임 벡터를 인코딩하는 것이 저렴하다는 것을 발견한다.
이미지에서 주변 픽셀 블록의 움직임 벡터를 선택하는 방법은 실시예의 상이한 그룹에서 다르다.
실시예의 제2 그룹에서, 이전에 인코딩된 주변 픽셀 블록들 중 어느 하나의 움직임 벡터가 선택될 수 있다. 특히, 현재 처리되는 픽셀 블록의 움직임 벡터와 가장 유사한 주변 움직임 벡터가 선택될 수 있다. 이 접근법은 인코더(104)가 H.265/HEVC 표준을 따르는 인터-코딩을 수행하도록 배열될 때 일반적으로 사용된다.
실시예의 제3 그룹에서, 주변 픽셀 블록의 움직임 벡터는 대신 이전에 인코딩된 다수의 주변 픽셀 블록의 움직임 벡터의 중앙값에 대응한다. 움직임 벡터의 중앙값은 움직임 벡터들에서 각 요소에 대한 중앙값을 계산하여 계산된다. 중앙값의 계산을 단순화하기 위해, 홀수의 이전에 인코딩된 주변 블록들의 움직임 벡터들의 중앙값이 선택될 수 있다. 일반적으로, 홀수는 3과 같을 수 있다. 예를 들어, 블록이 래스터 스캔 방향으로 인코딩될 때, 상부 주변 블록, 우측 상부 주변 블록 및 좌측 주변 블록의 움직임 벡터들의 중앙값이 사용될 수 있다. 주변 픽셀 블록의 움직임 벡터를 선택하는 이러한 방식은 일반적으로 인코더(104)가 H.264/MPEG-4 AVC 표준을 따르는 인터-코딩을 수행하도록 배열될 때 사용된다.
실시예의 제1 그룹에서, 이전에 인코딩된 주변 블록의 움직임 벡터는 실시예의 제2 그룹 및 제3 그룹 중 어느 하나의 방식으로 선택될 수 있다. 그러나, 바람직하게는 이것은 실시예의 제2 그룹에서와 같이 선택된다.
실시예의 제4 그룹은 이전에 인코딩된 주변 블록의 움직임 벡터가 어떻게 선택되는지에 대해 유연하다. 예를 들어, 이전에 인코딩된 주변 픽셀 블록의 움직임 벡터는 실시예의 제2 그룹에서와 같이 (H.265/HEVC 인코딩에서와 같이) 또는 실시예의 제3 그룹에서와 같이 (H.264에서와 같이), 또는 사용 중인 인코딩 표준에 규정된 대로 선택될 수 있다.
인코더(104)가 단계(S107)에서 수정된 코스트 계산이 현재 처리되는 픽셀 블록에 적용되는 것을 대신 발견하면, 인코더는 단계(S108b)로 진행되어 단계(S106)에서 발견된 각각의 후보 움직임 벡터를 수정된 방식으로 인코딩하기 위한 코스트를 계산한다. 좀 더 구체적으로, 이전에 인코딩된 주변 블록의 움직임 벡터에 대한 블록의 움직임 벡터를 인코딩하기 위한 코스트를 계산하는 대신, 코스트는 코히런트 영역의 거리 벡터를 기준으로 평가된다.
이것은 도 5 및 도 7의 예시를 계속하는 도 8에서 더 설명된다. 단계(S107)에서, 인코더(104)는 블록(501a)의 후보 움직임 벡터(808)에 대해 수정된 코스트 계산을 사용하기로 결정했다(실시예의 4개 그룹 각각에서). 코스트 계산을 수행하기 위해, 인코더(104)는 단계(S106)에서 블록(510a)에 대해 계산된 후보 움직임 벡터(808)를 코히런트 영역(502)의 거리 벡터(504)와 비교하고, 이들 두 벡터 간의 차이를 인코딩하기 위한 코스트를 계산한다. 정규 코스트 계산에 대해 설명된 것과 유사하게, 차이를 인코딩하기 위한 코스트는 이 예시에서, 한 블록의 길이와 동일한 차이의 길이와 동일(또는 비례)하게 설정될 수 있다. 따라서, 수정된 코스트 계산이 적용될 때, 인코더(104)는 거리 벡터(504)와 유사한 움직임 벡터를 인코딩하는 것이 저렴하다는 점을 발견한다.
도 8의 예시를 한 단계 더 나아가면, 블록(501b)에 대한 코스트 계산에서 일어날 일이 고려될 수 있다. 실시예의 제1 그룹 및 제2 그룹에서, 인코더(104)는 블록(501b)에 대한 정규 코스트 계산을 사용할 것이다. 따라서 인코더(104)는 이전에 인코딩된 주변 블록의 움직임 벡터에 대한 블록(501b)의 움직임 벡터를 인코딩하기 위한 코스트를 계산할 것이다. 특히, 인코더는 블록(501a)의 움직임 벡터에 대한 블록(501b)의 움직임 벡터에 대한 코스트를 계산할 수 있다. 인코더(104)가 블록(501a)에 대해 수정된 코스트 계산을 사용했기 때문에, 인코더가 거리 벡터(504)와 유사한 움직임 벡터를 사용하여 블록(501a)을 인코딩했을 가능성이 있다. 따라서, 이 경우에, 또한 정규 코스트 계산은 거리 벡터(504)와 유사한 움직임 벡터에 낮은 코스트를 할당할 것이다. 코히런트 영역의 후속 블록에도 동일하게 적용될 것이다. 따라서, 블록(501b)의 경우, 수정된 코스트 계산 및 정규 코스트 계산은 블록(501b)에 대해 본질적으로 동일한 결과를 발생시킨다. 이것은 수정된 코스트 계산이 블록(501b) 및 코히런트 영역 내의 후속 블록에 적용될 필요가 없는 이유를 설명한다.
이것은 실시예의 제3 그룹에서 다르다. 이 경우, 인코더(104)는 블록(501b)에 대해서도 수정된 코스트 계산을 적용할 것이다. 따라서, 움직임 벡터에 대한 코스트는 블록(501b)에 대한 거리 벡터(504)에 대해 계산될 것이다. 따라서, 거리 벡터(504)와 유사한 움직임 벡터에 대해 낮은 코스트가 계산될 것이다. 이 경우, 이전에 인코딩된 인접 블록의 움직임 벡터의 상이한 선택 때문에 정규 코스트 계산은 상이한 결과를 제공했을 것이다. 좀 더 구체적으로, 실시예의 제3 그룹에서, 인코더(104)는 일반적으로 현재 블록의 움직임 벡터를 이전에 인코딩된 3개의 주변 블록의 움직임 벡터의 중앙값과 비교한다. 예를 들어, 중앙값은 블록(501b)의 상부 주변 블록, 우측 상부 주변 블록 및 좌측 주변 블록의 움직임 벡터로부터 계산될 수 있다. 이러한 블록들 중 하나, 즉 블록(501a)만이 거리 벡터(504)와 유사한 움직임 벡터를 갖기 때문에, 결과적인 중앙값 움직임 벡터는 거리 벡터(504)와는 상당히 상이할 가능성이 크다. 결과적으로, 정규 코스트 계산은 거리 벡터(504)와 유사한 움직임 벡터를 인코딩하기 위한 높은 코스트를 제공할 것이다.
또한, 실시예의 제4 그룹에서, 인코더(104)는 수정된 코스트 계산을 코히런트 영역(502) 내의 모든 블록에 적용할 것이다. 따라서, 코히런트 영역(502)의 픽셀 블록 각각에 대한 거리 벡터(504)와 유사한 움직임 벡터에 대해 낮은 코스트가 계산될 것이다.
단계(S110)에서, 인코더(104)는 현재 처리되는 픽셀 블록과 참조 이미지의 각각의 후보 픽셀 블록 사이의 잔차를 인코딩하기 위한 코스트를 계산한다. 예를 들어, 인코더(104)는 잔차의 크기를 정량화하는 측정값을 계산할 수 있다. 예를 들어, 절대 차이의 합, 차이 제곱의 합 또는 기타 유사한 측정값이 잔차를 정량화하기 위해서 사용될 수 있다.
단계(S111)에서, 인코더(104)는 다음으로 현재 처리되는 픽셀 블록에 대한 매칭 블록을 찾음으로써, 블록 매칭 절차를 마무리할 수 있다. 좀 더 구체적으로, 매칭되는 픽셀 블록은 움직임 벡터 및 잔차를 인코딩하기 위한 결합된 코스트를 최소화하는 참조 이미지 내의 후보 픽셀 블록이다. 예를 들어, 인코더(104)는 움직임 벡터를 인코딩하기 위한 코스트와 잔차를 인코딩하기 위한 코스트의 가중된 합을 형성함으로써 코스트들을 결합할 수 있다. 합의 가중치는 미리 정의될 수 있다. 상술된 실시예의 그룹들 중 임의의 것을 사용함으로써, 코히런트 영역(502) 내의 블록에 대한 매칭 픽셀 블록은 코히런트 영역의 거리 벡터(504)와 유사한 움직임 벡터와 연관될 가능성이 있다.
단계(S112)에서, 인코더(104)는 계속해서 현재 처리되는 픽셀 블록을 인터-코딩할지 또는 인트라-코딩 할지를 결정한다. 인코더(104)는 픽셀 블록을 인터-코딩하는 것 더 저렴한지 또는 인트라-코딩하는 것이 더 저렴한지에 기반하여 이 결정을 내린다. 인터-코딩하는 것이 더 저렴하다면, 인코더(104)는 블록을 인터-코딩할 것이고, 그렇지 않으면 블록은 인트라-코딩될 것이다. 블록을 인터-코딩하기 위한 코스트는 단계(S111)에서 결정된 매칭 픽셀 블록의 잔차 및 움직임 벡터를 인코딩하기 위한 결합된 코스트다. 인코더(104)는 블록을 인트라-코딩하기 위한 코스트를 더 계산할 수 있다. 인트라-코딩 코스트는 이력 데이터로부터 결정된 바와 같이 블록을 인트라-코딩하기 위한 평균 코스트에 대응할 수 있는 기정의된 값으로 주어질 수 있다.
인코더(104)가 블록을 인터-코딩하는 결정에 도달되면, 인코더는 계속해서 매칭 픽셀 블록에 대응되는 잔차 및 움직임 벡터를 인코딩할 것이다. 인코더는 움직임 벡터를 인코딩할 때, 이미지 내의 주변 픽셀 블록의 움직임 벡터를 기준으로 이를 인코딩할 것이다. 특히, 이는 블록의 움직임 벡터에 정규 코스트 계산, 즉, 단계(S108a)가 적용되었는지 또는 수정된 코스트 계산(S108b)이 적용되었는지 여부에 관계없이 적용된다. 실시예의 상이한 그룹에 대해 이미지 내 주변 픽셀 블록의 움직임 벡터가 계산되는 방법에 대해 상술된 내용이 참조된다.
도 7 및 도 8의 예시를 다시 참조하면, 인코더(104)가 인코딩 블록(501d)으로부터 블록(501a)으로 진행될 때 이미지 내에서 움직임 양에 큰 변화가 있다는 점에 주의한다. 인코더(104)가 블록(501a)을 처리할 때 정규 코스트 계산을 적용했다면, 인코더는 후보 움직임 벡터(108)를 인코딩하기 위한 코스트가 매우 높다는 점을 발견할 것이고, 그 결과 인코더는 후보 움직임 벡터(108)를 사용하여 블록(501a)을 인터-코딩하지 않을 것이다. 그러나, 상술된 실시예들 중 임의의 것을 사용하는 수정된 코스트 계산은 대신 블록(501a)을 처리할 때 사용된다. 그 결과, 인코더(104)는 대신 후보 움직임 벡터(108)가 거리 벡터(504)에 가깝기 때문에 이를 인코딩하는 것이 저렴하다는 점을 발견한다. 따라서 인코더(104)는 거리 벡터와 유사한 후보 움직임 벡터를 사용하여 블록(501a)을 인터-코딩하는 경향이 더 커질 것이다. 이 결정은 인코더(104)가 블록(501a)에 대한 추가 비트 코스트를 지불하게 하는데, 이는 실제로 움직임 벡터(108)가 인코딩되는 데 코스트가 많이 들기 때문이다. 그러나, 인코더(104)는 코히런트 영역(502) 내의 후속 블록 중 적어도 일부를 인코딩할 때 비트를 절약하기 때문에 이러한 추가 비트 코스트는 지불할 가치가 있을 수 있다. 이는 움직임 벡터의 인코딩이 이전 블록의 움직임 벡터와 관련하여 이루어지기 때문이다. 도 7 및 도 8의 예시에서, 비트 절약은 실시예의 제2 그룹에 있어서 다음 블록(501b)에서 이미 시작되는 한편, 실시예의 제3 그룹에 있어서, 추가 비트 코스트가 코히런트 영역(502)의 제1 행의 각 블록에 대해 발생되고, 비트 절약은 코히런트 영역(502) 내의 다음 행에서 블록을 처리할 때 시작된다.
상술된 바와 같이, 단계(S106)에서 시작되는 블록 매칭은 참조 이미지에서 매칭 블록을 검색할 때 움직임 벡터 검색 윈도우를 사용할 수 있다. 현재 처리되는 픽셀 블록의 위치와 관련하여 검색 윈도우의 위치 결정은 움직임 벡터 인코딩 코스트 계산을 구현하기 위해서 사용될 수 있다. 이러한 구현은 상술된 실시예의 제1 그룹, 제2 그룹, 제3 그룹 및 제4 그룹 중 어느 하나에 적용될 수 있다. 이것은 이제 도 9의 흐름도를 참조하여 더 설명될 것이다.
도 9의 접근법을 사용하기 위해, 수정된 코스트 계산이 현재 처리되는 픽셀 블록에 대해 사용되어야 하는지 여부를 체크하는 단계(S107)은 단계(S106)에서 시작되는 블록 매칭이 수행되기 전에 수행된다. 구체적으로, 인코더(104)는 현재 처리되는 블록의 위치와 관련하여 움직임 벡터 검색 윈도우의 위치를 결정하기 위해 단계(S107)의 체크 결과를 사용한다. 실시예의 제1 그룹, 제2 그룹, 제3 그룹 및 제4 그룹에 대한 단계(S107)에서 체크를 수행하는 방법은 위에서 설명되었다.
정규 코스트 계산이 사용되어야 하는 블록에 대해, 인코더(104)는 단계(S106a)에서, 이전에 인코딩된 주변 픽셀 블록의 움직임 벡터를 중심으로 하는 참조 이미지의 검색 윈도우를 사용하여 블록 매칭을 수행한다. 특히, 인코더(104)는 현재 처리되는 이미지 내의 픽셀 블록을 참조 이미지 내 검색 윈도우 내의 후보 픽셀 블록과 매칭할 수 있다. 이것은 인코더(104)가 블록(501d)에 대해 블록 매칭을 수행할 때 사용하는 검색 윈도우(1000)를 도시하는 도 10에서 더 도해된다. 이전에 인코딩된 주변 블록의 움직임 벡터(710)는 검색 윈도우의 중심을 블록(501d)의 위치와 관련시킨다. 실시예의 제1 그룹, 제2 그룹, 제3 그룹 및 제4 그룹에 대해 이전에 인코딩된 주변 픽셀 블록의 움직임 벡터를 선택하는 방법이 위에서 설명된다.
수정된 코스트 계산이 사용되어야 하는 블록에 대해, 인코더(104)는 대신 거리 벡터를 중심으로하는 참조 이미지의 검색 윈도우를 사용하여 블록 매칭을 수행한다. 이것은 인코더(104)가 블록(501a)에 대해 블록 매칭을 수행할 때 사용하는 검색 윈도우(1100)를 도시하는 도 11에서 더 도해된다. 거리 벡터(504)는 검색 윈도우의 중심을 블록(501d)의 위치와 관련시킨다. 이러한 검색 윈도우를 사용하는 것은 인코더(104)가 거리 벡터와 유사한 움직임 벡터를 찾을 가능성을 증가시킨다.
그 다음, 인코더(104)는 계속해서 단계(S108)에서, 단계(S106a) 및 단계(S106b) 중 어느 하나에서 발견된 후보 움직임 벡터의 움직임 벡터를 인코딩하기 위한 코스트를 계산한다. 구체적으로, 인코더(104)는 검색 윈도우가 중심에 있는 벡터를 기준으로 각각의 후보 움직임 벡터를 인코딩하기 위한 코스트를 계산한다. 따라서, 정규 코스트 계산이 적용되어야 하는 블록에 대해, 인코더(104)는 주변 픽셀 블록의 움직임 벡터를 기준으로 코스트를 계산한다(도 2의 단계(S108a) 참조). 수정된 코스트 계산이 적용되어야 하는 블록에 대해, 인코더(104)는 대신 거리 벡터를 기준으로 코스트를 계산한다(도 2의 단계(S108b) 참조).
위에서 이해되는 바와 같이, 분석기(102) 및 인코더(104)는 따라서 비디오 시퀀스의 이미지를 인코딩하기 위한 방법을 구현하도록 구성된다. 분석기(102) 및 인코더(104)는 각각 하드웨어로, 소프트웨어로 또는 이들의 조합으로 구현될 수 있다.
하드웨어 구현에서, 분석기(102) 및 인코더(104) 각각은 그 기능을 제공하도록 지정되고 특별히 구성된 회로에 대응할 수 있다. 회로는 하나 이상의 주문형 반도체(application specific integrated circuit) 또는 하나 이상의 필드 프로그래머블 게이트 어레이(field-programmable gate array)와 같은 하나 이상의 집적 회로의 형태일 수 있다. 예로서, 인코더(104)는 따라서 사용시 움직임 벡터를 인코딩하기 위한 코스트를 계산하는 회로를 포함할 수 있다.
소프트웨어 구현에서, 회로는 대신 마이크로 프로세서와 같은 프로세서의 형태일 수 있으며, 이 프로세서는 비휘발성 메모리와 같은 (비일시적) 컴퓨터 판독가능 매체에 저장된 컴퓨터 코드 인스트럭션(Instruction)과 관련하여, 분석기(102) 및 인코더(104)가 본원에 개시된 임의의 방법을 수행하게끔 한다. 비휘발성 메모리의 예시는 읽기 전용 메모리, 플래시 메모리, 강유전체 RAM, 자기 컴퓨터 저장 디바이스, 광 디스크 등을 포함한다. 소프트웨어의 경우, 분석기(102) 및 인코더(104)는 따라서 각각 컴퓨터 판독가능 매체에 저장된 컴퓨터 코드 인스트럭션의 일부에 대응될 수 있으며, 이 인스트럭션의 일부는 프로세서에 의해 실행될 때 시스템(100)이 분석기(102) 및 인코더(104) 각각의 기능을 수행하게끔 한다.
하드웨어 및 소프트웨어 구현의 조합을 갖는 것도 가능하다는 점이 이해될 것이며, 이는 분석기(102) 및 인코더(104)의 기능의 일부가 하드웨어에서 구현되고 다른 일부가 소프트웨어로 구현됨을 의미한다.
당업자가 상술된 실시예를 다양한 방식으로 변경하여 상술된 실시예에 도시된 바와 같은 본 발명의 장점을 여전히 사용할 수 있다는 점이 이해될 것이다. 예를 들어, 위의 실시예는 주로 이미지 내에서 하나의 코히런트 영역을 설명하였지만, 방법은 이미지에 하나 이상의 코히런트 영역이 있는 경우로 자연스럽게 확장된다. 또한, 각각 H.264 및 H.265 표준을 사용하는 코딩에 적용 가능한 주변 픽셀 블록의 움직임 벡터를 선택하는 두 가지 상이한 방법이 설명되었다. 그러나, 다른 현대의 코덱 표준은 픽셀 블록의 움직임 벡터가 인코딩되는 것과 관련하여 움직임 벡터 후보를 선택하는 다른 방법을 사용할 수 있다는 점이 이해된다. 이는, 특정 주변 픽셀 블록의 움직임 벡터를 가리킴으로써, 또는 절대 움직임 벡터를 계산함으로써 동일한 픽셀 블록에서 참조 이미지의 움직임 벡터를 기반으로 움직임 벡터 후보를 선택하는 단계를 포함한다. 예시된 것과 다른 현대의 코덱 표준이 사용되는 경우, 움직임 벡터 후보를 선택하기 위한 접근법이 사용 중인 코덱 표준에 의해서 규정된 바와 같이 수행된다는 점이 이해된다. 따라서, 본 발명은 도시된 실시예에 한정되지 않고 첨부된 청구범위에 의해서만 정의되어야 한다. 추가적으로, 숙련된 자가 이해하는 바와 같이, 도시된 실시예가 결합될 수 있다.

Claims (15)

  1. 비디오 시퀀스의 이미지를 인코딩하기 위한 방법에 있어서, 상기 방법은:
    상기 이미지 내의 코히런트(Coherent) 영역 - 상기 코히런트 영역은 상기 이미지 내에서 검출된 객체에 대응하는 영역이고, 상기 객체는 상기 비디오 시퀀스에서 이전에 인코딩된 이미지 이후 거리 벡터에 따라 이동되었던 객체이며, 상기 거리 벡터는 임계값보다 더 큼 - 을 식별하도록 상기 비디오 시퀀스 내의 움직임을 분석하는 단계, 및
    상기 이미지 내의 픽셀 블록을 인코딩하는 단계를 포함하되,
    상기 이미지 내의 픽셀 블록을 인코딩하는 단계는, 상기 픽셀 블록 각각에 대해서:
    블록 매칭을 수행하여, 상기 픽셀 블록의 움직임 벡터 - 상기 픽셀 블록의 상기 움직임 벡터는, 참조 이미지 내에서 매칭 픽셀 블록을 가리킴 - 를 찾고, 상기 픽셀 블록과 상기 매칭 픽셀 블록 사이의 잔차(Residual)를 계산하고,
    상기 픽셀 블록의 상기 움직임 벡터를 인코딩하기 위한 코스트(Cost) - 상기 픽셀 블록의 상기 움직임 벡터를 인코딩하기 위한 상기 코스트는, 상기 코히런트 영역 내에 있는 적어도 하나의 픽셀 블록에 대해, 상기 이미지 내에서 상기 픽셀 블록에 이웃하는 주변 픽셀 블록의 움직임 벡터에 관한 상기 픽셀 블록의 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산되는 대신에, 상기 코히런트 영역의 상기 거리 벡터에 관한 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산됨 - 및 상기 잔차를 인코딩하기 위한 코스트를 계산하고,
    상기 움직임 벡터를 인코딩하기 위한 상기 코스트와 상기 잔차를 인코딩하기 위한 상기 코스트가, 결합되었을 때 상기 픽셀 블록을 인트라-코딩(Intra-coding)하기 위한 코스트보다 작은 경우에, 인터-코딩된(Inter-coded) 블록으로서 상기 픽셀 블록을 인코딩함으로써, 이루어지는, 방법.
  2. 제1항에 있어서,
    상기 코히런트 영역 내의 픽셀 블록들은 기결정된 순서로 인코딩되고,
    상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은, 상기 기결정된 순서에 따라 첫 번째로 인코딩되는 상기 코히런트 영역 내의 픽셀 블록을 포함하는, 방법.
  3. 제2항에 있어서,
    상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은, 상기 기결정된 순서에 따라 첫 번째로 인코딩되는 상기 코히런트 영역 내의 상기 픽셀 블록만을 포함하는, 방법.
  4. 제1항에 있어서,
    상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은, 상기 영역 내의 이전에 인코딩된 주변 픽셀 블록들의 기결정된 개수보다 적은, 상기 코히런트 영역 내의 모든 픽셀 블록들을 포함하는, 방법.
  5. 제4항에 있어서,
    상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은, 상기 영역 내의 이전에 인코딩된 주변 픽셀 블록들의 기결정된 개수보다 적은, 상기 코히런트 영역 내의 상기 픽셀 블록들만을 포함하는, 방법.
  6. 제1항에 있어서,
    상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록은, 상기 코히런트 영역 내의 모든 픽셀 블록들을 포함하는, 방법.
  7. 제1항에 있어서,
    상기 이미지 내의 주변 픽셀 블록의 상기 움직임 벡터는, 상기 이미지 내의 이전에 인코딩된 다수의 주변 픽셀 블록들의 움직임 벡터의 중앙값에 대응되는, 방법.
  8. 제1항에 있어서,
    상기 블록 매칭을 수행하는 단계는, 움직임 벡터 검색 윈도우를 사용해 상기 참조 이미지 내의 매칭 픽셀 블록을 가리키는 상기 움직임 벡터를 찾는 단계를 포함하고,
    상기 코히런트 영역 내의 상기 적어도 하나의 픽셀 블록에 대해, 상기 검색 윈도우는, 주변 픽셀 블록의 상기 움직임 벡터를 중심으로 하는 대신에, 상기 코히런트 영역의 상기 거리 벡터를 중심으로 하는, 방법.
  9. 제8항에 있어서,
    상기 매칭 픽셀 블록의 상기 움직임 벡터를 인코딩하기 위한 코스트는, 상기 움직임 벡터 검색 윈도우가 중심으로 하는 벡터에 관한 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산되는, 방법.
  10. 제1항에 있어서,
    상기 비디오 시퀀스는 이동 가능한 시야(Field-of-view)를 갖는 카메라에 의해 캡처되고, 상기 비디오 시퀀스 내의 움직임을 분석하는 단계는 상기 시야의 움직임에 관한 상기 카메라로부터의 입력을 기반으로 하는, 방법.
  11. 제1항에 있어서,
    상기 비디오 시퀀스 내의 움직임을 분석하는 단계는, 객체 검출 알고리즘을 사용하여 상기 비디오 시퀀스 내에서 객체 및 이의 움직임을 검출하는 단계를 포함하는, 방법.
  12. 제1항에 있어서,
    상기 이미지 내에서 상기 코히런트 영역의 크기는, 상기 코히런트 영역의 상기 거리 벡터의 길이에 의존하는 임계값보다 더 긴, 방법.
  13. 삭제
  14. 비디오 시퀀스의 이미지를 인코딩하기 위한 시스템에 있어서, 상기 시스템은:
    상기 이미지 내의 인접 픽셀의 코히런트 영역 - 상기 코히런트 영역은 상기 이미지 내에서 검출된 객체에 대응하는 영역이고, 상기 객체는 상기 비디오 시퀀스에서 이전에 인코딩된 이미지 이후 거리 벡터에 따라 이동되었던 객체이며, 상기 거리 벡터는 임계값보다 더 큼 - 을 식별하게끔 상기 비디오 시퀀스 내의 움직임을 분석하도록 구성된 분석기, 및
    상기 이미지 내의 픽셀 블록을 인코딩하도록 구성된 인코더를 포함하되,
    상기 이미지 내의 픽셀 블록을 인코딩하도록 구성된 상기 인코더는, 각각의 픽셀 블록에 대해서:
    블록 매칭을 수행하여, 상기 픽셀 블록의 움직임 벡터 - 상기 픽셀 블록의 상기 움직임 벡터는, 참조 이미지 내에서 매칭 픽셀 블록을 가리킴 - 를 찾고, 상기 픽셀 블록과 상기 매칭 픽셀 블록 사이의 잔차(Residual)를 계산하고,
    상기 픽셀 블록의 상기 움직임 벡터를 인코딩하기 위한 코스트 - 상기 픽셀 블록의 상기 움직임 벡터를 인코딩하기 위한 상기 코스트는, 상기 코히런트 영역 내에 있는 적어도 하나의 픽셀 블록에 대해, 상기 이미지 내에서 상기 픽셀 블록에 이웃하는 주변 픽셀 블록의 움직임 벡터에 관한 상기 픽셀 블록의 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산되는 대신에, 상기 코히런트 영역의 상기 거리 벡터에 관한 상기 움직임 벡터를 인코딩하기 위한 코스트로서 계산됨 - 및 상기 잔차를 인코딩하기 위한 코스트를 계산하고,
    상기 움직임 벡터를 인코딩하기 위한 상기 코스트와 상기 잔차를 인코딩하기 위한 상기 코스트가, 결합되었을 때 상기 픽셀 블록을 인트라-코딩(Intra-coding)하기 위한 코스트보다 작은 경우에, 인터-코딩된(Inter-coded) 블록으로서 상기 픽셀 블록을 인코딩하는, 시스템.
  15. 프로세서에 의해 실행될 때 상기 프로세서가 제1항의 방법을 수행하게끔 하는 컴퓨터 코드 인스트럭션(Instruction)이 저장된, 비일시적(Non-transitory) 컴퓨터 판독가능 매체.
KR1020200154923A 2019-12-03 2020-11-18 비디오 시퀀스의 이미지를 인코딩하기 위한 방법 및 시스템 KR102446097B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP19213109.2 2019-12-03
EP19213109.2A EP3833028B1 (en) 2019-12-03 2019-12-03 Method and system for calculating a cost of encoding a motion vector

Publications (2)

Publication Number Publication Date
KR20210069564A KR20210069564A (ko) 2021-06-11
KR102446097B1 true KR102446097B1 (ko) 2022-09-22

Family

ID=68766575

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200154923A KR102446097B1 (ko) 2019-12-03 2020-11-18 비디오 시퀀스의 이미지를 인코딩하기 위한 방법 및 시스템

Country Status (6)

Country Link
US (1) US11303903B2 (ko)
EP (1) EP3833028B1 (ko)
JP (1) JP7229982B2 (ko)
KR (1) KR102446097B1 (ko)
CN (1) CN112911293B (ko)
TW (1) TWI801764B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117939163B (zh) * 2024-03-22 2024-07-19 广东工业大学 一种基于双流特征提取的压缩感知视频重构方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040057520A1 (en) 2002-03-08 2004-03-25 Shijun Sun System and method for predictive motion estimation using a global motion predictor

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05304662A (ja) * 1992-04-24 1993-11-16 Seiko Epson Corp 画像符号化伝送装置
JP2007036889A (ja) * 2005-07-28 2007-02-08 Sanyo Electric Co Ltd 符号化方法
JP4047879B2 (ja) * 2005-08-23 2008-02-13 松下電器産業株式会社 動きベクトル検出装置および動きベクトル検出方法
US8107748B2 (en) 2005-09-16 2012-01-31 Sony Corporation Adaptive motion search range
KR101356735B1 (ko) * 2007-01-03 2014-02-03 삼성전자주식회사 전역 움직임 벡터를 사용해서 움직임 벡터를 추정하기 위한방법, 장치, 인코더, 디코더 및 복호화 방법
JP5171675B2 (ja) * 2009-02-03 2013-03-27 三洋電機株式会社 画像処理装置、およびそれを搭載した撮像装置
EP2403247A1 (en) * 2010-06-30 2012-01-04 British Telecommunications public limited company Transmission of visual tag motions in a video signal
JP6019797B2 (ja) * 2012-06-22 2016-11-02 富士通株式会社 動画像符号化装置、動画像符号化方法、及びプログラム
CA2942336A1 (en) * 2014-03-10 2015-09-17 Euclid Discoveries, Llc Continuous block tracking for temporal prediction in video encoding
US10123036B2 (en) 2014-06-27 2018-11-06 Microsoft Technology Licensing, Llc Motion vector selection for video encoding
WO2017131908A1 (en) * 2016-01-29 2017-08-03 Google Inc. Dynamic reference motion vector coding mode
EP3220642B1 (en) * 2016-03-15 2018-03-07 Axis AB Method, apparatus and system for encoding a video stream by defining areas within a second image frame with image data common to a first image frame
EP3370419B1 (en) 2017-03-02 2019-02-13 Axis AB A video encoder and a method in a video encoder
EP3396952B1 (en) 2017-04-25 2019-04-17 Axis AB Method and image processing unit for forming a video stream
JP6914722B2 (ja) * 2017-05-11 2021-08-04 キヤノン株式会社 動画像符号化装置、動画像符号化方法及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040057520A1 (en) 2002-03-08 2004-03-25 Shijun Sun System and method for predictive motion estimation using a global motion predictor

Also Published As

Publication number Publication date
TW202126047A (zh) 2021-07-01
EP3833028B1 (en) 2022-02-09
TWI801764B (zh) 2023-05-11
CN112911293B (zh) 2022-08-26
US20210168373A1 (en) 2021-06-03
KR20210069564A (ko) 2021-06-11
EP3833028A1 (en) 2021-06-09
JP7229982B2 (ja) 2023-02-28
US11303903B2 (en) 2022-04-12
JP2021103876A (ja) 2021-07-15
CN112911293A (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
CN110419217B (zh) 用于图像处理的方法和图像处理装置
US7463687B2 (en) Method and apparatus for performing high quality fast predictive motion search
US7023921B2 (en) Method and apparatus for determining block match quality
KR101908639B1 (ko) 비디오 스트림을 인코딩하는 방법 및 시스템
CN110730343B (zh) 一种多功能视频编码帧间划分方法、系统及存储介质
CN107087200B (zh) 针对高效率视频编码标准的跳过编码模式提前判决方法
US8189667B2 (en) Moving picture encoding apparatus
US20060039476A1 (en) Methods for efficient implementation of skip/direct modes in digital video compression algorithms
KR100924048B1 (ko) 비디오 부호화에서 화면내 방향성 예측모드 고속 결정방법
JP6900452B2 (ja) 複数のイメージフレームをイントラリフレッシュエンコーディングする方法
KR102446097B1 (ko) 비디오 시퀀스의 이미지를 인코딩하기 위한 방법 및 시스템
KR101769575B1 (ko) 움직임 탐색시 효율적인 움직임 벡터 추출 방법 및 그 장치
US20100239019A1 (en) Post processing of motion vectors using sad for low bit rate video compression
Yang et al. Efficient tree structured motion estimation using successive elimination
KR101677696B1 (ko) 움직임 탐색시 효율적인 움직임 벡터 추출 방법 및 그 장치
JP2005184241A (ja) 動画像フレーム内モード判定方式
JP2008187220A (ja) 動画像符号化装置
KR101867885B1 (ko) 움직임 탐색시 효율적인 움직임 벡터 추출 방법 및 그 장치
KR101708905B1 (ko) 움직임 탐색시 효율적인 움직임 벡터 추출 방법 및 그 장치
KR101737606B1 (ko) 움직임 탐색시 효율적인 움직임 벡터 추출 방법 및 그 장치
US9948932B2 (en) Image processing apparatus and control method of image processing apparatus
KR102032793B1 (ko) 움직임 탐색시 효율적인 움직임 벡터 추출 방법 및 그 장치
JP2005295074A (ja) 画像符号化装置及びプログラム
JP2012175548A (ja) 動画像符号化装置及び動画像符号化方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right