Python 计算彩色图像信噪比

Python下的彩色图像信噪比计算公式
在进行图像处理的实验过程中,为了偷懒,喜欢用matlab计算信噪比。一方面简单,另一方面可以核对通过C语言得到的数据。然而matlab的体积太巨巨巨巨大,从而转向了python。当然,在这个年代也是很火的一门语言。开始吧,不说废话了。
本代码块基于python3.6

from PIL import Image
import numpy
import math
import matplotlib.pyplot as plt
#导入你要测试的图像
im = numpy.array (Image.open ('lena512color.bmp'),'f')#将图像1数据转换为float型
im2 = numpy.array (Image.open ('lenatest.bmp'),'f')#将图像2数据转换为float型
print (im.shape,im.dtype)
#图像的行数
height = im.shape[0]
#图像的列数
width = im.shape[1]


#提取R通道
r = im[:,:,0]
#提取g通道
g = im[:,:,1]
#提取b通道
b = im[:,:,2]
#打印g通道数组
#print (g)
#图像1,2各自分量相减,然后做平方;
R = im[:,:,0]-im2[:,:,0]
G = im[:,:,1]-im2[:,:,1]
B = im[:,:,2]-im2[:,:,2]
#做平方
mser = R*R
mseg = G*G
mseb = B*B
#三个分量差的平方求和
SUM = mser.sum() + mseg.sum() + mseb.sum()
MSE = SUM / (height * width * 3)
PSNR = 10*math.log ( (255.0*255.0/(MSE)) ,10)

print (PSNR)
im = numpy.array (Image.open ('lena512color.bmp'))#无符号型
im2 = numpy.array (Image.open ('lena_12_13_0.bmp'))
plt.subplot (121)#窗口1
plt.title('origin image')
plt.imshow(im,plt.cm.gray)

plt.subplot(122)#窗口2
plt.title('rebuilt image')
plt.imshow(im2,plt.cm.gray)
plt.show()
**#技术比较辣鸡,一个比较笨拙的办法**

测试例子

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值