Main Content

qtgetblk

四分木分割のブロック値

説明

[vals,r,c] = qtgetblk(I,S,dim) は、四分木分割 S を使用してイメージ I からサイズが dimdim 列のブロックを返します。この関数はブロック値を vals に返し、ブロックの左上隅の行座標と列座標を rc に返します。

[vals,idx] = qtgetblk(I,S,dim) はブロック値を vals に返し、ブロックの左上隅の線形インデックスを idx に返します。

すべて折りたたむ

小さいイメージを表すサンプル行列を作成します。

I = [1    1    1    1    2    3    6    6
     1    1    2    1    4    5    6    8
     1    1    1    1   10   15    7    7
     1    1    1    1   20   25    7    7
    20   22   20   22    1    2    3    4
    20   22   22   20    5    6    7    8
    20   22   20   20    9   10   11   12
    22   22   20   20   13   14   15   16];

しきい値 5 を指定してイメージの四分木分割を実行します。qtdecomp は、ブロック要素の最大値からブロック要素の最小値を引いた差がしきい値よりも大きい場合にブロックを分割します。

S = qtdecomp(I,5)
S = 
   (1,1)        4
   (5,1)        4
   (1,5)        2
   (3,5)        1
   (4,5)        1
   (5,5)        2
   (7,5)        2
   (3,6)        1
   (4,6)        1
   (1,7)        2
   (3,7)        2
   (5,7)        2
   (7,7)        2

四分木分割からサイズが 4 行 4 列のブロックを取得します。qtgetblk は、このサイズの 2 つのブロックを検出します。

[vals,r,c] = qtgetblk(I,S,4);

2 番目の返されたブロックを選択します。ブロックの値と左上隅の (行, 列) 座標を表示します。

blknum = 2;
blockValues = vals(:,:,blknum)
blockValues = 4×4

    20    22    20    22
    20    22    22    20
    20    22    20    20
    22    22    20    20

blockCoordinates = ['(',num2str(r(blknum)),',',num2str(c(blknum)),')']
blockCoordinates = 
'(5,1)'

入力引数

すべて折りたたむ

グレースケール イメージ。数値行列として指定します。

データ型: single | double | int16 | uint8 | uint16 | logical

四分木構造。スパース行列として指定します。S(m,n) がゼロ以外の場合、座標 (m,n) は分解のブロックの左上隅になり、ブロックのサイズは S(m,n) によって指定されます。関数 qtdecomp を使用することによって、四分木構造を取得できます。

データ型: double

ブロック サイズ。正の整数として指定します。

出力引数

すべて折りたたむ

ブロック値。dim x dim x k の配列として返されます。ここで、k は四分木分割内の dimdim 列のブロックの数です。指定されたサイズのブロックが四分木分割に含まれていない場合、vals は空の行列として返されます。

vals のブロックの順序は、I のブロックの列方向の順序と一致しています。たとえば、vals が 4 × 4 × 2 の場合、vals(:,:,1) には、I にある最初の 4 × 4 のブロックの値が含まれています。vals(:,:,2) には 2 番目の 4 × 4 のブロックの値が含まれています。

ブロックの左上隅の行座標。正の整数の k 要素列ベクトルとして返されます。ここで、k は四分木分割内の dimdim 列のブロックの数です。指定されたサイズのブロックが四分木分割に含まれていない場合、r は空の行列として返されます。

ブロックの左上隅の列座標。正の整数の k 要素列ベクトルとして返されます。ここで、k は四分木分割内の dimdim 列のブロックの数です。指定されたサイズのブロックが四分木分割に含まれていない場合、c は空の行列として返されます。

ブロックの左上隅の線形インデックス。正の整数の k 要素列ベクトルとして返されます。ここで、k は四分木分割内の dimdim 列のブロックの数です。指定されたサイズのブロックが四分木分割に含まれていない場合、idx は空の行列として返されます。

バージョン履歴

R2006a より前に導入

参考

|

トピック