인코딩된 파일의 PSNR, SSIM 값 계산을 위한 프리셋

by JKyle posted Sep 05, 2018
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

인코딩 후 인코딩된 파일을 원본과 비교하여 PSNR(Peak Signal-to-Noise Ratio), SSIM(Structural Similarity) 값을 계산하는 프리셋입니다.

 

<주의 사항 및 사용법>

 

1. 인코딩 전 원본 파일은 샤나인코더의 파일 목록에 있어야 합니다.

2. 인코딩 후 인코딩된 파일은 샤나인코더가 설치된 경로에 복사 또는 이동되어야 합니다. (output.mp4 등 확장자를 보존하면서 비교적 간단한 이름으로 변경해 주십시오.)

3. 이 프리셋을 불러옵니다.

4. F8을 눌러 이 프리셋의 '인코딩 설정 부분'에 있는 'output.mp4'를 샤나인코더가 설치된 경로에 복사한 파일 이름으로 변경해야 합니다.

5. [인코딩 시작] 버튼을 눌러 작업을 시작하고, 작업이 끝난 후 파일 목록에서 원본의 이름을 오른쪽 클릭 후 [기록 보기] 창을 열어 PSNR, SSIM 값을 확인합니다.

 

※ 이 프리셋은 비디오 스트림에만 적용되는 프리셋입니다. 오디오와는 상관없습니다.

해상도 변경(리사이즈)을 했거나 영상의 총 프레임 수가 달라지는 작업을 했다면 이 프리셋을 사용할 수 없으니 주의해 주십시오.

※ 소프트웨어 필터인 ssim과 psnr을 집중적으로 사용하는 프리셋이니 '하드웨어 가속 디코딩'을 꺼주시는 게 속도 향상에 도움이 됩니다. (관련 포스팅 https://shana.pe.kr/shanaencoder_tip/49279 참고)

 

---------------------------------------------------------------------------------------------------------

 

<프리셋 세부사항 설명>

 

필터 매개변수에 대한 설명은 아래와 같습니다.

 

=============================================================================

 

 -lavfi "[1:v][0:v]ssim;[1:v][0:v]psnr"

    // -lavfi는 -filter_complex와 동일한 명령어입니다.

    // 다수의 input, 다수의 output을 가지는 filtergraph를 사용할 때의 명령어

    // [1:v][0:v]ssim은 두 번째 입력 파일(파일 인덱스 1)의 비디오 스트림을 ssim 필터의 첫 번째 입력값으로,

        // 첫 번째 입력 파일(파일 인덱스 0)의 비디오 스트림을 ssim 필터의 두 번째 입력값으로 하라는 의미

    // [1:v][0:v]psnr 역시 마찬가지

    // ssim과 psnr 모두 첫 번째 입력값은 처리된 영상을, 두 번째 입력값은 원본 영상을 입력 변수로 받음.

    // 각각의 필터 처리 결과를 따로 지정하지 않으면 standard output(샤나에서는 '기록 보기')으로 출력.

 

=============================================================================

 

인코딩 설정 부분에 대한 설명은 아래와 같습니다.

 

=============================================================================

 

 -i output.mp4

    // 샤나의 설치 경로에 있는 인코딩 결과 파일 output.mp4를 두 번째 입력 파일(파일 인덱스 1)로 입력하라는 의미

    // 다른 이름으로 복사했다면 반드시 해당 이름으로 변경할 것

    // 샤나의 목록에 있는 파일은 첫 번째 입력 파일(파일 인덱스 0)로 입력됨.

    // 샤나는 병합 모드 외에 다수의 input을 받지 않기 때문에 이를 우회하는 방법임.

    // (병합 모드는 처리 방법이 다르기 때문에 이 프리셋에 사용하기엔 부적절)

 

 -f null

    // 출력 파일은 없음.

    // 결과 확인은 '기록 보기' 창으로

 

=============================================================================

 

---------------------------------------------------------------------------------------------------------

 

<결과값 해석에 주의할 점>

 

PSNR은 dB 단위이며 크면 클수록 좋다고 판단하는데, 8비트 bit depth를 가진 영상이면 일반적으로 30~50 정도의 값을 가집니다. ( https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio )

PSNR 값은 순전히 MSE(Mean Squared Error)에 반비례하는 값입니다. 즉, MSE가 작을수록 PSNR이 커집니다. 따라서 '평균값'이 가지는 대표값으로서의 한계를 그대로 가집니다. 즉, 큰 값들의 영향을 많이 받고 작은 값들에 대한 대표성이 상대적으로 떨어집니다. 영상의 관점에서 말하자면, 색조나 명암이 어두운 부분(암부)의 오차는 상대적으로 무시된다는 의미이며 flat area 역시 상대적으로 무시된다는 의미입니다.

AQ(adaptive quantization)와 psy-rd, cutree가 적용되면 PSNR 값은 줄어듭니다. (x265, x264에서 이 옵션들은 일반적으로 활성화되어 있습니다.)

 

SSIM 값은 PSNR을 개선한 지표로, 원본과의 구조적 유사성을 대표하는 값입니다. 이 값은 -1에서 1의 범위를 가지며 1에 가까울수록 원본과 가깝다고 알려져 있습니다.

하지만 SSIM 역시 한계를 갖고 있는데, 심리시각적인 보정을 위해 psy-rd를 적용하면 이 값은 줄어듭니다.

보다 자세한 내용은 위키피디어 해당 문서( https://en.wikipedia.org/wiki/Structural_similarity )를 참조하시기 바랍니다.

 

TAG •