有关过完备DCT字典的问题

萧神ZF 2016-09-02 10:52:35
最近在学习DCT字典,查找了很多资料,找到可以通过下面程序来构造过完备DCT字典,
% Create an initial dictionary from the DCT frame
Pn=ceil(sqrt(K));%%%Pn=16 bb=8 产生64*256的字典
DCT=zeros(bb,Pn);
for k=0:1:Pn-1,
V=cos([0:1:bb-1]'*k*pi/Pn);
if k>0,
V=V-mean(V);
end;
DCT(:,k+1)=V/norm(V);%norm(V)表示的是欧式距离
end;
%产生64*256的字典
DCT=kron(DCT,DCT);

但我始终找不到这段程序的理论依据是什么,
第一,V=cos([0:1:bb-1]'*k*pi/Pn); 的数学支持是什么?
第二,减去均值,和除以norm(V)的作用是不是归一化?
第三,DCT=kron(DCT,DCT);不懂

望大家予以解答!
...全文
1945 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
独孤呆博 2017-11-02
  • 打赏
  • 举报
回复
第一,V=cos([0:1:bb-1]'*k*pi/Pn);这部分代码实际上对原始的DCT在更精细频率上的采样。原始的只是计算奇数点(2x+1)点的数值,在这里还计算里偶数间奇数的数值。 第二,减去均值,和除以norm(V)的作用是归一化。但是这个归一化做早了,之后经过kron处理得到的矩阵不再是按列归一化(0均值,1方差)的了,所以这一步我认为是多余的。 第三,DCT=kron(DCT,DCT);中kron的租用是做kron积,kron具体作用可以百度;那为什么要做kron积呢?这一步相当于DCT字典中的两个元素相乘,实际上也就是两个余弦项相乘,余弦项相乘相当于调制。而调制是将完备字典拓展到过完备字典的方法之一。 另外,这个程序中还有一处错误,他们有计算DCT变换核之前的系数 综上,该程序实际上是首先对DCT字典在更精细的频率采样,再通过kron对字典进行调制,最终获得过完备字典。 关于上述的观点所有说明在我的博客《构建DCT过完备字典》(http://blog.csdn.net/dugudaibo/article/details/78418318)均有说明。另外在我的博客中还有实现的简单方法。 欢迎大家关注,欢迎在我的博客中留言讨论。
shiter 2016-09-19
  • 打赏
  • 举报
回复
DCT字典是个啥,楼主能介绍一下不

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧