**Nonparametric Bayesian Dictionary Learning for
Analysis of Noisy and Incomplete Images论文阅读以及代码理解**
代码基于灰度图和RGB图像,基本过程都是一样的。
图像大小:256*256
学习方式:在线学习和batch learning
字典初始化方式:SVD和Rand;
图像块大小:8*8
图像块数目:249*249

如果学习方式是在线学习,则图像块不是全部作为数据使用,
而是迭代增加。

for colj=1:PatchSize
        for rowi=1:PatchSize

在这64次迭代中,第一次,使用了1024个块,接下来,有14次,每次是增加(961+31),有49次是增加了961个块,总数为249*249个块。
块数的增加,代表训练样本的增加。每一次训练样本的增加,可以迭代多次进行训练,学习DZS,根据吉布斯采样公式,对参数进行采样。
由于块之间有重叠,所以需要对结果进行平均,在函数DenoiseOutput_LowMemoryReq中,对每个像素的叠加使用次数进行统计,每个像素的叠加估计值除以相应的叠加次数就是该像素的平均值,作为最终结果输出。

如果是batch learning,那么会把所有数据全部输入然后进行多次迭代训练。

另外,对于DZS的初始化,其中之一的方法是SVD,在复习一下奇异值分解。
image *代表转置
M:mn,U:mm,∑:mn,V:nn
SVD的一些应用:可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵,所以SVD可以用于PCA降维,来做数据压缩和去噪。
左奇异矩阵可以用于行数的压缩。
右奇异矩阵可以用于列数即特征维度的压缩,也就是我们的PCA降维。
奇异值分解的低秩逼近(有时也被称为截断奇异值分解)
给定一个很大的矩阵A,大小为m*n,我们需要存储的元素数量是mn个,当矩阵的秩k远小于m和n,我们只需要存储k(m+n+1)个元素就能得到原矩阵,即k个奇异值、km个左奇异向量的元素和kn个右奇异向量的元素;把奇异值按照从大到小排序,较接近于0(比较小的奇异值可以认为权重越小)的奇异值可忽略,用前r个奇异值,存储r(m+n+1)个元素就能近似得到原矩阵,这可用于图片等的重建。


祢豆子
1 声望0 粉丝

引用和评论

0 条评论