画像品質の客観評価指標として著名なPSNRとSSIMを用いた画像の客観評価ツールを作成しました。2つの画像のファイルパスを指定することで、PSNRとSSIMを算出することが可能です。実験等にお使いください。
PSNRとSSIMの詳細については、以下の記事をご参照ください。
PSNR:画像のPSNR(ピーク信号対雑音比)の測定(Python+OpenCV)
SSIM:画像のSSIM(structural similarity)の測定(Python+OpenCV)
画像品質客観評価プログラム(Python+OpenCV 4.5.5)
下記プログラムの9行目と10行目で、比較したい画像を指定してください。現状、カラー画像を読み込む想定で作っています。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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で画像品質を評価するツールを紹介しました。手早く画質を評価したいときに試してみてください。