상기 과제를 이루기 위하여 본 발명에 따른 비디오 코딩 방법은 헤더데이터, 모션벡터데이터, 및 이산코사인변환(DCT) 데이터를 각각 포함하는 매크로블록들을 상기 헤더데이터가 그룹핑된 헤더데이터 영역(HDP: Header Data Part), 상기 모션벡터데이터가 그룹핑된 모션벡터데이터 영역(MVDP: Motion Vector Data Part), 및 상기 이산코사인변환데이터가 그룹핑된 이산코사인변환데이터 영역(DDP: DCT Data Part)으로 데이터 분할(Data partitioning)하는 단계; 및 상기 분할된 영역들을 가변장 코딩하거나 역가변장 코딩하는 단계;를 포함하는 것을 특징으로 한다.
상기 다른 과제를 이루기 위해 본 발명에 따른 비디오 코딩 방법을 실행하는 컴퓨터 독취가능 기록매체는 헤더데이터, 모션벡터데이터, 및 이산코사인변환(DCT) 데이터를 각각 포함하는 매크로블록들을 상기 헤더데이터가 그룹핑된 헤더데이터 영역(HDP: Header Data Part), 상기 모션벡터데이터가 그룹핑된 모션벡터데이터 영역(MVDP: Motion Vector Data Part), 및 상기 이산코사인변환 데이터가 그룹핑된이산코사인변환데이터 영역(DDP: DCT Data Part)으로 데이터 분할(Data partitioning)하는 프로그램 코드; 및 상기 분할된 영역들 중 소정의 우선 순위에 따라 선택된 영역들은 역가변장 코딩하고 나머지 영역들은 가변장 코딩하는 프로그램 코드;를 저장하는 것을 특징으로 한다.
상기 또 다른 과제를 이루기 위해 본 발명에 따른 비디오 코딩 장치는 헤더데이터, 모션벡터데이터, 및 이산코사인변환(DCT) 데이터를 각각 포함하는 매크로블록들을 상기 헤더데이터가 그룹핑된 헤더데이터 영역(HDP: Header Data Part), 상기 모션벡터데이터가 그룹핑된 모션벡터데이터 영역(MVDP: Motion Vector Data Part), 및 상기 이산코사인변환데이터가 그룹핑된 이산코사인변환데이터 영역(DDP: DCT Data Part)으로 데이터 분할(Data partitioning)하는 수단; 및 상기 분할된 영역들을 가변장 코딩하거나 역가변장 코딩하는 수단;을 포함하는 것을 특징으로 한다.
이하 첨부된 도면들을 참조하여 본 발명에 따른 바람직한 실시예들을 상세히 기술하기로 한다.
도 2에는 본 발명의 실시예에 따른 비디오 코딩 방법의 주요단계를 나타내었다. 도 2를 참조하면, 본 발명에 따른 비디오 코딩 방법은 분할단계(20), 가변장 코딩 단계(22), 선택된 영역들에 대한 역가변장 코딩 단계(24), 및 마커 삽입 단계(26)를 포함하여 이루어진다.
분할단계(20)에서는 복수의 매크로블록에 대한 데이터 분할(Data Partitioning)이 수행된다. 데이터 분할은 매크로블록을 구성하는 데이터를 새로운 조합으로 재배열하는 것을 의미한다. 보다 구체적으로, 본 실시예에서는 각 매크로블록에 포함된 헤더데이터를 그룹핑하여 헤더데이터 영역(HDP: Header Data Part)을 구성하며, 각 매크로블록에 포함된 모션벡터데이터 및 이산코사인변환데이터를 각각 그룹핑하여 모션벡터데이터 영역(MVDP: Motion Vector Data Part), 및 이산코사인변환데이터 영역(DDP: DCT Data Part)을 구성한다.
헤더데이터는 현재 매크로블록의 코딩된 상태에 관한 정보를 포함한다. 즉, 헤더데이터는 현재 매크로블록이 현재 프레임의 내용을 그대로 코딩한 인트라(intra) 매크로블록인지, 이전 프레임과의 차(difference)를 코딩한 인터(inter) 매크로블록인지를 알려주므로 이에 오류가 발생되면 매우 심각한 정보 손실이 일어난다. 이처럼 헤더데이터는 그 중요도가 높기 때문에 복원시 우선적으로 복원하여야 한다. 따라서, 예를 들어 헤더데이터 중에서 코딩여부의 상태를 표시하는 매크로블록식별(COD)과 매크로블록 패턴색도(MCBPC)는 하나의 새로운 신택스(COD+MCBPC)로 결합하여 분할하는 것이 바람직하다. 이와 같이 결합하여 분할하는 것이 바람직한 이유는 다음과 같다. 현재의 H.263 표준에서는 헤더 데이터로서 COD에는 1 비트가 할당되고 MCBPC는 가변장 코딩된다. COD에는 1 비트가 할당되어 0과 1이 모두 존재할 수 있기 때문에 오류가 발생하였는지 여부를 식별하기가 어렵다. 또한, 가변장 코드를 사용하는 MCBPC에 오류가 발생한 경우, 그 오류가 발생된 비트열이 역가변장 코드 테이블보다는 가변장 코드 테이블에 존재할 가능성이 높기 때문에 오류 검출에 어려움이 있다. 따라서, 본 발명에 따른 비디오 코딩 방법의 일실시예에 따르면, 분할시에 COD와 MCBPC를 결합하고, 결합된 영역을 역가변장 코딩함으로써 오류가 발생되었는지 여부를 용이하게 식별할 수 있게 된다. 예를 들어 역가변장 코드워드 0110의 경우 0101 또는 1001과 같은 오류가 발생하더러도 오류로써 식별될 수 있기 때문에, 오류를 포함한 정보를 사용할 가능성을 줄여줄 수 있다. 더욱이, 역가변장 코딩으로 코딩되었기 때문에 역방향의 복원(recovery)도 가능하다. 하지만, 필요에 따라, 헤더데이터 영역(HDP)은 각 부분을 결합하여 코딩하는 방법을 사용하지 않고 각 부분을 각각 코딩하는 방법을 통해 구성될 수도 있다.
또한, 이러한 분할단계(20)는 매크로블록 단위로 수행되므로 각 비디오 데이터 패킷에 포함되는 첫 번째 매크로블록의 번호를 표시하는 최초매크로블록어드레스(MBA: first Macro Block Address)를 삽입하여 디코딩시에 참조할 수 있도록 한다. 또한, 이 분할단계(20)에서는 모션벡터데이터 영역(MVDP) 다음에 최종모션벡터값(LMVV: Last Motion Vector Value)을 삽입한다. 여기서 최종모션벡터값이란 이전의 모션벡터값에 기초하여 예측된 값이 아닌, 절대 모션벡터 정보를 의미한다. 나아가, 분할단계(20)에서는 각 비디오 데이터 패킷의 일련번호를 표시하는 패킷번호(PN: Packet Number)을 패킷 헤더정보로써 삽입한다.
가변장 코딩 단계(22)에서는 헤더데이터 영역(HDP), 모션벡터데이터 영역(MVDP), 및 이산코사인변환데이터 영역(DDP) 중 적어도 일부에 대하여 가변장 코딩이 수행된다. 이때, 패킷번호(PN) 및 최종모션벡터값(LMVV)도 가변장 코딩된다.
역가변장 코딩단계(24)에서는 복원에 필요한 소정의 우선순위에 따라 선택되어진 영역들에 대하여 역가변장 코딩을 수행한다. 즉, 디코딩시 손실되면 전체 비디오 데이터 패킷이나 매크로블록이 손실될 수 있는 중요한 정보에 대하여 역가변장 코딩을 수행하는 것이다. 우선 순위가 필요한 이유를 상세하게 설명하면 다음과 같다. 상술한 바와 같이 헤더데이터는 현재 매크로블록이 현재 프레임의 내용을 그대로 코딩한 인트라 매크로블록인지, 이전 프레임의 차를 코딩한 인터 매크로블록인지를 나타낸다. 인터 매크로블록의 헤더데이터에 오류가 발생하면 모션벡터데이터, 이산코사인변환데이터를 사용할 수 없고 모션벡터데이터에 오류가 발생하면 이산코사인변환데이터를 사용할 수 없다. 더욱이, 대부분의 매크로블록은 압축효율을 높이기 위하여 인터 매크로블록으로 구성된다. 따라서, 헤더데이터, 모션벡터데이터, 이산코사인변환데이터의 순서로 중요도가 높다. 이처럼 매크로블록 내에는 중요도에 따른 우선순위가 존재하므로 오류 또한 우선순위에 따라 복원되는 것이 바람직하다. 모든 데이터를 역가변장 코딩하지 않고 우선순위를 두어 선택적으로 역가변장 코딩하는 이유는 역가변장 코딩을 수행하면 가변장 코딩을 수행한 경우보다 비트수가 증가되므로 한정된 채널용량을 고려한 것이다. 도 2에 도시하지는 않았으나, 본 발명에 따른 비디오 코딩 방법은 채널의 전송용량, 오류 상황, 혼잡도와 같은 채널의 특성에 관한 정보를 백채널(back channel) 등을 통하여 수신함으로써 채널의 특성을 알아낸 다음, 채널 특성이 허용하는 경우에는 예를 들어 이산코사인변환데이터 영역(DDP: DCT Data Part)과 같이 우선순위가 낮은 영역까지 역가변장 코딩(RVLC)하고 채널 특성이 허용하지 않는 경우에는 우선순위가 낮은 영역의 순서로 가변장 코딩(VLC)한다. 이 때, 역가변장 코딩된 영역과 가변장 코딩된 영역을 안내하는 정보를 패킷 헤더정보로서 삽입할 수 있다. 이처럼, 본 실시예에 따르면 채널 특성에 맞게 오류 허용도를 최대한 증가시킬 수 있다. 대안적으로, 채널 특성이 허용하는 경우에는 예를 들어 이산코사인변환데이터 영역(DDP: DCT Data Part)과 같이 우선순위가 낮은 영역에는 부가정보를 삽입함으로써 디코딩시에 참조할 수 있도록 한다. 이하에서 이러한 부가정보의 사용에 대하여 예를 들어 설명한다. 첫째, 헤더데이터 영역의 정보를 한번 더 전송하는 것이 가능하다. 이는 중요도가 높은 헤더데이터 영역에서 오류가 발생하고 모션벡터데이터 영역과 이산코사인변환데이터 영역에서는 오류가 발생하지 않을 수 있는 경우를 위한 것이다. 이와 같이 헤더데이터 영역을 이산코사인변환데이터 영역의 바로 뒤에 위치시킴으로써 해당 비디오 데이터 패킷을 버리지 않고 복원할 수 있다. 둘째, 이산코사인변환데이터 영역 내에 CRC를 부가정보로 전송하는 것이 가능하다. 예를 들어, 이산코사인변환데이터는 DC 값에 8 비트의 고정장 코드(FLC)를 AC 값에 가변장 코드(VLC)를 사용한다. 8 비트의 고정장 코드는 오류를 검출하기가 상대적으로 어렵다. 오류의 검출을 돕기 위하여 이 8 비트의 고정장 코드에 CRC를 부가함으로써 복원성을 향상시킬 수 있다. 또한, 상기 8 비트의 고정장 코드와 함께, 고정장 코드를 사용하는 다른 정보, 예를 들어 양자화값을 표시하는 양자화 패리티(QP)를 CRC를 만드는데 사용할 수도 있다. 이와 같은 방법에 의하여 이산코사인변환데이터 영역에서 고정장 코드의 비트에 CRC를 부가하여 디코딩시 오류 복구성을 향상시킬 수 있다. 결국, 상술한 두 경우의 부가정보는 해당 비디오 데이터 패킷 내에서 오류가 발생한 부분을 복원할 수 있도록 하거나, 오류 검출이 어려운 부분에서 보다 용이하게 오류를 검출할 수 있도록 돕기 위한 것이다. 또한, 본 발명의 실시예에 따른 비디오 코딩 방법에서는 역가변장 코딩시, 채널 특성에 따라 서로 다른 역가변장 코딩 테이블을 사용함으로써 오류검출을 보다 효과적으로 수행한다.
마커 삽입 단계(26)에서는 각 비디오 데이터 패킷을 구분하기 위한 재동기마커(RM: Resync Marker), 헤더데이터 영역과 모션벡터데이터 영역을 구분하기 위한 헤더마커(HM: Header Marker)를 삽입한다. 또한, 모션벡터데이터 영역(MVDP)과 이산코사인변환데이터 영역(DDP)을 구분하기 위한 모션마커(MM: Motion Marker)를 삽입한다. 헤더마커(HM)는 헤더데이터 영역(HDP)의 코딩에는 사용되지 않는 코드워드를 사용하여 이루어짐으로써 디코딩시 식별이 용이하도록 한다.
도 3에는 상기 방법을 구현하기 위한 본 발명의 실시예에 따른 비디오 코딩 장치를 도시하였다. 도 3을 참조하면 본 발명에 따른 비디오 코딩 장치는 분할수단(30), 가변장코딩수단(32), 및 상기 가변장 코딩될 영역들 중에서 복원에 필요한 소정의 우선 순위에 따라 선택되어진 영역들을 역가변장 코딩하는 역가변장코딩수단(34)을 구비한다. 또한, 비디오 코딩 장치는 채널의 용량, 오류 상황, 혼잡도와 같은 채널의 특성에 관한 정보를 예를 들어 백채널(미도시)등을 통하여 수신함으로써 채널의 특성을 식별하는 채널식별수단(36)과, 가변장 코딩 또는 역가변장 코딩된 비트영역들에 마커를 삽입하는 마커삽입수단(38)을 구비한다.
분할수단(30)은 비디오 데이터를 입력받아 도 2를 참조하여 기술한 바와 같이 헤더데이터 영역(HDP), 모션벡터데이터 영역(MVDP), 및 이산코사인변환(DCT)데이터 영역(DDP)으로 데이터 분할(data partitioning)을 수행한다. 또한,분할수단(30)은 헤더데이터 영역(HDP)에 있어서 예를 들어 매크로블록식별(COD)과 매크로블록패턴색도(MCBPC)와 같이 복원에 있어 중요도가 높은 소정의 복수의 부분들을 결합하여 하나의 새로운 신택스(COD+MCBPC)로 구성할 수 있다.
가변장코딩수단(32)은 분할된 영역들을 가변장 코딩하고, 역가변장코딩수단(34)에서는 일 예로 디코딩시 손실되면 전체 비디오 데이터 패킷이나 매크로블록이 손실될 수 있는 가능성이 있는 부분과 같이 복원에 필요한 소정의 우선순위에 따라 선택되어진 영역들에 대하여 가변장 코딩에 비해 오류 복구성이 양호한 역가변장 코딩을 수행한다. 하지만, 역가변장 코딩을 수행하면 가변장 코딩을 수행한 경우보다 비트수가 증가되므로 한정된 채널용량을 고려하여 우선순위를 두어 선택된 비트영역들에 대하여만 상기 역가변장 코딩을 수행하는 것이 바람직하다.
이를 위하여 채널특성 식별수단(36)은 채널 특성이 허용한다고 결정된 경우에는 이산코사인변환데이터 영역(DDP: DCT Data Part)과 같이 우선순위가 낮은 영역까지 역가변장 코딩(RVLC)하고 채널 특성이 허용하지 않는다고 결정된 경우에는 우선순위가 낮은 영역은 가변장 코딩(VLC) 하도록 가변장 코딩수단(32)과 역가변장 코딩수단(34)을 제어한다. 대안적으로, 부가정보를 삽입하는 수단(미도시)을 더 구비하여 채널특성 식별 수단(36)에서 채널 특성이 허용하는 것으로 결정된 경우에 이산코사인변환데이터 영역(DDP: DCT Data Part)과 같이 우선순위가 낮은 영역에 부가정보를 삽입하는 것도 가능하다. 또한, 역가변장 코딩수단(34)은 상기 채널특성 식별 수단(36)에서 채널 특성이 허용한다고 결정한 경우에는 도 2를 참조하여기술한 효과를 이루기 위하여 각각 다른 코딩 테이블을 사용하여 역가변장 코딩을 수행하는 것이 바람직하다.
또한, 본 발명에 따른 비디오 코딩 장치는 도 2를 참조하여 기술한 바와 같은 효과를 이루기 위하여 각 비디오 데이터 패킷에서 첫 번째 매크로블록의 번호를 표시하는 최초매크로블록어드레스(MBA: first Macro Block Address)를 삽입하는 수단(미도시)을 더 포함하고, 역가변장 코딩수단(34)은 최종모션벡터값(LMVV)을 역가변장 코딩하는 것이 바람직하다. 또한, 상기 비디오 코딩장치는 재동기마커(RM) 다음에 패킷의 일련번호를 표시하는 패킷번호(PN: Packet Number)를 패킷 헤더정보로써 삽입하는 수단(미도시)과, 모션벡터데이터 영역(MVDP) 다음에 절대 모션벡터 정보를 포함하는 최종모션벡터값(LMVV)를 삽입하는 수단(미도시)을 더 포함하는 것이 바람직하다.
한편, 마커 삽입 수단(38)은 각 비디오 데이터 패킷을 구분하기 위한 재동기마커(RM: Resync Marker)와, 헤더데이터 영역(HDP)과 모션벡터데이터 영역(MVDP)을 구분하는 정보 비트로써 헤더데이터 영역의 코딩에는 사용되지 않는 코드워드를 사용하여 이루어진 헤더마커(HM: Header Marker), 및 모션벡터데이터 영역(MVDP)과 이산코사인변환데이터 영역(DDP)을 구분하기 위한 모션마커(MM: Motion Marker)를 삽입한다. 이 때, 헤더마커(HM)는 헤더데이터 영역(HDP)의 코딩에는 사용되지 않는 코드워드를 사용함으로써 디코딩시에 용이하게 식별되도록 하는 것이 바람직하다.
도 4에는 상기 방법에 의하여 생성된 비디오 데이터 패킷의 일 예를 나타내었다. 도 4를 참조하면, 상기 방법에 의하여 생성된 비디오 데이터 패킷은 재동기마커(RM: Resync Marker), 패킷번호(PN: Packet Number), 및 최초매크로블록어드레스(MBA: first Macro Block Address)를 포함한다. 또한 상기 비디오 데이터 패킷은 헤더데이터 영역(HDP: Header Data Part), 헤더마커(HM: Header Marker), 및 모션벡터데이터 영역(MVDP: Motion Vector Data Part)을 포함한다. 또한, 비디오 데이터 패킷은 최종모션벡터값(LMVV: Last Motion Vector Value), 모션마커(MM: Motion Marker), 및 이산코사인변환데이터 영역(DDP: DCT Data Part)을 포함한다. 이와 같이 이루어진 비디오 데이터 패킷에서 재동기마커(RM)는 비디오 데이터 패킷의 시작을 표시한다. 따라서, 디코딩시 종래기술 부분에서 기술한 것과 동일하게 비디오 데이터 패킷의 시작점을 찾을 수 있다. 패킷번호(PN)는 패킷 헤더정보로서 각 비디오 데이터 패킷의 일련번호를 표시한다. 최초매크로블록어드레스(MBA)는 각 비디오 데이터 패킷에서 첫 번째 매크로블록의 번호를 표시한다. 본 실시예에서 헤더데이터 영역(HDP: Header Data Part)은 매크로블록식별(COD)과 매크로블록패턴색도(MCBPC)가 결합되어 하나의 새로운 신택스(COD+MCBPC)를 형성하며, COD+MCBPC는 역가변장 코딩(RVLC)된다. 헤더마커(HM)는 헤더데이터 영역과 모션벡터데이터 영역을 구분하는 부분으로써 헤더데이터 영역(HDP)의 COD+MCBPC 코딩에는 사용되지 않는 코드워드(codeword)를 사용하여 이루어 진다. 모션벡터데이터 영역(MVDP)은 모션벡터 예측에 의하여 발생된 정보를 역가변장 코딩한 모션벡터데이터 부분이다. 이산코사인변환데이터 영역(DDP)은 이산코사인변환(DCT)과 관련된 정보를 포함하는 부분으로 CBPY, DQUANT, 및 DCT 계수가 코딩되어 있다. 또한,이산코사인변환데이터 영역(DDP)에는 해당 비디오 데이터 패킷에서 사용되었던 정보 중에서 수신 후 복호화할 때 오류 확인 및 복원에 필요한 정보들을 삽입하는 것이 바람직하다. 이러한 정보들의 삽입은 역시 채널의 특성에 의존하여 선택적으로 적용할 수 있다. 모션마커(MM: Motion Marker)는 모션벡터데이터 영역(MVDP)과 이산코사인변환데이터 영역(DDP)을 구분하기 위한 것이다.
상기와 같이 인코딩된 비디오 데이터 패킷이 디코딩되는 과정을 이하에서 설명하기로 한다. 먼저, 수신된 비트스트림에서 재동기마커(RM)를 발견하면 종래 기술부에서 설명한 바와 같이 다음의 재동기마커(RM)가 발견되기까지는 하나의 패킷으로 간주된다. 만일, 헤더데이터 영역(HDP)에서 오류가 발생한 경우, 헤더데이터 영역(HDP)은 역가변장 코딩되어 있기 때문에 순방향의 디코딩 뿐만 아니라 역방향의 디코딩도 가능하다. 예를 들어, 다음 패킷의 패킷번호(PN)와 최초매크로블록어드레스(MBA)를 사용하여 헤더데이터 영역(HDP)을 복원할 수도 있다. 즉, 다음 패킷의 최초매크로블록어드레스(MBA)에서 1을 뺀 값이 현재 패킷의 매크로블록어드레스이므로 역방향 디코딩을 사용하여 헤더데이터 영역(HDP) 중 오류가 발생되었던 부분까지 복원할 수 있게 된다. 또한, 모션벡터데이터 영역(MVDP)을 모션마커(MM)를 발견하기 전까지 디코딩한다. 이에 의해 모션벡터 예측에 의한 모션벡터가 디코딩된다. 이와 같은 디코딩 과정에서 오류가 발생하면, 모션벡터데이터 영역(MVDP) 또한 역가변장 코딩이 되어있기 때문에 역방향의 디코딩이 가능하게 된다. 종래 코딩 방법에 의하여 인코딩된 비디오 데이터 패킷을 디코딩하는 과정과 비교하여 설명하면, 종래에는 모션벡터데이터 영역(MVDP)에 모션예측에 의한 모션벡터데이터만이 존재하기 때문에 모션벡터데이터는 이전에 디코딩된 모션벡터데이터가 있는 경우에만 사용이 가능하다. 하지만, 본 발명에 의한 코딩방법에 따르면 모션벡터데이터 영역에 이어서 예측하지 않은 절대 모션벡터를 역가변장 코딩하여 전송하였기 때문에 최종모션벡터값(LMVV)를 이용하여 역방향으로 디코딩하는 경우에 이전의 모션벡터에 대하여 독립적으로 디코딩이 가능하게 된다. 또한, 이산코사인변환데이터 영역(DDP)은 오류가 발생되었을 때 가변장 코딩된 경우에는 상기 비디오 데이터 패킷을 무시할 수밖에 없지만 역가변장 코딩된 경우에는 역방향의 디코딩을 수행할 수 있으므로 비디오 데이터 패킷 전체를 버리지 않아도 된다. 즉, 오류 허용도가 더 높아지는 효과를 얻을 수 있다. 또한, 이산코사인변환데이터 영역에 복원에 필요한 부가 정보들이 인코딩되어 부가된 경우에는 이를 사용하여 디코딩에 사용할 수 있다.
상술한 바와 같이, 본 발명에 따른 코딩 방법은 오류 허용도를 더 높일 수 있기 때문에 무선통신 채널과 같이 오류가 많이 발생하는 환경 하에서 오류에 보다 덜 민감한 통신이 가능하다.
이상에서 본 발명에 따른 코딩 방법은 MPEG-4 비주얼(Visual)과 H.263을 일 예로 하여 재동기마커(RM), 패킷번호(PN), 최초매크로블록인덱스(FMBI), 헤더데이터 영역(HDP), 헤더마커(HM), 모션벡터데이터 영역(MVDP), 모션마커(MM), 및 이산코사인변환데이터 영역(DDP)와 같이 영역들에 대한 용어를 정의하여 기술하였으나, 당업자에 의하여 용이하게 이해될 수 있는 등가적인 다른 영역들로 구성되는 모든 비디오 코딩에 적용할 수 있다.