本申請(qǐng)涉及信號(hào)處理領(lǐng)域,尤其涉及一種信號(hào)稀疏表示方法及裝置。
背景技術(shù):
信號(hào)的稀疏表示是信號(hào)處理領(lǐng)域的重要研究方向之一,在信號(hào)的稀疏表示過(guò)程中需要一種非正交過(guò)完備的表示矩陣對(duì)信號(hào)進(jìn)行表示,使信號(hào)的表示方式更為簡(jiǎn)潔,從而使研究人員更容易地獲取信號(hào)中所蘊(yùn)含的信息,以便進(jìn)一步對(duì)信號(hào)進(jìn)行處理。這種非正交過(guò)完備的表示矩陣被人們稱為字典,為了使字典更為準(zhǔn)確的表示信號(hào),需要根據(jù)字典學(xué)習(xí)算法進(jìn)行字典學(xué)習(xí),更新字典中的原子,使經(jīng)過(guò)字典學(xué)習(xí)后的字典中的原子與信號(hào)的結(jié)構(gòu)特征更為匹配,更加準(zhǔn)確的表示信號(hào)。
目前常用的字典學(xué)習(xí)算法有MOD算法和K-SVD算法。MOD算法的運(yùn)算速度較快但是字典學(xué)習(xí)的效果較差;K-SVD算法隨著信號(hào)維數(shù)的增大,計(jì)算量也會(huì)增大,從而導(dǎo)致運(yùn)算速度緩慢。因此,利用現(xiàn)有的字典學(xué)習(xí)算法進(jìn)行字典學(xué)習(xí)存在字典學(xué)習(xí)效果差或字典學(xué)習(xí)速度緩慢的問(wèn)題,導(dǎo)致現(xiàn)有的信號(hào)稀疏表示效率較低。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N信號(hào)稀疏表示方法及裝置,以解決現(xiàn)有技術(shù)信號(hào)稀疏表示效率低的問(wèn)題。技術(shù)方案如下:
一種信號(hào)稀疏表示方法,包括:
步驟S101:對(duì)預(yù)設(shè)字典進(jìn)行初始化,獲得初始字典,并將待處理信號(hào)初始化為與所述初始字典相對(duì)應(yīng)的信號(hào)矩陣,所述信號(hào)矩陣中的每個(gè)元素為所述初始字典中多種原子的線性組合中的一種;
步驟S102:利用稀疏分解算法獲取與所述信號(hào)矩陣相對(duì)應(yīng)的稀疏系數(shù)矩陣;
步驟S103:統(tǒng)計(jì)當(dāng)前執(zhí)行步驟S102的次數(shù);
步驟S104:對(duì)所述初始字典與所述稀疏系數(shù)矩陣執(zhí)行更新操作,并統(tǒng)計(jì)當(dāng)前執(zhí)行所述更新操作的次數(shù);所述更新操作具體為:對(duì)所述初始字典中的原子執(zhí)行第一更新操作,得到第一字典;依次對(duì)所述第一字典中的每列原子執(zhí)行第二更新操作,同時(shí)對(duì)在所述稀疏系數(shù)矩陣中,與執(zhí)行第二更新操作的列相對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng)執(zhí)行第三更新操作,直到所述第一字典中的列全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣;
步驟S105:判斷當(dāng)前執(zhí)行所述更新操作的次數(shù)是否小于第一預(yù)設(shè)次數(shù),若是,將第二字典作為新的初始字典,將更新后的稀疏系數(shù)矩陣作為新的稀疏系數(shù)矩陣,并返回步驟S104;若否,利用所述第二字典與所述更新后的稀疏系數(shù)矩陣重構(gòu)出信號(hào)矩陣,并執(zhí)行步驟S106;
步驟S106:判斷當(dāng)前執(zhí)行步驟S102的次數(shù)是否小于第二預(yù)設(shè)次數(shù);如果是,將所述第二字典作為新的初始字典,將所述重構(gòu)出的信號(hào)矩陣作為新的信號(hào)矩陣,并返回步驟S102;如果否,輸出所述重構(gòu)出的信號(hào)矩陣。
優(yōu)選的,所述對(duì)所述初始字典中的原子執(zhí)行第一更新操作,得到第一字典,包括:
獲取所述信號(hào)矩陣的重構(gòu)均方誤差其中,Y為所述信號(hào)矩陣,D為所述初始字典,Γ為所述稀疏系數(shù)矩陣;
對(duì)所述信號(hào)矩陣的重構(gòu)均方誤差進(jìn)行關(guān)于所述初始字典的求導(dǎo),得到第一字典D=Y(jié)ΓT(ΓΓT)-1,減小所述信號(hào)矩陣的重構(gòu)均方誤差。
優(yōu)選的,所述依次對(duì)所述第一字典中的每列原子執(zhí)行第二更新操作,同時(shí)對(duì)在所述稀疏系數(shù)矩陣中,與執(zhí)行第二更新操作的列相對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng)執(zhí)行第三更新操作,直到所述第一字典中的列全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣,包括:
獲取所述信號(hào)矩陣的重構(gòu)均方誤差其中,Ek為誤差矩陣,dk為所述初始字典D中第k列原子,為所述稀疏系數(shù)矩陣Γ中與dk對(duì)應(yīng)的第k行稀疏系數(shù);
去掉中的所有零值,并定義中非零項(xiàng)索引
根據(jù)所述中非零項(xiàng)索引,將所述信號(hào)矩陣的重構(gòu)均方誤差轉(zhuǎn)換為
采用交替最小化算法更新dk與直到所述第一字典中的原子全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣,使所述信號(hào)矩陣的重構(gòu)均方誤差最小化。
優(yōu)選的,所述采用交替最小化算法更新dk與包括:
利用所述誤差矩陣Ek、以及中非零項(xiàng)索引ωk更新所述初始字典中第k列原子dk;
利用更新后的dk、所述誤差矩陣Ek,以及中非零項(xiàng)索引ωk更新稀疏系數(shù)矩陣中與dk對(duì)應(yīng)的第k行稀疏系數(shù)的非零項(xiàng)。
優(yōu)選的,所述第一預(yù)設(shè)次數(shù)為3,所述第二預(yù)設(shè)次數(shù)為80。
一種信號(hào)稀疏表示裝置,包括:
初始化模塊,用于對(duì)預(yù)設(shè)字典進(jìn)行初始化,獲得初始字典,并將待處理信號(hào)初始化為與所述初始字典相對(duì)應(yīng)的信號(hào)矩陣,所述信號(hào)矩陣中的每個(gè)元素為所述初始字典中多種原子的線性組合中的一種;
獲取模塊,用于利用稀疏分解算法獲取與所述信號(hào)矩陣相對(duì)應(yīng)的稀疏系數(shù)矩陣;
統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)當(dāng)前所述獲取模塊的執(zhí)行次數(shù);
更新模塊,用于對(duì)所述初始字典與所述稀疏系數(shù)矩陣執(zhí)行更新操作,并統(tǒng)計(jì)當(dāng)前執(zhí)行所述更新操作的次數(shù);所述更新操作具體為:對(duì)所述初始字典中的原子執(zhí)行第一更新操作,得到第一字典;依次對(duì)所述第一字典中的每列原子執(zhí)行第二更新操作,同時(shí)對(duì)在所述稀疏系數(shù)矩陣中,與執(zhí)行第二更新操作的列相對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng)執(zhí)行第三更新操作,直到所述第一字典中的列全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣;
第一判斷模塊,用于判斷當(dāng)前執(zhí)行所述更新操作的次數(shù)是否小于第一預(yù)設(shè)次數(shù),若是,將第二字典作為新的初始字典,將更新后的稀疏系數(shù)矩陣作為新的稀疏系數(shù)矩陣,并返回所述更新模塊的相關(guān)操作;若否,利用所述第二字典與所述更新后的稀疏系數(shù)矩陣重構(gòu)出信號(hào)矩陣,并觸發(fā)第二判斷模塊;
第二判斷模塊,用于判斷當(dāng)前所述獲取模塊的執(zhí)行次數(shù)是否小于第二預(yù)設(shè)次數(shù);如果是,將所述第二字典作為新的初始字典,將所述重構(gòu)出的信號(hào)矩陣作為新的信號(hào)矩陣,并返回所述獲取模塊的相關(guān)操作;如果否,輸出所述重構(gòu)出的信號(hào)矩陣。
優(yōu)選的,所述更新模塊包括:
第一獲取子模塊,用于獲取所述信號(hào)矩陣的重構(gòu)均方誤差其中,Y為所述信號(hào)矩陣,D為所述初始字典,Γ為所述稀疏系數(shù)矩陣;
求導(dǎo)子模塊,用于對(duì)所述信號(hào)矩陣的重構(gòu)均方誤差進(jìn)行關(guān)于所述初始字典的求導(dǎo)得到第一字典D=Y(jié)ΓT(ΓΓT)-1,減小所述信號(hào)矩陣的重構(gòu)均方誤差;
第二獲取子模塊,用于獲取所述信號(hào)矩陣的重構(gòu)均方誤差其中,Ek為誤差矩陣,dk為所述初始字典D中第k列原子,為所述稀疏系數(shù)矩陣Γ中與dk對(duì)應(yīng)的第k行稀疏系數(shù);
定義子模塊,用于去掉中的所有零值,并定義中非零項(xiàng)索引
轉(zhuǎn)換子模塊,用于根據(jù)所述中非零項(xiàng)索引,將所述信號(hào)矩陣的重構(gòu)均方誤差轉(zhuǎn)換為
更新子模塊,用于采用交替最小化算法更新dk與直到所述第一字典中的原子全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣,使所述信號(hào)矩陣的重構(gòu)均方誤差最小化。
優(yōu)選的,所述更新子模塊還包括:
第一更新子單元,用于利用所述誤差矩陣Ek、以及中非零項(xiàng)索引ωk更新所述初始字典中第k列原子dk;
第二更新子單元,用于利用更新后的dk、所述誤差矩陣Ek,以及中非零項(xiàng)索引ωk更新稀疏系數(shù)矩陣中與dk對(duì)應(yīng)的第k行稀疏系數(shù)的非零項(xiàng)。
優(yōu)選的,所述第一預(yù)設(shè)次數(shù)為3,所述第二預(yù)設(shè)次數(shù)為80。
本發(fā)明提供的信號(hào)稀疏表示方法,對(duì)預(yù)設(shè)字典與待處理信號(hào)進(jìn)行初始化,獲得初始字典與信號(hào)矩陣,利用稀疏分解算法獲取與所述信號(hào)矩陣相對(duì)應(yīng)的稀疏系數(shù)矩陣,通過(guò)判斷獲取所述稀疏系數(shù)矩陣的次數(shù)是否小于第二預(yù)設(shè)次數(shù),構(gòu)成一個(gè)外部循環(huán)使初始字典原子與稀疏系數(shù)矩陣不斷進(jìn)行更新,利用更新后的字典與更新后的稀疏系數(shù)矩陣重構(gòu)信號(hào)矩陣,不斷減小未經(jīng)處理的信號(hào)矩陣與重構(gòu)信號(hào)矩陣的誤差,降低數(shù)據(jù)處理的復(fù)雜度,并且在外部循環(huán)的基礎(chǔ)上通過(guò)判斷執(zhí)行更新操作的次數(shù)是否小于第一預(yù)設(shè)次數(shù),構(gòu)成一個(gè)內(nèi)部循環(huán),通過(guò)一次性更新初始字典中的原子得到第一字典,利用第一字典與稀疏系數(shù)矩陣進(jìn)行相互更新,加快字典原子的更新速度和收斂速度。本發(fā)明提供的方法得到與待處理信號(hào)結(jié)構(gòu)信息最相匹配的字典原子,提高了信號(hào)的重構(gòu)精度和信號(hào)稀疏表示的效率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明公開的一種信號(hào)稀疏表示方法流程圖;
圖2為本發(fā)明公開的一種信號(hào)稀疏表示方法又一方法流程圖;
圖3為本發(fā)明公開的一種信號(hào)稀疏表示方法又一方法流程圖;
圖4為本發(fā)明公開的一種信號(hào)稀疏表示方法又一方法流程圖;
圖5為本發(fā)明公開的一種信號(hào)稀疏表示裝置結(jié)構(gòu)示意圖;
圖6為本發(fā)明公開的另一種信號(hào)稀疏表示裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,圖1為本發(fā)明公開的一種信號(hào)稀疏表示方法流程圖,具體包括如下步驟:
步驟S101:對(duì)預(yù)設(shè)字典進(jìn)行初始化,獲得初始字典,并將待處理信號(hào)初始化為與所述初始字典相對(duì)應(yīng)的信號(hào)矩陣,所述信號(hào)矩陣中的每個(gè)元素為所述初始字典中多種原子的線性組合中的一種;
具體的,所述預(yù)設(shè)字典為包括DCT過(guò)完備字典在內(nèi)的任意一種用于信號(hào)稀疏表示的字典,將待處理信號(hào)以列的形式初始化為一個(gè)能用所述初始字典表示的信號(hào)矩陣,以便后續(xù)對(duì)信號(hào)矩陣的處理;所述初始字典中的每一列為一個(gè)原子,在所述初始字典中存在多種原子的線性組合,所述信號(hào)矩陣中的每個(gè)元素都可以用所述初始字典中某一種原子的線性組合來(lái)表示。
優(yōu)選的,所述預(yù)設(shè)字典為DCT過(guò)完備字典,將DCT過(guò)完備字典初始化為一個(gè)大小為64x128的DCT過(guò)完備字典。
步驟S102:利用稀疏分解算法獲取與所述信號(hào)矩陣相對(duì)應(yīng)的稀疏系數(shù)矩陣;
優(yōu)選的,利用經(jīng)典的OMP算法獲取與所述信號(hào)矩陣Y相對(duì)應(yīng)的稀疏系數(shù)矩陣Γ;其中,Γ=OMP(Y,D,c*σ),σ為待處理信號(hào)的預(yù)估噪聲標(biāo)準(zhǔn)差,c為一個(gè)常數(shù)
步驟S103:統(tǒng)計(jì)當(dāng)前執(zhí)行步驟S102的次數(shù);
步驟S104:對(duì)所述初始字典與所述稀疏系數(shù)矩陣執(zhí)行更新操作,并統(tǒng)計(jì)當(dāng)前執(zhí)行所述更新操作的次數(shù);所述更新操作具體為:對(duì)所述初始字典中的原子執(zhí)行第一更新操作,得到第一字典;依次對(duì)所述第一字典中的每列原子執(zhí)行第二更新操作,同時(shí)對(duì)在所述稀疏系數(shù)矩陣中,與執(zhí)行第二更新操作的列相對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng)執(zhí)行第三更新操作,直到所述第一字典中的列全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣;
優(yōu)選的,利用MOD算法執(zhí)行第一更新操作,MOD算法是由Engan等人提出來(lái),采用矩陣求逆方式一次性更新字典中原子。相對(duì)K-SVD算法,MOD算法信號(hào)稀疏表示運(yùn)算速度較快,但是得到的效果較差。
優(yōu)選的,利用AK-SVD算法執(zhí)行第二更新操作與第三更新操作,AK-SVD算法依次更新所述第一字典中每列原子與所述稀疏系數(shù)矩陣Γ中與該列原子對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng),直到所述第一字典中的原子全部被更新,利用AK-SVD算法更新后的字典原子能收斂到最優(yōu)值,重建信號(hào)也越逼近原信號(hào),但是AK-SVD算法的信號(hào)稀疏表示速度較低。
步驟S105:判斷當(dāng)前執(zhí)行所述更新操作的次數(shù)是否小于第一預(yù)設(shè)次數(shù),若是,將第二字典作為新的初始字典,將更新后的稀疏系數(shù)矩陣作為新的稀疏系數(shù)矩陣,并返回步驟S104;若否,利用所述第二字典與所述更新后的稀疏系數(shù)矩陣重構(gòu)出信號(hào)矩陣,并執(zhí)行步驟S106;
優(yōu)選的,第一預(yù)設(shè)次數(shù)為3次。
通過(guò)判斷當(dāng)前執(zhí)行所述更新操作的次數(shù)是否小于第一預(yù)設(shè)次數(shù),構(gòu)建了一個(gè)信號(hào)稀疏表示的內(nèi)部循環(huán),結(jié)合MOD算法與AK-SVD算法對(duì)字典原子進(jìn)行反復(fù)更新,提高了字典原子的更新速度與收斂度。
步驟S106:判斷當(dāng)前執(zhí)行步驟S102的次數(shù)是否小于第二預(yù)設(shè)次數(shù);如果是,將所述第二字典作為新的初始字典,將所述重構(gòu)出的信號(hào)矩陣作為新的信號(hào)矩陣,并返回步驟S102;如果否,執(zhí)行步驟S107;
步驟S107:輸出所述重構(gòu)出的信號(hào)矩陣。
通過(guò)判斷當(dāng)前執(zhí)行步驟S102的次數(shù)是否小于第二預(yù)設(shè)次數(shù),構(gòu)建了一個(gè)信號(hào)稀疏表示外部循環(huán),先利用MOD算法一次性更新初始字典中的原子,再利用AK-SVD算法依次更新所述第一字典中每列原子與所述稀疏系數(shù)矩陣Γ中與該列原子對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng),直到所述第一字典中的原子全部被更新,若當(dāng)前執(zhí)行步驟S102的次數(shù)小于第二預(yù)設(shè)次數(shù),則通過(guò)將重構(gòu)信號(hào)作為待處理信號(hào),將第二字典作為初始字典再次求解新的與新的信號(hào)矩陣相對(duì)應(yīng)的稀疏系數(shù)矩陣,如此進(jìn)行反復(fù)進(jìn)行信號(hào)稀疏表示,直到重構(gòu)出精度較高的信號(hào)。
優(yōu)選的,第二預(yù)設(shè)次數(shù)為80次。
本發(fā)明提供的信號(hào)稀疏表示方法,對(duì)預(yù)設(shè)字典與待處理信號(hào)進(jìn)行初始化,獲得初始字典與信號(hào)矩陣,利用稀疏分解算法獲取與所述信號(hào)矩陣相對(duì)應(yīng)的稀疏系數(shù)矩陣,通過(guò)判斷獲取所述稀疏系數(shù)矩陣的次數(shù)是否小于第二預(yù)設(shè)次數(shù),構(gòu)成一個(gè)外部循環(huán)使初始字典原子與稀疏系數(shù)矩陣不斷進(jìn)行更新,利用更新后的字典與更新后的稀疏系數(shù)矩陣重構(gòu)信號(hào)矩陣,不斷減小未經(jīng)處理的信號(hào)矩陣與重構(gòu)信號(hào)矩陣的誤差,降低數(shù)據(jù)處理的復(fù)雜度,并且在外部循環(huán)的基礎(chǔ)上通過(guò)判斷執(zhí)行更新操作的次數(shù)是否小于第一預(yù)設(shè)次數(shù),構(gòu)成一個(gè)內(nèi)部循環(huán),通過(guò)一次性更新初始字典中的原子得到第一字典,利用第一字典與稀疏系數(shù)矩陣進(jìn)行相互更新,加快字典原子的更新速度和收斂速度。本發(fā)明提供的方法得到與待處理信號(hào)結(jié)構(gòu)信息最相匹配的字典原子,提高了信號(hào)的重構(gòu)精度和信號(hào)稀疏表示的效率。
請(qǐng)參與圖2,所述所述對(duì)所述初始字典中的原子執(zhí)行第一更新操作,得到第一字典,包括以下步驟:
步驟S201:獲取所述信號(hào)矩陣的重構(gòu)均方誤差其中,Y為所述信號(hào)矩陣,D為所述初始字典,Γ為所述稀疏系數(shù)矩陣;
步驟S202:對(duì)所述信號(hào)矩陣的重構(gòu)均方誤差進(jìn)行關(guān)于所述初始字典的求導(dǎo)得到第一字典D=Y(jié)ΓT(ΓΓT)-1,減小所述信號(hào)矩陣的重構(gòu)均方誤差。
具體的,固定稀疏系數(shù)矩陣,采用MOD算法中的矩陣求逆方式來(lái)更新整個(gè)初始字典原子。將重構(gòu)信號(hào)列與待處理信號(hào)列之間誤差定義為ei,則信號(hào)矩陣的重構(gòu)均方誤差表示為:
本發(fā)明的目標(biāo)就是對(duì)初始字典進(jìn)行更新來(lái)最小化信號(hào)矩陣的重構(gòu)均方誤差。所以對(duì)重構(gòu)均方誤差進(jìn)行關(guān)于初始字典D的求導(dǎo),可以獲得其封閉解,具體表示為:D=Y(jié)ΓT(ΓΓT)-1,并獲取了更新后的第一字典。
請(qǐng)參閱圖3,所述依次對(duì)所述第一字典中的每列原子執(zhí)行第二更新操作,同時(shí)對(duì)在所述稀疏系數(shù)矩陣中,與執(zhí)行第二更新操作的列相對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng)執(zhí)行第三更新操作,直到所述第一字典中的列全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣,包括以下步驟:
步驟S301:獲取所述信號(hào)矩陣的重構(gòu)均方誤差其中,Ek為誤差矩陣,dk為所述初始字典D中第k列原子,為所述稀疏系數(shù)矩陣Γ中與dk對(duì)應(yīng)的第k行稀疏系數(shù);
步驟S302:去掉中的所有零值,并定義中非零項(xiàng)索引
步驟S303:根據(jù)所述中非零項(xiàng)索引,將所述信號(hào)矩陣的重構(gòu)均方誤差轉(zhuǎn)換為
步驟S304:采用交替最小化算法更新dk與直到所述第一字典中的原子全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣,使所述信號(hào)矩陣的重構(gòu)均方誤差最小化。
具體的,本發(fā)明采用最小二乘法依次更新所述第一字典中每列原子與所述稀疏系數(shù)矩陣Γ中與該列原子對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng)。
假定dk是所述第一字典中第k列原子,是dk對(duì)應(yīng)稀疏系數(shù)矩陣中的第k行,則所述待處理信號(hào)矩陣Y的重構(gòu)均方誤差可以寫成:
其中,Ek為誤差矩陣,如果直接利用Ek和dk更新則得到的更新向量中的非零項(xiàng)的位置和數(shù)量相對(duì)更新原中非零項(xiàng)的位置和數(shù)量不同,變成滿向量,出現(xiàn)“發(fā)散”。為了避免出現(xiàn)“發(fā)散”現(xiàn)象,去掉中的所有零值,僅保留非零項(xiàng)。定義集合表示中非零項(xiàng)的索引,表示中非零項(xiàng)。則重構(gòu)均方誤差變成
采用交替最小化算法來(lái)更新dk和直到所述第一字典中的原子全部被更新,并獲取更新后的第二字典與更新后的稀疏系數(shù)矩陣,使所述信號(hào)矩陣Y的重構(gòu)均方誤差最小化。
請(qǐng)參閱圖4,所述采用交替最小化算法更新dk與包括,具體包括以下步驟:
步驟S401:利用所述誤差矩陣Ek、以及中非零項(xiàng)索引ωk更新所述初始字典中第k列原子dk;
步驟S402:利用更新后的dk、所述誤差矩陣Ek,以及中非零項(xiàng)索引ωk更新稀疏系數(shù)矩陣中與dk對(duì)應(yīng)的第k行稀疏系數(shù)的非零項(xiàng)。
具體的,
如此反復(fù)交替更新,使第一字典中的原子全部被更新。
基于上述本發(fā)明公開的一種信號(hào)稀疏表示方法,本發(fā)明對(duì)應(yīng)公開了一種信號(hào)稀疏表示裝置,所述裝置的具體結(jié)構(gòu)請(qǐng)參閱圖5,所述裝置包括:
初始化模塊101,用于對(duì)預(yù)設(shè)字典進(jìn)行初始化,獲得初始字典,并將待處理信號(hào)初始化為與所述初始字典相對(duì)應(yīng)的信號(hào)矩陣,所述信號(hào)矩陣中的每個(gè)元素為所述初始字典中多種原子的線性組合中的一種;
具體的,所述預(yù)設(shè)字典為包括DCT過(guò)完備字典在內(nèi)的任意一種用于信號(hào)稀疏表示的字典,將待處理信號(hào)以列的形式初始化為一個(gè)能用所述初始字典表示的信號(hào)矩陣,以便后續(xù)對(duì)信號(hào)矩陣的處理;所述初始字典中的每一列為一個(gè)原子,在所述初始字典中存在多種原子的線性組合,所述信號(hào)矩陣中的每個(gè)元素都可以用所述初始字典中某一種原子的線性組合來(lái)表示。
優(yōu)選的,所述預(yù)設(shè)字典為DCT過(guò)完備字典,將DCT過(guò)完備字典初始化為一個(gè)大小為64x128的DCT過(guò)完備字典。
獲取模塊102,用于利用稀疏分解算法獲取與所述信號(hào)矩陣相對(duì)應(yīng)的稀疏系數(shù)矩陣;
優(yōu)選的,利用經(jīng)典的OMP算法獲取與所述信號(hào)矩陣Y相對(duì)應(yīng)的稀疏系數(shù)矩陣Γ;其中,Γ=OMP(Y,D,c*σ),σ為待處理信號(hào)的預(yù)估噪聲標(biāo)準(zhǔn)差,c為一個(gè)常數(shù)
統(tǒng)計(jì)模塊103,用于統(tǒng)計(jì)當(dāng)前所述獲取模塊102的執(zhí)行次數(shù);
更新模塊104,用于對(duì)所述初始字典與所述稀疏系數(shù)矩陣執(zhí)行更新操作,并統(tǒng)計(jì)當(dāng)前執(zhí)行所述更新操作的次數(shù);所述更新操作具體為:對(duì)所述初始字典中的原子執(zhí)行第一更新操作,得到第一字典;依次對(duì)所述第一字典中的每列原子執(zhí)行第二更新操作,同時(shí)對(duì)在所述稀疏系數(shù)矩陣中,與執(zhí)行第二更新操作的列相對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng)執(zhí)行第三更新操作,直到所述第一字典中的列全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣;
優(yōu)選的,利用MOD算法執(zhí)行第一更新操作,MOD算法是由Engan等人提出來(lái),采用矩陣求逆方式一次性更新字典中原子。相對(duì)K-SVD算法,MOD算法信號(hào)稀疏表示運(yùn)算速度較快,但是得到的效果較差。
優(yōu)選的,利用AK-SVD算法執(zhí)行第二更新操作與第三更新操作,AK-SVD算法依次更新所述第一字典中每列原子與所述稀疏系數(shù)矩陣Γ中與該列原子對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng),直到所述第一字典中的原子全部被更新,利用AK-SVD算法更新后的字典原子能收斂到最優(yōu)值,重建信號(hào)也越逼近原信號(hào),但是AK-SVD算法的信號(hào)稀疏表示速度較低。
第一判斷模塊105,用于判斷當(dāng)前執(zhí)行所述更新操作的次數(shù)是否小于第一預(yù)設(shè)次數(shù),若是,將第二字典作為新的初始字典,將更新后的稀疏系數(shù)矩陣作為新的稀疏系數(shù)矩陣,并返回所述更新模塊104的相關(guān)操作;若否,利用所述第二字典與所述更新后的稀疏系數(shù)矩陣重構(gòu)出信號(hào)矩陣,并觸發(fā)第二判斷模塊106;
優(yōu)選的,第一預(yù)設(shè)次數(shù)為3次。
所述更新模塊104與第一判斷模塊105構(gòu)成了一個(gè)信號(hào)稀疏表示的內(nèi)部循環(huán),結(jié)合MOD算法與AK-SVD算法對(duì)字典原子進(jìn)行反復(fù)更新,提高了字典原子的更新速度與收斂度。
第二判斷模塊106,用于判斷當(dāng)前所述獲取模塊102的執(zhí)行次數(shù)是否小于第二預(yù)設(shè)次數(shù);如果是,將所述第二字典作為新的初始字典,將所述重構(gòu)出的信號(hào)矩陣作為新的信號(hào)矩陣,并返回所述獲取模塊102的相關(guān)操作;如果否,輸出所述重構(gòu)出的信號(hào)矩陣。
所述獲取模塊102、所述統(tǒng)計(jì)模塊103、所述更新模塊104、所述第一判斷模塊105以及所述第二判斷模塊106構(gòu)成了一個(gè)信號(hào)稀疏表示的外部循環(huán),先利用MOD算法一次性更新初始字典中的原子,再利用AK-SVD算法依次更新所述第一字典中每列原子與所述稀疏系數(shù)矩陣Γ中與該列原子對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng),直到所述第一字典中的原子全部被更新,若當(dāng)前所述獲取模塊102的執(zhí)行次數(shù)小于第二預(yù)設(shè)次數(shù),則通過(guò)將重構(gòu)信號(hào)作為待處理信號(hào),將第二字典作為初始字典再次求解新的與新的信號(hào)矩陣相對(duì)應(yīng)的稀疏系數(shù)矩陣,如此進(jìn)行反復(fù)進(jìn)行信號(hào)稀疏表示,直到重構(gòu)出精度較高的信號(hào)。
優(yōu)選的,第二預(yù)設(shè)次數(shù)為80次。
本發(fā)明提供的信號(hào)稀疏表示裝置,對(duì)預(yù)設(shè)字典與待處理信號(hào)進(jìn)行初始化,獲得初始字典與信號(hào)矩陣,利用稀疏分解算法獲取與所述信號(hào)矩陣相對(duì)應(yīng)的稀疏系數(shù)矩陣,通過(guò)判斷獲取所述稀疏系數(shù)矩陣的次數(shù)是否小于第二預(yù)設(shè)次數(shù),構(gòu)成一個(gè)外部循環(huán)使初始字典原子與稀疏系數(shù)矩陣不斷進(jìn)行更新,利用更新后的字典與更新后的稀疏系數(shù)矩陣重構(gòu)信號(hào)矩陣,不斷減小未經(jīng)處理的信號(hào)矩陣與重構(gòu)信號(hào)矩陣的誤差,降低數(shù)據(jù)處理的復(fù)雜度,并且在外部循環(huán)的基礎(chǔ)上通過(guò)判斷執(zhí)行更新操作的次數(shù)是否小于第一預(yù)設(shè)次數(shù),構(gòu)成一個(gè)內(nèi)部循環(huán),通過(guò)一次性更新初始字典中的原子得到第一字典,利用第一字典與稀疏系數(shù)矩陣進(jìn)行相互更新,加快字典原子的更新速度和收斂速度。本發(fā)明提供的裝置得到與待處理信號(hào)結(jié)構(gòu)信息最相匹配的字典原子,提高了信號(hào)的重構(gòu)精度和信號(hào)稀疏表示的效率。
請(qǐng)參閱圖6,所述第一更新模塊103包括:
第一獲取子模塊107,用于獲取所述信號(hào)矩陣的重構(gòu)均方誤差其中,Y為所述信號(hào)矩陣,D為所述初始字典,Γ為所述稀疏系數(shù)矩陣;
求導(dǎo)子模塊108,用于對(duì)所述信號(hào)矩陣的重構(gòu)均方誤差進(jìn)行關(guān)于所述初始字典的求導(dǎo)得到第一字典D=Y(jié)ΓT(ΓΓT)-1,減小所述信號(hào)矩陣的重構(gòu)均方誤差。
具體的,所述第一獲取子模塊107與所述求導(dǎo)子模塊108用于執(zhí)行第一更新操作。
固定稀疏系數(shù)矩陣,采用MOD算法中的矩陣求逆方式來(lái)更新整個(gè)初始字典原子。將重構(gòu)信號(hào)列與待處理信號(hào)列之間誤差定義為ei,則信號(hào)矩陣的重構(gòu)均方誤差表示為:
本發(fā)明的目標(biāo)就是對(duì)初始字典進(jìn)行更新來(lái)最小化信號(hào)矩陣的重構(gòu)均方誤差。所以對(duì)重構(gòu)均方誤差進(jìn)行關(guān)于初始字典D的求導(dǎo),可以獲得其封閉解,具體表示為:D=Y(jié)ΓT(ΓΓT)-1,并獲取了更新后的第一字典。
第二獲取子模塊109,用于獲取所述信號(hào)矩陣的重構(gòu)均方誤差其中,Ek為誤差矩陣,dk為所述初始字典D中第k列原子,為所述稀疏系數(shù)矩陣Γ中與dk對(duì)應(yīng)的第k行稀疏系數(shù);
定義子模塊110,用于去掉中的所有零值,并定義中非零項(xiàng)索引
轉(zhuǎn)換子模塊111,用于根據(jù)所述中非零項(xiàng)索引,將所述信號(hào)矩陣的重構(gòu)均方誤差轉(zhuǎn)換為
更新子模塊112,用于采用交替最小化算法更新dk與直到所述第一字典中的原子全部被更新,得到第二字典與更新后的稀疏系數(shù)矩陣,使所述信號(hào)矩陣的重構(gòu)均方誤差最小化。
具體的,所述第二獲取子模塊109、所述定義子模塊111以及更新子模塊112用于執(zhí)行第二更新操作與第三更新操作。
具體的,本發(fā)明采用最小二乘法依次更新所述第一字典中每列原子與所述稀疏系數(shù)矩陣Γ中與該列原子對(duì)應(yīng)行的稀疏系數(shù)非零項(xiàng)。
假定dk是所述第一字典中第k列原子,是dk對(duì)應(yīng)稀疏系數(shù)矩陣中的第k行,則所述待處理信號(hào)矩陣Y的重構(gòu)均方誤差可以寫成:
其中,Ek為誤差矩陣,如果直接利用Ek和dk更新則得到的更新向量中的非零項(xiàng)的位置和數(shù)量相對(duì)更新原中非零項(xiàng)的位置和數(shù)量不同,變成滿向量,出現(xiàn)“發(fā)散”。為了避免出現(xiàn)“發(fā)散”現(xiàn)象,去掉中的所有零值,僅保留非零項(xiàng)。定義集合表示中非零項(xiàng)的索引,表示中非零項(xiàng)。則重構(gòu)均方誤差變成
采用交替最小化算法來(lái)更新dk和直到所述第一字典中的原子全部被更新,并獲取更新后的第二字典與更新后的稀疏系數(shù)矩陣,使所述信號(hào)矩陣Y的重構(gòu)均方誤差最小化。
所述更新子模塊112包括:
第一更新子單元113,用于利用所述誤差矩陣Ek、以及中非零項(xiàng)索引ωk更新所述初始字典中第k列原子dk;
第二更新子單元114,用于利用更新后的dk、所述誤差矩陣Ek,以及中非零項(xiàng)索引ωk更新稀疏系數(shù)矩陣中與dk對(duì)應(yīng)的第k行稀疏系數(shù)的非零項(xiàng)。
具體的,
如此反復(fù)交替更新,使第一字典中的原子全部被更新。
需要說(shuō)明的是,本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說(shuō)明即可。
對(duì)所公開的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。