2014-07-21 3 views
3

주어진 이미지의 압축률을 계산하려고합니다. 내 MATLAB 코드는 다음과 같습니다 :Matlab에서 imfinfo 함수를 사용하여 이미지 압축

임시 = imfinfo ('flowers.jpg'); comperssion_ratio = (temp.Width * temp.Height * temp.BitDepth)/temp.FileSize;

 FileSize: 11569 
     Format: 'jpg' 
    FormatVersion: '' 
      Width: 430 
     Height: 430 
     BitDepth: 8 
     ColorType: 'grayscale' 
FormatSignature: '' 
NumberOfSamples: 1 
    CodingMethod: 'Huffman' 
    CodingProcess: 'Sequential' 
     Comment: {} 

위의 코드를 실행하는 나에게 약 120 거대하고 잘 보이지 않는의 압축 비율을 제공합니다

imfinfo은 다음이 표시됩니다. 내가 잘못하고 있는게 있나요? 나는 MIT의 문서를 살펴 보았고 Width와 Height와 BitDepth를 8로 나눈 다음 FileSize로 나누어야 함을 보여 주었다. 왜 8로 나눕니 까?

답변

6

8의 배수는 비트를 바이트로 변환하는 것입니다. Matlab documentation for imfinfo

파일 크기 파라미터에 따라서

바이트로 압축 된 파일의 크기이다.

압축 비율은 다음과 같이 정의된다 : 당신 화소 폭을 제공/바이트 화상

압축 크기 바이트 파일의 크기를 압축

imfinfo, 높이 및 픽셀 당 비트 수 (비트 깊이). 압축되지 않은 크기를 비트 단위로 계산하고 8로 나눠 바이트를 얻을 수 있습니다.

비 압축 이미지의 경우 430 * 430 * 8/8 = 184,900 바이트입니다.

압축 된 이미지의 크기는 11569 바이트입니다.

압축 비율은 실제로 184,900/11569 또는 15.98이며 JPEG에 대한 합리적인 값이 아닙니다.

+0

+1 - 확실한 설명 – rayryeng