HDR画像の評価にPSNRを使いたいのですが、プログラムがわかりません。
具体的に行いたいことは「.hdr」と「.exr」を比べて評価することです。
その際にこちらのサイト[python]画質評価としてのPSNRのプログラムを使いました。プログラムは下です。
サイトでは8bitだったのでPSNRを求めるところが255だったので、16bitの65535に書き直しました。
python
1import cv2 2import numpy as np 3import math 4 5#画像の読み込み 6Original = cv2.imread('Test1.hdr') #元画像 7Distorted = cv2.imread('Redu1.exr') #再構築した画像 8 9#画素値の読み込み 10pixel_value_Ori = Original.flatten().astype(float) 11pixel_value_Dis = Distorted.flatten().astype(float) 12 13#画素情報の取得 14imageHeight, imageWidth, BPP = Original.shape 15 16#画素数 17N = imageHeight * imageWidth 18 19#1画素あたりRGB3つの情報がある. 20addr = N * BPP 21 22#RGB画素値の差の2乗の総和 23sumR=0 24sumG=0 25sumB=0 26 27#差の2乗の総和を計算 28for i in range(addr): 29 if(i%3==0): 30 sumB += pow ( (pixel_value_Ori[i]-pixel_value_Dis[i]), 2 ) 31 elif(i%3==1): 32 sumG += pow ( (pixel_value_Ori[i]-pixel_value_Dis[i]), 2 ) 33 else: 34 sumR += pow ( (pixel_value_Ori[i]-pixel_value_Dis[i]), 2 ) 35 36#PSNRを求める 37MSE =(sumR + sumG + sumB) / (3 * N ) 38PSNR = 10 * math.log(65535*65535/MSE,10) 39print('PSNR',PSNR)
一応このプログラム自体は動きました。
ここでわからないのは、この数値であっているのかと言うことです。
「.hdr」と「.exr」と拡張子が違うためプログラム中の数値を変えただけでいいのでしょうか?
具体的にどうすればいいのか教えていただきたいです。
何卒お願い致します。
回答1件
あなたの回答
tips
プレビュー