Tensorflow图像评估一个通道

问题描述 投票:0回答:1

我正在使用带有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]的操作,但这显然不适用于此处。

python tensorflow keras rgb
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.