1. 程式人生 > >影象增強演算法效果評價指標及實現

影象增強演算法效果評價指標及實現

前言:

對於一種影象處理方法,怎麼樣來判斷該演算法效果的好壞呢?除了人眼本身的觀察,還可以用某種指標來量化評判,本文將總結一下影象質量評判的方法及實現。

影象質量評價分類(IQA:image quality assessment):

影象質量評價目前來看主要分為兩類:

(1)主觀評價。即用人眼觀察和評判影象,主觀評價和人的感覺相一致,但是容易受到環境、心境等影響,而且大量評價影象時也顯得不現實。

(2)客觀評價。即採用演算法進行評價,相比於主觀評價,客觀評價具有操作簡單、成本低、易於解析和實現等優點,是影象質量評價的研究重點。所以本篇重點總結一下客觀評價的幾種方法。

客觀評價演算法根據其對參考影象的依賴程度, 可分成三類:( 1) 全參考: 和參考影象的所有畫素點做對應比較; ( 2) 半參考: 只需要和參考影象上的部分統計特徵做比較;( 3) 無參考: 不需要具體的參考影象。其中全參考演算法是研究時間最長、發展最成熟的。

一、全參考評價:

全參考演算法根據演算法採用的技術路線, 可分為基於誤差統計量的演算法和基於 HVS 模型的演算法。

1.基於誤差統計量的演算法的思路: 通過設計特徵來比較失真影象和參考影象的區域性差異, 然後在整幅影象上求出一個總的平均統計量, 並把這個統計量與影象質量關聯起來。最簡單的質量評價演算法就是均方差(Mean Squared Error, MSE)和峰值信噪比(Peak Signal- Noise Ratio, PSNR)。MSE 和 PSNR 計算複雜度小,易於實現,在影象處理領域中廣泛應用。但缺點是它們給出的數值與影象的感知質量之間沒有必然聯絡。

2.基於 HVS 模型的演算法的思路:

通過對 HVS 的某些底層特性進行建模,將失真影象和參考影象之間的絕對誤差對映為能被人眼覺察的 JND( Just noticeable difference) 單位。根據對 HVS 模型描述的側重點不同,又可以將影象質量評價模型歸結為基於誤差靈敏度評價演算法基於結構相似度評價演算法兩類。

2.1基於誤差靈敏度的質量評價演算法

該方法可用圖1描述,演算法不同之處在於側重點和處理方式上的區別。

圖1.基於誤差靈敏度的評價框架

該方法的缺點在於:

(a)基於 HVS 特徵的方法一般認為原始影象質量是完美的,Weber 定律和點擴散函式(Point Spread Function)模型始終成立。

(b)一般假定 HVS 的多通道響應可以通過線性離散集合來模擬。

(c)一般假定通道分解是無損或無損於視覺的,變換後仍保持了質量評價的絕大部分資訊。

(d)一般認為通道分解剔除了影象間的關聯,道變換的作用可以通過掩蔽模型來模擬。

(e)HVS 的評價值可以通過測試誤差的非線性組合來模擬,目前大多采用線性加權組合。

前 3 條假設從 HVS 的特點以及實際操作來說,相對比較合理。實驗表明自然影象經過通道分解後,相同位置上的特徵基本上相同或者相似,即各通道之間實際上存在較高的相關性,這與上述(d)點假設相矛盾。另外,誤差的統計量來表徵影象質量方法,論其如何加權組合,仍可能存在兩幅影象失真型別完全不一樣、但誤差相同的現象。故上述(e)點假設也不合適。

2.2基於結構相似度的影象質量評價演算法

自然影象具有特定的結構,素間有很強的從屬關係,這些從屬關係反映了視覺場景中的結構資訊。由此產生了基於結構失真的影象質量評價方法,稱為結構相似 (SSIM)方法,框架參見圖2。


圖2.結構相似度評價框架

小結:基於誤差靈敏度的方法通過人為模擬 HVS 對誤差敏感度進行量化,過程易於解析,但是其演算法過於繁雜;SSIM 評價方法通過測量影象結構資訊的改變來反映影象質量的失真情況,演算法上明顯簡化,但同時也遮蔽掉了 HVS的其它生理特徵,過程不易於解析。所以,將 SSIM 和基於誤差靈敏度的評價方法中採用的 HVS 特徵加權評價聯合起來,是影象質量評價今後的一個發展方向。

二、半參考評價:

半參考演算法可以分為兩種: 基於影象特徵統計量的演算法基於數字水印的演算法。這類演算法的特點是其只需從參考影象中提取部分統計量用於比較, 無需原始的畫素級別的資訊。

三、無參考評價:

無參考演算法可以分為兩種: 針對失真型別的演算法基於機器學習的演算法。這類方法的特點無需參考影象, 靈活性強。無參考演算法的難點在於如何使評價結果儘量不受影象內容的影響。

衡量演算法效能的定量指標:

影象質量評價演算法應該具備以下特性:

( 1) 準確性:主觀與客觀評價值之間的差異較小;

( 2) 單調性: 客觀評價值應隨主觀評價值的增減而增減;

( 3) 一致性: 演算法在測試集上表現出的效能與其在訓練集上表現的效能相近似。


影象質量評價演算法實現:

這裡附上幾種影象質量評價指標的演算法實現。

(1)峰值信噪比-PSNR(Peak Signal to Noise Ratio)

峰值信噪比(PSNR)經常用作影象壓縮等領域訊號重建質量的評價,常簡單的方式是通過均方差(MSE)來定義:


MSE為當前影象 X 和參考影象 Y 的均方誤差(Mean Square Error)。H、W 分別表示影象的高和寬;n為每畫素的位元數,一般取8,即畫素灰階數為256。PSNR的單位是dB,數值越大表示失真越小。

    function pnsr_result = psnr(img_ref,img_in)       
        %   img_ref is a high reference quality image   
        %   img_in is the denoise image    
        %   pnsr_result is the PSNR of the denoise image    
        width = size(img_ref,2);    
        heigh = size(img_ref,1);    
        if( width ~= size(img_in,2) || heigh ~= size(img_in,1) )    
            disp('Please check whether the input image and reference image have same size');    
            return    
        end    
        [a,b]=size(img_ref);      
        XX=double(img_ref) - double(img_in);      
        mse_value = sum(sum( XX.^2 ))/(a*b);      
        pnsr_result = 10*log10( 255*255 / mse_value );   
    end

(2)SSIM

兩張影象 X 和 Y 的結構相似性可按照以下方式求出:

,

其中 μ 是平均值,是的方差,σ是的方差,σxy是協方差。

是用來維持穩定的常數。L 是畫素值的動態範圍,k1=0.01,k2=0.03。結構相似性的範圍為-1到1,當兩張影象一模一樣時,SSIM的值等於1。
結構相似度指數從影象組成的角度將結構資訊定義為獨立於亮度、對比度,反映場景中物體結構的屬性,並將失真建模為亮度、對比度和結構三個不同因素的組合。均值作為亮度的估計,標準差作為對比度的估計,協方差作為結構相似程度的度量。

其中,matlab實現裡附帶了詳細的步驟說明和測試函式,我這附下測試結果:


(3)信噪比(SNR)

顧名思義,信噪比就是有用訊號與噪聲訊號的比值,具體我直接附維基裡的定義:


matlab實現:

function snr=SNR2(I,In)
% 計算噪聲比
% I :original signal
% In:noisy signal
% snr=10*log10(sigma2(I2)/sigma2(I2-I1))

[~,~,nchannel]=size(I);
snr=0;
I=double(I);
In=double(In);
if nchannel==1
    Ps=sum(sum((I-mean(mean(I))).^2));%signal power
    Pn=sum(sum((I-In).^2));%noise power
    snr=10*log10(Ps/Pn);
elseif nchannel==3
    for i=1:3
        Ps=sum(sum((I(:,:,i)-mean(mean(I(:,:,i)))).^2));%signal power
        Pn=sum(sum((I(:,:,i)-In(:,:,i)).^2));%noise power
        snr=snr+10*log10(Ps/Pn);
    end
    snr=snr/3;
end
測試函式結果:
%% snr
clc,clear all,close all;
ref = imread('D:\fcq_proMatlab\test_image\15.jpg');
H = fspecial('Gaussian',[11 11],1.5);
A = imfilter(ref,H,'replicate');
subplot(1,2,1); imshow(ref); title('Reference Image');
subplot(1,2,2); imshow(A);   title('Blurred Image');
snrValue=SNR2(ref,A )
snrValue =

   25.6430

參考:

  1. 《影象質量評價研究綜述》[J]. 電腦科學
  2. 《影象質量研究方法進展》[J]. 電子與資訊學報
  3. 《基於頻域的結構相似度的影象質量評價方法》[J]. 清華大學學報
  4. http://blog.csdn.net/purgle/article/details/73719101
  5. http://blog.csdn.net/ebowtang/article/details/43643037
  6. http://blog.csdn.net/xiaohaijiejie/article/details/48053595