基于低秩张量填充的图像修复【初尝试】

图像修复背景简介

研究者将常见的图像修复方法包括五类:基于偏微分方程的方法、基于样本的方法、基于稀疏表示的方法、基于低秩表示的方法、基于深度学习的方法。

偏微分方程方法的原理是利用已经构建的模型方程,将需要修复区域四周的有效信息由外向内扩散到需要修复区域中,通过有效地刻画图像的局部特征达到修复的目的。适用于有划痕、文字等小范围破损区域的自然图像;然而对于有大块损毁区域或者损毁比例非常高的情况会产生模糊效果。

已有的研究表明,现实应用中的图像具有近似低秩性。图像在计算机中以矩阵(张量)的形式存储,例如,一个彩色图像是一个具有列、行和颜色模式的三维对象。因此可以将图像修复问题转换为低秩矩阵(张量)填充问题来进行研究。由于关于张量的秩的定义非常复杂,现有的很多方法是将张量展平成为矩阵来处理,但是将多维数据降维会损失信息,造成性能下降。

I ∈ R n 1 × n 2 × n 3 \boldsymbol {\mathcal{I}} \in \mathbf{R}^{n_1 \times n_2 \times n_3} IRn1×n2×n3为输入的损失图像(待修复), Ω \boldsymbol \varOmega Ω为能观察到的输入(像素)点集合,为使恢复的图像 L ∈ R n 1 × n 2 × n 3 \boldsymbol{\mathcal{L}} \in \mathbf{R}^{n_1 \times n_2 \times n_3} LRn1×n2×n3的秩最低,同时在 Ω \boldsymbol \varOmega Ω上与 I \boldsymbol {\mathcal{I}} I一致,图像修复问题可用张量补全算法描述为:

m i n i m i z e L r a n k ( L ) s u b j e c t   t o P Ω ( L ) = P Ω ( I ) \begin{aligned} &\underset{\boldsymbol{\mathcal{L}}}{\mathrm{minimize}} \quad \mathrm{rank}(\boldsymbol{\mathcal{L}})\\ &\mathrm{subject\, to} \quad P_{\varOmega}(\boldsymbol{\mathcal{L}})=P_{\varOmega}(\boldsymbol{\mathcal{I}}) \end{aligned} Lminimizerank(L)subjecttoPΩ(L)=PΩ(I)
其中, r a n k ( L ) \mathrm{rank}(\boldsymbol{\mathcal{L}}) rank(L)是张量 L \boldsymbol{\mathcal{L}} L的秩, P Ω P_{\varOmega} PΩ是一个线性算子,作用是在输入像素点属于 Ω \boldsymbol \varOmega Ω时输出不变,否则输出为0。

现存的一个主要的问题是,张量秩没有很好的定义和紧凸松弛。研究者们提出了几种张量秩定义及其凸松弛,比如,CP秩、Tucker秩等。但是都有局限性,仍然有提高的空间。

Lu基于张量-张量积(tensor-tensor product,t-product)、张量奇异值分解等提出了张量核范数(tensor nuclear norm, NMM),并以此作为张量管秩的一种紧凸松弛,进而将优化问题转化为:
m i n i m i z e L ∥ L ∥ ∗ s u b j e c t   t o P Ω ( L ) = P Ω ( I ) \begin{aligned} &\underset{\boldsymbol{\mathcal{L}}}{\mathrm{minimize}} \quad \Vert \boldsymbol{\mathcal{L}}\Vert_*\\ &\mathrm{subject \, to} \quad P_{\varOmega}(\boldsymbol{\mathcal{L}})=P_{\varOmega}(\boldsymbol{\mathcal{I}}) \end{aligned} LminimizeLsubjecttoPΩ(L)=PΩ(I)

低秩张量填充的基本理论

张量的基本符号

本文中,标量用小写字母表示,比如: a a a,向量用黑体小写字母表示;比如: a \boldsymbol{a} a;矩阵用黑体大写字母表示,比如: A \boldsymbol{A} A;张量用黑体欧拉大写字母表示,比如: A \boldsymbol{\mathcal{A}} A。对于一个三阶张量 A ∈ R n 1 × n 2 × n 3 \boldsymbol{\mathcal{A}} \in \mathbf{R}^{n_1 \times n_2 \times n_3} ARn1×n2×n3 A i j k \boldsymbol{\mathcal{A}}_{ijk} Aijk表示它的第 ( i , j , k ) (i,j,k) (i,j,k)个元素。适用MATLAB中的表示方法 A ( i , : , : ) ,   A ( : , i , : ) ,   A ( : , : , i ) \boldsymbol{\mathcal{A}}(i,:,:),\,\boldsymbol{\mathcal{A}}(:,i,:),\,\boldsymbol{\mathcal{A}}(:,:,i) A(i,:,:),A(:,i,:),A(:,:,i)分别表示第 i i i个水平切片,侧向切片和正面切片。

张量 A \boldsymbol{\mathcal{A}} A的块循环矩阵为:
b c r i c ( A ) = [ A ( 1 ) A ( n 3 ) ⋯ A ( 2 ) A ( 2 ) A ( 1 ) ⋯ A ( 3 ) ⋮ ⋮ ⋱ ⋮ A ( n 3 ) A ( n 3 − 1 ) ⋯ A ( 1 ) ] \mathrm{bcric}(\boldsymbol{\mathcal{A}}) = \left[\begin{matrix} \boldsymbol{\mathcal{A}}^{(1)} & \boldsymbol{\mathcal{A}}^{(n_3)} & \cdots & \boldsymbol{\mathcal{A}}^{(2)} \\ \boldsymbol{\mathcal{A}}^{(2)} & \boldsymbol{\mathcal{A}}^{(1)} & \cdots & \boldsymbol{\mathcal{A}}^{(3)} \\ \vdots & \vdots & \ddots & \vdots \\ \boldsymbol{\mathcal{A}}^{(n_3)} & \boldsymbol{\mathcal{A}}^{(n_3-1)} & \cdots &\boldsymbol{\mathcal{A}}^{(1)}\end{matrix}\right] bcric(A)= A(1)A(2)A(n3)A(n3)A(1)A(n31)A(2)A(3)A(1)
其中, A ( i ) \boldsymbol{\mathcal{A}}^{(i)} A(i)表示第 i i i个正面切片。

展开与折叠算子定义为:
u n f o l d ( A ) = ( A ( 1 ) A ( 2 ) ⋮ A ( n 3 ) ) , f o l d ( u n f o l d ( A ) ) = A \mathrm{unfold}(\boldsymbol{\mathcal{A}}) = \left( \begin{matrix}\boldsymbol{\mathcal{A}}^{(1)}\\\boldsymbol{\mathcal{A}}^{(2)}\\ \vdots \\ \boldsymbol{\mathcal{A}}^{(n_3)} \end{matrix}\right),\quad \mathrm{fold}(\mathrm{unfold}(\boldsymbol{\mathcal{A}}))=\boldsymbol{\mathcal{A}} unfold(A)= A(1)A(2)A(n3) ,fold(unfold(A))=A

张量的基本知识

(张量积):张量 A ∈ R n 1 × n 2 × n 3 \boldsymbol{\mathcal{A}}\in \mathbf{R}^{n_1\times n_2 \times n_3} ARn1×n2×n3 B ∈ R n 2 × n 4 × n 3 \boldsymbol{\mathcal{B}\in \mathbf{R}^{n_2 \times n_4 \times n_3}} BRn2×n4×n3的张量积定义为: C = A ∗ B \boldsymbol{\mathcal{C}} = \boldsymbol{\mathcal{A}}*\boldsymbol{\mathcal{B}} C=AB
C ( i , j , : ) = ∑ k = 1 n 2 A ( i , k , : ) ∗ B ( k , j , : ) \boldsymbol{\mathcal{C}}(i,j,:) = \sum_{k=1}^{n_2}\boldsymbol{\mathcal{A}}(i,k,:)*\boldsymbol{\mathcal{B}}(k,j,:) C(i,j,:)=k=1n2A(i,k,:)B(k,j,:)

(张量核范数):张量 A \boldsymbol{\mathcal{A}} A的核范数 ∥ A ∥ ∗ \Vert \boldsymbol{\mathcal{A}}\Vert_* A是其离散傅里叶变换 A ^ \hat{\boldsymbol{\mathcal{A}}} A^的所有正面切片的奇异值的和。

张量核范数是范数,因此也是凸的,其证明可以参考相关文献。

优化求解过程

所建立的图像修复优化问题的目标函数是凸函数,等式约束是仿射的,所以是凸优化问题。为了减小计算复杂度,提高图像修复的效率,采用交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)对优化问题进行求解。

交替方向乘子法一般形式

交替方向乘子法通常用于解决存在两个优化变量的只含等式约束的优化类问题,其一般形式为:
m i n i m i z e x , z f ( x ) + g ( z ) s u b j e c t   t o A x + B z = c \begin{aligned} &\underset{x,z}{\mathrm{minimize}} \quad f(x)+g(z)\\ &\mathrm{subject \, to} \quad Ax+Bz = c \end{aligned} x,zminimizef(x)+g(z)subjecttoAx+Bz=c
其中, f ( x ) f(x) f(x) g ( z ) g(z) g(z)都是凸函数。

上述优化问题的增广拉格朗日函数为:
L ρ ( x , z , u ) = f ( x ) + g ( z ) + u T ( A x + B z − c ) + ρ 2 ∥ A x + B z − c ∥ 2 2 L_\rho (x,z,u) = f(x)+g(z)+u^{\mathrm{T}}(Ax+Bz-c)+\frac{\rho}{2}\Vert Ax+Bz-c \Vert_2^2 Lρ(x,z,u)=f(x)+g(z)+uT(Ax+Bzc)+2ρAx+Bzc22

交替方向乘子法每一步只更新一个变量而固定另外两个变量,如此交替重复更新。
交替方向乘子法

为简化形式,如果令 w = u ρ \displaystyle w=\frac{u}{\rho} w=ρu,则增广拉格朗日函数可以写成:
L ρ ( x , z , u ) = f ( x ) + g ( z ) + ρ 2 ∥ A x + B z − c + w ∥ 2 2 − ρ 2 ∥ w ∥ 2 2 L_\rho (x,z,u) = f(x)+g(z)+\frac{\rho}{2}\Vert Ax+Bz-c+w \Vert_2^2-\frac{\rho}{2}\Vert w \Vert_2^2 Lρ(x,z,u)=f(x)+g(z)+2ρAx+Bzc+w222ρw22

缩放形式的 A D M M \mathrm{ADMM} ADMM算法如下:
在这里插入图片描述

模型的优化求解过程

虽然图像修复优化问题是凸优化问题,但是其在 c v x \mathrm{cvx} cvx工具包中不易表示,并且求解过程会非常长,为了提高求解效率,下面给出图像修复优化问题的 A D M M \mathrm{ADMM} ADMM方法求解过程。

首先引入变量 E \boldsymbol{\mathcal{E}} E,使得 I = L + E \boldsymbol{\mathcal{I}} = \boldsymbol{\mathcal{L}}+\boldsymbol{\mathcal{E}} I=L+E,将优化问题\eqref{(2)}等价地写为如下形式:
m i n i m i z e L , E ∥ L ∥ ∗ + 1 P Ω ( E ) = 0 s u b j e c t   t o I = L + E \begin{aligned} &\underset{\boldsymbol{\mathcal{L}},\boldsymbol{\mathcal{E}}}{\mathrm{minimize}} \quad \Vert \boldsymbol{\mathcal{L}}\Vert_*+\mathbf{1}_{P_{\varOmega}(\boldsymbol{\mathcal{E}})=\mathbf{0}}\\ &\mathrm{subject \, to} \quad \boldsymbol{\mathcal{I}} =\boldsymbol{\mathcal{L}}+\boldsymbol{\mathcal{E}} \end{aligned} L,EminimizeL+1PΩ(E)=0subjecttoI=L+E
其中, 1 \mathbf{1} 1是示性函数。

增广拉格朗日函数为:
L ρ ( L , E , Y ) = ∥ L ∥ ∗ + 1 P Ω ( E ) = 0 + ⟨ Y , I − L − E ⟩ + ρ 2 ∥ I − L − E ∥ F 2 L_\rho(\boldsymbol{\mathcal{L}},\boldsymbol{\mathcal{E}},\boldsymbol{\mathcal{Y}}) = \Vert \boldsymbol{\mathcal{L}} \Vert_* + \mathbf{1}_{P_{\varOmega}(\boldsymbol{\mathcal{E}})=\mathbf{0}}+ \left \langle \boldsymbol{\mathcal{Y},\boldsymbol{\mathcal{I}}-\boldsymbol{\mathcal{L}-\boldsymbol{\mathcal{E}}}} \right \rangle+\frac{\rho}{2}\Vert \boldsymbol{\mathcal{I}}-\boldsymbol{\mathcal{L}}-\boldsymbol{\mathcal{E}}\Vert_F^2 Lρ(L,E,Y)=L+1PΩ(E)=0+Y,ILE+2ρILEF2

μ = Y ρ \displaystyle \boldsymbol{\mu}=\frac{\boldsymbol{\mathcal{Y}}}{\rho} μ=ρY,则增广拉格朗日函数可以写成:
L ρ ( L , E , Y ) = ∥ L ∥ ∗ + 1 P Ω ( E ) = 0 + ρ 2 ∥ I − L − E + μ ∥ F 2 + ρ 2 ∥ μ ∥ F 2 L_\rho(\boldsymbol{\mathcal{L}},\boldsymbol{\mathcal{E}},\boldsymbol{\mathcal{Y}}) = \Vert \boldsymbol{\mathcal{L}} \Vert_* + \mathbf{1}_{P_{\varOmega}(\boldsymbol{\mathcal{E}})=\mathbf{0}}+ \frac{\rho}{2}\Vert \boldsymbol{\mathcal{I}}-\boldsymbol{\mathcal{L}}-\boldsymbol{\mathcal{E}+\mu}\Vert_F^2+\frac{\rho}{2}\Vert \boldsymbol{\mu}\Vert_F^2 Lρ(L,E,Y)=L+1PΩ(E)=0+2ρILE+μF2+2ρμF2

基于 A D M M \mathrm{ADMM} ADMM,用于求解优化问题的算法如下:
算法3
在这个算法中,关键是解决凸优化问题:
m i n i m i z e X τ ∥ X ∥ ∗ + 1 2 ∥ X − Y ∥ F 2 \underset{\boldsymbol{\mathcal{X}}}{\mathrm{minimize}} \quad \tau \Vert \boldsymbol{\mathcal{X}}\Vert_*+\frac{1}{2}\Vert \boldsymbol{\mathcal{X}}-\boldsymbol{\mathcal{Y}}\Vert_F^2 XminimizeτX+21XYF2

论文中证明了上述凸优化问题有一个封闭形式的解,证明过程可以参考相关论文,这里只给出结论。

Y = U ∗ S ∗ V ∗ \boldsymbol{\mathcal{Y}} = \boldsymbol{\mathcal{U}}*\boldsymbol{\mathcal{S}}*\boldsymbol{\mathcal{V}}^* Y=USV Y \boldsymbol{\mathcal{Y}} Y的张量奇异值分解(tensor SVD),对于 τ > 0 \tau >0 τ>0,定义张量奇异值阈值(the tensor Singular Value Thresholding, t-SVT)算子:
D τ ( Y ) = U ∗ S τ ∗ V ∗ \mathcal{D}_\tau(\boldsymbol{\mathcal{Y}})=\boldsymbol{\mathcal{U}}*\boldsymbol{\mathcal{S}}_\tau*\boldsymbol{\mathcal{V}}^* Dτ(Y)=USτV
其中, S τ = i f f t ( ( S ˉ − τ ) + , [ ] , 3 ) \boldsymbol{\mathcal{S}}_\tau = \mathrm{ifft}((\bar{\boldsymbol{\mathcal{S}}}-\tau)_+,[],3) Sτ=ifft((Sˉτ)+,[],3)

张量奇异值阈值算子是上述优化问题的解析解,即
D τ ( Y ) = a r g   m i n X τ ∥ X ∥ ∗ + 1 2 ∥ X − Y ∥ F 2 \mathcal{D}_\tau(\boldsymbol{\mathcal{Y}}) = \mathrm{arg}\,\underset{\boldsymbol{\mathcal{X}}}{\mathrm{min}} \quad \tau \Vert \boldsymbol{\mathcal{X}}\Vert_*+\frac{1}{2}\Vert \boldsymbol{\mathcal{X}}-\boldsymbol{\mathcal{Y}}\Vert_F^2 Dτ(Y)=argXminτX+21XYF2

t \mathrm{t} t- S V T \mathrm{SVT} SVT算法如下:
算法4
t \mathrm{t} t- S V T \mathrm{SVT} SVT算法可用于求解算法3中 s t e p 1 \mathrm{step1} step1中的优化问题。进一步,将完整的可以直接用于 M A T L A B \mathrm{MATLAB} MATLAB程序求解优化问题的算法总结如下:
算法5

变分法与低秩张量填充结合算法

变分法简述

对于矩阵 L \boldsymbol{L} L,其总变分算子可以表示为:
∥ L ∥ T V = ∥ D x L ∥ 2 2 + ∥ D y L ∥ 2 2 \Vert \boldsymbol{L}\Vert_{TV} = \Vert D_x\boldsymbol{L}\Vert_2^2+\Vert D_y\boldsymbol{L} \Vert_2^2 LTV=DxL22+DyL22
其中 D x D_x Dx,和 D y D_y Dy分别表示对矩阵 L \boldsymbol{L} L x x x y y y方向的求导算子:
D x L = v e c ( L ( x + 1 , y ) − L ( x , y ) ) D y L = v e c ( L ( x , y + 1 ) − L ( x , y ) ) \begin{aligned} D_x\boldsymbol{L} = \mathrm{vec}(\boldsymbol{L}(x+1,y)-\boldsymbol{L}(x,y))\\ D_y\boldsymbol{L} = \mathrm{vec}(\boldsymbol{L}(x,y+1)-\boldsymbol{L}(x,y)) \end{aligned} DxL=vec(L(x+1,y)L(x,y))DyL=vec(L(x,y+1)L(x,y))
对于一个rgb三通道的图像张量 L \boldsymbol{\mathcal{L}} L,将其三个通道分别拆开得到三个矩阵 L 1 ,   L 2 ,   L 3 \boldsymbol{L}_1, \,\boldsymbol{L}_2,\,\boldsymbol{L}_3 L1,L2,L3,该图像的总变分算子定义为:
∥ L ∥ T V = ∥ L 1 ∥ T V + ∥ L 2 ∥ T V + ∥ L 3 ∥ T V \Vert \boldsymbol{\mathcal{L}} \Vert_{TV} = \Vert\boldsymbol{L}_1 \Vert_{TV}+\Vert\boldsymbol{L}_2 \Vert_{TV}+\Vert\boldsymbol{L}_3 \Vert_{TV} LTV=L1TV+L2TV+L3TV
采用变分法进行图像修复的优化问题为:
m i n i m i z e L ∥ L ∥ T V s u b j e c t   t o P Ω ( L ) = P Ω ( I ) \begin{aligned} &\underset{\boldsymbol{\mathcal{L}}}{\mathrm{minimize}}\quad \Vert \boldsymbol{\mathcal{L}} \Vert_{TV}\\ &\mathrm{subject \, to}\quad P_\varOmega(\boldsymbol{\mathcal{L}}) = P_\varOmega(\boldsymbol{\mathcal{I}}) \end{aligned} LminimizeLTVsubjecttoPΩ(L)=PΩ(I)
参考凸优化书 P 81 P81 P81,可以证明 ∥ L ∥ T V \Vert \boldsymbol{\mathcal{L}} \Vert_{TV} LTV关于每一个像素点的每一个通道的取值 x i x_i xi是凸函数,并且约束也是凸的,因此优化问题是凸优化问题。

变分法与张量核范数加权

一个新的尝试是将变分法与张量核范数加权,优化问题是
m i n i m i z e L ∥ L ∥ ∗ + α ∥ L ∥ T V s u b j e c t   t o P Ω ( L ) = P Ω ( I ) \begin{aligned} &\underset{\boldsymbol{\mathcal{L}}}{\mathrm{minimize}}\quad \Vert \boldsymbol{\mathcal{L}} \Vert_* + \alpha \Vert \boldsymbol{\mathcal{L}} \Vert_{TV}\\ &\mathrm{subject \, to}\quad P_\varOmega(\boldsymbol{\mathcal{L}}) = P_\varOmega(\boldsymbol{\mathcal{I}}) \end{aligned} LminimizeL+αLTVsubjecttoPΩ(L)=PΩ(I)
其中, α \alpha α是权重系数,用于平衡待修复图像的低秩性和连续性。
上述优化问题的等价优化问题为:
m i n i m i z e L ,   E ,   W ∥ L ∥ ∗ + 1 P Ω ( E ) = 0 + α ∥ W ∥ T V s u b j e c t   t o I = L + E L = W \begin{aligned} &\underset{\boldsymbol{\mathcal{L}},\,\boldsymbol{\mathcal{E}},\,\boldsymbol{\mathcal{W}}}{\mathrm{minimize}}\quad \Vert \boldsymbol{\mathcal{L}} \Vert_* + \mathbf{1}_{P_{\varOmega}(\boldsymbol{\mathcal{E}})=\mathbf{0}} + \alpha \Vert \boldsymbol{\mathcal{W}} \Vert_{TV}\\ &\begin{aligned} \mathrm{subject\,to}\quad &\boldsymbol{\mathcal{I}} =\boldsymbol{\mathcal{L}}+\boldsymbol{\mathcal{E}}\\ &\boldsymbol{\mathcal{L}} = \boldsymbol{\mathcal{W}} \end{aligned} \end{aligned} L,E,WminimizeL+1PΩ(E)=0+αWTVsubjecttoI=L+EL=W
优化问题\eqref{(8)}的增广拉格朗日函数为:
L ρ ( L , E , W , Y 1 , Y 2 ) = ∥ L ∥ ∗ + 1 P Ω ( E ) = 0 + α ∥ W ∥ T V + ⟨ Y 1 , I − L − E ⟩ + ⟨ Y 2 , L − W ⟩ + ρ 2 ∥ I − L − E ∥ F 2 + ρ 2 ∥ L − W ∥ F 2 \begin{aligned} L_\rho(\boldsymbol{\mathcal{L}},\boldsymbol{\mathcal{E}},\boldsymbol{\mathcal{W}},\boldsymbol{\mathcal{Y}}_1,\boldsymbol{\mathcal{Y}}_2) &= \Vert \boldsymbol{\mathcal{L}} \Vert_* + \mathbf{1}_{P_{\varOmega}(\boldsymbol{\mathcal{E}})=\mathbf{0}}+ \alpha \Vert \boldsymbol{\mathcal{W}} \Vert_{TV} + \left \langle \boldsymbol{\mathcal{Y}}_1,\boldsymbol{\mathcal{I}}-\boldsymbol{\mathcal{L}-\boldsymbol{\mathcal{E}}} \right \rangle+\left \langle \boldsymbol{\mathcal{Y}}_2,\boldsymbol{\mathcal{L}}-\boldsymbol{\mathcal{W}} \right \rangle\\ &+\frac{\rho}{2}\Vert \boldsymbol{\mathcal{I}}-\boldsymbol{\mathcal{L}}-\boldsymbol{\mathcal{E}}\Vert_F^2+\frac{\rho}{2}\Vert\boldsymbol{\mathcal{L}}-\boldsymbol{\mathcal{W}} \Vert_F^2 \end{aligned} Lρ(L,E,W,Y1,Y2)=L+1PΩ(E)=0+αWTV+Y1,ILE+Y2,LW+2ρILEF2+2ρLWF2
为简化形式,如果令 μ = Y ρ \displaystyle \boldsymbol{\mu} = \frac{\boldsymbol{\mathcal{Y}}}{\rho} μ=ρY,则缩放形式的增广拉格朗日函数可以写成:
L ρ ( L , E , W , μ 1 , μ 2 ) = ∥ L ∥ ∗ + 1 P Ω ( E ) = 0 + α ∥ W ∥ T V + ρ 2 ∥ I − L − E + μ 1 ∥ F 2 + ρ 2 ∥ L − W + μ 2 ∥ F 2 + ρ 2 ∥ μ 1 ∥ F 2 + ρ 2 ∥ μ 2 ∥ F 2 \begin{aligned} L_\rho(\boldsymbol{\mathcal{L}},\boldsymbol{\mathcal{E}},\boldsymbol{\mathcal{W}},\boldsymbol{\mu}_1,\boldsymbol{\mu}_2) = &\Vert \boldsymbol{\mathcal{L}} \Vert_* + \mathbf{1}_{P_{\varOmega}(\boldsymbol{\mathcal{E}})=\mathbf{0}}+ \alpha \Vert \boldsymbol{\mathcal{W}} \Vert_{TV} \\ &+\frac{\rho}{2}\Vert \boldsymbol{\mathcal{I}}-\boldsymbol{\mathcal{L}}-\boldsymbol{\mathcal{E}}+\boldsymbol{\mu}_1\Vert_F^2+\frac{\rho}{2}\Vert\boldsymbol{\mathcal{L}}-\boldsymbol{\mathcal{W}+\boldsymbol{\mu}_2} \Vert_F^2+\frac{\rho}{2}\Vert\boldsymbol{\mu}_1\Vert_F^2+\frac{\rho}{2}\Vert\boldsymbol{\mu}_2\Vert_F^2 \end{aligned} Lρ(L,E,W,μ1,μ2)=L+1PΩ(E)=0+αWTV+2ρILE+μ1F2+2ρLW+μ2F2+2ρμ1F2+2ρμ2F2
相对应的MATLAB求解算法过程如下:
在这里插入图片描述

写在后面

上述内容参考文献:(只列标题)
Tensor Robust Principal Component Analysis with a New Tensor Nuclear Norm

Low Rank Tensor Completion With a New Tensor Nuclear Norm Induced by Invertible Linear Transforms

Novel Methods for Multilinear Data Completion and De-noising Based on Tensor-SVD

Tensor Robust Principal Component Analysis Exact Recovery of Corrupted Low-Rank Tensors via Convex Optimization

关于matlab代码实现:这位大神给出了很好地解决方法,并且有相关解释:链接: https://github.com/canyilu/LibADMM-toolbox/blob/master/manual.pdf

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
张量补全是一种用于填补缺失数据的方法,它基于矩阵分解的思想。下面是一个简单的Python代码示例,用于实现张量补全: ```python import numpy as np from scipy.linalg import svd def tensor_completion(tensor, rank): # 将张量转换为矩阵形式 matrix = tensor.reshape(tensor.shape[0], -1) # 对矩阵进行奇异值分解 U, S, V = svd(matrix, full_matrices=False) # 保留前rank个奇异值 U = U[:, :rank] S = np.diag(S[:rank]) V = V[:rank, :] # 重构矩阵 matrix_reconstructed = U @ S @ V # 将矩阵转换回张量形式 tensor_reconstructed = matrix_reconstructed.reshape(tensor.shape) return tensor_reconstructed # 示例用法 # 创建一个3维张量 tensor = np.random.rand(3, 4, 5) # 随机遮挡一些元素作为缺失数据 mask = np.random.choice([True, False], size=tensor.shape, p=[0.2, 0.8]) tensor_incomplete = np.where(mask, tensor, np.nan) # 使用张量补全方法填补缺失数据 rank = 2 tensor_completed = tensor_completion(tensor_incomplete, rank) print("原始张量:") print(tensor) print("\n缺失数据的张量:") print(tensor_incomplete) print("\n补全后的张量:") print(tensor_completed) ``` 这段代码使用了NumPy库和SciPy库中的svd函数来进行奇异值分解。首先,将输入的3维张量转换为2维矩阵,然后对矩阵进行奇异值分解。根据指定的(rank)参数,保留前rank个奇异值,并重构矩阵。最后,将重构后的矩阵转换回原始的3维张量形式,并返回补全后的张量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值