精华内容
下载资源
问答
  • 2022-06-08 15:52:16

    计算PSNR、SSIM、熵、MSE、梯度

    去雾处理中需要对图片进行批量读取,批量处理,批量储存,这个代码是我在毕设过程中使用的代码,个人感觉质量还不错

    %选择某一组图片进行评价
    clc;clear all;close all
    path0= 'D:\learnapp\matlab\bin\code\defog\persontask\clear2\';  %清晰图
    path00= 'D:\learnapp\matlab\bin\code\defog\persontask\fog2\';  %雾图
    
    path1='D:\learnapp\matlab\bin\code\defog\persontask\work1\pic_1\';
    path2='D:\learnapp\matlab\bin\code\defog\persontask\work2\pic_1\';
    path3='D:\learnapp\matlab\bin\code\defog\persontask\work3\pic_1\';
    path4='D:\learnapp\matlab\bin\code\defog\persontask\work4\pic_1\';
    path5='D:\learnapp\matlab\bin\code\defog\persontask\work5\pic_1\';
    path6='D:\learnapp\matlab\bin\code\defog\persontask\work6\pic_1\';
    path101='D:\learnapp\matlab\bin\code\defog\persontask\work101\pic_1\';%复原图
    %addpath 'D:\learnapp\matlab\bin\code\defog\persontask\work2'
    
    i=2;
    
    clear_image=imread([path0,'image',num2str(i),'.jpg']);
    fog_image=imread([path00,'image',num2str(i),'.jpg']);
    recover_image3=imread([path3,'image',num2str(i),'.jpg']);
    recover_image4=imread([path4,'image',num2str(i),'.jpg']);
    recover_image5=imread([path5,'image',num2str(i),'.jpg']);
    recover_image101=imread([path101,'image',num2str(i),'.jpg']);
    
    figure;
    subplot(2,3,1);imshow(clear_image);title('(a)清晰图像');
    subplot(2,3,2);imshow(fog_image);title('(b)雾霾图像');
    subplot(2,3,3);imshow(recover_image101);title('(c)本文算法');
    subplot(2,3,4);imshow(recover_image5);title('(d)算法1');
    subplot(2,3,5);imshow(recover_image3);title('(e)算法2');
    subplot(2,3,6);imshow(recover_image4);title('(f)算法3');
    
    
    
    [SNR,PSNR]=calculate_snr_psnr(clear_image,recover_image);
    SSIM=calculate_ssim(clear_image,recover_image);
    MSE=calculate_nmse(clear_image,recover_image);
    shang=calculate_entropy(recover_image);
    radient=Avg_Gradient(recover_image);
    
    

     

    %图片写入
    clc,clear
    
    addpath 'D:\learnapp\matlab\bin\code\defog\persontask\work101'
    %path1 = 'D:\learnapp\matlab\bin\code\defog\persontask\clear1\'; %%需要处理的图像文件夹
    path2='D:\learnapp\matlab\bin\code\defog\persontask\work101\pic_4\';%%处理后图像所在文件夹
    %path2='D:\learnapp\matlab\bin\code\defog\persontask\work1\pic_1\';
    path1 = 'D:\learnapp\matlab\bin\code\defog\persontask\fog1\';
    
    
    img_path_list = dir(strcat(path1, '*.jpg'));
    %获取该文件夹中所有bmp格式的图像,strcat:串联字符串;dir:列出文件夹内容  
    img_num = length(img_path_list);%获取图像总数量 
    
    for j = 1 : img_num %逐一读取图像  
        image_name_old = img_path_list(j).name;% 图像名
        image = imread(strcat(path1, image_name_old));% 暂存原图像数据
        
        image_name_new = strcat('image', num2str(j), '.jpg');% 新图像名
    
       image1=main_file(image);
       %image1=image;
        imwrite(image1,strcat(path2, image_name_new));% 将新图像吗赋予原数据
    end 
    
    
     %imwrite(K2,[Output_path,'wie',int2str(i),'.jpg']);
    
    
    %该函数用于计算SNR信噪比和PSNR峰值信噪比
    %信噪比与峰值信噪比的值越大代表图像的质量越好。
    %I表示原始图像
    %J表示恢复后的图像
    function [snr,psnr] = calculate_snr_psnr(I,J)
        %如果是I灰度图像只有二维,如果I是彩色图像将会有三维
        dim = length(size(I));%保存的是I的维度
        M = size(I,1);
        N = size(I,2);
        dif = (I - J).^2;
        I_2 = I.^2;
        if dim == 2
            val1 = sum(sum(dif));
            val2 = sum(sum(I_2));
        else
            val1 = sum(sum(sum(dif)));
            val2 = sum(sum(sum(I_2)));
        end
        snr = 10*log10(val2/val1);
        psnr = 10*log10((255*255*M*N)/val1);
    end
    

     

    function EN=calculate_entropy(F)
    
    %[name,path]=uigetfile({'*.*','请选择融合图像F'},'请打开融合图像F');file=strcat(path,name);F=imread(file);
    if size(F,3)==3
        F=rgb2gray(F);
    end
    p=imhist(F);
    p(p==0)=[];
    p=p/numel(F);
    EN=-sum(p.*log2(p));
    return
    function SSIM=calculate_ssim(img1,img2)
    
    % ========================================================================
    % SSIM Index with automatic downsampling, Version 1.0
    % Copyright(c) 2009 Zhou Wang
    % All Rights Reserved.
    %
    % ----------------------------------------------------------------------
    
    % This is an implementation of the algorithm for calculating the
    % Structural SIMilarity (SSIM) index between two images
    %
    % Please refer to the following paper and the website with suggested usage
    %
    % Z. Wang, A. C. Bovik, H. R. Sheikh, and E. P. Simoncelli, "Image
    % quality assessment: From error visibility to structural similarity,"
    % IEEE Transactios on Image Processing, vol. 13, no. 4, pp. 600-612,
    % Apr. 2004.
    %
    % http://www.ece.uwaterloo.ca/~z70wang/research/ssim/
    %
    % Note: This program is different from ssim_index.m, where no automatic
    % downsampling is performed. (downsampling was done in the above paper
    % and was described as suggested usage in the above website.)
    %
    % Kindly report any suggestions or corrections to zhouwang@ieee.org
    %
    %----------------------------------------------------------------------
    %
    %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.
    %
    %Basic Usage:
    %   Given 2 test images img1 and img2, whose dynamic range is 0-255
    %
    %   [mssim, ssim_map] = ssim(img1, img2);
    %
    %Advanced 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
    %========================================================================
    
    %[name,path]=uigetfile({'*.*','请选择原图像'},'请打开原图像');file1=strcat(path,name);img1=imread(file1);
    %[name,path]=uigetfile({'*.*','请选择融合图像F'},'请打开融合图像F');file2=strcat(path,name);img2=imread(file2);
    
    if size(img1,3)==3
        img1=rgb2gray(img1);
    end
    if size(img2,3)==3
        img2=rgb2gray(img2);
    end
    [M N] = size(img1);
    
    img1 = double(img1);
    img2 = double(img2);
    K = [0.01 0.03]; window = fspecial('gaussian', 11, 1.5);L = 255;
    % automatic downsampling
    f = max(1,round(min(M,N)/256));
    %downsampling by f
    %use a simple low-pass filter 
    if(f>1)
        lpf = ones(f,f);
        lpf = lpf/sum(lpf(:));
        img1 = imfilter(img1,lpf,'symmetric','same');
        img2 = imfilter(img2,lpf,'symmetric','same');
    
        img1 = img1(1:f:end,1:f:end);
        img2 = img2(1:f:end,1:f:end);
    end
    
    C1 = (K(1)*L)^2;
    C2 = (K(2)*L)^2;
    window = window/sum(sum(window));
    
    mu1   = filter2(window, img1, 'valid');
    mu2   = filter2(window, img2, 'valid');
    mu1_sq = mu1.*mu1;
    mu2_sq = mu2.*mu2;
    mu1_mu2 = mu1.*mu2;
    sigma1_sq = filter2(window, img1.*img1, 'valid') - mu1_sq;
    sigma2_sq = filter2(window, img2.*img2, 'valid') - mu2_sq;
    sigma12 = filter2(window, img1.*img2, 'valid') - mu1_mu2;
    
    if (C1 > 0 & C2 > 0)
       ssim_map = ((2*mu1_mu2 + C1).*(2*sigma12 + C2))./((mu1_sq + mu2_sq + C1).*(sigma1_sq + sigma2_sq + C2));
    else
       numerator1 = 2*mu1_mu2 + C1;
       numerator2 = 2*sigma12 + C2;
    	denominator1 = mu1_sq + mu2_sq + C1;
       denominator2 = sigma1_sq + sigma2_sq + C2;
       ssim_map = ones(size(mu1));
       index = (denominator1.*denominator2 > 0);
       ssim_map(index) = (numerator1(index).*numerator2(index))./(denominator1(index).*denominator2(index));
       index = (denominator1 ~= 0) & (denominator2 == 0);
       ssim_map(index) = numerator1(index)./denominator1(index);
    end
    SSIM = mean2(ssim_map);
    end
    
    
    %该函数用于计算MSE计算归一化均方误差
    %值越小图像质量越好
    %I表示原始图像
    %J表示恢复后的图像
    function nmse = calculate_nmse(I,J)
        %如果是I灰度图像只有二维,如果I是彩色图像将会有三维
        dim = length(size(I));%保存的是I的维度
        dif = (I - J).^2;
        I_2 = I.^2;
        if dim == 2
            val1 = sum(sum(dif));
            val2 = sum(sum(I_2));
        else
            val1 = sum(sum(sum(dif)));
            val2 = sum(sum(sum(I_2)));
        end
        nmse = val1/val2;
    end
    
    function outval = Avg_Gradient(img) 
    % 平均梯度,也称为清晰度,反映了图像中的微小细节反差与纹理变化特征,同时也反映了图像的清晰度,越大越清晰
     
    if nargin == 1 
        img = double(img); 
        % Get the size of img 
        [r,c,b] = size(img); 
         
        dx = 1; 
        dy = 1; 
        for k = 1 : b 
            band = img(:,:,k); 
            [dzdx,dzdy] = gradient(band,dx,dy); 
            s = sqrt((dzdx .^ 2 + dzdy .^2) ./ 2); 
            g(k) = sum(sum(s)) / ((r - 1) * (c - 1)); 
        end 
        outval = mean(g); 
    else 
        error('Wrong number of input!'); 
    end
    

     

    %评价并写入表格
    clc;clear all;
    path0= 'D:\learnapp\matlab\bin\code\defog\persontask\clear2\';  %清晰图
    path1= 'D:\learnapp\matlab\bin\code\defog\persontask\fog2\';  %雾图
    path2='D:\learnapp\matlab\bin\code\defog\persontask\work101\pic_4\';%复原图
    %addpath 'D:\learnapp\matlab\bin\code\defog\persontask\work5'
    %
    img_path_list = dir(strcat(path1, '*.jpg'));
    %获取该文件夹中所有bmp格式的图像,strcat:串联字符串;dir:列出文件夹内容  
    img_num = length(img_path_list);%获取图像总数量 
    
    PSNR=zeros(img_num,1);
    SSIM=zeros(img_num,1);
    MSE=zeros(img_num,1);
    shang=zeros(img_num,1);
    gradient=zeros(img_num,1); 
    
    
    for i=1:img_num
     
      clear_image=imread([path0,'image',num2str(i),'.jpg']);%原图
      fog_image=imread([path1,'image',num2str(i),'.jpg']);%雾图
      recover_image=imread([path2,'image',num2str(i),'.jpg']);%去雾图
     
    [SNR(i),PSNR(i)]=calculate_snr_psnr(clear_image,recover_image);
    SSIM(i)=calculate_ssim(clear_image,recover_image);
    MSE(i)=calculate_nmse(clear_image,recover_image);
    shang(i)=calculate_entropy(recover_image);   
    gradient(i)=Avg_Gradient(recover_image);
     
    end
    
    xlswrite('data2.xlsx',PSNR,1,'E1');%cdefg
    xlswrite('data2.xlsx',SSIM,1,'P1');
    xlswrite('data2.xlsx',MSE,1,'AA1');
    xlswrite('data2.xlsx',shang,1,'AL1');
    xlswrite('data2.xlsx',gradient,1,'AW1');
    
    
    
    

    更多相关内容
  • 改进的彩色图像去雾效果评价方法
  • 单图像去雾质量主观评价
  • 改资源主要包含大量图像去雾算法,均为matlab实现,本人亲测可用!...里面还有一些针对去雾算法的评价指标,可以直接运行,对于研究去雾算法的同学,可是很大的福利哈 赚点积分,下载下俩能够使用的不要忘了5星好评哈
  • 图像去雾质量评价标准
  • 一、简介 基于matlab图像去雾质量评价: 通过新增可见变比、平均梯度、饱和像素百分比三个指标评价去雾图像质量。 1 图像去雾 早期的雾天图像的去雾处理方法经过多年的发展,逐步演化成两类研究方向,从图像增强的...

    一、简介

    基于matlab图像去雾质量评价: 通过新增可见变比、平均梯度、饱和像素百分比三个指标评价去雾图像质量。

    1 图像去雾
    早期的雾天图像的去雾处理方法经过多年的发展,逐步演化成两类研究方向,从图像增强的角度来研究以及从大气成像的物理模型的角度来研究。

    基于图像增强的去雾方法不考虑雾天成像的影响因素,从图像增强的角度增加图像对比度,模拟人类视觉感知,突出图像的细节以改善图像的视觉效果。Retinex就是一种常用的基于图像增强的去雾方法,其理论基础是图像的色感一致性。

    基于物理模型的去雾方法研究大气散射模型,从理论上分析图像在雾的影响下的成像机理,通过构建相应的数学模型进行计算来去除雾气的影响,复原出清晰的图像效果。He等依据大气散射模型提出了暗原色先验理论来估计透射率,算法简单而且非常有效,极大地推动了该研究方向的发展。

    随着深度学习理论的发展,通过构建深度网络,图像去雾处理有了更丰富的手段。Cai等提出一种端到端的去雾网络DehazeNet,对其中的卷积神经网络进行特殊设计来提取相关特征,使用局部极值操作抑制透射率的噪声,同时利用新的激活函数 (双边纠正线性单元) 提高透射率的精度,对基于深度学习的图像去雾起到了很好的推动作用。

    2 图像质量评价
    图像质量评价对图像处理算法的可行性分析以及某类算法达成效果的比较都起着非常重要的指导作用。随着图像处理技术的发展,对于图像质量评价的研究也日益深入,新的评价指标和评价算法不断涌现,共同推动了图像质量评价的进步。

    图像质量评价的方法大致可分为两类:主观评价和客观评价[6]。主观评价是由参与者对图像质量进行直接评价,是图像质量评价最直观的方法。但由于个别人对于图像的理解差异性很大,主观评价方法如果要达到预期的评价效果,需要有多人的参与和判断,以群体的形式来消除个体差异性,这就导致主观评价方法受到很大的约束和限制,只能在某些特定的场合下采用。

    客观评价通过建立数学模型来模拟人的视觉系统,根据数学公式的推导,采用相应的算法对图像质量进行评价。按照是否需要原始图像作为参考信息,客观评价方法又分为无参考 (No-reference, NR) 评价、部分参考 (Reduced-Reference, RR) 评价和全参考 (Full-Reference, FR) 评价三类。

    常见的主观评价和客观评价的分类如图1所示。
    在这里插入图片描述
    图1 图像质量评价分类

    在客观评价中的全参考评价模式下,关于原始图像和处理后的图像之间的比对,通常会采用峰值信噪比 (PSNR) 进行衡量。PSNR从统计学的角度来衡量原始图像和处理后图像的关系,计算原始图像和处理后图像的对应像素点灰度值之间的差异。对于尺寸为M×N的图像,PSNR定义如下:
    在这里插入图片描述
    其中,处理前图像在坐标空间 (i, j) 的灰度值使用R (i, j) 表示,处理后图像在坐标空间 (i, j) 的灰度值使用F (i, j) 表示。通过计算得出的PSNR值越大,表示处理后图像与原始图像之间的失真越小,图像处理后的质量越好。从公式 (1) 可以看出,PSNR计算非常简单,但是其仅仅是基于统计学的角度来考虑处理后图像和原始图像对应像素点灰度值之间的差异,忽略了图片内部像素点之间的关系,这就导致其会和主观评价产生一定的误差。

    2004年,Wang等人提出了结构相似度 (SSIM) 方法,将图像内部的结构特征和图像的亮度、图像的对比度一起作为重要的参数。因为其考虑了图像的内部结构在人眼视觉上的差异,该方法能和主观评价取得较为一致的结果。假设原始图像和处理后图像分别定义为X和Y,则图像亮度信息L (X, Y) 、图像对比度信息C (X, Y) 和图像结构信息S (X, Y) 分别计算如下:
    在这里插入图片描述
    其中图像X的均值使用μX表示,图像Y的均值使用μY表示,图像X的标准差使用σX表示,图像Y的标准差使用σY表示,图像X与图像Y的协方差使用σXY表示,而公式中出现的C1、C2和C3是为计算的可靠性而定义的常数。综合公式 (2) 、公式 (3) 和公式 (4) ,定义两幅图像的SSIM如下:
    在这里插入图片描述
    其中α、β、γ是为了调整亮度信息、对比度信息和结构信息三者所占比重而设定的参数。通过以上公式计算出的SSIM (X, Y) 的取值在0和1之间,越接近1,表示处理后的图像和原始图像失真程度越小。

    和PSNR进行对比,SSIM考虑了图像内部的结构相关信息,更加符合人类视觉对图像特征的理解,因此其应用更加广泛。

    二、部分源代码

    
    
    %%%% Cleaning
    clc
    clear all
    close all
    
    %%%% Images reading: the input 2 images must be grayscale
    
    NameOri='Original.pgm';
    %NameResto='Restored.pgm';
    NameResto='Restored2.pgm';
    %NameResto='Restored3.pgm';
    %NameResto='Restored4.pgm';
    %NameResto='Restored5.pgm';
    
    I1=imread(NameOri);
    I1=double(I1);
    % if the input image is a color image, use following line
    % I1=double(rgb2gray(uint8(I1)));
    
    [nl,nc]=size(I1);
    
    R1=imread(NameResto);
    R1=double(R1);
    % if the input image is a color image, use following line
    % R1=double(rgb2gray(uint8(R1)));
    
    %%%% Figure 1
    figure(1)
    colormap gray
    subplot(1,2,1)
    imagesc(I1)
    axis image
    title('Original')
    subplot(1,2,2)
    imagesc(R1)
    axis image
    title('Restored')
    
    function [Mask Crr]=functionContrastAt5PerCent(I1,S,percentage)
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % Inputs %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % I1 : Original image
    % S : SubWindow size (default = 7)
    % perCentage : Visibility percentage (default = 5)
    % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % Outputs %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % Mask : Mask of the visibility contrast > percentage
    % Crr : valeur du contraste visibile (>percentage)
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    if nargin<1
        error('not enough argument')
    end
    if nargin<2
        S=7;
    end
    if nargin<3
        percentage=5;
    end
    
    [nl,nc,dd]=size(I1);
    
    %%% 4-neighborhood pixels
    seh=[0 1 0;0 1 0;0 0 0];
    seg=[0 0 0;1 1 0;0 0 0];
    
    %%% minimum and maximum calculation
    I1pad= padarray(I1,[3 3],'symmetric');
    
    Igmin11=imerode(I1pad,seg,'full');%腐蚀
    Ihmin11=imerode(I1pad,seh,'full');
    Igmax11=imdilate(I1pad,seg,'full');%膨胀
    Ihmax11=imdilate(I1pad,seh,'full');
    
    Igmin1=Igmin11(3+(1:nl),3+(1:nc));
    Ihmin1=Ihmin11(3+(1:nl),3+(1:nc));
    Igmax1=Igmax11(3+(1:nl),3+(1:nc));
    Ihmax1=Ihmax11(3+(1:nl),3+(1:nc));
    
    %%% pads image and minimum and maximum matrix
    I1pad= padarray(I1,[S S],'symmetric');
    
    Igmin1pad= padarray(Igmin1,[S S],'symmetric');
    Ihmin1pad= padarray(Ihmin1,[S S],'symmetric');
    Igmax1pad= padarray(Igmax1,[S S],'symmetric');
    Ihmax1pad= padarray(Ihmax1,[S S],'symmetric');
    
    %%% Initialization
    Is=zeros(S,S);
    Mask=false(nl+2*S,nc+2*S);
    Crr=zeros(nl+2*S,nc+2*S);
    s=1;
    percentage=percentage/2;
    
    h = waitbar(0,'Please wait...');
    
    %%% subwindow of size S*S
    for ii=1:round(S/2):nl
        for jj=1:round(S/2):nc
    
            Is=double(I1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));
    
            Isgmin=double(Igmin1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));
            Ishmin=double(Ihmin1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));
            Isgmax=double(Igmax1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));
            Ishmax=double(Ihmax1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));
    
            %%% horizontal and vertical contrasts
            Cgxx1=zeros(1,S^2);
            Chxx1=zeros(1,S^2);
    
            Ismin=round(min(Is(:)));
            Ismax=round(max(Is(:)));
    
            if(Ismin<=0) Ismin=1;end
            if(Ismin>256) Ismin=256;end
            if(Ismax<=0) Ismax=1; end
            if(Ismax>256) Ismax=256;end
    
            Fcube=false(S,S,Ismax-Ismin+1);
    
            C=zeros(1,Ismax);
    
            G=zeros(1,Ismax);
    
            for s=Ismin:Ismax  %%% we vary the threshold
    
                Fg=0;   %%% Pixels cardinal separated by s
                pg=1;   %%% Contrast indice
                Fh=0;
                ph=1;
    

    三、运行结果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、matlab版本及参考文献

    1 matlab版本
    2014a

    2 参考文献
    [1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
    [2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
    [3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
    [4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
    [5]韦忠亮,许光宇,张顺香.基于MATLAB的去雾图像质量评价系统[J].黑龙江工业学院学报(综合版). 2019,19(08)

    展开全文
  • 标签:PSNR评价指标SSIM PSNR(Peak Signal to Noise Ratio)峰值信噪比: MSE表示当前图像X和参考图像Y的均方误差(Mean Square Error),H、W分别为图像的高度和宽度 PSNR的单位是dB,数值越大表示失真越...

    标签: PSNR  评价指标  SSIM 

    • PSNR(Peak Signal to Noise Ratio)峰值信噪比:

            MSE表示当前图像X和参考图像Y的均方误差(Mean Square Error),H、W分别为图像的高度和宽度

            PSNR的单位是dB,数值越大表示失真越小。n为每像素的比特数,一般的灰度图像取8,即像素灰阶数为256. 

            PSNR是最普遍和使用最为广泛的一种图像客观评价指标,然而它是基于对应像素点间的误差,即基于误差敏感的图像质量评价。由于并未考虑到人眼的视觉特性(人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响等),因而经常出现评价结果与人的主观感觉不一致的情况。

    PSNR高于40dB说明图像质量极好(即非常接近原始图像),

    在30—40dB通常表示图像质量是好的(即失真可以察觉但可以接受),

    在20—30dB说明图像质量差;

    最后,PSNR低于20dB图像不可接受

    • SSIM(Structural Similarity)结构相似度 

            分别表示图像X和Y的均值,分别表示图像X和Y的方差,表示图像X和Y的协方差,即 

            SSIM分别从亮度、对比度、结构三方面度量图像相似性 

             为常数,为了避免分母为0的情况,通常取

    一般地K1=0.01, K2=0.03, L=255. 则

            SSIM取值范围[0,1],值越大,表示图像失真越小.
            SSIM的特殊形式如下: 

    原文:https://blog.csdn.net/zjyruobing/article/details/49908979 

    展开全文
  • 本算法代码用matlab实现,用于计算图像去噪效果客观指标:峰值信噪比,均方误差,漏检率、漏检率,信噪比改善因子等,代码带有注释。
  • 写文章之前一共处理了五+n张图片,其中有个几个小时还没出结果的被... 图五是算法B未经调参数的结果,感觉去雾效果很棒。 由于后续操作图片,尤其是大图片需要挨个像素操作,极其费时,所以建议在去雾算法中调整参数。

    写文章之前一共处理了五+n张图片,其中有个几个小时还没出结果的被我Alt+F4了,剩下文章的几张,供大家参考。
    参考&鸣谢:
    https://blog.csdn.net/wsp_1138886114/article/details/95012769?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

    https://blog.csdn.net/baimafujinji/article/details/27206237

    https://blog.csdn.net/baimafujinji/article/details/30060161

    https://www.cnblogs.com/rust/p/10457915.html

    https://blog.csdn.net/leviopku/article/details/83898619

    图1是华为手机自带的去雾效果。处理瞬间完成。但是尺寸被严重压缩。颜色过于鲜艳且细节全无。我做的仅仅是将处理后图片与原图拼接起来。(图片超了,截图了)
    华为手机效果
    图2,图3是去雾算法A的效果。过曝且算法中没有相关调节变量,白天图片晚上图片各一张大家参考一下。效果很差对吧!处理时间1秒。本人后续会再尝试修改完善一下。
    算法A晚上
    算法A白天
    图四是去雾算法B的效果。经过参数计算和调整,大概还原了真实的色彩。感觉还有进一步提升空间,但是巨耗时,本身已经用了2秒。
    算法B调整
    图五是算法B未经调参数的结果,感觉去雾效果很棒。
    算法B未调整
    由于后续操作图片,尤其是大图片需要挨个像素操作,极其费时,所以建议在去雾算法中调整参数。

    展开全文
  • O-HAZE 上进行实验,并采用无参考图像质量评估指标以及运行时间来衡量多种典型图像去雾算法的去雾效果。实验结果表明基于深度学习的去雾算法不仅具有不错的去雾效果,而且在单幅图像上的去雾效率更高。 (2)针对...
  • 此外,还从人类视觉感知的角度提出了一个新的去雾效果评价指标,从而为图像去雾与去雾效果评价问题提供了新的解决思路。实验结果表明,与已有方法相比,提出的基于融合策略的去雾算法能更好地提高各种雾天图像的清晰...
  • 该系统能通过全局直方图均衡化、局部直方图均衡化、多尺度Retinex、暗通道先验4种经典去雾算法对雾天降质图像进行不同程度的复原,统计图像质量评价指标对比去雾效果。实验结果表明,经过不同去雾算法处理的图像的清晰...
  • 图像去雾技术综述

    万次阅读 2017-08-04 16:55:40
    研究图像去雾技术有一段时间,阅读很多文献以及实现了很多算法。因此将个人对图像去雾技术的理解写成这篇文章,避免自己忘记,以及跟广大网友交流学习。 1、概述 图像去雾的研究算法有很多,但是主要分为两类:...
  • 针对传统的单幅图像去雾算法容易受到雾图先验知识制约及颜色失真等问题,提出了...实验结果表明,所提方法在合成有雾图像和真实自然雾天图像的实验中均能取得良好的去雾效果,在主观评价和客观评价上均优于其他对比算法。
  • 针对暗通道先验去雾算法中透射率估值不准确以及天空区域或大面积白色区域去雾后存在...实验结果表明,所提方法得到的透射率和大气光值的估值准确,取得了良好的去雾效果,在主观评价和客观评价方面均优于其他对比算法。
  • 针对颜色衰减先验去雾算法存在的透射率估计不准确、整体颜色偏暗及去雾效果欠佳等问题,提出一种基于改进动态大气散射系数函数的图像去雾方法。首先,定义大气散射系数,其为一种图像景深与图像景深指数函数乘积形式的...
  • 在雾天环境下,户外视频的可视性将受到极大...此外,该算法还基于暗通道先验设计了评价去雾结果的方法,并使用迭代的方式根据雾气浓度自动调整去雾参数,从而在视频中雾气浓度变化的情况下,始终能达到理想的去雾效果
  • 传统基于暗通道先验的图像去雾算法不能有效去除有雾图像在景深突变处的雾点,边界处容易引起光晕效应,对此提出一种基于暗通道先验的自适应...可将客观质量综合评价准则提高10%,能够抑制光晕效应,提高有雾图像的视觉效果.
  • 图像去雾的算法历史与综述

    千次阅读 2020-12-20 23:48:34
    图像去雾的算法历史与综述1. 前言其实之前对图像去雾也没有什么深入的理解,只是了解,实现过一些传统的图像去雾方法而已。个人感觉,在CNN模型大流行的今天,已经有很多人忽略了传统算法的发展,以至于你今天去搜索...
  • 双边滤波去雾

    2018-09-22 14:37:12
    去云处理是遥感图像处理以及大气纠正的重要步骤。...斯高通滤波和提出的新算法进行了比较,并结合主观和客观的评价方法对去云效果做出评价。结果表明,新算法优于传统 滤波方法,且对于薄云图像效果更佳。
  • 目前主流的基于暗原色先验的去雾方法的...本文在对原有算法进行改进之后,采用了主观和客观相结合的评价方法,选取了多种去雾算法与本文算法进行对比评价实验。实验表明,本文算法去雾之后的图像视觉效果更加真实自然。
  • 提出了一种基于暗通道图像质心偏移量的去雾算法。该算法对雾天图像暗通道进行了聚类分析, 按场景划分图像并分析和计算了每个场景暗通道图像的质心偏移量, 以用于场景的透射率修正。结合四叉树搜索算法, 提出了基于景...
  • 提供了13种图片去雾增强方法,有直方图均衡,clahe,暗原色算法,改进的暗原色算法,实时去雾,引导滤波去雾,天空去雾等,同时给出图像增强前后图像质量评价,可以对jpg,bmp等图片格式进行去雾增强处理,效果非常...
  • 图像去雾概述

    千次阅读 2021-11-23 11:03:00
    其中在雾天拍摄的图像容易受雾或霾的影响,导致图片细节模糊、对比度低以至于丢失图像重要信息,为解决此类问题图像去雾算法应运而生。图像去雾算法是以满足特定场景需求、突出图片细节并增强图片质量为目的的一种...
  • 图像去雾在科研界是一个很有挑战性的话题,通过很多人的不断努力与实践,去雾方法越来越多,当然效果也越来越好,提到去雾算法,就不得不说何凯明博士的基于暗通道的去雾算法。本片文章主要以更加易懂的方式让大家...
  • 图像去雾: 在雾天拍摄的图像容易受雾或霾的影响,导致图片细节模糊、对比度低以至于丢失图像重要信息,为解决此类问题图像去雾算法应运而生。图像去雾算法是以满足特定场景需求、突出图片细节并增强图片质量为目的...
  • 去雾论文总结

    千次阅读 多人点赞 2018-03-15 18:09:37
    去雾论文总结 从2017年10月起,我向导师申请转换研究到图像处理方向,于是导师给了我研究课题——图像去雾,到这学期开始2018年3月,研一第一个学期的学习并没有什么进展,期间产生的种种突发奇想的研究想法还没来...
  • 针对传统单幅图像去雾算法容易受到雾图先验信息制约而导致颜色失真,以及现有深度学习...结果表明,所提方法在合成有雾图像和真实自然雾图的实验中均能取得良好的去雾效果,在主观评价和客观评价方面均优于其他对比算法。
  • 图像去雾算法是以满足特定场景需求,突出图片细节并增强图片质量为目的的图像分析与处理方法。在雾霾天气下,造成了户外图像采集设备捕获的图像清晰度和对比度大幅下降,甚至会造成图像色彩偏移、细节大量丢失的现象...
  • 鉴于现有方法不能很好恢复场景深度变化较大的图像,本文融合大气衰减模型与变分偏微分方程,提出了一种单幅彩色图像去雾算法。该算法利用数学形态学中的中值集算子构造局部白平衡处理,精确估计大气光参数。设计了一种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 602
精华内容 240
关键字:

去雾效果评价