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)

PSNR = 10  cdot log_ {10}( frac {MAX_ {I} ^ {2}} {MSE})= 20  cdot log_ {10}( frac {MAX_ {I}} { sqrt {MSE}} )