• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: Matlab
  • 标签: PSNR  SSIM  matlab  

资源简介

计算图像的峰值信噪比和结构相似性的代码,使用MATLAB编写。完整可用。

资源截图

代码片段和文件信息

function [mssim ssim_map] = ssim(img1 img2 K window L)
%SSIM Index Version 1.0
%Copyright(c) 2003 Zhou Wang
%All Rights Reserved.
%
%The author was with Howard Hughes Medical Institute and Laboratory
%for Computational Vision at Center for Neural Science and Courant
%Institute of Mathematical Sciences New York University USA. He is
%currently with Department of Electrical and Computer Engineering
%University of Waterloo Canada.
%
%This is an implementation of the algorithm for calculating the
%Structural SIMilarity (SSIM) index between two images. Please refer
%to the following paper:
%
%Z. Wang A. C. Bovik H. R. Sheikh and E. P. Simoncelli “Image
%quality assessment: From error measurement to structural similarity“
%IEEE Transactios on Image Processing vol. 13 no. 4 Apr. 2004.
%----------------------------------------------------------------------
%Input : (1) img1: the first image being compared
%        (2) img2: the second image being compared
%        (3) K: constants in the SSIM index formula (see the above
%            reference). defualt value: K = [0.01 0.03]
%        (4) window: local window for statistics (see the above
%            reference). default widnow is Gaussian given by
%            window = fspecial(‘gaussian‘ 11 1.5);
%        (5) L: dynamic range of the images. default: L = 255
%Output: (1) mssim: the mean SSIM index value between 2 images.
%            If one of the images being compared is regarded as 
%            perfect quality then mssim can be considered as the
%            quality measure of the other image.
%            If img1 = img2 then mssim = 1.
%        (2) ssim_map: the SSIM index map of the test image. The map
%            has a smaller size than the input images. The actual size:
%            size(img1) - size(window) + 1.
%Default Usage:
%   Given 2 test images img1 and img2 whose dynamic range is 0-255
%   [mssim ssim_map] = ssim_index(img1 img2);
%
%Advanced Usage:
%   User defined parameters. For example
%
%   K = [0.05 0.05];
%   window = ones(8);
%   L = 100;
%   K = [0.01 0.03];
%   window = ones(8);
%   L = 255;
%   [mssim ssim_map] = ssim_index(img1 img2 K window L);
%
%See the results:
%
%   mssim                        %Gives the mssim value
%   imshow(max(0 ssim_map).^4)  %Shows the SSIM index map
%
%========================================================================

if (nargin < 2 || nargin > 5)        %参数个数小于2个或者大于5个则退出
   mssim = -Inf;
   ssim_map = -Inf;
   return;
end
if (size(img1) ~= size(img2))   %对比的两幅图大小要一致,否则退出
   mssim = -Inf;
   ssim_map = -Inf;
   return;
end
[M N] = size(img1);         %将图1的大小赋值给M N
if (nargin == 2)            %参数为2时
   if ((M < 11) || (N < 11)) %图像长宽都不能小于11,否则退出
        mssim = -Inf;
        ssim_map = -Inf;
        return
   end
   window = fspecial(‘gaussian‘ 11 1.5); %建立预定义的滤波算子。
   %为高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准值,单位为像素,默认值为0.5

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        6281  2017-10-29 10:56  ssim.m
     文件         520  2017-10-29 10:57  ssimTest.m

评论

共有 条评论