基於SVM的BRISQUE演算法

2021-10-06 22:19:32 字數 2735 閱讀 9725

brisque演算法**於**:《no-reference image quality assessment in the spatial domain》,意思是blind/referenceless image spatial quality evaluator,一種無參考的空間域影象質量評估演算法。演算法總體原理就是從影象中提取mean subtracted contrast normalized (mscn) coefficients,將mscn係數擬合成asymmetric generalized gaussian distribution(aggd)非對稱性廣義高斯分布,提取擬合的高斯分布的特徵,輸入到支援向量機svm中做回歸,從而得到影象質量的評估結果。

下圖展示了brisque演算法流程

自然影象的畫素強度的分布不同於失真影象的畫素強度的分布。當歸一化畫素強度並計算這些歸一化強度上的分布時,這種分布差異更加明顯。特別地,在歸一化之後,自然影象的畫素強度遵循高斯分布(貝爾曲線),而非自然或失真影象的畫素強度不遵循高斯分布(貝爾曲線)。

下圖展示了這種差異:

mscn係數

mscn是一種歸一化影象的方法,計算流程如下:

可以看做是對影象做了如下操作:

i(x,y)處的mscn定義如下:

其中u(x,y)為高斯濾波後的結果,σ(x,y)為標準差。mscn係數的優點在於因為紋理等特徵而產生的區域corelation很小。如下圖左側(原始畫素點)和右側(mscn)結果間的區別。

可以看出mscn對於紋理的強弱並沒有非常強的依賴性,這樣提取出來的特徵更有適用性。

mscn為畫素強度提供了良好的歸一化。然而,自然與失真影象的差異不僅限於畫素強度分布,還包括相鄰畫素之間的關係。

為了捕獲相鄰畫素的關係,使用四個方向相鄰元素的乘積,即:水平(h),垂直(v),左 - 對角線(d1),右 - 對角線(d2):

到目前為止,我們已經從原始影象中獲得了5個引數 - 1個mscn引數和4個相鄰元素乘積引數(水平,垂直,左對角線,右對角線)。

接下來,我們將使用這5個引數來計算尺寸為36×1的特徵向量。請注意,原始輸入影象可以是任何尺寸(寬度/高度),但特徵向量的大小始終為36×1。

通過將mscn引數擬合到廣義高斯分布(ggd)**來計算36×1特徵向量的前兩個元素。ggd有兩個引數 - 乙個用於形狀,乙個用於方差。

接下來,**非對稱廣義高斯分布(aggd)**適合於4個相鄰元素乘積引數中的每乙個。aggd是廣義高斯擬合(ggd)的不對稱形式。它有四個引數 - 形狀,均值,左方差和右方差。由於有4個成對產品影象,我們最終得到16個值。

因此,我們最終得到了18個特徵向量元素。將影象縮小到原始尺寸的一半,並重複相同的過程以獲得18個新數字,使總數達到36個數字。

總結如下表:

特徵範圍

功能描述

程式1 - 2

形狀和方差。

ggd擬合mscn引數。

3 - 6

形狀,均值,左方差,右方差

aggd擬合水平引數

7 - 10

形狀,均值,左方差,右方差

aggd擬合垂直引數

11 - 14

形狀,均值,左方差,右方差

aggd擬合對角線(左)引數

15-18

形狀,均值,左方差,右方差

aggd擬合對角線(右)引數

在典型的機器學習應用程式中,首先將影象轉換為特徵向量。然後,將訓練資料集中的所有影象的特徵向量和輸出(質量得分)放入支援向量機(svm)中進行訓練。

使用libsvm載入該36個特徵引數及質量得分進行訓練,訓練過程中,特徵向量首先被縮放到-1到1,訓練得出的模型用於**影象質量。

經過訓練模型**,可以得出以下每種失真的最終質量得分:

原始影象

jpeg2k壓縮

重壓縮高斯雜訊

中位數模糊

筆者在iqa專案內整合了該演算法,完整專案**可移步github:iqa

文字分類的python實現 基於SVM演算法

svc的懲罰引數c 預設值是1.0。c越大,對誤分類的懲罰增大,趨向於對訓練集全分對的情況,這樣對訓練集測試時準確率很高,但泛化能力弱。c值小,對誤分類的懲罰減小,允許容錯,泛化能力較強。儘管tf idf權重有著非常廣泛的應用,但並不是所有的文字權重採用tf idf都會有較好的效能。在有些問題上,採...

SVM演算法 0 SVM演算法的簡單介紹

支援向量機 support vector machine,簡稱為svm 是分類與回歸分析中的一種監督學習演算法,也是一種二分類模型,其基本模型定義為特徵空間上間隔最大的線性分類器,且基於最大間隔分隔資料,可轉化為求解凸二次規劃的問題。為了描述支援向量機,此處從邏輯回歸開始分析,並一點一點地修改來得到...

SVM演算法的理解

距離上次看svm演算法已經快過了半個月了,今天再次看到,溫故知新後決定把自己的理解寫出來。不過由於本人文筆不佳,所以想到什麼寫什麼,等有空了再整理。看到覺得混亂的還請見諒。剛剛看svm的時候,只能明白支援向量機之所以叫支援向量機是因為支援向量,後面懂得了w的內容是什麼 幾何距離的意義 低維對映到高維...