最近看了图像词典的训练部分,如书的说明,没能得到书的图像。
书中的2D-DCT字典利用了8*11冗长的1D-DCT字典的克罗内克积微笑的白云,直接使用matlab的kron函数微笑的白云图像如下图所示。
书上所示的词典如下图所示。
克罗内克积编写的词典是什么样的呢? 其实,我想是第一张照片上显示的词典,那本书到底发生了什么呢?
实验结果表明,原书最终将由克罗内克积制作的64*121的词典reshape、各列reshape为8*8的图像块组合到展示词典中,以了解各列是什么内容。 该展示词典的第I个、第j个块可以通过以下公式生成:
DCTMTX(3360,I ) DCTMTX, ) )
也就是DCT冗长词典的第I列和第j行的微笑的白云矩阵。 这本词典的列向量被l2归一化了。
以下是直接生成展示词典的代码。
生成的词典图像如下所示。
这个图像基本上和书相似。
另外,关于什么是separable的理解,个人认为这个概念相对于非结构化词典。 针对结构化词典进行二维计算时,不需要明确存储。 例如,8*11的冗馀字典DCTMTX不需要存储为64*121的克罗内克积微笑的白云字典,而是只需将8*8的image patch乘以左DCTMTX’,右DCT MTX就可以获得系数矩阵。 另一方面,在K-SVD这样的非结构化词典中,不存在克罗内克积等笑脸白云的关系,因此需要明确地保存,只能将图像块排成一列用右乘词典进行置换。 另外,分离2D-DCT,使用左乘、右乘的方法,不是结构化词典,而是存在快速算法,只能进行硬乘,所以没有快速算法。 当然为了解决这个问题,在非结构化词典中也注入结构化因素,提高运算速度。