メインコンテンツ

sheart2

説明

coefs = sheart2(sls,im) は、シャーレット システム sls の実数値 2 次元イメージ im のシャーレット変換またはシャーレット解析を返します。シャーレット システムが周期的境界条件をもつ実数値のシステムである場合、coefs は実数値になります。そうでない場合、coefs は複素数値になります。im のサイズとクラス (データ型) は、それぞれ slsImageSizePrecision の値と一致しなければなりません。

すべて折りたたむ

この例では、イメージのシャーレット変換を行い、ゼロ シャーリングに対応する係数のみを使用してイメージを再構築する方法を説明します。

円のイメージを読み込んで表示します。

load circleGS
imagesc(circleGS)
colormap gray
axis equal
axis tight

Figure contains an axes object. The axes object contains an object of type image.

イメージに使用できるシャーレット システムを作成します。システムによって定義されたシャーレット フィルターとその幾何学的解釈を取得します。

[numRows,numCols] = size(circleGS);
sls = shearletSystem('ImageSize',[numRows numCols], ...
    'FilterBoundary','truncated');
[psi,scale,shear,cone] = filterbank(sls);

イメージのシャーレット変換を取得します。

cfs = sheart2(sls,circleGS);

ゼロ シャーリングに対応するシャーレット フィルターのインデックスを見つけます。ローパス フィルターもゼロ シャーリングに対応することに注意してください。

ind = find((shear==0).*(scale~=-1))'
ind = 1×10

     3     6    10    15    20    25    31    38    46    55

シャーレットの 1 つを周波数平面にプロットします。このシャーレットはゼロ シャーリングに対応するため、周波数応答が横軸または縦軸に集中していることを確認します。

sh = 31;
omegax = -1/2:1/numCols:1/2-1/numCols;
omegay = omegax;
figure
surf(omegax,flip(omegay),psi(:,:,sh),'EdgeColor','none')
view(0,90)
xlabel('\omega_x')
ylabel('\omega_y')
axis equal
axis tight
title({"Zero Shear Shearlet", ...
    "Scale: "+num2str(scale(sh))+" Cone: "+cone{sh}})

Figure contains an axes object. The axes object with title Zero Shear Shearlet Scale: 3 Cone: H, xlabel omega indexOf x baseline, ylabel omega indexOf y baseline contains an object of type surface.

ゼロ シャーリング フィルターに対応するシャーレット係数のみを含む配列を作成します。

cfsx = zeros(size(cfs));
for k=1:length(ind)
    cfsx(:,:,ind(k)) = cfs(:,:,ind(k));
end

新しい係数配列を使用してイメージを再構築します。ゼロでないシャーレット係数のみがゼロ シャーリングに対応しているため、再構築後は円の水平部分と垂直部分が強調されます。

rec = isheart2(sls,cfsx);
imagesc(rec)
axis equal
axis tight
colormap gray
title('Reconstruction')

Figure contains an axes object. The axes object with title Reconstruction contains an object of type image.

入力引数

すべて折りたたむ

シャーレット システム。shearletSystem オブジェクトとして指定します。

入力イメージ、実数値行列を指定します。im のサイズとデータ型は、それぞれ slsImageSizePrecision の値と一致しなければなりません。

データ型: single | double

出力引数

すべて折りたたむ

シャーレット係数。3 次元配列として返されます。coefs のサイズは M×N×K です。ここで、MN はそれぞれ入力イメージの行と列の寸法です。3 番目の次元 K のサイズは、sls 内のシャーレットの数にローパス フィルターを加えた数に等しく、K = numshears(sls) + 1 となります。

たとえば、cfs = sheart2(sls,im) かつ psi = filterbank(sls) である場合、cfs(:,:,k) に対応するシャーレットは psi(:,:,k) になります。coefs のデータ型は、シャーレット システムの Precision の値と一致します。

データ型: single | double

拡張機能

すべて展開する

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2019b で導入