记录数字图像处理大作业遇到的问题:
自己对图像进行灰度处理后,需要用一个客观的标准评判实现的效果,经过百度,我找到了一个评价标注:PSNR。
PSNR是指峰值信噪比,表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值的工程术语。由于许多信号都有非常宽的动态范围,峰值信噪比常用对数分贝单位来表示。
理论参考:PSNR-峰值信噪比(原理及python代码实现)
文章中提及“tensorflow框架里有直接关于psnr计算的函数”,需要用到tensorflow库。
原以为安装会很方便,想当然cmd,pip install tensorflow,没想到报红了!一看time out,以为是网络问题,再试一次发现还是相同的情况。突然感觉事情没有这么简单。
百度一看,大家都在下载的时候有各种各样的问题:
版本不匹配,numpy无法使用等等。
最终从知乎上找到答案。
需要先安装pip3(sudo apt-get install pip3)
CPU版: pip3 install tensorflow
GPU版: pip3 install tensorflow-gpu
安装成功截图在下,pycharm中引用没有报错:
最后使用
import cv2
import numpy as np
import math
import os
def psnr1(img1, img2):
mse = np.mean((img1/1.0 - img2/1.0) ** 2 )
if mse < 1.0e-10:
return 100
return 10 * math.log10(255.0**2/mse)
def psnr2(img1, img2):
mse = np.mean( (img1/255. - img2/255.) ** 2 )
if mse < 1.0e-10:
return 100
PIXEL_MAX = 1
return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))