PSNRPythonコード
Psnr Python Code
Flatten()は、1次元の2次元配列に展開できます。
a.flatten(order = ’C’)
1次元に折りたたまれた配列のコピーを返します。 order= 'C'
行優先(Cスタイル)の順序でフラット化することを意味します。 order='F'
列優先(Fortranスタイル)の順序でフラット化することを意味します。
その行と列のベクトルの差は平坦化( 'C')と平坦化( 'F')します。
超解像画像再構成では、PSNRを計算する際に、計算を容易にするために、2次元データの行列をベクトル形式の1次元ベクトルに形成する必要があります。
# PSNR.py import numpy as np import math def psnr(target, ref, scale): # Target: a target image ref: reference image scale: Size # assume RGB image target_data = np.array(target) target_data = target_data[scale:-scale,scale:-scale] ref_data = np.array(ref) ref_data = ref_data[scale:-scale,scale:-scale] diff = ref_data - target_data diff = diff.flatten('C') rmse = math.sqrt( np.mean(diff ** 2.) ) return 20*math.log10(1.0/rmse)