1. 首页 > 手机 >

ksvd算法(ksvd算法本质)

本文目录一览:

请问如何在matlab中对信号进行去噪作。用函数的形式,方便其他程序调用

      在解释KSVD去噪原理之前先解释几个名词,首先:

ksvd算法(ksvd算法本质)ksvd算法(ksvd算法本质)


ksvd算法(ksvd算法本质)


       原子:信号的基本构成成分,比如一个长为N的列向量;

       字典:许多原子的排序,一个NT的矩阵,如果T>N(列数大于行数),则为过完备或冗余字典。信号稀疏之前在压缩感知学习的时候有介绍过,就是信号的非零值很少,这个概念主要应用与信号处理领域,自然信号中主要是低频信息,高频信息大多就是噪声了,在图像中应用滤波器滤除高频成分也就是去噪了。具体怎么完成,就要依靠下面介绍的KSVD。

       KSVD的目的就是找到稀疏的稀疏矩阵X,使得原始矩阵(Y)有稀疏的表示。设现在有了一个NT的过完备字典 D,一个要表示的对象y(要还原的图像),求一套系数x,使得y=Dx,这里y是一个已知的长为N的列向量,x是一个未知的长为T的列向量,解方程。这是一个T个未知数,N个方程的方程组,T>N,所以是有无穷多解,但是针对问题目标我们会给这个方程添加约束条件,比如在图像去噪中,我们想要x稀疏,就是非零值少,这个在已知D和y求解x的过程就是稀疏编码。

       稀疏编码求解的模型就是:x = argminxnorm(y − Dx, 2)2,  s.t.norm(x, 1)≤ε。这里又被分为了两种可能,D已知情况下可以用OMP算法(大意是先找到D和y接近的一个原子D(m),求出合适的系数x(m),新的y'=D(m) x(m),再找下一个接近的原子,直到找完合适的x);当D未知时就变成了矩阵分解问题,比如MOD算法的路子:Sparse Coding和Dictionary Update,两步走,步固定D,更新x:x = argminxnorm(y − Ax, 2)2, s.t.norm(x, 1)≤k;第二步更新D: D = argminxnorm(y − Ax, 2)2很像EM算法。

       KSVD和MOD的不同就是K每次只更新D当中的一个原子,就是D矩阵当中的某一列,因为矩阵相乘可以看做是前一个矩阵的列向量分别乘后一个矩阵的行向量。Loss函数在这里可以进行转化:

      而SVD就用在对E的分解,和上面的MOD类似,也是迭代进行就是每次更改D的原子。就比如说KSVD用于图像去噪的话,如有一个零均值高斯白噪声,即 n ∼ N(0, σ) ,σ是噪声的标准,有噪声的图像为 z = y + n ,目的是从信号 z 中恢复出原始无噪信号 y,通过后验概率,求得目标函数的解,即可恢复出y:x = argminx∥z−Dx∥22,   s.t.∥x∥0 ≤ T 。其中T依赖于 ε 和 σ 。为方便优化计算,实际作中往往转化成: x = argminx∥z−Dx∥22+ μ∥x∥0选取恰当的μ可以让上面两式等价。

字典都是小数是因为里面每个列都经过了normalization,L2 norm都是1

如果要得到稀疏系数,试试OMPerr

matlab 只是一个编程工具,像c,c++,Ja,等,去噪算法是根据噪声的类型,图像的类型进行设计的,不是的,现在对自然图像去噪的两大经典算法:DL:KSVD, BM:BM3D

      在解释KSVD去噪原理之前先解释几个名词,首先:

       原子:信号的基本构成成分,比如一个长为N的列向量;

       字典:许多原子的排序,一个NT的矩阵,如果T>N(列数大于行数),则为过完备或冗余字典。信号稀疏之前在压缩感知学习的时候有介绍过,就是信号的非零值很少,这个概念主要应用与信号处理领域,自然信号中主要是低频信息,高频信息大多就是噪声了,在图像中应用滤波器滤除高频成分也就是去噪了。具体怎么完成,就要依靠下面介绍的KSVD。

       KSVD的目的就是找到稀疏的稀疏矩阵X,使得原始矩阵(Y)有稀疏的表示。设现在有了一个NT的过完备字典 D,一个要表示的对象y(要还原的图像),求一套系数x,使得y=Dx,这里y是一个已知的长为N的列向量,x是一个未知的长为T的列向量,解方程。这是一个T个未知数,N个方程的方程组,T>N,所以是有无穷多解,但是针对问题目标我们会给这个方程添加约束条件,比如在图像去噪中,我们想要x稀疏,就是非零值少,这个在已知D和y求解x的过程就是稀疏编码。

       稀疏编码求解的模型就是:x = argminxnorm(y − Dx, 2)2,  s.t.norm(x, 1)≤ε。这里又被分为了两种可能,D已知情况下可以用OMP算法(大意是先找到D和y接近的一个原子D(m),求出合适的系数x(m),新的y'=D(m) x(m),再找下一个接近的原子,直到找完合适的x);当D未知时就变成了矩阵分解问题,比如MOD算法的路子:Sparse Coding和Dictionary Update,两步走,步固定D,更新x:x = argminxnorm(y − Ax, 2)2, s.t.norm(x, 1)≤k;第二步更新D: D = argminxnorm(y − Ax, 2)2很像EM算法。

       KSVD和MOD的不同就是K每次只更新D当中的一个原子,就是D矩阵当中的某一列,因为矩阵相乘可以看做是前一个矩阵的列向量分别乘后一个矩阵的行向量。Loss函数在这里可以进行转化:

      而SVD就用在对E的分解,和上面的MOD类似,也是迭代进行就是每次更改D的原子。就比如说KSVD用于图像去噪的话,如有一个零均值高斯白噪声,即 n ∼ N(0, σ) ,σ是噪声的标准,有噪声的图像为 z = y + n ,目的是从信号 z 中恢复出原始无噪信号 y,通过后验概率,求得目标函数的解,即可恢复出y:x = argminx∥z−Dx∥22,   s.t.∥x∥0 ≤ T 。其中T依赖于 ε 和 σ 。为方便优化计算,实际作中往往转化成: x = argminx∥z−Dx∥22+ μ∥x∥0选取恰当的μ可以让上面两式等价。

字典都是小数是因为里面每个列都经过了normalization,L2 norm都是1

如果要得到稀疏系数,试试OMPerr

matlab 只是一个编程工具,像c,c++,Ja,等,去噪算法是根据噪声的类型,图像的类型进行设计的,不是的,现在对自然图像去噪的两大经典算法:DL:KSVD, BM:BM3D

      在解释KSVD去噪原理之前先解释几个名词,首先:

       原子:信号的基本构成成分,比如一个长为N的列向量;

       字典:许多原子的排序,一个NT的矩阵,如果T>N(列数大于行数),则为过完备或冗余字典。信号稀疏之前在压缩感知学习的时候有介绍过,就是信号的非零值很少,这个概念主要应用与信号处理领域,自然信号中主要是低频信息,高频信息大多就是噪声了,在图像中应用滤波器滤除高频成分也就是去噪了。具体怎么完成,就要依靠下面介绍的KSVD。

       KSVD的目的就是找到稀疏的稀疏矩阵X,使得原始矩阵(Y)有稀疏的表示。设现在有了一个NT的过完备字典 D,一个要表示的对象y(要还原的图像),求一套系数x,使得y=Dx,这里y是一个已知的长为N的列向量,x是一个未知的长为T的列向量,解方程。这是一个T个未知数,N个方程的方程组,T>N,所以是有无穷多解,但是针对问题目标我们会给这个方程添加约束条件,比如在图像去噪中,我们想要x稀疏,就是非零值少,这个在已知D和y求解x的过程就是稀疏编码。

       稀疏编码求解的模型就是:x = argminxnorm(y − Dx, 2)2,  s.t.norm(x, 1)≤ε。这里又被分为了两种可能,D已知情况下可以用OMP算法(大意是先找到D和y接近的一个原子D(m),求出合适的系数x(m),新的y'=D(m) x(m),再找下一个接近的原子,直到找完合适的x);当D未知时就变成了矩阵分解问题,比如MOD算法的路子:Sparse Coding和Dictionary Update,两步走,步固定D,更新x:x = argminxnorm(y − Ax, 2)2, s.t.norm(x, 1)≤k;第二步更新D: D = argminxnorm(y − Ax, 2)2很像EM算法。

       KSVD和MOD的不同就是K每次只更新D当中的一个原子,就是D矩阵当中的某一列,因为矩阵相乘可以看做是前一个矩阵的列向量分别乘后一个矩阵的行向量。Loss函数在这里可以进行转化:

      而SVD就用在对E的分解,和上面的MOD类似,也是迭代进行就是每次更改D的原子。就比如说KSVD用于图像去噪的话,如有一个零均值高斯白噪声,即 n ∼ N(0, σ) ,σ是噪声的标准,有噪声的图像为 z = y + n ,目的是从信号 z 中恢复出原始无噪信号 y,通过后验概率,求得目标函数的解,即可恢复出y:x = argminx∥z−Dx∥22,   s.t.∥x∥0 ≤ T 。其中T依赖于 ε 和 σ 。为方便优化计算,实际作中往往转化成: x = argminx∥z−Dx∥22+ μ∥x∥0选取恰当的μ可以让上面两式等价。

字典都是小数是因为里面每个列都经过了normalization,L2 norm都是1

如果要得到稀疏系数,试试OMPerr

matlab 只是一个编程工具,像c,c++,Ja,等,去噪算法是根据噪声的类型,图像的类型进行设计的,不是的,现在对自然图像去噪的两大经典算法:DL:KSVD, BM:BM3D

关于MATLAB中稀疏表示的K-SVD算法的疑问,跪求各位大神指点,感激不尽,详细内容见问题补充

      在解释KSVD去噪原理之前先解释几个名词,首先:

       原子:信号的基本构成成分,比如一个长为N的列向量;

       字典:许多原子的排序,一个NT的矩阵,如果T>N(列数大于行数),则为过完备或冗余字典。信号稀疏之前在压缩感知学习的时候有介绍过,就是信号的非零值很少,这个概念主要应用与信号处理领域,自然信号中主要是低频信息,高频信息大多就是噪声了,在图像中应用滤波器滤除高频成分也就是去噪了。具体怎么完成,就要依靠下面介绍的KSVD。

       KSVD的目的就是找到稀疏的稀疏矩阵X,使得原始矩阵(Y)有稀疏的表示。设现在有了一个NT的过完备字典 D,一个要表示的对象y(要还原的图像),求一套系数x,使得y=Dx,这里y是一个已知的长为N的列向量,x是一个未知的长为T的列向量,解方程。这是一个T个未知数,N个方程的方程组,T>N,所以是有无穷多解,但是针对问题目标我们会给这个方程添加约束条件,比如在图像去噪中,我们想要x稀疏,就是非零值少,这个在已知D和y求解x的过程就是稀疏编码。

       稀疏编码求解的模型就是:x = argminxnorm(y − Dx, 2)2,  s.t.norm(x, 1)≤ε。这里又被分为了两种可能,D已知情况下可以用OMP算法(大意是先找到D和y接近的一个原子D(m),求出合适的系数x(m),新的y'=D(m) x(m),再找下一个接近的原子,直到找完合适的x);当D未知时就变成了矩阵分解问题,比如MOD算法的路子:Sparse Coding和Dictionary Update,两步走,步固定D,更新x:x = argminxnorm(y − Ax, 2)2, s.t.norm(x, 1)≤k;第二步更新D: D = argminxnorm(y − Ax, 2)2很像EM算法。

       KSVD和MOD的不同就是K每次只更新D当中的一个原子,就是D矩阵当中的某一列,因为矩阵相乘可以看做是前一个矩阵的列向量分别乘后一个矩阵的行向量。Loss函数在这里可以进行转化:

      而SVD就用在对E的分解,和上面的MOD类似,也是迭代进行就是每次更改D的原子。就比如说KSVD用于图像去噪的话,如有一个零均值高斯白噪声,即 n ∼ N(0, σ) ,σ是噪声的标准,有噪声的图像为 z = y + n ,目的是从信号 z 中恢复出原始无噪信号 y,通过后验概率,求得目标函数的解,即可恢复出y:x = argminx∥z−Dx∥22,   s.t.∥x∥0 ≤ T 。其中T依赖于 ε 和 σ 。为方便优化计算,实际作中往往转化成: x = argminx∥z−Dx∥22+ μ∥x∥0选取恰当的μ可以让上面两式等价。

字典都是小数是因为里面每个列都经过了normalization,L2 norm都是1

如果要得到稀疏系数,试试OMPerr

matlab 只是一个编程工具,像c,c++,Ja,等,去噪算法是根据噪声的类型,图像的类型进行设计的,不是的,现在对自然图像去噪的两大经典算法:DL:KSVD, BM:BM3D

      在解释KSVD去噪原理之前先解释几个名词,首先:

       原子:信号的基本构成成分,比如一个长为N的列向量;

       字典:许多原子的排序,一个NT的矩阵,如果T>N(列数大于行数),则为过完备或冗余字典。信号稀疏之前在压缩感知学习的时候有介绍过,就是信号的非零值很少,这个概念主要应用与信号处理领域,自然信号中主要是低频信息,高频信息大多就是噪声了,在图像中应用滤波器滤除高频成分也就是去噪了。具体怎么完成,就要依靠下面介绍的KSVD。

       KSVD的目的就是找到稀疏的稀疏矩阵X,使得原始矩阵(Y)有稀疏的表示。设现在有了一个NT的过完备字典 D,一个要表示的对象y(要还原的图像),求一套系数x,使得y=Dx,这里y是一个已知的长为N的列向量,x是一个未知的长为T的列向量,解方程。这是一个T个未知数,N个方程的方程组,T>N,所以是有无穷多解,但是针对问题目标我们会给这个方程添加约束条件,比如在图像去噪中,我们想要x稀疏,就是非零值少,这个在已知D和y求解x的过程就是稀疏编码。

       稀疏编码求解的模型就是:x = argminxnorm(y − Dx, 2)2,  s.t.norm(x, 1)≤ε。这里又被分为了两种可能,D已知情况下可以用OMP算法(大意是先找到D和y接近的一个原子D(m),求出合适的系数x(m),新的y'=D(m) x(m),再找下一个接近的原子,直到找完合适的x);当D未知时就变成了矩阵分解问题,比如MOD算法的路子:Sparse Coding和Dictionary Update,两步走,步固定D,更新x:x = argminxnorm(y − Ax, 2)2, s.t.norm(x, 1)≤k;第二步更新D: D = argminxnorm(y − Ax, 2)2很像EM算法。

       KSVD和MOD的不同就是K每次只更新D当中的一个原子,就是D矩阵当中的某一列,因为矩阵相乘可以看做是前一个矩阵的列向量分别乘后一个矩阵的行向量。Loss函数在这里可以进行转化:

      而SVD就用在对E的分解,和上面的MOD类似,也是迭代进行就是每次更改D的原子。就比如说KSVD用于图像去噪的话,如有一个零均值高斯白噪声,即 n ∼ N(0, σ) ,σ是噪声的标准,有噪声的图像为 z = y + n ,目的是从信号 z 中恢复出原始无噪信号 y,通过后验概率,求得目标函数的解,即可恢复出y:x = argminx∥z−Dx∥22,   s.t.∥x∥0 ≤ T 。其中T依赖于 ε 和 σ 。为方便优化计算,实际作中往往转化成: x = argminx∥z−Dx∥22+ μ∥x∥0选取恰当的μ可以让上面两式等价。

字典都是小数是因为里面每个列都经过了normalization,L2 norm都是1

如果要得到稀疏系数,试试OMPerr

matlab 只是一个编程工具,像c,c++,Ja,等,去噪算法是根据噪声的类型,图像的类型进行设计的,不是的,现在对自然图像去噪的两大经典算法:DL:KSVD, BM:BM3D

      在解释KSVD去噪原理之前先解释几个名词,首先:

       原子:信号的基本构成成分,比如一个长为N的列向量;

       字典:许多原子的排序,一个NT的矩阵,如果T>N(列数大于行数),则为过完备或冗余字典。信号稀疏之前在压缩感知学习的时候有介绍过,就是信号的非零值很少,这个概念主要应用与信号处理领域,自然信号中主要是低频信息,高频信息大多就是噪声了,在图像中应用滤波器滤除高频成分也就是去噪了。具体怎么完成,就要依靠下面介绍的KSVD。

       KSVD的目的就是找到稀疏的稀疏矩阵X,使得原始矩阵(Y)有稀疏的表示。设现在有了一个NT的过完备字典 D,一个要表示的对象y(要还原的图像),求一套系数x,使得y=Dx,这里y是一个已知的长为N的列向量,x是一个未知的长为T的列向量,解方程。这是一个T个未知数,N个方程的方程组,T>N,所以是有无穷多解,但是针对问题目标我们会给这个方程添加约束条件,比如在图像去噪中,我们想要x稀疏,就是非零值少,这个在已知D和y求解x的过程就是稀疏编码。

       稀疏编码求解的模型就是:x = argminxnorm(y − Dx, 2)2,  s.t.norm(x, 1)≤ε。这里又被分为了两种可能,D已知情况下可以用OMP算法(大意是先找到D和y接近的一个原子D(m),求出合适的系数x(m),新的y'=D(m) x(m),再找下一个接近的原子,直到找完合适的x);当D未知时就变成了矩阵分解问题,比如MOD算法的路子:Sparse Coding和Dictionary Update,两步走,步固定D,更新x:x = argminxnorm(y − Ax, 2)2, s.t.norm(x, 1)≤k;第二步更新D: D = argminxnorm(y − Ax, 2)2很像EM算法。

       KSVD和MOD的不同就是K每次只更新D当中的一个原子,就是D矩阵当中的某一列,因为矩阵相乘可以看做是前一个矩阵的列向量分别乘后一个矩阵的行向量。Loss函数在这里可以进行转化:

      而SVD就用在对E的分解,和上面的MOD类似,也是迭代进行就是每次更改D的原子。就比如说KSVD用于图像去噪的话,如有一个零均值高斯白噪声,即 n ∼ N(0, σ) ,σ是噪声的标准,有噪声的图像为 z = y + n ,目的是从信号 z 中恢复出原始无噪信号 y,通过后验概率,求得目标函数的解,即可恢复出y:x = argminx∥z−Dx∥22,   s.t.∥x∥0 ≤ T 。其中T依赖于 ε 和 σ 。为方便优化计算,实际作中往往转化成: x = argminx∥z−Dx∥22+ μ∥x∥0选取恰当的μ可以让上面两式等价。

字典都是小数是因为里面每个列都经过了normalization,L2 norm都是1

如果要得到稀疏系数,试试OMPerr

KSVD去噪

      在解释KSVD去噪原理之前先解释几个名词,首先:

       原子:信号的基本构成成分,比如一个长为N的列向量;

       字典:许多原子的排序,一个NT的矩阵,如果T>N(列数大于行数),则为过完备或冗余字典。信号稀疏之前在压缩感知学习的时候有介绍过,就是信号的非零值很少,这个概念主要应用与信号处理领域,自然信号中主要是低频信息,高频信息大多就是噪声了,在图像中应用滤波器滤除高频成分也就是去噪了。具体怎么完成,就要依靠下面介绍的KSVD。

       KSVD的目的就是找到稀疏的稀疏矩阵X,使得原始矩阵(Y)有稀疏的表示。设现在有了一个NT的过完备字典 D,一个要表示的对象y(要还原的图像),求一套系数x,使得y=Dx,这里y是一个已知的长为N的列向量,x是一个未知的长为T的列向量,解方程。这是一个T个未知数,N个方程的方程组,T>N,所以是有无穷多解,但是针对问题目标我们会给这个方程添加约束条件,比如在图像去噪中,我们想要x稀疏,就是非零值少,这个在已知D和y求解x的过程就是稀疏编码。

       稀疏编码求解的模型就是:x = argminxnorm(y − Dx, 2)2,  s.t.norm(x, 1)≤ε。这里又被分为了两种可能,D已知情况下可以用OMP算法(大意是先找到D和y接近的一个原子D(m),求出合适的系数x(m),新的y'=D(m) x(m),再找下一个接近的原子,直到找完合适的x);当D未知时就变成了矩阵分解问题,比如MOD算法的路子:Sparse Coding和Dictionary Update,两步走,步固定D,更新x:x = argminxnorm(y − Ax, 2)2, s.t.norm(x, 1)≤k;第二步更新D: D = argminxnorm(y − Ax, 2)2很像EM算法。

       KSVD和MOD的不同就是K每次只更新D当中的一个原子,就是D矩阵当中的某一列,因为矩阵相乘可以看做是前一个矩阵的列向量分别乘后一个矩阵的行向量。Loss函数在这里可以进行转化:

      而SVD就用在对E的分解,和上面的MOD类似,也是迭代进行就是每次更改D的原子。就比如说KSVD用于图像去噪的话,如有一个零均值高斯白噪声,即 n ∼ N(0, σ) ,σ是噪声的标准,有噪声的图像为 z = y + n ,目的是从信号 z 中恢复出原始无噪信号 y,通过后验概率,求得目标函数的解,即可恢复出y:x = argminx∥z−Dx∥22,   s.t.∥x∥0 ≤ T 。其中T依赖于 ε 和 σ 。为方便优化计算,实际作中往往转化成: x = argminx∥z−Dx∥22+ μ∥x∥0选取恰当的μ可以让上面两式等价。

字典都是小数是因为里面每个列都经过了normalization,L2 norm都是1

如果要得到稀疏系数,试试OMPerr

matlab 只是一个编程工具,像c,c++,Ja,等,去噪算法是根据噪声的类型,图像的类型进行设计的,不是的,现在对自然图像去噪的两大经典算法:DL:KSVD, BM:BM3D

      在解释KSVD去噪原理之前先解释几个名词,首先:

       原子:信号的基本构成成分,比如一个长为N的列向量;

       字典:许多原子的排序,一个NT的矩阵,如果T>N(列数大于行数),则为过完备或冗余字典。信号稀疏之前在压缩感知学习的时候有介绍过,就是信号的非零值很少,这个概念主要应用与信号处理领域,自然信号中主要是低频信息,高频信息大多就是噪声了,在图像中应用滤波器滤除高频成分也就是去噪了。具体怎么完成,就要依靠下面介绍的KSVD。

       KSVD的目的就是找到稀疏的稀疏矩阵X,使得原始矩阵(Y)有稀疏的表示。设现在有了一个NT的过完备字典 D,一个要表示的对象y(要还原的图像),求一套系数x,使得y=Dx,这里y是一个已知的长为N的列向量,x是一个未知的长为T的列向量,解方程。这是一个T个未知数,N个方程的方程组,T>N,所以是有无穷多解,但是针对问题目标我们会给这个方程添加约束条件,比如在图像去噪中,我们想要x稀疏,就是非零值少,这个在已知D和y求解x的过程就是稀疏编码。

       稀疏编码求解的模型就是:x = argminxnorm(y − Dx, 2)2,  s.t.norm(x, 1)≤ε。这里又被分为了两种可能,D已知情况下可以用OMP算法(大意是先找到D和y接近的一个原子D(m),求出合适的系数x(m),新的y'=D(m) x(m),再找下一个接近的原子,直到找完合适的x);当D未知时就变成了矩阵分解问题,比如MOD算法的路子:Sparse Coding和Dictionary Update,两步走,步固定D,更新x:x = argminxnorm(y − Ax, 2)2, s.t.norm(x, 1)≤k;第二步更新D: D = argminxnorm(y − Ax, 2)2很像EM算法。

       KSVD和MOD的不同就是K每次只更新D当中的一个原子,就是D矩阵当中的某一列,因为矩阵相乘可以看做是前一个矩阵的列向量分别乘后一个矩阵的行向量。Loss函数在这里可以进行转化:

      而SVD就用在对E的分解,和上面的MOD类似,也是迭代进行就是每次更改D的原子。就比如说KSVD用于图像去噪的话,如有一个零均值高斯白噪声,即 n ∼ N(0, σ) ,σ是噪声的标准,有噪声的图像为 z = y + n ,目的是从信号 z 中恢复出原始无噪信号 y,通过后验概率,求得目标函数的解,即可恢复出y:x = argminx∥z−Dx∥22,   s.t.∥x∥0 ≤ T 。其中T依赖于 ε 和 σ 。为方便优化计算,实际作中往往转化成: x = argminx∥z−Dx∥22+ μ∥x∥0选取恰当的μ可以让上面两式等价。

字典都是小数是因为里面每个列都经过了normalization,L2 norm都是1

如果要得到稀疏系数,试试OMPerr

matlab 只是一个编程工具,像c,c++,Ja,等,去噪算法是根据噪声的类型,图像的类型进行设计的,不是的,现在对自然图像去噪的两大经典算法:DL:KSVD, BM:BM3D

      在解释KSVD去噪原理之前先解释几个名词,首先:

       原子:信号的基本构成成分,比如一个长为N的列向量;

       字典:许多原子的排序,一个NT的矩阵,如果T>N(列数大于行数),则为过完备或冗余字典。信号稀疏之前在压缩感知学习的时候有介绍过,就是信号的非零值很少,这个概念主要应用与信号处理领域,自然信号中主要是低频信息,高频信息大多就是噪声了,在图像中应用滤波器滤除高频成分也就是去噪了。具体怎么完成,就要依靠下面介绍的KSVD。

       KSVD的目的就是找到稀疏的稀疏矩阵X,使得原始矩阵(Y)有稀疏的表示。设现在有了一个NT的过完备字典 D,一个要表示的对象y(要还原的图像),求一套系数x,使得y=Dx,这里y是一个已知的长为N的列向量,x是一个未知的长为T的列向量,解方程。这是一个T个未知数,N个方程的方程组,T>N,所以是有无穷多解,但是针对问题目标我们会给这个方程添加约束条件,比如在图像去噪中,我们想要x稀疏,就是非零值少,这个在已知D和y求解x的过程就是稀疏编码。

       稀疏编码求解的模型就是:x = argminxnorm(y − Dx, 2)2,  s.t.norm(x, 1)≤ε。这里又被分为了两种可能,D已知情况下可以用OMP算法(大意是先找到D和y接近的一个原子D(m),求出合适的系数x(m),新的y'=D(m) x(m),再找下一个接近的原子,直到找完合适的x);当D未知时就变成了矩阵分解问题,比如MOD算法的路子:Sparse Coding和Dictionary Update,两步走,步固定D,更新x:x = argminxnorm(y − Ax, 2)2, s.t.norm(x, 1)≤k;第二步更新D: D = argminxnorm(y − Ax, 2)2很像EM算法。

       KSVD和MOD的不同就是K每次只更新D当中的一个原子,就是D矩阵当中的某一列,因为矩阵相乘可以看做是前一个矩阵的列向量分别乘后一个矩阵的行向量。Loss函数在这里可以进行转化:

      而SVD就用在对E的分解,和上面的MOD类似,也是迭代进行就是每次更改D的原子。就比如说KSVD用于图像去噪的话,如有一个零均值高斯白噪声,即 n ∼ N(0, σ) ,σ是噪声的标准,有噪声的图像为 z = y + n ,目的是从信号 z 中恢复出原始无噪信号 y,通过后验概率,求得目标函数的解,即可恢复出y:x = argminx∥z−Dx∥22,   s.t.∥x∥0 ≤ T 。其中T依赖于 ε 和 σ 。为方便优化计算,实际作中往往转化成: x = argminx∥z−Dx∥22+ μ∥x∥0选取恰当的μ可以让上面两式等价。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息