最近在學習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);不懂
望大家予以解答!
uj5u.com熱心網友回復:
DCT字典是個啥,樓主能介紹一下不uj5u.com熱心網友回復:
第一,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)均有說明。另外在我的博客中還有實作的簡單方法。
歡迎大家關注,歡迎在我的博客中留言討論。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/81898.html
標籤:圖形處理/算法
