Python 计算彩色图像信噪比

来源:互联网 发布:卸载软件需要密码 编辑:程序博客网 时间:2024/06/07 00:55

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

from PIL import Imageimport numpyimport mathimport 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*Rmseg = G*Gmseb = 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)#窗口1plt.title('origin image')plt.imshow(im,plt.cm.gray)plt.subplot(122)#窗口2plt.title('rebuilt image')plt.imshow(im2,plt.cm.gray)plt.show()
**#技术比较辣鸡,一个比较笨拙的办法**

测试例子

原创粉丝点击