1. 程式人生 > >兩種常用的全參考影象質量評價指標——峰值信噪比(PSNR)和結構相似性(SSIM)

兩種常用的全參考影象質量評價指標——峰值信噪比(PSNR)和結構相似性(SSIM)

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

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


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

PSNR是最普遍和使用最為廣泛的一種影象客觀評價指標,然而它是基於對應畫素點間的誤差,即基於誤差敏感的影象質量評價。由於並未考慮到人眼的視覺特性(人眼對空間頻率較低的對比差異敏感度較高,人眼對亮度對比差異的敏感度較色度高,人眼對一個區域的感知結果會受到其周圍鄰近區域的影響等),因而經常出現評價結果與人的主觀感覺不一致的情況。
Matlab的函式程式碼實現如下:

function [ out ] = psnr( X,Y )
[ m,n ] = size( X );
mse = sum(( double(X(:)) - double(Y(:)) ).^2);
mse = mse/(m*n);
out = 10*log10((255*255)/mse);
end

2.SSIM(Structural Similarity)結構相似性:

μX、μY分別表示影象X和Y的均值,σX、σY分別表示影象X和Y的方差,σXY表示影象X和Y的協方差,即 :

SSIM分別從亮度、對比度、結構三方面度量影象相似性。 

C1、C2、C3為常數,為了避免分母為0的情況,通常取C1=(K1∗L)2, C2=(K2∗L)2, C3=C22, 一般地K1=0.01, K2=0.03, L=255 則 

SSIM取值範圍[0,1],值越大,表示影象失真越小. 
SSIM的特殊形式如下:

3、MSSIM(Mean Structural Similarity )平均結構相似性

在實際應用中,可以利用滑動窗將影象分塊,令分塊總數為N,考慮到視窗形狀對分塊的影響,採用加權計算每一視窗的均值、方差以及協方差,權值wij滿足∑i∑jwij=1,通常採用高斯核,然後計算對應塊的結構相似度SSIM,最後將平均值作為兩影象的結構相似性度量,即平均結構相似性MSSIM: 

Matlab的函式實現程式碼如下:

function [mssim, ssim_map] = ssim_index(img1, img2, K, window, L)
C1 = (K(1)*L)^2;
C2 = (K(2)*L)^2;
window = window/sum(sum(window));
img1 = double(img1);
img2 = double(img2);

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

mssim = mean2(ssim_map);

return

相關推薦

常用參考影象質量評價指標——峰值PSNR結構相似性SSIM

原文:https://blog.csdn.net/zjyruobing/article/details/49908979  1.PSNR(Peak Signal to Noise Ratio)峰值信噪比: MSE表示當前影象X和參考影象Y的均方誤差(Mean Squar

參考影象質量評價影象質量評價方法[均方根誤差、峰值結構相似度]

        影象質量評價在計算機視覺,人工智慧,高清視訊傳輸上面有很廣泛的應用。目前,影象質量評價主要分為三個方向,有參考影象的質量評價,半參考的影象質量評價,以及無參考的影象質量評價。但是,個人

參考視訊質量評價方法PSNRSSIM以及相關資料庫

最常用的全參考視訊質量評價方法有以下2種:PSNR(峰值信噪比):用得最多,但是其值不能很好地反映人眼主觀感受。一般取值範圍:20-40.值越大,視訊質量越好。SSIM(結構相似性):計算稍複雜,其值可以較好地反映人眼主觀感受。一般取值範圍:0-1.值越大,視訊質量越好。PS

參考影象質量評價之基於多特徵的增強影象質量評價

參考文獻 本節主要參考的文獻是: Leida, Shen, Jinjian, et al. No-Reference Quality Assessment of Enhanced Images[J]

影象質量評價指標PSNR SSIM

1. PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比 給定一個大小為 \(m×n\) 的乾淨影象 \(I\) 和噪聲影象 \(K\),均方誤差 \((MSE)\) 定義為: \[MSE = \frac{1}{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-

經典影象質量評價指標原理

有參評價指標 (1)均方誤差(MSE)和峰值信噪比(PSNR) 均方誤差(Mean Squared Error, MSE)通過取兩幅影象的均方差來計算“平均誤差”,是一種較方便簡單的影象質量評價方法,可以評價資料間的差異程度。 峰值信噪比(Peak Signal to Noise Rat

影象的:均方根誤差MSE、峰值PSNR、平均絕對誤差MAE、結構相似性SSIM

clc; close all; X = imread('1.jpg'); X=rgb2gray(X); Y=X; Y = imnoise(Y, 'salt & pepper');%新增椒鹽噪聲,也可以改成其他噪聲 A=fspecial('average',3); %

matlab 計算影象峰值PSNR以及均方根誤差MSE

簡介PSNR 是最普遍,最廣泛使用的評鑑畫質的客觀量測法,不過許多實驗結果都顯示,PSNR 的分數無法和人眼看到的視覺品質完全一致,有可能 PSNR 較高者看起來反而比PSNR 較低者差。 這是因為人眼的視覺對於誤差的敏感度並不是絕對的,其感知結果會受到許多因素的影響而產生

影象峰值(PSNR)

double getPSNR(const Mat& I1, const Mat& I2) { Mat s1; absdiff(I1, I2, s1); // |I1 - I2| s1.convertTo(s1, CV_3

判斷Java對象死亡的常用算法

fin 引用 分享 mage 表達 nat obj 不可用 若是 當對象不餒引用的時候,這個對象就是死亡的,等待GC進行回收。 1.引用計數法 概念: 給對象中添加一個引用計數器,每當有一個地方引用它時,計數器值就增加1;當應用失效時,計數器值就減1;任何時刻計數器為0是對

js實現菲波那切數列的常用方法

res alert 定義 面向 div ret 如果 clas cti 菲波那切數列即:1 1 2 3 5 8......,後面的數字是前面兩個數字的和,並且第一個,第二個數字都是1,用js實現 的兩種方法,一種通過常用的遞歸調用,第二種不通過遞歸,而是通過強大的閉包實現。

Struts2中validate數據校驗的常用方法

red 有一種 資源文件 業務 相同 dna erp wrong 顯示 本文主要介紹Struts2中validate數據校驗的兩種方法及Struts2常用校驗器. 1.Action中的validate()方法 Struts2提供了一個Validateable接口,這個接口

JAVASCRIPT創建類的常用方式

JAVASCRIPT創建類的兩種常用方式構造函數方式:a. 代碼: var myClass = function(name){ this.name = name } myClass.prototype.sex = "male" var myClass = new myClass(‘lee‘) myClass.

前臺獲取json未定義問題之常用解決辦法

執行 || 框架 sele {} 幫助 很大的 朋友 gin 來自博客園的一位朋友解答: 為什麽要 eval這裏要添加 “("("+data+")");//”呢? 原因在於:eval本身的問題。 由於json是以”{}”的方式來開始以及結束的,在JS中,它會被 當成一個語句

依賴注入的常用方式(構造器Setter)與注入內容(裝配資料)——Spring IOC/DI

本章主要講解一下Spring中依賴注入方式,接上一章依賴注入原理和方式: https://blog.csdn.net/qq_34598667/article/details/83315669 依賴注入常用的兩種方式以及注入的內容(裝配資料) Spring通過DI(依賴注入)實現I

java多執行緒、FutureTask的用法及常用的使用場景

Java多執行緒實現的方式有四種 1.繼承Thread類,重寫run方法 2.實現Runnable介面,重寫run方法,實現Runnable介面的實現類的例項物件作為Thread建構函式的target 3.通過Callable和FutureTask建立執行緒 4.通過執行緒池

FutureTask的用法及常用的使用場景 + FutureTask的方法執行示意圖

  from:  https://blog.csdn.net/linchunquan/article/details/22382487   FutureTask可用於非同步獲取執行結果或取消執行任務的場景。通過傳入Runnable或者Callable的任務給Fut

java中集合刪除元素的常用方式及新手易錯

java中集合刪除元素的兩種常用方式及新手易錯: 建立集合: [java]  view plain  copy ArrayList<String> aLi

TreeSet排序的常用構造

A無參構造,按照預設自然排序,或者類實現Comparable中重寫compareTo B帶參構造Comparator<? super T> Comparator, 通過匿名內部內進行比較器排序。 A :無參構造/自然排序—元素具備可比較性 讓元素所屬的類實現自然排序介面Com

影象質量評價相關收錄

2018-12-05 轉自 :https://www.cnblogs.com/ranjiewen/p/6390846.html#undefined  ssim的計算裡面有高斯模糊 為了快速計算,先對每個小塊進行計算,然後計算所有塊的平均值。 可以參考原始碼實現,而且程式碼實現有近似的在裡面!m