http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=217168&page=1#pid1971488
请问大虾们有关字典学习的问题,y=Dx。这里的y可以被认为是观测到的含噪图像,D是字典,x是所要求的原始图像。那么 问题是,这个D是什么,我的意思是: D 里面的数据是类似什么样的数据?这个D是怎么得到的呢?D里面的数据是和x里的数据相似吗,比如D里面的数据是(0~255)范围的?
我觉得D不是原始图像,而是y在D上的投影。
比如y是一个长为n的列向量,D就是N个长为n的列向量横着拼起来,x就是长为N的列向量。设Di是D的第i列,xi是x的第i个元素,那么y=Dx=D1*x1+D2*x2+...+DN*xN,也就是说y是D的这N列的线性表示。
如果y和D线性相关,那么就可以找到一个x使得y=Dx。但是如果y和D线性无关,那么就找不到一个x,使得y=Dx了。这时,可以找一个x,使得y特别接近Dx,也就是y-Dx最小(可以是y-Dx的2范数最小)。
上面是字典D确定时的情况。下面说说怎么得到D。
在图像压缩里,如果已知y和D,有可能找到一个特别稀疏的x(x的大部分元素是0),使得y=Dx或者y特别接近Dx。那么我们希望x越稀疏越好,并且y和Dx约接近约好。对于同一个y和不同的D,稀疏程度和接近程度是不同的。那么就可以找一个D,使得稀疏程度和接近程度都好。
如果现在有若干个图像,也就是有若干个y(y1,y2,...),希望用同一个字典表示它们,也就是Y=DX(Y是由若干个y拼成的,X是由若干个X拼成的)。那么就需要找到一个D,使得Y和DX最接近,X也很稀疏。那么可以解一个优化方程,就是使得“Y-DX的2范数和X的稀疏度的加权和”最小的D。这样就可以得到D了。
在稀疏表示里,已知Y和D,求X方法有一个叫做OMP的。已知Y,求一个比较好的D的方法有个叫MOD的和KSVD的。
训练出的D可以是每列的模长都是1的矩阵,正负都行。
以上是个人的理解,仅供参考。
D是字典,一般图像回复的话,就是又一起其他的图像经过训练得到的。里面有K个atom,即字典元素,就是要使用这个K个元素对图像进行线性表出。