KR101808027B1 - 수치 데이터의 압축 및 압축해제 - Google Patents

수치 데이터의 압축 및 압축해제 Download PDF

Info

Publication number
KR101808027B1
KR101808027B1 KR1020110043689A KR20110043689A KR101808027B1 KR 101808027 B1 KR101808027 B1 KR 101808027B1 KR 1020110043689 A KR1020110043689 A KR 1020110043689A KR 20110043689 A KR20110043689 A KR 20110043689A KR 101808027 B1 KR101808027 B1 KR 101808027B1
Authority
KR
South Korea
Prior art keywords
value
values
point
floating
target
Prior art date
Application number
KR1020110043689A
Other languages
English (en)
Other versions
KR20110124720A (ko
Inventor
아르노 프로스페 쟝 델랑드
Original Assignee
다솔 시스템므
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 다솔 시스템므 filed Critical 다솔 시스템므
Publication of KR20110124720A publication Critical patent/KR20110124720A/ko
Application granted granted Critical
Publication of KR101808027B1 publication Critical patent/KR101808027B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S706/00Data processing: artificial intelligence
    • Y10S706/902Application using ai with detail of the ai system
    • Y10S706/919Designing, planning, programming, CAD, CASE

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 부동소수점 실제값들 (floating point actual values) 의 구조화된 세트를 포함하는 수치 데이터를 압축하기 위한 컴퓨터 구현 방법이다. 부동소수점 값은 부호 (sign), 지수 (exponent) 및 가수 (manissa) 에 의해 정의되어 있다. 본 방법은 세트의 타깃 실제값에 관련된 부동소수점 예측값을 계산하는 단계를 포함한다. 상기 계산은 상기 세트의 서브세트의 실제값들의 부호, 지수 및/또는 가수에 대응하는 정수들에 대한 연산들을 수행하는 단계를 포함한다. 본 방법은 상기 타깃 실제값 및 상기 예측값으로부터 도출된 정수들 사이의 차이를 표현하는 비트 시퀀스를 저장하는 단계를 또한 포함한다.
이러한 방법은 CAD 파일의 스토리지 사이즈를 감축시키기 위해 특히 효율적이다.

Description

수치 데이터의 압축 및 압축해제{COMPRESSION AND DECOMPRESSION OF NUMERICAL DATA}
본 발명은 컴퓨터 프로그램 및 시스템 분야에 관한 것이고, 보다 구체적으로는 수치 데이터를 압축 및 압축해제하기 위한 컴퓨터 구현 방법에 관한 것이다.
컴퓨터 응용 기술들은 제품 설계를 위한 소프트웨어 솔루션들과 관련되는 컴퓨터 응용 설계 (Computer Aided Design 또는 CAD) 를 포함하는 것으로 알려져 있다. 이와 유사하게, CAE는 컴퓨터 응용 엔지니어링의 머리글자이고, 예를 들어, 미래의 제품의 물리적 거동을 시뮬레이팅하기 위한 소프트웨어 솔루션들과 관련된다. CAM은 컴퓨터 응용 제조를 의미하고 통상적으로 제조 프로세스 및 연산들을 정의하기 위한 소프트웨어 솔루션들을 포함한다.
컴퓨터 지원 기술에서, 그래픽 사용자 인터페이스 (GUI) 는 기술의 효율성에 관하여 중요한 역할을 한다. 모델링된 오브젝트들을 조작 및/또는 네비게이팅하기 위해 요구되는 대부분의 연산들은 GUI 상의 사용자 (예를 들면, 설계자) 에 의해 수행될 수 있다. 특히, 사용자는 제품을 형성하는 모델링된 오브젝트들을 생성, 수정, 및 삭제할 수 있고, 또한 모델링된 오브젝트들이, 예를 들면 제품 구조를 통해, 상호 관계를 갖는 방법을 이해하기 위해 제품을 탐색할 수도 있다. 전통적으로, 이 조작들은 GUI의 사이드에 위치된 전용 메뉴들 및 아이콘을 통해 수행된다. 최근, CATIA와 같은 CAD 시스템들은 제품의 표현 근처에 이 기능들을 호출하는 것을 허용한다. 설계자는 더 이상 메뉴와 아이콘들을 향해 마우스를 이동시킬 필요가 없다. 따라서, 연산들은 마우스의 도달범위 (reach) 이내에서 이용가능하다. 또한, 연산들은 의미적으로 행동한다. 설계자에 의해 선택된 소정의 연산을 위해서, CAD 시스템은 설계자에게, 계속해서 마우스 근처에, 설계자가 선택할 것 같은 이전의 선택된 연산에 따른 신규 연산들의 세트를 제안한다.
또한, PLM (Product Lifecycle Management) 이 알려져 있는데, 이는 회사들이 제품의 종료에 대한 개념으로부터 확장된 사업의 개념에 걸쳐서 제품을 개선하도록 하여 제품 데이터를 공유하고, 공통의 프로세스들을 적용하며, 기업 지식을 레버리징하여 돕는 사업 전략 (business strategy) 을 지칭한다. PLM은 활동자 (회사 부서, 기업 파트너, 공급 회사, 주문자 상표부착 생산 (OEM), 및 고객들) 를 포함함으로써, 제품 및 프로세스들을 개념화 (conceptualize), 설계 (design), 빌드 (build), 및 지원 (support) 하기 위해, 이 네트워크가 단일 엔티티 (single entity) 로서 동작하는 것이 가능하게 할 수도 있다.
일부 PLM 솔루션들은 예를 들면, 디지털 모크업 (digital mockup) 들 (제품의 3D 그래픽 모델) 을 생성하는 것에 의해 제품들을 설계하고 개발하는 것을 가능하게 한다. 디지털 제품은 먼저 정의된 후에 적절한 애플리케이션을 이용하여 시뮬레이션될 수 있다. 그 후, 린 디지털 제조 프로세스 (lean digital manufacturing process) 들이 정의되고 모델링될 수 있다.
Dassault Systemes (상표 CATIA, ENOVIA 및 DELMIA) 에 의해 제공된 PLM 솔루션들은 제품 엔지니어링 지식을 체계화하는 엔지니어링 허브 (Engineering Hub), 제조 엔지니어링 지식을 관리하는 제조 허브 (Manufacturing Hub), 및 엔지니어링 허브와 제조 허브 모두로의 사업 통합 및 연결을 가능하게 하는 엔터프라이즈 허브 (Enterprise Hub) 를 제공한다. 시스템 모두는 제품, 프로세스, 자원을 연결하는 오픈 오브젝트 모델을 전달하여, 최적의 제품 정의, 제조 준비, 생산 및 서비스를 운영하는 동적인 지식-기반 제품 생성 및 결정 지원을 가능하게 한다.
이러한 PLM 솔루션은 제품의 관련 데이터베이스를 포함한다. 데이터베이스는 텍스트 데이터의 세트 및 그 데이터 사이의 관계들을 포함한다. 통상적으로, 데이터는 상기 데이터가 데이터의 계층에서 순서화되는 제품에 관련된 기술 데이터를 포함하고, 검색가능하게 인덱싱되어 있다. 데이터는 종종 모델링된 제품들 및 프로세스들인 모델링된 오브젝트들을 표현한다.
제품 구성, 프로세스 지식 및 자원 정보를 포함하는 제품 수명 정보는, 통상 협동의 방식으로 편집되도록 의도되어 있다.
CATIA 라는 상표로 Dassault Systemes 에 의해 제공된 것과 같은 제품을 형성하는 많은 시스템들 및 프로그램들이 제품을 형성하는 오브젝트들 (또는 파트들) 또는 오브젝트들의 어셈블리의 설계를 위해 시장에 제공되어 있다.
이 CAD 시스템들은 사용자로 하여금 오브젝트들 또는 오브젝트들의 어셈블리의 복잡한 3 차원 (3D) 모델 또는 2 차원 (2D) 모델을 구축 및 조작하는 것을 가능하게 한다. 따라서, CAD 시스템들은 에지들 또는 선들, 어떤 경우에는 면들을 이용하여 모델링된 오브젝트들의 표현을 제공한다. 선들 또는 에지들은 다양한 방식들, 예를 들면 NURBS (non-uniform rational B-splines) 로 표현될 수도 있다. 이 CAD 시스템들은 파트들 또는 파트들의 어셈블리를 대개 지오메트리 (geometry) 의 상세들 (specifications) 인 모델링된 오브젝트들로서 관리한다. 구체적으로, CAD 파일들은 상세들을 포함하고, 이 상세들로부터 지오메트리가 생성되고, 결과적으로 표현 (representation) 이 생성되는 것을 가능하게 한다. 지오메트리 및 표현은 단일의 CAD 파일 또는 다수의 CAD 파일에 저장될 수 있다. CAD 시스템은 모델링된 오브젝트들을 설계자에게 표현하기 위한 그래픽 툴 (tool) 들을 포함하고; 이 툴들은 복잡한 오브젝트들의 디스플레이 전용이다. - CAD 시스템에서 오브젝트를 표현하는 파일의 통상적인 크기는 파트 당 1 메가바이트의 범위에 있고, 어셈블리는 수천개의 파트들을 포함할 수도 있다. CAD 시스템은 전자 파일에 저장되는 오브젝트의 모델들을 관리한다.
사용자가 CAD 소프트웨어로 생성한 2D 또는 3D 모델들은 점, 벡터, 곡선, 면 및 메쉬 (mesh) 등의 지오메트리 오브젝트들을 포함한다. 이 오브젝트들은 여타의 데이터 타입들로뿐만 아니라 보통은 부동소수점 값들 (floating-point values) 로 표현된다.
부동소수점 값은 실수 (real number)(수학적인 의미에서) 에 속하는 수를 표현하기 위해 사용된 데이터 타입의 값이다. 부동소수점 값들을 위해 가장 광범위하게 사용되는 표준 포맷 중의 하나는 IEEE 754 포맷 표준, 더 구체적으로는 IEEE 754-1985 포맷 표준에서 규정한 배정밀도 부동소수점 (double-precision floating point) 이다. 이 포맷에서, 실수
Figure 112011034373129-pat00001
를 표현하는 부동소수점 값
Figure 112011034373129-pat00002
는 64비트의 부호 (sign), 지수 (exponent) 및 가수 (mantissa) 에 의해 정의된다. IEEE 754 표준에서
Figure 112011034373129-pat00003
가 64비트 부동소수점 값인 경우, 다음의 성분, 즉 부호 s (1 비트로 코딩된 정수), 지수 e (11 비트로 코딩된 정수), 및 가수 m (52 비트로 코딩된 정수) 으로
Figure 112011034373129-pat00004
을 기입할 수 있다. 그 다음, 0 < e < 211-1인 경우, 표준의 정의에 따라,
Figure 112011034373129-pat00005
는 정규화되었다고 하고, bias = 211-1-1= 1023인 실수
Figure 112011034373129-pat00006
를 표현한다. e=0이고 m=0인 경우,
Figure 112011034373129-pat00007
는 0이 되었다고 하고, 실수
Figure 112011034373129-pat00008
를 표현한다. e=0이고 m은 0이 아닌 경우,
Figure 112011034373129-pat00009
는 비정규화되었다고 하고, bias = 211-1-1= 1023인 실수
Figure 112011034373129-pat00010
를 표현한다. e=2 11 -1인 경우,
Figure 112011034373129-pat00011
는 인밸리드 (invalid) 되었다고 하고, 어떠한 수도 표현하지 않는다.
CAD 소프트웨어에 의해 제공되는 기본 기능은 첫 번째 세션 (session) 중에 사용자가 생성 또는 수정한 모델들을 지속적 서포트 (persistent support) 상에 저장하고, 이 모델들이 추후의 사용을 위해 나중에 리오프닝 (reopening) 되는 것을 (예를 들면, 로컬 디스크 또는 서버 상의 파일에서) 가능하게 하는 능력이다. 그 모델들은 예를 들면, 소프트웨어의 다른 버전을 가지거나 혹은 다른 플랫폼 상인 경우라도, 나중에 같은 소프트웨어의 두 번째 세션에서 오프닝 (opening) 될 수 있다. 플랫폼은 하드웨어의 면에서 (상이한 CPU) 또는 소프트웨어의 면에서 (상이한 언어 컴파일러 또는 인터프리터) 다를 수 있다. 오프닝 이후 두 번째 세션에서의 모델은 저장 전의 첫 번째 세션에서의 모델과 정확히 동일해야 한다. 따라서, 저장은 손실이 없어야만 하고 (예를 들면, 무손실의 정보를 포함), 상이한 플랫폼들에 걸쳐서도 안정적이어야 한다 (즉, 모델의 오프닝은 그 모델을 정의하기 위해 사용된 데이터 타입을 지원하는 상이한 플랫폼들에 대한 동일한 결과를 제공하도록 한다).
안정성 문제는 모델의 저장 및 리오프닝이 그 모델을 정의하기 위해 저장된 데이터를 변환시키는 것을 포함할 경우, 특히 모델의 변환이 산술 연산들을 포함할 경우 발생한다. 실제, 상이한 플랫폼들은 데이터 타입에 따라 동일 연산들에 대해 다른 결과들을 제공한다. 예를 들면, a, b 및 c가 부동소수점 값인 경우, 일부 플랫폼들은 연산 a+b+c를 (a+b) +c로 계산하는 반면, 일부 다른 플랫폼들은 동일한 연산을 a+ (b+c) 로 계산할 것이므로, 이는 반드시 동일한 결과에는 이르지 않는다. 또한, 부동소수점 연산 (floating point arithmetic) 은 계산을 수행하기 위한 중간자들 (intermediaries) 을 포함한다. 이 중간자들은 상이한 플랫폼들 상에서 동일한 비트 길이를 갖지 않으므로, 상이한 결과들을 초래한다. 따라서, 다른 플랫폼들 상에서 수행된 같은 부동소수점 연산들은, 비록 그 연산들이 동일 데이터에 대해 수행되된 것이라도 다른 결과들을 초래할 수 있다. 명칭이 "What every scientist should know about floating point arithmetic"인 1991년 3월자 ACM Computing Surveys 문헌 (David Goldberg 저), Vol.23, No1은 부동소수점 값들에 대한 연산(operation)과 관련한 사안들을 나타내고 있다. 다음에서는, 연산 (들) 이 임의의 정규 플랫폼에 대해 같은 결과가 되는 경우의 연산 (또는 일련의 연산들) 을 위해 확보되어야 할 안정성을 논의할 것이다.
모델들은 간단한 구현에서, 지속적 서포트 상에 예를 들면, 압축 없이 영속적 지원 상에서 저장될 수 있다. 이 구현에서, 주어진 지오메트릭 오브젝트를 정의하는 부동소수점 값 및 기타 데이터는 그대로 저장된다. 이런 간단한 방법 (예를 들면, 압축 없이) 은 CATIA 및 기타 CAD 소프트웨어에서 현저히 사용되고 있다. 이런 방법으로, 저장은 손실이 없다. 실제, 모델을 정의하는 데이터는 저장 전에는 수정되지 않으며, 이에 따라 데이터의 손실이 있을 수 없다. 그 저장은 안정적이기도 하다. 실제, 모델을 정의하는 데이터는, 그 데이터가 압축되어 있지 않기 때문에 그 모델이 리오프닝 (reopenning) 되는 경우에 변환되지 않는다. 그러나, 이러한 방법은 CAD 모델의 저장 (storage) 크기를 최적화하지는 못한다.
일반적으로 데이터 압축 분야에서, 델타 인코딩 (delta-encoding) 은 타깃 오브젝트 그 자체 대신에, 타깃 오브젝트 (target object) 와 알려진 참조 오브젝트 (reference object) 사이의 차이를 저장함으로써 그 타깃 오브젝트를 표현하는 데이터 압축 방법이다. 차이가 타깃 오브젝트보다 적은 공간에 저장될 수 있다면 이것은 유리한 것이다.
레퍼런스 오브젝트가 데이터 중에서 취해진 실제 오브젝트 (actual object) 가 아니라 예측기 함수 (predictor function) 를 이용하여 하나 또는 몇 개의 실제 오브젝트로부터 계산되는 경우, 예측 인코딩 (predictive encoding) 은 델타 인코딩의 변이형이다. 따라서, 예측기 함수는 실제 오브젝트들로부터 참조 오브젝트를 예측한다. 타깃 오브젝트를 그대로 저장하는 대신에 (즉, 압축없이), 예측되는 참조 오브젝트와 타깃 오브젝트 사이의 차이가 저장된다. 예측이 현재의 오브젝트에 근접할수록, 그 차이값은 더욱 작아지고, 따라서, 그 차이값을 저장하기 위해 확보해야 할 저장 공간도 더욱 적어지게 된다. 즉, 압축의 효율은 그 예측의 정확도에 의존한다.
양자화 (quantization) 는 또 다른 압축기술이다. 양자화는, 가능하게는 델타 인코딩 또는 예측 인코딩과 결합하여, 부동소수점 값들을 포함하는 데이터를 압축하기 위해 사용된다. 양자화는 부동소수점 값들을 정수로 맵핑 (mapping) 하는 프로세스이다. 양자화는 어떤 부동소수점 값들의 최하위 비트 (the least significant bits) 를 잘라버리는 것을 포함하므로, 데이터의 손실을 야기한다.
John Danskin이 저술한 논문 "Higher Bandwith X" (1994) 및 박사학위 논문 "Compressing the X Graphics Protocol" (1995) 는, 델타 인코딩의 형태인, "상대 좌표 (relative coordinates)"를 사용하여 지오메트리를 압축하는 방법을 설명하고 있다. 한편, 지오메트리는 정수 좌표 (integer coordinates) 로 정의된다. 따라서, 상기 방법은 지오메트리가 고수준의 정밀도로 정의되는 CAD 모델용으로 적합하지 않다.
Michael Deering에 의한 논문 "Geometry Compression" (1995) 는, 부동소수점 수 (floating-point number) 들의 양자화 및 이웃하는 것들 사이 델타 인코딩을 사용한 삼각 메쉬 (triangular mesh) 의 압축기술을 설명하고 있다. 또한, Costa Touma와 Craig Gotsman에 의한 논문 "Triangle Mesh Compression" (1998) 은 삼각 메쉬를 압축하되, 양자화 및 예측 인코딩을 사용하는 기술을 설명하고 있다. Gabiel Taubin과 Jarek Rossignac에 의한 "Geometric Compression Through Topological Surgery" (1998) 및 Martin Isenburg와 Pierre Alliez에 의한 논문 "Compressing Polygon Mesh Geometry with Parallelogram Prediction" (2002) 은 상이한 예측 스킴 (prediction scheme) 을 이용한 유사 접근 방식을 설명하고 있다. 예측 (prediction) 은 메쉬 내의 다른 점들을 선형조합함으로써 계산된다. 이러한 모든 방법들은 양자화 때문에 손실 압축 (lossy compression) 을 야기하는 단점을 현저하게 나타낸다.
L. Ibarria 등에 의한 논문 "Out-of-core Compression and Decompression of Large n-dimensional Scalar Fields" (2003) 는, 부동소수점 데이터를 위한 예측 인코딩 방법을 설명하고 있다. 예측 함수는 부동소수점 산술 연산을 포함하고 있고, 따라서 상이한 플랫폼들에 걸쳐서는 안정성이 보장되지 않는 단점을 가진다. 실제로, 상술한 바와 같이, 부동소수점 산술 연산은 다른 플랫폼들 상에서 같은 결과를 생성하지 않는다.
Isenburg 등에 의한 논문 "Lossless Compression of Floating-Point Geometry" (2004) 는, 부동소수점 데이터를 위한 예측 인코딩 방법을 설명하고 있다. 상술한 바와 같이, 다른 플랫폼들에 걸쳐서는 안정성이 보장되지 않는다.
미국 특허 US5793371, US5825369, US5842004, US5867167, US5870094, US5905502, US5905507, US5933153, US6047088, US6167159, US6215500, US6239805, US6522327, US6525722, 및 US6532012는 이와 유사한 방법들을 설명하고 있으며, 이들 문헌의 어떤 것도 안정성의 문제를 처리하지 않는다.
Engelson 등이 공동 저술한 논문 "Lossless Compression of High-volume Numerical Data from Simulations" (2000) 은, 부동소수점 값들의 압축 기술을 설명하고 있다. 그 값들은 지오메트릭 오브젝트들을 표현한다기보다는, 서서히 변화하면서 소정의 변수에 의해 파라미터화된 값들의 시퀀스이다. 상기 논문은 일례로서 선형 성장 시퀀스 (즉,
Figure 112011034373129-pat00012
) 인 세 값
Figure 112011034373129-pat00013
의 시퀀스를 제공한다. 이 시퀀스를 위한 단순한 예측 인코딩 스킴은
Figure 112011034373129-pat00014
를 위한 예측으로서
Figure 112011034373129-pat00015
를 취하는 것이다. 예측값과 실제값간의 차이는
Figure 112011034373129-pat00016
Figure 112011034373129-pat00017
이다. 시퀀스가 선형이므로, 그 예측이 우수하고
Figure 112011034373129-pat00018
이 작고;
Figure 112011034373129-pat00019
Figure 112011034373129-pat00020
이 저장되므로, 원래의 시퀀스보다 더 작은 저장 사이즈를 채택할 수 있다. 상기 논문에서 언급된 문제점은, 예측 연산은 부동소수점 산술 연산을 포함하므로, 상이한 플랫폼들 상의 안정성을 방해한다는 것이다. 상기 논문에서는 부동소수점 수의 정수 표현 개념을 도입하고 있다. p가 부동소수점 64비트 숫자라면, 그것의 정수 표현 Int (p) 는 같은 64비트 스트링에 의해 p로 표현된 정수로 정의된다. 정수 표현은
Figure 112011034373129-pat00021
로 정의된다. 그러면, 그 압축은 시퀀스
Figure 112011034373129-pat00022
상에 상술한 예측 인코딩을 적용하여,
Figure 112011034373129-pat00023
Figure 112011034373129-pat00024
을 저장한다. 안정성을 보장할 목적으로, 상기 문헌은 다음의 단계들, 즉 m 연속의 부동소수점 값들을 정수 표현들로 변환하는 단계 및 이 정수 표현들에 대한 고전적인 정수 감산의 시퀀스를 계산하는 단계를 수행하는 것을 제안한다.
그러나, 일부 수치들로 인해, Engelson 등의 상기 방법은 전체적으로 비효율적이다. 예를 들면, 상기 문헌의 노테이션 (notation) 들을 사용하여, 부동소수점 값들
Figure 112011034373129-pat00025
의 시퀀스가 고려된다 (여기서, 상기 부정소수점 값들은 그들이 표현하는 실수들에 의해 지칭된다). 이 시퀀스는 선형이고, 차이값
Figure 112011034373129-pat00026
가 정확히 0이기 때문에, 이론적으로는 상술한 예측 인코딩 스킴이, 부동소수점 산술을 사용하여 이들 부동소수점 숫자상에 매우 효율적으로 적용되어야 한다. 그러나, 상기 논문의 방법을 적용해 보면,
Figure 112011034373129-pat00027
은 51 유효 비트 (significant bit) 를 가진다. 이것은 두 개의 부동소수점 값들의 정수 표현들 사이의 정수 차가 그 두 개의 부동소수점 값들 사이의 부동소수점 차에 의존할 뿐만 아니라, 그 두 개의 부동소수점들 자체의 값들에도 의존한다는 사실에서 기인한다. 상기 예에서, 2.5와 2.0의 부동소수점 표현은 동일한 지수를 갖지만 1.5의 부동소수점 표현은 동일한 지수를 갖지 않기 때문에,
Figure 112011034373129-pat00028
Figure 112011034373129-pat00029
과 다르다. 그러므로, 압축 효율은 만족스럽지 않다. 이와 같이, 이 방법의 첫 번째 문제점은 일부 타입의 시퀀스들에 대해서는 충분히 양호하게 작동하지 않는다는 것이다 (즉, 압축률이 충분히 높지 않다). 상기 논문은 "시퀀스
Figure 112011034373129-pat00030
이 다항식들에 의해 근사화될 수 있다면, 고정 단차 알고리즘 (the fixed step difference algorithm) 은 양호하게 작동한다"고 더 명시하고 있다. 그러나, 실제 적용에 있어서는, 다항식들에 의해
Figure 112011034373129-pat00031
가 근사화될 수 있다고 가정하는 것이 더 나을지 모른다. 이와 같이, 실제 적용에 있어서, 시퀀스
Figure 112011034373129-pat00032
에 대한 정수 차를 수행하는 방법은 불량한 예측을 초래할 수 있다.
또 다른 문제점은
Figure 112011034373129-pat00033
의 계산이 오직 감산만 사용할 수 있고, 다른 연산들은 사용할 수 없다는 것이다. 예컨대, 승산과 제산은 정수 표현에 적용될 수 없다. 즉, 두 부동소수점 수들의 정수 표현 사이의 차이는, 어떤 경우들 (적어도 앞서 설명한 예외를 갖는) 에 대한 그 두 부동소수점 수들 사이의 차이를 표현할 수 있지만, 그 정수 표현들의 승산 (또는 제산이나 가산) 은 그 두 부동소수점 수들 사이의 승산 (또는 제산이나 가산) 을 표현하지는 않는다. 예를 들어 가산에 관한한, 정수 표현으로 변환된 두 개의 부동소수점 값들의 지수가 더해질 것이기 때문에 이것은 현저하다. 이것은 이용가능한 예측 스킴 (prediction scheme) 을 현저히 제한한다. 이에 따라, 완성된 예측이 가능한 것만큼 정확하지 않고, 압축률은 영향을 받게 된다.
Ratanaworabhan 등에 의한 논문 "Fast Lossless Compression of Scientific Floating-Point Data" (2006) 및 Peter Lindstrom과 Martin Isenburg에 의한 논문"Fast and Efficient Compression of Floating-Point Data" (2006) 는 같은 문제점들을 가진 유사 기술들을 설명하고 있다.
본 발명의 목적은 CAD 파일의 저장 크기를 효율적으로 감축시키기에 적합한 방법을 제공하는 것이다. 이러한 솔루션은 저장 인프라스트럭쳐 (storage infrastructure) 의 비용을 감축시키고, 네트워크를 통한 CAD 모델들의 전송 또는 수신 속도를 증가시킬 것이다.
본 발명의 목적은 부동소수점 실제값들 (floating point actual values) 의 구조화된 세트를 포함하는 수치 데이터를 압축하기 위한 컴퓨터 구현 방법으로서, 부동소수점 값이 부호 (sign), 지수 (exponent) 및 가수 (manissa) 에 의해 정의되고, 상기 방법은, 세트의 타깃 실제값에 관련된 부동소수점 예측값을 계산하는 단계로서, 상기 세트의 서브세트의 실제값들의 상기 부호, 상기 지수 및/또는 상기 가수에 대응하는 정수들에 대한 연산들을 수행하는 것을 포함하는, 상기 계산하는 단계; 상기 타깃 실제값 및 상기 예측값으로부터 도출된 정수들 사이의 차이를 표현하는 비트 시퀀스를 저장하는 단계를 포함하는, 컴퓨터 구현 방법으로 달성된다.
바람직한 실시형태로는 하나 이상의 다음의 특징들을 포함할 수 있다.
- 세트의 순서에 따라 계산하는 단계 및 저장하는 단계;
- 상기 세트의 적어도 하나의 시작 실제값이 저장되어 있고, 상기 계산하는 단계는 상기 세트의 다른 모든 실제값들에 대해 반복되며, 각 반복에서는, 상기 반복의 계산된 예측값을 임계값과 비교하는 단계, 저장하는 단계가 뒤따르고, 상기 저장하는 단계는, 상기 예측값이 상기 임계값보다 더 높은 경우, 상기 반복의 상기 타깃 실제값 및 상기 반복의 상기 예측값으로부터 도출된 정수들 사이의 차이를 표현하는 비트 시퀀스를 저장하고, 또한 상기 저장하는 단계는, 상기 반복의 상기 예측값이 상기 임계값보다 더 낮은 경우, 상기 반복의 상기 타깃 실제값을 저장하는, 상기 저장하는 단계;
- 상기 세트의 실제값들은 지오메트릭 오브젝트 (geometric object) 에 관련된 좌표들, 바람직하게는 상기 지오메트릭 오브젝트의 컨트롤 포인트들 (control points) 의 좌표들임;
- 상기 서브세트의 실제값들은, 상기 지오메트릭 오브젝트의 다른 컨트롤 포인트에 인접한 상기 지오메트릭 오브젝트의 컨트롤 포인트들의 좌표들이고, 상기 타깃 실제값은 상기 다른 컨트롤 포인트의 좌표임;
- 상기 예측값은 상기 다른 컨트롤 포인트에 관련된 적어도 하나의 파라미터, 상기 서브세트의 실제값들, 및 상기 다른 컨트롤 포인트에 인접한 각 컨트롤 포인트에 관련된 적어도 하나의 파라미터에 따라 결정됨;
- 상기 적어도 하나의 파라미터들은 상기 지오메트릭 오브젝트의 각각의 매듭 벡터 (knot vector) 에 따라 결정됨;
- 상기 지오메트릭 오브젝트는 NURBS 표면이고, 상기 적어도 하나의 파라미터들은 그레빌 파라미터들 (Greville parameters) 임;
- 상기 타깃 실제값 및 상기 예측값으로부터 도출된 정수들은 상기 타깃 실제값 및 상기 예측값을 각각 정의하는 스트링들 (strings) 에 의해 정의된 정수들임;
- 상기 차이를 표현하는 비트 시퀀스는, 유효 비트들 (significant bits) 의 수를 표시하는 프리픽스 비트 시퀀스 (prefix bit sequence) 와, 상기 차이와 동일한 바디 비트 시퀀스 (body bit sequence) 로서, 상기 바디 비트 시퀀스에 대해 리딩 제로들 (leading zeros), 및 바람직하게는 1 과 동일한 첫 번째 비트가 커트 (cut) 되고, 상기 바디 비트 시퀀스의 사이즈는 상기 유효 비트들의 수인, 상기 바디 비트 시퀀스를 포함함;
- 상기 연산들은 정수 가산, 감산, 승산 및/또는 제산을 포함하는 산술 연산들 및/또는 비트 시프트 및/또는 리딩 제로 카운트 (leading zero count) 를 포함하는 비트 연산들 (bitwise operations) 을 포함함.
본 발명의 목적은 또한, 수치 데이터를 압축해제하기 위한 컴퓨터 구현 방법으로서, 상기 수치 데이터는 앞서의 방법에 따라 압축될 수 있고, 상기 방법은 일반적으로, 부동소수점 예측값을 계산하는 단계를 포함하고, 상기 예측값을 계산하는 단계는 세트의 실제값들의 부호, 지수 및/또는 가수에 대응하는 정수들에 대한 연산들을 수행하는 단계 및 상기 예측값으로부터 도출된 정수와 비트 시퀀스의 가산으로부터 부동소수점 실제값을 도출하는 단계를 포함하는 컴퓨터 구현 방법으로 달성된다.
상기 압축해제 방법은 수치 데이터를 압축해제하기 위한 것일 수 있고, 상기 수치 데이터는 부동소수점 실제값들의 구조화된 세트를 포함하는 데이터의 압축된 형태이고, 부동소수점 값은 부호, 지수 및 가수에 의해 정의되고, 또한 상기 수치 데이터는 세트의 타깃 실제값 및 타깃 값에 관련된 부동소수점 예측값으로부터 도출된 정수들 사이의 차이를 표현하는 비트 시퀀스를 포함한다. 본 방법은 예측값을 계산하는 단계를 포함하고, 상기 계산하는 단계는 세트의 서브세트의 실제값들의 부호, 지수 및/또는 가수에 대응하는 정수들에 대한 연산들을 수행하는 단계 및 상기 예측값으로부터 도출된 정수와 상기 비트 시퀀스의 가산으로부터 상기 타깃 실제값을 도출하는 단계를 포함한다.
실시형태들에서, 본 압축해제 방법은 다음 특징들 중의 임의의 특징 또는 그 조합을 포함할 수 있다.
- 세트의 순서에 따라 계산 및 도출이 반복되는 단계들;
- 각 반복에서, 상기 서브세트는 이전의 반복들에서 도출된 타깃 값들 및/또는 수치 데이터에서 그대로 저장되어 있는 타깃 값들을 포함함;
- 상기 수치 데이터는 상기 세트의 적어도 하나의 시작 실제값 (그대로 저장된) 을 더 포함하고, 또한, 상기 계산의 단계는 상기 세트의 다른 모든 실제값들에 대해 반복되며, 각 반복에서는, 상기 계산의 단계 이후에 상기 반복의 계산된 예측값을 임계값과 비교하는 단계 및 다음의 단계, 즉, 상기 예측값이 상기 임계값보다 더 높은 경우, 상기 예측값으로부터 도출된 정수 (앞에서와 같이) 와 비트 시퀀스 가산으로부터 타깃 실제값을 도출하고, 또는 상기 반복의 상기 예측값이 상기 임계값보다 더 낮은 경우, 타깃 실제값 (상기 수치 데이터 내에서 그대로 포함된) 을 복구하는 단계가 뒤따라 발생함;
- 상기 세트의 실제값들은 지오메트릭 오브젝트 (geometric object) 에 관련된 좌표들, 바람직하게는 상기 지오메트릭 오브젝트의 컨트롤 포인트들 (control points) 의 좌표들임;
- 상기 서브세트의 실제값들은, 상기 지오메트릭 오브젝트의 다른 컨트롤 포인트에 인접한 상기 지오메트릭 오브젝트의 컨트롤 포인트들의 좌표들이고, 상기 타깃 실제값은 상기 다른 컨트롤 포인트의 좌표임;
- 상기 예측값은 상기 다른 컨트롤 포인트에 관련된 적어도 하나의 파라미터, 상기 서브세트의 실제값들, 및 상기 다른 컨트롤 포인트에 인접한 각 컨트롤 포인트에 관련된 적어도 하나의 파라미터에 따라 결정됨;
- 상기 적어도 하나의 파라미터들은 상기 지오메트릭 오브젝트의 각각의 매듭 벡터 (knot vector) 에 따라 결정됨;
- 상기 지오메트릭 오브젝트는 NURBS 표면이고, 상기 적어도 하나의 파라미터들은 그레빌 파라미터들 (Greville parameters) 임;
- 상기 타깃 실제값 및 상기 예측값으로부터 도출된 정수들은 상기 타깃 실제값 및 상기 예측값을 각각 정의하는 스트링들 (strings) 에 의해 정의된 정수들임;
- 상기 차이를 표현하는 비트 시퀀스는, 유효 비트들 (significant bits) 의 수를 표시하는 프리픽스 비트 시퀀스 (prefix bit sequence) 와, 상기 차이와 동일한 바디 비트 시퀀스 (body bit sequence) 로서, 상기 바디 비트 시퀀스에 대해 리딩 제로들 (leading zeros), 및 바람직하게는 1 과 동일한 첫 번째 비트가 커트 (cut) 되고, 상기 바디 비트 시퀀스의 사이즈는 상기 유효 비트들의 수인, 상기 바디 비트 시퀀스를 포함함;
- 상기 연산들은 정수 가산, 감산, 승산 및/또는 제산을 포함하는 산술 연산들 및/또는 비트 시프트 및/또는 리딩 제로 카운트 (leading zero count) 를 포함하는 비트 연산들 (bitwise operations) 을 포함함.
본 발명의 목적은 또한 컴퓨터 지원 설계 시스템으로서, 부동소수점 실제값들의 구조화된 세트를 포함하는 수치 데이터에 의해 모델링된 오브젝트를 저장하는 데이터베이스로서, 부동소수점 값이 부호, 지수 및 가수에 의해 정의되어 있는, 상기 데이터베이스, 그래픽 사용자 인터페이스, 및 상기 압축 방법에 따른 수치 데이터를 압축하기 위한 수단 및/또는 상기 압축해제 방법에 따른 수치 데이터를 압축해제하기 위한 수단을 포함하는 컴퓨터 지원 설계 시스템으로 달성된다.
본 발명의 목적은 또한 컴퓨터에 의한 실행을 위한 명령들을 포함하는 컴퓨터 프로그램으로서, 상기 명령들은 상기 방법들 중의 임의의 방법을 수행하는 수단을 포함하는 컴퓨터 프로그램으로 달성된다.
본 발명의 목적은 또한 컴퓨터 판독가능 저장매체로서, 상기 저장매체 상에 상기 컴퓨터 프로그램을 기록한 컴퓨터 판독가능 저장 매체로 달성된다.
본 발명의 추가의 특징들 및 장점들은 아래에 첨부된 도면을 참조하여 본 발명의 실시형태들에 관해 설명하는 것으로부터 명백해질 것이다. 그러나, 주어진 예들은 한정을 위한 것이 아니다.
도 1 내지 도 4는 압축방법의 예들을 나타낸 흐름도들,
도 5 내지 도 12는 NURBS 압축의 예들을 나타낸 도면들,
도 13은 압축해제 방법의 일례를 나타낸 도면,
도 14는 본 발명의 방법을 수행하기에 적합한 클라이언트 컴퓨터 시스템의 일례를 나타낸 도면.
본 발명은 데이터 처리를 위한 컴퓨터 구현 방법에 관한 것이다.
더욱 구체적으로, 본 발명은 부동소수점 실제값들 (floating point actual values) 의 구조화된 세트 (structured set) 를 포함하는 수치 데이터를 압축하기 위한 컴퓨터 구현 방법에 관한 것이다. 본 방법은 상기 세트의 타깃 실제값과 관련된 부동소수점 예측값을 계산하는 것을 포함한다. 상기 계산은 정수들에 대한 연산을 수행하는 것을 포함한다. 정수들은 상기 세트의 서브세트의 실제값들의 부호 (sign), 지수 (exponent) 및/또는 가수 (mantissa) 에 대응한다. 본 방법은 정수들간의 차를 나타내는 비트 시퀀스 (bit sequence) 를 저장하는 것을 또한 포함하고, 상기 정수들은 상기 타깃 실제값과 예측값으로부터 도출된다. 이러한 컴퓨터 구현 방법은 부동소수점 실제값들의 구조화된 세트를 포함하는 수치 데이터의 효율적 압축을 가능하게 하고, 그 압축은 무손실이며 상기 부동소수점 데이터 타입을 지원하는 다른 플랫폼들에 걸쳐서도 안정적이다. 이러한 방법은 부동소수점 실제값들의 구조화된 세트를 포함하는 수치 데이터를 갖는 파일의 저장을 효율적으로 감축시키는데에 적합하다.
본 방법은 무손실이며 다른 플랫폼들에 걸쳐서도 안정적이기 때문에, 특히, 2D 또는 3D CAD 모델의 상세를 가진 CAD 파일에 적용될 수 있다. 실제, CAD 모델들은 부동소수점 실제값들의 구조화된 세트를 포함하는 수치 데이터에 의해 명시되어 있다. 본 방법은 이러한 CAD 파일을 효율적으로 압축할 수 있으며, 이에 따라 CAD 파일의 저장 크기를 감축시킬 수 있다. 파일을 "효율적으로" 압축하는 것은, 압축률이 통계적으로 20% 이상 더 높다는 것을 의미한다. 압축 방법이 통계적으로 더 높은 압축률을 달성한다면, 그것은 다른 방법에 비해 더욱 효율적인 것으로 불려진다. 본 방법은 이와 같은 방식으로 저장 인프라스트럭쳐 (storage infrastructure) 의 비용을 감축시킬 수 있으며, 네트워크를 통한 CAD 전송 또는 수신의 속도를 증가시킬 수 있다.
한편, 본 방법은 일반적인 수치 데이터의 압축을 대상으로 한 것이다. 즉, 본 방법은 수치 데이터의 저장 크기를 감축시키고, 이에 따라 그 데이터를 포함하는 임의 파일의 사이즈를 감축시키는 것이 가능하게 한다. 상기 데이터는 수치적 (numerical) 이며, 그것은 숫자들과 관련되어 있다는 것을 의미한다. 더욱 구체적으로, 본 방법은 실제의 부동소수점 실제값들 (floating point actual values) 을 포함하는 임의의 수치 데이터를 압축하기 위해 적용될 수 있다.
부동소수점 값들은 IEEE 754 포맷 표준에 의해 정의된 데이터 타입일 수 있다. 한편, 본 방법은 다른 유사한 데이터 타입들을 대상으로 한 것이다. 예를 들면, 부동소수점 값들은 표준인 64 비트보다 더 작거나 더 큰 비트 상에 코딩될 수 있다. 부동소수점 값들은 예를 들면, 지수와 가수로 이루어지고 부호가 없는, 다른 구조인 데이터 타입의 것일 수 있다. 더욱 일반적으로, 본 방법은 적어도 두 개의 정수로 표현된 임의의 수치 데이터 타입에 적용된다. 그러나, 명료화를 위해, 이하에서의 부동소수점 값들은 IEEE 754 타입의 것으로 고려한다.
실제의 부동소수점 값들의 세트는 구조적이다. "구조화 (structured)"라는 것에 의해, 실제 부동소수점 값들에 의해 표현된 수들의 세트는 코히어런트 (coherent) 라는 것, 즉 그 수들은 서로로부터 완전히 독립적이지 않다. 이 코히어런스 (coherence) 는 또한 그 세트의 실제 부동소수점 값들 상에 반영되어 있고, 서로 완전히 독립적이지 않다. 세트가 구조화된 덕분에, 세트의 실제 부동소수점 값들의 각 값은 그 세트의 다른 실제 부동소수점 값들로부터 예측될 수 있다. 상기 구조는 수치 데이터에 의해 표현된 오브젝트 (object) 의 종류에 의존할 수 있다. 이 경우, 상기 예측은 예측 스킴 (prediction scheme) (경우에 따라, 미리 결정되어 있거나 본 방법의 첫 번째 단계에서 최종적으로 선택된) 에 따라 수행될 수 있다. 예측 스킴은 수치 데이터에 의해 표현된 오브젝트의 종류에 의존할 수 있다. 정의에 의해, 같은 종류의 오브젝트들이 같은 방식으로 구조화되어 있다는 사실 때문에, 본 방법은 이 케이스에서 동일한 예측 스킴으로 소정 종류의 임의 오브젝트를 표현하는 수치 데이터를 압축하는데에 적합하다.
본 방법을 적용한 일례는 시간에 따른 주식(stock)의 가격인 오브젝트 (object) 에 대한 것이다. 실제 부동소수점 값들의 세트는 시계열에 걸쳐 가격의 값들을 표현할 수 있다. 어느 시간에서 주식의 가격이 다른 시간들에서의 가격으로부터 완전히 독립적이지 않다는 것은 잘 알려져 있다. 금융의 정량 분석은 예를 들면 브라운 운동 (Brownian motion) 에 기반하여 예측하는 다른 예측 스킴들을 사용한다. 동일한 예측 스킴이 다른 주식들을 위해 이용될 수도 있다. 또 다른 예로는 도시들의 온도를 표현하는 실제 부동소수점 값들의 세트들을 포함한다. 이 경우, 두 도시들 사이의 지리적 근접성은 그 온도들 사이의 의존성을 포함할 수 있다. 따라서, 도시의 온도를 표현하는 부동소수점 값은 인접한 도시들의 온도를 표현하는 부동소수점 값들로부터 예측될 수 있다. 또 다른 예로는 오브젝트에 적용된 힘의 장 (force field) 을 포함한다. 힘의 장은 그 오브젝트에게 적용된 힘이 부분적인 코히어런스를 나타낼 때 구조화된, 실제 부동소수점 값들의 세트에 의해 표현된다. 예를 들면, 일반적으로 자기장은 이러한 코히어런스를 나타내는 힘의 장을 유도한다. 아래에서 더욱 자세히 논의할 또 다른 예로는, CAD 모델의 지오메트릭 표면 (geometric surface) 이 있다. 이러한 표면은 일반적으로 서서히 변화하고, 따라서 표면의 점의 위치는 그 표면의 인접한 점들의 위치에 따라 예측될 수 있다.
본 방법은 수치 데이터를 압축하기 위해, 부동소수점 실제값들 (floating point actual values) 들의 세트의 구조 (본 구조는 부동소수점 값들에 의해 표현된 수들의 구조로부터 도출한다) 를 이용할 수 있다. 그 원리는, 예측 인코딩에서 처럼, 세트의 실제 부동소수점 값들 중의 하나를 먼저 선택하는 것이다. 이 값은 압축 방법에 의해 변형될 값이기 때문에, "타깃" 값이라고 지칭된다. 그 다음, 본 방법은 그 타깃 실제값에 관련된 부동소수점 예측값을 계산한다. 즉, 본 방법은 타깃의 예측 (prediction) 인 예측값을 계산하고, 반드시 타깃의 실제값을 계산할 필요는 없다. 계산은 세트의 다른 실제값들에 따라 수행되고, 그 타깃의 실제값을 추출한다. 예측값은 그 자체로 부동소수점 데이터 타입의 것이다.
세트가 구조화되고 예측 스킴은 이 구조에 따른 것이기 때문에, 세트의 다른 값들에 따라 수행된 예측값의 계산은, 타깃의 실제값에 상대적으로 근접한 결과를 제공한다. 이에 따라, 예측값과 타깃 실제값간의 차이는 적은 비트 상에 코딩될 수 있다. 이런 아이디어는 보통 예측 인코딩 (predictive encoding) 이 따르는 것이다.
예측 스킴은 세트의 서브세트의 선택을 포함할 수 있고, 그 서브세트의 부동소수점 값들은 예측값 계산의 기초가 될 수 있다. 서브세트는 타깃 값에 따라 선택될 수 있다. 서브세트의 값들은 타깃 부동소수점 값에 의해 표현된 수의 예측을 위해 이론상으로 관련된 수들을 표현한다. 이러한 선택을 수행하는 방법은 수치 데이터에 의해 표현된 오브젝트의 종류에 의해 제공될 수 있다.
예측값을 계산하는 것은 정수에 대한 연산들을 수행하는 것을 포함한다. 연산들이 부동소수점 값들에 대해 수행되지 않기 때문에, 안정성 문제는 존재하지 않는다. 실제로, 정규의 플랫폼들은 동일 결과를 갖는 정수 연산들 (부동소수점 값들에 대한 연산들과 대조적) 을 수행한다. 본 방법은 오로지 정수들에 대한 연산을 수행하기 때문에, 모든 정규의 플랫폼들을 통해서도 안정적이다.
정수들은 세트의 서브세트의 실제값들의 부호, 지수 및/또는 가수에 대응한다. 서브세트는 타깃 실제값의 예측값을 계산하기 위해 사용된 실제값들을 포함한다. 본 방법은, 적어도 예측을 위해 사용된 실제값들을 위해, 부호, 지수, 및/또는 가수용 예비 비트 슬롯 (bit slot) 들을 판독하고, 판독한 것을 정수로 해석한다. 해석 (interpretation) 의 임의 방법은 본 발명의 범위 내에 존재한다. 예를 들면, 본 발명은 52 비트 상에서 코딩된 가수 (mantissa) 를 64 비트 정수로 해석할 수 있다. 가수에 대응하는 정수는, 예를 들면, 처음 12 비트가 0이고 마지막 52 비트가 가수의 비트인 64 비트 정수일 수 있다. 반대로, 가수에 대응하는 정수는, 예를 들면, 마지막 12 비트가 0이고 처음 52 비트가 가수의 비트인 64 비트 정수일 수 있다. 또한, 더 긴 정수들이 사용될 수도 있다. 일반적으로, 부호, 지수, 및/또는 가수의 해석은, 예측 스킴의 다음 단계들 (예를 들면, 예측값을 계산하기 위해 수행된 연산들의 시퀀스) 과 요구되는 정확성에 의존한다.
정수들이 서브세트의 실제값들의 부호, 지수, 및/또는 가수에 대응하므로, 예측 스킴은 그 실제값들의 부동소수점 형식을 활용한다. 실제로, 연산들은, 앞서 논의한 Engelson 등의 방법에서와 같은 부동소수점 특성의 고려없이 부동소수점 값마다 표시하는 하나의 정수를 대략적으로 결정하는 대신에, 개별적으로 고려되는 부호, 지수, 및/또는 가수의 표현들에 대해 수행된다. 특히, 정수 감산이 아닌 다른 연산들이 수행될 수도 있다. 예를 들면, 부호, 지수, 및/또는 가수에 대해 수행된 정수 가산, 승산, 제산이 가능하다. 이에 따라, 예측은 정제되고 더욱 정확하다. 더욱 정확한 예측은 높은 압축률을 발생시킨다. 예측이 정제되는 방법을 나타낸 예들은 뒤에 설명되어 있다
상술한 바와 같이, 본 방법은 정수들간의 차이를 표현하는 비트 시퀀스를 저장하는 단계를 포함하고, 상기 정수들은 타깃 실제값과 예측값으로부터 도출된다. 세트가 구조적이기 때문에, 예측은 타깃 실제값에 근접한 예측값을 일반적으로 발생시킨다. 이 경우, 타깃 실제값 및 예측값으로부터 도출된 정수들 사이의 차이는 작다. 그 차이는 타깃 실제값의 사이즈보다 더 작은 사이즈의 비트 시퀀스 상에 저장될 수 있다. 따라서, 타깃 실제값을 그대로 저장하는 대신, 더 작은 사이즈의 비트 시퀀스가 저장된다. 비트 시퀀스는 타깃 실제값을 복구하는 압축해제 단계에서 사용될 수 있다. 비트 시퀀스는 정수들간에 수행된 차이를 표시하고 있기 때문에, 압축의 안정성 및 무손실 품질은 계속적으로 유지된다. 실제로, 두 정수들간의 차이는 모든 정규의 플랫폼들 상에서 정보의 손실없이 동일한 결과를 발생시킨다. 타깃 실제값 및 예측값으로부터의 정수들의 도출은 뒤에서 자세히 설명한다.
본 방법 적용의 일반적인 경우에 관한 상기 설명들이 도 1에 나타나 있다. 도 1을 참조하면, 일반적인 경우로는 예측값
Figure 112011034373129-pat00034
을 계산하는 단계 (S10) 및 비트 시퀀스
Figure 112011034373129-pat00035
를 저장하는 단계 (S20) 의 단일 적용을 포함한다. 도 1의 예에서 나타낸 바와 같이, 본 방법은 계산하는 단계 (S10) 이전에, 부동소수점 실제값
Figure 112011034373129-pat00036
의 구조화 세트 E를 제공하는 단계 (S0) 및 계산될 예측값
Figure 112011034373129-pat00037
과 관련된 세트의 타깃 실제값
Figure 112011034373129-pat00038
를 선택하는 단계 (S5) 를 포함할 수도 있다.
도 2에 예시한 바와 같이, 계산하는 단계 (S10) 및 저장하는 단계 (S20) 는 바람직하게 반복 (예를 들면, 되풀이) 될 수 있다. 각 반복 (예를 들면, 되풀이) k에서, 타깃 값
Figure 112011034373129-pat00039
는 세트 E의 새로 선택된 실제값이고, 본 방법에서 이전에 반복된 것 중의 하나의 타깃 값이 아니다. 이러한 반복은 세트 E의 순서
Figure 112011034373129-pat00040
에 따라 수행된다. 세트는 그 순서에 따라 브라우징되고 (예를 들면, 파싱), 브라우징의 각 반복 k에서, 타깃 값의 선택 (S5) 은 그 순서에 따르며, k 로 넘버링되는 값
Figure 112011034373129-pat00041
이 선택된다. 순서는 미리 결정될 수 있다. 예를 들면, 수치 데이터는 그 순서에 관한 정보를 포함할 수 있다. 다르게는, 순서는 반복을 수행하기 전의 스타트에서 선택적이고 임의적으로 결정될 수 있다. 또한, 순서는 반복 중에 동적으로 반복될 수도 있다. 이러한 방법은 통계적으로 수치 데이터의 글로벌 압축 (global compression) 을 가능하게 한다.
도 3에 예시한 바와 같이, 본 방법은 세트의 적어도 하나의 시작 실제값
Figure 112011034373129-pat00042
, 예를 들면, 하나의 값
Figure 112011034373129-pat00043
, 두개의 값
Figure 112011034373129-pat00044
, 또는 세개의 값
Figure 112011034373129-pat00045
또는 그 이상의 값을 저장할 수 있고 (S3), 계산하는 단계 (S10) 는 세트의 나머지 모든 실제값들에 대해 반복될 수 있다. 예를 들면, 하나의 시작값
Figure 112011034373129-pat00046
가 S3에서 저장되고, 세트 En 값들을 가진 경우, 계산하는 단계 (S10) 는 잔존 값들
Figure 112011034373129-pat00047
에 대해 반복될 수 있다. 다르게는, 잔존 값들의 일부는 생략 (skipping) 될 수도 있다 (한편, 이것은 세트를, 계산 단계 (S10) 가 수행된 값들로 재정의하는 것과 동등하다). 저장 단계 (S20) 자체가 계산 단계 (10) 가 수행된 모든 또는 일부 값들에 대해 저절로 수행될 수 있다. 시작값은 그대로 저장되는 (예를 들면, 압축되지 않은) 값이다. 따라서, 시작값은 계산 단계 (S10) 및 저장 단계 (S20) 에 종속된 반복 k의 타깃이 아니다. 압축해제할 경우, 뒤에서 나타낸 바와 같이, 예측은 서브세트의 실제값에 기초하여 수행될 수 있다. 따라서, 적어도 일부 값들은 압축해제의 스타트를 허용하기 위해 그대로 저장될 수 있다. 다르게는, 실제값들을 위한 첫 번째 예측은 실제값들의 저장수단(means)에 기초하여 수행될 수 있다. 다르게는, 상기 첫 번째 예측은 수치 데이터에 포함된 다른 파라미터 (parameter) 들에 따라 수행될 수도 있다.
도 4에 예시한 바와 같이, 각 반복 k에서, 계산 단계 (S10) 이후에 반복 k의 계산된 예측값
Figure 112011034373129-pat00048
을 임계값에 비교하는 단계 (S15) 가 뒤따를 수 있다. 이 경우, 뒤따르는 저장 단계에서, 저장된 것은 그 비교 결과에 의존한다. 본 방법은, 단계 S20에서, 예측값
Figure 112011034373129-pat00049
이 임계값보다 더 높을 경우, 전술한 바와 같이 반복의 타깃 실제값
Figure 112011034373129-pat00050
및 반복 k의 예측값
Figure 112011034373129-pat00051
으로부터 도출된 정수들 사이의 차이 D k 를 표시하는 비트 시퀀스 B k 를 저장한다. 또는, 본 방법은, 반복의 예측값이 임계값보다 더 낮을 경우, 단계 S20'에서, 반복의 타깃 실제값
Figure 112011034373129-pat00052
를 비압축 상태로 저장한다.
각 계산 단계 (S10) 에서, 예측값
Figure 112011034373129-pat00053
은 가능한한 타깃 실제값
Figure 112011034373129-pat00054
에 근접하도록 하는 방법으로 계산된다. 그러나, 다수의 콘텍스트 (context) 에서,
Figure 112011034373129-pat00055
Figure 112011034373129-pat00056
사이의 차이가 효율적으로 압축되기에 너무 클 가능성이 높다는 것이 선험적 (priori ) 으로 추정될 수 있다. 예측값
Figure 112011034373129-pat00057
이 주어진 임계값보다 더 작을 경우,
Figure 112011034373129-pat00058
Figure 112011034373129-pat00059
간의 차이는
Figure 112011034373129-pat00060
보다 더 클 위험이 있고, 이에 따라
Figure 112011034373129-pat00061
Figure 112011034373129-pat00062
을 그대로 코딩하기 위해 사용된 비트들의 수보다 더 큰
Figure 112011034373129-pat00063
로부터 도출된 정수들 사이의 차이를 표시하는 비트 시퀀스 B k 를 발생시킨다. 예를 들면, 예측값
Figure 112011034373129-pat00064
이 0에 근접할 경우, 실제의
Figure 112011034373129-pat00065
는 예측값
Figure 112011034373129-pat00066
과 다른 부호일 위험이 있으며, 이 경우 비트 시퀀스 B k 가 너무 길다. 이것은 비트 시퀀스들 B k 의 예들이 제공될 경우 더욱 명확히 나타날 것이다. 개연성이 있고 원하지 않는 인코딩 공간의 증가를 회피하기 위해, 예측이 임계값 숫자
Figure 112011034373129-pat00067
그 자체보다 더 작은 경우, 어떠한 압축 시도도 이루어지지 않는다. 또한, 비트 시퀀스 B k 가 결정되지 않으므로, 전체 프로세스 속도는 증가한다.
임계값은 예측값
Figure 112011034373129-pat00068
의 지수 (exponent) 의 값에 대한 임계값일 수 있다. 즉,
Figure 112011034373129-pat00069
의 지수는 임계값과 비교된다. 이러한 임계값은 비교 단계 (S15) 의 신속함 (quickness) 을 보장한다. 이러한 임계값은 미리 결정된 것일 수 있고, 적용(application)의 콘텍스트 (context) 에 의존하는 것일 수 있다. 다르게는, 임계값은 수치 데이터에 따라 결정될 수 있고, 압축해제 동안 재사용하기 위해 저장될 수도 있다. 임계값은 예측값
Figure 112011034373129-pat00070
을 계산 (S10) 하기 위해 사용된 산술 연산의 반올림 정밀도 (rounding precision) 를 고려할 수 있다. 또한, 임계값은 이전에 계산된 예측값들
Figure 112011034373129-pat00071
및/또는 관련된 실제값들
Figure 112011034373129-pat00072
에 따라 동적으로 결정될 수도 있다. 통상적으로, 반복 k의 임계값은
Figure 112011034373129-pat00073
또는
Figure 112011034373129-pat00074
에 의존하지 않는다. 임계값과의 비교는, 그것의 예측값들이 불량한 압축률을 발생시킬 개연성이 높은 실제값들을 처리함으로써 압축이 더욱 효율적이게 한다.
세트의 적어도 하나의 시작 실제값을 저장하는 단계 (S3) 는 도 4에 나타내지 않았지만, 도 3에서와 같이 부동소수점 실제값들
Figure 112011034373129-pat00075
의 구조화된 세트 E의 제공하는 단계 (S0) 후에, 본 방법에서 포함될 수 있다.
세트의 실제값들은 지오메트릭 오브젝트와 연관된 좌표들, 예를 들면, 지오메트릭 오브젝트의 컨트롤 포인트 (control point) 들을 조정하는 좌표들일 수 있다. 지오메트릭 오브젝트들의 부동소수점 좌표들을 포함하는 수치 데이터는 CAD 파일의 큰 크기를 보상한다. 이와 같이, 본 방법은 CAD 파일의 압축에 특히 적합하다. 일례에서, 지오메트릭 오브젝트는 NURBS 표면이다. 다른 예들에서, 지오메트릭 오브젝트는 곡선, 예를 들면 NURBS 곡선 또는 다른 타입의 곡선 또는 표면이다. 본 방법은 일반적으로 임의의 지오메트릭 오브젝트에 적용된다. 이하에서는, 명확화를 위해 NURBS를 참조하여 본 방법의 예들을 상세하게 설명한다. 그러나, 이하의 설명들은 본 방법의 다른 사용에도 적용되는 것임을 이해해야만 한다.
NURBS 표면은, CAD에서 광범위하게 사용되는, 3D 공간의 값들을 가지고 2D 공간에서 정의된 표면이다. 즉,
Figure 112011034373129-pat00076
. NURBS 표면은 두 개의 매듭 벡터 (knot vector) 들과 컨트롤 포인트들의 2차원 배열, 및 경우에 따라 사용된 CAD 소프트웨어에 의존하는 다른 데이터로 표현된다. 통상적으로, 매듭 벡터들은 부동소수점 값들의 배열이다. 컨트롤 포인트들의 배열은 순서화되어 있을 수 있다. 각각의 컨트롤 포인트는 x, y, z 좌표를 가진 3D 포인트이다. 배열의 위치는 0 ≤ i < M 이고 0 ≤ j < N 인 두 개의 인덱스 ij로 정의된다. 그레빌 파라미터 (Greville parameter) 로 알려진 파라미터의 세트는, i 또는 j 인덱스의 각 값이 그레빌 파라미터
Figure 112011034373129-pat00077
에 관련될 수 있도록 하기 위해 매듭 벡터들로부터 계산될 수 있다. 통상적으로, 그레빌 파라미터들은 매듭 벡터 연속값들 중의 고정된 수의 한쌍의 수단(means)이다. "차수 (degree) "로 호칭되는, 이 고정된 수는 매듭 벡터의 각 차원
Figure 112011034373129-pat00078
에 대해 상이할 수 있다. 일반적으로, 한 쌍의 차수들 (d,g) 은 NURBS 표면을 표현하는 데이터에 속한다. 더욱 구체적으로, Gerald Farin에 의한 Morgan kaufmann이 출판한 논문 "Curves and surfaces for Computer Aided Geometric Design" (2001) 은 NURBS 표면들의 기초를 제공한다.
도 5는 M=5 이고 N=4인 NURBS 표면 S의 일례를 제공한다. 좌표 x, y, z의 컨트롤 포인트들
Figure 112011034373129-pat00079
은 그리드 (grid) (55) 의 교차점들이다. 상술한 바와 같이, 각 컨트롤 포인트들 P i ,j 을 위한,
Figure 112011034373129-pat00080
Figure 112011034373129-pat00081
으로 표현된 그레빌 파라미터들의 쌍은 위에서 이미 설명한 바와 같이 계산될 수 있다. 예를 들면, 표면의 차수 쌍이 (d=2, g=4) 이고 표면의 매듭 벡터들이
Figure 112011034373129-pat00082
Figure 112011034373129-pat00083
인 경우, 통상적으로
Figure 112011034373129-pat00084
Figure 112011034373129-pat00085
이다. 한편, 다른 공식들이 사용될 수도 있다.
NURBS의 컨트롤 포인트들의 각각은 x, y, 및 z 좌표를 표현하는 3개의 부동소수점 값들로 정의되어 있다. 배열의 차원이 M*N인 경우, NURBS 표면의 컨트롤 포인트들을 저장하기 위해 요청되는 저장 크기는 압축없이 3*M*N*64 비트이다. 본 출원인은 일부 산업용 모델들에서, 그 모델들의 NURBS 표면의 컨트롤 포인트들의 좌표를 표현하는 부동소수점 값들의 크기가 전체 모델 사이즈의 50% 이상을 차지한다는 것을 알게 되었다. 따라서, 본 방법은 NURBS 표면들을 포함하는 CAD 파일의 압축을 위해 특히 효율적이다.
다음으로, 도 6 내지 도 12를 참조하여 수치 데이터를 압축하기 위한 본 방법 적용의 일례를 설명한다. 여기서, 세트의 실제값들은 지오메트릭 오브젝트와 관련된 좌표들이고, 그 세트의 순서에 따라 계산 및 저장 단계가 반복된다. 본 예에서 실제값들은 NURBS 표면의 컨트롤 포인트들의 좌표들이다. 표면이 나타나 있지 않지만 도 5의 표면과 유사하다. 도 6 내지 도 12는 도 5의 그리드 (55) 와 유사한 그리드의 투영 (60) 을 나타낸다. 이하에서는, 투영 (60) 을 "그리드"로 지칭한다. 그리드 (60) 의 각 교차점은 표면의 각 컨트롤 포인트 P i ,j = (x i ,j , y i ,j , z i ,j) 를 나타내고, 여기서 그리드의 수직선은 왼편에서 오른편으로 커지는 인덱스 i를 나타내고, 그리드의 수평선은 아래에서 위로 커지는 인덱스 j를 나타낸다.
본 예에서, 수치 데이터는 매듭 벡터들 (knot vectors) 을 포함한다. 본 방법은 매듭 벡터들을 그대로 (예를 들면, 임의의 특별한 압축 스킴없이) 저장하는 사전적 단계를 포함한다. 상술한 바와 같이, 압축 과정은 세트의 순서에 따라 부동소수점 실제값들의 세트를 브라우징 (browsing) 하는 것을 포함한다. 수치 데이터는 컨트롤 포인트들의 인덱스 (i, j) 를 제공한다. 상기 인덱스는 세트의 순서를 정의하기 위해 사용될 수 있다. 예를 들면, 0 ≤ i < M 이고 0 ≤ j < N 인 경우, 컨트롤 포인트들간의 순서는
Figure 112011034373129-pat00086
Figure 112011034373129-pat00087
일 수 있다. 즉, 인덱스 i 및 j는 그들의 각각의 아래쪽 경계로부터 그들의 각각의 위쪽 경계로 커지고, ij보다 우선순위를 갖는다. 이에 따라, 부동소수점 실제값들의 세트는 다음의 방법, 즉
Figure 112011034373129-pat00088
로 순서화될 수 있다. 이 경우, 세트의 브라우징은 다음번의 컨트롤 포인트를 브라우징하기 전에 컨트롤 포인트의 세 좌표를 브라우징하는 것을 유도할 것이다. 이것은 예측값을 계산하는 단계에서의 세 좌표 사용을 가능하게 한다. 다르게는, 세트는 다음과 같이, 즉
Figure 112011034373129-pat00089
으로 순서화될 수 있다. 이 경우, 세트의 브라우징은 모든 x좌표, 모든 y좌표, 모든 z좌표를 브라우징하는 것을 유도할 것이다. 아래에서 설명된 원리들은 택일적인 두 솔루션의 임의 실행을 가능하게 한다.
도 6에 나타낸 바와 같이, 본 예의 방법은, 임의의 특별한 압축 스킴 없이, 각각의 인덱스 (0,0), (1,0) 및 (0,1) 인 세개의 컨트롤 포인트들 P 0 ,0 , P 1 ,0 , P 0 ,1 을 저장하는 단계 (S3) 를 포함한다. 실제에 있어서는, 각 좌표 x,y,j를 위해, 세트 ((x 0,0 , x 1,0 , x 0,1 ) , ( y 0 ,0 , y 1 ,0 , y 0 ,1 ) , ( z 0 ,0 , z 1 ,0 , z 0 ,1 )) 의 세 개의 시작 실제값들이 그대로 저장된다 (총 9개의 시작 실제값). 다음에서, 부동소수점 실제값들은 그들이 표시하는 좌표 또는 그들이 표시하는 좌표의 컨트롤 포인트에 의해 무관적으로 참조된다.
그리드는 아래에서 위로 그리고 왼편에서 오른편으로 파싱 (parsing) 된다. 단계 S3에서 이미 저장된 포인트들은 스키핑 (skipping) 된다. 도 2 내지 도 4 중의 하나를 참조하여 설명한 방법은 컨트롤 포인트들의 나머지 부분에도 적용된다. 도 7은 본 방법의 4개의 연속적인 반복 (k=11, k=12, k=13k=14) 을 나타낸다. 각 반복 k (여기서, k는 파싱의 인덱스 i,j 및 저장된 시작 값들의 수 (본 예에서는 3*3) 에 의해 결정됨) 에서, 타깃 값
Figure 112011034373129-pat00090
에 관련된 예측값
Figure 112011034373129-pat00091
을 계산 (S10) 하기 위해 사용된 본 예의 예측 스킴은, 타깃 (아래의 타깃으로 이해된) 에 의해 표시된 컨트롤 포인트 P t =P i _t , j_t 의 인덱스 (i_t,j_t) 에 의존하는 계산들을 포함한다. 이 인덱스들은 상술한 바와 같이 반복 k의 랭크 (rank) 를 가지고 링크 (link) 된다 (따라서 k는 k (i_t,j_t) 로 기입될 수 있다). 이 인덱스들에 따라, 본 방법은 이전의 반복에서 저장된 컨트롤 포인트들의 서브세트를 결정한다. 본 방법은 다항식
Figure 112011034373129-pat00092
를 결정하고, 서브세트의 각 컨트롤 포인트 P i ,j 에 대해
Figure 112011034373129-pat00093
로 놓는다. 이렇게 결정된 다항식 Q의 차수에 대해 승인된 최대 수는 서브세트의 컨트롤 포인트들의 수에 관련된다. Q의 계수들은 P i ,j 의 값과 파라미터
Figure 112011034373129-pat00094
에 따라 결정된다. 파라미터
Figure 112011034373129-pat00095
는 위에서 정의한 그레빌 파라미터일 수 있다. 타깃 컨트롤 포인트를 위한 예측값은
Figure 112011034373129-pat00096
로 계산될 수 있다. 이 예측은 3 좌표 x,y,z에 대해 독립적으로 정의된다. 이렇게 본 공식은 세 좌표들에 적용된다 (예를 들면, QP는 3차원의 벡터이다). 상기 스킴은 다항식 보간기법 (polynomial interpolation) 에 기반한다. 다른 스킴들이 실행될 수도 있다. 예를 들면, 회귀분석법 (regressions) 또는 다른 타입의 보간기법들이 이용될 수 있다.
도 8 내지 도 12는 다른 상황들에서의 타깃 P t 의 인덱스 (i_t,j_t) 값에 따른 Q의 정의 및 서브세트의 결정의 일례를 나타낸다. 도 8 내지 도 12의 각각의 가장 왼쪽 프레임은 그리드 (60) 상에 그 상황에 해당하는 모든 다른 타깃 포인트들 P t 을 나타낸다. 가장 오른쪽 프레임은 그 상황에 해당하는 타깃 포인트 P t 의 일례뿐만 아니라, 본 예의 경우에서 앞서 반영된 예측 스킴에 사용된 다항식
Figure 112011034373129-pat00097
을 위한 일반 공식 (88) 도 함께 나타내고 있다. 또한, 가장 오른쪽 프레임은 본 예의 경우에서
Figure 112011034373129-pat00098
의 정밀 공식 (exact formula) (92) 을 제공하거나, 또는
Figure 112011034373129-pat00099
의 계수를 유도하고 또한 본 예의 경우에서의 정밀 공식을 유도하는 연립방정식(90)을 제공한다.
도 8 내지 도 12의 예에서, 서브세트의 실제값들은, 좌표가 타깃 실제값에 의해 표시된 지오메트릭 오브젝트의 다른 컨트롤 포인트와 인접한, 지오메트릭 오브젝트의 컨트롤 포인트들의 좌표들이다. 즉, 타깃 컨트롤 포이트 P t 의 예측값
Figure 112011034373129-pat00100
은 그리드 상의 타깃에 인접하고, 그 이전에 파싱된 컨트롤 포인트들에 따라 수행된다. 두 포인트들 P i1 , j1 P i2 , j2 는 만일
Figure 112011034373129-pat00101
Figure 112011034373129-pat00102
(예를 들면, 그리드 (60) 상에서의 P i1 , j1 P i2 , j2 사이 그래프 거리가 s보다 작음) 이라면, 그리드 상에서 인접한 것이다 (여기서, s=1, 또는 s=3 이고, 더욱 바람직하게 s=2). 타깃을 예측하기 위해 인접 포인트들을 이용하는 것은, 그 예측이 정확하기 때문에 국부적으로 서서히 변화하는 것을 나타내는 표면에 대해 본 방법을 적용할 경우 양호한 압축률을 가능하게 한다. 두 포인트들이 인접하는지 여부와 관계없이 그리드 상의 두 포인트들간에 허용되는 거리를 제한하는 것은, 압축을 위해 요구되는 시간을 감축시키는 반면 예측의 정확성을 반드시 감축시키는 것은 아니다. 물론, 타깃을 예측할 때, 그 타깃으로부터 멀리 떨어진 컨트롤 포인트들은 반드시 도움이 되는 것은 아니다.
도 8은 (i_t,j_t) = (2,0) 또는 (0,2) 일 경우, 예측값
Figure 112011034373129-pat00103
을 계산하는 단계 (S10) 가 수행되는 방식의 원리를 나타낸다. 이 상황에 해당하는 두개의 타깃 포인트들 P t 은 각각 그리드 (60) 의 아래쪽 경계 (82) 와 가장 왼쪽 경계 (84) 에 위치되어 있다. 일반적으로, 표면의 경계들은 어떤 규칙성을 나타낸다. 따라서, 경계 상의 타깃 포인트들에 대한 정확한 예측은 같은 경계상의 컨트롤 포인트들에 따라 수행된 것일 수 있다. 예를 들면, P 2 ,0 에 대한 예측
Figure 112011034373129-pat00104
는 서브세트가 P 0 ,0 P 1 ,0 으로 이루어진 상기 스킴을 이용하여 수행될 수 있다. 이것은 정밀 공식 (92)
Figure 112011034373129-pat00105
Figure 112011034373129-pat00106
Figure 112011034373129-pat00107
를 유도한다. 이것은 도 8의 가장 오른쪽 프레임에 표시되어 있다. P 0 ,2 P 0 ,0 P 0 ,1 을 가지고 유사하게 예측될 수 있다. 그것은
Figure 112011034373129-pat00108
을 계산하기 위해 유사하게 적용될 수 있다.
도 9 내지 도 12는 다른 방식으로
Figure 112011034373129-pat00109
를 계산하는 것이 수행된 다른 상황들을 유사하게 나타내고 있다. 도 9는 (i_t=0 및 j_t≥3) 또는 (j_t=0 및 j_t≥3) 인 상황을 나타낸다. Q는 (P 0 ,j_t-1 , P 0 ,j_t-2 , 및 P 0 ,j_t-3 ) 또는 (P i _t-1,0 , P i_t-2,0 , 및 P i _t-3,0 )에 따라 각각 결정된다. 도 10은 i_t=j_t=0 이고 Q는 P 0 ,0 , P 0,1 P 1 ,0 에 따라 결정된 상황을 나타낸다. 도 11은 (i_t=1 및 j_t≥2) 또는 (j_t=1 및 j_t≥2) 인 상황을 나타낸다. Q는 (P 0 ,j_t , P 0 ,j_t-1 , P 0 ,j_t-2, P 1 ,j_t-1 , 및 P 1,j_t-2 ) 또는 (P i _t,0 , P i _t-1,0 , P i _t-2,0 , P i _t-1,1 P i _t-2,1 ) 에 따라 각각 결정된다. 도 11은 i_t≥2 및 j_t≥2인 일반적 상황을 나타낸다. Q는 P i _t,j_t-1 , P i _t,j_t-2 , P i_t-1,j_t , P i _t-2,j_t , P i _t-1,j_t-1 , P i _t-2,j_t-1 , P i _t-1,j_t-2 , P i _t-2,j_t-2 에 따라 결정된다.
본 예에서, 예측은 세 개의 좌표 x,y,z에 대해 독립적으로 계산된다. 그것은 AX=B 형태인 선형 시스템 (90) 의 해를 구하는 것을 포함하고, 여기서 A는 정방 행렬, X는 다항식 Q의 미지의 계수들 (unknown coefficients) 을 포함하는 벡터이며, B는 벡터이다. 잘 알고 있는 바와 같이, 예측을 계산하는 것은 네 개의 산술 연산 (가산, 감산, 승산, 제산) 만을 사용하여 행해질 수 있다. 물론, 앞에서 설명된 바와 같이, 그레빌 파라미터가 네 개의 산술 연산만을 사용하는 잘 알려진 기술을 이용하여 매듭 벡터들로부터 계산될 수 있다. 결과적으로 A의 계수들은 승산만을 사용하는 그레빌 파라미터들로부터 계산될 수 있다. 벡터 B의 계수들은 이전의 반복 (iteration) 들에서 이미 저장되었던 컨트롤 포인트들의 좌표들이므로, 본 계산을 위해 그 계수들을 획득하기 위한 계산은 불필요하다. AX=B 타입 등식의 해를 구하는 것은 네 개의 산술 연산만을 포함하는 잘 알려진 기술들, 예를 들면 가우스 피벗 (Gauss pivot) 을 사용하여 행해질 수 있다. 이것은, 다항식 Q의 계수인, X의 계수를 산출한다. 그 다음,
Figure 112011034373129-pat00110
로서 예측을 계산하는 것은 4개의 산술 연산만을 사용하여 행해질 수 있다.
일반적인 경우, 예측값은 다른 컨트롤 포인트에 관련된 적어도 하나의 파라미터, 서브세트의 실제값들, 및 상기 다른 컨트롤 포인트에 인접하고 있는 각 컨트롤 포인트에 관련된 적어도 하나의 파라미터에 따라 결정된다. 각각의 인접 컨트롤 포인트는 그것에 관련된 적어도 하나의 파라미터를 가진다. 상기 예에서, 예측값은 타깃 컨트롤 포인트에 관련된 두개의 파라미터들 (그레빌 파라미터들), 서브세트의 실제값들 (인접하는 컨트롤 포인트들의 좌표), 각 인접하는 컨트롤 포인트와 관련된 두개의 파라미터들 (그레빌 파라미터들) 에 따라 결정된다. 상기 예에서, 예측 함수는, 도 8 내지 도 12를 참조하여 상세히 나타낸 특정 예측 스킴으로부터 기인한 선행의 파라미터들의 유리함수 (rational function) 이다. 이 스킴은 다항식에 의해 국부적으로 근사화될 수 있는 완만한 표면의 경우에 정확한 예측을 위해 적합하다. 한편, 산술 연산만을 포함하고, 서브세트의 컨트롤 포인트들에 따른 결정을 하거나 예측을 위한 평가를 하는 다른 함수들이, 여타의 예측 스킴들, 예를 들면 다른 종류의 NURBS용 예측 스킴으로부터 도출될 수 있다. 예측 스킴은 NURBS의 종류를 결정하는 사전 단계를 일반적으로 더 포함할 수 있고 (예를 들면, 이 결과로서 저장된 정보를 통해), 그에 따른 상이한 연산들을 적용할 수 있다.
일반적으로 적어도 하나의 파라미터는 지오메트릭 오브젝트의 각각의 매듭 벡터에 따라 결정될 수 있다. 이미 설명한 바와 같이, 파라미터는 상기 예에서와 같은 그레빌 파라미터일 수 있다. 본 예의 다항식 접근 (polynomial approach) 에서, 그레빌 파라미터의 사용은 표면의 상세들 (specifications) 을 완전히 이용하는 것에 의해, 더욱 정확한 예측을 가능하게 한다.
다시 본 예로 돌아가서, 계산 단계 (S10) 는 단일 연산에서 간섭 파라미터들의 값에 대한 유리 함수의 평가에 의해 수행될 수 있고, 그것은 더 많은 연산들, 예를 들면 어떤 간섭 파라미터들의 값으로부터 다항식 Q의 계수를 결정하는 첫번째 연산들 및 간섭 파라미터의 값에서 다항식을 평가하는 하나의 연산에서 수행될 수 있다. 이것은 본 방법의 실행에 의존한다.
예측값을 계산하는 단계가 세트 값의 부동소수점 성질과, 그들이 사용되는 경우, 매듭 벡터들 값의 부동소수점 성질을 고려함이 없이 설명되었다. 일반적으로, 예측 스킴은 산술 연산들을 포함한다. 상기 설명에서는 상이한 값들을, 상기 연산들이 수행된 실수들에 맞추었다. 부동소수점 연산은 이 수들에 대한 연산을 실제로 수행하기 위해 이용될 수 있다. 한편, 이것은 앞서 논의한 안정성의 문제를 포함하고 있다.
다른 플랫폼들에 걸쳐서도 압축 및 압축해제의 안정성을 획득하기 위해, 본 방법은 정수 산술 연산들을 가진 부동소수점 산술 연산들의 에뮬레이션 (emulation) 을 사용할 수 있다. 일반적으로, 세트의 타깃 실제값에 관련된 부동소수점 예측값을 계산하는 것은 그 세트의 서브세트의 실제값들에 관한 부호, 지수 및/또는 가수에 대응하는 정수의 연산을 수행하는 것을 포함할 수 있고, 여기서 상기 연산은 부동소수점 산술 연산을 에뮬레이팅 (emulating) 한다.
Hauser에 의한 개시물 "SoftFloat" (1998) 및 C. Bertin 등에 의한 논문 "A Floating-Point Library for Integer Processors" (2004) 는 64 비트 부동소수점 수들의 에뮬레이션을 설명하고 있다. 이 개시물들에서 중대한 요구사항은 표준 [IEEE 754-1985]의 상세를 정확하게 에뮬레이팅하는 것이다. 이것은 느린 알고리즘을 초래하는데, 특히 몇몇의 반복을 필요로 하는 제산 연산에 대한 느린 알고리즘을 초래한다. 본 방법은 이러한 요구를 갖지 않으며, 따라서 적은 비용의 알고리즘을 설계하는 것이 가능하다.
Dave Astle과 Dave Durnil에 의한 텍스트북인 "OpenGL ES 1.0 Game Development"의 chaper 4 "Fixed Point for Math Primer" (2004) 는 32 비트 정수를 이용한 부동소수점 값들의 에뮬레이션을 설명하고 있다. 제산 연산을 위한 알고리즘은 연산들이 에뮬레이팅되는 부동소수점 값들 사이즈 상의 플랫폼에 대해 너무 길 수 있는 중개 정수 (intermediary integer) 를 사용한다.
예측값을 계산하기 위해, 본 발명의 방법은 입력으로서 부동소수점 값들을 취하는 산술 연산들의 시퀀스를 수행할 수 있다. 본 방법은 연산들의 이러한 시퀀스 결과가 상이한 플랫폼들 상에서 서로 다를 수 있기 때문에, 부동소수점 산술 연산자의 사용을 회피할 수 있다. 본 방법은 이들 산술 연산들에 대한 정수 기반 에뮬레이션을 사용한다. 다음으로는 64 비트 부동소수점 값들에 대한 4개의 산술 연산들 (가산, 감산, 승산, 제산) 이 64 비트 정수의 연산만을 사용하여 에뮬레이팅되는 방법의 일례를 제공한다. 본 방법에 의해 제공되는 에뮬레이션은, 예측값을 계산하는 단계를 위한 연산들이 부동소수점 값들의 부호, 지수 및/또는 가수에 대응하는 정수 상에서 수행되기 때문에 고속이다. [IEEE 754-1985]의 표준 또는 본 방법에 사용된 부동소수점 값들의 임의 다른 표준의 여타 요구사항들은 무시될 수 있다.
이하에서 제공된 에뮬레이션은 CAD 소프트웨어를 구동하기 위해 사용되는 대부분의 플랫폼들을 위한 케이스인, 64 비트 정수를 지원하는 모든 플랫폼들 상에서 실행될 수 있다. 128 비트 정수를 지원하는 플랫폼 상에서만 실행될 수 있는 에뮬레이션은 그 플랫폼들이 범용으로 이용될 수 없기 때문에 수요가 없다. 동일한 원리들이 64 비트 정수를 지원하는 것이 아닌 32 비트 정수를 지원하는 플랫폼의 32 비트 부동소수점 수 상에서 연산들의 에뮬레이션을 실행하기 위해 적용될 수 있다는 것을 명심해야 한다.
Figure 112011034373129-pat00111
를 [IEEE-754] 표준에서 64 비트 부동소수점 값 (예측값을 계산하는 단계에서 사용된 임의 값) 으로 놓는다. 이미 설명한 바와 같이, 다음의 요소, 즉 부호 s (1 비트), 지수 e (11 비트), 및 가수 m (52 비트) 로
Figure 112011034373129-pat00112
를 기입하는 것이 가능하다.
부동소수점 값
Figure 112011034373129-pat00113
A = (S, E, M) 이고, 부호 S (부호없는 64 비트 정수), 지수 E (부호있는 64 비트 정수), 및 지수 M (부호없는 64 비트 정수) 이 되도록 3개의 64 비트 정수 세트에 의해 표시된, 정수 기반 포맷 (이하에서는 "에뮬레이션 포맷"이라고도 호칭함) 값 A에 연관될 수 있다. 값 A를 표시하는 데이터는 예를 들면, S,E 또는 M을 각각 표시하는 세 개의 정수 배열일 수 있다. 이러한 데이터는 예측 목적으로 생성될 수 있다.
이 포맷들에서 각각의 수는 (수학적 의미에서) 실수의 값을 표현한다. 이 값들에 대해 다음의 노테이션 (notation) 들을 취한다.
Figure 112011034373129-pat00114
다음으로, 하나의 포맷 내의 값을 다른 포맷의 연관값으로 변환하는 방법에 관한 규칙을 제공한다.
Figure 112011034373129-pat00115
가 [IEEE-754] 포맷에서 정규화된 값인 경우,
Figure 112011034373129-pat00116
이고 수의 값
Figure 112011034373129-pat00117
는:
Figure 112011034373129-pat00118
이다.
Figure 112011034373129-pat00119
를 정수 기반 포맷으로 변환한 결과는 A = (S, E, M) 이고, 여기서,
Figure 112011034373129-pat00120
이다.
실수 값은 다음과 같이 정의될 수 있다.
Figure 112011034373129-pat00121
에뮬레이션 포맷으로부터 [IEEE-754] 포맷으로의 변환은 직선적이다 (Mm으로 변환하기 위해, m의 11 최소 유효 비트를 무시한다).
Figure 112011034373129-pat00122
가 0이거나 비정규화된 수 (예를 들면, e=0) 인 경우, 정수 기반 포맷으로 변환하기 위해 다음의 규칙들이 적용될 수 있다.
Figure 112011034373129-pat00123
즉, 모두 0이거나 비정규화된 수는 0으로 변환된다. [IEEE-754] 포맷으로의 변환은 직선적이다.
Figure 112011034373129-pat00124
가 [IEEE-754] 포맷에서 무효 (invalid) 의 수인 경우 (예를 들면, e=211-1), 에뮬레이션 포맷으로 변환하기 위해, 다음과 같이 설정한다.
Figure 112011034373129-pat00125
이렇게 부동소수점 값들을 에뮬레이션 포맷으로 변환하는 것에 의해서, 이용된 연산자는 정수 가산, 감산, 승산 및/또는 제산 및/또는 비트 시프트 및/또는 리딩 제로 카운트 (leading zero count) 를 포함하는 비트 연산자 (bitwise operations) 를 포함할 수 있다. 이러한 연산자는 안정성을 보장하고, 예측값을 계산하기 위해 사용될 수 있다.
일반적으로, 부동소수점 값들에 대한 산술 연산들의 시퀀스를 수행하기 위해, 그 값들은 먼저 정수 기반 포맷, 예를 들면 상술한 에뮬레이션 포맷 내에서 등가물로 변환될 수 있다. 본 방법은 이들 등가의 수에 대한 산술 연산들의 시퀀스를 수행한다. 다음에서, 정수 기반 포맷에서 표현된 두 개의 오퍼랜드 A 및 B에 대한 네 개의 산술 연산을 수행하는 방식에 관한 일례가 제공된다. 이러한 산술 연산들의 요구사항을 설명하도록 한다. 다음의 노테이션을 가진 임의의 네 연산자를 고려하자.
Figure 112011034373129-pat00126
[여기서
Figure 112011034373129-pat00127
는 임의의 +-*/일 수 있음]
다음의 가설을 고려해 보자.
Figure 112011034373129-pat00128
Figure 112011034373129-pat00129
Figure 112011034373129-pat00130
의 값
Figure 112011034373129-pat00131
Figure 112011034373129-pat00132
의 값
Figure 112011034373129-pat00133
는 실수 상에서의 연산 결과
우리는 다음을 계산하기를 원한다.
Figure 112011034373129-pat00134
이를 위해,
Figure 112011034373129-pat00135
Figure 112011034373129-pat00136
Figure 112011034373129-pat00137
의 값
목표는 64 비트 정수에 대한 산술 연산들 (오버 플로우 없이) 및 산술적 비트단위 시프트들만을 사용함으로써 (S C , E C , M C ) 를 계산한 것일 수 있다 (앞서 설명한 바와 같이, 연산들이 모든 플랫폼을 통해서 안정적이지 않기 때문에, 본 방법은 부동소수점 값들에 대한 연산을 회피하는 것임). 이 요구사항들은 모든 연산자 (+,-,*,/) 에 대해 동일하다. 설명을 위해, 다음의 노테이션들이 채택될 것이고, 여기서 M은 64 비트 정수이다.
Figure 112011034373129-pat00138
정수 M의 n 비트 왼쪽 시프트
Figure 112011034373129-pat00139
정수 M의 n 비트 오른쪽 시프트
Figure 112011034373129-pat00140
M의 리딩 제로 카운트 (즉, M의 왼편 상의 연속적인 0의 개수)
Figure 112011034373129-pat00141
Figure 112011034373129-pat00142
M의 32 상위 비트가 0으로 설정됨
다음에서, 가산을 위한 규칙들이 제공된다. 가산은 교환가능하므로, 우리는
Figure 112011034373129-pat00143
를 가정할 수 있다.
AB가 동일한 부호를 갖는다면, 다음을 가진다.
Figure 112011034373129-pat00144
오브젝트는 M Exact 의 근사값으로서 정수 연산 (integer arithmetic) 과 비트단위 시프트 (bitwise shift) 만을 이용하여 계산될 수 있는 64 비트 정수 M이고, M에 대응하는 실수
Figure 112011034373129-pat00145
Figure 112011034373129-pat00146
Exact 로부터 너무 멀지 않다는 것을 확보한다 (예를 들면,
Figure 112011034373129-pat00147
를 확보).
Figure 112011034373129-pat00148
는 편리하다. 이러한 M의 계산이 오버플로우를 발생시키지 않는다는 것과 MM Exact 의 충분히 양호한 근사값, 예를 들면,
Figure 112011034373129-pat00149
이라는 것을 확인하는 것은 용이하다.
본 방법은 다음과 같이 C를 계산할 수 있다.
Figure 112011034373129-pat00150
AB가 다른 부호를 갖는다면, 다음을 가진다.
Figure 112011034373129-pat00151
이와 유사한 접근이
Figure 112011034373129-pat00152
및 다음을 유도한다.
Figure 112011034373129-pat00153
두 오퍼랜드 사이의 감산을 계산하기 위해, 본 방법은 위에서 정의한 가산으로서 오퍼랜드 A와 (-B) 상에 가산을 수행한다
승산에 관해, 다음을 가질 수 있다.
Figure 112011034373129-pat00154
여기서,
Figure 112011034373129-pat00155
Figure 112011034373129-pat00156
를 확인하는 것은 용이하다.
우리는 M Exact 의 근사값이며 정수 연산과 비트단위 이동만을 이용하여 계산될 수 있는 64 비트 정수 M을 정의하기를 원한다. M Exact 을 다음과 같이 기입한다.
Figure 112011034373129-pat00157
M을 다음과 같이 계산한다.
Figure 112011034373129-pat00158
모든 적 (product) 들은 그들의 32 최대 유효 비트를 널 (null) 로 설정하는 오퍼랜드를 갖기 때문에, 위의 공식에서 연산들은 64 비트 정수 산술을 사용하여 오버플로우를 발생시킴 없이 수행될 수 있다. 또한, 이 적 (product) 들의 합이 오버플로우 없는 64 비트 정수에 적합하다는 것을 확인하는 것이 용이한데, 그것은 다음을 가지기 때문이다.
Figure 112011034373129-pat00159
따라서
Figure 112011034373129-pat00160
MM Exact 의 충분히 양호한 근사값이라는 것을 확인하는 것은 용이하다.
Figure 112011034373129-pat00161
최종적으로 C를 다음과 같이 정의한다.
Figure 112011034373129-pat00162
그리고,
Figure 112011034373129-pat00163
을 확인하는 것은 용이하다.
다음은 제산을 위한 규칙들을 제공한다. 제산은 실수 (real number) 들에 대해 정의되고 다음과 같이 표기될 수 있다.
Figure 112011034373129-pat00164
또는
Figure 112011034373129-pat00165
여기서
Figure 112011034373129-pat00166
또한, 제산은 64 비트 부호없는 정수로 정의될 수도 있다. 그것은 다음과 같이 표기될 수 있다.
Figure 112011034373129-pat00167
(여기서, A, B, Q, R은 부호없는 64 비트 정수이고, Q는 몫이고 RB에 의해 A가 나누어진 나머지이다). 또한 다음을 가진다.
Figure 112011034373129-pat00168
여기서
Figure 112011034373129-pat00169
다음을 쉽게 확인할 수 있다.
Figure 112011034373129-pat00170
본 목적은 M Exact 의 근사값이며 정수 연산과 비트단위 시프트만을 이용하여 계산될 수 있는 64 비트 정수 M을 정의하는 것이다. M Exact 를 다음과 같이 기입한다.
Figure 112011034373129-pat00171
여기서
Figure 112011034373129-pat00172
그리고
Figure 112011034373129-pat00173
Figure 112011034373129-pat00174
여기서
Figure 112011034373129-pat00175
다음과 같이 표현할 수 있다.
Figure 112011034373129-pat00176
여기서
Figure 112011034373129-pat00177
그리고
Figure 112011034373129-pat00178
Figure 112011034373129-pat00179
최종적으로 M을 다음과 같이 계산할 수 있다.
Figure 112011034373129-pat00180
위의 공식에서 연산들이 64 비트 정수 연산을 이용하여 오버플로우 없이 수행될 수 있다는 것을 확인할 수 있다.
MM Exact 의 충분히 양호한 근사값이라는 것을 확인하는 것은 용이하다.
Figure 112011034373129-pat00181
최종적으로 C를 다음과 같이 정의한다.
Figure 112011034373129-pat00182
그리고 다음을 확인하는 것은 용이하다.
Figure 112011034373129-pat00183
상기 설명들은 정수들의 연산들에 의해 부동소수점 연산을 에뮬레이팅함으로써 타깃의 예측값을 계산하는 방법의 예들을 개시한다. 한편, 다른 종류의 에뮬레이션, 예를 들면, 종래 기술로 이미 알려진 에뮬레이션이 실행될 수도 있다. 다음은 타깃 실제값 및 예측값으로부터 도출된 정수들 사이의 차이를 표시하는 비트 시퀀스를 저장하고, 이에 따라 상기 예들을 위한 압축을 수행할 수 있는 일례를 제공한다.
본 예에 있어서, 타깃 실제값 및 예측값으로부터 도출된 정수들은 각각 타깃 실제값 및 예측값을 정의하는 스트링에 의해 정의된 정수들이다. 더욱 구체적으로, Engelson 등에 의해 설명된 것과 유사한 정수 표시로의 맵핑이 사용된다. 이것은 신속하고 자원절약적인 비트 시퀀스 결정을 가능하게 한다.
압축해제의 목적을 위해, 차이를 표현하는 비트 시퀀스는 유효 비트들 (significant bits) 의 수를 나타내는 프리픽스 비트 시퀀스 (prefix bit sequence) 와, 상기 차이와 동일한 바디 비트 시퀀스 (body bit sequence) 로서, 그 바디 비트 시퀀스에 대해 리딩 제로들 (leading zeros), 및 바람직하게는 더 높은 압축을 위해 1 과 동일한 첫 번째 비트가 커트 (cut) 되고, 그 바디 비트 시퀀스의 사이즈는 상기 유효 비트들의 수인, 바디 비트 시퀀스를 포함할 수 있다. 프리픽스 비트는 압축해제 방법이 판독을 위한 바디 비트 시퀀스의 사이즈를 인지가능하게 하고, 바디 비트 시퀀스는 압축되어 있는 타깃을 복구할 필요가 있는 정보를 포함한다.
이것은 [IEEE-754] 포맷으로 표현된 두 개의 64 비트 부동소수점 값
Figure 112011034373129-pat00184
p를 참조하여, 다음의 예에서 더욱 상세히 나타낸다.
Figure 112011034373129-pat00185
Figure 112011034373129-pat00186
는 부동소수점 값이고, 값 p
Figure 112011034373129-pat00187
를 위한 예측이다. 본 방법은 이 두 값들로부터
Figure 112011034373129-pat00188
의 압축을 표현한 비트 시퀀스 B를 계산한다. 시퀀스 B
Figure 112011034373129-pat00189
가 비트 시퀀스 Bp로부터 복구될 수 있도록 정의된다; 그리고 B
Figure 112011034373129-pat00190
p가 가깝다면 그 사이즈가 작도록 정의되어야만 한다. 위에서 설명한 NURBS 표면의 압축의 콘텍스트 (context) 에서, 값
Figure 112011034373129-pat00191
는 현재의 포인트의 임의 좌표 x, y, z이고, p는 이러한 현재의 포인트의 동일 좌표를 위한 예측이다.
Figure 112011034373129-pat00192
을 [IEEE-754] 포맷으로 표현된 64 비트 부동소수점 수로 놓는다. 본 방법의 예에 의해 사용된
Figure 112011034373129-pat00193
의 정수로의 맵핑은
Figure 112011034373129-pat00194
으로 표기되고,
Figure 112011034373129-pat00195
로서의 동일한 64 비트 스트링에 의해 표현된 64 비트 부호없는 정수이다. 이러한 맵핑의 역함수를 Real로 표기하기도 하며, 따라서
Figure 112011034373129-pat00196
를 갖는다.
부호없는 64 비트 정수 D와 1 비트 수 S를 다음과 같이 정의한다.
Figure 112011034373129-pat00197
Figure 112011034373129-pat00198
D의 리딩 (leading) 0의 수가 되도록 한다. D는 다음의 비트 시퀀스에 의해 표시된다.
Figure 112011034373129-pat00199
Figure 112011034373129-pat00200
의 압축된 형태인 비트 시퀀스
Figure 112011034373129-pat00201
을 정의한다. N의 값에 따라 3 케이스들을 구별한다.
Figure 112011034373129-pat00202
프리픽스 비트 시퀀스 Bin ( k+1) 은 부호없는 이진수로 표현된 (k+1) 의 값이다.
반드시 세트의 구조에 기초할 필요가 없는, 다른 압축 스킴이 수치 데이터를 압축하기 위해 추가적으로 이용될 수 있다. 예를 들면, 앞서 설명한 연산들에 의해 데이터가 압축된 이후에, 엔트로피 코딩 (entropy coding) 이 이용될 수 있다. 따라서, 본 방법은 엔트로피 코딩을 이용하는 예를 위해, 수치 데이터를 다시 압축하는 단계를 포함할 수 있다.
도 13에 나타낸 바와 같이, 본 발명은 또한 수치 데이터를 압축해제하기 위한 컴퓨터 구현 방법에 관한 것이다. 수치 데이터는 일반적으로 부동소수점 실제값의 구조화된 세트를 포함하는 데이터의 압축된 형태이고, 부동소수점 값은 위에서 정의된 바와 같이 부호, 지수 및 가수에 의해 정의된다. 수치 데이터는, 세트의 타깃 실제값 및 타깃 값에 관련된 부동소수점 예측값으로부터 도출된 정수들 사이의 차이 (difference) 를 표현하는 비트 시퀀스를 포함한다. 압축해제는 예측값을 계산하는 단계 (S140) 및 예측값으로부터 도출된 정보와 비트 시퀀스의 가산으로부터 타깃 값을 도출하는 단계 (S150) 를 포함하고, 상기 계산하는 단계는 세트의 서브세트의 실제값의 부호, 지수 및/또는 가수에 대응하는 정수들에 대한 연산들을 수행하는 것을 포함한다.
이러한 방법은 압축된 수치 데이터로부터 실제값, 즉 타깃 값을 복구하며, 압축된 데이터들은 그것에 의하여 이용가능하다.
계산하는 단계와 도출하는 단계는 세트의 순서에 따라 반복될 수 있다. 이것은, 세트가 수치 데이터에서 그대로 저장되지 않은 적어도 두 개의 실제값을 포함할 때 유용하며, 여기서 상기 수치 데이터는 각각의 비트 시퀀스를 그대로 포함하는 것이다. 이러한 순서는 세트 순서의 지시를 포함하는 수치 데이터에 의해 지시될 수 있다. 이러한 지시들은 명시적으로 세트에 관한 것이 아닐 수도 있다. 예를 들면, 세트가 순서화된 경우, 압축은 앞서 설명한 그 순서를 따른다. 이에 따라, 압축해제는 압축된 수치 데이터에 의해 디스플레이된 순서를 단순히 따를 수 있으며, 여기서 상기 압축된 수치 데이터는 압축해제된 세트의 순서에 대응하는 것이다.
각각의 반복에서, 서브세트는 이전의 반복에서 도출된 타깃 값 및/또는 수치 데이터에 그대로 포함되어 있는 타깃 값을 포함할 수 있다. 즉, 세트는 수치 데이터에 그대로 포함되어 있는 실제값들과 수치 데이터에 포함되는 것이 아닌 각각의 비트 시퀀스에 포함되는 것에 의해 세트의 압축에 참가하는 실제값들을 포함한다. 이 경우, 전체의 압축해제 프로세스는 세트의 모든 실제값들을 수치 데이터로부터 결정한다. 도출이 실행된 전체 프로세스의 각 반복에서, 결정된 실제값 예를 들면 타깃 값은, 앞서 설명한 바와 같이, 사전에 결정된 세트의 실제값들, 즉 이전의 반복들에서 도출된 타깃 값들 및/또는 수치 데이터에서 그대로 포함된 타깃 값들로 구성된 서브세트를 사용하여 도출된다.
예를 들어, 수치 데이터는 세트의 적어도 하나의 시작 실제값을 더 포함하고, 계산하는 단계는 세트의 모든 다른 실제값에 대해 반복된다. 이 경우, 각 반복에서, 상기 계산하는 단계에 뒤이어, 상기 반복의 계산된 예측값을 비교하는 단계 및 다음의 단계, 즉 예측값이 임계값보다 더 크거나 타깃 실제값 (수치 데이터에 그대로 포함된) 으로 서브세트를 증가시키는 경우, 또는 상기 반복의 예측값이 임계값보다 더 낮은 경우, 예측값으로부터 도출된 정수를 가진 비트 시퀀스 (수치 데이터에 포함된) 의 가산으로부터 타깃 실제값을 도출하는 단계 (위에서와 같이) 가 이루어진다. 이것은 실제값이 그대로 저장되었는지 또는 "압축"되었는지 여부를 결정한다 (즉, 비트 시퀀스는 제 위치 장소에 저장되어 있음). 선택적으로, 수치 데이터는 다음 타깃 값이 수치 데이터에 그대로 포함되어 있는지 또는 수치 데이터에 포함된 비트 시퀀스로부터 도출된 것인지 (위에서 설명한 바와 같이) 여부를 지시하는 정보 (예를 들면, 프리픽스 비트) 를 포함할 수도 있다. 이것은 압축해제의 속도를 증가시킨다.
위에서 압축 방법을 설명할 때 제공된 정의들을 참조하여, 압축해제 방법의 예들을 이제 설명하도록 한다. 이 정의들은 여기에도 적용된다. 실제, 본 케이스에 반드시 필요한 것은 아니지만, 압축해제될 수치 데이터는 위의 압축 방법에 의해 획득될 수 있다.
세트의 실제값들은 지오메트릭 오브젝트에 관련된 좌표들, 바람직하게는 지오메트릭 오브젝트의 컨트롤 포인트들의 좌표들일 수 있다. 서브세트의 실제값들은 지오메트릭 오브젝트의 다른 컨트롤 포인트에 인접한 지오메트릭 오브젝트의 컨트롤 포인트들의 좌표일 수 있고, 여기서 타깃 실제값은 상기 다른 컨트롤 포인트의 좌표이다. 예측값은 상기 다른 컨트롤 포인트에 관련된 적어도 하나의 파라미터, 서브세트의 실제값 및 상기 다른 컨트롤 포인트에 인접한 각 컨트롤 포인트에 관련된 적어도 하나의 파라미터에 따라 결정될 수 있다. 상기 적어도 하나의 파라미터들은 그들을 그대로 포함하거나 적어도 하나의 파라미터들의 결정을 가능하게 하는 엘리먼트를 포함할 수 있는, 수치 데이터로부터 결정될 수 있다. 예를 들면, 상기 적어도 하나의 파라미터들은 지오메트릭 오브젝트의 각각의 매듭 벡터에 따라 결정될 수 있다. 지오메트릭 오브젝트는 NURBS 표면일 수 있고, 상기 적어도 하나의 파라미터들은 그레빌 파라미터들일 수 있다. 타깃 실제값 및 예측값으로부터 도출된 정수들은 타깃 실제값 및 예측값을 각각 정의한 스트링들에 의해 정의된 정수들 일 수 있다. 차이를 표현하는 비트 시퀀스는 유효 비트들 (significant bits) 의 수를 나타내는 프리픽스 비트 시퀀스 (prefix bit sequence) 와, 상기 차이와 동일한 바디 비트 시퀀스 (body bit sequence) 로서, 그 바디 비트 시퀀스에 대해 리딩 제로들 (leading zeros), 및 바람직하게는 1 과 동일한 첫 번째 비트가 커트 (cut) 되고, 그 바디 비트 시퀀스의 사이즈는 상기 유효 비트들의 수인, 바디 비트 시퀀스를 포함할 수 있다. 연산들은 정수 가산, 감산, 승산 및/또는 제산을 포함하는 산술 연산들, 및/또는 비트 시프트 및/또는 리딩 제로 카운트 (leading zero count) 를 포함하는 비트 연산들 (bitwise operations) 을 포함할 수 있다. 이러한 모든 특징들은 상술한 압축과 관련된 장점들을 제공한다.
압축이 상기 압축 방법에 따라 수행된 경우, 단계 S140에서 예측값을 계산하기 위해 사용된 예측 스킴은 압축 방법에서 사용된 동일한 예측 스킴이다. 더욱 구체적으로, 압축 방법의 설명에서 이전에 사용된 노테이션들을 참조하면, 부동소수점 예측값 p가 계산되었을 경우, 압축해제 방법은 비트 시퀀스 B를 판독하는 단계를 포함할 수 있다. 예측값 p에 대응하는 실제값
Figure 112011034373129-pat00203
는 비트 시퀀스 B와 예측 p로부터
Figure 112011034373129-pat00204
로 복구될 수 있다. 위에서 제공된 예를 참조하면, B의 첫번째 6 비트가 판독되어 6 비트 부호없는 정수 m으로 인터프리팅된다. 만일 (m =0) 이라면,
Figure 112011034373129-pat00205
를 취한다. 만일 (1m62) 라면 다음의 m비트를 판독하여, DS를 복구하는 것을 허용한다. 즉, 만일 (S=0) 이라면
Figure 112011034373129-pat00206
을 취하고 만일 (S=1) 이라면
Figure 112011034373129-pat00207
을 취한다. 만일 (m=63) 이라면, 다음의 64 비트를 판독하고 그들을 수 (number)
Figure 112011034373129-pat00208
로 인터프리팅한다.
반복을 포함하는 것에 의해 압축을 수행한 경우, 도 2 내지 도 4를 참조하여 설명한 바와 같이, 상기 단계 S140 및 S150가 이와 대응하게 반복된다.
도 3을 참조하여 설명한 바와 같이, 상기 압축이 시작 값들을 저장하는 것을 포함하는 경우, 압축해제의 방법은 단계 S140 및 S150을 반복하기 전에 시작 값들을 이와 대응하게 판독한다. 시작 값들은, 예측을 위한 기초로서 기능하며, 적어도 첫번째 단계인 계산하는 단계 S140을 수행하기 위해 사용될 수 있다. 이렇게 계산된 예측값은, 위에서 설명한 바와 같이, 단계 S150에서 이와 대응하는 실제값을 도출하기 위해 사용될 수 있다. 적어도 하나의 이런 단계 후에, 회복된 값들은 압축해제 방법의 반복에 포함된 계산하는 단계 (S140) 의 다음 단계들을 계산하기 위해 사용된다. 도 4를 참조하여 설명한 바와 같이, 압축 방법은 예측값들이 압축된 것인지 여부를 결정하기 위해 예측값들을 임계값과 비교하는 단계를 포함하고, 압축해제 방법은 실제값을 복구하기 전에 단계 S140에서 계산된 예측값의 비교를 이와 대응하여 수행한다. 비교의 결과에 따라, 실제값을 복구하기 위해 도출 단계 S150가 수행되든지, 또는 데이터를 판독하는 단계 (비교에서 타깃 값을 압축한 것이 아닌, 압축 방법의 반복 중에 그것을 그대로 저장한 것으로 결정한 경우) 가 수행된다.
도 5 내지 도 12를 참조하여 앞에서 설명한, 압축된 NURBS의 예에 적용될 경우, 압축해제 방법은 저장된 데이터로부터 매듭 벡터를 판독하는 것을 포함할 수 있다. 세개의 압축해제된 컨트롤 포인트들의 좌표들인 시작 값들이 그 때 판독된다. 판독될 현재의 컨트롤 포인트의 표시들은, 도 7을 참조하여 설명한 바와 같이 결정된다. 압축할 때와 동일한 예측 스킴 (예를 들면, 도 8 내지 도 12를 참조하여 설명한 예측 스킴) 이 현재의 컨트롤 포인트의 인덱스들에 따라 선택된다. 다음의 컨트롤 포인트를 위한 예측은, 예를 들면 다항식 보간기법 (polynomial interpolation) 을 이용하여 계산된다. 이러한 계산을 위해 필요한 모든 데이터는 본 스테이지에서 이미 판독되어있다. 즉, 매듭 벡터들이 판독되어 있고, 이러한 계산 (선택된 예측 스킴에 따른) 을 위해 요구되는 컨트롤 포인트들의 실제값은 이전의 반복들 중에 이미 존재했다. 현재의 포인트의 좌표들이 판독되어 그들의 압축된 형태로부터 디코딩된다. 이것은 예측 (prediction) 을 사용함으로써 행해진다. 이것은 3 좌표 x,y,z에 대해 독립적으로 행해질 수 있다. NURBS 표면의 모든 포인트들이 판독되면, 저장 프로세스 (storage process) 는 종료되는 등이다.
일반적인 케이스에서, 압축해제 방법은 압축방법이 따르는 동일 과정을 따르는 것으로 이해되어야 한다. 이것은 데이터 압축 분야로부터 그 자체로 (per se) 알려져 있다.
본 발명은 또한 컴퓨터 지원 설계 시스템에 관한 것이다. 시스템은 부동소수점 실제값의 구조화된 세트를 포함하는 수치 데이터에 모델링된 오브젝트를 저장하는 데이터베이스, 그래픽 사용자 인터페이스, 및 위에서 나타낸 압축 방법에 따라 수치 데이터를 압축 및/또는 위에서 나타낸 압축해제 방법에 의해 수치 데이터를 압축해제하는 수단을 포함한다. 예를 들면, 수치 데이터는 하드 디스크에 결합된 프로세서에 의해 판독되고 처리된다. 프로세서는 상기 방법에 따라 데이터를 압축 또는 압축해제하고, 메모리에 대응하는 형태 (압축 또는 압축해제된 형태) 를 저장할 수 있다. 이러한 시스템은 낮은 메모리 자원들을 가진 오브젝트들의 모델링을 가능하게 한다. 실제로, 시스템은 위에서 나타낸 효율적인 압축 방법에 따라 수치 데이터를 압축할 수 있으므로, 다른 시스템들과 비교할 때 더 많은 오브젝트들이 시스템의 데이터베이스에 압축된 형태하에서 저장될 수 있다. 시스템이 위에서와 같이 수치 데이터를 압축해제할 수 있으므로, 시스템은 사용자가 압축되어 있는 데이터를 판독하는 데에 도움을 줄 수 있다. 따라서, 사용자는 압축의 이점을 이용할 수 있다.
그래픽 사용자 인터페이스는 사용자가 개체를 모델링한 데이터의 압축 또는 오브젝트를 모델링한 데이터의 압축해제를 커맨드 (command) 하는 것을 가능하게 한다. 오브젝트는 파트일 수 있고, CAD 파일에 의해 모델링된 것일 수 있다. 본 시스템은 압축된 형태하에서 CAD 파일들을 저장할 수 있고, 설계자가, 예를 들어 그래픽 사용자 인터페이스의 수단에 의해 파트상에서 작업할 필요가 있는 경우 그들을 압축해제할 수 있다.
도 14는 클라이언트 컴퓨터 시스템, 예를 들어 사용자의 워크스테이션인 이러한 시스템을 나타낸다.
클라이언트 컴퓨터는 내부 통신 BUS (100) 에 연결된 중앙처리장치 (CPU) (101), BUS에 연결된 랜덤 액세스 메모리 (RAM) (107) 를 포함한다. 클라이언트 컴퓨터에는 BUS에 연결된 비디오 랜덤 액세스 메모리(110)와 연관된 그래픽 처리 장치 (GPU) (111) 가 더 설치될 수 있다. 또한, 비디오 RAM (110) 은 당해 기술분야에서 프레임 버퍼로 알려져 있다. 대용량 스토리지 디바이스 콘트롤러 (102) 는 하드 드라이브 (103) 와 같은 대용량 메모리 디바이스로의 접근을 관리한다. 컴퓨터 프로그램 명령들 및 데이터를 명백히 포함하기에 적합한 저장 디바이스들은 EPROM, EEPROM, 및 플래시 메모리 디바이스와 같이 일 예로 반도체 메모리 디바이스를 포함하는 비휘발성 메모리; 내부 하드 디스크 및 착탈식 디스크와 같은 자기 디스크; 자기-광학 디스크; 및 CD-ROM 디스크 (104) 의 형태 모두를 포함한다. 전술한 임의의 것은 특별히 설계된 ASICs (주문형 집적 회로) 에 의해 보충되거나, 이에 포함될 수도 있다. 네트워크 어뎁터 (network adapter) (105) 는 네트워크 (106) 로의 액세스들을 관리한다. 클라이언트 컴퓨터는 커서 컨트롤 디바이스 (cursor control device), 키보드 등과 같은 햅틱 (haptic) 디바이스(109)를 포함할 수도 있다. 커서 컨트롤 디바이스는 사용자가 디스플레이 (108) 상의 임의 소망하는 위치에 선택적으로 커서를 위치시키는 것을 가능하게 하기 위해 클라이언트 컴퓨터에서 사용된다. 또한, 커서 컨트롤 디바이스는 사용자가 여러가지 커맨드 (command) 들, 및 입력 제어 신호들을 선택하는 것을 가능하게 한다. 커서 제어 디바이스는 시스템으로부터 입력 제어 신호들을 위한 다수의 신호 생성 장치 (signal generation device) 들을 포함한다. 통상적으로, 커서 제어 디바이스는 마우스일 수 있고, 그 마우스의 버튼은 신호들을 생성하기 위해 사용될 수 있다.
본 발명은 또한 컴퓨터에 의한 실행을 위한 명령들을 포함하는 컴퓨터 프로그램에 관한 것이고, 그 명령들은 상기 나타낸 방법들을 수행하는 수단을 포함한다. 이러한 프로그램은 컴퓨터 판독가능한 저장매체에 기록될 수 있다. 이러한 프로그램은 기존의 시스템들에 첨가될 수 있고, 시스템들이 상기 나타낸 방법들을 수행하는 것을 가능하게 한다. 따라서, 이러한 프로그램은 기존 시스템들에게 본 방법들의 장점을 제공한다.
본 발명은 정보의 손실없이 부동소수점 지오메트릭 오브젝트를 압축하기 위해 예측 인코딩 스킴을 사용한다 (예를 들면, 압축이 무손실이다). 예측 함수는 정수 산술 연산들만을 사용하여 부동소수점 산술 연산들을 에뮬레이팅하는 것에 의해 산술 연산들을 수행한다. 이 에뮬레이션 (emulation) 은 네 개의 모든 연산들 (가산, 감산, 승산, 제산) 에 관한 정확한 결과, 예를 들면 부동소수점 연산에 의해 획득될 결과값들에 근접한 결과들을 제공한다. 따라서, 예측은 정밀하다. 이 에뮬레이션은 콘텍스트 (context) 에서 불필요하므로, 전체 [IEEE 754-1985] 표준을 따를 필요가 없다.
본 발명은 종래 기술을 넘어서는 여러 장점들을 제공한다.
본 발명의 장점들 중의 하나는, 압축과 압축해제가 상이한 소프트웨어 및 하드웨어 플랫폼에 대해 일어날 수 있는 것이다. 이것은 예측의 수치 계산이 부동소수점 연산의 정수 기반 에뮬레이션을 사용하여 행해질 수 있기 때문이다. 이 에뮬레이션은 정수의 연산들만을 포함하므로, 그 결과값은 모든 플랫폼들 상에서 정확히 동일하다. 따라서, 압축시 또는 압축해제시 계산된 예측은 정확히 동일하다. 이에 따라, 그들의 압축된 형태로부터 현재의 포인트의 좌표 디코딩은 압축중에 저장되었던, 정확히 원래의 값들을 산출한다.
정수 연산을 사용하는 부동소수점 연산의 에뮬레이션에 기반한 본 예들의 예측 함수들은, 부동소수점 연산을 사용하는 것에 의해 획득될 것에 매우 근접한 결과값을 제공한다.
정수 연산을 사용하는 본 예들에서 제공된 부동소수점 연산의 에뮬레이션은, 모든 [IEEE 754-1985] 표준을 지원할 필요가 없다는 사실 때문에, 여타 기존의 에뮬레이션들보다 더욱 신속하다.
예측 스킴은 지오메트릭 오브젝트의 타입에 적응되고 그 오브젝트의 파라미터화를 고려한다.
자동차 산업의 CAD 데이터 상에 수행된 테스트들은 45% 압축률을 나타내고 있으며, 이것은 18.3 MB로 초기 압축된 파일이 본 발명의 압축방법에 의해 10 MB 압축 파일로 다운사이징된다는 것을 의미한다.

Claims (15)

  1. 부동소수점 실제값들 (floating point actual values) 의 구조화된 세트를 포함하는 수치 데이터를 압축하기 위한 컴퓨터 구현 방법으로서, 부동소수점 값이 부호, 지수 및 가수에 의해 정의되고, 상기 방법은,
    상기 세트의 타깃 실제값에 관련된 부동소수점 예측값을 계산하는 단계로서, 상기 세트의 서브세트의 실제값들의 부호, 지수 및/또는 가수에 대응하는 정수들에 대한 연산들을 수행하는 것을 포함하는, 상기 계산하는 단계;
    상기 타깃 실제값 및 상기 예측값으로부터 도출된 정수들 사이의 차이를 표현하는 비트 시퀀스를 저장하는 단계를 포함하는, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 계산하는 단계 및 상기 저장하는 단계는 상기 세트의 순서에 따라 반복되는, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  3. 제 2 항에 있어서,
    상기 세트의 적어도 하나의 시작 실제값이 저장되어 있고,
    상기 계산하는 단계는 상기 세트의 다른 모든 실제값들에 대해 반복되며, 각 반복에서는,
    상기 반복의 계산된 예측값을 임계값과 비교하는 단계,
    상기 예측값이 상기 임계값보다 더 큰 경우, 상기 반복의 상기 타깃 실제값 및 상기 반복의 상기 예측값으로부터 도출된 정수들 사이의 차이를 표현하는 비트 시퀀스 또는,
    상기 반복의 상기 예측값이 상기 임계값보다 더 작은 경우, 상기 반복의 상기 타깃 실제값을 저장하는 단계가 후속하는, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    상기 세트의 실제값들은 지오메트릭 오브젝트 (geometric object) 에 관련된 좌표들, 바람직하게는 상기 지오메트릭 오브젝트의 컨트롤 포인트들 (control points) 의 좌표들인, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  5. 제 4 항에 있어서,
    상기 서브세트의 실제값들은, 상기 지오메트릭 오브젝트의 다른 컨트롤 포인트에 인접한 상기 지오메트릭 오브젝트의 컨트롤 포인트들의 좌표들이고, 상기 타깃 실제값은 상기 다른 컨트롤 포인트의 좌표인, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  6. 제 5 항에 있어서,
    상기 예측값은 상기 다른 컨트롤 포인트에 관련된 적어도 하나의 파라미터, 상기 서브세트의 실제값들, 및 상기 다른 컨트롤 포인트에 인접한 각 컨트롤 포인트에 관련된 적어도 하나의 파라미터에 따라 결정되는, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  7. 제 6 항에 있어서,
    상기 적어도 하나의 파라미터들은 상기 지오메트릭 오브젝트의 각각의 매듭 벡터 (knot vector) 에 따라 결정되는, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  8. 제 7 항에 있어서,
    상기 지오메트릭 오브젝트는 NURBS 표면이고, 상기 적어도 하나의 파라미터들은 그레빌 파라미터들 (Greville parameters) 인, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  9. 제 1 항에 있어서,
    상기 타깃 실제값 및 상기 예측값으로부터 도출된 정수들은 상기 타깃 실제값 및 상기 예측값을 각각 정의하는 스트링들 (strings) 에 의해 정의된 정수들인, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  10. 제 1 항에 있어서,
    상기 차이를 표현하는 비트 시퀀스는,
    유효 비트들 (significant bits) 의 수를 표시하는 프리픽스 비트 시퀀스 (prefix bit sequence) 와,
    상기 차이와 동일한 바디 비트 시퀀스 (body bit sequence) 로서, 상기 바디 비트 시퀀스에 대해 리딩 제로들 (leading zeros), 및 바람직하게는 1 과 동일한 첫 번째 비트가 커트 (cut) 되고, 상기 바디 비트 시퀀스의 사이즈는 상기 유효 비트들의 수인, 상기 바디 비트 시퀀스를 포함하는, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  11. 제 1 항에 있어서,
    상기 연산들은 정수 가산, 감산, 승산 및/또는 제산을 포함하는 산술 연산들 및/또는 비트 시프트 및/또는 리딩 제로 카운트 (leading zero count) 를 포함하는 비트 연산들 (bitwise operations) 을 포함하는, 수치 데이터를 압축하기 위한 컴퓨터 구현 방법.
  12. 수치 데이터를 압축해제하기 위한 컴퓨터 구현 방법으로서, 상기 수치 데이터는 부동소수점 실제값들의 구조화된 세트를 포함하는 데이터의 압축된 형태이고, 부동소수점 값이 부호, 지수 및 가수에 의해 정의되고, 상기 수치 데이터는 세트의 타깃 실제값 및 타깃 값에 관련된 부동소수점 예측값으로부터 도출된 정수들 사이의 차이를 표현하는 비트 시퀀스를 포함하고, 상기 방법은,
    상기 예측값을 계산하는 단계로서, 상기 세트의 서브세트의 실제값들의 부호, 지수 및/또는 가수에 대응하는 정수들에 대한 연산들을 수행하는 것을 포함하는, 상기 예측값을 계산하는 단계, 및
    상기 예측값으로부터 도출된 정수와 상기 비트 시퀀스의 가산으로부터 상기 타깃 실제값을 도출하는 단계를 포함하는, 수치 데이터를 압축해제하기 위한 컴퓨터 구현 방법.
  13. 컴퓨터 지원 설계 시스템으로서,
    부동소수점 실제값들의 구조화된 세트를 포함하는 수치 데이터에 의해 모델링된 오브젝트를 저장하는 데이터베이스로서, 부동소수점 값이 부호, 지수 및 가수에 의해 정의되어 있는, 상기 데이터베이스,
    그래픽 사용자 인터페이스, 및
    청구항 제 1 항 내지 제 12 항 중 어느 한 항의 방법을 수행하는 수단을 포함하는, 컴퓨터 지원 설계 시스템.
  14. 컴퓨터에 의한 실행을 위한 명령들을 포함하는 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 저장매체로서,
    상기 명령들은 청구항 제 1 항 내지 제 12 항 중 어느 한 항의 방법을 수행하는 수단을 포함하는, 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 저장매체.
  15. 삭제
KR1020110043689A 2010-05-11 2011-05-09 수치 데이터의 압축 및 압축해제 KR101808027B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP10305502.6A EP2387004B1 (en) 2010-05-11 2010-05-11 Lossless compression of a structured set of floating point numbers, particularly for CAD systems
EP10305502.6 2010-05-11

Publications (2)

Publication Number Publication Date
KR20110124720A KR20110124720A (ko) 2011-11-17
KR101808027B1 true KR101808027B1 (ko) 2017-12-12

Family

ID=43303274

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110043689A KR101808027B1 (ko) 2010-05-11 2011-05-09 수치 데이터의 압축 및 압축해제

Country Status (6)

Country Link
US (2) US8368568B2 (ko)
EP (1) EP2387004B1 (ko)
JP (1) JP5833339B2 (ko)
KR (1) KR101808027B1 (ko)
CN (1) CN102323922B (ko)
CA (1) CA2739956C (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2387004B1 (en) 2010-05-11 2016-12-14 Dassault Systèmes Lossless compression of a structured set of floating point numbers, particularly for CAD systems
TWI524265B (zh) * 2011-06-30 2016-03-01 艾特拉股份有限公司 浮點資料之壓縮
US10311096B2 (en) * 2012-03-08 2019-06-04 Google Llc Online image analysis
JP5619326B2 (ja) 2012-06-21 2014-11-05 三菱電機株式会社 符号化装置、復号装置、符号化方法、符号化プログラム、復号方法および復号プログラム
EP2750106B1 (en) 2012-12-31 2021-09-15 Dassault Systèmes Geometrical elements transformed by rigid motions
EP2750107B1 (en) 2012-12-31 2017-03-15 Dassault Systèmes Groups of faces that form a geometrical pattern
EP2808810B1 (en) 2013-05-28 2017-01-11 Dassault Systèmes Compression and decompression of 3d modeled object
JPWO2015052787A1 (ja) * 2013-10-09 2017-03-09 株式会社日立製作所 解析データ表示システムおよび解析データの転送表示方法
US10305980B1 (en) 2013-11-27 2019-05-28 Intellectual Property Systems, LLC Arrangements for communicating data in a computing system using multiple processors
US9608664B2 (en) 2013-12-30 2017-03-28 International Business Machines Corporation Compression of integer data using a common divisor
US9628107B2 (en) 2014-04-07 2017-04-18 International Business Machines Corporation Compression of floating-point data by identifying a previous loss of precision
US9350384B2 (en) 2014-09-30 2016-05-24 International Business Machines Corporation Hierarchical data compression and computation
US9959299B2 (en) 2014-12-02 2018-05-01 International Business Machines Corporation Compression-aware partial sort of streaming columnar data
US10114554B1 (en) 2015-01-20 2018-10-30 Intellectual Property Systems, LLC Arrangements for storing more data in faster memory when using a hierarchical memory structure
US10909078B2 (en) 2015-02-25 2021-02-02 International Business Machines Corporation Query predicate evaluation and computation for hierarchically compressed data
US9819962B2 (en) * 2015-04-06 2017-11-14 Ati Technologies Ulc Efficient low-complexity video compression
EP3098734A1 (en) 2015-05-28 2016-11-30 Dassault Systèmes Querying a database with likeness criterion
EP3098735A1 (en) 2015-05-28 2016-11-30 Dassault Systèmes Querying a database with thickness criterion
EP3163536B1 (en) * 2015-10-30 2021-12-08 Dassault Systèmes Compression of a three-dimensional modeled object
US10891759B2 (en) * 2016-03-23 2021-01-12 Amar Phatak Method for lossless compression and regeneration of digital design data
EP3264286B1 (en) 2016-06-28 2020-11-18 Dassault Systèmes Querying a database with morphology criterion
EP3321817A1 (en) 2016-11-14 2018-05-16 Dassault Systèmes Querying a database based on a parametric view function
WO2018099788A1 (en) * 2016-11-29 2018-06-07 Koninklijke Philips N.V. Floating point data compression/compressor
DE102017204946A1 (de) * 2017-03-23 2018-09-27 Volkswagen Aktiengesellschaft Verfahren zur Bestimmung eines Wertes einer Integer-Skalierung in einer Verknüpfung von Eingangsmengen zu Ausgangsmengen und Computerprogrammprodukt
US10153779B1 (en) * 2017-04-25 2018-12-11 EMC IP Holding Company LLC Content-aware compression of floating-point time-series data using multiple prediction functions and estimated bit-saving thresholds
US11281824B2 (en) 2017-12-13 2022-03-22 Dassault Systemes Simulia Corp. Authoring loading and boundary conditions for simulation scenarios
JP7108784B2 (ja) * 2018-08-21 2022-07-28 華為技術有限公司 データ記憶方法、データ取得方法、及び機器
CN110875743B (zh) * 2018-08-30 2023-04-28 上海川源信息科技有限公司 基于抽样猜测的数据压缩方法
CN109816739B (zh) * 2018-12-14 2024-02-20 上海昇晔网络科技有限公司 图片压缩方法、装置、计算机设备及计算机可读存储介质
CN110175185B (zh) * 2019-04-17 2023-04-07 上海天数智芯半导体有限公司 一种基于时序数据分布特征的自适应无损压缩方法
CN111510154B (zh) * 2020-04-17 2023-07-21 环荣电子(惠州)有限公司 坐标数据压缩方法
CN112054805B (zh) * 2020-09-14 2023-03-31 哈尔滨工业大学(深圳) 一种模型数据压缩方法、系统及相关设备
CN113282553B (zh) * 2021-05-24 2021-11-02 北京航空航天大学 一种电磁环境远场数据的快速无损压缩存储方法
US20230137394A1 (en) * 2021-10-28 2023-05-04 Halliburton Energy Services, Inc. Methods for Data Compression and Optimization for Downhole Telemetry
CN114418098A (zh) * 2022-03-16 2022-04-29 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种神经网络差量压缩方法、装置、电子设备及存储介质
US11979174B1 (en) * 2022-07-13 2024-05-07 Ansys, Inc. Systems and methods for providing simulation data compression, high speed interchange, and storage
CN118193442B (zh) * 2024-05-17 2024-07-23 北京燧原智能科技有限公司 一种数据处理方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002049933A (ja) 2000-08-01 2002-02-15 Ricoh Co Ltd 3次元幾何データの表現方法、圧縮・伸長方法、圧縮・伸長装置および該圧縮・伸長方法を実現するプログラムの記録媒体
WO2004114527A1 (ja) 2003-06-20 2004-12-29 Nippon Telegraph And Telephone Corporation 浮動小数点形式ディジタル信号可逆符号化方法、及び復号化方法と、その各装置、その各プログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842004A (en) 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US6215500B1 (en) 1995-08-04 2001-04-10 Sun Microsystems, Inc. Compression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
JPH09134437A (ja) * 1995-11-08 1997-05-20 Hitachi Ltd 座標データ圧縮方法
US5905507A (en) 1996-01-16 1999-05-18 International Business Machines Corporation Compression of geometric models using spanning trees
US5825369A (en) 1996-01-16 1998-10-20 International Business Machines Corporation Compression of simple geometric models using spanning trees
US6047088A (en) 1996-12-16 2000-04-04 Sharp Laboratories Of America, Inc. 2D mesh geometry and motion vector compression
US6028541A (en) * 1998-03-12 2000-02-22 Liquid Audio Inc. Lossless data compression with low complexity
US6167159A (en) 1998-04-30 2000-12-26 Virtue Ltd. Triangle mesh compression
US7864083B2 (en) * 2008-05-21 2011-01-04 Ocarina Networks, Inc. Efficient data compression and decompression of numeric sequences
CN101661631B (zh) * 2009-09-27 2012-05-23 大连民族学院 基于局部最小生成树的点模型快速无损压缩处理方法
EP2387004B1 (en) 2010-05-11 2016-12-14 Dassault Systèmes Lossless compression of a structured set of floating point numbers, particularly for CAD systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002049933A (ja) 2000-08-01 2002-02-15 Ricoh Co Ltd 3次元幾何データの表現方法、圧縮・伸長方法、圧縮・伸長装置および該圧縮・伸長方法を実現するプログラムの記録媒体
WO2004114527A1 (ja) 2003-06-20 2004-12-29 Nippon Telegraph And Telephone Corporation 浮動小数点形式ディジタル信号可逆符号化方法、及び復号化方法と、その各装置、その各プログラム

Also Published As

Publication number Publication date
CN102323922A (zh) 2012-01-18
CN102323922B (zh) 2017-06-13
JP5833339B2 (ja) 2015-12-16
JP2011238236A (ja) 2011-11-24
EP2387004B1 (en) 2016-12-14
CA2739956A1 (en) 2011-11-11
EP2387004A1 (en) 2011-11-16
US8368568B2 (en) 2013-02-05
US20110279293A1 (en) 2011-11-17
KR20110124720A (ko) 2011-11-17
US20130124589A1 (en) 2013-05-16
US8963748B2 (en) 2015-02-24
CA2739956C (en) 2020-10-20

Similar Documents

Publication Publication Date Title
KR101808027B1 (ko) 수치 데이터의 압축 및 압축해제
CN111738448B (zh) 量子线路模拟方法、装置、设备及存储介质
Liang et al. An efficient transformation scheme for lossy data compression with point-wise relative error bound
US10217276B2 (en) Three dimensional modeling
WO2020142183A1 (en) Neural network activation compression with outlier block floating-point
CN109584357B (zh) 基于多轮廓线的三维建模方法、装置、系统及存储介质
CN114078182A (zh) 用于输出参数化3d模型的神经网络
CN111381919A (zh) 形成用于推断可编辑特征树的数据集
WO2013123636A1 (en) Method and apparatus for mesh simplification
CN114078169A (zh) 用于输出3d模型的变分自动编码器
JP2018022476A (ja) モフォロジー基準によるデータベースの照会
Nehring-Wirxel et al. Fast exact booleans for iterated CSG using octree-embedded BSPs
CN112785493A (zh) 模型的训练方法、风格迁移方法、装置、设备及存储介质
CN104965938A (zh) 通过使用由几何约束连接的几何形状来设计工业产品
Kress et al. Preparing for in situ processing on upcoming leading-edge supercomputers
Lee et al. Progressive 3D mesh compression using MOG-based Bayesian entropy coding and gradual prediction
Mateo et al. Hierarchical, Dense and Dynamic 3D Reconstruction Based on VDB Data Structure for Robotic Manipulation Tasks
CN116700665A (zh) 一种确定浮点数平方根倒数的方法及装置
Nikolaev et al. 3D model compression with support of parallel processing on the GPU
US20230351076A1 (en) Classification and similarity detection of multi-dimensional objects
CN113159312B (zh) 压缩神经网络模型的方法、计算机系统以及存储介质
TWI852292B (zh) 執行指令以將輸入值從一種資料格式轉換為另一種資料格式之硬體裝置
US11979174B1 (en) Systems and methods for providing simulation data compression, high speed interchange, and storage
KR20140109210A (ko) V 사이클을 이용한 멀티그리드 방법 및 장치
Peelar et al. Real-time visualization of bead based additive manufacturing toolpaths using implicit boundary representations

Legal Events

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