무손실 압축 데이터의 한계는 무엇입니까? (제한이있는 경우)


14

최근에 압축 관련 알고리즘을 다루고 있으며 무손실 데이터 압축으로 얻을 수있는 최고의 압축 비율 이 궁금 합니다.

지금 까지이 주제에서 찾을 수있는 유일한 출처는 Wikipedia입니다.

비디오, 디지털화 된 필름 및 오디오와 같은 디지털화 된 데이터의 무손실 압축은 모든 정보를 보존하지만 데이터의 본질적인 엔트로피로 인해 1 : 2 압축보다 훨씬 나은 성능을 발휘할 수는 없습니다 .

운수 나쁘게, Wikipedia의 기사 에는이 주장을 뒷받침하는 참고 문헌이나 인용이 포함되어 있지 않습니다. 저는 데이터 압축 전문가가 아니므로이 주제에 대해 제공 할 수있는 정보 나 Wikipedia보다 더 신뢰할 수있는 출처를 알려 주시면 감사하겠습니다.


1
이론적 인 컴퓨터 과학이 이런 종류의 질문을하기 가장 좋은 사이트인지 잘 모르겠습니다. 필요한 경우 가까운 투표에 참여하거나이 질문을보다 적합한 사이트로 마이그레이션하십시오.
Auron

3
이 당신을 위해 무엇을 찾고있는 사람이 될 수 있습니다 en.wikipedia.org/wiki/Entropy_encoding . 핵심 단어는 엔트로피 입니다.
Hsien-Chih Chang 張顯 之

3
불행히도 더 적합한 사이트가 무엇인지 모르겠습니다. 양자화 오류가 아마 큰 압축 비율을 배제 할 엔트로피의 원천입니다.
피터 쇼어

2
어떤 종류의 데이터에 대해 무손실 데이터 압축이 필요합니까? 이미지, 음악, 음성, 일반 데이터, ...? 그러나 높은 수준의 소개를 보려면 data-compression.com/theory.html (및 페이지 하단의 리소스)을 참조하십시오.
Marzio De Biasi 2016

2
@Vor Images. 더 구체적으로, 의료 이미지. 해당 페이지를 살펴 보겠습니다. 감사.
Auron

답변:


27

왜 마법의 숫자가 정확히 1 : 2로 보이는지, 왜 예를 들어 1 : 1.1 또는 1:20이 아닌지 설명했는지 확실하지 않습니다.

한 가지 이유는 대부분의 경우 디지털화 된 데이터의 거의 절반이 노이즈 이며 노이즈 (정의에 따라)를 압축 할 수 없기 때문입니다.

나는 매우 간단한 실험을했다 :

  • 나는 회색 카드를했다 . 인간의 눈에는 마치 평범한 중립 회색 마분지처럼 보입니다. 특히 정보없습니다 .

  • 그리고 사람들이 사진을 디지털화하는 데 사용할 수있는 종류의 장치 인 일반 스캐너를 사용했습니다.

  • 회색 카드를 스캔했습니다. (실제로, 나는 엽서와 함께 회색 카드를 스캔했습니다. 엽서에는 위생 검사를 위해 스캐너 소프트웨어가 이상한 회색 카드를 볼 때 자동으로 대비를 추가하는 등 이상한 일을하지 않도록 할 수있었습니다.)

  • 그레이 카드의 1000x1000 픽셀 부분을 잘라 그레이 스케일 (픽셀 당 8 비트)로 변환했습니다.

스캔 한 흑백 사진 에서 특징이없는 부분 ( 예 : 맑은 하늘) 을 연구 할 때 발생하는 상황에 대한 좋은 예입니다 . 원칙적으로 볼 것이 없습니다.

그러나 더 큰 배율에서는 실제로 다음과 같습니다.

요소 10으로 확대 된 30x30 자르기

명확하게 보이는 패턴은 없지만 균일 한 회색 색상은 없습니다. 그중 일부는 그레이 카드의 결함으로 인해 발생했을 가능성이 높지만 대부분 스캐너에서 발생하는 노이즈 (센서 셀, 앰프, A / D 변환기의 열 노이즈)라고 생각합니다. 가우스 잡음과 매우 비슷합니다. 여기 (히스토그램의 로그 스케일)

히스토그램

이제 우리는 경우에 가정 각 픽셀의 그늘이 분포 IID 집어 가지고, 우리는 얼마나 많은 엔트로피를해야합니까? 내 파이썬 스크립트는 픽셀 당 3.3 비트의 엔트로피를 가지고 있다고 말했습니다 . 그리고 그것은 많은 소음입니다.

이 경우 실제로 어떤 압축 알고리즘을 사용하든 1000x1000 픽셀 비트 맵이 최상의 경우 412500 바이트 파일로 압축됩니다. 그리고 실제로 일어나는 일 : 432018 바이트 PNG 파일이 꽤 가깝습니다.


우리가 약간 지나치게 일반화하면이 스캐너로 스캔 한 흑백 사진에 관계없이 다음과 같은 합계를 얻는 것처럼 보입니다.

  • "유용한"정보 (있는 경우)
  • 소음, 약. 픽셀 당 3 비트.

압축 알고리즘이 유용한 정보를 픽셀 당 << 1 비트로 압축하더라도 압축 할 수없는 노이즈의 픽셀 당 3 비트를 여전히 가질 수 있습니다. 압축되지 않은 버전은 픽셀 당 8 비트입니다. 따라서 압축 비율은 무엇을하든 1 : 2의 야구장에 있습니다.


과도하게 이상화 된 조건을 찾으려는 또 다른 예 :

  • 가장 낮은 감도 설정 (최소 노이즈)을 사용하는 최신 DSLR 카메라.
  • 회색 카드의 초점이 맞지 않은 샷 (회색 카드에 눈에 보이는 정보가 있어도 흐리게 처리됨).
  • 대비를 추가하지 않고 RAW 파일을 8 비트 그레이 스케일 이미지로 변환 상용 RAW 변환기에서 일반적인 설정을 사용했습니다. 변환기는 기본적으로 노이즈를 줄입니다. 또한 최종 결과를 8 비트 파일로 저장하고 있습니다. 즉, 원시 센서 판독 값 의 최하위 비트버립니다 .

그리고 최종 결과는 무엇입니까? 스캐너에서 얻은 것보다 훨씬 나아 보입니다. 소음이 덜 뚜렷하고 볼 것이 없습니다. 그럼에도 불구하고 가우스 잡음은 다음과 같습니다.

요소 10으로 확대 된 30x30 자르기 히스토그램

그리고 엔트로피? 픽셀 당 27 비트 . 실제로 파일 크기는? 1M 픽셀의 경우 344923 바이트 진정으로 최고의 시나리오에서 일부 부정 행위와 함께 압축 비율을 1 : 3으로 높였습니다.


물론이 모든 것이 TCS 연구와는 전혀 관련이 없지만 실제 디지털 데이터의 압축을 실제로 제한하는 요소 를 명심하는 것이 좋습니다 . 더 멋진 압축 알고리즘 설계의 발전과 원시 CPU 성능은 도움이되지 않습니다. 모든 노이즈를 무손실로 저장하려면 1 : 2보다 훨씬 잘 수행 할 수 없습니다.


3
멋있는! 잡음이 가우시안이라면, 첫 k 단일 벡터 (또는 이와 유사한 더 멋진 기법)에 투영하면 많은 잡음이 제거 될 것입니다. 빠른 구글 학자 검색에서 M. Elad와 M. Aharon이 프로젝션 방법과 일부 베이지안 통계 기법을 사용한 기사를 공개했습니다 : ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4011956 . 아마도 2006 년에는 "최첨단"이었습니다. 물론, 그것은 손실이 없지만 Jukka의 데이터는 작은 크기를 고집하면 최소한 소음을 잃어야한다는 것을 보여줍니다.
Sasho Nikolov

귀하의 예는 이미지의 무손실 압축에 관한 입니다. 나는 물리적 센서 (사운드, 이미지, 비디오, 그러나 아마도 다른 요소가있는)에서 오는 모든 데이터에 대한 일반화를 마지 못해 부여하지만 압축이 적용되는 다른 필드는 1보다 훨씬 낫습니다. 소음이 적기 때문에 2 (자연어)가 떠 오릅니다.
제레미

2
@ 주카 : +1 : 아름다운 실험! @Sasho : 의료 이미지의 경우, 일반적인 지식은 잡음 일 가능성이 있더라도 아무것도 잃을 수 없다는 것입니다.
피터 쇼어

2
아주 좋고 명확한 설명!
Marzio De Biasi 2016 년

2
한 번 더 의견 : 이것은 의료 이미지에는 피할 수 없습니다. 의료 이미지에 충분한 양의 노이즈를 갖기 위해 충분한 정밀도를 사용하지 않으면 실제로 유지하려는 실제 관련 세부 사항이 손실 될 수 있습니다.
피터 쇼어

16

Shannon의 무소음 코딩 정리 에 대해 이미 알고 있습니까? 이 정리는 무손실 압축에 대한 이론적 한계를 설정합니다. 다른 사람들의 의견 중 일부는이 정리에 대해 알고 있다고 가정하는 것처럼 보이지만 질문에서 나는 그것이 당신이 찾고있는 답이라고 생각합니다.


나는 그 정리에 대해 몰랐습니다. 달성 가능한 압축 비율은 압축 할 데이터의 엔트로피에 달려 있기 때문에 Wikipedia의 주장이 정확하지 않은 것 같습니다.
Auron

이미지의 본질적인 엔트로피를 결정하는 것은 매우 어렵다고 생각합니다. 데이터가 2D가 아닌 선형 인 경우 훨씬 쉽습니다.
피터 쇼어

무작위로 생성 된 텍스트의 최대 압축 비율은 얼마입니까?
skan

11

>0

  1. 일반적인 실제 솔루션은 8 비트를 사용하는 것입니다. 인코딩 할 정수가 모두 1에서 256 사이 인 경우 (원하는 경우 16, 32 및 64 비트로 일반화하십시오).

  2. n+1 0과 1)를 사용하여 단항으로 인코딩하는 것입니다. 이것은 아직 압축으로 보이지는 않지만 압축의 기회 측면을 가지고 있습니다. 값이 작을수록 작을수록 단항 인코딩의 크기가 작습니다.

  3. 로그2로그2+1로그21로그22로그21lg=최대(1,로그2) 표기를 짧게하기 위해 로 있습니다.)

  4. 2로그21 비트가 최적의 2 배 내에 있다는 것인데, 이는 더 나은 솔루션의 복잡성을 감안할 때 실제로는 충분하다고 동의합니다.

  5. 케이케이계산할 수 없습니다. 이 개념에 대한 쉬운 해결 방법은 Levin 의 자체 구분 프로그램에 의해 제공됩니다. Levin 의 자체 구분 프로그램은 실행 시간이 제한된 프로그램 만 고려합니다 (예 : 원래 인스턴스 길이의 일정한 요인 내에서 각 기호를 작성해야하는 알고리즘의 복잡성).

Kolmogorov의 복잡성과 그 변형에 대해 일하는 전체 커뮤니티가 있으며 무손실 압축을 사용하는 다른 커뮤니티 (사용한 정수의 예는 다른 많은 데이터 유형과 동일)에 거의 흠집이 없으며 다른 사람들은 정밀도를 추가 할 수 있습니다 (Kolmogorov는 실제로 내 전문 분야가 아닙니다.)하지만 이것이 내가 원했던 답을 반드시 제공하지는 않지만 질문을 명확하게하는 데 도움이되기를 바랍니다. :)


7

(내 의견의 확장)

(Joe가 그의 답변에서 지적한대로) Shannon-그의 1948 년 논문에서 " 수학적 커뮤니케이션 이론 "은 데이터 압축 이론을 공식화하고 무손실 데이터 압축에는 근본적인 한계가 있음을 확립했습니다. 엔트로피 속도라고하는이 한계는 H로 표시됩니다. H의 정확한 값은 정보 소스, 즉 소스의 통계적 특성에 따라 다릅니다. H에 가까운 압축률로 무손실 방식으로 소스를 압축 할 수 있습니다. H보다 더 나은 성능을 수학적으로 불가능합니다.

그러나 고 대비 가장자리가없고 부드러운 레벨 전환이있는 일부 클래스 이미지 (예 : 의료용 회색조 이미지)는 압축 할 수 있습니다 (효율적이지 않음).

JPEG-LSJPEG2000 은 의료 이미지의 무손실 저장 표준으로 보입니다. 압축 비율을 비교하려면이 표를 참조하십시오 (JPEG-LS는 압축률이 약간 향상됨).

"무손실 의료 이미지 압축"을 사용하여 도움이 될 수있는 다음 기사를 찾았습니다.

의료 영상 압축 기술에 관한 최근 (2011 년) 설문 조사 : 2 차원 의료 영상 압축 기술-설문 조사

...이 백서에서는 2D 스틸 의료 이미지에 대한 DCT, DWT, ROI 및 신경망을 기반으로하는 다양한 압축 기술에 대한 개요를 제공합니다.

무손실 모드에서 JPEG-LS와 JPG2000 : 두 개의 표준 무손실 압축 알고리즘에 대한 자세한 프리젠 테이션 그레이 스케일 의료 이미지의 무손실 압축 - 예술의 접근 방법의 전통의 효과 및 주

... 여러 해부 영역, 양식 및 공급 업체의 3 천 6 백 797 (3,679) 단일 프레임 그레이 스케일 이미지가 테스트되었습니다. ...

또 다른 설문 조사 : 현대 의료 이미지 압축 기술에 대한 설문 조사

편집하다

아마도 당신은 여전히 ​​"이미지의 엔트로피가 무엇입니까?" ... 그것은 이미지에 포함 된 정보양입니다 ...하지만 더 잘 이해하려면 이미지 압축에 일반적으로 사용되는 3 단계에 대한 내용을 읽어야합니다 .

  • 변환 (예 : 이산 웨이블릿 변환)
  • 양자화
  • 엔트로피 인코딩

Google을 사용하여 이미지 압축에 대한 자습서 나 책을 검색 할 수 있습니다 (예 : : 빠른 자습서 ) 온라인 기술 비디오 (예 : 강의 16-이미지 및 비디오 코딩 소개)를 시청할 수 있습니다 .


7

파일을 문자열로 생각하십시오.

문자열의 Kolmogorov 복잡성보다 더 나은 방법은 없습니다 (이것은 Komogorov 복잡성의 정의에 의한 것입니다).

문자열 길이를 수정하십시오. 이제 우리는 길이가 n 인 문자열 만보고 있습니다.

이러한 모든 문자열의 절반은 최대 1 비트로 압축 될 수 있습니다. 모든 문자열의 1/4은 최대 2 비트로 압축 될 수 있습니다. 이러한 모든 문자열의 1/8은 최대 3 비트로 압축 될 수 있습니다.

따라서 문자열의 일부 (이미지, 파일 등)를 2 : 1의 비율로 압축 할 수 있습니다. 압축이 작동하는 이유는 무엇입니까? 실제 사람들이 실제로 압축하려고하는 거의 모든 데이터는 고도로 구조화되어 있기 때문에 임의의 파일처럼 보이지 않습니다. 데이터를 무작위로 볼수록 압축하기가 어렵습니다. 그들은 손을 잡고 간다. 대부분의 문자열은 무작위로 보입니다.

이것을 실제로 보려면 임의의 프로세스를 사용하여 임의의 파일을 생성하십시오. 정말 정말 무작위 파일을 의미합니다. 이제 좋아하는 압축 알고리즘을 사용하여 압축하십시오. 거의 항상 같은 크기를 유지하거나 더 커집니다.

반대로 압축률이 높은 현이 있습니다. 다음 문자열을 취하십시오 : 100000..000 (1 뒤에 백만 개의 0). 이에 대한 설명은 이전 문장에 적합하며 컴퓨터는 해당 설명 (또는 매우 유사한 설명)에서 설명을 재구성 할 수 있습니다. 그러나 그 설명은 거의 백만 자릿수에 가깝습니다.

사실 그 속성을 가진 문자열 (압축성이 매우 높음)은 모든 가능한 문자열 중에서 극히 드물다. 두 번째 사실은 거의 모든 사람이 생성 한 데이터는 구조화되어 있기 때문에 매우 압축 가능하다는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.