ssim算法的matlab代码
(2012-10-09 15:32:03)
标签:
杂谈 |
分类: matlab |
ssim算法的matlab代码
---转载http://bbs.blackbap.org/thread-2742-1-1.html
function [mssim, ssim_map] = ssim(img1, img2, K, window, L)
%
%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
%
depends on
the window size and the downsampling factor.
%
�sic Usage:
% Given 2 test images img1 and
img2, whose dynamic range is 0-255
%
% [mssim, ssim_map] =
ssim(img1, img2);
%
�vanced Usage:
% User defined parameters. For
example
%
% K = [0.05 0.05];
% window = ones(8);
% L = 100;
% [mssim, ssim_map] =
ssim(img1, img2, K, window, L);
%
%Visualize the results:
%
% mssim
%Gives the
mssim value
% imshow(max(0,
ssim_map).^4) %Shows the SSIM
index map
%========================================================================
if (nargin < 2 | nargin > 5)
ssim_index = -Inf;
ssim_map = -Inf;
return;
end
if (size(img1) ~= size(img2))
ssim_index = -Inf;
ssim_map = -Inf;
return;
end
[M N] = size(img1);
if (nargin == 2)
if ((M < 11) | (N <
11))
ssim_index = -Inf;
ssim_map = -Inf;
return
end
window = fspecial('gaussian',
11, 1.5); %
K(1) = 0.01;
% default
settings
K(2) = 0.03;
%
L = 255;
%
end
if (nargin == 3)
if ((M < 11) | (N <
11))
ssim_index = -Inf;
ssim_map = -Inf;
return
end
window = fspecial('gaussian',
11, 1.5);
L = 255;
if (length(K) == 2)
if (K(1) < 0 | K(2) < 0)
ssim_index =
-Inf;
ssim_map =
-Inf;
return;
end
else
ssim_index = -Inf;
ssim_map = -Inf;
---转载http://bbs.blackbap.org/thread-2742-1-1.html
function [mssim, ssim_map] = ssim(img1, img2, K, window, L)
%
%Input : (1) img1: the first image being compared
%
%
%
%
%
%
%
%
%Output: (1) mssim: the mean SSIM index value between 2 images.
%
%
%
%
%
%
%
%
�sic Usage:
%
%
%
%
�vanced Usage:
%
%
%
%
%
%
%
%Visualize the results:
%
%
%
%========================================================================
if (nargin < 2 | nargin > 5)
end
if (size(img1) ~= size(img2))
end
[M N] = size(img1);
if (nargin == 2)
end
if (nargin == 3)