NSCT (Nonsubsampled Contourlet) 変換、MATLAB プログラムの実装を理解し、NSCT_TOOLBOX の使用法を説明する 1 つの記事

I.はじめに

この記事では、画像分解分野の発展からNSCTの背景と実装原理を説明し、最後にNSCTのmatalb実装コードを添付します。NSCT を理解していただくために、最短のスペースと最も一般的な言語を使用したいと思います (私は勉強に長い時間を費やしましたが、非常に苦痛でした。その苦痛が私にとどまることを願っています)。本文へGO!

2. NSCTの理論的背景

従来のウェーブレット変換は優れた時間周波数定位特性を持ちながら、画像を水平、垂直、斜めの 3 方向の高周波サブバンドに分解し、異なる周波数帯域および異なる時間帯の画像の分離を実現します。 . 支持体が正方形であるため、2次元画像における高次元の特異点(線、エッジ、輪郭など)の最適な疎表現が実現できず、画像の方向情報もうまく表現できません。同時に、ウェーブレット変換の実現プロセスは畳み込みによって完了する必要がありますが、計算が複雑で、並進不変性がないため、再構成された画像で明らかなギブス現象が容易に発生する可能性があります。上記の問題を解決するために、1998 年に Candes は Ridgelet 変換を提案しました。これは、2 次元画像を処理するときにウェーブレット変換が方向情報を表現できないという問題を効果的に解決しました。Ridgelet は、ウェーブレット基底関数に方向を表すパラメータを追加したもので、強力な方向選択能力と認識能力を備えており、画像内の線形輪郭や直線情報などの方向特徴を非常に効果的に表現できます。ただし、画像内に不規則な曲線が多数ある場合、Ridgelet 変換はうまく機能しませんが、対照的に、1999 年に Donoho et al. によって導入された Curvelet 変換理論は方向感度が良好です。ただし、Curvelet は周波数領域で定義および実装されるため、空間領域でのサンプリング特性は明らかではなく、デジタル実装の計算の複雑さは通常非常に高いため、Do らはコンターレット ( Contourlet ) 変換を提案しました。仮説。コンターレット変換は、厳密な画像マルチスケール幾何変換ツールであり、ウェーブレットの利点を高次元空間に拡張することに成功し、少数の非ゼロ係数だけで画像の滑らかな輪郭を効果的にキャプチャできます。画像のフィルタリングと分解の過程で、変換の不変性が失われるため、周波数領域空間に深刻な周波数エイリアシングが発生します。画像の融合に適用すると、融合された画像にも擬似ギブス効果が現れます。 。2006 年に、Cunha と Zhou らは、Contourlet の変換に α ̀trous アルゴリズムを適用し、NSCT 理論を開発および提案しました。この理論は、上記のいくつかの画像マルチスケール分解ツールの欠点をうまく解決しました。画像のマルチスケールと多方向分解の特性に加え、平行移動不変性も備えています。

3. NSCT画像表現

3.1 画像変換の概要

NSCT は、2 次元画像用の優れたマルチスケール分解ツールであり、ウェーブレット変換では効果的に表現できない高次元の特異点を処理できるだけでなく、コンターレット変換で欠落しているシフト不変性を補うこともできます。NSCT 変換では、非サブサンプル ピラミッド (Non-Subsampled Pyramid、NSP) 分解フィルターと非サブサンプル方向フィルター バンク (Non-Subsampled Filter Banks、NSDFB) が連続して使用されて、2 次元画像をセグメント化します。 NSP を使用してソース画像を複数のスケールで分解し、画像内の特異点の特徴を効果的に「キャプチャ」します。その後、NSDFB を使用して高周波成分を複数の方向にさらに分解し、さまざまな方向のサブバンド画像を取得します。スケールと方向。NSP は、毎回画像をローパス サブイメージとバンドパス サブイメージに分解し、その後の分解はローパス サブバンドに対して繰り返し実行されます。NSDFB は、NSP 分解の各レベルで得られたバンドパス サブバンドを異なる方向の複数のサブイメージに分解して、より正確な方向情報を抽出します。NSCTは、NSPやNSDFBで分解された信号成分に対して、解析フィルタリング後のダウンサンプリングや総合フィルタリング前のアップサンプリングを行うのではなく、該当するフィルタに対してアップサンプリングを行った後、信号に対して解析フィルタリング、総合フィルタリングを行います。非ダウンサンプリング ピラミッド フィルターは NSCT の分解プロセスで使用されるため、変換不変性があり、分解後のすべてのサブイメージのサイズが等しくなります。

個人的な意見: いわゆる非ダウンサンプリングの実現…実際には、フィルター上で直接アップサンプリング操作を実行することです。従来のピラミッドでは、画像をダウンサンプリングし、すべてを画像上で移動します (フィルターは固定されていません)。今回はこれが固定画像となり、本来の「フィルター + ダウンサンプリング」作業が直接実現されます。動くフィルター。これが NSCT がシャーレット変換と異なる点です。

図 3-1 は、NSCT を画像分解に適用する概略図です。2 次元画像が NSCT によって分解された後、次の図に示すように、周波数領域空間がくさび形の方向のサブバンドに分割されます。
図 3-1 NSCT を画像分解に適用する概念図

図 3-1 NSCT を画像分解に適用する概念図

3.2 非サブサンプリングピラミッド分解

NSCT は、デュアル チャネルの非サブサンプリング 2 次元フィルタ バンクを使用して NSP 分解メカニズムを実装します。分解プロセスは図 3-2 に示されています。
図 3-2 非サブサンプリング ピラミッドの ​​2 チャネル非サブサンプリング ピラミッド フィルター バンク

図 3-2 非サブサンプリング ピラミッドの ​​2 チャネル非サブサンプリング ピラミッド フィルター バンク

このうち、タワー分解フィルタH 0 ( z ) 、 H 1 ( z ) {H_0 (z),H_1 (z)}H0( z ) H1( z )と合成フィルターG 0 ( z ) 、 G 1 ( z ) {G_0 (z),G_1 (z)}G0( z ) G1( z )はBezout Bezout を満たす必要がありますB ezo u t约束条件:
H 0 ( z ) G 0 ( z ) + H 1 ( z ) G 1 ( z ) = 1 H_0(z) G_0(z)+H_1(z) G_1(z)=1H0( z ) G0( z )+H1( z ) G1( z )=
上式で示される恒等式を満たす1 (この式では、 H 0 ( z ) H_0 (z)H0( z )はローパス分析フィルターH 1 ( z ) H_1 (z)H1( z )はハイパス分解フィルターG 0 ( z ) G_0 (z)G0( z )はローパス再構成フィルターG 1 ( z ) G_1 (z)G1( z )はハイパス再構成フィルターです)。この制約方法により、NSP が完全再構築の条件を満たすことが保証されます。上記の変換プロセスは、α ̀ trous アルゴリズムの 1 次元非サブサンプリング ウェーブレット変換と非常によく似ており、分解レベルがNNNの場合、冗長性はN + l N+lN+lNSCT による画像のマルチスケール分解を実現するには、マルチレベル分解を実行するプロセスで、NSP の各ステージが前段のフィルターのD = 2 ID=2ID=2 Iは 2 次単位行列) を実行してアップサンプリングを実行します。つまり、アップサンプリングされたローパス フィルター後の上位スケールの低周波信号に対してローパス フィルター処理を実行し、低周波信号 (低周波信号) を取得します。タワー分解後の高周波信号(バンドパス方向のサブバンド画像)を取得するには、前のラフスケールでハイパスフィルターにハイパスフィルター処理を実行します。画像が NSP によって分解された後、jj番目スケールjのフィルターに対応する理想的な送信周波数帯域のサポート間隔は[ − ( π / 2 j ) , ( π / 2 j ) ] 2 \left[-\left(\pi / 2^j\right) ,\left (\pi / 2^j\right)\right]^2[( p / 2j )( p / 2j )]2であり、ハイパス フィルターに対応する理想的な送信周波数帯域のサポート インターバルは、前のローパス フィルターの補数、つまり [ ( −π / 2 j − 1 ) 、 ( π / 2 j − 1 )] 2 / [ − ( π / 2 j ) , ( π / 2 j ) ] 2 \left[\left(-\pi / 2^{j-1}\right),\left(\pi / 2^{ j- 1}\right)\right]^2 /\left[-\left(\pi / 2^j\right),\left(\pi / 2^j\right)\right]^2[ (π / 2j 1 )( p / 2j 1 )]2/[( p / 2j )( p / 2j )]フィルターの後続の各段階は、追加のフィルター設計を行わずに、フィルターの前の段階をアップサンプリングすることによってのみ取得できます。低周波サブバンド画像とバンドパス サブバンド画像は、2 次元画像の各レベルの NSP 分解後に取得でき、後続の各レベルの NSP 分解がローパス成分に対して繰り返し実行されて特異点が取得されます。したがって、二次元画像が k レベル NSP によって分解された後、ソース画像と同じサイズの k+1 個のサブ画像 (1 つのローパス サブ画像と k 個のバンドパス サブバンドを含む) を生成できます。さまざまなスケールの画像。図 3-3 (a) は、3 レベルのピラミッドを通じて画像を分解するプロセスを示しています。図中の2 I 2I2 I はペアH 0 ( z ) H_0 (z)H0( z )アップサンプリング操作を実行します。
図 3-3 非サブサンプリングピラミッド分解の概略図

図 3-3 非サブサンプリング ピラミッド分解の概略図

補足1:
Kレベル分解のNSCT変換の各段階で使用されるフィルタ(H0、H1とは)を一般式で表すと、次式で表すことができます。 Kレベルの等価フィルタカスケード
NSP :

個人的な理解: k 番目のレベルのカスケード フィルターの意味は、このレベルで使用される H0 と H1 として理解できます。この式の重要性は、ピラミッド分解のプロセスが 1 つの式で説明できることです。

H neq ( z ) = { H 1 ( z 2 n − 1 I ) ∏ k = 0 n − 2 H 0 ( z 2 k I ) , 1 ≤ n ≤ K ∏ k − 0 n − 2 H 0 ( z 2 k I ) , n = K + 1 H_n^{eq}(z)= \begin{cases}H_1\left(z^{2^{n-1} I}\right) \prod_{k=0}^ {n-2} H_0\left(z^{2^k I}\right), & 1 \leq n \leq K \\ \prod_{k-0}^{n-2} H_0\left(z^ {2^k I}\right)、& n=K+1\end{cases}Hne q( z )= H1( z2n 1 I)k = 0n 2H0( z2ク・k 0n 2H0( z2ク・1nKn=K+1
其中, 2 I 2I 2 I は依然としてアップサンプリング操作を表しており、すべての文字設定は以前のものと一致しています。H neq H_n^{eq}Hne qnn番目ですnレベルのカスケード フィルターは、 nn 番目のフィルターとして理解できます。nレベルH 0 H0H 0およびH 1 H1H1 . _ 式中のH 0 H0H 0およびH 1 H1H 1は、分解の最初の段階で最初に使用した初期フィルターです。

3.2 非サブサンプリング指向性フィルターバンク分解

非サブサンプリング コンターレット変換における NSDFB 分解メカニズムは、図 3-4 に示すように、Bamberger と Smith によって設計された扇形指向性フィルター バンクに基づいて構築された一連のデュアル チャネル非サブサンプリング フィルター バンクです。
3-4 2 チャンネルの非サブサンプリング セクター指向性フィルター バンク

3-4 2 チャンネルの非サブサンプリング セクター指向性フィルター バンク

同様に、NSDFB の分析フィルターU 0 ( z ) 、 U 1 ( z ) {U_0 (z),U_1 (z)}U0( z ) U1( z )と合成フィルターV 0 ( z ) 、 V 1 ( z ) {V_0 (z),V_1 (z)}V0( z ) V1(z)也需满足Bezout恒等式:
U 0 ( z ) V 0 ( z ) + U 1 ( z ) V 1 ( z ) = 1 U_0(z) V_0(z)+U_1(z) V_1(z)=1 U0( z ) V0( z )+U1( z ) V1( z )=1
NSDFB のワークフローは次のとおりです。まず、画像はファン フィルター バンクと象限フィルター バンクを使用して 4 方向のサブバンド画像に分解され、次に並列フィルター バンクによって異なる方向のサブバンド画像に分解されます。具体的には、理想的な周波数領域のサポート間隔はU 0 ( z ) U_0 (z)U0( z )U 1 ( z ) U_1 (z)U1( z )フィルターは 2 つのチャネルの方向性分解を実現します。これに基づいて、フィルタU 0 ( z ) U_0 (z)U0( z )U 1 ( z ) U_1 (z)U1( z )アップサンプリングに異なるサンプリング行列を使用し、前の粗いレイヤーの分解から得られた方向サブバンドに対してハイパス フィルター処理を実行して、周波数領域でのより正確な方向分解を完了します。たとえば、フィルターU 0 ( z ) U_0 (z)U0( z )U 1 ( z ) U_1 (z)U1( z )サンプリング行列によると、Q = [ 1 , − 1 ; 1 , 1 ] Q=[1,-1;1,1]Q=[ 1 1 ;1 1 ]アップサンプリングを実行してフィルターU 0 ( z Q ) U_0 (z^Q )U0( zQ )U 1 ( z Q ) U_1 (z^Q )U1( zQ )を計算し、前の 2 チャネル方向分解後に得られたサブバンド画像をフィルタリングして、4 チャネル方向分解を実現します。図 3-5 に示すように、NSDFB は 2 次元の周波数領域平面を異なる方向の複数のくさび形構造に分割することができ、チャネル NSDFB で構成されるツリー構造になります。同様に、合成フィルターの場合、 V 0 ( z ) 、 V 1 ( z ) {V_0 (z),V_1 (z)}V0( z ) V1( z )フィルター処理を行います。NSDFB が NSP 変換によって得られたバンドパス サブバンドを l レベル方向に一定のスケールで分解すると、2 l 2^l2ソース画像と同じサイズのl方向のサブバンド。したがって、画像は NSCT を受けてkkkレベル分解後、ローパス サブバンド画像と∑ jk 2 lj \sum_j^k 2^{l_j} をj2jバンドパス方向のサブバンド画像、ここでlj l_jj十番目スケールjでの分解方向の数
3.5 非サブサンプリング方向のフィルター バンク分解の概略図 (フルテキスト フォーカス!!!)

3.5 非サブサンプリング方向のフィルターバンク分解の概略図

この図は、NSCT 方向フィルタリングを理解するための鍵です。図(a)では、U1の上下セクタフィルタリング後に対応する領域の情報のみが残り、y0の第2象限フィルタリングと第4象限フィルタリング後に残った情報領域が(b)の0領域になります(ファン形状と四分円四角形が交差します)。これはいわゆるサポート スペースであり、ウェーブレットについて話すときに前述したサポート ベースです。

NSDFB フィルターによるアップサンプリングでは、計算の複雑さは追加されません。アップサンプリング行列を S、2 次元フィルターをH ( z ) H(z)とします。H ( z )、フィルターH ( zs ) H(z^s)H ( zs )信号x [ n ] x[n]x [ n ]はフィルタリングを実行して畳み込み出力y [ n ] y[n]y [ n ] :
y [ n ] = ∑ k ∈ supp ⁡ ( h ) h [ n ] x [ n − S k ] y[n]=\sum_{k \in \operatorname{supp}(h)} h [n] x\left[n-S_k\right][ n ]=k supp ( h )h [ n ] x[ nS]
以上の処理が α ̀ trous フィルタリングです。したがって、NSDFB の各フィルターは、指向性ファン フィルターと同じ複雑さになります。同様に、NSDFB の各分解フィルターは、最初のステージで使用されるフィルター バンクと同じ複雑度を持ちます。つまり、NSCT の計算量は NSDFB の計算量と一致します。NSCT は、画像の分解および再構成のプロセスでアップサンプリングおよびダウンサンプリング操作を実行しないため、コンターレット変換プロセス中に発生しやすいスペクトル エイリアシング現象を排除できます。Contourlet 変換と比較して、NSCT フィルタの設計方法はより柔軟であり、その独自の設計方法により、NSCT は Contourlet にはない平行移動不変性を持ち、ソース画像の位置ずれエラーがフュージョンに及ぼす影響を効果的に低減できます。パフォーマンス。同時に、画像が NSCT によって分解された後に得られるサブ画像はソース画像と同じサイズを持ち、分解された各サブ画像の係数間の対応関係を見つけるのが簡単です。これは、画像融合ルールの定式化。

4. NSCTのMATLABプログラムの実現

matlab では、NSCT 関連のツールキットを呼び出してその分解機能を直接実現できるため、NSCT の機能が再現されなくなります。matlab 上で NSCT を呼び出す方法は次のとおりです。

勉強していると、MATLAB による NSCT の実現に関するインターネット上のチュートリアルは有料のチュートリアルが多いことがわかりました。ブログ記事で無料で実現する方法を教えたいと思います。基礎的な知識は負担にならずに済みます。この無料ベースでさらに多くの貴重な知識を作成していただければ幸いです。資格のあるガイドになりましょう!

  1. NSCT ツールキットをダウンロードする

ダウンロードリンク

  1. アーカイブを解凍し、呼び出したいプログラム プロジェクト ファイル シーケンスに配置します。私の例として、NSCT_Learn プロジェクトを作成したいと思います。まず NSCT_Learn フォルダーを作成し、この圧縮パッケージを解凍してフォルダーに置きます。
    ここに画像の説明を挿入
  2. matlab を開く 「プロジェクト フォルダーのパスを cd する」方法を使用して、このプロジェクト ファイルを matlab で開きます。
    たとえば、ファイル パスは「F:\Project_Code_any\Matlab_Project\NSCT_Learn」です。MATLAB の
    コマンド ライン ウィンドウに次のように入力します。

cd F:\Project_Code_any\Matlab_Project\NSCT_Learn

次に、スクリプト ファイルを作成し、名前を nsct_main に変更します。このフォルダーで nsct 関数を呼び出します。
ここに画像の説明を挿入

  1. nsct パッケージを matlab にインポートして呼び出しを実現します。
    インターフェイスの左上隅にある NSCT_TOOLBOX_and_TEST IMAGES を選択して開くと、nsct とソース イメージの 2 つのフォルダーで構成されていることがわかります。このとき、NSCT_TOOLBOX_and_TEST IMAGES フォルダーを選択し、右クリックしてこのフォルダーをパスに追加します。を選択し、「選択したフォルダーとWordファイルフォルダー」を選択します。その理由は、このフォルダー (ツールキット) には、使用したい nsct 実装関数と対応する補助ファイルが含まれているためです。このフォルダーの下にあるすべてのサブファイルが役立つ可能性があるため、それを Matlab にインポートするプロセスでは、パスに追加します。とそれに関連するため、すべてをそのファイル名でインポートします。このプロセスは Python の import に似ています。
    ここに画像の説明を挿入

  2. nsct_main ファイルに次のコードを記述します。

clear
clc
close all;

image = imread('./lena.jpg');   %使用时替换成你所需要处理的文件的路径
image_gray = rgb2gray(image);
f=im2double(image_gray);

y=nsctdec(f,1,'pkva','9-7');

n = f - y{
    
    1};
figure;imshow(f);
figure;imshow(y{
    
    1});
figure;imshow(n,[]);
     

上記のコードを読むと、nsct の実現が主にこの文の y=nsctdec(f,1,'pkva','9-7'); の nsctdec 関数によって実現されていることがわかります。この機能の使用方法をよりよく理解するには、この機能上でマウス カーソルをクリックし、右クリックして [開く] を選択します。
ここに画像の説明を挿入
ここで、この nsctdec 関数/ファイルが、インポートしたばかりのツールキットの nsct フォルダーの下に存在することがわかります (このフォルダーには、他の多くの関数ファイルが統合されています。興味がある場合は、1 つずつ調べてください)。これを開くことができるということは、nsct パッケージが正常にインポートされたことを意味します (実際には、これはファイル呼び出しです)。このファイルは nsct のコード実装です。より深い学習原理を持つ友人は、コードを 1 行ずつ解釈して NSCT のエンジニアリング実装を完全に理解することができ、これは将来の NSCT の革新と改善に役立ちます。ここでは使用方法についてのみ説明します。
コメントから、nsctdec 関数には 4 つのパラメーターがあることがわかります。

パラメータ 意味
バツ 処理対象の画像を示します
レベル 分解のレベルを示します。原理の前の部分で説明したように、簡単に理解すると、完全に分解するには何回かということになります。特別な注意: 各分解では、分解/フィルタリングされる部分である詳細な画像が生成されるため、この関数の戻り値 y は、最初の k-1 回のフィルタリングによって生成された画像と、フィルタリングされた画像 画像 (k 回目) (例としてレベル = k を取ります)。したがって、上記のプログラムでは、分解された画像を表すために時間 y{1} が使用されます。
ディフィルト 方向フィルターを選択してください
プフィルト タワーフィルターを選択してください

ps: フィルターの具体的なオプションは何ですか? コメントに明確な説明があるので、ここでは詳しく説明しません。この記事で選択したサンプル プログラムは「pkva」と「9-7」です。

  1. プログラムの実行結果が表示されます。
    ここに画像の説明を挿入

V. まとめ

5.1 NSCTの既存の不足

NSCT では、複雑な方向表現を処理するための NSCT の固定方向フィルタの困難により、ハロー アーティファクトが生成される場合もあります。

5.2 謝辞

この論文では、NSCT 理論の紹介で、中国電子科学技術大学の博士論文を参照しています。

「多重解像度解析に基づく医用画像融合の基盤技術に関する研究」

特定の引用には 1 つずつマークを付けませんが、ここに感謝します。

おすすめ

転載: blog.csdn.net/qq_44949041/article/details/127409236