KR100775788B1 - 화질 향상을 위한 사이클릭 미세입자 스케일러빌리티기반에서 플렉서블 매크로 블록 오더링에 의한 코딩방법 및 그 방법을 기록한 기록매체 - Google Patents
화질 향상을 위한 사이클릭 미세입자 스케일러빌리티기반에서 플렉서블 매크로 블록 오더링에 의한 코딩방법 및 그 방법을 기록한 기록매체 Download PDFInfo
- Publication number
- KR100775788B1 KR100775788B1 KR1020060065892A KR20060065892A KR100775788B1 KR 100775788 B1 KR100775788 B1 KR 100775788B1 KR 1020060065892 A KR1020060065892 A KR 1020060065892A KR 20060065892 A KR20060065892 A KR 20060065892A KR 100775788 B1 KR100775788 B1 KR 100775788B1
- Authority
- KR
- South Korea
- Prior art keywords
- coding
- virtual ring
- virtual
- region
- image
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/34—Scalability techniques involving progressive bit-plane based encoding of the enhancement layer, e.g. fine granular scalability [FGS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명은 관심 영역에 대한 화질 향상을 위한 사이클릭 미세입자 스케일러빌리티(FGS) 기반에서 플렉서블 매크로블록 오더링(FMO)에 의한 코딩방법에 관한 것으로, 관심 영역을 나타내는 가상링 수와, 영상 블록으로 표시되는 가상링 두께와, 반복스캔횟수와, 시작 위치를 포함하는 초기 정보를 확인하는 제1 단계; 상기 시작 위치와 상기 가상링 두께 정보를 이용해 코딩할 제1 가상링 영역을 설정하는 제2 단계; 상기 설정된 제1 가상링 영역 내의 영상 블록의 계수들을 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제3 단계; 상기 제3 단계 수행 후, 상기 반복스캔횟수를 확인하고, 상기 제1 가상링의 영역에 상기 가상링 두께를 더해 다음 코딩할 가상링 영역을 설정하는 제4 단계; 상기 시작 위치부터 상기 제4 단계에서 설정된 가상링 영역까지 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제5 단계; 및 상기 나머지 가상링 수의 확인을 통해 모든 관심 영역에 대한 코딩이 완료되면 상기 관심 영역 이외의 나머지 영상 영역에 대한 코딩을 수행하는 제6 단계를 포함한다.
관심 영역, 화질 개선, 사이클릭 미세입자 스케일러빌리티, 플렉서블 매크로 블락 오더링, MPEG
Description
도 1은 본 발명에 따른 플렉서블 매크로 블록 오더링(FMO)의 박스 아웃 스캔을 위한 가상링의 개념도,
도 2는 본 발명에 따른 한 개의 가상링 크기를 설명하기 위한 일 예시도,
도 3은 본 발명에 따른 코딩을 위한 관심 영역의 중심을 설명하기 위한 일 예시도,
도 4는 본 발명에 따른 제1 가상링을 설명하기 위한 일 예시도,
도 5는 본 발명에 따른 제2 가상링을 설명하기 위한 일 예시도,
도 6a 내지 도 6f는 본 발명에 따른 화질 향상을 위한 코딩 방법을 설명하기 위한 일 예시도,
도 7은 본 발명에 따른 화질 향상을 위한 코딩 방법을 설명하기 위한 흐름도,
도 8은 본 발명에 따른 제1 가상링의 코딩 시작을 설명하기 위한 일 예시도,
도 9는 본 발명에 따른 제1 가상링의 코딩 완료 후의 코딩 방향을 설명하기 위한 일 예시도,
도 10a 내지 도 10c는 본 발명에 따른 제1 가상링의 제2 부가상링의 시작을 설명하기 위한 일 예시도,
도 11은 본 발명에 따른 제1 가상링의 코딩 완료를 설명하기 위한 일 예시도,
도 12는 본 발명에 따른 나머지 영상 영역의 코딩을 설명하기 위한 일 예시도,
도 13은 본 발명에 따른 2개의 관심 영역을 위한 복수 강화 모드 사용을 설명하기 위한 일 예시도이다.
본 발명은 화질 향상을 위한 사이클릭 미세입자 스케일러빌리티(FGS: Fine Granular Scalability) 기반에서 플렉서블 매크로블록 오더링(FMO: Flexible Macroblock Ordering)에 의한 코딩방법에 관한 것으로, 더욱 상세하게는 관심 영역(ROI)을 중점적으로 강화하기 위해 H.264(MPEG-4 AVC)의 플렉서블 매크로블록 오더링(FMO)에서의 박스 아웃(Box-out) 스캔 방법에 가상링(Virtual Ring)의 개념을 적용시켜 각각의 가상링 단위로 코딩시 반복 스캔 횟수(recursive scan frequency) 를 변경하며 해당 영상 영역의 정보를 전송하고 복호함으로써 관심영역의 화질을 향상시키기 위한 사이클릭 미세입자 스케일러빌리티 기반에서 플렉서블 매크로 블록 오더링에 의한 코딩방법에 관한 것이다.
영상을 코딩하여 전송하는데 있어서 MPEG-4 기술은, 수신자 단말기의 상황이나 성능에 따라 다양한 화질을 제공할 수 있다. 수신자 단말기의 성능이 우수하고 전송 선로의 상태가 좋은 경우에는 수신자 단말기가 고화질의 동영상을 수신하여 디스플레이할 수 있다. 하지만, 수신기의 성능이 우수하지 않거나 전송 선로의 상태가 좋지 않은 경우에는 수신자 단말기가 고화질을 수신할 수 없다. 이러한 문제를 해결하기 위해 MPEG-4 기술은 스케일러블 코딩(Scalable Coding) 방법을 권고하고 있다.
스케일러블 코딩은 수신단에서 다양한 화질의 영상을 수신할 수 있도록 인코더에서 스케일러블한 비트 스트림을 만들어서 전송하는 것이다. 즉, 전송 비트스트림이 스케일러블하다면 다양한 종류의 수신기가 존재할 수 있게 되어, 저성능 수신기는 기본 계층에서 인코딩된 기본 화질의 영상 비트스트림을 전송받아 디스플레이 하고, 고성능 수신기는 강화계층(Enhancement Layer)에서 인코딩된 높은 화질의 영상 비트스트림을 전송받아 디스플레이할 수 있다.
하지만, 종래의 스케일러블 코딩 방법은 전송선로의 상태가 급변하지 않고 상대적으로 안정된 경우에 적합하도록 설계되어 있다. 다시 말해, 수신단은 강화 계층에서 송신된 비트스트림을 모두 수신하여야만 해당 영상 프레임을 복원할 수 있다. 만약, 전송 선로의 상태가 급변하여, 강화 계층에 해당되는 비트스트림을 모두 전송받지 못하면, 수신단은 해당 영상을 제대로 복원할 수 없다. 따라서 수신단은 재전송을 송신단에 요구하거나, 모든 비트스트림을 수신할 때까지 영상 복원을 수행하지 못하거나, 그 이전 프레임의 영상을 이용하여 전송 에러 숨김을 수행하여야만 한다.
그런데, 유/무선 인터넷과 같이 전송 선로의 상태가 안정적이지 못하여 대역폭이 급변하는 경우에도 전송된 영상의 실시간 복원을 수행하기 위해서, 수신단은 송신단에서 전송된 모든 비트스트림을 수신받지 못하더라도 그때까지 수신된 부분적인 영상 비트스트림만을 이용하여 전송된 영상을 실시간으로 복원할 수 있어야 한다. 이를 위해, MPEG-4 미세입자 스케일러빌리티(FGS) 코딩 방법과 최근에 국제 표준화가 진행중인 MPEG-4 연합 스케일러블 비디오 코딩(JSVC: Joint Scalable Video Coding) 방법이 제안되었다.
현재 국제 표준화가 진행중인 MPEG-4 연합 스케일러블 비디오 코딩(JSVC) 방법에서 지원하는 미세입자 스케일러빌리티(FGS) 방법은 원 영상 프레임(Original frame)과 재생 영상 프레임(Reconstructed Frame)간의 차분 영상(difference frame)의 정보에 대한 코딩을 수행한다.
현재 국제표준화가 진행중인 연합 스케일러블 비디오 코딩(JSVC)에서 지원하는 FGS 방법은 국제표준안이 확정된 MPEG-4 Part2 Visual에서의 FGS 프로파일(profile)과 대비하여 미세입자 스케일러빌리티를 부여하는 기능적인 측면에서는 동일하지만, 해당 요구 사항을 처리하는 방법론에서는 큰 차이가 있다.
국제표준안인 MPEG-4 Part 2 Visual의 FGS 방법은, 각각의 픽셀값을 비트 평면(Bit-plane) 단위로 나누어 최상위 비트인 MSB(Most significant bit)부터 최하위 비트인 LSB(Least significant bit) 순으로 전송한다.
하지만, 연합 스케일러블 비디오 코딩(JSVC)에서 지원하는 FGS 방법은 비트 평면(Bit-plane) 단위의 처리 개념이 없어지고, 사인 비트(Sign-bit), 주요 비트(Significant-bit), 그리고 미세 비트(Refinement-bit)로 나눠, 이 순서대로 처리해야 할 데이터의 값을 인코더단에서 전송하고, 디코더단에서 해당 비트를 수신하여 처리하게 된다.
블록단위로 모든 데이터를 처리한 후에 다음 블록의 데이터를 처리하는 종래의 FGS 방법은 디코더단에서 수신되어 처리된 블록의 화질과 처리되지 않는 블록의 화질이 현저하게 다르다는 단점이 있는데, 연합 스케일러블 비디오 코딩(JSVC)은 이와 같은 단점을 보완하기 위하여 사이클릭(Cyclic)-FGS 방법이 도입되었다.
종래의 미세입자 스케일러빌리티(FGS) 방법은 각각의 블록 내에 존재하는 코딩해야 할 모든 계수 값을 전부 코딩한 후에 다음 블록에 존재하는 계수에 대한 코딩을 시작한다.
이에 반하여 사이클릭(Cyclic)-FGS 방법은, 각각의 블록내의 코딩 계수를 지그재그 스캔(zig-zag scan)을 하다가, 코딩해야 할 값을 만나면 1개의 계수값을 코딩한 후에 그 블록내의 다른 코딩 계수를 코딩하지 않고 다음 블록을 코딩한다. 즉 사이클릭(Cyclic)-FGS 방법은, 해당 블록내의 코딩하여야 하는 모든 계수 값을 코 딩하지 않고 다음 블록의 코딩으로 넘어간다.
다시 말해, 일반적인 FGS 방법은 각각의 4X4 블록내의 모든 중요한 계수들을 모두 코딩한 후에 인접한 다른 블록의 중요한 계수들을 코딩한다. 하지만, 사이클릭(cyclic)-FGS 방법은 각각의 4X4 블록 내에서 지그재그 스캔 순서로 스캔하다가 제일 처음 만난 중요한 계수의 주요 비트(Significant bit)를 코딩한 후에, 해당 블록의 중요 계수를 모두 코딩하지 않고, 다음에 인접한 블록으로 넘어가서 다음의 블록에서 제일 처음 만나는 중요 계수의 주요 비트를 코딩한다. 그리고 사이클릭 FGS 방법은 각각의 블록내의 1개의 중요 계수의 주요 비트를 코딩하게 되면, 한 사이클의 코딩이 완료되고, 다시 가장 왼쪽 블록으로 돌아와 두번째 중요 계수의 코딩을 수행하게 된다.
사이클릭(Cyclic)-FGS의 장점은 블록내의 모든 계수를 한꺼번에 처리하는 일반적인 FGS와 달리, 각각의 블록당 한 개의 주요 비트를 코딩한다. 이에 따라 사이클릭 FGS 방법은 일반적인 FGS 방법보다 모든 블록 내의 주요 비트를 골고루 처리하게 되어, 디코더단에서 디코딩이 완료된 블록과 전송 대역폭의 제한으로 인해 발생되는 디코딩이 완료될 수 없는 블록 간의 화질 차이가 크지 않게 된다. 즉 사이클릭 FGS 방법은 영상 프레임내의 모든 블록에 대한 화질 향상을 가능한 골고루 수행할 수 있게 되어, 블록간의 화질 차를 최소화할 수 있으며, 동일한 비트율에서, 블록내의 데이터를 모두 처리한 후 다음 블록의 데이터를 처리하는 일반적인 FGS 방법에 비하여 보다 많은 영상 블록의 화질을 향상시킬 수 있다.
물론 사이클릭(Cyclic)-FGS 방법에서 반복 사이클에 의해 코딩이 수행되는 블록의 수는 많지만, 코딩 및 디코딩 수행시 각각의 블록마다 코딩된 정보(DCT 변환계수 또는 픽셀 값)의 수는 1개씩이다. 다시 말해, 일반적인 FGS 방법과 사이클릭(Cyclic)-FGS 방법의 큰 차이점은, 일반적인 FGS 방법이 코딩을 수행하여야만 하는 블록내의 모든 데이터를 한꺼번에 처리하지만, 사이클릭 FGS 방법은 디코딩시 복호가 완료된 블록간의 화질 차이를 줄이기 위하여 각각의 블록내의 정보를 코딩시 조금씩 나눠서 코딩한다.
코딩을 수행하여야 하는 블록 내의 모든 주요 비트(Significant bit)를 한꺼번에 코딩하는 일반적인 FGS 방법은 동일한 비트율(Bit-rate)에서 강화되는 블록의 수가 사이클릭 FGS 방법에 비하여 많지 않다. 반면 사이클릭 FGS 방법은 동일한 비트율에서 강화되는 블록의 수는 많지만, 동일한 블록에 대하여 화질 향상이 되는 강도는 일반적인 FGS 방법에 비하여 상대적으로 약하다. 따라서, 연산 복잡도 면에서는 많은 수의 사이클을 돌면서 코딩하여야 하는 사이클릭 FGS 방법이 불리하지만, 동일한 비트율에서 불안정한 전송 환경에서 전체적으로 균등한 화질 향상을 위해서는 일반적인 FGS 방법에 비하여 사이클릭 FGS 방법이 유리하다.
다음에는 플렉서블 매크로 블록 오더링(FMO: Flexible Macroblock Ordering)을 이용해 관심 영역(ROI: Region of Interest)을 비관심 영역보다 최우선적으로 인코딩 및 디코딩을 수행하는 기술에 대해 설명한다.
유/무선 인터넷을 통해 영상 비트 스트림을 전송하는 경우, 전송 선로의 상태가 불안하여 계획된 영상 비트 스트림을 실시간으로 전송하지 못하는 경우가 흔하게 발생된다. 유/무선 인터넷과 같이 전송선로의 상태가 안정적이지 못하여 대역 폭이 급변하는 경우에도 전송된 영상의 실시간 복원을 수행하기 위해서는, 송신단으로부터 전송된 비트 스트림을 수신단에서 모두 수신하지 못하더라도 수신단에서 지금까지 수신된 부분적인 영상 비트 스트림만을 이용해 전송 영상을 실시간으로 복원할 수 있는 기술이 필요하다.
전술한 바와 같은 종래의 기술에서는, 모든 영상 프레임에 대한 인코딩과 디코딩이 최위쪽-왼쪽(Upper-Left)에 위치한 매크로블록(또는 블록)부터 시작하여 최아래쪽-오른쪽(bottom-left) 부분의 매크로 블록(또는 블록)까지의 영상 데이터를 순차적으로 처리하는 순차 스캔 오더(Raster Scan Order) 방법을 사용하고 있다.
만약, 부분적인 비트 스트림만을 수신하여도 영상 복원이 가능하도록 하는 스케일러블 코딩 방법에 순차 스캔 오더 방법을 적용하게 되면, 상위부분의 부분적인 매크로 블록이나 블록들만이 디코딩이 수행되어, 그 복원 영상이 수신장치의 화면에 표시되게 된다. 즉, 기본계층에서 전송된 비트 스트림과 강화계층에서 부분적으로 수신되어 디코딩된 비트 스트림이 합쳐져서 향상된 영상이 수신장치에서 재생된다. 그런데, 영상의 상위 부분의 데이터만 강화 계층에서 수신되어 디코딩이 완료되었다면, 재생 영상의 화질은 강화 계층에서 디코딩이 완료된 부분의 화질만이 향상되게 된다. 이때 향상된 부분의 영상이 시청자가 주목하지 않는 곳(예를 들어, 배경이나 주인공의 얼굴 등이 아닌 곳)이라면, 강화 계층용 비트 스트림을 수신하여 복원하는 과정이 사용자가 인지하지 못하는 부분을 처리하게 되어, 결국 쓸모없이 처리된 것과 같은 결과를 초래한다.
따라서 중요한 부분의 데이터, 즉 관심 영역(ROI)의 데이터를 먼저 전송하게 되면 수신단에서 비트스트림을 일부만 수신하였다 하더라도 관심을 갖는 부분의 데이터가 최우선적으로 전송되었기 때문에, 수신도 최우선적으로 수행되어, 결과적으로 주관적인 화질을 높일 수 있게 된다. 이에 필요한 스캔 오더는 국제 표준안인 H.264 (MPEG-4 AVC) 비디오 코딩 방법의 FMO(Flexible Macroblock Ordering)에서 박스 아웃(Box-out) 스캔 오더(Order)라고 명명하여 채택하고 있다.
이와 같이 관심 영역부터 전송하기 위한 방법으로는, 관심영역의 중심이 되는 중심좌표를 기준으로 좌표 주변을 돌면서 데이터를 전송하는 방법이 있다. 관심영역부터 코딩을 할 경우에 얻을 수 있는 이점은 동일한 비트율로 주관적인 화질을 높일 수 있다는 것이다. 같은 양의 추가 정보를 가지고 영상을 강화할 때에 사람의 시선이 집중되는 영상의 중심부, 즉 관심영역을 강화하는 것이 비관심영역 또는 나머지 영상 영역 (Left-over region)을 강화하는 것보다 화질이 더 좋게 느껴진다.
MPEG-4 FGS 방법 등의 종래 기술에서는 관심영역의 화질을 향상시키기 위한 방법으로 비트 이동(Bit-shift) 프로세스를 도입하여 사용하고 있다. 이 방법은 강화하고자 하는 관심영역에 대한 영상 정보 비트를 인코더에서 왼쪽 방향(MSB 방향)으로 일정량의 비트를 이동(Shift)시킨다. 이에 따라, 해당 관심영역의 정보비트가 비관심영역의 영상정보 비트에 비해 최우선적으로 인코딩(부호화)되어 비트 스트림으로 전송되고, 디코더에서도 해당 관심영역의 비트 스트림에 대한 디코딩(복호화)이 최우선적으로 수행된다. 이러한 결과로, 해당 관심영역에 대한 비트가 더 많이 복호되어, 실제로 디코딩되어 재생된 관심영역의 영상 화질이 향상된다.
종래 기술의 단점을 먼저 지적하면, MPEG-4 FGS 방법은 비트 이동(Bit- shift) 프로세스를 채택함으로써, 이를 수행하기 위한 연산 복잡도(Computational complexity)와, 처리를 위한 메모리 대역폭(Memory bandwidth) 등이 추가로 소요되며, 특히 블록 단위의 많은 양의 비트 이동 요소(Bit-shift factor)를 인코더에서 디코더로 항상 전송해야 하는 치명적인 단점이 있다.
관심영역을 비관심영역에 비해 강화하기 위해 도입된 비트 이동(Bit-shift) 처리 기술을 살펴보면 다음과 같다. 먼저 원 영상과 재생 영상간의 오차 영상 데이터(Residual Data)를 비트 평면(Bit-plane) 단위로 변환한다. 이 과정을 거치면 모든 오차 영상 데이터(Residual Data)는 N개의 비트 평면(Bit-plane)으로 변환된다. 이렇게 변환된 비트 평면(Bit-plane)은 관심 영역의 중요도에 따라 해당 영역에 위치한 비트 평면 단위의 영상 정보를 왼쪽으로(MSB 방향으로) 비트 이동(bit-shift)시키게 된다. 비트 이동(Bit-shift) 프로세스 과정에서 해당 정보를 위한 추가적인 비트 평면이 생성되게 된다. 이렇게 관심영역에 대한 비트 이동(Bit-shift) 과정을 마치게 되면 관심영역에 존재하는 영상정보가 중요도에 따라 MSB에 위치하게 된다. 그러므로 MSB부터 비트 평면별로 인코딩과 디코딩을 수행하는 FGS와 같은 비디오 코딩 방법에서는, 비관심영역의 영상 정보에 비하여 관심 영역에 존재하는 영상 정보가 가장 먼저 인코딩이 수행되고, 또한 디코딩이 수행된다. 이러한 결과로, 관심영역에 위치한 영상 정보를 여타 영역에 비하여 보다 많은 비트 평면 정보를 복호 할 수 있어, 해당 영역의 화질 향상을 달성할 수 있다.
하지만 2005년 6월 현재 국제표준안이 진행중인 MPEG-4 연합 스케일러블 비디오 코딩(JSVC)에서의 미세입자 스케일러블(FGS) 방법은 전술한 일반적인 FGS 방 법과는 달리 비트 평면(Bit-plane)을 형성하지 않는다. 즉, 연합 스케일러블 비디오 코딩에서 미세입자 스케일러빌리티(FGS) 방법은 비트 평면 대신 사인 비트(Sign bit), 주요 비트들(Significant bits), 미세 비트들(Refinement bits) 등의 집단(group)으로 나누어서 코딩을 수행하게 된다. 다시 말해, JSVC에서는 각각의 픽셀 값을 비트 평면으로 구성하지 않고, 세 개의 단계인 사인 비트, 주요 비트들, 미세 비트들로 만든다. 이렇게 만들어진 픽셀을 MPEG-4 FGS 방법과 같이 비트 이동(Bit-shift) 프로세스를 수행하면, 다음과 같은 문제점이 발생된다.
일반적인 FGS 방법은 코딩하여야 할 영상 정보를 비트 평면 단위로 변경하는데, 변경된 모든 비트 평면은 동일한 특성을 가지고 있다. 따라서 일반적인 FGS 방법은 전체적으로 비트 이동(Bit-shift)을 수행할 수 있다. 하지만, 연합 스케일러블 비디오 코딩(JSVC)에 적용된 FGS 방법은 주요 비트들(Significant bits)과 미세 비트들(Refinement bits)을 각각 별도 처리한다. 다시 말해, JSVC의 FGS 방법은 Significant Process에서 주요 비트들을 처리하고, Refinement Process에서 미세 비트들에 대한 처리를 수행하기 때문에, 비트 이동(Bit-shift)을 수행한다고 해도 해당 영상정보 전체(Significant bits + Refinement bits)가 비트 이동(bit-shift)되는 것이 아니라 주요 비트들(Significant bits)만 비트 이동되는 형태가 된다. 따라서 비트 이동된 값만큼 코딩(인코딩 및 디코딩)에 관련된 아무런 수행을 하지 않는 불필요한 대기 사이클이 추가로 생기게 된다. 이렇게 생긴 불필요한 많은 사이클로 인해 수행 속도 저하와 비트의 손실이 발생하게 된다. 또한 관심 영역(ROI)의 비트 이동된 비트를 코딩한 후에도 나머지 비관심영역 또는 나머지 영상 영 역(Left-over region)에 코딩할 값이 없더라도 영상 전체를 순행해야하기 때문에 비효율적이다.
전술한 바와 같이 사이클릭 미세입자 스케일러빌리티(FGS) 방법은, 하나의 블록(또는 매크로블록) 내에 코딩해야 할 값을 모두 코딩하지 않고, 각각의 블록내에서 지그재그 스캔 후에 제일 처음 만나는 단지 하나의 값만 코딩한 후에 다음 블록의 코딩을 동일한 방법으로 수행하게 된다. 그리고 모든 블록내의 한 개의 값에 대한 코딩을 완료하면 1개의 사이클이 종료되고, 다시 처음부터 각각의 블록내에서 다음으로 코딩해야 할 값을 찾아 코딩을 수행하게 된다. 따라서 하나의 영상을 모두 코딩하는데 많게는 80번 가량의 사이클이 수행된다.
이러한 사이클릭 FGS의 장점은 전술한 바와 같이, 계산 복잡도는 높은 반면에, 많은 블록내의 화질을 조금씩 고르게 개선시킬 수 있다는 것이다. 이에 따라, 강화 계층의 데이터 손실에도 바로 손실 직전에 강화한 블록과 다음에 강화할 블록간의 화질 차이가 크지 않다. 따라서 사이클릭 FGS의 가장 큰 장점은 가능한 많은 블록을 블록간 화질 차이를 최소화하며 점차적으로 화질을 개선시킬 수 있다는 점이다.
하지만 이와 같은 사이클릭 FGS의 장점은 관심 영역의 화질 강화를 위한 목적을 수행하기 위해서는 필연적인 단점으로 작용한다. 그 이유는 다음과 같다.
상기 설명한 바와 같이 일반적인 FGS 방법은 각각의 블록에 대한 코딩을 모두 완료한 후에 다음 블록에 대한 코딩을 수행한다. 따라서 코딩(인코더단에서 인코딩 및 디코더단에서 디코딩)이 완료된 블록은 코딩이 수행되지 않은 블록에 비하 여 확실한 화질 강화를 이루게 된다. 반면 사이클릭 FGS 방법은 1 사이클 내에서 코딩 시 각각 블록내에서 단 1개의 주요 비트만 코딩하고 인접한 다음 블록의 코딩으로 넘어가기 때문에, 1 사이클 내에서 코딩이 완료되어 영상의 화질이 향상된 블록과 코딩이 완료되지 않은 블록간의 화질차는 별로 크지 않게 된다. 즉 사이클릭 FGS 방법은, 동일한 비트율로 비교해 보면 관심 영역내의 화질을 중점적으로 강화시키는 것이 목적이 아니라, 매 사이클의 코딩이 완료될 때마다, 코딩이 완료된 블록의 화질을 점진적으로 향상시켜 전체 영상 영역의 화질을 골고루 강화시킨다.
따라서, 본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위하여 제안된 것으로, H.264 (MPEG-4 AVC)의 플렉서블 매크로블록 오더링(FMO: Flexible Macroblock Ordering)에서의 박스 아웃(Box-out) 스캔 방법에 가상링(Virtual Ring)의 개념을 적용하여, 각각의 가상링 단위로 코딩 시 반복 스캔 횟수를 변경하며 해당 영상 영역의 정보를 전송하고 복호화함으로써, 관심 영역의 화질을 향상시킬 수 있는 사이클릭 미세입자 스케일러빌리티 기반에서 플렉서블 매크로 블록 오더링에 의한 코딩방법과 상기 코딩 방법을 실행시키기 위한 프로그램을 기록한 기록매체를 제공하는데 그 목적이 있다.
본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상기 목적을 달성하기 위한 본 발명은, 사이클릭 미세입자 스케일러빌리티(FGS) 기반에서 플렉서블 매크로 블록 오더링에 의한 코딩방법에 있어서, 관심 영역을 나타내는 가상링 수와, 영상 블록으로 표시되는 가상링 두께와, 반복스캔횟수와, 시작 위치를 포함하는 초기 정보를 확인하는 제1 단계; 상기 시작 위치와 상기 가상링 두께 정보를 이용해 코딩할 제1 가상링 영역을 설정하는 제2 단계; 상기 설정된 제1 가상링 영역 내의 영상 블록의 계수들을 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제3 단계; 상기 제3 단계 수행 후, 상기 반복스캔횟수를 확인하고, 상기 제1 가상링의 영역에 상기 가상링 두께를 더해 다음 코딩할 가상링 영역을 설정하는 제4 단계; 상기 시작 위치부터 상기 제4 단계에서 설정된 가상링 영역까지 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제5 단계; 및 상기 나머지 가상링 수의 확인을 통해 모든 관심 영역에 대한 코딩이 완료되면 상기 관심 영역 이외의 나머지 영상 영역에 대한 코딩을 수행하는 제6 단계를 포함한다.
또한, 본 발명은, 사이클릭 미세입자 스케일러빌리티(FGS) 기반에서 플렉서블 매크로 블록 오더링에 의한 코딩을 수행하는 프로세서에서, 관심 영역을 나타내는 가상링 수와, 영상 블록으로 표시되는 가상링 두께와, 반복스캔횟수와, 시작 위치를 포함하는 초기 정보를 확인하는 제1 단계; 상기 시작 위치와 상기 가상링 두 께 정보를 이용해 코딩할 제1 가상링 영역을 설정하는 제2 단계; 상기 설정된 제1 가상링 영역 내의 영상 블록의 계수들을 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제3 단계; 상기 제3 단계 수행 후, 상기 반복스캔횟수를 확인하고, 상기 제1 가상링의 영역에 상기 가상링 두께를 더해 다음 코딩할 가상링 영역을 설정하는 제4 단계; 상기 시작 위치부터 상기 제4 단계에서 설정된 가상링 영역까지 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제5 단계; 및 상기 나머지 가상링 수의 확인을 통해 모든 관심 영역에 대한 코딩이 완료되면 상기 관심 영역 이외의 나머지 영상 영역에 대한 코딩을 수행하는 제6 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
본 발명은 사이클릭 FGS 코딩 방법에서 관심영역의 화질을 향상시키기 위하여, 종래 기술에서 사용하는 비트 이동 프로세스 등의 방법이나 해당 장치 등을 사용하지 않고, 관심 영역에 대한 화질 향상을 이룩할 수 있는 가장 좋은 수단을 제공한다. 본 발명의 핵심은 사이클릭 FGS 방법을 사용하는 비디오 코딩에서, 관심 영역을 중점적으로 강화시키기 위해 H.264 (MPEG-4 AVC)의 FMO(Flexible Macroblock Ordering)에서의 박스 아웃 스캔에 가상링(Virtual Ring)의 개념을 적용시켜, 각각의 가상링 단위로 코딩 시 반복 스캔 횟수를 변경하며, 해당 영상영역의 정보를 전송하고 복호하여 관심영역의 화질을 향상시키도록 한데 있다.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명하기로 한다.
먼저, 본 발명에서 적용된 박스 아웃 스캔 방법에 도입되는 가상링(Virtual Ring)에 대한 개념을 도 1을 참조하여 설명한다.
도 1에서, 플렉서블 매크로 블록 오더링(FMO)의 박스 아웃 스캔을 수행하는 과정에서, 관심 영역의 중심에 제1 가상링이 있고, 중심으로부터 외곽 쪽으로 나가면서 제2 가상링, 제3 가상링, 제4 가상링 등의 가상링들이 존재한다. 이런 방법으로 영상 내에 강화하고자 하는 관심영역에 여러 개의 가상링을 생성하고, 각각의 가상링에 적용되는 영상 화질의 강화 정도에 맞추어 인코더단과 디코더단이 서로 약속하에 화질 강화(enhancement)를 수행한다.
각각의 가상링에 존재하는 블록들에 대한 강화되는 양은 후술되는 강화 모드 (Enhancement Mode)에 따라 달라지며, 전체적으로 영상의 화질을 강화시키는 형태는 각각의 가상링마다 설정된 화질 향상 강화 요소(Enhancement Factor)에 따라 달라진다. 화질 향상 강화 요소는 추후 설명하겠지만, 해당 가상링에 대한 코딩 수행 시 얼마나 많은 횟수의 스캔을 반복 수행하는가이다. 따라서 강화 요소는 본 발명에서는 종래 기술에서 사용하는 비트 이동 요소가 아니라 각각의 가상링에 다르게 적용되는 반복 스캔 횟수(RSF)이다.
각각의 가상링마다 다르게 적용되는 반복 스캔 횟수를 이용하게 되면, 종래 기술의 단점인 관심영역의 화질 향상을 위한 프로세스 수행에 의해 추가로 발생되는 연산 복잡도와 해당 프로세스에 요구되는 추가적인 메모리 대역폭, 그리고 비트 이동 프로세스에 의해서 발생되지만 실제로 사이클릭 FGS 기술에서 만족할만한 효과를 얻을 수 없는 각각의 블록 당 비트 이동 요소를 인코더단에서 디코더단으로 전송해야 하는 비트의 양을 상당량 줄이면서 관심영역의 화질을 향상시킬 수 있다.
사이클릭 FGS 방법은 하나의 블록을 모두 코딩하기 위해 해당 블록을 여러번 반복해 사이클 단위의 코딩을 수행한다. 즉, 사이클 반복을 수행할수록 각각의 블록당 1개씩의 비트가 코딩되기 때문에, 본 발명에서는 관심 영역내에 위치한 강화시킬 블록을 더 많이 코딩할 수 있도록 가상링 단위의 반복 스캔 횟수를 달리함으로써, 코딩 순서를 조정한다. 다시 말해, 본 발명은 강화 블록이 위치하는 가상링의 반복 스캔 횟수를 강화 블록이 위치하지 않은 가상링보다도 많은 수의 스캔이 발생되도록 한다. 이는 인코더와 디코더가 사전 약속을 통하여 아니면 인코더측에서 디코더 측에 스캔 횟수에 대한 정보를 전달하는 것에 의해 달성될 수 있다. 이렇게 반복 코딩을 하면 가상링의 강화 블록들 내에서 더 많은 영상 데이터를 코딩할 수 있기 때문에 화질 개선을 이룰 수 있다.
현재 국제표준안이 진행중인 MPEG-4 JSVM은 4x4 단위로 변환하여 사이클릭 FGS를 수행한다. 이하의 실시예에서도 사이클릭 FGS가 4x4 블록 단위에 적용되는 경우를 예로 들어 설명하기로 한다. 하지만, 본 발명은 이에 한정되지 않고 이외에도 8x8, 16x16 등의 블록 단위에도 적용될 수 있음은 당연하다.
4X4 단위의 블록은 그 크기가 상대적으로 작기 때문에, 2개의 블록 크기를 기준으로 하나의 가상링으로 구성한다. 단, 8x8 블록이나 16x16 매크로블록(MB : Macroblock) 단위의 경우에는 1개의 블록을 하나의 가상링으로 구성한다. 즉, 각각의 가상링은 X축 방향으로 강화링의 폭(width)이 8 픽셀 그리고 Y축 방향으로 강화링의 높이(height)가 8 픽셀 크기로 설계 가능하다.
도 2는 하나의 가상링의 폭과 높이가 각각 8 픽셀 단위로 설계되어, 관심 영역 내에 총 4개의 가상링이 구성된 모습을 상징적으로 도식화한 도면이다. 각각의 가상링의 폭이 8 픽셀인 경우, 4X4 블록 단위로 박스 아웃 스캔을 수행할 때, 한 개의 가상링의 코딩이 완료되기 위해서는 두 번의 스캔을 완료하여야 한다. 따라서 본 발명에서는 알고리즘의 구현 편의상 가상링 내에 부가상링(sub-virtual ring)이 존재하는 것처럼 설계한다. 블록의 크기가 8x8 또는 16x16 단위로 크게 설정된 경우에는 부 가상링(sub-virtual ring)을 설정할 필요가 없다. 즉 한 개의 가상링의 폭이 8 픽셀 단위의 경우, 해당 가상링내에, 4 픽셀 단위의 부가상링이 2개가 존재하는 것으로 간주한다.
가상링의 두께(폭과 높이) 역시 인코더와 디코더가 약속하에 조절이 가능하므로 영상의 강화 영역에 따라 조절할 수 있다. 가상링의 두께조절 및 가상링의 수에 대한 자세한 내용은 후술하기로 한다.
도 3은 강화를 하고자 하는 관심 영역(ROI)의 중심점을 나타낸다. 도 3에 나타낸 중심위치부터 주위를 회전하면서 강화를 시작한다. 코딩 시작위치는 임의의 위치(x, y)를 갖는다. 따라서 관심영역의 중심을 (x, y) 좌표로 넘긴다면 그 영역 의 화질을 강화시킬 수 있다. 강화시킬 위치는 각 프레임마다 전송되며, 가변적이다.
일실시 예로서, 도 4는 가상링의 크기가 '2 X 블록 크기'일 때, 제1 가상링까지 코딩을 수행한 모습을 보여준다. 가상링의 기본적인 두께는 '2'로 설정되어 있다. 16x16 블록 기준인 경우의 기본 두께는 '1'이다. 따라서 하나의 링을 코딩하기 위해 두 개의 4x4 블록 링을 코딩한다. 이렇게 한 사이클을 마치면 1 사이클이 종료되고, 가상링의 영역은 제2 가상링까지 넓어진다. 그리고 다시 시작위치(x, y)부터 같은 방법으로 코딩을 시작하게 된다. 도 5에 제2 가상링의 코딩에 대해 도시하였다.
도6a 내지 도6f를 참조하여 본 발명에 따른 화질 개선을 위한 코딩 방법을 설명한다.
도면에서, 사용자가 관심 있는 관심영역은 링의 폭이 2 X 블록 크기인 3개의 가상링내의 영역이라고 가정하고, 그외 영상 프레임내의 나머지 영역은 관심 영역 이외의 나머지 영상 영역(Left-over)이라고 가정한다. 관심 영역내의 영상의 화질을 나머지 영상 영역(Left-over) 내의 영상 화질보다 향상시킬 수 있는 방법을 설명하면 다음과 같다.
1 단계: 도 6a는 사이클릭 FGS의 코딩시 첫번째 사이클에서 제1 가상 링내의 영상 블록내의 계수(coefficient)들을 박스 아웃 스캔 순서대로 코딩하는 것을 상징적으로 도시하고 있다. 첫번째 사이클이 종료되면, 제1 가상링 내의 각각의 블록들 내에서 지그재그 스캔 순서로 첫번째 만나는 계수들의 코딩이 완료된다.
2 단계: 도 6b는 1 단계가 수행 완료된 후에 사이클릭 FGS의 코딩시 두번째 사이클에서 관심 영역의 화질을 향상시키기 위하여 다시 한번 제1 가상링에 한정된 블록내의 계수들을 박스 아웃 스캔 순서대로 코딩하는 것을 보여주고 있다. 두번째 사이클이 종료되면, 제1 가상링 내의 각각의 블록들 내에서 지그재그 스캔 순서로 두번째 만나는 계수들의 코딩이 완료된다.
3 단계: 도 6c는 2 단계가 완료된 후에 사이클릭 FGS의 코딩시 세번째 사이클에서 제1 가상링부터 제2 가상링내에 존재하는 블록들에 대한 코딩을 박스 아웃 스캔 순서대로 코딩하는 것을 보여주고 있다. 세번째 사이클의 코딩이 종료되면, 제1 가상링 내에 존재하는 각각의 블록내에서 지그재그 스캔 순서로 세번째 만나는 계수들의 코딩이 완료되며, 제2 가상링내의 각각의 블록내에서 지그재그 스캔 순서로 첫번째 만나는 계수들의 코딩이 완료된다.
4 단계: 도 6d는 3 단계가 완료된 후에, 사이클릭 FGS의 코딩시 네번째 사이클에서 다시 한번 제1 가상링부터 제2 가상링내에 존재하는 블록들에 대한 코딩을 박스 아웃 스캔 순서대로 코딩을 수행하여 관심 영역내의 화질 향상을 도모하는 것을 상징적으로 도시하고 있다. 네번째 사이클의 코딩이 완료되면, 제1 가상링 내에 존재하는 각각의 블록내에서 지그재그 스캔 순서로 네번째 만나는 계수들의 코딩이 완료되며, 제2 가상링내의 각각의 블록내에서 지그재그 스캔 순서로 두번째 만나는 계수들의 코딩이 완료된다.
5 단계: 도 6e는 4 단계가 완료된 후에, 사이클릭 FGS의 코딩시 다섯번째 사이클에서 제1 가상링부터 제3 가상링내에 존재하는 블록들에 대한 코딩을 박스 아 웃 스캔 순서대로 코딩을 수행하여 관심 영역내의 화질 향상을 도모하는 것을 상징적으로 도시하고 있다. 다섯번째 사이클의 코딩이 완료되면, 제1 가상링 내에 존재하는 각각의 블록내에서 지그재그 스캔 순서로 다섯번째 만나는 계수들의 코딩이 완료되며, 제2 가상링내의 각각의 블록내에서 지그재그 스캔 순서로 세번째 만나는 계수들의 코딩이 완료되고, 제3 가상링내의 각각의 블록내에서 지그재그 스캔 순서로 첫번째 만나는 계수들의 코딩이 완료된다.
6 단계: 도 6f는 5 단계가 완료된 후에, 사이클릭 FGS의 코딩시 여섯번째 사이클에서 제1 가상링부터 시작해서 나머지 영상 영역(left-over) 내의 블록을 포함하여 영상 프레임내의 모든 블록 내에 존재하는 블록들에 대한 코딩을 박스 아웃(Box-out) 스캔 순서대로 코딩하는 것을 보여주고 있다. 여섯번째 사이클의 코딩이 완료되면, 제1 가상링 내에 존재하는 각각의 블록내에서 지그재그 스캔 순서로 여섯번째 만나는 계수들의 코딩이 완료되며, 제2 가상링내의 각각의 블록내에서 지그재그 스캔 순서로 네번째 만나는 계수들의 코딩이 완료되고, 제3 가상링내의 각각의 블록내에서 지그재그 스캔 순서로 두번째 만나는 계수들의 코딩이 완료되며, 나머지 영상 영역(left-over region)내의 각각의 블록 내에서 지그재그 스캔 순서로 첫번째 만나는 계수들의 코딩이 완료된다.
7 단계: 6 단계의 수행을 임의의 수 i 번 반복적으로 수행하면, 영상 전체적으로 각각의 블록내에서 i 만큼의 계수를 더 코딩할 수 있게 된다. 이로써 도면에 도시된 바와 같이 가상링에 각각 주어진 화질 향상 정도에 따라 인코더 단과 디코더 단이 서로 약속하에 코딩 시 각각의 가상링에 대한 스캔 횟수를 다르게 설정함 으로써, 관심 영역 내의 화질 향상을 이룩할 수 있다.
본 발명에 따른 방법을 수행하기 위해, 인코더 측에서 디코더 측으로 다음의 정보를 전송하여 스캔 횟수나 위치 등의 동기화를 수행한다. 본 발명을 수행하기 위하여 화상 헤더나 각 슬라이스 헤더에 포함되는 구문(Syntax)은 다음과 같다.
1) Using AFMO: 본 발명의 방법을 사용할 것인지 여부를 묻는 1비트의 플래그 비트
2) Coding Mode: 제1 모드(Normal 강화 모드)/제2 모드(Strong 강화 모드)
3) Ring Width: 가상링의 두께
4) The number of virtual ring (<N): 가상링의 수
5) Recursive Scan Frequency: 각각의 가상링에 대한 반복 스캔 횟수
6) Center Position Fixed: 가상링의 중심 위치가 영상 프레임내의 정중앙인지 아닌지를 나타내는 비트
7) Multiple ROI: 관심 영역이 1개인지 여러 개인지를 나타내는 비트
8) Center Position (X, Y): 임의 위치가 시작점인 경우 시작점의 (X, Y) 좌표
본 발명은 임의의 시작위치(x, y)부터 한 프레임의 가장자리까지 박스 아웃 스캔 순서로 코딩을 하지만, 본 발명의 특징은 영상 화질의 향상 정도에 의해 정해진 가상 링까지 코딩을 하게 되면, 다시 중심위치부터 코딩을 반복하여 시작하게 된다. 따라서 각각의 가상링에 대한 반복 코딩 횟수가 화질 향상 정도에 따라 각각 다르게 된다.
설명의 편의상, 가상 링에 대한 코딩이 허가된 링이란 뜻으로 변수 AllowRing으로 표시한다. 즉 시작위치부터 AllowRing까지 코딩을 한 후에 AllowRing은 가상 링의 두께(Width)만큼 늘어나고 다시 중심위치(시작위치)부터 코딩을 시작하게 된다. 이런 방법으로 남은 가상링의 개수가 0이 될 때까지 코딩을 하게 된다.
본 발명은 관심 영역 이외의 나머지 영상 영역(Left-over region)의 블록에 비하여 관심 영역내의 블록에 대한 코딩 사이클을 더 많이 할당함으로써, 해당 블록 코딩을 수행하는 기회를 더 많이 부여하기 때문에, 관심 영역과 나머지 영상 영역의 블록들에 대한 동일한 양의 코딩이 아닌 비 균등한 코딩 기회를 갖게 된다.
따라서 상대적으로 관심 영역은 보다 높은 화질을 갖게 되고, 관심 영역 이외의 나머지 영상 영역은 관심 영역보다 비교적 낮은 화질을 갖게 된다. 하지만 인간의 시각은 관심 영역의 화질이 증가 되었기 때문에 전체적으로 더 좋은 화질을 갖는 영상이라고 느낄 것이다.
본 발명은 초기에 가상링의 수(NumVR)와 반복 스캔 횟수(RSF) 등의 각종 정보를 읽어 각각의 가상링에 대한 반복 스캔 횟수를 결정하기 위한 남은 가상링 수(RVR: Rest of Virtual Ring)를 설정하고 강화를 시작한다.
남은 가상링 수(RVR)를 설정함에 있어, 구성의 편의상 인접한 가상링의 반복 스캔 횟수 값이 동일한 경우, 동일한 반복 스캔 횟수 값을 갖는 가상링을 통합하여 설정한다. 남은 가상링 수(RVR)는 다음과 같은 예제의 방법으로 설정한다.
실제 적용 예로서, 가상링의 수(NumVR)가 4이면 4개의 AllowRing 테이블을 만들고 남은 가상링 수(RVR)를 4로 설정한다. 그 후에 AllowRing 테이블에 반복 스캔 횟수에 따라 테이블을 만든다.
1) 가상링의 수(NumVR) 만큼의 크기로 AllowRing 테이블을 만든다.
2) i 번째 (i>1) 가상링의 반복 스캔 횟수(RSF)와 (i+1)번째 가상링의 반복 스캔 횟수(RSF)의 차이를 i번째 가상링의 강화 차이(ED: Enhancement Different)로 설정한다. 즉, ED(i) = RSF(i) - RSF(i+1)
3) 강화 차이(ED)가 0이 아닌 개수를 남은 가상링 수(RVR)로 설정한다.
4) 강화 차이(ED)의 수만큼 AllowRing 테이블에 순서대로 각각의 가상링에 대한 실제 스캔 횟수를 할당한다.
5) 이렇게 만들어진 AllowRing 테이블 값을 매번 AllowRing으로 설정하여 수행한다.
6) 가상링을 반복 스캔하는 것은 다음과 같이 정의한다.
FromVR(i)toVR(j): 가상 링 i부터 가상 링 j까지 박스 아웃 스캔을 수행한다.
예를 들어, 가상링 수가 4이고, 반복 스캔 횟수가 {4, 3, 2, 1}인 경우 AllowRing 테이블은 다음 표1과 같이 구성된다.
이에 대해 살펴보면, 먼저 4개의 가상링을 위한 AllowRing 테이블을 만든다. 그리고 각 반복 스캔 횟수(RSF)에 대한 강화 차이(ED)를 구한다. 제일 마지막 가상링의 반복 스캔 횟수(RSF) 값은 0과의 차이 값을 구한다. 이에 따라 강화 차이 값 은 [1, 1, 1, 1]이다.
AllowRing Table | Enhancement Different | Virtual Ring |
1 | 1 | FromVR(1)toVR(1) |
2 | 1 | FromVR(1)toVR(2) |
3 | 1 | FromVR(1)toVR(3) |
4 | 1 | FromVR(1)toVR(4) |
표1의 내용을 설명하면 다음과 같다.
AllowRing[1]에는 제1 가상링까지 1번의 스캔을 수행하는 정보가 수록되어 있다("FromVR(1)toVR(1)", ED[1]=1).
AllowRing[2]에는 제1 가상링에서 제2 가상링까지 1번의 스캔을 수행하는 정보가 수록되어 있다("FromVR(1)toVR(2)", ED[2]=1).
AllowRing[3]에는 제1 가상링에서 제3 가상링까지 1번의 스캔을 수행하는 정보가 수록되어 있다("FromVR(1)toVR(3)", ED[3]=1).
마지막으로 AllowRing[4]에는 제1 가상링에서 제4 가상링까지 1번의 스캔을 수행하는 정보가 수록되어 있다("FromVR(1)toVR(4)", ED[4]=1).
다음은 가상링의 수가 4이고 반복스캔횟수가 {4, 2, 2, 1}인 경우에 대해 살펴보면 다음과 같다.
전술한 바와 같은 과정을 통해 테이블을 구성하면 표2와 같다.
AllowRing Table | Enhancement Different | Virtual Ring |
1 | 2 | FromVR(1)toVR(1) |
2 | 0 | Pass |
3 | 1 | FromVR(1)toVR(3) |
4 | 1 | FromVR(1)toVR(4) |
표 2에서 AllowRing[1]의 강화 차이(ED[1])값이 2이면, 제1 가상링에 대한 박스 아웃 스캔을 2번 실시한다. AllowRing[2]의 ED[2]값은 0이다. 이는 제2 가상링과 제3 가상링의 스캔 횟수가 동일하다는 것을 의미하며, 따라서 제3 가상링에 대한 반복스캔시 제2 가상링에 대한 스캔을 동일하게 처리하도록 한다. 그런 의미에서 제2 가상링에 대한 반복 스캔을 패스(Pass)하여 다음의 가상링에 대한 처리로 넘어간다. AllowRing[3]의 ED[3]값이 1이기 때문에, 제1 가상링부터 제3 가상링까지의 박스 아웃 스캔을 1회 실시한다. 마찬가지로 AllowRing[4]의 ED[4]값이 1이기 때문에, 제1 가상링부터 제4 가상링까지의 박스 아웃 스캔을 1회 실시한다.
코딩을 수행할 때, 하나의 가상링을 코딩하고 나면 남은 가상링 수(RVR) 값을 하나씩 줄이고 남은 가상링 수(RVR) 값이 0이 되면 모든 가상링이 코딩된 것이므로 AllowRing을 -1로 설정한다.
AllowRing = -1의 의미는 관심영역 내의 모든 가상링이 코딩되었으니 나머지 영상 영역(Left-over Region)을 모두 코딩하라는 것이다.
이상에서 설명한 본 발명을 도 7을 참조하여 보다 상세히 설명한다.
도 7은 본 발명에 따른 코딩 방법을 설명하기 위한 흐름도이다.
본 발명에 따른 코딩을 수행하기 위해서는 인코더단에서 디코더단으로 코딩에 필요한 각종 정보를 보내 주어야 한다. 본 발명을 위해 전송 비트 스트림에 삽입하여 전송 및 수신되는 정보와 관련된 구문(Syntax)은 다음과 같다. 구문(Syntax) 정보는 비트 스트림내에서 화상 헤더(Picture_Header) 또는 첫번째 슬라이스 헤더(Slice_Header)에 삽입될 수 있다.
A-FMO: 본 발명에 따른 코딩을 사용할 것인지를 나타내는 1 비트의 플래그로, 만약 본 발명에 따른 코딩을 사용하지 않는다면 기존의 비디오 코딩 방법과 같은 순차 스캔 오더(Raster Scan Order)를 적용하여 코딩을 수행하고, 본 발명에 따른 코딩을 사용한다면 다음의 정보를 읽는다.
코딩 모드(Coding Mode): 코딩 모드는 1 비트로 구성되며, 코딩 모드에 따라 관심 영역에 위치한 각각의 가상링에 적용되는 반복 스캔 횟수의 크기에 따라 강화량의 차이가 생기게 된다.
가상링 두께(RingWidth): 가상링의 두께는 2 비트로 구성되며, 가상링의 두께에 따라 가상링의 최대값이 정해 진다.
다음으로는 몇 개의 가상링을 강화할 것인지에 대한 정보(4x4블록의 경우 4비트, 16x16블록의 경우, 3 비트)를 읽는다.
강화할 가상링의 정보를 읽은 다음, 강화할 가상링의 수(N)만큼 반복 스캔 횟수 값(이는 2 비트로 구성)을 읽는다. 소요되는 비트량은 "N x 2 비트"이다.
다음으로, 시작위치와 관심 영역 개수를 읽는다.
이와 같이 초기 정보를 읽고 난 다음에(101), 영상 블록에 대한 코딩을 위해, 관심 영역의 개수와 시작 위치를 확인한다(102). 시작위치가 고정된 중앙 위치라면 한 개의 관심 영역이 존재하고 그 위치는 영상의 중앙이 된다. 따라서 영상의 중앙부터 박스 아웃 스캔 순서로 코딩을 수행하게 된다. 만약 고정된 중앙 위치가 아니라면, 영상 내의 임의의 위치가 박스 아웃 스캔의 시작위치가 되며 그 위치(X, Y)를 읽어오게 된다.
한편, 고정된 중앙 위치가 아니고, 화면 내의 임의의 위치에서 시작하는 관심 영역이 한 개가 아니라 여러 개이면 몇 개의 강화영역이 존재하는지 그 수(number of center position)를 확인한다. 관심 영역의 개수 값이 '0'이면 2개의 관심 영역 중심위치가 존재하고, '1'이면 3개의 관심 영역 중심위치가 존재한다. 현재는 3개의 관심 영역으로 제한되어 있으나, 이 수는 더 많은 비트를 할당함으로써 얼마든지 확장 가능하다. 그리고 관심 영역의 중심위치의 수만큼 반복하면서, 각각의 중앙 위치의 (X, Y)좌표를 확인하고, 각각 해당 위치부터 박스 아웃 스캔 순서에 의해 코딩을 시작한다.
관심 영역의 중심 위치의 범위는 픽셀 단위가 아닌 4x4블록 또는 8x8블록 또는 16x16블록단위이다. 따라서 가로축(X)으로 0~44, 세로축(Y)으로 0~36까지 최대로 존재한다.
다음으로는 영상 블록에 대한 코딩 과정을 구체적으로 살펴본다.
표3은 본 발명에 따른 코딩 방법을 설명하기 위한, 초기 정보의 예를 나타낸다.
Parameters | Value | Description |
CenterPos | Arbitrary Position | VR Starting position |
RingWidth | 2 | User input |
AllowRing | 2 | Initial allow_ring_width |
MoveFactor | 1 | Coding factor for each direction |
CodedRing | 0 | Coded ring |
RVR | 4 | The Rest of Virtual ring |
표3의 내용을 살펴보면, 가상링의 중심 위치(CenterPos)가 가변이며, 가상링의 두께(Ringwidth)는 2 X 블록 크기이고, 'AllowRing'의 두께 역시 2 X 블록 크기로 초기화되어 있으며, 박스 아웃 스캔 방향의 초기 방향은 1로 설정되어 있고('MoveFactor =1), 남은 가상링 수(RVR)는 4로 설정되어 있는 경우를 나타낸다. 이와 같은 초기 설정 값을 읽어 코딩하는 과정을 도8 내지 도11을 참조하여 설명한다.
관심 영역에 대한 코딩을 수행하기 위해, 시작 위치와 가상링 두께를 이용해 코딩할 제1 가상링의 영역을 설정한다(103). 표3의 초기값에서 가상링 두께가 2 X 블록 크기로 설정되어 있기 때문에, 제1 가상링 또한 시작 위치에서 2 X 블록의 영역으로 설정된다.
그런 다음 제1 가상링 영역 내의 영상 블록의 계수들을 박스 아웃 스캔 순서대로 코딩을 수행한다. 하나의 가상 링에 대한 코딩이 완료되면, 나머지 가상링 수(RVR)를 "1" 감소시킨다(104).
도8 이하를 참조하여 하나의 가상링 영역에 대한 코딩 과정을 구체적으로 살펴보면 다음과 같다.
'MoveFactor'는 코딩될 블록의 수를 나타낸다. 하나의 링 코딩이 완료되면 'MoveFactor'는 2씩 증가된다.
제1 가상링 영역에 대한 코딩을 위해, 제1 가상링의 범위를 'AllowRing'에 넣고 시작 위치부터 코딩을 시작한다. 즉, 처음에 표 3에 나타낸 값과 같이 초기 값을 설정한다. 'AllowRing'은 2이고, 도 8에 도시된 바와 같이 가상링의 시작 위치부터 위쪽방향으로 코딩을 하려 한다. 이때 한 개의 블록에 대한 코딩을 완료하면 코딩 방향을 표시하는 변수인 'Moved'는 1씩 증가하게 되며, 'Moved'와 'MoveFactor'의 값이 같아지면 코딩 방향을 바꾼다. 그러므로, 시작위치의 블록 코딩이 완료된 후의 'Moved' = 1이 되고, 초기화 값인 'MoveFactor'=1로서 같기 때문에 처음 블록의 코딩을 완료한 후에 다음 블록을 위한 코딩 방향을 도 9에 도시된 바와 같이 바꾼다. 방향을 바꿈과 동시에 방향변수인 'Moved'는 다시 초기화(= 0)된다.
4개의 방향에 대한 코딩을 수행하게 되면, 하나의 가상링이 코딩이 된다. 따라서 'CodedRing'은 1이 증가되며, 'CodedRing' 값이 'AllowRing'의 값과 동일한지 확인한다. 확인 결과, 'CodedRing' 값이 "1"이고, 'AllowRing' 값이 "2"이므로, 아직 'AllowRing'을 모두 코딩한 것은 아니므로, 도 10a 내지 도 10c에 도시된 바와 같이 가상링의 두께에 해당하는 나머지 부분인 부가상링에 대한 코딩을 계속한다.
가상링내의 부가상링을 코딩하기 위해서 도 10c에 도시된 바와 같이 코딩을 시작할 블록의 위치를 왼쪽으로 한 블록 이동시킨다. 또한 'MoveFactor' 값을 2만큼 증가시킨다. 이상과 같은 과정을 통해 코딩 방향을 변경하면서 제1 가상링내의 링 두께에 따른 부가상링에 대한 코딩을 모두 완료하면, 도 11에 도시된 바와 같이 제1 가상링에 대한 코딩을 모두 완료하게 된다. 하나의 링에 대한 코딩이 완료되면, 나머지 가상링 수를 나타내는 'RVR'값을 "1" 감소시킨다(104).
하나의 가상링에 대한 코딩이 완료되면, 모든 관심 영역(ROI)에 대한 코딩이 완료되었는지 확인한다(105). 즉, 나머지 가상링 수(RVR)가 "0"인지를 확인한다. 만약, 나머지 가상링 수가 "0"보다 크면 아직 관심 영역에 대한 코딩이 모두 완료된 상태가 아니므로, 관심 영역의 코딩을 위해 반복 스캔 횟수를 확인한다(106). 하지만, RVR 값이 "0"으로 모든 관심 영역에 대한 코딩을 완료하였으면, 관심 영역 이외의 나머지 영상 영역에 대한 코딩을 수행한다(113).
한편, 반복 스캔 횟수를 확인하여(106), 다음 코딩할 가상링과 이전 코딩한 가상링 간의 강화 차이가 "1"보다 크면(107), 이전 코딩한 제1 가상링 영역내의 영상 블록을 다시 반복해서 코딩하고 나머지 가상링 수를 "1" 감소시킨다(108). 그런 다음 모든 관심 영역(ROI)에 대한 코딩을 완료하였는지 확인한다(105).
반복 스캔 횟수를 확인하여 다음 코딩할 가상링과 이전 코딩한 가상링 간의 강화 차이가 "1'이면(109), 코딩한 제1 가상링 영역에 가상링 두께만큼 증가시켜 코딩할 제2 가상링 영역을 설정한다(110). 즉, 현재 'AllowRing' 값에 가상링의 두께(=2)만큼 더해 다음 코딩할 가상링 영역을 설정한다.
한편, 반복 스캔 횟수를 확인하여 다음 코딩할 가상링과 이전 코딩한 가상링 간의 강화 차이가 "0'이면(109), 코딩한 제1 가상링 영역에 가상링 두께의 2배만큼 증가시켜 코딩할 가상링 영역을 설정한다(111). 즉, 강화 차이가 "0"이면 제2 가상링과 제3 가상링 간의 강화 차이가 없다는 것을 의미한다.
이와 같이 코딩할 가상링 영역이 설정되면, 시작 위치부터 설정된 가상링 영역까지 전술한 바와 같은 과정과 같이 영상 블록에 대한 박스 아웃 스캔 순서대로 코딩을 수행한다. 그리고 코딩이 완료되면 나머지 가상링 수를 "1" 감소시킨다(112).
표4를 참조하여 제1 가상링에 대한 코딩이 완료된 후에, 제2 가상링에 대한 코딩을 수행하는 과정을 설명하면, 다음과 같다.
표4의 정보는 표 3의 정보와 동일하지만, 제2 가상링의 코딩을 위하여 표 4에 기재된 바와 같이 'AllowRing'의 값을 가상링 두께(RingWidth)만큼 증가시킨 것(+2)과, 제2 가상링을 코딩하기 위한 코딩 방향을 나타내는 'MovedFactor'의 값을 변경한 것과, 제1 가상링의 코딩이 완료되었기 때문에 나머지 가상 링 수(RVR)의 값이 1 감소한 것에 차이가 있다.
Parameters | Value | Description |
CenterPos | Arbitrary Position | VR Starting position |
RingWidth | 2 | User input |
AllowRing | 4 | Initial allow_ring_width |
MoveFactor | 5 | Coding factor for each direction |
CodedRing | 0 | Coded ring |
RVR | 3 | The Rest of Virtual ring |
'MoveFactor'는 각각의 부가상링의 코딩이 완료시 2씩 계속 증가되며 (1+2+2=5), 'AllowRing'은 'RVR' 값이 0이 될 때까지 링의 두께만큼 증가된다.
한편, 나머지 가상링 수(RVR)가 0이 되면 'AlowRing'이 -1로 설정되고, 이것은 관심 영역내에서 설정된 모든 가상링의 코딩이 완료되었다는 것을 의미한다. 따라서 'AllowRing'이 -1이 되면, 도 12에 도시된 바와 같이 마지막 가상링의 외부, 즉 관심 영역의 나머지 영상 영역(Left-over Region)을 코딩하게 된다(113).
본 발명에 따른 방법은 관심영역을 강화하기 위하여, 각각의 가상링에 대한 스캔 횟수에 대한 제어를 위한 두가지 코딩 모드를 두고, 각각의 코딩 모드 별로 각각 단일 영역을 위한 코딩과 복수영역을 위한 코딩을 수행할 수 있도록 구성하였다. 각각의 모드별 설명은 다음과 같다.
제1 모드는 각각의 가상링에 적용된 반복스캔횟수(RSF)를 사용하여 박스 아웃 스캔 방향으로 각 가상링에 대한 코딩을 수행한다. 나머지 가상링 수(RVR)가 0이 되면 관심 영역 외부인 나머지 영상 영역(Left-over region)을 강화시키는데, 한 프레임의 모든 영역에 대한 코딩을 완료하게 되면, 각각의 가상링에 할당된 반복 스캔 횟수(RSF)를 사용하지 않고, 시작위치부터 영상의 모든 부분을 박스 아웃 스캔 방향으로 각각의 블록에 대한 코딩을 수행한다. 즉 가상링에 적용된 반복스캔횟수를 단 한번만 수행하는 코딩 모드이다.
제2 모드는 각각의 가상링에 적용된 반복 스캔 횟수를 사용하여 박스 아웃 스캔 방향으로 각 가상링에 대한 코딩을 수행한다. 나머지 가상링 수(RVR)가 0이 되면 관심영역 외부를 강화하는데, 한 프레임의 모든 영역에 대한 코딩을 완료하게 되면, 각각의 가상링에 할당된 반복 스캔 횟수를 계속 사용하여 시작위치부터 강화를 시작한다. 즉 가상링에 적용된 반복 스캔 횟수를 계속 반복적으로 사용하여 관심 영역내의 블록들에 대한 코딩을 제1 모드 보다 많이 수행하는 방법이다.
이와 같은 각 모드별 코딩에 대해 예를 들어 보다 구체적으로 살펴보면 다음과 같다. 하기의 설명 예에서는 가상링의 개수가 4이고, 가상링 두께가 2인 경우이다.
설명의 편의를 위해 3단계로 나누어 설명한다. 첫번째는 제1 모드와 제2 모드가 공통적으로 수행하는 영상 전체에 대한 코딩을 1번 완료할 때까지의 과정이고, 두번째와 세번째는 첫번째 수행 이후에 각각 제1 모드와 제2 모드가 코딩하는 방법론의 차이를 설명한다.
먼저, 첫번째 과정인 제1 모드와 제2 모드가 공통적으로 수행하는 코딩 과정을 살펴본다.
전술한 바와 같은 과정을 통해 관심 영역의 가상링들에 대해 나머지 가상링 수(RVR)가 0이 될 때까지 코딩을 하게 되면, 제4 가상링까지 코딩이 완료된다. 그러면 AllowRing은 -1이 되고, 다음에 코딩할 링은 나머지 영상 영역이 된다. 즉, 설정된 4 개의 가상링 영역을 강화한 후에 관심 영역의 나머지 영상 영역(Left-over region)에 대한 코딩을 수행한다. 따라서 전체 영상 코딩을 한번 완료하게 되면, 제1 가상링부터 비강화 영역까지 각각의 블록당 다섯 개 (제1 가상링), 네 개 (제2 가상링), 세 개 (제3 가상링), 두 개 (제4 가상링), 한 개 (나머지 영상 영역)의 계수가 코딩이 된다.
여기까지 코딩은 제1 모드와 제2 모드가 동일하다. 하지만 다음 코딩부터 두 모드간에 차이가 생긴다.
먼저 제1 모드의 경우는 영상 전체를 코딩한 후에 다시 제1 가상링의 시작 위치부터 박스 아웃 스캔오더에 따라 코딩을 시작한다. 이때 제1 모드는 관심 영역을 계속 강화하여 코딩하는 것이 아니라 영상 전체 영역에 대하여 동일한 스캔횟수 (각 사이클당 1회씩)를 적용하여 코딩을 수행한다.
제2 모드의 경우는 전체 영상 영역을 코딩한 후에 제1 가상링의 시작 위치부터 다시 반복 스캔 횟수를 적용하여 각각의 가상링에 대한 반복 스캔 횟수를 달리하는 코딩을 계속 수행한다.
제1 모드의 경우에는 전체 영상영역에 대한 두번째 코딩을 종결하면 전체 영상 영역내의 각각의 블록당 1개씩의 영상 계수가 부가적으로 코딩이 완료된다. 하지만, 제2 모드는 전체 영상영역에 대하여 박스 아웃 스캔 순서대로 각각의 가상링에 할당된 반복 스캔 횟수(RSF) 만큼 매번 코딩을 수행하기 때문에 매번 전체 영상에 대한 코딩이 완료될 때마다 각각의 가상링에 적용된 반복 스캔 횟수 만큼 더 코딩이 수행되어, 관심영역에 대해서 제1 모드의 경우보다 더욱 높은 화질을 제공할 수 있다.
제2 모드에 의한 영상의 코딩이 수행된 경우의 각 가상링의 코딩된 영상 계수를 살펴보면 다음과 같다. 제1 가상링은 첫번째 전체 영상에 대한 코딩이 완료된 후에 각각의 블록당 5개의 영상계수가 코딩된 상태에서 제1 가상링에 적용된 4번의 반복스캔횟수와 나머지 영상 영역(Left-over region)을 포함하는 전체 영상 영역에 대한 스캔 1번을 수행한 후에는 각각의 블록당 총 10개의 영상 계수가 코딩된다. 제2 가상링은 첫번째 전체 영상에 대한 코딩이 완료된 후에 각각의 블록당 4개의 영상 계수가 코딩된 상태에서, 제2 가상링에 적용된 3번의 반복스캔횟수와 나머지 영상 영역(Left-over region)을 포함한 전체영상에 대한 1번의 스캔이 완료되면 각 블록당 총 8개의 영상계수가 코딩된다. 계속해서 제3 가상링은 각 블록당 총 6개의 영상 계수가 코딩되고, 제4 가상링은 각 블록당 총 4개의 영상 계수가 코딩된다. 그리고, 관심 영역 이외의 나머지 영상 영역(Left-over Region)은 총 2개의 영상 계수가 코딩된다.
각각의 코딩 모드(제1 모드와 제2 모드)는 한 개의 영상내에 여러 개의 관심 영역의 영상 화질을 향상시키기 위하여 복수 강화 모드(Multiple enhancement mode)를 사용할 수 있다.
각각의 코딩 모드는 한 개의 영상내에 1개의 관심 영역의 화질을 향상시킬 수 있는 단일 강화 모드와, 2개부터 3개까지(관심 영역의 수는 해당 정보에 대한 비트의 양을 늘림으로써 얼마든지 확장 가능하다. 본 실시 예에서는 1 비트를 할당한 실시 예를 든 것이다.) 복수개의 관심 영역의 화질을 각각 향상시킬 수 있는 복수 강화 모드를 선택할 수 있다.
도 13은 가상링의 수(RVR)기 4이고 가상링 두께(RingWidth)가 2일 때, 2개의 관심 영역을 다룰 수 있는 복수 강화 모드를 사용한 것을 상징적으로 도시한 것이다.
복수 강화 모드를 사용하면, 영상 내에서 영상의 화질을 향상시키고자 하는 관심 영역이 여러 개 존재하는 경우를 처리할 수 있다. 하지만 관심 영역이 많아지면 동일한 전송 비트율로 각각의 관심영역을 강화하기 때문에 단일 강화 모드를 사용한 것에 비해 강화하는 영역은 다소 작아지게 된다. 하지만 강화되는 관심 영역의 크기는 조금 작아지겠지만 복수 개의 관심 영역을 해당 위치에서 정확히 화질 향상을 이루게 되면, 사용자가 체감으로 느끼는 전체적이고 주관적인 화질은 더욱 좋아질 것이다.
각각의 관심 영역에 대한 코딩이 완료되면, 나머지 영상 영역(Left-over region)에 대한 코딩은 영상 프레임의 중앙부 블록부터 박스 아웃 스캔 순서로 영상 외각 블록까지 수행하게 된다.
현재 국제표준화가 진행중인 MPEG-4 JSVC에서는 한 개의 비트스트림으로 Temporal, Spatial, SNR Scalability를 모두 지원하는 구조로 되어 있다.
비트 스트림은 크게 2개의 계층으로 구성되어 있고 각각의 계층 안에는 Temporal scalable를 위한 레벨이 존재한다.
각 계층을 보면 Spatial scalability를 지원하는 것을 볼 수 있는데, 레벨이 올라갈수록 영상의 크기는 가로, 세로로 두 배씩 커지게 된다. 즉 QCIF급 영상의 크기가 기본 이미지로서 계층 0이 되고 CIF급 영상의 크기가 그 상위 계층으로서 계층 1이 된다. 물론 계층 1의 상위에는 4CIF급의 영상 크기로 구성된 계층 2가 존재할 수 있다.
따라서 본 발명에 따른 코딩 방법을 위한 데이터는 기본 계층의 화상 헤더 또는 첫번째 슬라이스 헤더에 존재하고, 상위 계층으로 올라갈수록, 각각의 위치는 하위 계층 데이터의 두 배값으로 설정된다.
비트스트림 내의 기본 계층 슬라이스 헤더에서 어떤 데이터를 읽었을 때, 상위 계층으로 갈수록 어떻게 데이터가 전달되는지에 대한 간단한 예는 다음의 표 5와 같다.
파라메터 | 기본 계층 | 상위 계층 |
Using A-FMO | True | True |
RingWidth | 4 | 8 |
Num VR | 4 | 4 |
RSF Value 1 | 4 | 4 |
RSF Value 2 | 3 | 3 |
RSF Value 3 | 2 | 2 |
RSF Value 4 | 1 | 1 |
Fixed Center Position | False | False |
Using Multiple ROI | False | False |
Center Position | (10, 12) | (20, 24) |
표5는 기본 계층에서 입력받은 파라메터 값이다. 가상링의 두께('RingWidth')는 4 (16pixel)이며, 4개의 가상링을 사용하고, 각각의 가상링에 대한 반복 스캔횟수(RSF)는 각각 {4, 3, 2, 1}이다. 계층 0과 계층 1 사이에 달라진 값은 영상의 크기 관련 파라메터 뿐이다(176x144 -> 352x288). 따라서 가상링의 수('NumVR'), 각각의 가상링(VR)에 대한 반복스캔횟수('RSF') 등은 변하지 않고 가상링의 두께('RingWidth')가 두 배의 크기로 변경된다. 관심 영역(ROI)의 시작 위치('Center Postion') 또한 계층 0에서의 위치보다 두 배로 확장하게 된다.
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
상기와 같은 본 발명은, 관심 영역을 중점적으로 강화하기 위해 H.264 (MPEG-4 AVC)의 플렉서블 매크로블록 오더링(FMO)에서의 박스 아웃 스캔 방법에 가상링(Virtual Ring)의 개념을 적용시켜 각각의 가상링 단위로 코딩시 반복 스캔횟수(RSF)를 변경하며 해당 영상영역의 정보를 전송하고 복호화함으로써 관심 영역의 화질을 개선시킬 수 있는 효과가 있다.
Claims (13)
- 사이클릭 미세입자 스케일러빌리티(FGS) 기반에서 플렉서블 매크로 블록 오더링에 의한 코딩방법에 있어서,관심 영역을 나타내는 가상링 수와, 영상 블록으로 표시되는 가상링 두께와, 동일 가상링의 반복 스캔 횟수를 의미하는 반복스캔횟수와, 시작 위치를 포함하는 초기 정보를 확인하는 제1 단계;상기 시작 위치와 상기 가상링 두께 정보를 이용해 코딩할 제1 가상링 영역을 설정하는 제2 단계;상기 설정된 제1 가상링 영역 내의 영상 블록의 계수들을 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제3 단계;상기 제3 단계 수행 후, 상기 반복스캔횟수를 확인하고, 상기 제1 가상링의 영역에 상기 가상링 두께를 더해 다음 코딩할 가상링 영역을 설정하는 제4 단계;상기 시작 위치부터 상기 제4 단계에서 설정된 가상링 영역까지 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제5 단계; 및상기 나머지 가상링 수의 확인을 통해 모든 관심 영역에 대한 코딩이 완료되면 상기 관심 영역 이외의 나머지 영상 영역에 대한 코딩을 수행하는 제6 단계를 포함하는 것을 특징으로 하는 코딩 방법.
- 제 1 항에 있어서,상기 제6 단계 수행 후, 설정된 모드가 노멀 모드이면, 상기 시작 위치부터 상기 나머지 영상 영역까지 박스 아웃 스캔 순서로 코딩을 반복하는 단계; 및상기 설정된 모드가 강화 모드이면, 상기 제3 단계 내지 상기 제6 단계를 반복 수행하는 단계를 더 포함하는 것을 특징으로 하는 코딩 방법.
- 제 1 항 또는 제 2 항에 있어서,상기 제4 단계에서 이전 가상링의 상기 반복 스캔 횟수와 다음 가상링의 상기 반복 스캔 횟수의 차에 따라 결정되는 강화 차이가 "1"보다 크면 상기 이전 가상링 영역 내의 영상 블록에 대한 코딩을 반복 수행하는 단계를 더 포함하는 것을 특징으로 하는 코딩 방법.
- 제 3 항에 있어서,상기 제4 단계에서 이전 가상링의 상기 반복 스캔 횟수와 다음 가상링의 상기 반복 스캔 횟수의 차에 따라 결정되는 강화 차이가 "0"이면 코딩을 수행한 가상링의 영역에 상기 가상링 두께의 2배만큼 더해 코딩할 가상링 영역을 설정하는 것을 특징으로 하는 코딩 방법.
- 제 1 항 또는 제 2 항에 있어서,상기 제1 단계에서 초기 정보는, 관심 영역의 개수 정보를 더 포함하며, 상기 관심 영역의 개수가 적어도 2 이상인 경우에는 그에 대응되는 시작 위치 정보가 포함되는 것을 특징으로 하는 코딩 방법.
- 제 1 항 또는 제 2 항에 있어서,상기 제1 단계에서 초기 정보는, 상기 시작 위치가 영상 프레임내의 정중앙인지 아닌지를 나타내는 비트를 더 포함하는 것을 특징으로 하는 코딩 방법.
- 제 1 항 또는 제 2 항에 있어서,사이클릭 미세입자 스케일러빌리티 코딩이 4X4 블록 단위로 수행되는 경우, 상기 가상링의 두께가 2블록 크기로 설정되는 것을 특징으로 하는 코딩 방법.
- 제 1 항 또는 제 2 항에 있어서,상기 초기 정보는 비트 스트림 내에서 화상 헤더에 포함되어 인코더 측에서 디코더 측으로 전달되는 것을 특징으로 하는 코딩 방법.
- 제 1 항 또는 제 2 항에 있어서,상기 초기 정보는 비트 스트림 내에서 첫번째 슬라이스 헤더에 포함되어 인코더 측에서 디코더 측으로 전달되는 것을 특징으로 하는 코딩 방법.
- 사이클릭 미세입자 스케일러빌리티(FGS) 기반에서 플렉서블 매크로 블록 오더링에 의한 코딩을 수행하는 프로세서에서,관심 영역을 나타내는 가상링 수와, 영상 블록으로 표시되는 가상링 두께와, 동일 가상링의 스캔 횟수를 의미하는 반복스캔횟수와, 시작 위치를 포함하는 초기 정보를 확인하는 제1 단계;상기 시작 위치와 상기 가상링 두께 정보를 이용해 코딩할 제1 가상링 영역을 설정하는 제2 단계;상기 설정된 제1 가상링 영역 내의 영상 블록의 계수들을 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제3 단계;상기 제3 단계 수행 후, 상기 반복스캔횟수를 확인하고, 상기 제1 가상링의 영역에 상기 가상링 두께를 더해 다음 코딩할 가상링 영역을 설정하는 제4 단계;상기 시작 위치부터 상기 제4 단계에서 설정된 가상링 영역까지 박스 아웃 스캔 순서로 코딩하고, 코딩이 완료되면 나머지 가상링 수를 변경하는 제5 단계; 및상기 나머지 가상링 수의 확인을 통해 모든 관심 영역에 대한 코딩이 완료되면 상기 관심 영역 이외의 나머지 영상 영역에 대한 코딩을 수행하는 제6 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
- 제 10 항에 있어서,상기 제6 단계 수행 후, 설정된 모드가 노멀 모드이면, 상기 시작 위치부터 상기 나머지 영상 영역까지 박스 아웃 스캔 순서로 코딩을 반복하는 단계; 및상기 설정된 모드가 강화 모드이면, 상기 제3 단계 내지 상기 제6 단계를 반복 수행하는 단계를 더 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
- 제 10 항 또는 제 11 항에 있어서,상기 제4 단계에서 이전 가상링의 상기 반복 스캔 횟수와 다음 가상링의 상기 반복 스캔 횟수의 차에 따라 결정되는 강화 차이가 "1"보다 크면 상기 이전 가상링 영역 내의 영상 블록에 대한 코딩을 반복 수행하는 단계를 더 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
- 제 12 항에 있어서,상기 제4 단계에서 이전 가상링의 상기 반복 스캔 횟수와 다음 가상링의 상기 반복 스캔 횟수의 차에 따라 결정되는 강화 차이가 "0"이면 코딩을 수행한 가상링의 영역에 상기 가상링 두께의 2배만큼 더해 코딩할 가상링 영역을 설정하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20050064449 | 2005-07-15 | ||
KR1020050064449 | 2005-07-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070009445A KR20070009445A (ko) | 2007-01-18 |
KR100775788B1 true KR100775788B1 (ko) | 2007-11-13 |
Family
ID=38011211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060065892A KR100775788B1 (ko) | 2005-07-15 | 2006-07-13 | 화질 향상을 위한 사이클릭 미세입자 스케일러빌리티기반에서 플렉서블 매크로 블록 오더링에 의한 코딩방법 및 그 방법을 기록한 기록매체 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100775788B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200101686A (ko) * | 2019-02-20 | 2020-08-28 | 세종대학교산학협력단 | 센터-투-에지 점진적 영상 부호화/복호화 방법 및 장치 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11328302A (ja) | 1998-05-12 | 1999-11-30 | Denso Corp | 2次元コードの読取方法及び記録媒体 |
KR20020005365A (ko) * | 2000-07-07 | 2002-01-17 | 박광훈 | 파문 스캔 장치 및 그 방법과 그를 이용한 영상코딩/디코딩 장치 및 그 방법 |
KR20030063536A (ko) * | 2002-01-22 | 2003-07-31 | 삼성전자주식회사 | 슬라이스 구조를 갖는 관심 영역 부호화 및 복호화를 위한방법 및 장치 |
-
2006
- 2006-07-13 KR KR1020060065892A patent/KR100775788B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11328302A (ja) | 1998-05-12 | 1999-11-30 | Denso Corp | 2次元コードの読取方法及び記録媒体 |
KR20020005365A (ko) * | 2000-07-07 | 2002-01-17 | 박광훈 | 파문 스캔 장치 및 그 방법과 그를 이용한 영상코딩/디코딩 장치 및 그 방법 |
KR20030063536A (ko) * | 2002-01-22 | 2003-07-31 | 삼성전자주식회사 | 슬라이스 구조를 갖는 관심 영역 부호화 및 복호화를 위한방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR20070009445A (ko) | 2007-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6708716B2 (ja) | ビデオを復号化する方法、ビデオを符号化する方法、デコーダ、エンコーダ、復号プログラムを記録したコンピュータ読み取り可能な記録媒体、および符号化プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US8184718B2 (en) | Water ring decoding apparatus | |
US7522778B2 (en) | Image decoding technique for suppressing tile boundary distortion | |
US8798158B2 (en) | Method and apparatus for block-based depth map coding and 3D video coding method using the same | |
US7289562B2 (en) | Adaptive filter to improve H-264 video quality | |
US20080075373A1 (en) | Image Coding Method and Apparatus, and Image Decoding Method and Apparatus | |
CN102598673A (zh) | 用于帧连续立体视频编码的动态参考帧重排序 | |
EP1221261A1 (en) | Dct domain conversion of a video signal to a lower definition signal | |
JP5841944B2 (ja) | スケーラブルな画像符号化および復号化 | |
JPH11122617A (ja) | 画像圧縮 | |
US20090208122A1 (en) | Image coding method and apparatus, and image decoding method and apparatus | |
KR100603592B1 (ko) | 영상 화질 향상 인자를 이용한 지능형 파문 스캔 장치 및 그 방법과 그를 이용한 영상 코딩/디코딩 장치 및 그 방법 | |
KR101529903B1 (ko) | 블록기반 깊이정보 맵의 코딩 방법과 장치, 및 이를 이용한 3차원 비디오 코딩 방법 | |
KR100775788B1 (ko) | 화질 향상을 위한 사이클릭 미세입자 스케일러빌리티기반에서 플렉서블 매크로 블록 오더링에 의한 코딩방법 및 그 방법을 기록한 기록매체 | |
WO2003069917A1 (en) | Memory-bandwidth efficient fine granular scalability (fgs) encoder | |
KR100388820B1 (ko) | 미세입자 스케일러블 코딩의 적응적 선택 강화 적용 방법 | |
JP2008544621A (ja) | ビデオエラー隠蔽を向上させる符号化及び復号の方法及び装置 | |
KR20070118560A (ko) | Fgs코딩에서 우선적인 인코딩/디코딩 방법 및 장치 | |
CN101437160A (zh) | 用来解码视频信号的方法及相关装置 | |
JPH11122609A (ja) | 画像圧縮 | |
GB2559912A (en) | Video encoding and decoding using transforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20111101 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20121102 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |