JPEG 크기가 8px 또는 16px의 배수이면 품질, 파일 크기 또는 기타 이점이 있습니까?

StackOverflow https://stackoverflow.com/questions/74892

문제

JPEG 압축 인코딩 프로세스는 특정 이미지를 8x8 픽셀 블록으로 분할하여 향후 손실 및 무손실 압축에서 이러한 블록을 사용합니다. [원천]

또한 이미지가 다중 1MCU 블록(최소 코딩 단위로 정의됨, '보통 양방향으로 16픽셀')인 경우 JPEG에 대한 무손실 변경이 수행될 수 있다고 언급됩니다. [원천]

저는 제품 이미지 작업을 하고 있으며 최종 이미지 크기(예: 480x360px 크기의 이미지 사용)와 16의 배수를 사용하면 얼마나 많은 이점을 얻을 수 있는지 알고 싶습니다.16의 배수가 아닌 것(예: 484x362).이 예에서는 최종 이미지의 추가 변경, 편집 또는 재압축에 관심이 없습니다.

내가 아는 특정 답변에 더 가까워지려면 대체로 일반성이 있어야 합니다.64K의 480x360 이미지가 주어지고 Photoshop에서 최대 품질로 저장되었습니다. [예]:

  • 484x362 이미지에서 품질 손실을 예상할 수 있나요?
  • 예상되는 파일 크기 추가량(이 예의 경우 추가 공간은 흰색 픽셀임)
  • 8px 그리드보다 커지면 다른 단점이 있습니까?

특정 예를 사용하는 것이 임의적이라는 것을 알고 있지만 8px가 아닌 그리드를 깨뜨릴 때 어떤 수준의 타협을 처리해야 하는지 이해하는 것이 여전히 도움이 될 것입니다(나와 잠재적으로 이미지 크기를 고려하는 다른 모든 사람에게).

여기서 중요한 문제는 8픽셀로 나눌 수 있는 이미지가 8픽셀로 나눌 수 없는 이미지보다 품질이 더 높은지 여부에 대한 논쟁입니다.

도움이 되었습니까?

해결책

8픽셀이 컷오프입니다.그 이유는 JPEG 이미지가 단순히 8x8 DCT 블록의 배열이기 때문입니다.이미지 해상도가 양방향에서 mod8이 아닌 경우 인코더는 측면을 다음 mod8 해상도까지 채워야 합니다.실제로 이는 비트 단위로 비용이 많이 들지 않습니다.훨씬 더 나쁜 것은 이미지에 블록 경계에 있지 않은 선명한 검은색 선(예: 레터박스 이미지)이 있는 경우입니다.이는 비디오 인코딩에서 특히 문제가 됩니다.이것이 문제가 되는 이유는 날카로운 선의 주파수 변환이 계수의 가우스 분포이므로 코딩할 비트 수가 엄청나게 많기 때문입니다.

궁금한 분들을 위해, 내부 압축(예: JPEG 이미지)에서 가장자리를 채우는 가장 일반적인 방법은 가장자리 앞의 픽셀 선을 미러링하는 것입니다.예를 들어, 세 줄을 채워야 하고 X 줄이 가장자리이고 X+1 줄은 X 줄과 같고 X+2 줄은 X-1 줄과 같고 X+3 줄은 X- 줄과 같습니다. 2.이는 추가 라인의 변환 계수 비용을 매우 효과적으로 최소화합니다.

그러나 인터 코딩에서 패딩 알고리즘은 일반적으로 마지막 줄을 단순히 복제합니다. 미러 방법은 비디오 압축과 같은 인터 압축에는 잘 작동하지 않기 때문입니다.

다른 팁

서브샘플링으로 인해 8픽셀 경계 대신 16픽셀 경계를 사용해야 하는 경우도 있습니다.두 번째 픽셀은 인코딩 프로세스 중에 모두 버려지고 해당 8x8 DCT 블록은 16x16으로 시작하여 다시 16x16으로 디코딩됩니다.최고 품질 설정에서는 문제가 되지 않습니다.

8 또는 16의 배수인 이미지 크기는 디스크 크기에 큰 영향을 미치지 않지만 반복되는 패턴이나 패턴이 있는 경우와 같이 시각적 내용을 8x8 픽셀 격자에 정렬할 수 있으면 극적인 절약 효과를 얻을 수 있습니다. 이미지의 질감입니다.

크기가 8배인 JPG는 품질 손실 없이 회전/뒤집힐 수도 있습니다.예를 들어 gthumb은 Linux에서 이 작업을 수행할 수 있습니다.

무엇 토메츠키 말했다.올바른 배수가 없으면 무손실 뒤집기 및 회전 알고리즘이 작동하지 않습니다.그 이유는 안전하게 무시할 수 있는 오른쪽/아래쪽 패딩이 이제는 무시할 수 없는 왼쪽/위쪽에서 끝나기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top