2012-01-13 7 views
1

대용량 데이터 세트를 관리하는 도구를 작성해야합니다 (일반 워크 스테이션의 경우 크기가 큽니다). 기본적으로 jpeg 형식과 반대 방향으로 작동하는 무언가가 필요합니다. 임의로 큰 데이터를 저장할 수있는 데이터 세트가 필요하지만, 메모리에서 읽히고 특정 시간에 사용되는 하위 파트 만이 압축 해제 될 필요가있을 때 손실 압축이 필요합니다. 필자는 ipp (Intel Integrated Performance Primitives)를 살펴보기 시작했으나 지금해야 할 일을 위해 사용할 수 있다면 지금은 분명하지 않습니다. 누구나 올바른 방향으로 나를 가리킬 수 있습니까?역방향 "jpeg"압축 알고리즘?

감사합니다.

+0

하면 기본적으로 JPEG 코덱의 구현을 찾고 계십니까? 어떤 언어로 작업하고 있습니까? –

+4

어떤 종류의 데이터가 관련되어 있습니까? 이미지 압축은 텍스트 외환과 매우 다릅니다. – ergosys

+0

통계 SE 사이트에서 더 좋을 것 같습니다. 데이터 샘플링, 변환, 요약, 분석 등은 모두 통계 영역에 있습니다. 데이터가 특정 성격, e, g, 이미지, 오디오, 텍스트 등일 경우보다 전문화 된 방법이 적용됩니다. – Iterator

답변

0

데이터의 특성을 감안할 때 일종의 원시 샘플을 처리하는 것 같습니다. 그래서 가장 쉽고 가장 일반적인 "손실"기법은 원하는 수준까지 정밀도를 줄여 하위 비트를 제거하는 것입니다.

"하단 비트를 버려야합니다."는 "다음 10의 거듭 제곱"과 완전히 다릅니다. 컴퓨터는 2 번베이스에서 작동하며 가능한 모든 하위 비트가 "00000"으로 압축되기를 원합니다. 이 방법은 선택된 압축 알고리즘이 예측 가능한 0 비트 패턴을 사용한다고 가정합니다.

또 다른 방법은 더 복잡하고 더 구체적이며 색인으로 값을 표로 변환하는 것입니다. 장점은 원하는 곳에서 정밀도를 "목표"할 수 있다는 것입니다. 분명한 단점은 테이블이 배포 패턴에만 해당된다는 것입니다.

또한 값 자체가 아닌 값 사이의 관계가있는 경우 값의 델타와 이전 값의 델타를 저장할 수도 있습니다. 이것은 압축에도 도움이됩니다.

데이터를 압축하려면 적절한 크기 (예 : 64KB)의 패킷으로 그룹화해야합니다. 단일 필드에서 압축 알고리즘을 사용하면 적합한 결과를 얻을 수 있습니다. 이는 차례로 필드에 액세스 할 때마다 전체 패킷의 압축을 풀어야하므로, 원하는 부분에 따라 더 잘 조정해야 함을 의미합니다. 순차적 액세스는 이러한 상황에서 다루기가 더 쉽습니다.

압축 알고리즘과 관련하여 이러한 데이터는 "실시간"이기 때문에 데이터 액세스가 지연 시간에 미치는 영향은 매우 적습니다.

거기에 몇 가지 오픈 소스 대안이 있습니다. 라이센스 관리를 쉽게하기 위해 BSD 대안을 추천합니다. 당신은 C++을 사용하기 때문에, 다음과 같은 것들에 적합한 모양 : http://code.google.com/p/snappy/http://code.google.com/p/lz4/