KR100763903B1 - Dibr데이터를 위한 스키마 및 스타일 쉬트 - Google Patents

Dibr데이터를 위한 스키마 및 스타일 쉬트 Download PDF

Info

Publication number
KR100763903B1
KR100763903B1 KR1020050018333A KR20050018333A KR100763903B1 KR 100763903 B1 KR100763903 B1 KR 100763903B1 KR 1020050018333 A KR1020050018333 A KR 1020050018333A KR 20050018333 A KR20050018333 A KR 20050018333A KR 100763903 B1 KR100763903 B1 KR 100763903B1
Authority
KR
South Korea
Prior art keywords
template
xsl
parsed
xmt
file
Prior art date
Application number
KR1020050018333A
Other languages
English (en)
Other versions
KR20060043431A (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 삼성전자주식회사
Priority to US11/073,690 priority Critical patent/US7606428B2/en
Priority to JP2005064449A priority patent/JP2005276193A/ja
Priority to EP20050251373 priority patent/EP1575296A3/en
Publication of KR20060043431A publication Critical patent/KR20060043431A/ko
Application granted granted Critical
Publication of KR100763903B1 publication Critical patent/KR100763903B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B21MECHANICAL METAL-WORKING WITHOUT ESSENTIALLY REMOVING MATERIAL; PUNCHING METAL
    • B21KMAKING FORGED OR PRESSED METAL PRODUCTS, e.g. HORSE-SHOES, RIVETS, BOLTS OR WHEELS
    • B21K23/00Making other articles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/25Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with scene description coding, e.g. binary format for scenes [BIFS] compression
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B21MECHANICAL METAL-WORKING WITHOUT ESSENTIALLY REMOVING MATERIAL; PUNCHING METAL
    • B21JFORGING; HAMMERING; PRESSING METAL; RIVETING; FORGE FURNACES
    • B21J5/00Methods for forging, hammering, or pressing; Special equipment or accessories therefor
    • B21J5/06Methods for forging, hammering, or pressing; Special equipment or accessories therefor for performing particular operations
    • B21J5/12Forming profiles on internal or external surfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/02Constructional features of telephone sets
    • H04M1/0202Portable telephone sets, e.g. cordless phones, mobile phones or bar type handsets

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Mechanical Engineering (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 발명은 DIBR 데이터를 위한 스키마 및 스타일 쉬트에 관한 것으로서, 그 스키마는 그래픽 데이터를 압축하는 데 사용되는 BitWrapper 노드 스키마; 및 DepthImage 기반 모델 렌더링에 사용되며, 카메라정보와 Depth를 가진 텍스쳐 정보를 구비하며, diTexture를 엘리멘트로 규정하고, 상기 엘리멘트 내에서 SFDepthTextureNode를 모델그룹으로 포함하는 DepthImage 노드 스키마를 포함함을 특징으로 하고, BitWrapper 노드 스키마는 압축될 데이터를 포함한 그래픽 데이터를 나타내며 SFWorldNode를 하위 엘리먼트로 참조하는 node 엘리멘트; BitWrapperEncodingParameter 엘리멘트; 및 이름은 type, url, buffer이고, 타입은 SFInt32, MFUrl, SFString인 3개의 attribute를 구비한다.
본 발명에 의하면, 메타 표현 방법을 사용해서 3D 컨텐츠 저작단계에서 DIBR 데이터의 표현 및 압축을 쉽게 조절할 수 있고, MPEG-4 부호화기에 알맞은 입력파일을 생성을 용이하게 할 수 있다.

Description

DIBR데이터를 위한 스키마 및 스타일 쉬트{Schema and Style sheet for DIBR data}
도 1은 상기 깊이영상기반 표현 데이터 압축에 관한 메타표현을 이용한 입력파일 생성에 대한 전체적인 구성도를 도시한 것이다.
도 2는 end user 와 system 상의 프로그램 사이에서 XMT 스키마의 역할을 도시한 것이다.
도 3의 MPEG-4 플레이의 입력 파일인 IM1 텍스츄얼 포맷(Textual format) 이다.
본 발명은 XMT 스키마 및 스타일 쉬트에 관한 것으로서, 특히 DIBR 데이터를 위한 스키마 및 이를 이용한 DIBR 데이터를 포함하는 XMT 입력파일을 파싱하여 입력 파일을 만들기 위한 스타일 쉬트에 관한 것이다.
XMT 형식으로 3D 컨텐츠를 만들면, 이 컨텐츠를 다양한 멀티미디어, 예를 들어 MPEG-4 플레이어(player) 또는 VRML 플레이어 또는 SMIL 플레이어 등에서 시각화할 수 있다. 이것을 가능하게 하는 것이 스키마와 스타일 쉬트이다. 이 중에서 본 발 명은 DIBR 데이터에 대한 XMT 스키마 및 스타일 쉬트에 대한 것이다.
MPEG-4 표준화에서 쉬운 저작에 관련된 방법에 대해 표준화가 추진되고 있다. 저작자가 3D 컨텐츠를 저작하는 단계에서, 3D 데이터를 표현, 조작 및 압축하는데 필요한 여러 인자들을 쉽게 조절할 수 있는 방법이 필요하다. 이것은 메타 표현(MPEG-4 XMT)으로 가능하다. 메타 표현으로 3D 데이터를 표현, 조작 및 압축하는 메커니즘이 필요하다. 특히, 깊이 영상 기반 표현(이하 DIBR)에 대한 표현,조작 및 압축을 할 때, 저작자가 쉽게 다룰 수 있는 방법이 필요하다.
본 발명이 이루고자 하는 기술적 과제는 DIBR 데이터를 위한 스키마를 제공하는 것이다.
본 발명이 이루고자 하는 다른 기술적 과제는 DIBR 데이터를 위한 스타일 쉬트를 제공하는 것이다.
상기 기술적 과제를 이루기 위한 본 발명에 의한 DIBR 데이터를 위한 스키마는, 그래픽 데이터를 압축하는 데 사용되는 BitWrapper 노드 스키마; 및 DepthImage 기반 모델 렌더링에 사용되며, 카메라정보와 Depth를 가진 텍스쳐 정보를 구비하며, diTexture를 엘리멘트로 규정하고, 상기 엘리멘트 내에서 namespace에 정의된 스키마에 미리 정의된 이름이 SFDepthTextureNode인 모델그룹을 하위 엘리먼트로 포함하는 DepthImage노드 스키마를 포함함을 특징으로 한다.
상기 BitWrapper 노드 스키마는 압축될 데이터를 포함한 그래픽 데이터를 나타내며 SFWorldNode를 하위 엘리먼트로 참조하는 node 엘리멘트; BitWrapperEncodingParameter 엘리멘트; 및 이름은 type, url, buffer이고, 타입은 SFInt32, MFUrl, SFString인 3개의 attribute를 구비한다.,
상기 DepthImage 노드 스키마의 카메라 정보는 position, orientation, fieldOfView, nearPlane, farPlane, orthographic 중 적어도 하나를 attribute name으로 규정하고, 상기 attribute 타입은 각각 SFVec3f, SFRotation, SFVec2f, SFFloat, SFFloat, SFBool 이다.
상기 DepthImage 노드의 diTexture 엘리멘트는 PointTexture 및 SimpleTexture를 엘리먼트로 구비하는 SFDepthTextureNode 노드 스키마를 규정함이 바람직하다.
상기 SimpleTexture 에 대한 노드 스키마는 depth 이미지와 color 이미지를 입력으로 받아, DIBR모델을 3차원 렌더링하는데 사용되며, depth 정보를 이미지 형태로 가지고 있는 depth 엘리멘트와, color 정보를 이미지 형태로 가지고 있는 texture 엘리멘트를 가지며 각각의 이미지는 SFTextureNodeType 엘리먼트에 정의되어 있음이 바람직하다.
상기 PointTexture 에 대한 노드 스키마는 width, height, depthNbBits, depth, color 중 적어도 하나를 attribute name으로 규정하고, 상기 attribute의 타입은 각각 SFInt32, SFInt32, SFInt32, MFInt32, MFColor 임이 바람직하다.
상기 DIBR 데이터를 위한 스키마는 octreeimage 노드 스키마를 더 구비함을 특징으로 하고, 상기 octreeimage노드 스키마는 octree, octreeResolution, voxelImageIndex 중 적어도 하나를 attribute name으로 규정하고, 상기 attribute의 타입은 각각 SFInt32, MFInt32, MFInt32 이고, images를 엘리멘트로 규정하고, 상기 엘리멘트 내에서 SfdepthImageNodeType 를 모델그룹을 포함한다.
상기 DIBR 데이터를 위한 스키마는 BitWrapper노드가 url 필드를 사용하는 아웃밴드인 경우, AFXConfig 스키마 및 DecoderConfigDescriptor 스키마를 구비하는 복호화정보 스키마를 더 포함함을 특징으로 하고, 상기 DecoderConfigDescriptor 스키마는 복호화시 필요한 정보를 갖는 DecoderConfigDescriptor노드 내의 decSpecificInfo노드 내에서 엘리멘트 이름으로 AFXconfig를 규정하고, 상기 AFXConfig 스키마는 옥트리 이미지 복호화기로 복호화할 것을 나타내는 OctreeImageDecoderSpecific 정보를 엘리멘트 이름으로 규정하고, 포인트 텍스쳐 복호화기로 복호화할 것을 나타내는 PointTextureCompDecoderSpecific 정보를 엘리멘트 이름으로 규정한다.
상기 복호화 정보 스키마는 포인트 텍스쳐를 위한 압축률을 포함하는 압축파라미터 스키마를 더 포함함을 특징으로 하고, 상기 압축파라미터 스키마는 BitWrapperEncodingParameter를 엘리멘트 이름으로 하는 노드 내에 포함되며, 엘리멘트 이름이 PointTextureEncodingParameter이고, attribute 이름이 codingPercent이고, 그 타입이 codingPercentType을 가지고, 상기 codingPercentType은 simpleType 이름으로 codingPercentType을 가진다.
상기 codingPercentType은 restriction base가 int(integer) 임이 바람직하다. 상기 복호화 정보 스키마는 BitWrapper노드가 url 필드를 사용하는 아웃밴드인 경우 에 스크립트 파일(mux file)에서 Muxinfo에 필요한 정보를 규정하기 위해 사용되는 BitWrapperEncodingHints를 더 구비함을 특징으로 하고, 상기 BitWrapperEncodingHints는 하위 엘리멘트(sub Element)로 BitWrapperOctreeImageEncodingHints와 BitWrapperPointTextureEncodingHints를 포함하고, 상기 각 하위 엘리멘트는 sourceFormat 와 targetFormat 중 적어도 하나를 하위 엘리멘트로 포함한다. 상기 스크립트 파일(mux file)에서 Muxinfo에 필요한 정보는 상기 DIBR 압축 비트스트림 파일 이름 및 비트스트림 압축 포맷을 포함함이 바람직하다.
상기 본 발명에 의한 DIBR 데이터를 위한 스키마는 CompressedImageFormat 스키마를 더 구비하고, 상기 CompressedImageFormat 스키마는 DIBR 관련 노드가 압축된 이미지(JPEG, PNG), 또는 동영상(MPEG4-Video, VTC을 포함)을 포함하고 있을 때, 상기 압축된 정보에 대해서 복호화시 필요한 정보(압축된 파일이름과 스트림 포맷)를 알려주는데 사용되며, Element name이 CompressedImageFormat이고, subelement의 name으로 JPEG과 PNG와 MPEG4-Video와 VTC를 포함하며, 상기 subelement 각각은 SourceFormat 또는 targetFormat 을 포함하고 있으며, 상기 sourceFormat 또는 targetFormat은 param을 포함하고 있고, 상기 param에 파일이름이 저장됨이 바람직하다.
상기 다른 기술적 과제를 이루기 위한 본 발명에 의한 DIBR 데이터를 위한 데이터 쉬트는, DIBR 데이터를 위한 스키마를 이용하여 DIBR 데이터를 포함하는 XMT 입력파일을 파싱하기 위한 스타일 쉬트에 있어서, DIBR 데이터를 위한 scene파 일을 생성하기 위한 XMT2BIFS 스타일 쉬트; 및 DIBR 데이터를 위한 mux 파일을 생성하기 위한 XMT2MUX 스타일 쉬트를 포함함을 특징으로 한다.
상기 XMT2BIFS 스타일 쉬트는 소정의 템플릿에 BitWrapper 템플릿을 호출할 수 있도록 선언된 상태에서 XMT 파일에서 BitWrapper가 매칭되면, 'BitWrapper {' 를 scene 파일로 출력하고, node가 파싱되면, 소정의 node 템플릿을 수행하고, 압축할 노드의 DIBR 인코딩 파라미터 중 PointTextureEncodingParameter가 파싱되면, 소정의 PointTextureEncodingParameter 템플릿을 수행하고, type, buffer, url 이 파싱되면, 상기 type, buffer, url 및 그 값들을 scene파일로 출력하고, }를 scene파일로 출력함이 바람직하다.
상기 node 템플릿은 node가 매칭되면 node를 scene파일로 출력하고, PointTexture가 파싱되면 소정의 PointTexture 템플릿을 수행하고, OctreeImage 파싱되면 소정의 OctreeImage 템플릿을 수행함이 바람직하다. 상기 PointTexture 템플릿은 PointTexture가 매칭되면, 'PointTexture {' 를 scene 파일로 출력하고, width, height, depthNbBits, depth, color를 파싱하여, 상기 width, height, depthNbBits, depth[], color[] 및 그 값들을 scene 파일로 출력하고, }를 scene파일로 출력함이 바람직하다.
상기 DIBR 데이터를 위한 스타일 쉬트는 SimpleTexuter가 매칭되면, SimpleTexture { 를 scene 파일로 출력하고, depth가 파싱되면, 소정의 depth 템플릿을 수행하고, texture가 파싱되면 소정의 texture 템플릿을 수행하고, }를 scene파일로 출력하는 simpleTexture 템플릿을 더 구비함이 바람직하다.
상기 depth 템플릿은 depth가 매칭되면, depth를 scene파일로 출력하고, CompositeTexture2D 가 파싱되면 소정의 CompositeTexture2D 템플릿을 수행하고, CompositTexutre3D가 파싱되면 소정의 CompositTexutre3D 템플릿을 수행하고, ImageTexture가 파싱되면 소정의 ImageTexture 템플릿을 수행하고, MovieTexture가 파싱되면 소정의 MovieTexture 템플릿을 수행하고, PixelTexture가 파싱되면 소정의 PixelTexture 템플릿을 수행하고, ProtoInstance가 파싱되면 소정의 ProtoInstance템플릿을 수행함이 바람직하다.
상기 DIBR 데이터를 위한 스타일 쉬트는 DepthImage가 매칭되면, 'DepthImage {' 를 scene 파일로 출력하고, diTexture가 존재하면, diTexture를 scene파일로 출력하고 소정의 diTexture 템플릿을 수행하고, fieldOfView, nearPlane, farPlane, orientation, position, orthographic를 파싱하여, 상기 fieldOfView, nearPlane, farPlane, orientation, position, orthographic 및 그 값들을 scene 파일로 출력하고, }를 scene파일로 출력하는 DepthImage 템플릿을 더 구비함이 바람직하다.
상기 DIBR 데이터를 위한 스타일 쉬트는 diTexture가 매칭된 후, SimpleTexture가 파싱되면 소정의 SimpleTexture 템플릿을 수행하고, PointTexture가 파싱되면 소정의 PointTexture 템플릿을 수행하는 diTexture 템플릿을 더 구비함이 바람직하다.
상기 OctreeImage 템플릿은 OctreeImage가 매칭되면, 'OctreeImage {' 를 scene 파일로 출력하고, octreeResolution, octree, voxelImageIndex 를 파싱하여, 상기 octreeResolution, octree[], voxelImageIndex[] 및 그 값들을 scene 파일로 출력하고, images를 파싱하여, images[]를 scene 파일로 출력하고, 소정의 images 템플릿을 수행하고, }를 scene파일로 출력함이 바람직하다.
상기 images 템플릿은 images가 매칭되면, 소정의 DepthImage 템플릿을 수행함이 바람직하다.
상기 PointTextureEncodingParameter 템플릿은 PointTextureEncodingParameter 가 매칭되면, scene 파일로 PointTextureEncodingParameter { 를 출력하며, codingPercent가 파싱되면, condingPercent 및 그 값을 scene파일로 출력하고, }를 scene파일로 출력함이 바람직하다. 상기 XMT2BIFS 스타일 쉬트는 XMT 파일에서 /가 매칭된 후, Body/* 가 파싱되면 상기 Body 하위의 템플릿을 수행하고, Header/*가 파싱되면 Header 하위의 템플릿을 수행함이 바람직하다.
상기 XMT2BIFS 스타일 쉬트는 XMT 파일에서 ObjectDescriptorUpdate가 매칭되면, UPDATE OD [ 를 scene 파일로 출력하고, OD가 매칭된 후, ObjectDescriptor가 파싱되면, 소정의 ObjectDescriptor 템플릿을 수행하고, InitialObjectDescriptor가 파싱되면 소정의 InitialObjectDescriptor 템플릿을 수행하고, ]를 scene파일로 출력함이 바람직하다.
상기 ObjectDescriptor 템플릿은 ObjectDescriptor가 매칭되면, ObjectDescriptor { 를 scene 파일로 출력하고, attribute 이름이 objectDescriptorID인 것을 파싱하여 objectDescriptorID 를 scene 파일로 출력하고, attribute 이름이 binaryID인 것을 파싱하고, 그 값을 scene 파일로 출력하고, Descr를 파싱하여 소정의 Descr 템플릿을 수행하고, }를 scene파일로 출력함이 바람직하다.
상기 InitialObjectDescriptor 템플릿은 InitialObjectDescriptor가 매칭되면, Profiles가 파싱되면 소정의 Profiles 템플릿을 수행하고, Descr가 파싱되면 소정의 Descr 템플릿을 수행함이 바람직하다. 상기 Descr 템플릿은 Descr가 매칭되면, esDescr가 파싱되면 소정의 esDescr 템플릿을 수행하고, ipmpDescrPtr가 파싱되면 소정의 ipmpDescr 템플릿을 수행함이 바람직하다.
상기 esDescr 템플릿은 esDescr가 매칭되면, ES_Descriptor가 파싱되면 소정의 ES_Descriptor 템플릿을 수행함이 바람직하다. 상기 ipmpDescrPtr 템플릿은 ipmpDescrPtr 가 매칭되면, IPMP_Descriptor가 파싱되면 소정의 IPMPDescriptor 템플릿을 수행하고, IPMP_DescriptorPointer가 파싱되면 소정의 IPMP_DescriptorPointer 템플릿을 수행함이 바람직하다.
상기 ES_Descriptor 템플릿은 ES_Descriptor 가 매칭되면, URL가 파싱되면 소정의 URL 템플릿을 수행하고, StreamSourcer가 파싱되면 소정의 StreamSourcer 템플릿을 수행하고, decConfigDescr가 파싱되면 소정의 decConfigDescr 템플릿을 수행하고, slConfigDescr가 파싱되면 소정의 slConfigDescr 템플릿을 수행하고, ipiPtr이 파싱되면 소정의 ipiPtr 템플릿을 수행하고, ipIDs가 파싱되면 소정의 ipIDs 템플릿을 수행하고, ipmpDescrPtr가 파싱되면 소정의 ipmpDescrPtr 템플릿을 수행하고, langDescr가 파싱되면 소정의 langDescr 템플릿을 수행하고, regDescr가 파싱되면 소정의 regDescr 템플릿을 수행하고, qosDescr가 파싱되면 소정의 qosDescr 템플릿을 수행함이 바람직하다.
상기 XMT2BIFS 스타일 쉬트는 XMT 파일에서 StreamSource가 매칭되면, StreamSource1 템플릿을 호출하고, 상기 StreamSource1 템플릿은 CompressedImageFormat이 파싱되면 muxSrcipt 및 파일이름 및 mux 파일의 확장자를 scene파일로 출력하고, BitWrapperEncodingHints 가 파싱되면 muxScript 및 파일이름 및 mux 파일의 확장자를 scene파일로 출력함이 바람직하다.
상기 XMT2MUX 스타일 쉬트는 XMT 파일에서 /가 매칭된 후, Body/* 가 파싱되면 Body의 하위 템플릿을 수행하고, Header/*가 파싱되면 Header의 하위 템플릿을 수행함이 바람직하다. 상기 XMT2MUX 스타일 쉬트는 XMT 파일에서 ObjectDescriptorUpdate 또는 InitialObjectDescriptor와 매칭되면, 템플릿 name이 Odids이고, objectDescriptorID를 상기 ODids의 값으로 사용하고, 상기 매칭된 ObjectDescriptorUpdate 템플릿 또는 InitialObjectDescriptor 템플릿을 호출함이 바람직하다.
상기 ObjectDescriptorUpdate 템플릿은 XMT 파일에서 ObjectDescriptorUpdate가 매칭될 경우, OD 템플릿을 호출하고, 상기 OD 템플릿에서 OD가 매칭되면, 상기 OD는 ObjectDescriptor 템플릿을 호출함이 바람직하다.
상기 XMT2MUX 스타일 쉬트는 소정의 상위 템플릿에서 decConfigDescr 또는 slConfigDescr 이 매칭되면 각각 호출되는 decConfigDescr 템플릿 및 slConfigDescr 템플릿을 구비함을 특징으로 하고, 상기 decConfigDescr 템플릿은 decConfigDescr가 매칭되면, decConfigDescr DecoderConfigDescriptor { 를 mux 파 일에 출력하고, DecoderConfigDescriptor 템플릿을 호출하고, } 를 mux 파일에 출력하며, 상기 slConfigDescr 템플릿은 slConfigDescr가 매칭되면, slConfigDescr SLConfigDescriptor {를 mux 파일에 출력하고, SLConfigDescriptor 템플릿을 호출하고, } 를 mux 파일에 출력함이 바람직하다.
상기 XMT2MUX 스타일 쉬트는 AFXConfig 템플릿 및 DecoderConfigDescriptor 템플릿을 포함하는 복호화정보 스타일 쉬트를 더 구비함을 특징으로 하고, 상기 DecoderConfigDescriptor 템플릿은 복호화시 필요한 정보를 갖는 DecoderConfigDescriptor노드 내의 decSpecificInfo노드 내에서 엘리멘트 name으로 AFXconfig를 선언하고, decSpecificInfo가 매칭된 후, AFXConfig가 파싱되면 AFXConfig 템플릿을 호출함이 바람직하다.
상기 AFXConfig 템플릿은 AFXConfig가 매칭되면, decSpecificInfo AFXConfig{ 를 mux 파일로 출력하도록 규정하고, OctreeImageDecoderSpecific가 파싱되면OctreeImageDecoderSpecific 템플릿을 호출하고, PointTextureCompDecoderSpecific가 파싱되면 PointTextureCompDecoderSpecific템플릿을 호출하고, }를 mux 파일로 출력함이 바람직하다. 상기 OctreeImageDecoderSpecific 템플릿은 OctreeImageDecoderSpecific가 매칭되면, 상기 OctreeImageDecoderSpecific{ }를 mux 파일로 출력함이 바람직하다. 상기 PointTextureCompDecoderSpecific 템플릿은 PointTextureCompDecoderSpecific가 매칭되면, 상기 PointTextureCompDecoderSpecific{ }를 mux 파일로 출력함이 바람직하다.
상기 XMT2MUX 스타일 쉬트는 XMT 파일에서 StreamSource가 매칭되면, muxInfo MuxInfo { fileName 을 출력하고, url이 매칭되면, url 값을 mux 파일로 출력하고, url이 매칭되지 않으면, EncodingHints, BIFSEncodingHints, FBAEncodingHints, BitWrapperEncodingHints, CompressedImageFormat 중 어느 하나가 파싱되면, 그에 상응하는 EncodingHints 템플릿, BIFSEncodingHints템플릿, FBAEncodingHints템플릿, BitWrapperEncodingHints템플릿, CompressedImageFormat템플릿중 어느 하나를 호출하되, EncodingHints, BitWrapperEncodingHints, CompressedImageFormat가 아니면 streamFormat BIFS를 출력하고, } 가 파싱되면, 상기 }을 mux 파일로 출력함이 바람직하다.
CompressedImageFormat이 파싱된 후, JPEG 또는 PNG 또는 MPEG4-Video 또는 VTC 중 어느 하나가 파싱되면, 그에 상응하는 JPEG 템플릿 또는 PNG템플릿 또는 MPEG4-Video템플릿 또는 VTC 템플릿을 호출함이 바람직하다. JPEG 텝플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat JPEG 을 출력하며, PNG 템플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat PNG 을 출력하고, MPEG4-Video 템플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat MPEG4-Video를 출력하며, VTC 템플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat VTC를 출력하고, 상기 sourceFormat 템플릿과 targetFormat 템플릿은 param 템플릿을 호출하고, param 텝플릿은 파일이름을 값으로 출력함이 바람직하 다.
상기 BitWrapperEncodingHints템플릿은 BitWrapperEncodingHints가 매칭된 후, BitWrapperOctreeImageEncodingHints가 파싱되면, BitWrapperOctreeImageEncodingHints 템플릿을 호출하고, BitWrapperPointTextureEncodingHints가 파싱되면, BitWrapperPointTextureEncodingHints 템플릿을 호출함이 바람직하다.
상기 BitWrapperOctreeImageEncodingHints 템플릿은 BitWrapperOctreeImageEncodingHints 가 매칭된 후, sourceFormat이 파싱되면 sourceFormat템플릿을 호출하고, targetFormat이 파싱되면 targetFormat템플릿을 호출하고, streamFormatOctreeImageCompression을 mux 파일에 출력하고, 상기 BitWrapperPointTextureEncodingHints 템플릿은 BitWrapperPointTextureEncodingHints가 매칭된 후, sourceFormat이 파싱되면 sourceFormat템플릿을 호출하고, targetFormat이 파싱되면 targetFormat템플릿을 호출하고, streamFormatPointTextureCompression을 mux 파일에 출력함이 바람직하다. 상기 sourceFormat 템플릿 및 targetFormat 템플릿은 param이 파싱되면 param 템플릿을 호출하고, 상기 param 텝플릿에서 파일이름을 값으로 출력함이 바람직하다.
그리고 상기 기재된 발명을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
이하, 첨부된 도면들을 참조하여 본 발명에 따른 DIBR 데이터를 위한 스키마 및 스타일 쉬트에 대해 상세히 설명한다.
먼저, MPEG-4 노드 개관을 설명한다. MPEG-4 노드는 총 180 여 개의 노드로 구성돼 있다. 각 노드는 노드 데이터의 특성에 따라 SF2DNode, SF3DNode, SFAppearanceNode, SFAudioNode, SFBAPNode, SFDepthImageNode, SFDepthTextureNode, SFGeometryNode, SFWorldNode 등 53개의 group 노드로 구분돼 있다.
DIBR 압축에 관련된 BitWrapper 노드는 상기 그룹 노드 중 SF2DNode, SF3DNode, SFGeometryNode, SFWorldNode 노드에 속한다.
그리고 DIBR 관련 노드로는 SimpleTexture, PointTexture, OctreeImage, DepthImage가 있다. 상기 DepthImage 노드는 SF3DNode, SFDepthImageNode 그룹노드에 속한다. 그리고 상기 SimpleTexture는 SFDepthTextureNode, SFWorldNode 그룹노드에 속하고, 상기 PointTexture는 SFDepthTextureNode, SFWorldNode 그룹노드에 속한다. 상기 OctreeImage는 SF3DNode, SFWorldNode 그룹노드에 속한다. DepthImage 노드는 카메라 정보(position, orientation, fieldOfView, nearPlane, farPlane, orthographic)들로 구성돼 있고, 이 중 SFDepthTextureNode 필드에 PointTexture와 SimpleTexture가 사용된다. 또한 OctreeImage 노드는 Octree에 대한 데이터 필드를 가지고, texture 정보로 MFDepthImageNode 의 images로서 SimpleTexture가 사용된다.
XML에 대해 간략히 설명한다. XML은 메타언어(metalanguage)이다. XML은 SGML의 subset 또는 profile이다. 즉, SGML에서 web에서 사용될 수 있는 것으로 만들었다. Web에서 사용될 수 없는 것은 뺐다. XML은 하이퍼링킹 스키마에 대한 스펙을 포함한다. 상기 하이퍼링킹 스키마의 스펙은 Extelsible Linking Language(XLL)라고 하며, 분리된 언어로 제공된다. XML은 Extensible Stylesheet Language(XSL)라고 하는 스타일 언어에 대한 스펙을 포함한다. XML은 describing information에 대한 것이다. XML은 다른 애플리케이션에 의해 이해될 수 있는 데이터를 구조화하고 설명하는데 사용되는 standard language이다. XML은 logical structure를 가지고 있다. 이것은 문서를 어떻게 만들것인지, 문서가 무엇을 포함하고 있을지를 나타낸다.
다음으로 XML 스키마에 대해 간략히 설명한다. XML 스키마란 공통된 어휘를 표현하고, 사람들에 의해 만들어질 규칙들을 전송할 machines을 허용한다. XML 스키마는 XML 문서의 구조(structure)와 컨텐트(content)와 의미(semantic)를 정의하는 역할을 한다.
XML schema는 컴포넌트의 집합으로 구성돼 있다. 이 중 기본이 되는 중요한 컴포넌트들에 대해서 살펴보자.
Type 정의 컴포넌트가 있는데, simpleType과 complexType이 있다. simpleType은 인코딩하는 값들에 대한 strings 또는 information을 제한하는 집합이다. Attribute information item의 normalized value 또는 element children이 없는 element information item에 적용된다. 대부분 Attributes의 에 적용된다.
complexType은 attribute declarations과 content type의 집합으로 Attributes와 element information item이 있는 children에 각각 적용된다. Content type은 element와 character information items이 모두 없는 empty를 포함하는 children과 특정 simple type에 속하는 string을 포함하는 children을 필요로 하거나, 특정 model group에 맞는 element information items(ex. group)의 sequence를 포함하는 children을 필요로 한다.
Element 선언은 Type 정의를 name으로 하고, simple 또는 complex와 제한자의 조합이다.
<!ELEMENT A . . .>
<!ATTLIST A . . .>
attribute 선언은 name과 simple type 정의와 발생정보와 default value의 조합이다.
주석은 <annotation>~</annotation>까지 주석을 의미한다.
Data type과 Derivation이 있다. Sequence는 sequence로 둘러싼 elements가 순서대로 정의되도록 제한을 준다. Choice는 choice로 둘러싼 elements 중 하나만 선택적으로 선택한다. minOccurs/maxOccurs는 Element의 발생 수를 제한하는 것으로 minOccurs(최소 발생수)와 maxOccurs(최대 발생수)가 있다. Group은 특정 기능을 하는 elements를 모아 group으로 사용할 수 있고, 다른 element에서 참조가 가능하다. MaxInclusive은 base type 정의의 숫자 범위에서 최대값을 의미한다. MinInclusive는 base type 정의의 숫자 범위에서 최소값을 의미한다.
예를 들면 다음과 같다.
simpleType의 예:
<simpleType name="bit4">
<restriction base="unsignedByte">
<maxInclusive value="15"/>
</restriction>
</simpleType>
complexType의 예:
<element name="par">
<complexType>
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="xmta:par" minOccurs="0"/>
<group ref="xmta:BIFSCommandsGroup"/>
<element ref="xmta:AnimationFrame"/>
<group ref="xmta:OtherCommands"/>
</choice>
<attribute name="begin" type="xmta:SFTime" use="optional" default="0"/>
<attribute name="atES_ID" type="IDREF" use="optional"/>
</complexType>
</element>
simpleType element는 bit4를 정의한다. name attribute에 bit4를 넣고, bit4 attribute를 restriction element를 사용해 제한한다. Restriction element는 base attribute에 unsignedByte를 하며, 상기 unsignedByte의 최대 값 (maxInclusive)은 value attribute에 15로 정의한다. 따라서 bit4를 unsignedByte타입이고, 0부터 15까지의 수라는 뜻이 된다.
par element는 complexType element를 포함한다. complexType element는 2 subelements와 2개의 subgroups과 2개의 attributes로 구성되었다.
subelements와 subgroups는 choice element를 사용하므로, 4개 중 1개를 선택한다는 뜻을 정의했다. 그리고 그 개수는 최소 0부터 무한 개까지 될 수 있다. 이는 choice element의 minOccurs="0" maxOccurs="unbounded" 로 표현함으로 정의됐다. 이 subelements와 subgroups은 이미 정의된 element를 사용하고 있다.
Attributes를 살펴보자. Arrtribute name이 begine이고, 그 타입은 SFTime이다. 이것은 선택적으로 사용되고, 디폴트 값은 0이다. 그 다음 attribute name은 atES_ID이고, type은 IDREF이고, 선택적으로 사용된다는 뜻을 정의했다.
Attribute를 설명하면 다음과 같다.
<xs:complexType>
<xs:attribute ref="xml:lang" use="required"/>
<xs:attribute ref="xml:space" default="preserve"/>
<xs:attribute name="version" type="xs:number" fixed="1.0"/>
</xs:complexType>
use와 default가 꼭 함께 사용되어야 하는가? Use= optional 없이 default= 100 만 사용할 수 있는가? Use= optional 없이 default= 100 만 사용 가능하다. Use, default는 모두 attribute의 값과 발생을 제한하기 위해서 사용된다. 또 use는 optional과 required 값을 가질 수 있다. 또한 Default와 fixed가 exclusive하게 사용될 수 있다. 그리고 use와 default/fixed가 함께 사용될 수도 있고, 각각 하나씩 사용될 수도 있다. optional은 attribute가 없어도 된다는 것을 의미한다. Required는 반드시 attribute가 있어야 함을 뜻한다. Default는 default 값을 갖게 하며, Fixed는 반드시 fixed로 선언된 값만 사용해야 함을 나타낸다.
본 발명은 깊이영상기반 표현 데이터 압축에 관한 메타표현을 이용한 입력파일 생성에 필요한 XMT 스키마와 sytle sheet에 관한 것이다. 도 1은 상기 깊이영상기반 표현 데이터 압축에 관한 메타표현을 이용한 입력파일 생성에 대한 전체적인 구성도를 도시한 것으로서, 참조번호 100은 상기 XMT 스키마와 sytle sheet를 나타낸다.
이제, XMT 스키마에 대해 전체적인 설명을 하기로 한다. XMT 스키마란 XMT document의 구조를 기술하고, XMT document 안의 contents를 제한하는 것이다. MPEG-4 XMT 표준을 따르는 XMT 스키마는 XMT-A와 XMT-O, XMT-C로 구성된다. XMT 스키마는 end user와 system 상의 직접적으로 일을 수행하는 프로그램과의 사이에서 end user가 데이터를 저작하는 단계에서부터, 데이터를 표현/조작/압축하는데, 필요한 여러 인자들을 쉽게 조절할 수 있는 방법을 제공한다. XMT-O는 end user가 데이터를 저작(표현/조작/압축)할 때, end user의 의도를 여러 인자들의 abstract한 형태로 전달하는 역할을 한다. XMT-O는 사용자가 필요로 한 인자들을 user가 이해하기 쉬운 구문과 의미로 정의한다(user friendly interface로 제공한다). 그래서 이 값들은 system 상의 프로그램에 직접 전달되지 못한다. 그래서 이러한 end user가 이해하기 쉬운 형태로 된 인자들을 system 상의 프로그램에게 전달할 수 있는 XMT-A를 제공한다. XMT-A는 XMT-O에서 전달된 end user의 의도가 담긴 인자들에 해당하는 것을 system 상의 프로그램이 이해할 수 있는 인자들로 정의하고 매핑하는 역할을 한다. XMT-A는 system 상의 프로그램이 압축, 전송, 조작, scene 구성과 같은 작업에 필요한 것들을 정의한다. XMT-C는 XMT-O와 XMT-A에서 공통으로 사용되는 모듈들을 정의하고 있으며, XMT-O에서 XMT-A로의 매핑에 사용되는 것을 정의하고 있다. 도 2는 end user 와 system 상의 프로그램 사이에서 XMT 스키마의 역할을 도시한 것이다.
다음으로 Style sheet에 대한 설명하기로 한다. 먼저, XML Style sheet에 대한 설명한다. 일반적으로, Style sheet는 xml schema의 규칙(rule)에 맞게 작성된 입력 파일이 들어오면, 상기 입력 데이터를 다른 포맷으로 변환시키기 위한 변환 작업을 한다. 즉, 출력 포맷을 만들어주는 역할을 담당한다. 상기 style sheet을 어떻게 정의하느냐에 따라 한 개의 schema만 정의해도, 여러 개의 다른 출력 포맷 형식대로 출력이 가능하다. 이는 마치 표준 언어를 정의해 놓고, 번역기를 통해 상기 표준언어를 한국어, 영어, 일본어, 중국어, 스페인어 등으로 번역할 수 있는 것과 같다. 즉, style sheet는 언어 자동번역기와 같은 역할을 한다.
MPEG-4 Style sheet에 대해 설명하기로 한다. MPEG-4 style sheet는 XMT 입력 파일을 다른 포맷으로 변환하는 작업을 한다. 본 발명에서 상기 다른 포맷은 도 3의 MPEG-4 플레이의 입력 파일인 IM1 Textual format 이다.
도 3은 텍스트 구문(textual syntax)을 사용해서 MPEG-4 노드를 사용해 컨텐츠를 만들 수 있게 하는 저작 프레임워크를 도시한 것이다.
본 발명에 의한 XMT-A 스키마와 Style sheet를 설명하기로 한다. 먼저, XMT-A 스키마에 대한 구문(syntax)과 의미(semantics)를 설명하면 다음과 같다. 본 발명은 XMT-A 스키마에 대한 것이다. 상기 XMT-A 스키마는 그 기능에 따라 4개즉 xmt-a, xmta-bifs, xmta-o, xmta-encoding로 나누어진다. 상기 Xmt-a.xsd는 main 스키마로, MPEG-4 노드의 필드에서 사용될 타입(type)을 정의한다. 상기 Xmta-bifs.xsd는 BIFS 스키마로, 전체 MPEG-4 노드 및 노드의 필드 정의, XMT 파일의 구조(Header, Body)를 정의한다. 상기 Xmta-o.xsd는 Object Descriptor에 대한 내용을 정의한다. 상기 xmta-encoding.xsd는 압축과 같은 특정 노드를 위한 것들을 정의한다. 즉, 압축에 필요한 압축매개변수, 복호화시 복호화기에서 필요한 정보들이 정의된다.
각 노드에 대한 XMT-A 스키마 구문(syntax)과 의미(semantics)는 다음과 같다. MPEG-4 노드를 이에 해당하는 schema의 element로 정의할 때, 노드의 필드 중 single value 또는 multiple value를 갖는 것을 attribute로 정의하고, 다른 노드 를 필드 값으로 갖는 것을 subelement로 정의한다. 필드의 이름이 element나 attribute의 이름이 된다.
구체적으로 DIBR 노드에 대한 XMT-A 스키마 구문과 의미는 다음과 같다.
1. DepthImage 노드 (Xmta-bifs.xsd)
DepthImage 노드의 스키마 구문은 다음과 같다.
<complexType name="DepthImageType">
<all>
<element ref="xmta:IS" minOccurs="0"/>
<element name="diTexture" form="qualified" minOccurs="0">
<complexType>
<group ref="xmta:SFDepthTextureNodeType" minOccurs="0" />
</complexType>
</element>
</all>
<attribute name="farPlane" type="xmta:SFFloat" use="optional" default="100"/>
<attribute name="fieldOfView" type="xmta:SFVec2f" use="optional" default="0.785398 0.785398"/>
<attribute name="nearPlane" type="xmta:SFFloat" use="optional" default="10"/>
<attribute name="orientation" type="xmta:SFRotation" use="optional" default="0 0 1 0"/>
<attribute name="orthographic" type="xmta:SFBool" use="optional" default="true"/>
<attribute name="position" type="xmta:SFVec3f" use="optional" default="0 0 10"/>
<attributeGroup ref="xmta:DefUseGroup"/>
</complexType>
<element name="DepthImage" type="xmta:DepthImageType"/>
<group name="SFDepthTextureNodeType">
<choice>
<element ref="xmta:PointTexture"/>
<element ref="xmta:SimpleTexture"/>
</choice>
</group>
상기 DepthImage 노드의 스키마 구문은 DepthImage 노드를 schema로 정의하며, DepthImage 기반 모델 렌더링에 사용된다. 그리고 카메라정보와 Depth를 가진텍스쳐 정보를 구비한다. 여러 개의 subelements와 attributes를 가지므로 complextype의 name에 DepthImageType을 정의하다. 그리고 3개의 subelements 모두 나타나야 하므로 all의 stat tag와 end tag로 subelement를 둘러싸 제한을 한다. 첫번째 subelement는 IS란 element를 참조하고 있고, 이것은 나타내지 않을 수도 있기 때문에 minOccurs를 0으로 정의한다. 두번째 element의 name을 diTexture로 정의한다. 이것은 subelement로서 model group을 갖는다. 상기 model group은 namespace에 정의된 스키마(xmta)에 미리 정의된 name이 SFDepthTextureNodeType이고, SFDepthTextureNode노드 스키마를 참조한다. SFDepthTextureNode 노드 스키마는 상기 DepthImage 노드의 diTexture에 사용되며, PointTexture와 SimpleTexture 엘리먼트를 하위 엘리먼트로 포함하고 있으며, 선택적으로 사용될 수 있다. 엘리먼트를 제한하기 위해 Model Group을 포함하는 complextype을 포함한다. 상기 model group은 없을 수도 있기 때문에 minOccurs=0으로 선언하였고, 발생하면 1번 발생한다.
상기 카메라정보는 7개의 Attributes position, orientation, fieldOfView, nearPlane, farPlane, orthographic 으로 표현된다. 그리고 상기 DepthImage 노드는 상기 7개의 attrubutes, 중 적어도 하나를 attribute의 name으로 규정한다.
Name이 farPlane인 attribute는 SFFloat type을 갖고, 선택적으로 사용되며(use), default 값이 100이다. Name이 fieldOfView인 attribute는 SFVec2f type을 갖고, 선택적으로 사용되며, 0.785398 0.785398 값을 default 값으로 갖는다. Name이 nearPlane을 갖는 attribute는 SFFloat type을 가지며, 선택적으로 사용되고, default 값을 10을 갖는다. Name이 orientation인 attribute는 SFRotation type을 갖고, 선택적으로 사용되며, 0 0 1 0을 default 값으로 갖는다. Name이 orthographic인 attribute는 SFBool type이며, 선택적으로 사용되며, true를 default 값으로 갖는다. Name이 position인 attribute는 SFVec3f type이며, 선택적으로 사용되고, 0 0 10 값을 default로 갖는다. AttributeGroup으로 DefUseGroup를 참조하고 있다.
2. SimpleTexture 노드 (xmta-bifs.xsd)
SimpleTexture 노드의 스키마 구문은 다음과 같다.
<complexType name="SimpleTextureType">
<all>
<element ref="xmta:IS" minOccurs="0"/>
<element name="depth" form="qualified" minOccurs="0">
<complexType>
<group ref="xmta:SFTextureNodeType" minOccurs="0" />
</complexType>
</element>
<element name="texture" form="qualified" minOccurs="0">
<complexType>
<group ref="xmta:SFTextureNodeType" minOccurs="0" />
</complexType>
</element>
</all>
<attributeGroup ref="xmta:DefUseGroup"/>
</complexType>
<element name="SimpleTexture" type="xmta:SimpleTextureType"/>
상기 SimpleTexture 노드의 스키마 구문을 설명하면 다음과 같다. SimpleTexture 노드는 DIBR 모델을 렌더링하기 위해, depth 이미지와 color 이미지를 입력으로 받아, 3차원 렌더링하는데 사용된다. 상기 SimpleTexture 노드의 스키마는 여러 개의 subelements를 가지므로 complextype name으로 SimpleTextureType을 정의하며, 3개의 subelements로 이뤄졌기 때문에 complextype으로 정의한다. SimpleTexture 노드가 새로운 노드를 정의하는 proto 노드에서 사용될 수 있고, 여기서 IS 노드로 사용될 수 있다. 따라서 여기서 IS element를 참조한다. SimpleTexture 노드의 depth element는 depth 정보를 image 형태로 가지고 있고, texture element는 color 정보를 image 형태로 가지고 있다. 상기 각각의 이미지는 SFTextureNodeType 노드에 정의되어 있다. 또한 SimpleTexture 노드의 이름을 정의 하고 사용할 수 있도록 Def 또는 Use로 표현할 수 있다. 이것은 attributeGroup DefUseGroup을 참조함으로써 가능하다.
3. PointTexture 노드 (Xmta-bifs.xsd)
PointTexture 노드의 스키마 구문은 다음과 같다.
<complexType name="PointTextureType">
<attribute name="color" type="xmta:MFColor" use="optional"/>
<attribute name="depth" type="xmta:MFInt32" use="optional"/>
<attribute name="depthNbBits" type="xmta:SFInt32" use="optional" default="7"/>
<attribute name="height" type="xmta:SFInt32" use="optional" default="256"/>
<attribute name="width" type="xmta:SFInt32" use="optional" default="256"/>
<attributeGroup ref="xmta:DefUseGroup"/>
</complexType>
<element name="PointTexture" type="xmta:PointTextureType"/>
상기 PointTexture 노드의 스키마 구문은 PointTexture 노드를 schema로 정의하는 부분이다. 상기 PointTexture 노드의 스키마는 여러 attributes를 가지므로 complextype name으로 PointTextureType을 정의하며, 6개의 attributes로 이뤄졌기 때문에 complextype으로 정의된다
또한 상기 PointTexture 노드 스키마는 width, height, depthNbBits, depth, color 중 적어도 하나를 attribute name으로 규정한다.
Name이 Color인 attribute는 MFColor type을 가지며, 선택적으로 사용될 수 있다. Name이 depth인 attribute는 MFInt32 type으로 가지며, 선택적으로 사용될 수 있다. Type이 MF인 것은 array 값을 갖는다는 의미이다. Name이 depthNbBits인 attribute는 SFInt32 type이고, 선택적으로 사용되며, default 값으로 7을 갖는다. Name이 height인 attribute는 SFInt32 type이며, 선택적으로 사용될 수 있고, default 값으로 256을 갖는다. Name이 width 인 attribute는 SFInt32 type이며, 선택적으로 사용될 수 있고, 256 값을 갖는다. AttributeGroup로 DefUseGroup을 참조한다.
4. OctreeIamge 노드 (Xmta-bifs.xsd)
OctreeIamge 노드의 스키마 구문은 다음과 같다.
<complexType name="OctreeImageType">
<all>
<element ref="xmta:IS" minOccurs="0"/>
<element name="images" form="qualified" minOccurs="0">
<complexType>
<group ref="xmta:SFDepthImageNodeType" minOccurs="0" maxOccurs="unbounded"/>
</complexType>
</element>
</all>
<attribute name="octree" type="xmta:MFInt32" use="optional"/>
<attribute name="octreeResolution" type="xmta:SFInt32" use="optional" default="256"/>
<attribute name="voxelImageIndex" type="xmta:MFInt32" use="optional"/>
<attributeGroup ref="xmta:DefUseGroup"/>
</complexType>
<element name="OctreeImage" type="xmta:OctreeImageType"/>
상기 OctreeIamge 노드의 스키마 구문은 OctreeImage 노드를 schema로 정의하는 부분이다. 여러 개의 attributes를 가지므로 complextype name으로 OctreeImageType을 정의하며, 2개의 subelements와 4개의 attributes로 이뤄졌기 때문에 complextype으로 정의한다. Subelements은 모두 나타나야 하므로, all로 묶어서 제한하였다. 첫번째 element는 name이 IS인 element를 참조한다. 이것은 나타나지 않을 수 있으므로, 발생횟수를 0으로 제한하였다. 만일 나타날 때는 1번 나타난다. 두번째 name이 images인 element는 발생하지 않을 수도 있으므로, minOccurs을 0으로 제한하였고 발생할 때는 1번 발생한다. 또한 subelement로 SFDepthImageNodeType인 group element를 참조하고 있다. 상기 group은 최소 0번, 최대 무한대로 발생할 수 있다. 그러므로, 두번째 element는 complextype을 갖는 다.
상기 octreeimage 노드 스키마는 octree, octreeResolution, voxelImageIndex 중 적어도 하나를 attribute name으로 규정한다. Name이 octree인 attribute는 MFInt32 type을 갖고, 선택적으로 선언될 수 있다. Name이 octreeResolution인 attribute는 SFInt32 type을 갖고, 선택적으로 선언될 수 있고, 256을 default 값으로 갖는다. Name이 voxelImageIndex인 attribute는 MFInt32 type이며, 선택적으로 사용될 수 있고, AttributeGroup으로 DefUseGroup을 참조한다.
5. BitWrapper 노드에 대한 XMT-A 구문과 의미(Xmta-bifs.xsd)
BitWrapper 노드의 스키마 구문은 다음과 같다.
<complexType name="BitWrapperType">
<all>
<element ref="xmta:IS" minOccurs="0"/>
<element name="node" form="qualified" minOccurs="0">
<complexType>
<group ref="xmta:SFWorldNodeType" minOccurs="0" />
</complexType>
</element>
<element ref="xmta:BitWrapperEncodingParameter"/>
</all>
<attribute name="type" type="xmta:SFInt32" use="optional" default="0"/>
<attribute name="url" type="xmta:MFUrl" use="optional"/>
<attribute name="buffer" type="xmta:SFString" use="optional" default="&quot;&quot;"/>
<attributeGroup ref="xmta:DefUseGroup"/>
</complexType>
<element name="BitWrapper" type="xmta:BitWrapperType"/>
상기 BitWrapper 노드는 node 필드의 데이터를 압축하고 비트스트림을 인-밴드(in-band) 또는 아웃-밴드(out-band)를 사용해서 전송한다. url 필드는 아웃-밴드 비트스트림을 전송하고, buffer 필드는 BIFS 비트스트림과 같이 인-밴드 비트스트림을 전송한다.
만약 저작자가 데이터를 압축해서 BitWrapper 스킴(scheme)을 통해 전송하고자 한다면 저작자는 비트스트림을 생성하기 위한 매개인자를 조절할 수 있어야 한다. 이것은 XMT-A 스키마 구문(syntax)으로 할 수 있다.
상기 BitWrapper 노드 스키마는 그래픽 데이터를 압축하는데 사용된다.
상기 BitWrapper는 node와 BitWrapperEncodingParameter를 하위 엘리먼트로 구비하고, 3개의 attributes를 갖는다. 상기 3개의 attributes 는 name이 type인 attribute, name이 url인 attribute, name이 buffer인 attribute 이다. 상기 각 attribute의 type은 SFInt32, MFUrl, SFString 을 갖는다.
상기 node 엘리먼트는 압축될 데이터를 포함한 그래픽 데이터를 나타내며, SFWorldNode를 하위 엘리먼트로 참조하고 있다. 그 의미는 node에서 SFWorldNode를 엘리먼트에 선언된 모든 하위 엘리먼트가 사용될 수 있다는 뜻이다.
한편, 압축파라미터인 BitWrapperEncodingParameter를 설명하기로 한다. 압축파라미터 스키마는 포인트 텍스쳐를 위한 압축률을 포함하며, BitWrapperEncodingParameter를 엘리멘트 이름으로 하는 노드 내에 포함되며, 엘리멘트 이름이 PointTextureEncodingParameter이고, attribute 이름이 configPercent이고, 그 타입이 codingPercentType를 가진다. 상기 codingPercentType은 simpleType name으로 codingPercentType을 가지며, restriction base는 int 이다.
상기 BitWrapperEncodingParameter의 스키마 구문은 다음과 같다.
<element name="BitWrapperEncodingParameter">
<complexType>
<choice>
<element name="CoordinateInterpolatorEncodingParameter" minOccurs="0" maxOccurs="1">
</element>
<element name="IndexedFaceSetEncodingParameter" minOccurs="0" maxOccurs="1">
</element>
<element name="OrientationInterpolatorEncodingParameter" minOccurs="0" maxOccurs="1">
</element>
<element name="PositionInterpolatorEncodingParameter" minOccurs="0" maxOccurs="1">
</element>
<element name="MeshGridEncodingParameter" minOccurs="0" maxOccurs="1">
</element>
<element name="PointTextureEncodingParameter" minOccurs="0" maxOccurs="1">
<complexType>
<attribute name="codingPercent" type="xmta:codingPercentType" use="optional" default="100"/>
</complexType>
</element>
</choice>
</complexType>
</element>
상기 BitWrapperEncodingParameter의 스키마 구문은 PointTexture의 encodingparametner를 schema의 element로 정의한다. 상기 PointTextureEncodingParameter을 element의 name으로 하고, 최소 발생횟수를 minOccurs에 입력한다. 여기서는 0 이다. 최대 발생횟수를 maxOccurs에 입력한다. 이 element는 attribute를 가지므로, complextype을 포함한다. Attribute name은 codingPercent이고, type은 codingPercentType이고, 선택적으로 사용되며, default 값으로 100을 갖는다.
PointTextureEncodingParameter에 대해 설명한다. 상기 PointTextureEncodingParameter는 PointTexture 압축(compression)에 사용되는 encoding parameter인 codingPercent를 포함한다. codingPercent는 PointTexture에서 depth value와 color value에 대한 압축 수준을 결정한다.
XMT-A syntax 관점에서 상기 PointTextureEncodingParameter를 자세히 설명하면, PointTexture에 대해 compression에 사용할 encoding parameter를 PointTextureEncodingParameter라는 이름의 element로 정의한다. 또한 상기 PointTextureEncodingParameter element는 XMT 문서에서 최소 0번 발생하거나(발생 하지 않거나), 최대 1번 발생할 수 있다. 상기 element는 attiribute를 포함하고 있으며, 이 attribute는 complexType으로 둘러싸여 표현된다. Attribute의 이름은 codingPercent이고, 그 type은 codingPercentType에 정의한 것을 사용한다. Use는 optional하게 사용될 수 있다. 반드시 사용되지 않아도 된다는 뜻이다. Default 값은 100을 갖는다는 뜻이다.
상기 PointTextureEncodingParameter의 스키마 구문은 xmta-encoding.xsd에서 BitWrapperEncodingParameter를 설명하는 syntax 내에 정의되어 있다.
한편, 압축(복호화)시 필요한 encoding parameter를 설명하기로 한다.
PointTexture에 대한 encoding parameter의 스키마 구문은 다음과 같다.
<simpleType name= "codingPercentType">
<restriction base= "int">
<minInclusive value= "1"/>
<maxInclusive value=" 100"/>
</restriction>
</simpleType>
상기 declaration of basic types for PointTexture은 PointTexture compression의 encoding parameter(codingPercent라는 이름)를 정의할 때, 필요한 CodingPercent의 Type을 정의하는 부분이다. 보다 자세하게 설명하면, 상기 PointTexture의 Type은 simpleType이며, 이름이 codingPercentType 이다. 또한 codingPercentType이 가질 수 있는 값은 integer type이고, 최소 1부터 최대 100까지의 값을 가질 수 있다는 뜻이다. 이 부분은 xmt-a.xsd 스키마에서 Bone-Based Animation의 basic types 선언 부분 이후에 정의되어 있다.
상기 스키마 구문은 PointTexture의 encoding parameter element의 attribute의 type으로 사용되는 codingPercentType을 정의한다. SimpleType으로서 name이 codingPercentType이다. 상기 simpleType은 restriction 제한자를 포함한다. Restriction은 Integer type을 base로 하고, 그 값의 범위는 최소 값 1 ~ 최대 값 100을 갖는다. 최소 값은 minInclusive의 value로 표현하고, 최대 값은 maxInclusive의 value로 표현한다.
다음으로, 부호화와 복호화 시 필요한 BitWrapperEncodingHints를 설명한다. 상기 BitWrapperEncodingHints는 BitWrapper노드가 url 필드를 사용하는 아웃밴드인 경우에 스크립트 파일에서 Muxinfo에 필요한 정보를 규정하기 위해 사용되며, 상기 각 하위 엘리멘트는 sourceFormat 와 targetFormat 중 적어도 하나를 하위 엘리멘트로 포함한다. 상기 스크립트 파일에서 Muxinfo에 필요한 정보는 DIBR 압축 비트스트림 파일 이름 및 비트스트림 압축 포맷을 포함한다.
본 발명에서는 BitWrapperEncodingHints에 OctreeImage에 대한 encodinghints인 BitWrapperOctreeImageEncodingHints와 PointTexture에 대한 encodinghints인 BitWrapperPointTextureEncodingHints를 제안한다. 상기 부호화와 복호화 시 필요한 BitWrapperEncodingHints는 xmta-encoding.xsd 스키마에서 정의된다. OctreeImage와 PointTexture의 BitWrapperEncodingHints의 구문은 다음 과 같다.
<element name="BitWrapperEncodingHints">
<complexType>
<choice>
<element name="BitWrapper3DMCEncodingHints">
<complexType>
<sequence>
<element name="sourceFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="targetFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name="BitWrapperICEncodingHints">
<complexType>
<sequence>
<element name="sourceFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="targetFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name="BitWrapperMeshGridEncodingHints">
</element>
<element name="BitWrapperOctreeImageEncodingHints">
<complexType>
<sequence>
<element name="sourceFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="targetFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name="OthersEncodingHints">
<complexType>
<sequence>
<element name="sourceFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="targetFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name="BitWrapperPointTextureEncodingHints">
<complexType>
<sequence>
<element name="sourceFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="targetFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name="BitWrapperWaveletSubdivisionSurfaceEncodingHints">
</element>
</choice>
</complexType>
</element>
semantics를 설명하면, BitWrapperEncodingHints는 BitWrapper 노드가 그 안에 있는 "url" 필드를 사용하는 아웃-밴드(out-band) 경우에 스크립트(.mux) 파일에서 "MuxInfo description을 명세하기 위해 사용된다. 또한 DIBR 관련 노드에서 압축된 이미지(JPEG, PNG) 또는 동영상(CompressedImageFormat : MPEG4-Video, VTC 등)을 포함하고 있을 때, 이것을 전송하는데 사용된다. 그 결과 XMT 입력 파일이 입력으로 들어왔을 때, 상기 입력파일은 DIBR 관련 object를 포함하는 컨텐츠를 표현한 것이다. XMT 입력 파일을 미리 정의된 스키마를 참조해서 BitWrapperEncodinghints에 대한 스타일쉬트를 실행하여, MPEG-4 binary textual format과 일치하는 mux 파일을 출력할 수 있게 한다. 상기 MuxInfo에 대한 description 중 압축된 파일이름을 sourceFormat/targetFormat element에 포함된 param element에 명시하므로써 전송한다.
syntax를 설명하면, BitWrapperEncodingHints 안에 BitWrapperOctreeImageEncodingHints와 BitWrapperPointTextureEncodingHints가 subelement로 되어 있고, 이들 각각의 subelement 안에는 sourceFormat과 targetFormat을 subelement로 포함한다. 그래서 BitWrapperOctreeImageEncodingHints와 BitWrapperPointTextureEncodingHints는 compexType를 포함하게 된다. 그리고 compexType 안의 sourceFormat과 targetFormat는 두 가지 모두 사용할 수도 있고, 한 가지씩만 사용할 수도 있다. 두 가지 모두 사용할 경우에는 sourceFormat 다음에 targetFormat이 나와야 한다. 또 sourceFormat과 targetFormat 각각은 파일명을 실제 포함하는 param element를 여러 개 포함할 수 있기 때문에 compexType를 포함하고, 여러 개 발생할 경우에는 순서를 정하기 위해 sequence로 표현된다.
다음으로, 복호화 시 필요한 decodingspecific info를 설명하기로 한다. BitWrapper노드가 url 필드를 사용하는 아웃밴드인 경우에, 복호화 정보 스키마가 필요하다. 상기 복호화 정보 스키마는 AFXConfig 스키마 및 DecoderConfigDescriptor 스키마를 구비한다. 상기 DecoderConfigDescriptor 스키마는 복호화시 필요한 정보를 갖는 DecoderConfigDescriptor노드 내의 decSpecificInfo노드 내에서 엘리멘트 name으로 AFXconfig를 규정한다.
AFXConfig는 비트스트림을 복호화할 때, 어느 복호화기를 사용해서 복호화돼야 하는지에 대한 정보를 포함하고 있다. 즉 OctreeImage compression과 PointTexture compression을 사용해 압축된 비트스트림이 어느 복호화기에서 복호화되어야 하는지에 대한 정보를 포함하고 있다.
AFXConfig의 OctreeImageDecoderSpecific과 PointTextureCompDecoderSpecific의 syntax적 의미는 다음과 같다. complexType의 AFXConfigType은 여러 개의 element를 포함할 수 있고, 사용될 때는 이 중 한 개를 선택하여 사용할 수 있다(<choice>~</choice>). 여러 가지 복호화기에 대한 정보 중에, OctreeImage compression으로 만들어진 비트스트림에 대해서는 OctreeImage 복호화기를 사용해서 비트스트림을 복호화하라고 알려주는 OctreeImageDecoderSpecific 정보를 사용할 수 있도록 element로서 정의했고, PointTexture compression으로 만들어진 비트스트림에 대해서는 복호화 시, PointTexture 복호호화기를 사용해서 비트스트림을 복호화하라고 알려주는 PointTextureCompDecoderSpecific 정보를 사용할 수 있도록 element로 정의한다.
AFXConfig 스키마는 옥트리 이미지 복호화기로 복호화할 것을 나타내는 OctreeImageDecoderSpecific 정보를 엘리멘트 이름으로 규정하고, 포인트 텍스쳐 복호화기로 복호화할 것을 나타내는 PointTextureCompDecoderSpecific 정보를 엘리멘트 이름으로 규정한다.
즉, AFXConfig는 xmta-od.xsd에서 DecoderConfigDescriptor element 다음에 정의되어 있다. 그 가운데서, OctreeImage compression으로 만들어진 비트스트림에 대해서는 OctreeImageDecoderSpecific라는 정보를 주도록 하고, PointTexture compression으로 만들어진 비트스트림에 대해서는 PointTextureCompDecoderSpecific라는 정보를 주도록 정의한다. OctreeImageDecoderSpecific element는 WMDecoderSpecific element 다음에 위치하도록 정의했고, PointTextureCompDecoderSpecific element는 BBADecoderSpecific 다음에 위치하도록 정의한다.
<element name="DecoderConfigDescriptor">
<complexType>
<sequence>
<element name="decSpecificInfo" form="qualified" minOccurs="0">
<complexType>
<choice minOccurs="0">
<element name="BIFSConfig" type="xmta:BIFSConfigType"/>
<element name="BIFSv2Config" type="xmta:BIFSv2ConfigType"/>
<element name="AFXConfig" type="xmta:AFXConfigType"/>
<element ref="xmta:DecoderSpecificInfo"/>
</choice>
</complexType>
</element>
<element name="profileLevelIndicationIndexDescr" form="qualified" minOccurs="0">
<complexType>
<sequence>
<element ref="xmta:ExtensionProfileLevelDescriptor" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
<attribute name="objectTypeIndication" type="xmta:objectTypeIndicationType" use="required"/>
<attribute name="streamType" type="xmta:streamTypeType" use="required"/>
<attribute name="upStream" type="boolean" use="optional" default="false"/>
<attribute name="bufferSizeDB" type="xmta:bit24a" use="optional" default="auto"/>
<attribute name="maxBitrate" type="xmta:bit32a" use="optional" default="auto"/>
<attribute name="avgBitrate" type="xmta:bit32a" use="optional" default="auto"/>
</complexType>
</element>
<complexType name="AFXConfigType">
<choice>
<element name="A3DMCDecoderSpecific"/>
<element name="CoordInterpCompDecoderSpecific"/>
<element name="OriInterpCompDecoderSpecific"/>
<element name="PosInterpCompDecoderSpecific"/>
<element ref="xmta:MeshGridDecoderSpecific"/>
<element ref="xmta:WMDecoderSpecific"/>
<element name="OctreeImageDecoderSpecific"/>
<element name="BBADecoderSpecific"/>
<element name="PointTextureCompDecoderSpecific"/>
</choice>
</complexType>
CompressedImageFormat을 설명하기로 한다. 사용자가 이미 압축된 이미지 또는 동영상 파일이 포함된 DIBR 데이터(컨텐츠)를 다양한 멀티미디어(다양한 플레이어와 같은 애플리케이션)를 사용해 볼 수 있다. 이렇게 사용자에게 시각화 되기 위해서는 DIBR 데이터는 압축된 이미지 또는 동영상 파일을 texture로 포함하고 있어야 한다. 또한 상기 파일이 다양한 멀티미디어에서 재생되기 위해서는 이미 압축된 형태의 데이터가 복호화기에서 복호화되고, 다른 정보들과 잘 조합 및 동기화되어 시각화되야 한다. 복호화 단계에서, 이미 압축된 이미지 또는 동영상 파일에 대한 파일이름과 스트림 포맷을 정보가 필요하다. 따라서 이것을 복호화기에 알려주기 위해 필요한 것이 CompressedImageFormat이다.
상기 CompressedImageFormat 스키마는 DIBR 관련 노드가 압축된 이미지, 또는 JPEG, PNG, MPEG4-Video, VTC을 포함하는 동영상을 포함하고 있을 때, 상기 압 축된 정보에 대해서 복호화시 필요한 정보(압축된 파일이름과 스트림 포맷)를 알려주는데 사용된다. 또한 상기 CompressedImageFormat 스키마는 Element name이 CompressedImageFormat이고, subelement의 name으로 JPEG과 PNG와 MPEG4-Video와 VTC를 포함하며, 상기 subelement 각각은 SourceFormat 또는 targetFormat 을 포함하고 있다. 상기 sourceFormat 또는 targetFormat은 param을 포함하고 있고, 상기 param에 파일이름이 저장된다.
CompressedImageFormat에 대한 구문은 다음과 같다.
<element name="CompressedImageFormat">
<complexType>
<choice>
<element name="JPEG">
<complexType>
<sequence>
<element name="sourceFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="targetFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name="PNG">
<complexType>
<sequence>
<element name="sourceFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="targetFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name="MPEG4-Video">
<complexType>
<sequence>
<element name="sourceFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="targetFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name="VTC">
<complexType>
<sequence>
<element name="sourceFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="targetFormat">
<complexType>
<sequence>
<element ref="xmta:param" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</choice>
</complexType>
</element>
한편, 본 발명에 의한 DIBR 데이터를 위한 Style sheet를 상세히 설명하기로 한다. MPEG-4 style sheet는 XMT 입력 파일을 다른 포맷으로 변환해 주기 위한 작업을 해 준다. 상기 다른 포맷의 일예를 들면 MPEG-4 플레이어의 입력 파일인 IM1 Textual format이 될 수 있다.
상기 스타일 쉬트는 DIBR 데이터를 위한 scene파일을 생성하기 위한 XMT2BIFS 스타일 쉬트 및 DIBR 데이터를 위한 mux 파일을 생성하기 위한 XMT2MUX 스타일 쉬트를 구비한다.
Style sheet의 내용은 다음과 같다. IC, 3DMC, BitWrapper, DIBR, BitWrapperEncodingHints, AFXConfig 노드에 대한 Style sheet이 있다. XMT 입력파일에서 body 부분 즉, Scene 관련 데이터는 XMT2BIFS.XSL에서 처리되어 scene 파일로 출력된다. 그리고 XMT 입력파일에서 header 부분, 즉 objectdescriptor에 대한 데이터는 XMT2MUX.XSL에서 처리되어 mux 파일로 출력된다.
먼저, XMT2BIFS.XSL을 설명하기로 한다. 스타일 쉬트는 각 element와 group을 template으로 정의한다. BitWrapper 노드를 설명하면, XMT 파일의 BitWrapper 노드 내용은 schema의 BitWrapper를 참조하여 파싱된다. 그리고 IM1 textual format과 호환되는 scene 출력 파일로 만들기 위해서 BitWrapper를 찾을 수 있게 geometry group에 선언되어야 한다. XMT2BIFS 스타일 쉬트에 geometry template 내에 있는 apply-templates에 BitWrapper를 사용할 수 있다. 즉 BitWrapper 템플릿이 매칭되도록 하기 위해, geometry 템플릿에 BitWrapper 템플릿을 호출할 수 있도록 선언한다.
<xsl:template match="xmt:geometry">
geometry <xsl:if test="@DEF">DEF <xsl:value-of select="@DEF" /><xsl:text>
</xsl:text></xsl:if>
<xsl:apply-templates select="xmt:Text |xmt:Bitmap |xmt:Box |xmt:Circle |xmt:Cone |xmt:Curve2D |xmt:Cylinder |xmt:ElevationGrid |xmt:Extrusion |xmt:Hierarchical3DMesh |xmt:IndexedFaceSet |xmt:IndexedFaceSet2D |xmt:IndexedLineSet |xmt:IndexedLineSet2D |xmt:PointSet |xmt:PointSet2D |xmt:Rectangle |xmt:Sphere|xmt:BitWrapper|xmt:ProtoInstance|xmt:MeshGrid" />
</xsl:template>
XMT 파일의 BitWrapper 노드 내용은 schema의 BitWrapper를 참조하여 파싱되고, IM1 textual format과 호환되는 scene 출력 파일로 만들어진다.
상기 XMT2BIFS 스타일 쉬트는 XMT 파일에서 BitWrapper가 매칭되면, 'BitWrapper {' 를 scene 파일로 출력하고, node가 파싱되면, 소정의 node 템플릿을 수행하고, 압축할 노드의 DIBR 인코딩 파라미터 중 PointTextureEncodingParameter가 파싱되면, 소정의 PointTextureEncodingParameter 템플릿을 수행하고, type, buffer, url 이 파싱되면, 상기 type, buffer, url 및 그 값들을 scene파일로 출력하고, }를 scene파일로 출력한다. 상술한 XMT2BIFS 스타일 쉬트의 일예를 들면 다음과 같다.
<xsl:template match= xmt:BitWrapper >
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if>BitWrapper {
<xsl:if test="xmt:IS"><xsl:call-template name = "IS" /></xsl:if>
<xsl:apply-templates select="xmt:node" /><xsl:text>
</xsl:text>
<xsl:apply-templates select="xmt:PositionInterpolatorEncodingParameter
|xmt:OrientationInterpolatorEncodingParameter
|xmt:CoordinateInterpolatorEncodingParameter
|xmt:IndexedFaceSetEncodingParameter
|xmt:MeshGridEncodingParameter|xmt:PointTextureEncodingParameter"/><xsl:text>
</xsl:text>
<xsl:if test="@type">type <xsl:value-of select= "@type" /><xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@buffer">buffer "<xsl:value-of select= "@buffer" />"<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@url">url <xsl:value-of select= "@url" /><xsl:text>
</xsl:text>
</xsl:if>
}</xsl:otherwise></xsl:choose></xsl:template>
Node는 다음과 같이 선언된다.
<xsl:template match="xmt:node">
node <xsl:apply-templates select="xmt:CoordinateInterpolator |xmt:OrientationInterpolator |xmt:PositionInterpolator |xmt:IndexedFaceSet |xmt:IndexedFaceSet2D |xmt:IndexedLineSet |xmt:IndexedLineSet2D |xmt:Cone |xmt:Curve2D |xmt:Cylinder |xmt:ElevationGrid |xmt:Extrusion |xmt:Hierarchical3DMesh |xmt:Rectangle |xmt:Sphere |xmt:OctreeImage|xmt:MeshGrid|xmt:PointTexture" />
</xsl:template>
상기 node 템플릿은 node가 매칭되면 node를 scene파일로 출력하고, PointTexture가 파싱되면 소정의 PointTexture 템플릿을 수행하고, OctreeImage 파싱되면 소정의 OctreeImage 템플릿을 수행한다.
한편, DIBR 노드는 PointTexture 노드, OctreeImage 노드를 포함한다. 상기 DIBR노드에 대해 XMT 파일의 DIBR 노드 내용은 schema의 DIBR을 참조하여 파싱되고, IM1 textual format과 호환되는 scene 출력 파일로 만들어진다.
상기 PointTexture 템플릿은 PointTexture가 매칭되면, 'PointTexture {' 를 scene 파일로 출력하고, width, height, depthNbBits, depth, color를 파싱하여, 상기 width, height, depthNbBits, depth[], color[] 및 그 값들을 scene 파일로 출력하고, }를 scene파일로 출력한다. 상기 PointTexture 템플릿에 대한 스타일 쉬트의 일예는 다음과 같다.
<xsl:template match="xmt:PointTexture">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if>
<xsl:if test="xmt:IS"><xsl:call-template name="IS"/></xsl:if>
PointTexture { <xsl:text>
</xsl:text>
<xsl:if test="@width"> width <xsl:value-of select="@width"/> <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@height"> height <xsl:value-of select="@height"/> <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@depthNbBits"> depthNbBits <xsl:value-of select="@depthNbBits"/> <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@depth"> depth [ <xsl:value-of select="@depth"/> ] <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@color"> color [ <xsl:value-of select="@color"/> ] <xsl:text>
</xsl:text></xsl:if>
}
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates />
</xsl:template>
상기 depth 템플릿은 depth가 매칭되면, depth를 scene파일로 출력하고, CompositeTexture2D 가 파싱되면 소정의 CompositeTexture2D 템플릿을 수행하고, CompositTexutre3D가 파싱되면 소정의 CompositTexutre3D 템플릿을 수행하고, ImageTexture가 파싱되면 소정의 ImageTexture 템플릿을 수행하고, MovieTexture가 파싱되면 소정의 MovieTexture 템플릿을 수행하고, PixelTexture가 파싱되면 소정의 PixelTexture 템플릿을 수행하고, ProtoInstance가 파싱되면 소정의 ProtoInstance템플릿을 수행한다. 상기 depth 템플릿에 대한 스타일 쉬트의 일 예를 들면 다음과 같다.
<xsl:template match="xmt:depth">
depth <xsl:apply-templates select="xmt:CompositeTexture2D |xmt:CompositeTexture3D |xmt:ImageTexture |xmt:MovieTexture |xmt:PixelTexture |xmt:ProtoInstance" />
</xsl:template>
<xsl:template match="xmt:texture">
texture <xsl:apply-templates select="xmt:CompositeTexture2D |xmt:CompositeTexture3D |xmt:ImageTexture |xmt:MovieTexture |xmt:PixelTexture |xmt:ProtoInstance" />
</xsl:template>
SimpleTexture 템플릿은 SimpleTexuter가 매칭되면, 'SimpleTexture {' 를 scene 파일로 출력하고, depth가 파싱되면, 소정의 depth 템플릿을 수행하고, texture가 파싱되면 소정의 texture 템플릿을 수행하고, }를 scene파일로 출력한다. 상기 simpleTexture 템플릿에 대한 스타일 쉬트의 예는 다음과 같다.
<xsl:template match="xmt:SimpleTexture">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if>
<xsl:if test="xmt:IS"><xsl:call-template name="IS"/></xsl:if>
SimpleTexture {
<xsl:apply-templates select="xmt:depth|xmt:texture"/>
}
</xsl:otherwise>
</xsl:choose>
</xsl:template>
상기 diTexture 템플릿은 diTexture가 매칭되면, SimpleTexture가 파싱되면 소정의 SimpleTexture 템플릿을 수행하고, PointTexture가 파싱되면 소정의 PointTexture 템플릿을 수행한다. 상기 diTexture 템플릿에 대한 스타일 쉬트의 일예를 들면 다음과 같다.
<xsl:template match="xmt:diTexture">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if>
<xsl:if test="xmt:IS"><xsl:call-template name="IS"/></xsl:if>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="xmt:SimpleTexture"><xsl:apply-templates select="xmt:SimpleTexture"/></xsl:when>
<xsl:otherwise><xsl:if test="xmt:PointTexture"><xsl:apply-templates select="xmt:PointTexture"/></xsl:if></xsl:otherwise>
</xsl:choose>
</xsl:template>
DepthImage 템플릿은 DepthImage가 매칭되면, 'DepthImage {' 를 scene 파일로 출력하고, diTexture가 존재하면, diTexture를 scene파일로 출력하고 소정의 diTexture 템플릿을 수행하고, fieldOfView, nearPlane, farPlane, orientation, position, orthographic를 파싱하여, 상기 fieldOfView, nearPlane, farPlane, orientation, position, orthographic 및 그 값들을 scene 파일로 출력하고, }를 scene파일로 출력한다. 상기 DepthImage 템플릿에 대한 스타일 쉬트의 일예를 들면 다음과 같다.
<xsl:template match="xmt:DepthImage">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if>
<xsl:if test="xmt:IS"><xsl:call-template name="IS"/></xsl:if>
DepthImage {<xsl:text>
</xsl:text>
<xsl:if test="xmt:diTexture"> diTexture <xsl:apply-templates select="xmt:diTexture"/></xsl:if><xsl:text>
</xsl:text>
<xsl:if test="@fieldOfView"> fieldOfView <xsl:value-of select="@fieldOfView"/> <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@nearPlane"> nearPlane <xsl:value-of select="@nearPlane"/> <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@farPlane"> farPlane <xsl:value-of select="@farPlane"/> <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@orientation"> orientation <xsl:value-of select="@orientation"/> <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@position"> position <xsl:value-of select="@position"/> <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@orthographic"> orthographic <xsl:value-of select="@orthographic"/> <xsl:text>
</xsl:text></xsl:if>
}
</xsl:otherwise>
</xsl:choose>
</xsl:template>
상기 images 템플릿은 images가 매칭되면, 소정의 DepthImage 템플릿을 수행하며, 상기 images 템플릿에 대한 스타일 쉬트의 일예를 들면 다음과 같다.
<xsl:template match="xmt:images">
<xsl:apply-templates select="xmt:DepthImage" />
</xsl:template>
상기 OctreeImage 템플릿은 OctreeImage가 매칭되면, 'OctreeImage {' 를 scene 파일로 출력하고, octreeResolution, octree, voxelImageIndex 를 파싱하여, 상기 octreeResolution, octree[], voxelImageIndex[] 및 그 값들을 scene 파일로 출력하고, images를 파싱하여, images[]를 scene 파일로 출력하고, 소정의 images 템플릿을 수행하고, }를 scene파일로 출력한다. 상기 OctreeImage 템플릿에 대한 스타일 쉬트의 일예를 들면 다음과 같다.
<xsl:template match="xmt:OctreeImage">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if> OctreeImage {
<xsl:if test="xmt:IS"><xsl:call-template name="IS"/></xsl:if>
<xsl:if test="@octreeResolution">octreeResolution <xsl:value-of select="@octreeResolution"/> <xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@octree">octree [ <xsl:value-of select="@octree"/> ]<xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@voxelImageIndex">voxelImageIndex [ <xsl:value-of select="@voxelImageIndex"/> ]<xsl:text>
</xsl:text></xsl:if>
<xsl:if test="xmt:images">
images [
<xsl:apply-templates select="xmt:images" />
]
</xsl:if>
}
</xsl:otherwise>
</xsl:choose>
</xsl:template>
3DMC 노드와 Interpolator 노드(CoordinateInterpolator, PositionInterpolator, OrientationInterpolator)에 대해서, XMT 파일의 Indexedfaceset 노드와 Interpolator 노드의 내용은 상기 노드들에 상응하는 schema에 정의된 내용을 참조하여 파싱되고, IM1 textual format과 호환되는 scene 출력 파일로 생성된다.
<xsl:template match="xmt:OrientationInterpolator">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if> OrientationInterpolator {
<xsl:if test="xmt:IS"><xsl:call-template name = "IS" /></xsl:if>
<xsl:if test="xmt:Predictive"><xsl:call-template name="Predictive" /></xsl:if>
<xsl:if test="@key">key [ <xsl:value-of select="@key" />]<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@keyValue">keyValue [ <xsl:value-of select="@keyValue" />]<xsl:text>
</xsl:text>
</xsl:if>
}</xsl:otherwise></xsl:choose></xsl:template>
<xsl:template match="xmt:PositionInterpolator">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if> PositionInterpolator {
<xsl:if test="xmt:IS"><xsl:call-template name = "IS" /></xsl:if>
<xsl:if test="xmt:Predictive"><xsl:call-template name="Predictive" /></xsl:if>
<xsl:if test="@key">key [ <xsl:value-of select="@key" />]<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@keyValue">keyValue [ <xsl:value-of select="@keyValue" />]<xsl:text>
</xsl:text>
</xsl:if>
}</xsl:otherwise></xsl:choose></xsl:template>
<xsl:template match="xmt:CoordinateInterpolator">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if> CoordinateInterpolator {
<xsl:if test="xmt:IS"><xsl:call-template name = "IS" /></xsl:if>
<xsl:if test="xmt:Predictive"><xsl:call-template name="Predictive" /></xsl:if>
<xsl:if test="@key">key [ <xsl:value-of select="@key" />]<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@keyValue">keyValue [ <xsl:value-of select="@keyValue" />]<xsl:text>
</xsl:text>
</xsl:if>
}</xsl:otherwise></xsl:choose></xsl:template>
<xsl:template match="xmt:IndexedFaceSet">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if> IndexedFaceSet {
<xsl:if test="xmt:IS"><xsl:call-template name = "IS" /></xsl:if>
<xsl:if test="@ccw">ccw <xsl:value-of select="@ccw" /><xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@colorIndex">colorIndex [ <xsl:value-of select="@colorIndex" />]<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@colorPerVertex">colorPerVertex <xsl:value-of select="@colorPerVertex" /><xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@convex">convex <xsl:value-of select="@convex" /><xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@coordIndex">coordIndex [ <xsl:value-of select="@coordIndex" /> ]<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@creaseAngle">creaseAngle <xsl:value-of select="@creaseAngle" /><xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@normalIndex">normalIndex [ <xsl:value-of select="@normalIndex" />]<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@normalPerVertex">normalPerVertex <xsl:value-of select="@normalPerVertex" /><xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@solid">solid <xsl:value-of select="@solid" /><xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="@texCoordIndex">texCoordIndex [ <xsl:value-of select="@texCoordIndex" />]<xsl:text>
</xsl:text>
</xsl:if>
<xsl:apply-templates />
}</xsl:otherwise></xsl:choose></xsl:template>
<xsl:template match="xmt:coord">
coord <xsl:if test="@DEF">DEF <xsl:value-of select="@DEF" /><xsl:text>
</xsl:text></xsl:if>
<xsl:apply-templates select="xmt:Coordinate |xmt:Coordinate2D|xmt:ProtoInstance" />
</xsl:template>
XMT 파일의 IndexedFaceSetEncodingParameter는 schema의 IndexedFaceSetEncodingParameter element를 참조하여 파싱되고, IM1 textual format과 호환되는 scene 출력 파일로 만들어진다.
<xsl:template match="xmt:IndexedFaceSetEncodingParameter">
IndexedFaceSetEncodingParameter {
<xsl:if test="@coordQBits">coordQBits <xsl:value-of select="@coordQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@normalQBits">normalQBits <xsl:value-of select="@normalQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@colorQBits">colorQBits <xsl:value-of select="@colorQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@texCoordQBits">texCoordQBits <xsl:value-of select="@texCoordQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@coordPredMode">coordPredMode <xsl:value-of select="@coordPredMode"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@normalPredMode">normalPredMode <xsl:value-of select="@normalPredMode"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@colorPredMode">colorPredMode <xsl:value-of select="@colorPredMode"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@texCoordPredMode">texCoordPredMode <xsl:value-of select="@texCoordPredMode"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@errorResilience">errorResilience <xsl:value-of select="@errorResilience"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@bitsPerPacket">bitsPerPacket <xsl:value-of select="@bitsPerPacket"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@boundaryPrediction">boundaryPrediction <xsl:value-of select="@boundaryPrediction"/></xsl:if>
}
</xsl:template>
XMT 파일의 CoordinateInterpolatorEncodingParameter는 schema의 CoordinateInterpolatorEncodingParameter element를 참조하여 파싱되고, IM1 textual format과 호환되는 scene 출력 파일로 만들어진다.
<xsl:template match="xmt:CoordinateInterpolatorEncodingParameter">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if>
CoordinateInterpolatorEncodingParameter {
<xsl:if test="@keyQBits">keyQBits <xsl:value-of select="@keyQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@keyValueQBits">keyValueQBits <xsl:value-of select="@keyValueQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@transpose">transpose <xsl:value-of select="@transpose"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@linearKeycoder">linearKeycoder <xsl:value-of select="@linearKeycoder"/><xsl:text>
</xsl:text></xsl:if>
}
</xsl:otherwise>
</xsl:choose>
</xsl:template>
XMT 파일의 OrientationInterpolatorEncodingParameter는 schema의 OrientationInterpolatorEncodingParameter element를 참조하여 파싱되고, IM1 textual format과 호환되는 scene 출력 파일로 만들어진다.
<xsl:template match="xmt:OrientationInterpolatorEncodingParameter">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if>
OrientationInterpolatorEncodingParameter {
<xsl:if test="@keyQBits">keyQBits <xsl:value-of select="@keyQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@keyValueQBits">keyValueQBits <xsl:value-of select="@keyValueQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@preservingMode">preservingMode <xsl:value-of select="@preservingMode"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@dpcmMode">dpcmMode <xsl:value-of select="@dpcmMode"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@aacMode_X">aacMode_X <xsl:value-of select="@aacMode_X"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@aacMode_Y">aacMode_Y <xsl:value-of select="@aacMode_Y"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@aacMode_Z">aacMode_Z <xsl:value-of select="@aacMode_Z"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@linearKeycoder">linearKeycoder <xsl:value-of select="@linearKeycoder"/><xsl:text>
</xsl:text></xsl:if>
}
</xsl:otherwise>
</xsl:choose>
</xsl:template>
XMT 파일의 PositionInterpolatorEncodingParameter는 schema의 PositionInterpolatorEncodingParameter element를 참조하여 파싱되고, IM1 textual format과 호환되는 scene 출력 파일로 만들어진다.
<xsl:template match="xmt:PositionInterpolatorEncodingParameter">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if>
PositionInterpolatorEncodingParameter {
<xsl:if test="@keyQBits">keyQBits <xsl:value-of select="@keyQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@keyValueQBits">keyValueQBits <xsl:value-of select="@keyValueQBits"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@preservingMode">preservingMode <xsl:value-of select="@preservingMode"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@dpcmMode_X">dpcmMode_X <xsl:value-of select="@dpcmMode_X"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@dpcmMode_Y">dpcmMode_Y <xsl:value-of select="@dpcmMode_Y"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@dpcmMode_Z">dpcmMode_Z <xsl:value-of select="@dpcmMode_Z"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@aacMode_X">aacMode_X <xsl:value-of select="@aacMode_X"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@aacMode_Y">aacMode_Y <xsl:value-of select="@aacMode_Y"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@aacMode_Z">aacMode_Z <xsl:value-of select="@aacMode_Z"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@linearKeycoder">linearKeycoder <xsl:value-of select="@linearKeycoder"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@intra_X">intra_X <xsl:value-of select="@intra_X"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@intra_Y">intra_Y <xsl:value-of select="@intra_Y"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@intra_Z">intra_Z <xsl:value-of select="@intra_Z"/><xsl:text>
</xsl:text></xsl:if>
}
</xsl:otherwise>
</xsl:choose>
</xsl:template>
XMT 파일의 PointTextureEncodingParameter는 schema의 PointTextureEncodingParameter element를 참조하여 파싱되고, IM1 textual format과 호환되는 scene 출력 파일로 만들어진다.
상기 PointTextureEncodingParameter 템플릿은 PointTextureEncodingParameter 가 매칭되면, scene 파일로 PointTextureEncodingParameter { 를 출력하며, codingPercent가 파싱되면, condingPercent 및 그 값을 scene파일로 출력하고, }를 scene파일로 출력한다. 상기 상기 PointTextureEncodingParameter 템플릿에 대한 스타일 쉬트의 일예를 들면 다음과 같다.
<xsl:template match="xmt:PointTextureEncodingParameter">
<xsl:choose>
<xsl:when test="@USE">USE <xsl:value-of select="@USE"/> </xsl:when>
<xsl:otherwise><xsl:if test="@DEF">DEF <xsl:value-of select="@DEF"/></xsl:if>
PointTextureEncodingParameter {
<xsl:if test="@codingPercent">codingPercent <xsl:value-of select="@codingPercent"/><xsl:text>
</xsl:text></xsl:if>
}
</xsl:otherwise>
</xsl:choose>
</xsl:template>
XMT2BIFS는 XMT 입력 파일에서 필요한 정보를 정의한다. 원래 Body 정보만 사용하도록 되어 있었으나, XMT 표준 spec에 따라 IM1 textual format을 출력하기 위해서는 Header 정보도 필요하다. 그래서 header를 사용할 수 있도록 다음과 같이 규정한다.
<xsl:template match="/">
<xsl:apply-templates select="xmt:XMT-A/xmt:Body/*" />
<xsl:apply-templates select="xmt:XMT-A/xmt:Header/*" />
</xsl:template>
상기 XMT2BIFS 스타일 쉬트는 XMT 파일에서 /가 매칭된 후, Body/* 가 파싱되면 상기 Body 하위의 템플릿을 수행하고, Header/*가 파싱되면 Header 하위의 템플릿을 수행한다.
ObjectDescriptorUpdate는 IM1 textual format과 호환되어야 한다.
상기 XMT2BIFS 스타일 쉬트는 XMT 파일에서 ObjectDescriptorUpdate가 매칭되면, UPDATE OD [ 를 scene 파일로 출력하고, OD가 매칭된 후, ObjectDescriptor가 파싱되면, ObjectDescriptor 템플릿을 수행하고, InitialObjectDescriptor가 파싱되면 InitialObjectDescriptor 템플릿을 수행하고, ObjectDescriptor 가 파싱되면 소정의 ObjectDescriptor 템플릿을 수행하고, InitialObjectDescriptor가 파싱되면 소 정의 InitialObjectDescriptor 템플릿을 수행하고, ]를 scene파일로 출력한다.
<xsl:template match="xmt:ObjectDescriptorUpdate">
UPDATE OD [
<xsl:for-each select="xmt:OD"> <xsl:apply-templates select="xmt:ObjectDescriptor|xmt:InitialObjectDescriptor"/> </xsl:for-each>
]
</xsl:template>
XMT2MUX에서 필요한 부분을 가져온다. scene 파일을 IM1 textual format과 호환되도록 만들려면, XMT2MUX에 있는 다음과 같은 부분들이 필요하다.
상기 ObjectDescriptor 템플릿은 ObjectDescriptor가 매칭되면, ObjectDescriptor { 를 scene 파일로 출력하고, attribute 이름이 objectDescriptorID 인 것을 파싱하여 objectDescriptorID 를 secne 파일로 출력하고, attribute 이름이 binaryID 인 것을 파싱하고, 그 값을 scene 파일로 출력하고, Descr를 파싱하여 소정의 Descr 템플릿을 수행하고, }를 scene파일로 출력한다.
<xsl:template match="xmt:ObjectDescriptor"> ObjectDescriptor {
<xsl:if test="@objectDescriptorID">objectDescriptorID <xsl:value-of select="@binaryID"/><xsl:text>
</xsl:text> </xsl:if>
<xsl:apply-templates select="xmt:Descr"/>
}
</xsl:template>
상기 InitialObjectDescriptor 템플릿은 InitialObjectDescriptor가 매칭되면, Profiles가 파싱되면 소정의 Profiles 템플릿을 수행하고, Descr가 파싱되면 소정의 Descr 템플릿을 수행한다.
<xsl:template match="xmt:InitialObjectDescriptor">
<xsl:apply-templates select="xmt:Profiles | xmt:Descr"/>
</xsl:template>
<xsl:template match="xmt:Profiles">
<xsl:if test="@ODProfileLevelIndication"> ODProfileLevelIndication <xsl:value-of select="@ODProfileLevelIndication"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@sceneProfileLevelIndication"> sceneProfileLevelIndication <xsl:value-of select="@sceneProfileLevelIndication"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@audioProfileLevelIndication"> audioProfileLevelIndication <xsl:value-of select="@audioProfileLevelIndication"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@visualProfileLevelIndication"> visualProfileLevelIndication <xsl:value-of select="@visualProfileLevelIndication"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@graphicsProfileLevelIndication"> graphicsProfileLevelIndication <xsl:value-of select="@graphicsProfileLevelIndication"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@includeInlineProfileLevelFlag"> includeInlineProfileLevelFlag <xsl:value-of select="@includeInlineProfileLevelFlag"/><xsl:text>
</xsl:text></xsl:if>
</xsl:template>
상기 Descr 템플릿은 Descr가 매칭되면, esDescr가 파싱되면 소정의 esDescr 템플릿을 수행하고, ipmpDescrPtr가 파싱되면 소정의 ipmpDescr 템플릿을 수행한다.
<xsl:template match="xmt:Descr">
<xsl:apply-templates select="xmt:esDescr |xmt:ociDescr |xmt:ipmpDescrPtr"/>
</xsl:template>
상기 esDescr 템플릿은 esDescr가 매칭되면, ES_Descriptor가 파싱되면 소정의 ES_Descriptor 템플릿을 수행한다.
<xsl:template match="xmt:esDescr">
<xsl:apply-templates select="xmt:ES_Descriptor"/>
</xsl:template>
<xsl:template match="xmt:ociDescr">
<xsl:apply-templates select="xmt:ContentClassificationDescriptor|xmt:KeyWordDescriptor
|xmt:RatingDescriptor|xmt:LanguageDescriptor|xmt:ShortTextualDescriptor|xmt:ExpandedTextualDescriptor
|xmt:ContentCreatorNameDescriptor|xmt:ContentCreationDateDescriptor|xmt:OCICreatorNameDescriptor
|xmt:OCICreationDateDescriptor|xmt:SMPTECameraPositionDescriptor"/>
</xsl:template>
상기 ipmpDescrPtr 템플릿은 ipmpDescrPtr 가 매칭되면, IPMP_Descriptor가 파싱되면 소정의 IPMPDescriptor 템플릿을 수행하고, IPMP_DescriptorPointer가 파싱되면 소정의 IPMP_DescriptorPointer 템플릿을 수행한다.
<xsl:template match="xmt:ipmpDescrPtr">
<xsl:apply-templates select="xmt:IPMP_Descriptor |xmt:IPMP_DescriptorPointer"/>
</xsl:template>
상기 ES_Descriptor 템플릿은 ES_Descriptor 가 매칭되면, URL가 파싱되면 소정의 URL 템플릿을 수행하고, StreamSourcer가 파싱되면 소정의 StreamSourcer 템플릿을 수행하고, decConfigDescr가 파싱되면 소정의 decConfigDescr 템플릿을 수행하고, slConfigDescr가 파싱되면 소정의 slConfigDescr 템플릿을 수행하고, ipiPtr이 파싱되면 소정의 ipiPtr 템플릿을 수행하고, ipIDs가 파싱되면 소정의 ipIDs 템플릿을 수행하고, ipmpDescrPtr가 파싱되면 소정의 ipmpDescrPtr 템플릿을 수행하고, langDescr가 파싱되면 소정의 langDescr 템플릿을 수행하고, regDescr가 파싱되면 소정의 regDescr 템플릿을 수행하고, qosDescr가 파싱되면 소정의 qosDescr 템플릿을 수행한다. 상기 decConfigDescr은 DecoderConfigDescriptor를 포함하고 있다.
<xsl:template match="xmt:ES_Descriptor">
<xsl:if test="@ES_ID"></xsl:if>
<xsl:if test="@streamPriority"></xsl:if>
<xsl:if test="@OCR_ES_ID"></xsl:if>
<xsl:if test="@dependsOn_ES_ID"></xsl:if>
<xsl:apply-templates select="xmt:URL"/>
<xsl:apply-templates select="xmt:StreamSource |xmt:decConfigDescr |xmt:slConfigDescr |xmt:ipiPtr |xmt:ipIDs |xmt:ipmpDescrPtr |xmt:langDescr |xmt:regDescr |xmt:qosDescr"/>
</xsl:template>
<xsl:template match="xmt:decConfigDescr"></xsl:template>
<xsl:template match="xmt:slConfigDescr"></xsl:template>
<xsl:template match="xmt:ipiPtr"></xsl:template>
<xsl:template match="xmt:ipIDs"></xsl:template>
<xsl:template match="xmt:ipmpDescrPtr"></xsl:template>
<xsl:template match="xmt:langDescr"></xsl:template>
<xsl:template match="xmt:regDescr"></xsl:template>
<xsl:template match="xmt:qosDescr"></xsl:template>
scene 파일을 IM1 textual format과 호환되도록 만들려면, XMT2MUX에 있는 streamSource이 필요하다.
상기 XMT2BIFS 스타일 쉬트는 XMT 파일에서 StreamSource가 매칭되면, StreamSource1 템플릿을 호출한다. 상기 StreamSource1 템플릿은 CompressedImageFormat이 파싱되면 muxSrcipt 및 파일이름 및 mux 파일의 확장자를 scene파일로 출력하고, BitWrapperEncodingHints 가 파싱되면 muxScript 및 파일이름 및 mux 파일의 확장자를 scene파일로 출력한다.
<xsl:template match="xmt:StreamSource">
<xsl:call-template name="StreamSource1"></xsl:call-template>
</xsl:template>
<xsl:template name="StreamSource1">
<xsl:param name="first" select="substring-before(@url, '.')" />
<xsl:if test="@url">
<xsl:choose>
<xsl:when test="contains(@url, '.od')">
<!--muxScript <xsl:value-of select="$first"/>.mux -->
</xsl:when>
<xsl:when test="contains(@url, '.bif')">
<!--muxScript <xsl:value-of select="$first"/>.mux -->
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="xmt:CompressedImageFormat">muxScript <xsl:value-of select="$first"/>.mux </xsl:if>
<xsl:if test="xmt:BitWrapperEncodingHints">muxScript <xsl:value-of select="$first"/>.mux </xsl:if>
</xsl:template>
한편, 본 발명에 의한 XMT2MUX style sheet를 설명하기로 한다. XMT 입력 파일이 ODids의 schema를 참조하여 파싱한 결과, IM1 textual format과 호환되는 mux 파일을 만들기 위해 다음과 같이 규정한다. 종전에는 ObjectDescriptor 또는 InitialObjectDescriptor가 올 경우, Odids에 objectDescriptorID의 값을 사용할 수 있었다. 그러나 이것은 IM1 textual format과 호환되는 결과를 출력해 줄 수 없다. 따라서, ObjectDescriptor 대신 ObjectDescriptorUpdate를 변경하므로써, IM1 textual format과 호환되는 결과를 출력해 줄 수 있다.
즉, 상기 XMT2MUX 스타일 쉬트는 XMT 파일에서 ObjectDescriptorUpdate 또는 InitialObjectDescriptor와 매칭되면, 템플릿 name이 Odids이고, objectDescriptorID를 상기 ODids의 값으로 사용하고, 상기 매칭된 ObjectDescriptorUpdate 템플릿 또는 InitialObjectDescriptor 템플릿을 호출한다.
<xsl:key name="ODids" match="xmt:ObjectDescriptorUpdate |xmt:InitialObjectDescriptor" use="@objectDescriptorID" />
XMT2MUX에서 XMT 입력 파일에서 필요한 정보를 정의하는 부분이 필요하다. 원래 Header 정보만 사용하도록 되어 있었으나, XMT 표준 spec에 따라 IM1 textual format을 출력하기 위해서는 Body 정보도 필요하다. 그래서 body를 사용할 수 있도록 규정한다. 즉 상기 XMT2MUX 스타일 쉬트는 XMT 파일에서 /가 매칭된 후, Body/* 가 파싱되면 Body의 하위 템플릿을 수행하고, Header/*가 파싱되면 Header의 하위 템플릿을 수행한다.
<xsl:template match="/">
<xsl:apply-templates select="xmt:XMT-A/xmt:Header/*"/>
<xsl:apply-templates select="xmt:XMT-A/xmt:Body/*" />
</xsl:template>
XMT2MUX에서 XMT입력을 받아, schema를 참조하여 파싱한 결과 IM1 textual format과 호환되는 MUX 파일을 만들기 위해, ObjectDescriptorUpdate을 다음과 같이 규정한다.
상기 ObjectDescriptorUpdate 템플릿은 XMT 파일에서 ObjectDescriptorUpdate가 매칭될 경우, OD 템플릿을 호출하고, 상기 OD 템플릿에서 OD가 매칭되면, 상기 OD는 ObjectDescriptor 템플릿을 호출한다.
<xsl:template match="xmt:ObjectDescriptorUpdate">
<xsl:apply-templates select="xmt:OD"/>
</xsl:template>
<xsl:template match="xmt:OD"> <xsl:apply-templates select="xmt:ObjectDescriptor"/>
</xsl:template>
종래에는 DecConfigDescr와 slConfigDescr이 IM1 textual format과 같은 MUX 파일을 출력할 수 없게 되어 있었다. 이것을 변경하여 IM1 textual format과 같은 MUX 파일을 출력할 수 있다.
ES_Descriptor에서 decConfigDescr, slConfigDescr, StreamSource를 포함하고, 이들이 각각 매칭되면, 그에 해당하는 decConfigDescr 템플릿, slConfigDescr 템플릿, StreamSource 템플릿을 호출할 수 있다.
상기 decConfigDescr 템플릿은 decConfigDescr가 매칭되면, decConfigDescr DecoderConfigDescriptor { 를 mux 파일에 출력하고, DecoderConfigDescriptor 템플릿을 호출하고, } 를 mux 파일에 출력한다.
상기 slConfigDescr 템플릿은 slConfigDescr가 매칭되면, slConfigDescr SLConfigDescriptor { 를 mux 파일에 출력하고, SLConfigDescriptor 템플릿을 호출하고, } 를 mux 파일에 출력한다.
상기 XMT2MUX 스타일 쉬트는 AFXConfig 템플릿 및 DecoderConfigDescriptor 템플릿을 포함하는 복호화정보 스타일 쉬트를 더 구비한다.
상기 DecoderConfigDescriptor 템플릿은 복호화시 필요한 정보를 갖는 DecoderConfigDescriptor노드 내의 decSpecificInfo노드 내에서 엘리멘트 name으로 AFXconfig를 선언하고, decSpecificInfo가 매칭된 후, AFXConfig가 파싱되면 AFXConfig 템플릿을 호출한다.
<xsl:template match="xmt:decConfigDescr">
decConfigDescr DecoderConfigDescriptor {
<xsl:apply-templates select="xmt:DecoderConfigDescriptor"/>
}
</xsl:template>
<xsl:template match="xmt:slConfigDescr">
slConfigDescr SLConfigDescriptor {
<xsl:apply-templates select="xmt:SLConfigDescriptor"/>
}
</xsl:template>
DecoderConfigDescriptor에 대한 style sheet는 다음과 같이 규정된다.
<xsl:template match="xmt:DecoderConfigDescriptor">
<xsl:if test="@streamType"> streamType <xsl:value-of select="@streamType"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@objectTypeIndication"> objectTypeIndication <xsl:value-of select="@objectTypeIndication"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@upStream"> upStream <xsl:value-of select="@upStream"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@bufferSizeDB"> bufferSizeDB <xsl:value-of select="@bufferSizeDB"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@maxBitrate"> maxBitrate <xsl:value-of select="@maxBitrate"/><xsl:text>
</xsl:text></xsl:if>
<xsl:if test="@avgBitrate"> avgBitrate <xsl:value-of select="@avgBitrate"/><xsl:text>
</xsl:text></xsl:if>
<xsl:apply-templates select="xmt:decSpecificInfo |xmt:profileLevelIndicationIndexDescr"/>
</xsl:template>
IM1 textual format과 같은 MUX 파일을 출력하도록 하기 위해 AFXConfig를 규정한다.
<xsl:template match="xmt:decSpecificInfo"><xsl:apply-templates select= "xmt:BIFSConfig|xmt:BIFSv2Config|xmt:DecoderSpecificInfo|xmt:AFXConfig&quot;/>
</xsl:template>
IM1 textual format에 맞도록 Param을 규정한다.
<xsl:value-of select="@name"/><xsl:text> "</xsl:text><xsl:value-of select="@value"/>"<xsl:text>
</xsl:text>
</xsl:template>
압축된 비트스트림을 복호화기를 이용하여 복호화하기 위해, 복호화기 정보를 알려주는 AFXConfig가 필요하다. 상기 AFXConfig를 이용하여 IM1 textual format에 맞는 mux 파일을 출력할 수 있다.
상기 AFXConfig 템플릿은 AFXConfig가 매칭되면, decSpecificInfo AFXConfig{ 를 mux 파일로 출력하도록 규정하고, OctreeImageDecoderSpecific가 파싱되면OctreeImageDecoderSpecific 템플릿을 호출하고, PointTextureCompDecoderSpecific가 파싱되면 PointTextureCompDecoderSpecific템플릿을 호출하고, }를 mux 파일로 출력한다.
<xsl:template match="xmt:AFXConfig"> decSpecificInfo AFXConfig {
afxext <xsl:apply-templates select="xmt:A3DMCDecoderSpecific
|xmt:CoordInterpCompDecoderSpecific|xmt:PosInterpCompDecoderSpecific
|xmt:OriInterpCompDecoderSpecific
|xmt:MeshGridDecoderSpecific|xmt:WMDecoderSpecific|xmt:OctreeImageDecoderSpecific
|xmt:BBADecoderSpecific|xmt:PointTextureCompDecoderSpecific"/>
}
</xsl:template>
<xsl:template match="xmt:A3DMCDecoderSpecific"> A3DMCDecoderSpecific { }
</xsl:template>
<xsl:template match="xmt:CoordInterpCompDecoderSpecific"> CoordInterpCompDecoderSpecific { }
</xsl:template>
<xsl:template match="xmt:PosInterpCompDecoderSpecific"> PosInterpCompDecoderSpecific { }
</xsl:template>
<xsl:template match="xmt:OriInterpCompDecoderSpecific"> OriInterpCompDecoderSpecific { }
</xsl:template>
상기 OctreeImageDecoderSpecific 템플릿은 OctreeImageDecoderSpecific가 매칭되면, 상기 OctreeImageDecoderSpecific { }를 mux 파일로 출력한다.
<xsl:template match="xmt:OctreeImageDecoderSpecific"> OctreeImageDecoderSpecific { }
</xsl:template>
상기 PointTextureCompDecoderSpecific 템플릿은 PointTextureCompDecoderSpecific가 매칭되면, 상기 PointTextureCompDecoderSpecific { }를 mux 파일로 출력한다.
<xsl:template match="xmt:PointTextureCompDecoderSpecific"> PointTextureCompDecoderSpecific { }
</xsl:template>
mux 파일을 IM1 textual format과 호환되도록 만들려면, streamSource의 MuxInfo 안에 OctreeImage와 PointTexture에 대한 BitWrapperEncodingHints와 CompressedImageFormat가 필요하다. 따라서 StreamSource에서 사용할 수 있도록 OctreeImage와 PointTexture에 대한 BitWrapperEncodingHints와 CompressedImageFormat가 선언되어야 한다.
상기 XMT2MUX 스타일 쉬트는 XMT 파일에서 StreamSource가 매칭되면, StreamSource 템플릿을 호출한다. 상기 StreamSource 템플릿은 muxInfo MuxInfo { fileName 을 출력하고, url이 매칭되면, url 값을 mux 파일로 출력하고, url이 매칭되지 않으면, EncodingHints, BIFSEncodingHints, FBAEncodingHints, BitWrapperEncodingHints, CompressedImageFormat 중 어느 하나가 파싱되면, 그에 상응하는 EncodingHints 템플릿, BIFSEncodingHints템플릿, FBAEncodingHints템플릿, BitWrapperEncodingHints템플릿, CompressedImageFormat템플릿중 어느 하나를 호출하되, EncodingHints, BitWrapperEncodingHints, CompressedImageFormat가 아니면 streamFormat BIFS를 출력하고, } 가 파싱되면, 상기 }을 mux 파일로 출력한다. 상기 StreamSource 템플릿에 대한 스타일 쉬트의 일예는 다음과 같다.
xsl:template match="xmt:StreamSource"> muxInfo MuxInfo {
fileName <xsl:value-of select="@url"/><xsl:text>
</xsl:text>
<!-- what to do for urls? -->
<xsl:apply-templates select=
"xmt:EncodingHints|xmt:BIFSEncodingHints|xmt:FBAEncodingHints|xmt:BitWrapperEncodingHints|xmt:CompressedImageFormat"/>
<xsl:if test=
"not(xmt:EncodingHints|xmt:BitWrapperEncodingHints|xmt:CompressedImageFormat) ">streamFormat BIFS<xsl:text>
</xsl:text></xsl:if>
<xsl:if test="xmt:BitWrapperEncodingHints"><xsl:text>
</xsl:text></xsl:if>
<xsl:apply-templates select=
"xmt:BitWrapper3DMCEncodingHints|xmt:BitWrapperICEncodingHints|xmt:BitWrapperOctreeImageEncodingHints|xmt:OthersEncodingHints|xmt:BitWrapperPointTextureEncodingHints|xmt:BitWrapperMeshGridEncodingHints|xmt:BitWrapperWaveletSubdivisionSurfaceEncodingHints"/>
<xsl:if test="xmt:CompressedImageFormat"></xsl:if>
<xsl:apply-templates select="xmt:JPEG|xmt:PNG|xmt:MPEG4-Video|xmt:VTC"/> }
</xsl:template>
종래에는 BitWrapperEncodingHints에 3DMC, InterpolatorCompression와 그 외의 것에 대한 encodinghints가 있었으나, OctreeImage와 PointTexture에 대한 encodinghints가 없었고, DIBR 노드에 포함된 압축된 이미지 파일을 전송 및 재생할 수가 없었다. 그래서 IM1 textual format에 맞는 MUX 파일을 출력할 수 없었다. 따라서, 다음과 같이 BitWrapperEncodingHints에 BitWrapperOctreeImageEncodingHints와 BitWrapperPointTextureEncodingHints를 포 함하였고, DIBR 노드에 포함된 압축된 이미지 파일(BitWrapper에 의해 압축된 것이 아님)의 이름 및 파일 포맷을 전송 및 재생할 수 있게 도와주는 CompressedImageFormat도 규정하여 IM1 textual format으로 출력이 가능하다.
상기 BitWrapperEncodingHints 템플릿은 BitWrapperEncodingHints가 매칭된 후, BitWrapperOctreeImageEncodingHints가 파싱되면, BitWrapperOctreeImageEncodingHints 템플릿을 호출하고, BitWrapperPointTextureEncodingHints가 파싱되면, BitWrapperPointTextureEncodingHints 템플릿을 호출한다.
상기 BitWrapperOctreeImageEncodingHints 템플릿은 BitWrapperOctreeImageEncodingHints 가 매칭된 후, sourceFormat이 파싱되면 sourceFormat템플릿을 호출하고, targetFormat이 파싱되면 targetFormat템플릿을 호출하고, streamFormatOctreeImageCompression을 mux 파일에 출력한다.
상기 BitWrapperPointTextureEncodingHints 템플릿은 BitWrapperPointTextureEncodingHints가 매칭된 후, sourceFormat이 파싱되면 sourceFormat템플릿을 호출하고, targetFormat이 파싱되면 targetFormat템플릿을 호출하고, streamFormatPointTextureCompression을 mux 파일에 출력한다.
상기 sourceFormat 템플릿 및 targetFormat 템플릿은 param이 파싱되면 param 템플릿을 호출하고, 상기 param 텝플릿에서 파일이름을 값으로 출력한다.
<xsl:template match="xmt:BitWrapperEncodingHints">
<xsl:apply-templates select="xmt:BitWrapper3DMCEncodingHints
|xmt:BitWrapperICEncodingHints|xmt:BitWrapperOctreeImageEncodingHints
|xmt:OthersEncodingHints|xmt:BitWrapperPointTextureEncodingHints
|xmt:BitWrapperMeshGridEncodingHints
|xmt:BitWrapperWaveletSubdivisionSurfaceEncodingHints"/>
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/>
</xsl:template>
<xsl:template match="xmt:BitWrapper3DMCEncodingHints">
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/>
streamFormat 3DMC
</xsl:template>
<xsl:template match="xmt:BitWrapperICEncodingHints">
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/>
streamFormat InterpolatorCompression
</xsl:template>
<!-- add BitWrapperDIBREncodingHints in the BitWrapperEncodingHints for DIBR Nodes -->
<xsl:template match="xmt:BitWrapperOctreeImageEncodingHints">
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/>
streamFormat OctreeImageCompression
</xsl:template>
<xsl:template match="xmt:BitWrapperPointTextureEncodingHints">
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/>
streamFormat PointTextureCompression
</xsl:template>
<xsl:template match="xmt:OthersEncodingHints">
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/>
</xsl:template>
XMT2MUX 스타일 쉬트는 CompressedImageFormat이 파싱된 후, JPEG 또는 PNG 또는 MPEG4-Video 또는 VTC 중 어느 하나가 파싱되면, 그에 상응하는 JPEG 템플릿 또는 PNG템플릿 또는 MPEG4-Video템플릿 또는 VTC 템플릿 중 어느 하나를 호출한다. 또한 상기 JPEG 텝플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat JPEG 을 출력하며, PNG 템플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat PNG 을 출력하고, MPEG4-Video 템플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat MPEG4-Video를 출력하며, VTC 템플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat VTC를 출력한다.
상기 sourceFormat 템플릿과 targetFormat 템플릿은 param 템플릿을 호출하 고, param 템플릿은 파일이름을 값으로 출력한다.
<!-- CompressedImageFormat : JPEG, PNG, MPEG4-Video, VTC for DIBR Nodes -->
<xsl:template match="xmt:CompressedImageFormat">
<xsl:apply-templates select="xmt:JPEG|xmt:PNG|xmt:MPEG4-Video|xmt:VTC"/>
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/>
</xsl:template>
<xsl:template match="xmt:JPEG">
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/> streamFormat JPEG
</xsl:template>
<xsl:template match="xmt:PNG">
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/> streamFormat PNG
</xsl:template>
<xsl:template match="xmt:MPEG4-Video">
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/> streamFormat MPEG4-Video
</xsl:template>
<xsl:template match="xmt:VTC">
<xsl:apply-templates select="xmt:sourceFormat|xmt:targetFormat"/> streamFormat VTC
</xsl:template>
<xsl:template match="xmt:sourceFormat">
<xsl:apply-templates select="xmt:param"/>
</xsl:template>
<xsl:template match="xmt:targetFormat">
<xsl:apply-templates select="xmt:param"/>
</xsl:template>
<xsl:template match="xmt:param">
<xsl:value-of select="@name"/><xsl:text> "</xsl:text><xsl:value-of select="@value"/>"<xsl:text>
</xsl:text>
</xsl:template>
본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 기록가능하다. 또한 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터(정보 처리 기능을 갖는 장치를 모두 포함한다)가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명에 의한 DIBR 데이터를 위한 스키마 및 스타일 쉬트에 의하면, 메타 표현 방법을 사용해서 3D 컨텐츠 저작단계에서 DIBR 데이터의 표현 및 압축을 쉽게 조절할 수 있고, MPEG-4 부호화기에 알맞은 입력파일을 생성을 용이하게 할 수 있다. 그러므로 저작 단계에서 저작자가 3차원 그래픽 데이터를 압축할 수 있기 때문에 낮은 네트워크 대역폭(bandwidth)에서도 DIBR 데이터의 실시간 시각화 또는 실시간 애니메이션을 가능하게 하는데 유용하게 사용될 수 있다.

Claims (90)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 그래픽 데이터를 압축하는 데 사용되는 BitWrapper 노드 스키마; 및
    DepthImage 기반 모델 렌더링에 사용되며, 카메라정보와 Depth를 가진 텍스쳐 정보를 구비하며, diTexture를 엘리멘트로 규정하고, 상기 엘리멘트 내에서 namespace에 정의된 스키마에 미리 정의된 이름이 SFDepthTextureNode인 모델그룹을 하위 엘리먼트로 포함하는 DepthImage노드 스키마를 포함함을 특징으로 하고,
    상기 BitWrapper 노드 스키마는
    압축될 데이터를 포함한 그래픽 데이터를 나타내며 SFWorldNode를 하위 엘리먼트로 참조하는 node 엘리멘트;
    BitWrapperEncodingParameter 엘리멘트; 및
    이름은 type, url, buffer이고, 타입은 SFInt32, MFUrl, SFString인 3개의 attribute를 구비하고,
    상기 DepthImage 노드 스키마의 카메라 정보는
    position, orientation, fieldOfView, nearPlane, farPlane, orthographic 중 적어도 하나를 attribute name으로 규정하고, 상기 attribute 타입은 각각 SFVec3f, SFRotation, SFVec2f, SFFloat, SFFloat, SFBool 인, DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  47. 제46항에 있어서, 상기 DepthImage 노드의 diTexture 엘리멘트는
    PointTexture 및 SimpleTexture를 엘리먼트로 구비하는 SFDepthTextureNode 노드 스키마를 규정함을 특징으로 하는 DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  48. 제47항에 있어서, 상기 SimpleTexture 에 대한 노드 스키마는
    depth 이미지와 color 이미지를 입력으로 받아, DIBR모델을 3차원 렌더링하는데 사용되며, depth 정보를 이미지 형태로 가지고 있는 depth 엘리멘트와, color 정보를 이미지 형태로 가지고 있는 texture 엘리멘트를 가지며 각각의 이미지는 SFTextureNodeType 엘리먼트에 정의되어 있음을 특징으로 하는 DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  49. 제47항에 있어서, 상기 PointTexture 에 대한 노드 스키마는
    width, height, depthNbBits, depth, color 중 적어도 하나를 attribute name으로 규정하고, 상기 attribute의 타입은 각각 SFInt32, SFInt32, SFInt32, MFInt32, MFColor 임을 특징으로 하는 DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  50. 제46항 내지 제49항 중 어느 한 항에 있어서,
    Octreeimage 노드 스키마를 더 구비함을 특징으로 하고,
    상기 Octreeimage 노드 스키마는
    octree, octreeResolution, voxelImageIndex 중 적어도 하나를 attribute name으로 규정하고, 상기 attribute의 타입은 각각 SFInt32, MFInt32, MFInt32 이고,
    images를 엘리멘트로 규정하고, 상기 엘리멘트 내에서 SFDepthImageNodeType 을 모델그룹으로 포함하는, DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  51. 제46항에 있어서,
    BitWrapper노드가 url 필드를 사용하는 아웃밴드인 경우,
    AFXConfig 스키마 및 DecoderConfigDescriptor 스키마를 구비하는 복호화정보 스키마를 더 포함함을 특징으로 하고,
    상기 DecoderConfigDescriptor 스키마는
    복호화시 필요한 정보를 갖는 DecoderConfigDescriptor노드 내의 decSpecificInfo노드 내에서 엘리멘트 이름으로 AFXconfig를 규정하고,
    상기 AFXConfig 스키마는
    옥트리 이미지 복호화기로 복호화할 것을 나타내는 OctreeImageDecoderSpecific 정보를 엘리멘트 이름으로 규정하고, 포인트 텍스쳐 복호화기로 복호화할 것을 나타내는 PointTextureCompDecoderSpecific 정보를 엘리멘트 이름으로 규정하는, DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  52. 제51항에 있어서,
    포인트 텍스쳐를 위한 압축률을 포함하는 압축파라미터 스키마를 더 포함함을 특징으로 하고,
    상기 압축파라미터 스키마는
    BitWrapperEncodingParameter를 엘리멘트 이름으로 하는 노드 내에 포함되며,
    엘리멘트 이름이 PointTextureEncodingParameter이고, attribute 이름이 codingPercent이고, 그 타입이 codingPercentType을 가지고,
    상기 codingPercentType은
    simpleType 이름으로 codingPercentType을 가지는, DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  53. 제52항에 있어서, 상기 codingPercentType은
    restriction base가 int (integer)임을 특징으로 하는 DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  54. 제51항에 있어서, 상기 복호화 정보 스키마는
    BitWrapper노드가 url 필드를 사용하는 아웃밴드인 경우에 스크립트 파일(mux 파일)에서 Muxinfo에 필요한 정보를 규정하기 위해 사용되는 BitWrapperEncodingHints를 더 구비함을 특징으로 하고,
    상기 BitWrapperEncodingHints는
    하위 엘리멘트(sub Element)로 BitWrapperOctreeImageEncodingHints와 BitWrapperPointTextureEncodingHints를 포함하고, 상기 각 하위 엘리멘트는 sourceFormat 와 targetFormat 중 적어도 하나를 하위 엘리멘트로 포함하는, DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  55. 제54항에 있어서, 상기 스크립트 파일(mux 파일)에서 Muxinfo에 필요한 정보는
    상기 DIBR 압축 비트스트림 파일 이름 및 비트스트림 압축 포맷을 포함함을 특징으로 하는 DIBR 데이터를 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  56. 제46항 내지 제49항 중 어느 한 항에 있어서,
    CompressedImageFormat 스키마를 더 구비하고,
    상기 CompressedImageFormat 스키마는
    DIBR 관련 노드가 압축된 이미지(JPEG, PNG), 또는 동영상(MPEG4-Video, VTC을 포함)을 포함하고 있을 때, 상기 압축된 정보에 대해서 복호화시 필요한 정보(압축된 파일이름과 스트림 포맷)를 알려주는데 사용되며,
    Element name이 CompressedImageFormat이고, subelement의 name으로 JPEG과 PNG와 MPEG4-Video와 VTC를 포함하며, 상기 subelement 각각은 sourceFormat 또는 targetFormat 을 포함하고 있으며,
    상기 sourceFormat 또는 targetFormat은 param을 포함하고 있고, 상기 param에 파일이름이 저장됨을 특징으로 하는 DIBR 데이터 압축을 위한 XMT 스키마를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  57. DIBR 데이터를 위한 스키마를 이용하여 DIBR 데이터를 포함하는 XMT 입력파일을 파싱하기 위한 스타일 쉬트에 있어서,
    DIBR 데이터를 위한 scene파일을 생성하기 위한 XMT2BIFS 스타일 쉬트; 및
    DIBR 데이터를 위한 mux 파일을 생성하기 위한 XMT2MUX 스타일 쉬트를 포함함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  58. 제57항에 있어서, 상기 XMT2BIFS 스타일 쉬트는
    소정의 템플릿에 BitWrapper 템플릿을 호출할 수 있도록 선언된 상태에서 XMT 파일에서 BitWrapper가 매칭되면, 'BitWrapper {' 를 scene 파일로 출력하고,
    node가 파싱되면, 소정의 node 템플릿을 수행하고,
    압축할 노드의 DIBR 인코딩 파라미터 중 PointTextureEncodingParameter가 파싱되면, 소정의 PointTextureEncodingParameter 템플릿을 수행하고,
    type, buffer, url 이 파싱되면, 상기 type, buffer, url 및 그 값들을 scene파일로 출력하고,
    }를 scene파일로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  59. 제58항에 있어서, 상기 node 템플릿은
    node가 매칭되면 node를 scene파일로 출력하고, PointTexture가 파싱되면 소정의 PointTexture 템플릿을 수행하고, OctreeImage 파싱되면 소정의 OctreeImage 템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  60. 제59항에 있어서, 상기 PointTexture 템플릿은
    PointTexture가 매칭되면, 'PointTexture {' 를 scene 파일로 출력하고,
    width, height, depthNbBits, depth, color를 파싱하여, 상기 width, height, depthNbBits, depth[], color[] 및 그 값들을 scene 파일로 출력하고,
    }를 scene파일로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  61. 제57항에 있어서,
    SimpleTexture가 매칭되면, 'SimpleTexture {' 를 scene 파일로 출력하고, depth가 파싱되면, 소정의 depth 템플릿을 수행하고, texture가 파싱되면 소정의 texture 템플릿을 수행하고, }를 scene파일로 출력하는 simpleTexture 템플릿을 더 구비함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  62. 제61항에 있어서, 상기 depth 템플릿은
    depth가 매칭되면, depth를 scene파일로 출력하고, CompositeTexture2D 가 파싱되면 소정의 CompositeTexture2D 템플릿을 수행하고, CompositTexutre3D가 파싱되면 소정의 CompositTexutre3D 템플릿을 수행하고, ImageTexture가 파싱되면 소정의 ImageTexture 템플릿을 수행하고, MovieTexture가 파싱되면 소정의 MovieTexture 템플릿을 수행하고, PixelTexture가 파싱되면 소정의 PixelTexture 템플릿을 수행하고, ProtoInstance가 파싱되면 소정의 ProtoInstance템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  63. 제57항에 있어서,
    DepthImage가 매칭되면, 'DepthImage {' 를 scene 파일로 출력하고,
    diTexture가 존재하면, diTexture를 scene파일로 출력하고 소정의 diTexture 템플릿을 수행하고,
    fieldOfView, nearPlane, farPlane, orientation, position, orthographic를 파싱하여, 상기 fieldOfView, nearPlane, farPlane, orientation, position, orthographic 및 그 값들을 scene 파일로 출력하고,
    }를 scene파일로 출력하는 DepthImage 템플릿을 더 구비함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  64. 제57항에 있어서,
    diTexture가 매칭된 후, SimpleTexture가 파싱되면 소정의 SimpleTexture 템플릿을 수행하고,
    PointTexture가 파싱되면 소정의 PointTexture 템플릿을 수행하는 diTexture 템플릿을 더 구비함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  65. 제59항에 있어서, 상기 OctreeImage 템플릿은
    OctreeImage가 매칭되면, 'OctreeImage {' 를 scene 파일로 출력하고,
    octreeResolution, octree, voxelImageIndex 를 파싱하여, 상기 octreeResolution, octree[], voxelImageIndex[] 및 그 값들을 scene 파일로 출력하고,
    images를 파싱하여, images[]를 scene 파일로 출력하고, 소정의 images 템플릿을 수행하고,
    }를 scene파일로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  66. 제65항에 있어서, 상기 images 템플릿은
    images가 매칭되면, 소정의 DepthImage 템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  67. 제58항에 있어서, 상기 PointTextureEncodingParameter 템플릿은
    PointTextureEncodingParameter 가 매칭되면, scene 파일로 PointTextureEncodingParameter { 를 출력하며,
    codingPercent가 파싱되면, condingPercent 및 그 값을 scene파일로 출력하고,
    }를 scene파일로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  68. 제57항에 있어서, 상기 XMT2BIFS 스타일 쉬트는
    XMT 파일에서 /가 매칭된 후, Body/* 가 파싱되면 상기 Body 하위의 템플릿을 수행하고, Header/*가 파싱되면 Header 하위의 템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  69. 제57항에 있어서, 상기 XMT2BIFS 스타일 쉬트는
    XMT 파일에서 ObjectDescriptorUpdate가 매칭되면, UPDATE OD [ 를 scene 파일로 출력하고,
    OD가 매칭된 후, ObjectDescriptor가 파싱되면, 소정의 ObjectDescriptor 템플릿을 수행하고, InitialObjectDescriptor가 파싱되면 소정의 InitialObjectDescriptor 템플릿을 수행하고,
    ]를 scene파일로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  70. 제69항에 있어서, 상기 ObjectDescriptor 템플릿은
    ObjectDescriptor가 매칭되면, ObjectDescriptor { 를 scene 파일로 출력하고, attribute 이름이 objectDescriptorID인 것을 파싱하여 objectDescriptorID 를 scene 파일로 출력하고, attribute 이름이 binaryID인 것을 파싱하고, 그 값을 scene 파일로 출력하고, Descr를 파싱하여 소정의 Descr 템플릿을 수행하고,
    }를 scene파일로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  71. 제69항에 있어서, 상기 InitialObjectDescriptor 템플릿은
    InitialObjectDescriptor가 매칭되면, Profiles가 파싱되면 소정의 Profiles 템플릿을 수행하고, Descr가 파싱되면 소정의 Descr 템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  72. 제71항에 있어서, 상기 Descr 템플릿은
    Descr가 매칭되면, esDescr가 파싱되면 소정의 esDescr 템플릿을 수행하고, ipmpDescrPtr가 파싱되면 소정의 ipmpDescr 템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  73. 제72항에 있어서, 상기 esDescr 템플릿은
    esDescr가 매칭되면, ES_Descriptor가 파싱되면 소정의 ES_Descriptor 템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  74. 제72항에 있어서, 상기 ipmpDescrPtr 템플릿은
    ipmpDescrPtr 가 매칭되면, IPMP_Descriptor가 파싱되면 소정의 IPMPDescriptor 템플릿을 수행하고, IPMP_DescriptorPointer가 파싱되면 소정의 IPMP_DescriptorPointer 템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  75. 제73항에 있어서, 상기 ES_Descriptor 템플릿은
    ES_Descriptor 가 매칭되면, URL가 파싱되면 소정의 URL 템플릿을 수행하고, StreamSourcer가 파싱되면 소정의 StreamSourcer 템플릿을 수행하고,
    decConfigDescr가 파싱되면 소정의 decConfigDescr 템플릿을 수행하고,
    slConfigDescr가 파싱되면 소정의 slConfigDescr 템플릿을 수행하고,
    ipiPtr이 파싱되면 소정의 ipiPtr 템플릿을 수행하고,
    ipIDs가 파싱되면 소정의 ipIDs 템플릿을 수행하고,
    ipmpDescrPtr가 파싱되면 소정의 ipmpDescrPtr 템플릿을 수행하고,
    langDescr가 파싱되면 소정의 langDescr 템플릿을 수행하고,
    regDescr가 파싱되면 소정의 regDescr 템플릿을 수행하고,
    qosDescr가 파싱되면 소정의 qosDescr 템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  76. 제57항에 있어서, 상기 XMT2BIFS 스타일 쉬트는
    XMT 파일에서 StreamSource가 매칭되면, StreamSource1 템플릿을 호출하고,
    상기 StreamSource1 템플릿은
    CompressedImageFormat이 파싱되면 muxSrcipt 및 파일이름 및 mux 파일의 확장자를 scene파일로 출력하고,
    BitWrapperEncodingHints 가 파싱되면 muxScript 및 파일이름 및 mux 파일의 확장자를 scene파일로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  77. 제57항에 있어서, 상기 XMT2MUX 스타일 쉬트는
    XMT 파일에서 /가 매칭된 후, Body/* 가 파싱되면 Body의 하위 템플릿을 수행하고, Header/*가 파싱되면 Header의 하위 템플릿을 수행함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  78. 제57항에 있어서, 상기 XMT2MUX 스타일 쉬트는
    XMT 파일에서 ObjectDescriptorUpdate 또는 InitialObjectDescriptor와 매칭되면, 템플릿 name이 ODids이고, objectDescriptorID를 상기 ODids의 값으로 사용하고, 상기 매칭된 ObjectDescriptorUpdate 템플릿 또는 InitialObjectDescriptor 템플릿을 호출함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  79. 제78항에 있어서, 상기 ObjectDescriptorUpdate 템플릿은
    XMT 파일에서 ObjectDescriptorUpdate가 매칭될 경우, OD 템플릿을 호출하고, 상기 OD 템플릿에서 OD가 매칭되면, 상기 OD는 ObjectDescriptor 템플릿을 호출함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  80. 제57항에 있어서, 상기 XMT2MUX 스타일 쉬트는
    소정의 상위 템플릿에서 decConfigDescr 또는 slConfigDescr 이 매칭되면 각각 호출되는 decConfigDescr 템플릿 및 slConfigDescr 템플릿을 구비함을 특징으로 하고,
    상기 decConfigDescr 템플릿은
    decConfigDescr가 매칭되면, decConfigDescr DecoderConfigDescriptor { 를 mux 파일에 출력하고, DecoderConfigDescriptor 템플릿을 호출하고, } 를 mux 파일에 출력하며,
    상기 slConfigDescr 템플릿은
    slConfigDescr가 매칭되면, slConfigDescr SLConfigDescriptor {를 mux 파일에 출력하고, SLConfigDescriptor 템플릿을 호출하고, } 를 mux 파일에 출력하는, DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  81. 제57항에 있어서, 상기 XMT2MUX 스타일 쉬트는
    AFXConfig 템플릿 및 DecoderConfigDescriptor 템플릿을 포함하는 복호화정보 스타일 쉬트를 더 구비함을 특징으로 하고,
    상기 DecoderConfigDescriptor 템플릿은
    복호화시 필요한 정보를 갖는 DecoderConfigDescriptor노드 내의 decSpecificInfo노드 내에서 엘리멘트 name으로 AFXconfig를 선언하고,
    decSpecificInfo가 매칭된 후, AFXConfig가 파싱되면 AFXConfig 템플릿을 호출함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  82. 제81항에 있어서, 상기 AFXConfig 템플릿은
    AFXConfig가 매칭되면, decSpecificInfo AFXConfig { 를 mux 파일로 출력하도록 규정하고, OctreeImageDecoderSpecific가 파싱되면OctreeImageDecoderSpecific 템플릿을 호출하고, PointTextureCompDecoderSpecific가 파싱되면 PointTextureCompDecoderSpecific템플릿을 호출하고,
    }를 mux 파일로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  83. 제82항에 있어서, 상기 OctreeImageDecoderSpecific 템플릿은
    OctreeImageDecoderSpecific가 매칭되면, 상기 OctreeImageDecoderSpecific { }를 mux 파일로 출력함을 특징으로하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  84. 제82항에 있어서, 상기 PointTextureCompDecoderSpecific 템플릿은
    PointTextureCompDecoderSpecific가 매칭되면, 상기 PointTextureCompDecoderSpecific { }를 mux 파일로 출력함을 특징으로하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  85. 제57항에 있어서, 상기 XMT2MUX 스타일 쉬트는
    XMT 파일에서 StreamSource가 매칭되면, muxInfo MuxInfo { fileName 을 출력하고,
    url이 매칭되면, url 값을 mux 파일로 출력하고,
    url이 매칭되지 않으면, EncodingHints, BIFSEncodingHints, FBAEncodingHints, BitWrapperEncodingHints, CompressedImageFormat 중 어느 하나가 파싱되면, 그에 상응하는 EncodingHints 템플릿, BIFSEncodingHints템플릿, FBAEncodingHints템플릿, BitWrapperEncodingHints템플릿, CompressedImageFormat템플릿 중 어느 하나를 호출하되, EncodingHints, BitWrapperEncodingHints, CompressedImageFormat가 아니면 streamFormat BIFS를 출력하고,
    } 가 파싱되면, 상기 }을 mux 파일로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  86. 제85항에 있어서,
    CompressedImageFormat이 파싱된 후, JPEG 또는 PNG 또는 MPEG4-Video 또는 VTC 중 어느 하나가 파싱되면, 그에 상응하는 JPEG 템플릿 또는 PNG템플릿 또는 MPEG4-Video템플릿 또는 VTC 템플릿 중 어느 하나를 호출함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  87. 제86항에 있어서,
    JPEG 텝플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat JPEG 을 출력하며,
    PNG 템플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat PNG 을 출력하고,
    MPEG4-Video 템플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat MPEG4-Video를 출력하며,
    VTC 템플릿이 호출되어 매칭되면, sourceFormat 템플릿 또는 targetFormat 템플릿을 호출하고, streamFormat VTC를 출력하고,
    상기 sourceFormat 템플릿과 targetFormat 템플릿은
    param 템플릿을 호출하고, param 텝플릿은 파일이름을 값으로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  88. 제85항에 있어서, 상기 BitWrapperEncodingHints템플릿은
    BitWrapperEncodingHints가 매칭된 후, BitWrapperOctreeImageEncodingHints가 파싱되면, BitWrapperOctreeImageEncodingHints 템플릿을 호출하고, BitWrapperPointTextureEncodingHints가 파싱되면, BitWrapperPointTextureEncodingHints 템플릿을 호출함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  89. 제88항에 있어서, 상기 BitWrapperOctreeImageEncodingHints 템플릿은
    BitWrapperOctreeImageEncodingHints 가 매칭된 후, sourceFormat이 파싱되면 sourceFormat템플릿을 호출하고, targetFormat이 파싱되면 targetFormat템플릿을 호출하고, streamFormatOctreeImageCompression을 mux 파일에 출력하고,
    상기 BitWrapperPointTextureEncodingHints 템플릿은
    BitWrapperPointTextureEncodingHints가 매칭된 후, sourceFormat이 파싱되면 sourceFormat템플릿을 호출하고, targetFormat이 파싱되면 targetFormat템플릿을 호출하고, streamFormatPointTextureCompression을 mux 파일에 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
  90. 제89항에 있어서, 상기 sourceFormat 템플릿 및 targetFormat 템플릿은
    param이 파싱되면 param 템플릿을 호출하고, 상기 param 템플릿에서 파일이름을 값으로 출력함을 특징으로 하는 DIBR 데이터를 위한 스타일 쉬트를 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020050018333A 2004-03-08 2005-03-04 Dibr데이터를 위한 스키마 및 스타일 쉬트 KR100763903B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US11/073,690 US7606428B2 (en) 2004-03-08 2005-03-08 Schema and style sheet for DIBR data
JP2005064449A JP2005276193A (ja) 2004-03-08 2005-03-08 Dibrデータのためのスキーマ及びスタイルシート
EP20050251373 EP1575296A3 (en) 2004-03-08 2005-03-08 Schema and style sheet for DIBR data

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US55073404P 2004-03-08 2004-03-08
US60/550,734 2004-03-08
US58556704P 2004-07-07 2004-07-07
US60/585,567 2004-07-07
US60551904P 2004-08-31 2004-08-31
US60/605,519 2004-08-31

Publications (2)

Publication Number Publication Date
KR20060043431A KR20060043431A (ko) 2006-05-15
KR100763903B1 true KR100763903B1 (ko) 2007-10-05

Family

ID=37148712

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050018333A KR100763903B1 (ko) 2004-03-08 2005-03-04 Dibr데이터를 위한 스키마 및 스타일 쉬트

Country Status (2)

Country Link
US (1) US7606428B2 (ko)
KR (1) KR100763903B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070038781A1 (en) * 2005-08-12 2007-02-15 Ye-Sun Joung Apparatus and method for converting contents
US9641822B2 (en) 2008-02-25 2017-05-02 Samsung Electronics Co., Ltd. Method and apparatus for processing three-dimensional (3D) images
JP5440004B2 (ja) 2008-10-20 2014-03-12 セイコーエプソン株式会社 情報配信システム、情報配信システムのサービス実現方法およびそのプログラム
JP5293086B2 (ja) 2008-10-28 2013-09-18 セイコーエプソン株式会社 情報配信システム、情報配信システムのサービス実現方法およびそのプログラム
US8966436B2 (en) * 2010-10-15 2015-02-24 Inxpo, Inc. Systems and methods for providing and customizing a virtual event platform
US8655810B2 (en) * 2010-10-22 2014-02-18 Samsung Electronics Co., Ltd. Data processing apparatus and method for motion synthesis

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249491A (ja) * 1995-02-14 1996-09-27 Internatl Business Mach Corp <Ibm> 奥行き情報を含むテクスチャ・イメージを用いる3dグラフィック装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203692B2 (en) * 2001-07-16 2007-04-10 Sony Corporation Transcoding between content data and description data
KR100450823B1 (ko) * 2001-11-27 2004-10-01 삼성전자주식회사 깊이 이미지 기반 3차원 물체의 표현을 위한 노드 구조
EP1435738A1 (en) 2002-12-05 2004-07-07 Samsung Electronics Co., Ltd. Method and system for generating input file using meta language regarding graphic data compression
US7411590B1 (en) * 2004-08-09 2008-08-12 Apple Inc. Multimedia file format

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249491A (ja) * 1995-02-14 1996-09-27 Internatl Business Mach Corp <Ibm> 奥行き情報を含むテクスチャ・イメージを用いる3dグラフィック装置

Also Published As

Publication number Publication date
US7606428B2 (en) 2009-10-20
US20050201623A1 (en) 2005-09-15
KR20060043431A (ko) 2006-05-15

Similar Documents

Publication Publication Date Title
US7221801B2 (en) Method and system for generating input file using meta language regarding graphic data compression
JP4159248B2 (ja) 階層的データ構造管理システム及び階層的データ構造管理方法
Kim et al. Extensible MPEG-4 textual format (XMT)
KR100763903B1 (ko) Dibr데이터를 위한 스키마 및 스타일 쉬트
KR100695126B1 (ko) 그래픽 데이터 압축에 관한 메타표현을 이용한 입력파일생성 방법 및 시스템과, afx부호화 방법 및 장치
JP4384155B2 (ja) グラフィックデータ圧縮に関するメタ言語を用いた入力ファイルの生成方法
JP4040577B2 (ja) スキーマ、構文解析法、およびスキーマに基づいてビットストリームを発生させる方法
US20020120652A1 (en) Two-stage mapping for application specific markup and binary encoding
JP2006517309A (ja) MPEG−4IntermediaFormatからMPEG−4TextualRepresentationを作成する効率的な手段
Eleftheriadis et al. Flavor: a formal language for audio-visual object representation
Kim et al. Design and implementation of MPEG-4 authoring tool
JP5026407B2 (ja) ツリーデータ構造を処理する方法
JP2005276193A (ja) Dibrデータのためのスキーマ及びスタイルシート
KR100657940B1 (ko) 깊이 영상 기반 표현 데이터 압축에 관한 메타표현을이용한 입력파일 생성 방법 및 시스템과, afx부호화방법 및 장치
KR100494845B1 (ko) 확장성 생성 언어 기반의 메타데이터 부호화 장치 및 그방법
Devillers An extension of BSDL for multimedia bitstream syntax description
EP2348731A1 (en) Method and system for generating input file using meta representation on compression of graphics data, and animation framework extension (AFX) coding method and apparatus
Hong et al. XFlavor: providing XML features in media representation
Kim et al. Conversion mechanism for MPEG-4 contents services on Web environment
KR100910061B1 (ko) 디지털 방송을 위한 메타데이터 부호화/복호화 장치 및 그방법
Lee et al. The content analyzer supporting interoperability of MPEG-4 content in heterogeneous players
Joung et al. XMT tools for interactive broadcasting contents description
Timmerer Resource adaptation using xml within the mpeg-21 multimedia framework
Thomas-Kerr et al. Enhancing interoperability via generic multimedia syntax translation
Shahab et al. Transcoding of MPEG-4 BIFS into MPEG-4 LASeR

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120814

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130822

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee