본 발명은 1/4 픽셀 단위까지 움직임 벡터를 검출하여 영상압축을 실행할 수 있도록 하는 것으로, 그 실행구성을 설명하면 다음과 같다.
압축을 수행하고자 하는 현재 영상 프레임(current frame)에 대하여 이전 영상 프레임(reference frame)으로 부터 그 움직임을 예측하여 움직임 벡터를 검출하고, 검출된 움직임 벡터에 따라서 현재 영상을 영상압축하도록 하는 움직임 벡터를 이용한 동영상 압축방법에 있어서,
상기 움직임 벡터는 1픽셀 단위로 구한 움직임 벡터에 대하여 인접 픽셀에 대응하는 블록과의 위치에 따른 가중치를 고려하여 1/4 픽셀 단위로 검출하여 영상압축을 실행하도록 함을 특징으로 하며,
상기 1/4 픽셀 단위의 움직임 벡터 검출방법은 1픽셀 단위의 움직임 벡터를 검출하는 과정과,
검출된 1픽셀 단위의 움직임 벡터에 대한 매크로 블록과 이와 인접한 픽셀에 대응하는 매크로 블록과의 위치에 따른 가중치를 적용하여 이전 프레임(reference frame)상의 가상의 블록을 구하는 과정과,
상기 과정에서 구한 이전 프레임(reference frame)상의 가상의 블록과 현재 프레임(current frame)의 매크로 블록과의 블록매칭을 수행하는 과정과,
상기 과정에서의 블록 매칭 결과와 상기 과정에서 구한 1픽셀 단위의 움직임 벡터와 비교하여 가장 좋은 결과를 선택하는 1/4 픽셀 단위의 움직임 벡터 검출과정으로 이루어진다.
도 5는 도 4에서와 같이 매크로 블록을 8*8 픽셀로 표시하여, 1/4 픽셀단위의 움직임 벡터를 계산하기 위한 과정을 설명하기 위한 도면이다.
먼저, 종래에서와 마찬가지로 현재 영상 프레임에 대하여 블록 매칭을 수행하여 1 픽셀 단위의 움직임 벡터를 구하게 되는 바, 도 5에 도시된 b의 위치는 1픽셀단위로 움직임 벡터를 구하게 되었을 경우의 중심위치이다.
그러면, 1/4 픽셀단위의 움직임 벡터를 구하는 과정을 설명하기 전에 종래에서 간략하게 설명했던 1/2 픽셀 단위의 움직임 벡터를 구하는 방법을 먼저 설명하면 다음과 같다.
상기에서와 같이 1픽셀 단위의 움직임 벡터를 이용하여 1/2픽셀 단위의 움직임 예측을 하게 되는 데, b의 위치를 중심으로 하여 8개의 방향으로 1/2 픽셀의 거리에 있는 가상의 픽셀위치를 정하면 이는 8개 각 방향으로 1',2',3',4',5',6', 7',8'이 정해진다.
이와 같이 정하여진 8가지의 1/2 픽셀 벡터 각각에 대하여 블록 매칭을 수행하여 가장 잘 매칭이 되는 후보를 선택하면, 그 값이 1/2 픽셀 단위의 움직임 벡터가 되는 것이다.
이를 도면상에 예를 들어 설명하면, 1'의 위치가 픽셀 a와 b의 중간위치이므로, 기준 프레임에서 a를 기준으로 한 블록(A)과 b를 기준으로 한 블록(b)에 대한 각 값들의, 평균하여 구한 가상의 기준 프레임상의 블록을 구하고, 이와 같이 구한 기준 프레임상의 가상 블록과 현재 프레임의 매크로 블록과의 블록 매칭정도를 계산한다.
상기에서와 같은 방법으로 각 위치(2',3',4',5',6',7',8')에 대하여 블록매칭을 수행하여 이들 8가지 블록 매칭의 결과와 1픽셀 단위의 b의 위치에서의 결과 를 비교하여 가장 좋은 결과가 나오는 위치가 바로 1/2 픽셀 단위의 움직임 벡터를 구한 값이 되는 것이다.
이에 비해 본 발명에서의 1/4 픽셀 단위의 움직임 벡터를 구하는 방법은,
1 픽셀 단위의 움직임 벡터에서 b의 위치를 중심으로 움직임을 예측하여 8개의 방향으로 1/4 픽셀간격의 거리에 있는 가상 픽셀 위치를 정하면 이는 8개 각 방향으로 1,2,3,4,5,6,7,8의 위치가 정하여진다.
이와 같이 구한 가상의 픽셀 각각에 대하여 상기와 같은 방법으로 블록 매칭을 수행하여 가장 잘 매칭이 되는 후보를 선택하게 되는 바,
예를 들면, 1의 위치에 대한 대한 블록 매칭은 1의 위치가 픽셀 a와 b 사이의 거리가 1이라고 가정하면 a로부터는 3/4의 거리에 위치하고, b로 부터는 1/4의 거리에 위치하므로 기준 프레임에서 a를 기준으로 한 블록(A)의 각각의 값들에 대하여서는 가중치를 1/4로 하고, b를 기준으로 한 블록(B)에 대하여서는 각각의 값들에 대하여 가중치를 3/4로 하여 계산한 가상의 기준 프레임상의 블록을 구한다.
그리고, 이와 같이 구한 기준 프레임상의 가상의 블록과 현재 프레임의 매크로 블록과의 블록 매칭정도를 계산한다.
상기에서와 같은 방법으로 각 위치(2,3,4,5,6,7,8)에 대하여 블록 매칭을 수행하여 이들 8가지 블록 매칭의 결과와 1 픽셀 단위의 b의 위치에서의 결과를 비교하여 가장 좋은 결과가 나오는 위치가 바로 1/4 픽셀단위의 움직임 벡터인 것이다.
또한, 도 6은 상기한 본 발명에서의 1/4 픽셀 단위의 움직임 벡터를 구하는 실시예와 또다른 방법을 나타낸 실시예로써,
도 6에 도시된 실시예에 있어서는, 1 픽셀 단위의 움직임 벡터에서 b의 위치를 중심으로 움직임을 예측하여 8개의 방향으로 1/4 픽셀간격의 거리에 있는 또다른 1,2,3,4,5,6,7,8의 위치를 가상 픽셀 위치로 정한 것이다.
이와 같이 구한 가상의 픽셀 각각에 대하여 상기와 같은 방법으로 가장 잘 매칭이 되는 후보를 선택하게 되는 데, 가상의 각 위치에 대한 블록 매칭은 상기와 동일하게 픽셀 a와 b 사이의 거리가 1이라고 가정할 경우,
본 실시예에 있어서는 가상의 각 픽셀의 위치는 상기와는 반대로 a로부터는 1/4의 거리에 위치하고, b로 부터는 3/4의 거리에 위치하므로 기준 프레임에서 a를 기준으로 한 블록(A)의 각각의 값들에 대하여서는 가중치를 3/4로 하고, b를 기준으로 한 블록(B)에 대하여서는 각각의 값들에 대하여 가중치를 1/4로 하여 계산한 가상의 기준 프레임상의 블록을 구하여 상기 도 5의 실시예에서와 동일한 블록 매칭을 수행하여 가장 좋은 결과를 구하여 1/4 픽셀단위의 움직임 벡터를 구하게 된다.
이와 같이 도 5 및 도 6에 도시된 바와 같은 방법으로 1/4 픽셀 단위의 움직임 벡터를 구할 수 있으며, 또한 엔코딩의 능력에 따라서는 두가지 방법으로 1/4 픽셀 단위의 움직임 벡터를 구하고, 이들 값을 비교하여 가장 정확한 값을 선택하여 움직임 벡터를 구할 수도 있다.
상기에서와 같은 방법으로 움직임 예측된 영상프레임을 압축하여 전송하게 되면, 1/2 픽셀 단위의 움직임 벡터를 적용한 경우보다 복호기에서 개선된 화질을 제공받을 수 있게 되는 바,
이를 복호기에서 복호화함에 있어, 움직임에 대하여 보상을 실행하게 되는 데, 상기에서와 같은 방법으로 그 보상을 실행하게 된다.
도 7을 참조하여 움직임 보상 과정을 설명하면 다음과 같다.
복호기에서 받은 1/4 단위의 움직임 벡터의 정확한 위치를 1의 위치라고 할 경우, 이와 같은 1/4 픽셀 단위의 움직임 벡터에 대한 움직임 보상은 다음과 같이 이루어진다.
1픽셀 단위의 움직임 벡터를 기준 프레임에서 찾아 해당 블록(B)을 구한다.
이와 같이 구한 b의 위치를 중심으로 한 블록(B)과 인접한 a의 위치를 중심으로 한 블록(A)에 가중치를 적용하여 1/4 픽셀 단위의 움직임 벡터의 위치 1에 대한 움직임 보상에서 필요한 기준 블록(reference block)을 계산하게 된다.
즉, 블록(A)에는 각각의 값들에 대하여 1/4 가중치를 적용하고, 블록(B)은 3/4 가중치를 적용하여(곱하고), 이와 같이 가중치가 각각 곱하여진 블록(A,B)의 각 값들을 평균하여 가상의 매크로 블록을 구하고, 이와 같은 가상의 매크로 블록으로 움직임 보상을 수행하게 되는 것이다.
상기에서와 같이 1/4 픽셀 단위의 움직임 벡터를 이용한 영상 압축부호화된 영상을 복호화하는 복호기에서는 1/2 움직임 벡터 신텍스로 전송되어온 것을 1/4 움직임 벡터로 온 것으로 변환하여 처리하게 되는 바,
이러한 경우 전송측으로 부터 전달되어오는 비트스트림에 담겨진 정보를 이용하여 1/2 움직임 벡터는 1/2 움직임 보상방법으로, 1/4 움직임 벡터는 1/4 움직임 보상 방법으로 움직임을 보상하게 된다.
또한, 이와 같은 방법으로 1/4 픽셀 단위의 움직임 벡터를 적용한 영상 압축 및 복원이 이루어지게 됨에 있어서, 상기와 같이 1/2, 1/4 두가지 모두를 지원하지 않고 1/2 움직임 벡터를 적용하여 움직임 보상을 수행하는 기존의 복호기와 호환을 유지하기 위해서는, 부호화기에서는 1/2 움직임 벡터와 같은 신텍스로 전송하게 되며, 기존의 복호기에서는 1/2 움직임 벡터로 인식하여 이를 종전과 동일하게 움직임 보상을 수행하게 되므로써, 기존의 규격 ISO/IEC 13818-2 (MPEG-2)과 호환을 유지할 수 있도록 할 수 있다.
즉, 도 5에 도시된 바와 같은 1,2,3,4,5,6,7,8,b의 위치대신에 1/2 픽셀 단위로 움직임을 예측한 1',2',3',4',5',6'.,7',b에 해당하는 1/2 픽셀 단위의 움직임 벡터로 대응하여 전송하게 되는 것이다.
이때, 1/4로 움직임 벡터를 예측하고 1/4 움직임 보상방법으로 움직임 보상을 수행하면 좋은 결과가 나타나지만, 1/4로 움직임 예측을 한 후 1/2 픽셀 단위의 움직임 보상을 할 경우에는 움직임 보상은 이루어지지만 영상의 GOP(Group of picture)가 커질 경우에 오차의 누적(error propagation)이 발생할 수도 있다.
이와 같은 경우를 방지하기 위해서는 영상 압축시 오차의 누적을 고려하여 영상 압축 알고리듬을 개선하면 된다.