我正在使用带有Tensorflow后端的Keras,并且想要评估两个图像之间的PSNR。我可以评估所有三个RGB通道,如下所示:
def psnr(hr, sr):
return tf.image.psnr(hr, sr, max_val=255)
使用tensorflow的psnr函数(tf.image.psnr
但是我只能在第一个频道上进行评估呢?我假设我需要从张量中提取那些值。在python中,通常可以执行类似hr [:,0,0]的操作,但这显然不适用于此处。
im1 = tf.image.convert_image_dtype(np.random.randn(64,64,3), tf.float32)
im2 = tf.image.convert_image_dtype(np.random.randn(64,64,3), tf.float32)
psnr = tf.image.psnr(tf.expand_dims(im1[:,:,0], 2),
tf.expand_dims(im2[:,:,0], 2), max_val=255)
with tf.Session() as sess:
print (sess.run(psnr))
使用im1[:,:,0]
获取第一个通道,并使用h x w x 1
添加一个通道,将其重塑为expand_dims