【文献】
Philippe Jost,Tree-Based Pursuit: Algorithm and Properties,IEEE TRANSACTIONS ON SIGNAL PROCESSING,米国,2006年12月,VOL. 54, NO. 12,p.4685-4697
【文献】
西浦 秀成 Hidenari NISHIURA,木構造を持つ基底系シフトによるシフト不変非負スパースコーディング A shiht-invariant non-negative sparse coding with tree-structured dictionary,映像メディア処理シンポジウム 第13回シンポジウム資料 The Proceedings of the 13th Image Media Processing Symposium,2008年10月29日,p.19-20
(58)【調査した分野】(Int.Cl.,DB名)
前記選択規則が、現在の前記反復の数および/または先行する反復において計算された前記近似データに応じたディクショナリの選択を含む、請求項1または2に記載のコンピュータデバイス。
前記近似ディクショナリが、ツリー構成によって相互につながり、前記選択規則が、現在の前記反復の数から取られた前記ツリーのレベルにおけるディクショナリの選択を含む、請求項3に記載のコンピュータデバイス。
所与のレベルのそれぞれの近似ディクショナリが、前記ツリーの続くレベルにおいて、選択された数の子近似ディクショナリに関連し、前記選択規則が、先行する反復において選択された前記近似ディクショナリの前記子達の中からの近似ディクショナリの選択を含む、請求項4に記載のコンピュータデバイス。
1つの所与のレベルのそれぞれの近似ディクショナリのそれぞれの項目が、前記ツリーの続くレベルにおける子ディクショナリに関連し、所与の反復の前記選択規則が、先行する反復において計算された前記近似データの項目識別子によって指定された前記項目に対応する前記子ディクショナリの選択を含む、請求項5に記載のコンピュータデバイス。
ツリーにおける1つの所与のレベルのそれぞれのディクショナリが、より高レベルのディクショナリの項目よりも1小さい大きさの項目を含む、請求項4から6のいずれか一項に記載のコンピュータデバイス。
前記レジューサが、反復ごとに還元データのセットを計算し、前記レジューサが、前記逐次近似データの前記計算に還元データの当該セットを使用する、請求項7に記載のコンピュータデバイス。
前記ツリーが、レベルごとに単一のディクショナリを含み、前記補助メモリが、還元データのセットをさらに格納し、前記ツリーにおける所与のレベルのそれぞれのディクショナリ項目が、還元データのセットに関連している、請求項7に記載のコンピュータデバイス。
【発明を実施するための形態】
【0013】
以下の図面および説明は、既定の性質である要素を基本的に含んでいる。したがって、それらは、本発明をより良く理解する助けとなるだけでなく、必要に応じて本発明を定めるのにも役に立つ。
【0014】
その性質によって、本明細書には、著作権保護を受ける要素が含まれ得る。著作権者は、公的ファイルに記載される限り、本出願または本明細書の、いかなる者による同一の複製に異議を唱えない。他のすべての事項においては、著作権者は、すべての権利を有する。
【0015】
図1は、本発明によるスパース表現の計算手順を示している。
【0016】
この方法は、「簡潔ベクトル(parsimonious vector)」として知られている空のベクトルによって近似すべき共通要素xを受け取るオペレーション100から始まる。要素xは、符号化すべきコンピュータデータの任意のタイプであってもよい。例えば、この要素は、画像内のピクチャボックスまたは符号化すべき画像の流れであっても、あるいは音楽録音におけるサウンドトラックなどであってもよい。
【0017】
オペレーション102において、反復カウンタiが初期化され、オペレーション104において、残余変数r(i)が要素xを受け取る。反復ごとに、残余変数r(i)は、現在の近似値の
残余を受け取り、後続の反復、MPアルゴリズムの古典的なケースで近似された要素を構成する。
【0018】
xのスパース表現は、反復カウンタの増加オペレーション106を含むループによって計算され、現在の反復についてのディクショナリ選択オペレーション108、近似ベクトル計算オペレーション110、およびループを終わらせる条件をテストするオペレーション112がそれに続く。
【0019】
このループが終わると、要素xを還元するオペレーションが終わり、この方法は、計算済みデータを送信し、続く要素xの還元を開始することによって、オペレーション114において終了する。
【0020】
オペレーション108は、関数Cho()の呼出しを含み、この関数は、引数として反復カウンタiを受け取り、変数DICT(i)に格納されているこの反復についての最適化されたディクショナリを送ることによって応答する。
【0021】
オペレーション110において、関数MP()が、先行する反復の
残余r(i-1)、ならびに現在の反復のディクショナリDICT(i)を伴って呼び出される。したがって、1反復ごとに、要素xは、MPアルゴリズムの古典式に従って近似される。
【0022】
関数MP()は、任意のタイプのMPアルゴリズム群を実施することが可能であることに留意されたい。
【0023】
オペレーション110の結果は、近似値y(i)および
残余r(i)である。近似値y(i)は、ディクショナリDICT(i)の項目の識別子を含み、それにより、先行する反復の
残余r(i-1)およびその増倍係数が最良に近似される。
【0024】
オペレーション112のループ終了条件は、関数Thresh()によってテストされ得る。関数Thresh()は、
反復の最大数、すなわち、iの最大数、
残余エネルギーr(i)の測定値、すなわち、
残余r(i)の基準の計算および意図された精度閾値との比較
の中から選択された1つまたは複数の条件を考慮することが可能である。
【0025】
関数Cho()が、現在の反復に対してディクショナリ選択を適合させることを可能にするという理由から、簡潔ベクトルを求める方法は、ここでは特に対象となる。
【0026】
これは、従来技術の手法に関して比較できる数の反復で、より正確になり得ることを意味する。さらに、これはまた、この方法を、簡潔ベクトルの探索に行われる反復の数とは無関係にし、その理由は、ディクショナリが、それぞれの反復において特異的に選択されるために、反復の総数はそれほど重要なものではないからである。
【0027】
図2は、
図1の方法を実施するコンピュータツールの簡略化した概略図を示している。
【0028】
本発明によって開示されるコンピュータツールは、ディクショナリセレクタ200、およびベクトルレジューサ202、ならびにディクショナリDICT(i)を格納するメモリ204を備える。
【0029】
このツールは、要素xをデータ206の形式で受け取り、スパース表現データ208を送る。
【0030】
ここで説明するコンピュータツールは、スパース表現を使用するコンピュータデバイス、例えば、符号化/復号化、雑音除去、予測、またはソース分割デバイス内に組み込むのに適している要素を示す。したがって、このツールは、より広いデバイスの処理において、ある「ブリック」であることに適している。
【0031】
したがって、データ206および208をこのツールの一時メモリ、またはメモリ205内に格納することができ、これらのメモリは、コンピュータツールがその中に一体化されているデバイスのメモリであってもよいことを当業者は理解するであろう。
【0032】
一方、セレクタ200およびレジューサ202が、別個にまたは一緒に、ソフトウェアとして、すなわち、コンピュータツールがその中に一体化されているデバイスの汎用プロセッサによって、または「物理的に」、すなわち、1つまたは複数の専用プロセッサによって実行される符号の形態で実施され得ることもまた、当業者なら理解するであろう。
【0033】
以下で分かるように、メモリ204内部のディクショナリは、関数Cho()によってランダムに格納されることも、または自動的に生成されることもない。これらのディクショナリは、下記で分かるように、本質的にレジューサの反復に関連付けられる。
【0034】
図3は、
図1の方法を実施するディクショナリのアーキテクチャの例を示している。
【0035】
このアーキテクチャでは、ディクショナリは、ツリー構造に従って構成されている。このツリー構造において、それぞれのレベルは、反復に利用可能なすべてのディクショナリを含むことになり、その数は、ツリー内のレベルに対応する。
【0036】
したがって、例えば、ツリーの第1のレベルは、第1の反復に使用されることになる単一のディクショナリを含み、ツリーの第2のレベルは、第2の反復に使用されることになるディクショナリのセットを含む。
【0037】
さらに、ここに説明する例では、ある反復について選択されたそれぞれのディクショナリは、続く反復におけるディクショナリの選択を調整する。実際に、
図5〜
図7の説明でよく分かるように、先行する反復によって取られる「ディクショナリパス」に基づいてディクショナリを駆動することが可能である。
【0038】
図4は、
図3のツリーアーキテクチャに関してサポートされる関数Cho()の実施形態の例を示している。
【0039】
オペレーション400において、関数Cho()は、先行する反復において
残余を近似するように選択された項目のインデックスを回復させる。この目的を達成するため、関数Rnk()が、先行する反復において決定された近似値y(i-1)、ならびにその計算のために使用済みのディクショナリDICT(i-1)を引数として受け取る。
【0040】
DICT(i-1)におけるベクトルy(i-1)のランクjが、決定されると、単一のディクショナリが、続くレベルにおいて指定される。次いで、選択されたディクショナリDICT(i)は、オペレーション402において、ツリーの中のディクショナリDICT(i-1)に対応するノードのj番目の子として定義される。
【0041】
したがって、次に、
図3のアーキテクチャにより、いかにディクショナリの選択が構造化されるか、すなわち、ディクショナリが、所与の反復において選択される度ごとに、ツリーの中のその子達のみが、続く反復において選択され得るということが分かる。
【0042】
これにより、単純な選択関数Cho()を実施することが可能になる。悩まされる比較考量としては、これには、ディクショナリパスが最適化されるツリーの規定が必要であるということである。下記で分かるように、この条件は、本出願によって展開される方法を考慮すると、それほど制限的なものではない。
【0043】
図3で分かったように、第1の実施形態は、先行する反復において取られたパスに基づいて最適化されるディクショナリツリーに基づいている。
【0044】
この最適化ディクショナリツリーは、再帰関数ITD()によって生成され得る。
【0045】
関数ITD()は、次第にディクショナリを最適化するために使用されるトレーニングベクトルのセットの伝播の原理に基づいている。それぞれのレベルにおいて、それぞれのトレーニングセットが、より低いレベルのディクショナリを駆動するように働く様々な
残余のセットを生成する。
【0046】
関数ITD()はまず、オペレーション500によって初期化されなくてはならず、ここで、第1のディクショナリおよび第1の
残余のセットが計算される。
【0047】
オペレーション500は、関数Creat()によって実行され、この関数は、P個のトレーニングベクトルyのセットを引数として受け取る。ここで説明される例では、トレーニングセットは、多数のトレーニングベクトルyを含み、ベクトルyの数Pは、ツリーのディクショナリそれぞれに与えられる大きさよりもはるかに大きい。これらのトレーニングベクトルは、最適なディクショナリ構成を提供するために、可能な限り変化するように選択される。
【0048】
トレーニングベクトルは、可能な限り規則的に意図されたベクトル空間を回復させるために、トレーニングベクトルのデータベースから取ることも、またはそれらを合成、すなわち生成することもできる。
【0049】
関数Creat()の実施形態の例を
図6に示している。その図で分かるように、関数Creat()は、オペレーション600により開始し、ここで、トレーニングベクトルが、
残余RS(0)のセット内に格納される。オペレーション602において、ツールは、関数KM()を実施して、
残余RS(0)のセットをトレーニング
残余R(s)のセットの数Nに分割する。関数KM()は、引数として残余RS(0)のセットおよび数Nから開始して、K平均アルゴリズム群を実施する関数である。
【0050】
明確にするため、K平均アルゴリズムでは、ベクトルのセットは、以下のやり方で反復して分割されることに留意されたい。
a) ベクトルは、重心からのそれらの距離に基づいて分割され、その距離は、測定規則によって左右され、
b) ベクトルが分割されると、重心は、重心選択/計算規則に従って、それぞれの分割内で再計算され、
c) 続く反復は、反復の数および/または重心の成長に関係する終了条件が満たされるまで、新規重心に基づいてa)から再開する。
【0051】
したがって、K平均アルゴリズム群では、ベクトルと重心との間の距離を計算して、それぞれの反復について分割を実行するために使用される測定値、およびそれぞれの反復の前の重心に対する計算規則は、特定のアルゴリズムを定義するパラメータであることが分かる。
【0052】
ここで説明する例において実施されるアルゴリズムでは、使用される測定値は、射影であり、重心選択/計算規則は、個々の値へのそれぞれの分割分解に基づいている。
【0053】
より正確には、1つの所与の分割のベクトルは、まず、マトリックス内に並んで作られる。次いで、このマトリックスは、形式UΣV
Tの個々の値に分解され、個々の値は、Σの対角線における下降値によって順序付けられる。次いで、マトリックスUは、この分割の重心として、その第1の列U1に還元される。
【0054】
測定値としての射影と重心の個々の値への分解との組合せは、下記に説明する多くの利点を、具体的には、直交性の観点から示す。
【0055】
次いで、オペレーション604では、ディクショナリDICT(1)は、関数LSV()によって計算される。関数LSV()は、オペレーション602で計算されたNセットのトレーニング
残余R(s)をその引数として取り、それらはディクショナリに還元される。
【0056】
この目的を達成するため、関数LSV()は、それぞれのセットのトレーニング残余R(s)の個々の値への分解に基づいて選択規則を実施する。
【0057】
この選択規則は、関数KM()の重心計算規則に非常に近い。より正確には、所与のセットのトレーニング
残余R(s)のベクトルは、まず、マトリックス内に並んで作られる。次いで、このマトリックスは、形式UΣV
Tで個々の値に分解され、個々の値は、Σの対角線における下降値によって順序付けられる。
【0058】
次いで、マトリックスUは、その第1の列U1に還元され、トレーニング
残余R(s)のセットは、このベクトルU1へと還元される。最後に、ディクショナリDICT(1)は、トレーニング
残余R(s)のセットを還元することによって得られるすべてのベクトルの連結と定義される。
【0059】
第1のディクショナリDICT(1)が計算されると、トレーニング
残余の第1のセットRS(1)は、オペレーション606において計算される。ディクショナリツリーの作成を容易にするために、
図3に示すように、ディクショナリツリーに含まれるトレーニング残余のセットについてツリーが作成される。1つの変形形態において、残余のセットは、別個のツリーに格納することができる。
【0060】
これは、第1のノードのそれぞれの子RS(1)における関数Proj()の結果を格納することによって実行され、関数Proj()は、トレーニング
残余のセットRS(0)およびディクショナリDICT(1)を引数として受け取る。
【0061】
関数Proj()は、トレーニングの
残余のセットRS(0)のベクトルごとに以下のオペレーションを行う。
関数Proj()は、ベクトルに最も近いディクショナリDICT(1)の項目を決定し、
関数Proj()は、エントリ時のベクトルと、セットRS(1).tにおけるその項目へのその射影との差に対応する
残余のベクトルを格納する。ただし、tは、ディクショナリDICT(1)における項目のインデックスである。
【0062】
結果として、ゼロレベルのノードは、最初のトレーニングセットRS(0)から取られた、N個の子トレーニング残余セットS(1)を生成する。
【0063】
第1のディクショナリDICT(1)および第1のセットの
残余RS(1)が計算されると、オペレーション502において、関数ITD()は、引数としてこれらの要素を伴って呼び出される。
【0064】
図7は、この関数の実施形態の例を示している。関数ITD()は、オペレーション700において終了条件をテストすることによって開始する。この終了条件は、
図1で説明した関数Tresh()の制限付きバージョンによって、ここで説明する例でテストされる。
【0065】
この場合、関数Tresh()の唯一の終了条件は、反復の数である。この終了の目的は、数学的見地から、それぞれの反復が、この反復のディクショナリの項目によって形成される基底における
残余の1つの射影に対応することである。
【0066】
したがって、ディクショナリが互いに直交し、および/または選択された関数群MPが直交している場合、ベクトルは、この基底とは無関係の新規ベクトルに関して射影される。したがって、近似を図ろうとされるベクトルにおける次元と同じく反復も存在し得ない。
【0067】
したがって、dが最初のベクトルの次元である場合、反復の最大数は、dである。これはまた、関数ITD()の収束を確実にする利点を有する。ディクショナリが互いに直交しておらず、および/または選択された関数群MPが直交していない場合、近似値は、所望の数の反復の後、満たされていると考えられる。
【0068】
両方の場合において、ディクショナリが多すぎて格納できないことを避けるために、値dの一部に対して反復の数を制限することは賢明である。ディクショナリが最適化されるので、これにより、近似値の品質は過度の影響を受けないことになる。
【0069】
最大数の反復が達成されると、関数IDT()は、オペレーション702において終了する。この関数において、
残余についての閾値条件は、実施されない。有利には、ヌル
残余または閾値未満の
残余は、オペレーションの過程でそれらが属するトレーニング
残余のセットから取り除かれる。
【0070】
オペレーション700の後、反復カウンタiは、オペレーション704において増加する。この点で、関数ITD()の実行のコンテキストを説明するだけの価値がある。第1の反復に続いて、ディクショナリツリーは、ディクショナリDICT(1)を含み、
残余ツリーは、ディクショナリDICT(1)から取られたNセットのトレーニング
残余を含む。したがって、ツリーは、容易に想像される。
【0071】
ディクショナリツリーのいずれのレベルにおいて、問題はむしろより複雑になる。ここに説明する例のコンテキストでは、レベルiのそれぞれのディクショナリは、レベルi+1のN個のディクショナリ、すなわち、親ディクショナリの項目ごとに子ディクショナリを生じさせ、この項目に対応するレベルiの残余のセットにおいて駆動される。
【0072】
したがって、(カウンタiが704において増加したばかりであることを考慮する)一般的な場合、関数ITD()は、まず、ディクショナリDICT(i-1).mのj番目の項目に対応するトレーニング
残余のセットRS(i-1).jを受け取る。
【0073】
オペレーション706において、反復i-1のトレーニング
残余のセットは、オペレーション602において行われたように分割される。これが行われると、Nセットのトレーニング残余R(s)が得られる。
【0074】
次いで、オペレーション708において、これらのNセットのトレーニング
残余から生じることになるディクショナリDICT(i).jは、ディクショナリDICT(i-1).mの子として初期化される。このディクショナリは、それが、ディクショナリDICT(i-1).mの項目jから生じるので、j番目のランクにおいて初期化される。次いで、Nセットのトレーニング
残余RS(i).tは、
残余のセットRS(i-1).jの子として、オペレーション710において初期化される。
【0075】
次いで、オペレーション712において、ディクショナリDICT(i).jは、オペレーション604において行われたことと同様に、オペレーション706から生じるNセットのトレーニング
残余R(s)を伴って呼び出された関数LSV()で満たされる。
【0076】
ディクショナリDICT(i).jが満たされると、オペレーション714における関数Proj()によって、
残余のセットRS(i-1).jがNセットの
残余RS(i).tに展開され、tは、1からNの間で変わる。
【0077】
最後に、オペレーション716において、関数ITD()は、一方はディクショナリDICT(i).jを、他方はNセットRS(i).tのそれぞれを引数の対として含みながら、N回再生する。
【0078】
前述において、与えられたインデックスが絶対的ではなく、相対的であることに留意することは重要であると思われる。したがって、前述したように、最初のディクショナリは、ディクショナリDICT(i-1).m、すなわち、レベルi-1のすべてのディクショナリの中からの任意のディクショナリである。
【0079】
表記DICT(i-1).mは、エントリのポイントをディクショナリツリーに示し、それはポインタであり、それ自体におけるそのコンテンツは、重要ではない。このディクショナリDICT(i-1).mに、先の反復RS(i-2).jから発生するトレーニング
残余のセットが対応する。このディクショナリDICT(i-1).mにより、Nセットの
残余RS(i-1).tが作成され、t=1〜Nである。ここで説明する例では、これらのセットのうちの1つ(セットRS(i-1).j)を考慮しているに過ぎないが、オペレーション716が示すように、関数ITD()は、N回呼び出され、トレーニング
残余のそれぞれのセットRS(i).tが、関数ITD()の現在の実行の過程で作成される。
【0080】
これらのすべての反復の結果、ディクショナリツリーが再帰的に作成され、1つのレベルのそれぞれのディクショナリが次にN個のディクショナリを作成する。さらに、これらのディクショナリは、意図的にディクショナリツリー内で互いにつながり、それらの収束は、反復につながった終了条件によって確実になる。
【0081】
図8は
図5の、
図9は
図7の変形形態を示しており、初期化関数Creat()は同じままである。
【0082】
これらの図は、ディクショナリを作成するこの方法により、ディクショナリの大きさの縮小が可能になるという研究結果に基づいている。実際、上述したように、トレーニング
残余のそれぞれのセットは、ディクショナリの項目における射影の結果である。したがって、トレーニング
残余のこれらのセットに基づいて、ツリーの次のレベルで作成されたディクショナリは、射影がそれに基づいている項目と直交している。したがって、この項目に対応するコンポーネント(ライン)は、それらの寄与が皆無であるので、トレーニング
残余から取り除くことができる。
【0083】
したがって、オペレーション800は、オペレーション500と同一であり、オペレーション802は、呼び出されるのが新規関数RITD()である点で、オペレーション502とは異なる。
【0084】
概して、
図7のオペレーションと類似しているオペレーションに再度符号付けし、100の位の数字「7」を数字「9」に置き換える。
図7の関数ITD()と、
図9の関数RITD()との相違に関しては、
新規オペレーション905aにより、関数GS()によってマトリックスPhi(i-1).jを確立して、先の反復の項目jに対応するコンポーネントが取り除かれ、
新規オペレーション905bにより、マトリックスPhi(i-1).jを使用して、トレーニング
残余のセットRS(i-1).jが還元され、
接頭辞「R」は、RS(i).tとして引き続き知られている最終
残余を例外として、還元を示すように還元要素に付加される。
【0085】
関数GS()は、先の反復において選択された項目をその最初のベクトルとして取る直交化関数であり、直交ベクトル基底がそれから取られ、項目が補われる。これは、例えば、グラムシュミットのアルゴリズムによって行うことができる。これらのベクトルにより、マトリックスPhi(i-1).jの列が形成される。
【0086】
この方法により、それぞれのディクショナリは、反復ごとに1ラインずつ大きさが縮小されるので、スペースの節約が可能になる。これによりまた、マトリックスおよびディクショナリの大きさが反復ごとに縮小されるので、計算パワーの節約も可能になる。
【0087】
上述のディクショナリを駆動する方法は、2つの主な要素において調整される。
【0088】
第1に、これらの方法は、「カスケード」な形でディクショナリを作成する、すなわち、1つの所与の反復のそれぞれのディクショナリが、続く反復においてN個のディクショナリを作成する。
【0089】
これは、それぞれの実行において、最初の分割をNセットのトレーニング
残余へと実行することによって得られる。1つの変形形態において、
残余のセット数は、
図3で示唆したように、反復ごとに変わることがあり得(第1の反復ではNA1、第2の反復ではNA2など)、それは、オペレーション706およびオペレーション906までパスしたパラメータNによって左右される。
【0090】
さらに、分割方法において重心を選択/計算する方法は、説明した例では、反復ごとに、それぞれの分割における個々の値への分解の中の最強項目の選択に基づいている。この規則は、例えば、重心選択/計算によって置き換えることができる。
【0091】
さらに、ディクショナリを形成する項目の計算方法はまた、非常に重要であり、オペレーション712およびオペレーション912において、トレーニング
残余のセットのそれぞれの分割セットの個々の値への分解の中の最強項目の選択に基づいている。別の規則、例えば、重心規則が使用されてもよい場合がある。
【0092】
図4の関数における現在の反復のディクショナリを選ぶために関数Cho()に使用されるのはこの同じ選択規則である。実際、ここで説明する例では、現在の反復のディクショナリを指定するために使用されるのは、先の反復の関数MPE()から発生する項目であり、結果的に、個々の値への分解の中の最大の相関を有する項目を選ぶことになる。
【0093】
1つの変形形態において、別の選択規則が、反復のディクショナリを選ぶために使用されてもよい場合がある。例えば、このような規則は、近似されることが求められる残りのベクトルを最良に近似する先の反復のディクショナリDICT(i-1)の項目によって指定されるディクショナリを選択することが可能になり得、最強のK個の個々の値に対応するベクトルが第1のベクトルだけでなく考慮される。
【0094】
図10は
図5の、
図11は
図7の他の変形形態を示し、関数Creat()は同一のままである。
【0095】
これらの変形形態は、
図8および
図9の変形形態と同じ原理に基づいているが、反復レベルごとに格納されている1つのディクショナリのみによるより軽い実施形態を意図している。選択された各項目への適合を確実にするのは還元マトリックスPhi(i-1).tであり、レベルごとに格納されているディクショナリに基づいてN個のディクショナリが得られる。
【0096】
各ディクショナリが、続く反復において1つのディクショナリしか作成しないということに基づくと、この実施形態はより簡単に思われ、ツリー構造が縮小され、インデックス表記が縮小され、特定のオペレーションが消去される。しかし、
図8および
図9の場合に反して、関数Phi(i-1).tは、もはや暗黙的であることは不可能であり、この場合、ディクショナリRDICT(i)を伴って格納されなくてはならない。
【0097】
図10では、
図8との唯一の相違は、呼び出されるのは関数ITAD()であり、関数RITD()ではもはやないことである。
【0098】
概して、
図9のオペレーションと類似しているオペレーションに再度符号付けし、100の位の数字「9」を数字「11」に置き換える。
図11の関数ITAD()と
図9の関数RITD()との相違に関しては、
オペレーション1105aは、マトリックスPhi(i).tが、詳細に後述する関数Align()によって構成されている点で、オペレーション905aと異なり、
トレーニング
残余のNセットおよび結果得られるN個のディクショナリを作成する分割オペレーション906は消去され、
ツリー908およびツリー910の管理に関するオペレーションは消去され、
ディクショナリ作成オペレーション912は、詳細に後述する関数KM2()によって行われるのであって、もはや関数LSV()によって行われるのではなく、
オペレーション1116により、関数ITAD()の単一の再帰のみが呼び出されるが、
残余のセットは、作成されたばかりの(オペレーション1105aによって考慮に入れられた)Nセットの
残余を含んでいる
ことに留意されたい。
【0099】
関数Align()は、形式UΣV
Tで、各セットRS(i-1).tの個々の値への分解を行い、個々の値は、Σの対角線における下降値で順序付けされる。
【0100】
次いで、マトリックスUは、Σの個々のヌルでない値に対応するその列に対して還元される。したがって、マトリックスPhi(i-1).tは、RS(i-1).tの直交基底を形成する。
【0101】
関数KM2()は、それが同じ計算を実行する範囲内で関数KM()に非常に近い。しかし、それは、その入力およびその出力により異なる。この場合、すべての還元されたセットRRS(i-1).tが入力を形成するように再度グループ分けされ、出力は、ディクショナリRDICT(i)である。
【0102】
関数KM2()は、重心選択/計算規則として、最強の個々の値に対応するベクトルの選択を使用する。オペレーション1112において、ディクショナリRDICT(i)を満たすために使用されるのは、これらの重心である。
【0103】
さらに、この設計は直交しているので、オペレーション1105aおよびオペレーション1105bは、還元
残余RRS(i-1).jのすべてのセットが、個々の値へのそれらの分解の中の同じマトリックスUを有することになるという意味で、
残余を「位置合わせ」する。これにより、単一のディクショナリRDICT(i)の使用が可能になり、マトリックスPhi(i-1).tは、それぞれのセットRRS(i-1).jへのこのディクショナリRDICT(i)の適合を可能にする。
【0104】
最後に、オペレーション1116において、それがオペレーション1114において計算されたNセットのRS(i).tの組合せであるという意味で、RS(i)が参照される。
【0105】
図8および
図9の変形形態の利点から利益を得ながら、反復iごとに1つのディクショナリしか維持しないことを可能にするのがこの位置合わせである。これは、この位置合わせを可能にするマトリックスPhi(i).tを格納するという代償を払って行われる。
【0106】
上記において、反復ごとにディクショナリを変える規定がなされた。しかし、関数Cho()は、選択された数の反復のグループごとに1つのディクショナリを選ぶことが可能になり得、またはK回の反復ごとに呼び出されることしかできないことになり得る。
【0107】
さらに、関数MP()がすべての反復について同じであるというスキームを示した。しかし、この関数は比較的コストが低く、マッチング追跡の異なるバージョン群を組み込んだ、最良のものだけが毎回保存される、いくつかの個別の関数MP()の実行が想定可能になる。
【0108】
さらに、個々の値への分解によってディクショナリを選び駆動することにより直交要素を生成し、これにより、タイプOMPまたはOOMPの関数を使用する関心が抑えられる。しかし、万が一、ディクショナリの選択規則が異なる場合には、本技法は、その対象のすべてを失うことになる。