2019-11-01 15:08:55

오늘은 2D 이미지 품질 평가(image quality assessment, IQA) 알고리즘 중 DOG-SSIM에 대해 소개하겠다. 이 알고리즘의 original paper는 Soo-Chang Pei에 의해 2015년에 TIP에 개제된 "Image Quality Assessment Using Human Visual DOG Model Fused With Random Forest"이다. 

 

이 알고리즘을 구성하는 것 중 중요한 요소들은 크게 세 가지다.

DoG 분해 + SSIM + Random Forest.

 

DoG-SSIM 모델에 대해 간단히 설명하겠다. 먼저 원본 이미지와 왜곡 이미지에 대해서 DoG 분해를 실시한다. DoG(Difference of Gaussian)는 LoG(Laplacian of Gaussian)와 유사하게 이미지의 엣지 정보를 도출하는 방법이다. DoG 분해를 통해 원본 이미지와 왜곡 이미지 모두 각각 다른 주파수 정보를 지니고 있는 5장의 엣지 맵을 갖게 된다. 결과적으로 가는 엣지 맵부터 굵은 엣지 맵까지 다양한 엣지맵을 얻게 된다. 그리고 원본 이미지의 5장의 엣지 맵과 왜곡 이미지의 5장의 엣지 맵 간의 유사도를 SSIM을 이용해서 구한다. (SSIM 말고도 PSNR, FSIM 등과 같은 2D FR 알고리즘은 모두 사용할 수 있다. 하지만 저자들은 SSIM을 사용하는 것이 이 알고리즘에서는 가장 좋은 성능을 낸다는 것을 실험을 통해 확인했다.) 결과적으로 5개의 품질 점수를 얻게 된다.

 

 

DoG를 사용하면 사실상 색상 정보는 모두 잃게 되므로, 색상 정보의 품질을 측정하기 위해서 RGB 색공간을 YIQ 색공간으로 변환하여 색상 정보를 담고 있는 I 채널과 Q 채널의 유사도를 다음과 같은 공식으로 계산한다. 결과적으로 한개의 품질 점수를 더 얻게 된다. 

 

 

이 6개의 품질 점수(5개의 엣지 품질 점수 + 1개의 색상 품질 점수)를 Random Forest 회귀 모델의 입력 특성으로 사용한다. Random Forest는 여러 개의 결정 트리(decision tree)를 조합한 방법으로 회귀와 분류의 목적으로 많이 사용되는 머신러닝 알고리즘이다. 잘 훈련시킨 Random Forest를 통해서 최종적인 품질 점수를 얻게 된다. 이것이 DOG-SSIM의 작동원리다. 

 

이 알고리즘에서 흥미로운 것은 DoG 엣지 맵들에서 얻은 품질 점수가 대비감도함수(contrast sensitivity function, CSF)와 비슷한 특성을 지닌다는 것이다. 사람의 시각 시스템은 고주파정보와 저주파정보보다는 중간 정도의 주파수에 더 민감하다는 것이 DoG-SSIM에서도 확인된다. DoG 맵들의 비교를 통해 얻은 5개의 각각의 품질 점수와 경험 품질에 관한 레이블인 MOS(mean opinion score)간의 상관계수 값을 보면 중간 정도의 주파수 때 가장 높은 상관계수값을 지님을 알 수 있다(아래 표 참고).

 

출처: original 논문

 


 

개인적으로는 왜곡 이미지의 품질을 평가할 때 원본 이미지를 참조하는 FR(full-reference) IQA 알고리즘은 학습 또는 훈련에서 자유로운 알고리즘이 더 좋다고 생각한다. 그런 면에서는 DOG-SSIM은 살짝 아쉽다. Random Forest를 적절히 잘 훈련시켜줘야만 제대로 작동할 수 있는 알고리즘이기 때문이다. 그래서 그런지 인기 있는 FR IQA 알고리즘들은 대개 훈련이 필요없는 알고리즘들이다. 대표적으로 SSIM, FSIM, GMSD, VSI 등이 그렇다. 

 

DoG에 관한 좀 더 자세한 설명은 아래 링크 건 포스팅을 참고하자. SIFT 알고리즘을 설명한 포스팅인데 DoG에 대한 내용이 자세하게 포함되어 있다. => https://bskyvision.com/21

 

DOG-SSIM의 코드는 공개되어 있지 않지만, 알고리즘이 어렵지 않아 구현하고자 하면, 충분히 구현할 수 있을 것 같다. 참고로 저자들이 사용한 Random Forest의 매트랩 코드는 여기서 다운로드 받을 수 있다. 

=> https://code.google.com/archive/p/randomforest-matlab/