cwebp 명령의 -psnr 옵션 함정과 -qrange가옵니다!

cwebp의 품질-q ≠ 인간에게 있어서의 화질



WebP 이미지로 변환하기 cwebp 명령에는 마무리 화질의 목표 값을 지정할 수 있는 -psnr 옵션이 있습니다.

소위 품질( -q 매개변수)은 데이터 압축 처리의 품질이며 -q 75가 인간의 지각에 75점의 품질을 의미하는 것은 아니다. 오히려 이미지의 내용에 따라 편차가 나옵니다.

그 문제를 해소하는 수단으로서``는 「-psnr 괜찮아!」라고 생각했습니다만,

cwebp 명령에는 목표 PSNR에서 품질을 결정하는 -psnr 옵션이 있습니다. - Qiita

결과적으로 -psnr 옵션을 실용할 수 없었습니다…

PSNR의 약점



PSNR은 간단한 계산식이므로 결과가 직관적이지 않을 수 있습니다.

MSE/PSNR vs SSIM 비교 이미지 소개 - Qiita

약점이 노출된 것은 다음과 같이 대부분을 배경이 차지하는 이미지였습니다.



예를 들면 풍경 사진에 대해 -psnr 를 35, 40, 45, 50 으로 변화시켜도 위화감은 없습니다만,



반지의 촬영 사진을 마찬가지로 변환하면 굉장히 「거친!」라고 느끼는 결과가 됩니다.



이것은 변화가 적은 배경이 「차이의 적음을 황벌」해 버리기 때문에, 인지적인 특징인 반지 부분에 주름이 와서 차이를 과소 평가해 버리기 때문입니다.

PSNR40이라고 하면 적당히 깨끗한 화질을 기대합니다만, 품질 파라미터 -q 20 쪽이 깨끗할 정도이므로, -psnr 40 에 실제로 적용된 -q 파라미터는 꽤 낮은(10 미만?) 합니다.



최저 품질을 지정하고 싶다 → -qrange로 할 수 있을 것 같다



이 문제를 회피하는 한 가지 방법으로 품질 -q 의 최저치를 지정할 수 있게 된다면…
  printf("  -qrange <min> <max> .... specifies the permissible quality range\n"
         "                           (default: 0 100)\n");
-qrange 옵션에는 처리 시간이 길다는 약점도 있습니다만, -psnr 파라미터가 릴리스되면
cwebp -psnr 42 -qrange 40 95 -o output.webp input.jpg

같은 사용법이 베스트가 될지도 모릅니다. 재미!

좋은 웹페이지 즐겨찾기