Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

haart2

2 次元 Haar ウェーブレット変換

説明

[a,h,v,d] = haart2(x) は、行列 x の 2 次元 Haar 離散ウェーブレット変換 (DWT) を実行します。x は、行と列の次元が偶数長の 2 次元、3 次元、または 4 次元の行列です。x が 4 次元の場合、次元は、空間 x 空間 x チャネル x バッチになります。Haar 変換は、常に入力行の次元と入力列の次元に沿って計算されます。x の行と列の次元が 2 のべき乗である場合、レベル log2(min(size(x,[1 2]))) まで下げて Haar 変換が求められます。x の行または列の次元が偶数であるが 2 のべき乗ではない場合、レベル floor(log2(min(size(x,[1 2])/2))) まで下げて Haar 変換が求められます。

haart2 は、最も粗いレベルの Approximation 係数 a を返します。haart2 は、各レベルの水平方向、垂直方向、および対角方向の Detail 係数を含む行列の cell 配列も返します。2 次元 Haar 変換が分解能が粗い 1 つのレベルでのみ計算された場合、hv、および d は行列になります。既定の levelx の行数に応じて異なります。

[a,h,v,d] = haart2(x,level) は、指定されたレベルまで下げて 2 次元 Haar 変換を実行します。

[a,h,v,d] = haart2(___,integerflag) では、前の構文のいずれかを使用して、2 次元 Haar 変換での整数値のデータの処理方法を指定します。

すべて折りたたむ

2 次元データの 2 次元 Haar 変換を求め、対角方向および水平方向のレベル 1 の Detail をプロットします。

load xbox;
[a,h,v,d] = haart2(xbox);
imagesc(xbox)
title('Original Image')

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

figure
subplot(2,1,1)
imagesc(d{1})
title('Diagonal Level 1 Details')
subplot(2,1,2)
imagesc(h{1})
title('Horizontal Level 1 Details')

Figure contains 2 axes objects. Axes object 1 with title Diagonal Level 1 Details contains an object of type image. Axes object 2 with title Horizontal Level 1 Details contains an object of type image.

2 次元 Haar変換の最大レベルを制限した場合のイメージに対する影響を表示します。

カメラマンのイメージを読み込んで表示します。

im = imread('cameraman.tif');
imagesc(im)

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

レベル 2 の 2 次元 Haar 変換を求め、レベル 2 の Approximation を表示します。

[a2,h2,v2,d2] = haart2(im,2);
imagesc(a2)

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

既定の 'noninteger' フラグを使用した場合と 'integer' フラグを使用した場合の 2 次元 Haar 変換の結果を比較します。カメラマンのイメージは uint8 データであるため、最大値は 255 です。

既定の Haar 変換を求めます。Approximation の Detail 係数は 0 から 255 までの範囲外になります。

im = imread('cameraman.tif');
[a,h,v,d] = haart2(im);
a
a = 3.0393e+04

整数値に制限して Haar 変換を求めます。Approximation の Detail は整数になり、元のイメージ データの範囲内になります。

[a,h,v,d] = haart2(im,'integer');
a
a = 119

入力引数

すべて折りたたむ

入力信号。2 次元、3 次元、または 4 次元の実数値の行列として指定します。x が 4 次元の場合、次元は、空間 x 空間 x チャネル x バッチになります。x の行と列のサイズは、偶数長でなければなりません。

データ型: single | double

2 次元 Haar 変換を実行する最大レベル。正の整数として指定します。既定値は、入力信号 x の長さに応じて異なります。

  • x の行と列の両方のサイズが 2 のべき乗である場合、level log2(min(size(x,[1 2]))) まで下げて 2 次元 Haar 変換が求められます。

  • x の行と列の両方のサイズが偶数であるが、少なくとも一方が 2 のべき乗ではない場合、levelfloor(log2(min(size(x,[1 2])/2))) と等しくなります。

level が 1 より大きい場合、hv、および d は cell 配列になります。level が 1 と等しい場合、hv、および d は行列になります。

整数値のデータの処理。'noninteger' または 'integer' のいずれかとして指定します。'noninteger' は 2 次元 Haar 変換で整数値のデータを保持せず、'integer' は保持します。'integer' オプションは、入力 x のすべての要素が整数である場合のみ適用されます。整数値の入力について、haart2 は整数値のウェーブレット係数を返します。ただし、'noninteger''integer' のどちらの場合も、2 次元 Haar 変換のアルゴリズムでは浮動小数点演算が使用されます。x が単精度入力の場合、Haar 変換係数の数値型は単精度になります。他のすべての数値型の場合、係数の数値型は倍精度になります。

出力引数

すべて折りたたむ

最も粗いレベルの Approximation 係数。変換が計算されるレベルに応じて、係数のスカラーまたは行列として返されます。Approximation (スケーリング) 係数は入力のローパス表現です。各レベルにおいて、Approximation 係数は粗い Approximation 係数と Detail 係数に分けられます。

データ型: single | double

各レベルの水平方向の Detail 係数。行列または行列の cell 配列として返されます。level が 1 より大きい場合、h は cell 配列になります。level が 1 と等しい場合、2 次元 Haar 変換は分解能が粗い 1 つのレベルでのみ計算され、h は行列になります。

メモ: 生成された C および C++ コードは、常に水平方向の Detail 係数 h を cell 配列で返します。

データ型: single | double

各レベルの垂直方向の Detail 係数。行列または行列の cell 配列として返されます。level が 1 より大きい場合、v は cell 配列になります。level が 1 と等しい場合、2 次元 Haar 変換は分解能が粗い 1 つのレベルでのみ計算され、v は行列になります。

メモ: 生成された C および C++ コードは、常に垂直方向の Detail 係数 v を cell 配列で返します。

データ型: single | double

各レベルの対角方向の Detail 係数。行列または行列の cell 配列として返されます。level が 1 より大きい場合、d は cell 配列になります。level が 1 と等しい場合、2 次元 Haar 変換は分解能が粗い 1 つのレベルでのみ計算され、d は行列になります。

メモ: 生成された C および C++ コードは、常に対角方向の Detail 係数 d を cell 配列で返します。

データ型: single | double

拡張機能

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

GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。

バージョン履歴

R2016b で導入