图像增强评价指标

对于一种图像处理方法,怎么样来判断该算法效果的好坏呢?除了人眼本身的观察,还可以用某种指标来量化评判,本文将总结一下图像质量评判的方法及实现。

峰值信噪比

峰值信噪比(PSNR)是一个用来评估图像的保真性的客观标准,经常用作图像压缩等信号重建质量的评价,非常简单的方式是通过均方差(MSE)来定义:

\[MSE=\frac{\sum_{i=1}^{H}\sum_{j=1}^{W}{\left ( X\left ( i,j \right ) - Y\left ( i,j \right ) \right )}^2}{H * W} \]

\[PSNR=10\log_{10}{\frac{(2^n-1)^2}{MSE}} \]

其中,PSNR值越大,就代表失真越少,图像压缩典型的峰值信噪比在30-40dB,小于30dB的图像是无法忍受的错误图像。


function [PSNR, MSE] = psnr(X, Y)
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 计算峰值信噪比PSNR
% 将RGB转成YCbCr格式进行计算
% 如果直接计算会比转后计算值要小2dB左右(当然是个别测试)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
 if size(X,3)~=1   %判断图像时不是彩色图,如果是,结果为3,否则为1
   org=rgb2ycbcr(X);
   test=rgb2ycbcr(Y);
   Y1=org(:,:,1);
   Y2=test(:,:,1);
   Y1=double(Y1);  %计算平方时候需要转成double类型,否则uchar类型会丢失数据
   Y2=double(Y2);
 else              %灰度图像,不用转换
     Y1=double(X);
     Y2=double(Y);
 end
 
if nargin<2    
   D = Y1;
else
  if any(size(Y1)~=size(Y2))
    error('The input size is not equal to each other!');
  end
 D = Y1 - Y2; 
end
MSE = sum(D(:).*D(:)) / numel(Y1); 
PSNR = 10*log10(255^2 / MSE);

NC

NC对两幅图进行相似度的衡量,除了用眼观看的方法之外,我们可以食用更加精确的使用数据来客观评估归一化,归一化的相关系数(NC)提供了度量工具,,可以用来衡量图像的鲁棒性。

\[NC=\frac{\sum_{x=1}^{M} \sum_{y=1}^{N}W(x,y)W(x,y)^-))}{\sqrt{\sum_{x=1}^{M} \sum_{y=1}^{N} W(x,y)^2)} \sqrt{\sum_{x=1}^{M} \sum_{x=1}^{N}W(x,y)^2)}} \]

其中W(x,y)$W(x,y)^-$是代表的两张图,M和N代表的是图像分标率,NC取值一般在[0,1],越接近1表示鲁棒性越好。

posted @ 2019-06-20 15:43  牧轩居士  阅读(3650)  评论(0编辑  收藏  举报