图像客观质量评价指标IDL实现

平均绝对误差MAE
;用于计算原始影像与经过处理后影像的平均绝对误差 MAE
function calMAE, image_or, image_deal
  nDim = size(image_or,  /n_dimension)
  nDim2 = size(image_deal, /n_dimension)
  if nDim le 2 and nDim2 le 2 then begin
    valid_data_or = image_or[where(~finite(image_or, /nan))]
    valid_data_deal = image_deal[where(~finite(image_deal, /nan))]
    if n_elements(valid_data_or) eq n_elements(valid_data_deal) then begin
      nums = n_elements(valid_data_or)
      MAE = total(abs(valid_data_or - valid_data_deal)) / nums     
      endif else begin
        print, 'vaild data in 2 image is not equal'
        return, 0
      endelse
    endif else begin
      print, 'image is not le 2 dims.'
      return, 0
  endelse
  return, MAE
end 
均方误差MSE
;用于计算原始影像与经过处理后影像的均方误差MSE
function calMSE, image_or, image_deal
  nDim = size(image_or,  /n_dimension)
  nDim2 = size(image_deal, /n_dimension)
  if nDim le 2 and nDim2 le 2 then begin
    valid_data_or = image_or[where(~finite(image_or, /nan))]
    valid_data_deal = image_deal[where(~finite(image_deal, /nan))]
    if n_elements(valid_data_or) eq n_elements(valid_data_deal) then begin
      nums = n_elements(valid_data_or)
      MSE = total((valid_data_or - valid_data_deal)*(valid_data_or - valid_data_deal)) / nums
    endif else begin
      print, 'vaild data in 2 image is not equal'
      return, 0
    endelse
  endif else begin
    print, 'image is not le 2 dims.'
    return, 0
  endelse
  return, MSE
end
峰值信噪比PSNR

PSNR 峰值信噪比 - Peak Signal to Noise Ratio
peak的中文意思是顶点。而ratio的意思是比率或比列的。整个意思就是到达噪音比率的顶点信号,psnr一般是用于最大值信号和背景噪音之间的一个工程项目。通常在经过影像压缩之后,输出的影像都会在某种程度与原始影像不同。为了衡量经过处理后的影像品质,我们通常会参考PSNR值来衡量某个处理程序能否令人满意。它是原图像与被处理图像之间的均方误差相对于(2n-1)2的对数值(信号最大值的平方,n是每个采样值的比特数),它的单位是dB。
在这里插入图片描述

;用于计算单波段影像的峰值信噪比PSNR
function calPSNR, image, MSE
  nDim = size(image, /n_dimension)
  if nDim le 2 then begin
    image_max = max(image, /nan)    
    PSNR = 20 * alog(image_max / sqrt(MSE))
    return, PSNR
  endif else begin
    print, 'image dims is not le 2.'
    return, 0
  endelse
end
信息熵H

信息熵H是图像信息量的反映,是衡量图像信息丰富程度的重要指标。单波段图像的信息熵越大,信息量越大。
在这里插入图片描述
其中bit是色深的最大灰度值,p(i)是灰度值i的概率密度。

; 用于计算单波段影像的信息熵H
function calEntroy, image
  nDim = size(image, /n_dimension)  
  if nDim le 2 then begin
    pixNums = histogram(image, binsize=1, /nan)
    nums = total(pixNums, /nan)
    pby = pixNums*1d / nums
    imageEntroy = -total(pby*alog(pby) / alog(2), /nan)
    return, imageEntroy
   endif else begin
    print, 'image dims is not le 2.'
    return, 0
   endelse 
end
辐射质量改善因子IF

辐射质量改善因子IF定义为去除条纹前后两幅图像的灰度值沿条纹方向的变化。
在这里插入图片描述
其中mIR(i)和mIE(i)分别表示移除条纹之前和之后第i列的平均值。IF值越大,算法的解扩能力越强。

;计算影像辐射质量改善因子IF
function calIF, image_or, image_deal
  mean_or = mean(image_or, dimension=1, /nan)
  row_num = n_elements(mean_or)
  sum_or = 0
  for i=1, row_num-1 do begin
    number = (mean_or[i] - mean_or[i-1]) * (mean_or[i] - mean_or[i-1])
    sum_or = sum_or + number 
  endfor 
  
  mean_deal = mean(image_deal, dimension=1, /nan)
  sum_deal = 0
  for i=1, row_num-1 do begin
    number = (mean_deal[i] - mean_deal[i-1]) * (mean_deal[i] - mean_deal[i-1])
    sum_deal = sum_deal + number
  endfor
  IF_cal = 10 * alog(total(sum_or / sum_deal))
  return, IF_cal 
end
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值