FFMPEG/FFMPEG 기초

인코딩 된 영상의 품질을 측정하는 방법!!(PSNR, SSIM 등) 영상품질측정 기법들 정리

JasonCloud 2023. 5. 16. 17:21
반응형

영상 인코딩 시 영상 품질을 측정하는 방법은 여러 가지가 있습니다. 다음은 일반적으로 사용되는 몇 가지 방법입니다:

1. 주관적인 평가: 주관적인 평가는 사람들의 주관적인 인식을 기반으로 영상의 품질을 평가하는 방법입니다. 일반적으로 사람들에게 시각적인 품질 평가를 요청하고 평가자들은 영상의 해상도, 선명도, 색상 정확성, 압축 아티팩트 등을 고려하여 영상의 품질을 점수로 평가합니다.

2. 객관적인 측정: 영상의 품질을 객관적으로 측정하는 방법은 주관적 평가와는 달리 신호 처리 및 통계적인 기술을 사용하여 영상의 특성을 분석합니다. 몇 가지 일반적인 객관적 품질 측정 방법은 다음과 같습니다:

   - PSNR (Peak Signal-to-Noise Ratio): PSNR은 원본 영상과 압축된 영상 사이의 신호 잡음 비율을 측정합니다. 높은 PSNR 값은 좋은 품질을 나타냅니다.
   - SSIM (Structural Similarity Index): SSIM은 영상의 구조적 유사성을 측정하여 원본과 압축된 영상 사이의 품질을 평가합니다. 높은 SSIM 값은 좋은 품질을 나타냅니다.
   - VMAF (Video Multimethod Assessment Fusion): VMAF는 다양한 품질 평가 방법을 결합하여 영상 품질을 측정하는 방법입니다. 인공지능과 기계 학습을 활용하여 영상 품질을 예측합니다.

3. 대체 참조 방법: 대체 참조 방법은 원본 영상과 압축된 영상의 차이를 측정하여 품질을 평가하는 방법입니다. 예를 들어, 원본과 압축 영상 사이의 픽셀 차이나 모션 벡터 차이 등을 측정하여 품질을 평가할 수 있습니다.


4. MOS (Mean Opinion Score): MOS는 다수의 평가자들이 주관적으로 영상의 품질을 평가하는 방법입니다. 평가자들은 주어진 척도를 기반으로 영상의 품질을 점수로 평가하고, 이를 평균화하여 최종 MOS를 얻습니다. MOS는 평가자들의 평균적인 인식을 반영하며, 신뢰할 수 있는 영상 품질 측정 방법 중 하나입니다.

5. PQA (Perceptual Quality Assessment): PQA는 영상의 인지적 품질 평가에 초점을 맞춘 방법으로, 인간의 시각 시스템을 모방하여 영상의 품질을 측정합니다. PQA는 영상의 밝기, 명도, 색상, 대비 등을 고려하여 품질 점수를 계산합니다. VDP (Visual Discrimination Model)와 같은 모델을 사용하여 영상의 품질을 예측할 수도 있습니다.

이외에도 다양한 영상 품질 평가 방법이 있으며, 각각의 방법은 사용되는 영상의 특성과 목적에 따라 선택되어야 합니다. 일반적으로는 주관적 평가와 객관적 측정 방법을 조합하여 종합적인 영상 품질 평가를 수행하는 것이 좋습니다.

또한, 영상 품질 평가는 주관적인 요소가 있을 수 있으며, 인간의 인식 및 측정 방법의 한계를 갖고 있을 수 있습니다. 따라서 실제 사용자 경험과 피드백을 통해 영상의 품질을 평가하는 것도 중요한 요소입니다.

영상 품질 평가에 대한 연구와 기술은 지속적으로 진화하고 있으며, 다양한 측정 방법과 품질 모델이 개발되고 개선되고 있습니다. 이를 통해 더 정확하고 신뢰할 수 있는 영상 품질 평가가 가능해지고 있습니다.

 

객관적인 영상 품질 측정을 위해 PSNR(Peak Signal-to-Noise Ratio)을 사용하는 방법에 대해 설명드리겠습니다.

PSNR은 압축된 영상과 원본 영상 사이의 신호 대 잡음 비율을 나타내는 지표로서, 주로 영상 압축 품질 평가에 사용됩니다. PSNR은 신호(영상)와 잡음 사이의 거리를 측정하여 영상의 품질을 평가합니다. 높은 PSNR 값은 원본 영상과 압축된 영상 사이의 차이가 작다는 것을 의미하며, 따라서 좋은 품질을 나타냅니다.

PSNR은 다음과 같은 수식으로 계산됩니다:

PSNR = 10 * log10((MAX^2) / MSE)

여기서,
- MAX는 픽셀 값의 최대 크기를 나타냅니다. 예를 들어, 8비트 영상의 경우 MAX는 255입니다.
- MSE(Mean Squared Error)는 압축된 영상과 원본 영상 사이의 평균 제곱 오차를 의미합니다. MSE는 픽셀 간 차이의 제곱을 평균한 값으로 계산됩니다.

PSNR은 일반적으로 dB 단위로 표현되며, 높은 dB 값은 좋은 품질을 나타냅니다. 예를 들어, PSNR 값이 40 dB 이상이면 매우 높은 품질로 간주됩니다.

PSNR을 사용하여 영상 품질을 평가할 때 주의해야 할 점은 다음과 같습니다:

1. PSNR은 인간의 시각 시스템과의 관련성이 제한적입니다. 인간의 시각 시스템은 품질에 대한 인식이 PSNR 값과 일치하지 않을 수 있습니다. 따라서, 주관적 평가와 함께 사용되는 것이 좋습니다.

2. PSNR은 영상의 고주파 성분을 무시하고, 단순히 픽셀 값의 차이를 측정합니다. 따라서, PSNR은 압축 과정에서 발생하는 일부 변형이나 압축 아티팩트를 적절히 평가하지 못할 수 있습니다.

3. PSNR은 비선형적인 영상 특성을 반영하지 않습니다. 예를 들어, 밝기와 색상 정보의 중요성이 다른 영상에서는 PSNR 값만으로 품질을 정확하게 평가하기 어려울 수 있습니다

 

SSIM (Structural Similarity Index)은 영상 품질 측정에 사용되는 다른 객관적인 지표입니다. PSNR과 달리, SSIM은 영상의 구조적 유사성을 고려하여 품질을 평가하는 방법입니다. SSIM은 인간의 시각 시스템을 모방하여 영상의 인지적 품질을 평가합니다. SSIM은 영상의 대비, 구조, 밝기와 색상의 관계 등을 고려하여 품질을 평가하는데 더 적합합니다.

SSIM은 다음과 같은 수식으로 계산됩니다:

SSIM(x, y) = [l(x, y) * c(x, y) * s(x, y)]^α

여기서,
- x와 y는 비교할 두 개의 영상입니다.
- l(x, y)는 밝기 유사성을 측정하는 지표입니다.
- c(x, y)는 대비 유사성을 측정하는 지표입니다.
- s(x, y)는 구조 유사성을 측정하는 지표입니다.
- α는 각각의 요소에 대한 가중치입니다.

SSIM은 0부터 1까지의 값으로 표현되며, 1에 가까울수록 두 영상의 품질이 높다고 판단됩니다.

SSIM은 PSNR과 달리 인간의 시각 시스템을 모방한 지표로서, 영상의 구조적인 유사성을 고려하여 품질을 평가합니다. 따라서 SSIM은 영상 압축, 복원 및 변형에 대한 품질 평가에 더 적합할 수 있습니다.

SSIM은 PSNR보다 더 좋은 품질 평가를 제공하는 경향이 있지만, 여전히 주관적인 요소가 있을 수 있습니다. 따라서 SSIM은 주관적 평가와 함께 사용되어 종합적인 영상 품질 평가를 수행하는 것이 좋습니다.

영상 품질 평가에는 다양한 지표와 방법들이 존재하며, 각각의 방법은 사용되는 영상의 특성과 목적에 따라 선택되어야 합니다. PSNR과 SSIM은 객관적인 영상 품질 측정에 널리 사용되는 방법 중 일부입니다.

 

FFmpeg은 다양한 멀티미디어 작업을 수행하기 위한 강력한 도구로서, PSNR 측정도 가능합니다. 아래는 FFmpeg을 사용하여 PSNR을 측정하는 방법입니다:

  1. FFmpeg 설치: 먼저, FFmpeg을 시스템에 설치해야 합니다. FFmpeg의 공식 웹사이트(https://ffmpeg.org/)에서 운영 체제에 맞는 설치 파일이나 소스 코드를 다운로드하여 설치합니다.
  2. 비디오 파일 준비: PSNR을 측정할 비디오 파일을 준비합니다. 비교 대상이 되는 원본 비디오 파일과 압축된 비디오 파일 두 개가 필요합니다.
  3. 명령어 실행: 터미널 또는 명령 프롬프트에서 FFmpeg 명령어를 사용하여 PSNR을 측정합니다. 아래는 명령어의 기본 구문입니다:
csharpCopy code
ffmpeg -i 원본비디오파일 -i 압축된비디오파일 -lavfi "psnr" -f null -

여기서,

  • -i 원본비디오파일은 원본 비디오 파일의 경로와 파일 이름을 지정합니다.
  • -i 압축된비디오파일은 압축된 비디오 파일의 경로와 파일 이름을 지정합니다.
  • -lavfi "psnr"은 FFmpeg 필터 그래프를 통해 PSNR 필터를 적용합니다.
  • -f null -은 출력을 null로 설정하여 실제 출력 파일을 생성하지 않도록 합니다.
  1. 명령어 실행 및 결과 확인: 위의 명령어를 실행하면 FFmpeg이 비디오 파일을 처리하고 PSNR 값을 출력합니다. 실행 결과에서 PSNR 값이 표시되며, 각 채널(예: Y, U, V)에 대한 PSNR 값과 평균 PSNR 값이 표시됩니다.

PSNR 측정을 위해 FFmpeg을 사용할 때 몇 가지 주의 사항이 있습니다:

  • PSNR 측정은 비디오 프레임 단위로 이루어집니다. 따라서 비디오 파일의 모든 프레임에 대한 PSNR 값을 평균화하여 사용할 수 있습니다.
  • FFmpeg의 다른 옵션과 필터를 사용하여 측정을 더 세부적으로 조정할 수 있습니다. 예를 들어, 비디오의 특정 영역에 대한 PSNR 값을 측정하거나 특정 비트레이트로 압축된 파일과 비교할 수 있습니다. FFmpeg의 공식 문서와 온라인 리소스를 참조하여 필요한 옵션과 필터를 사용하는 방법을 알아보세요.

향상된 옵션과 필터를 사용하여 PSNR을 측정하고자 하는 경우, FFmpeg 명령어를 다음과 같이 수정할 수 있습니다:

```
ffmpeg -i 원본비디오파일 -i 압축된비디오파일 -lavfi "[0:v][1:v]psnr=stats_file=psnr.log" -f null -
```

위의 명령어에서 추가된 옵션은 다음과 같습니다:

- `stats_file=psnr.log`: PSNR 값을 통계 파일로 저장하는 옵션입니다. 이 옵션을 사용하면 PSNR 값이 포함된 통계 파일인 "psnr.log" 파일이 생성됩니다.

PSNR 값을 통계 파일로 저장한 후, 필요에 따라 파일을 열어 PSNR 값을 확인할 수 있습니다.

또한, FFmpeg을 사용하여 PSNR을 측정하는 방법 외에도, FFmpeg의 다른 옵션과 필터를 사용하여 영상의 품질을 분석하고 측정할 수도 있습니다. 예를 들어, SSIM 필터를 사용하여 SSIM 값을 측정하거나 VMAF(Video Multimethod Assessment Fusion) 필터를 사용하여 강력한 영상 품질 평가를 수행할 수도 있습니다. 이러한 옵션과 필터의 사용 방법은 FFmpeg의 공식 문서나 온라인 리소스를 참고하시면 도움이 될 것입니다.

FFmpeg을 사용하여 PSNR 값을 측정하고 영상의 품질을 평가하는 과정에서 필요한 옵션과 필터를 조정하고 실험하여 최적의 결과를 얻을 수 있습니다.

 

반응형

'FFMPEG > FFMPEG 기초' 카테고리의 다른 글

VMAF를 통한 영상품질 측정방법  (0) 2024.05.17
FFMPEG에서 h264_nvenc 인코딩 옵션  (0) 2023.03.07
디인터레이스 FFMPEG  (0) 2022.10.27
yadif 설정  (0) 2022.10.27
코덱이란 무엇인가?  (0) 2020.06.30