PSNRとSSIMを用いた画像品質の客観評価ツール(Python+OpenCV)

画像品質の客観評価指標として著名なPSNRとSSIMを用いた画像の客観評価ツールを作成しました。2つの画像のファイルパスを指定することで、PSNRとSSIMを算出することが可能です。実験等にお使いください。

PSNRとSSIMの詳細については、以下の記事をご参照ください。

PSNR:画像のPSNR(ピーク信号対雑音比)の測定(Python+OpenCV)

SSIM:画像のSSIM(structural similarity)の測定(Python+OpenCV)

画像品質客観評価プログラム(Python+OpenCV 4.5.5)

下記プログラムの9行目と10行目で、比較したい画像を指定してください。現状、カラー画像を読み込む想定で作っています。

import cv2
import sys
def main():
print("OpenCV Version: " + str(cv2.__version__))
# Loading image data (COLOR)
filename1 = "data/lenna.png"
filename2 = "data/lenna.png"
image1 = cv2.imread(filename1, cv2.IMREAD_COLOR)
image2 = cv2.imread(filename2, cv2.IMREAD_COLOR)
if image1 is None:
print("Cannot find image1 : " + filename1)
sys.exit()
if image2 is None:
print("Cannot find image2 : " + filename2)
sys.exit()
# Evaluation with PSNR and SSIM
PSNREval(image1, image2, 255)
SSIMEval(image1, image2)
def PSNREval(image1, image2, R):
PSNR_opencv, _ = cv2.quality.QualityPSNR_compute(image1, image2)
print("PSNR Evaluation Results")
print(" PSNR OpenCV (Blue): " + str(PSNR_opencv[0]))
print(" PSNR OpenCV (Green): " + str(PSNR_opencv[1]))
print(" PSNR OpenCV (Red): " + str(PSNR_opencv[2]))
print(" PSNR OpenCV (RGB Average): " + str((PSNR_opencv[0] + PSNR_opencv[1] + PSNR_opencv[2]) / 3))
def SSIMEval(image1, image2):
SSIM_opencv, _ = cv2.quality.QualitySSIM_compute(image1, image2)
print("SSIM Evaluation Results")
print(" SSIM OpenCV (Blue): " + str(SSIM_opencv[0]))
print(" SSIM OpenCV (Green): " + str(SSIM_opencv[1]))
print(" SSIM OpenCV (Red): " + str(SSIM_opencv[2]))
print(" SSIM OpenCV (RGB Average): " + str((SSIM_opencv[0] + SSIM_opencv[1] + SSIM_opencv[2]) / 3))
if __name__ == "__main__":
main()

テストされたい方がいましたら、以下の画像でテスト可能です(上:ノイズフリー画像、下:ノイズ画像)。

上記のテストデータで実験すると、以下のような出力となります。RGBの各チャネルのPSNRとSSIM及び、それらの平均が出力される仕様となっています。

PSNR Evaluation Results
  PSNR OpenCV (Blue): 18.648646140356288
  PSNR OpenCV (Green): 18.925611831799632
  PSNR OpenCV (Red): 19.047800261972913
  PSNR OpenCV (RGB Average): 18.874019411376278
SSIM Evaluation Results
  SSIM OpenCV (Blue): 0.25734574441533353
  SSIM OpenCV (Green): 0.3501503799557696
  SSIM OpenCV (Red): 0.3082769634911793
  SSIM OpenCV (RGB Average): 0.30525769595409413

まとめ

PSNRとSSIMで画像品質を評価するツールを紹介しました。手早く画質を評価したいときに試してみてください。

スポンサーリンク

シェアする

フォローする