使用張量進行去噪的理解

什麼是張量

  張量是多維數組的泛概念。一維數組我們通常稱之爲向量,二維數組我們通常稱之爲矩陣,但其實這些都是張量的一種。以此類推,我們也會有三維張量、四維張量以及五維張量。那麼零維張量是什麼呢?其實零維張量就是一個數。

張量的基本操作

兩個張量的內積

<χ,y>=i1=1I1i2=1I2...iN=1INxi1i2...iNyi1i2...iN <\chi,y>=\sum_{i_1=1}^{I_1} \sum_{i_2=1}^{I_2} ... \sum_{i_N=1}^{I_N} x_{i_1 i_2 ... i_N} y_{i_1 i_2 ... i_N}

介紹

observation[I]=image[Iclean]+noise[η] observation[I] = image[I_{clean}]+noise[\eta]

算法描述

張量簡介

高階奇異值分解(HOSVD)

什麼是奇異值分解

  奇異值分解最早是Beltrami與1873年對實正方矩陣提出來的。Beltrami從雙線性函數:
f(x,y)=xTAy,ARn×n f(x,y)=x^TAy,A\in \R^{n \times n}

出發,通過引入線性變換x=Uξx=U \xiy=Vηy=V \eta,將雙線性函數變爲f(x,y)=ξTSηf(x,y)=\xi^TS\eta,其中:
S=UTAV S=U^T A V

矩陣的奇異值分解
  令ARm×nA \in \R^{m \times n},則存在正交矩陣URm×mU \in \R^{m \times m}VRn×nV \in \R^{n \times n}使得:
A=UΣVT A=U \Sigma V^T
式中Σ=[Σ1ooo]\Sigma=\left[ \begin{array}{cc} \Sigma_1&o\\ o&o \end{array} \right],且Σ1=diag(σ1,σ2,,σr)\Sigma_1=diag(\sigma_1,\sigma_2,\cdot \cdot \cdot,\sigma_r),其對角元素按照順序
σ1σ2σr>0,   r=rank(A) \sigma_1 \geqslant \sigma_2 \geqslant \cdot \cdot \cdot \sigma_r >0,~~~r=rank(A)

排序。
酉矩陣ACn×nA \in C^{n \times n},若A滿足AHA=IA^HA=I,則稱A爲酉矩陣。
奇異值分解的理論證明
  設ACrm×n(r>0)A \in C_r^{m \times n}(r>0),則存在m階酉矩陣U和n階酉矩陣V使得:
UHAV=(Σooo) U^HAV=\begin{pmatrix}\Sigma&o\\o&o\end{pmatrix}

式中:Σ=diag(σ1,σ2,,σr),σi\Sigma=diag(\sigma_1,\sigma_2,\cdot \cdot \cdot,\sigma_r),\sigma_i爲A的非零奇異值。而:
A=U(Σooo)VH A=U\begin{pmatrix}\Sigma&o\\o&o\end{pmatrix}V^H

稱爲A的奇異值分解。
證明:由於AHAA^HA爲Hermite陣,則存在n階酉矩陣V使得:
VHAHAV=diag(λ1,λ2,,λn)=(Σ2ooo) V^HA^HAV=diag(\lambda_1,\lambda_2,\cdot \cdot \cdot,\lambda_n)=\begin{pmatrix}\Sigma^2&o\\o&o\end{pmatrix}

將V分塊爲:
V=(V1,V2)    (V1Cn×r,V2Cn×(nr)) V=(V_1,V_2)~~~~(V_1 \in C^{n \times r},V_2 \in C^{n \times (n-r)})

得:
V1HAHAV1=Σ2,V2HAHAV2=0 V_1^HA^HAV_1=\Sigma^2,V_2^HA^HAV_2=0

於是:
Σ1V1HAHAV1Σ1=Ir,(AV2)HAV2=0 \Sigma^{-1} V_1^HA^HAV_1 \Sigma^{-1}=I_r,(AV_2)^HAV_2=0

從而AV2=0AV_2=0。又記U1=AV1Σ1U_1=AV_1 \Sigma^{-1},則U1HU1=IU_1^HU_1=I,即U1U_1的r個列是兩兩正交的單位向量。取U2Cm×(mr)U_2 \in C^{m \times (m-r)}使U=(U1,U2)U=(U_1,U_2)爲m階酉矩陣,即U2HU1=0,U2HU2=ImrU_2^HU_1=0,U_2^HU_2=I_{m-r}。則有:
UHAV=(U1HU2H)A(V1,V2)=(U1HAV1U1HAV2U2HAV1U2HAV2)=(U1H(U1Σ)0U2H(U1Σ)0)=(Σ000) U^HAV=\begin{pmatrix}U_1^H\\ \\U_2^H\end{pmatrix}A\begin{pmatrix}V_1,V_2\end{pmatrix}= \begin{pmatrix}U_1^HAV_1&U_1^HAV_2\\ \\U_2^HAV_1&U_2^HAV_2\end{pmatrix}= \begin{pmatrix}U_1^H(U_1 \Sigma)&0\\ \\U_2^H(U_1 \Sigma)&0\end{pmatrix}= \begin{pmatrix}\Sigma&0\\ \\0&0\end{pmatrix}

奇異值分解的應用計算
求矩陣A=(101110)A=\begin{pmatrix}1&0&1\\1&1&0\end{pmatrix}的奇異值分解。
解:因爲:
ATA=(211110101) A^TA=\begin{pmatrix}2&1&1\\1&1&0\\1&0&1\end{pmatrix}

所以ATAA^TA的特徵值爲λ1=3,λ2=1,λ3=0,\lambda_1=3,\lambda_2=1,\lambda_3=0,對應的特徵向量爲:
p1=(211),p2=(011),p3=(111) p_1=\begin{pmatrix}2\\1\\1\end{pmatrix}, p_2=\begin{pmatrix}0\\-1\\1\end{pmatrix}, p_3=\begin{pmatrix}-1\\1\\1\end{pmatrix}

標準化得:
V=(26013161213161213) V=\begin{pmatrix}\frac{2}{\sqrt{6}}&0&-\frac{1}{\sqrt{3}}\\ \\ \frac{1}{\sqrt{6}}&-\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{3}}\\ \\ \frac{1}{\sqrt{6}}&\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{3}}\end{pmatrix}

使得:
VHAHAV=(310)=(Σ20) V^HA^HAV=\begin{pmatrix}3&&\\&1&\\&&0\end{pmatrix}=\begin{pmatrix}\Sigma^2 &\\&0\end{pmatrix}

計算:
U1=AV1Σ1=(101110)(26016121612)(13001)=(12121212) U_1=AV_1 \Sigma^{-1}=\begin{pmatrix}1&0&1\\ \\1&1&0\end{pmatrix} \begin{pmatrix}\frac{2}{\sqrt{6}}&0\\ \\ \frac{1}{\sqrt{6}}&-\frac{1}{\sqrt{2}}\\ \\ \frac{1}{\sqrt{6}}&\frac{1}{\sqrt{2}}\end{pmatrix} \begin{pmatrix}\frac{1}{\sqrt{3}}&0\\ \\0&1\end{pmatrix}= \begin{pmatrix}\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\\ \\ \frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}\end{pmatrix}

U=U1U=U_1是酉矩陣。故AA的奇異值分解爲:
A=U(Σ    0)VH=(12121212)(300010)(26161601212131313) A=U(\Sigma~~~~0)V^H= \begin{pmatrix}\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\\ \\ \frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}\end{pmatrix} \begin{pmatrix}\sqrt{3}&0&0\\ \\0&1&0\end{pmatrix} \begin{pmatrix} \frac{2}{\sqrt{6}}&\frac{1}{\sqrt{6}}&\frac{1}{\sqrt{6}}\\ \\ 0&-\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\\ \\ -\frac{1}{\sqrt{3}}&\frac{1}{\sqrt{3}}&\frac{1}{\sqrt{3}} \end{pmatrix}

什麼是高階奇異值分解

  Tucker分解,又稱高階奇異值分解(higher-order SVD)。
  Tucker分解與Tucker算子密切相關,而Tucker算子是張量與矩陣的多模態乘法的一種有效表示。
定義 令gKJ1×J2××JNg \in \Bbb K^{J_1 \times J_2 \times \cdot \cdot \cdot \times J_N},矩陣U(n)KIn×JnU^{(n)} \in \Bbb K^{I_n \times J_n},其中n{1,N}n \in \{ 1, \cdot \cdot \cdot N \},則Tucker算子定義爲:

g;U(1),U(2),,U(N)=g×1U(1)×2U(2)×NU(N) \llbracket g;U^{(1)},U^{(2)}, \cdot \cdot \cdot ,U^{(N)} \rrbracket =g \times_1 U^{(1)} \times_2 U^{(2)} \cdot \cdot \cdot \times_N U^{(N)}

其結果是一個NNI1×I2××INI_1 \times I_2 \times \cdot \cdot \cdot \times I_N張量。

N階奇異值分解 每一個I1×I2××INI_1 \times I_2 \times \cdot \cdot \cdot \times I_N實張量χ\chi均可以分解爲n-模式積:

χ=g×1U(1)×2U(2)×NU(N)=g;U(1),U(2),,U(N) \chi =g \times_1 U^{(1)} \times_2 U^{(2)} \cdot \cdot \cdot \times_N U^{(N)}=\llbracket g;U^{(1)},U^{(2)}, \cdot \cdot \cdot ,U^{(N)} \rrbracket

xi1i2iN=j1=1J1j2=1J2jN=1JNgi1i2iNui1j1(1)ui2j2(2)uiNjN(N) x_{i_1 i_2 \cdot \cdot \cdot i_N}=\sum_{j_1=1}^{J_1} \sum_{j_2=1}^{J_2} \cdot \cdot \cdot \sum_{j_N=1}^{J_N} g_{i_1 i_2 \cdot \cdot \cdot i_N} u_{i_1 j_1}^{(1)} u_{i_2 j_2}^{(2)} \cdot \cdot \cdot u_{i_N j_N}^{(N)}

其中
  (1)U(n)=[u1(n),,uJn(n)]U^{(n)}=[u_1^{(n)}, \cdot \cdot \cdot ,u_{J_n}^{(n)}]是一個In×JnI_n \times J_n半正交矩陣,即U(n)TU(n)=IJnU^{(n)T} U^{(n)}=I_{J_n},且JnInJ_n \leqslant I_n
(知識補充:實矩陣Qm×nQ_{m \times n},它只滿足QQT=ImQQ^T=I_m或者QTQ=ImQ^TQ=I_mQ被稱爲半正交矩陣)
  (2)核心張量gg是一個J1×J2××JNJ_1 \times J_2 \times \cdot \cdot \cdot \times J_N張量,其子張量gjn=αg_{j_n= \alpha}是固定指標jn=αj_n= \alpha不變所得到的張量χ\chi。子張量具有以下兩個性質:
全正交性 αβ\alpha \neq \beta的兩個子核心張量gjn=αg_{j_n= \alpha}gjn=βg_{j_n= \beta}正交

gjn=αgjn=β=0αβn=1,,N \langle g_{j_n= \alpha} g_{j_n= \beta}\rangle =0,\forall \alpha \neq \beta,n=1,\cdot \cdot \cdot,N

排序
gin=1Fgin=2Fgin=NF \parallel g_{i_n=1} \parallel_F \geq \parallel g_{i_n=2} \parallel_F \geq \cdot \cdot \cdot \geq \parallel g_{i_n=N} \parallel_F

高階奇異值分解的具體計算過程

  N階張量的Tucker分解可以寫成一個統一的數學模型:

χ=f(U(1),U(2),,U(N))+ε \chi=f(U^{(1)},U^{(2)},\cdot \cdot \cdot,U^{(N)})+ \varepsilon

式中U(n),n=1,,NU^{(n)},n=1,\cdot \cdot \cdot,N爲分解的因子或分量矩陣,ε\varepsilon爲N階噪聲或誤差張量。因此,因子矩陣可以通過下列優化問題求得:

(U^(1),,U^(N))=arg minU(1),,U(N)χf(U(1),U(2),,U(N))22 (\hat{U}^{(1)},\cdot \cdot \cdot,\hat{U}^{(N)}) = \argmin_{U^{(1)},\cdot \cdot \cdot,U^{(N)}} \parallel \chi-f(U^{(1)},U^{(2)},\cdot \cdot \cdot,U^{(N)}) \parallel_2^2

這是一個N個變元耦合在一起的優化問題。求解這類耦合優化問題的有效方法是交替最小二乘(ALS)算法。

Tucker分解得交替最小二乘算法的基本思想

  在第k+1次迭代中,利用在k+1次迭代中已更新的因子矩陣Uk+1(1),,Uk+1(i1)U_{k+1}^{(1)},\cdot \cdot \cdot,U_{k+1}^{(i-1)}和在k此更新過的因子矩陣Uk+1(i+1),,Uk+1(N)U_{k+1}^{(i+1)},\cdot \cdot \cdot,U_{k+1}^{(N)},求因子矩陣U(1)U^{(1)}的最小二乘解:

U^k+1(i)=arg minU(i)χf(Uk+1(1),,Uk+1(i1),U(i),Uk+1(i+1),,Uk+1(N))22 \hat{U}_{k+1}^{(i)}=\argmin_{U^{(i)}} \parallel \chi-f(U_{k+1}^{(1)},\cdot \cdot \cdot,U_{k+1}^{(i-1)},U^{(i)},U_{k+1}^{(i+1)},\cdot \cdot \cdot,U_{k+1}^{(N)}) \parallel_2^2

其中i=1,,Ni=1,\cdot \cdot \cdot,N。對k=1,2,k=1,2,\cdot \cdot \cdot,交替使用最小二乘法,直至所有因子矩陣收斂。
  下面以張量的矩陣化的水平展開爲對象,討論Tucker3分解的優化問題的求解

minA,B,C,G(P×QR)X(I×JK)AG(P×QR)(CB)T22 \min_{A,B,C,G^{(P \times QR)}} \parallel X^{(I \times JK)}-AG^{(P \times QR)} (C \otimes B)^T \parallel_2^2

根據交替最小二乘的原理,假定模式-2矩陣B、模式-3矩陣C和核心張量g的水平展開均固定,則上述優化問題就解耦爲僅含模式-1矩陣A的優化問題:

minAX(I×JK)AG(P×QR)(CB)T22 \min_{A} \parallel X^{(I \times JK)}-AG^{(P \times QR)} (C \otimes B)^T \parallel_2^2

相當於求解矩陣X(I×JK)=AG(P×QR)(CB)TX^{(I \times JK)}=AG^{(P \times QR)}(C \otimes B)^T的最小二乘解。在矩陣方程的兩邊右乘矩陣(CB)(C \otimes B),得:

X(I×JK)(CB)=AG(P×QR)(CB)T(CB) X^{(I \times JK)}(C \otimes B)=AG^{(P \times QR)} (C \otimes B)^T (C \otimes B)

  若對上式左邊得矩陣進行奇異值分解X(I×JK)(CB)=U1S1V1TX^{(I \times JK)}(C \otimes B)=U_1S_1V_1^T,則可取前P個左奇異向量作爲矩陣A得估計結果A^=U1(:,1:P)\hat{A}=U_1(:,1:P)。這一運算可以簡潔表示爲[A,S,T]=SVD[X(I×JK)(CB),P][A,S,T]=SVD[X^{(I \times JK)}(C \otimes B),P]

交替最小二乘算法(alternating least square,ALS)

  交替最小二乘方法最早由 Paatero與 Tapper用於非負矩陣分解。由於這種方法約束矩陣是非負的,所以現在習慣稱爲交替非負最小二乘算法。
  非負矩陣分解XI×J=AI×KSK×JX_{I \times J}=A_{I \times K}S_{K \times J}的優化問題:

minA,S12XASF2  subject  to  A,S0 \min_{A,S} \frac{1}{2} \parallel X-AS \parallel_F^2 ~~subject~~to~~ A,S \geq0

可以分解爲兩個交替非負最小二乘子問題:

ANLS1    minS0f1(S)=12ASXF2  (A)ANLS2    minA0f1(AT)=12STATXTF2  S ANLS1 ~~~~ \min_{S \geq 0}f_1(S)=\frac{1}{2} \parallel AS-X \parallel_F^2 ~~(A固定) \\ ANLS2 ~~~~ \min_{A \geq 0}f_1(A^T)=\frac{1}{2} \parallel S^TA^T-X^T \parallel_F^2 ~~(S固定)

這兩個交替非負最小二乘子問題相當於使用最小二乘方法交替求解矩陣方程AS=XAS=XSTAT=XTS^TA^T=X^T,其最小二乘解分別爲:

S=P+((ATA)ATX)AT=P+((SST)SXT) S=P_+((A^TA)^{\dagger} A^TX) \\ A^T=P_+((SS^T)^{\dagger} SX^T)

當A或S在迭代過程中奇異時,算法將無法收斂。

約束非負矩陣分解(constrained nonnegative matrix factorization,CNMF)

CNMF  minA,S12(XASF2+αAF2+βSF2)  subject  to  A,S0 CNMF ~~ \min_{A,S} \frac{1}{2}(\parallel X-AS \parallel_F^2+\alpha \parallel A \parallel_F^2+\beta \parallel S \parallel_F^2) ~~subject~~to~~A,S \geq0

式中,α0\alpha \geq 0β0\beta \geq 0是兩個正則化參數,分別起到壓制AF2\parallel A \parallel_F^2SF2\parallel S \parallel_F^2的作用。

正則化非負矩陣分解問題可以分解爲兩個交替正則化非負最小二乘(ARNLS)問題:

ARNLS1  minSR+J×KJ1(S)=12ASXF2+12βSF2  (A)ARNLS2  minAR+I×JJ2(AT)=12STATXTF2+12αAF2  (S) ARNLS1 ~~ \min_{S \in \R_{+}^{J \times K}} J_1(S)=\frac{1}{2} \parallel AS-X \parallel_F^2+\frac{1}{2} \beta\parallel S \parallel_F^2 ~~(A固定) \\ ARNLS2 ~~ \min_{A \in \R_{+}^{I \times J}} J_2(A^T)=\frac{1}{2} \parallel S^TA^T-X ^T\parallel_F^2+\frac{1}{2}\alpha \parallel A \parallel_F^2 ~~(S固定)

由矩陣微分
dJ1(S)=12d(tr[(ASX)T(ASX)]+βtr(STS))=tr((STATAXTA+βST)dS)dJ2(AT)=12d(tr[(ASX)(ASX)T]+αtr(ATA))=tr((ASSTXST+αA)dAT) dJ_1(S)=\frac{1}{2}d(tr[(AS-X)^T(AS-X)]+\beta tr(S^TS)) \\=tr((S^TA^TA-X^TA+\beta S^T)dS) \\ dJ_2(A^T)=\frac{1}{2}d(tr[(AS-X)(AS-X)^T]+\alpha tr(A^TA)) \\=tr((ASS^T-XS^T+\alpha A)dA^T)

由此得梯度矩陣:
J1(S)S=ATX+ATAS+βSJ2(AT)A=SXT+SSTAT+αAT \frac{\partial J_1(S)}{\partial S}=-A^TX+A^TAS+\beta S \\ \frac{\partial J_2(A^T)}{\partial A}=-SX^T+SS^TA^T+\alpha A^T

J1(S)S=0\frac{\partial J_1(S)}{\partial S}=0J2(AT)A=0\frac{\partial J_2(A^T)}{\partial A}=0分別得到兩個正則化最小二乘子問題得解爲:

(ATA+βIJ)S=ATX    S=(ATA+βIJ)1ATX(SST+αIJ)AT=SXT    AT=(SST+αIJ)1SXT (A^TA+\beta I_J)S=A^TX ~~ 或 ~~S=(A^TA+\beta I_J)^{-1}A^TX \\ (SS^T+\alpha I_J)A^T=SX^T ~~或~~ A^T=(SS^T+\alpha I_J)^{-1}SX^T

高階奇異值分解在去噪的方面的優勢?

均方誤差MSE(Mean Squared Error)

峯值信噪比PSNR(Peak Signal to Noise Ratio)

3D 塊匹配BM(Block-matching)

在這裏插入圖片描述

圖1 由高斯白噪聲(標準差爲15,均值爲0)破壞自然圖像的噪聲中的分組塊插圖。 每個片段都顯示一個標有"R"的參考圖塊,以及與之匹配的幾個圖塊。

高斯白噪聲

https://blog.csdn.net/qq_26309711/article/details/103157812

基於高階奇異值分解的去噪算法

c^n=cnc^c^+σ2 \hat{c}_n = c_n \frac{\hat{c}}{\hat{c}+\sigma^2}

c^n\hat{c}_n:是過濾核
c^\hat{c}:是第一個通道的圖像核心
cnc_n:是在第一個通道的輸出上使用塊匹配來生成噪聲圖像的核心

算法流程

在這裏插入圖片描述
kHardkHard:patch size
chnlschnls:the number of channels
nSxrnSx_r:the number of similar patches to the patch at (i,j)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章