这是matlab的一个例程,读取的图片就是亩扒灰度图像唤败,运行和耐颤没问题
ref = imread('pout.tif')
H = fspecial('Gaussian',[11 11],1.5)
A = imfilter(ref,H,'replicate')
subplot(1,2,1)imshow(ref)title('Reference Image')
subplot(1,2,2)imshow(A) title('Blurred Image')
[ssimval, ssimmap] = ssim(A,ref)
fprintf('The ssim value is %0.4f.\n',ssimval)
figure, imshow(ssimmap,[])
title(sprintf('ssim Index Map - Mean ssim Value is %0.4f',ssimval))
给定一个大小为的干净图像和噪声图像 ,均方误差定义为:然后就定义为:
其中为图片可能的最大像素值。如果每个像素都由 8 位二进制来表示,那么就为 255。通常,如果像素值由位二进制来表示,那么 。
一般地,针对 uint8 数据,最大像素值为慧答伍 255,;针对浮点型数据,最大像素值为 1。
上面是针对灰度图像的计算方法,如果是彩色图像,通常有三种方法来计算。
其中,第二和第三种方法比较常见。
compare_psnr(im_true, im_test, data_range=None) 函数原型可见此处
针对超光谱图像,我们需要针对不同波段分别计算 PSNR,然后取平均值,这个指前或标称为 MPSNR。
公式基于样本和之间的三个比较衡量:亮度举孙 (luminance)、对比度 (contrast) 和结构 (structure)。
一般取 。
那么
将设为 1,可以得到
每次计算的时候都从图片上取一个的窗口,然后不断滑动窗口进行计算,最后取平均值作为全局的 SSIM。
compare_ssim(X, Y, win_size=None, gradient=False, data_range=None, multichannel=False, gaussian_weights=False, full=False, **kwargs) 函数原型可见此处
针对超光谱图像,我们需要针对不同波段分别计算 SSIM,然后取平均值,这个指标称为 MSSIM。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)