ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

blockproc

イメージの個別ブロック処理

説明

B = blockproc(A,[m n],fun) は、関数 fun をサイズ [m n] のそれぞれのブロックに適用し、その結果を出力行列 B に連結することによって、イメージ A を処理します。

B = blockproc(src_filename,[m n],fun) は、ファイル名が src_filename のイメージを対象に、一度に 1 つのブロックを読み取って、処理します。この構文は、大きいイメージを処理するために役立ちます。

B = blockproc(adapter,[m n],fun) は、adapterImageAdapter オブジェクトにより指定されるソース イメージを処理します。

blockproc(___,Name,Value) は、ブロックの動作のさまざまな特性を制御する引数と対応する値を指定することにより、入力イメージを処理します。引数名は、大文字と小文字を区別しません。

すべて折りたたむ

イメージをワークスペースに読み取ります。

I = imread('pears.png');

ブロック処理関数を作成します。

fun = @(block_struct) imresize(block_struct.data,0.15);

ブロック単位でイメージを処理します。

I2 = blockproc(I,[100 100],fun);

元のイメージと処理後のイメージを表示します。

figure;
imshow(I);

figure;
imshow(I2);

ブロック処理関数を作成します。

fun = @(block_struct) ...
   std2(block_struct.data) * ones(size(block_struct.data));

入力イメージをファイル名で指定して、ブロック処理演算を実行します。

I2 = blockproc('moon.tif',[32 32],fun);

元のイメージと処理後のバージョンを表示します。

figure;
imshow('moon.tif');

figure;
imshow(I2,[]);

イメージをワークスペースに読み取ります。

I = imread('peppers.png');

ブロック処理関数を作成します。

fun = @(block_struct) block_struct.data(:,:,[2 1 3]);

ブロック処理演算を実行します。

blockproc(I,[200 200],fun,'Destination','grb_peppers.tif');

元のイメージと処理後のイメージを表示します。

figure;
imshow('peppers.png');

figure;
imshow('grb_peppers.tif');

メモ: この例を実行するには、'largeImage.tif' を任意のファイル名に置き換えなければなりません。

ブロック処理関数を作成します。

fun = @(block_struct) block_struct.data;

TIFF イメージを新規 JPEG2000 イメージに変換します。'largeImage.tif' を実際のイメージ ファイル名に置き換えます。

blockproc('largeImage.tif',[1024 1024],fun,'Destination','New.jp2');

入力引数

すべて折りたたむ

入力イメージ。数値行列として指定します。

ソース ファイル名。文字ベクトルとして指定します。ファイルは次のファイル タイプのいずれかで、ファイル名は次のファイル拡張子のいずれかが付いたものでなければなりません。

  • TIFF (*.tif、*.tiff)

  • JPEG2000 (*.jp2、*.jpf、*.jpx、*.j2c、*.j2k)

データ型: char

イメージ アダプター。ImageAdapter オブジェクトとして指定します。ImageAdapter は、特定のイメージ ファイル形式に対して読み書きを行う一般的な API と共に blockproc を提供するユーザー定義のクラスです。詳細は、サポートされない形式のイメージ ファイルに対するブロック処理の実行を参照してください。

ブロックのサイズ。2 要素ベクトルとして指定します。ここで、m はブロックの行数で、n は列数です。

関数ハンドル。ハンドルとして指定します。関数は block_struct を入力として受け入れ、行列、ベクトル、スカラーを返さなければなりません。fun が空を返す場合、blockproc は出力を生成せず、すべてのブロックを処理した後で空を返します。

関数ハンドルの詳細については、関数ハンドルの作成 (MATLAB)を参照してください。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'BorderSize',[8 4]

出力先。'Destination' と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 出力先ファイル名の文字ベクトル。ファイルは次のファイル タイプのいずれかで、ファイル名は次のファイル拡張子のいずれかが付いたものでなければなりません。

    • TIFF (*.tif、*.tiff)

    • JPEG2000 (*.jp2、*.j2c、*.j2k)

    この名前のファイルが存在する場合、既存のファイルは上書きされます。

  • ImageAdapter オブジェクト。特定のイメージ ファイル形式に対して読み書きを行う共通 API を提供します。詳細は、サポートされない形式のイメージ ファイルに対するブロック処理の実行を参照してください。

'Destination' 引数を指定しても、blockproc は処理されたイメージを出力引数として返しません。その代わり、出力を 'Destination' に書き込みます。'Destination' 引数は、出力が大きすぎてメモリ内に入らないと考えられる場合に役立ちます。任意の大きなイメージの場合のファイルからファイルへの画像処理のワークフローを与えます。

メモ

'Destination' 引数が指定されている場合は、出力引数を要求できません。

各ブロックに追加する境界ピクセル数。'BorderSize' と正の整数の 2 要素のベクトル [v h] で構成されるコンマ区切りのペアとして指定します。関数は、v 行を各ブロックの上下に追加し、h 列を各ブロックの左右に追加します。得られる各ブロックのサイズは、次のとおりです。

[m+2*v, n+2*h]

既定の設定では、関数は境界を fun の結果から自動的に削除します。詳細は、「引数 TrimBorder」を参照してください。

この関数は、イメージからはみ出した部分を 0 で拡張してブロックの境界をパディングします。

フルサイズにするための部分ブロックのパディング。'PadPartialBlocks'false または true で構成されるコンマ区切りのペアとして指定します。部分ブロックは、イメージのサイズがブロックのサイズで完全に割り切れない場合に生じます。それらが存在する場合、部分ブロックはイメージの右下端に沿った場所にあります。

true に設定すると、blockproc は、部分ブロックをパディングして、フルサイズの mn 列のブロックにします。既定の設定は false です。つまり、この関数は部分ブロックをパディングせずに、そのまま処理します。blockproc は、必要に応じて、ゼロを使用して部分ブロックをパディングします。

イメージ境界をパディングするために使用する方法。'PadMethod' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

説明
'replicate'境界要素を繰り返します。
'symmetric'イメージをそれ自体の鏡像でパディングします。
数値スカラーイメージをスカラー値でパディングします。既定では、イメージ境界は値 0 でパディングされます。

データ型: char | string

ユーザー関数の出力からの境界ピクセルの削除。'TrimBorder'true または false から構成されるコンマ区切りのペアとして指定します。true に設定すると、関数 blockproc は、境界ピクセルをユーザー関数 fun の出力から削除します。関数は、v 行を fun の出力の上下から削除し、h 列を左右端から削除します。BorderSize 引数は、vh を定義します。

並列処理の使用。'UseParallel'false または true から構成されるコンマ区切りのペアとして指定します。Parallel Computing Toolbox™ をインストールしている場合、true に設定すると、MATLAB® はローカル マシン上のワーカーの並列プールを自動的に開きます。blockproc は使用可能なワーカー全体で計算を実行します。詳細は、大きいイメージ ファイルに対するパラレル ブロック処理を参照してください。

ウェイト バー表示。'DisplayWaitbar'true または false から構成されるコンマ区切りのペアとして指定します。true に設定すると、blockproc は長時間かかる処理の進行状況を示すウエイトバーを表示します。blockproc のウエイトバーを非表示にするには、DisplayWaitbarfalse に設定します。

出力引数

すべて折りたたむ

出力行列。数値行列として返されます。

詳細

すべて折りたたむ

ブロック構造体

"ブロック構造体" は、ブロック データなどのブロックに関する情報を含む MATLAB 構造体です。"ブロック構造体" のフィールドは次のとおりです。

フィールド説明
border[v h] 形式の 2 要素ベクトル。border フィールドはデータ ブロックの周りの縦と横のパディングのサイズを指定します。詳細は、「引数 BorderSize」を参照してください。
blockSize[rows cols] 形式の 2 要素ベクトル。blockSize フィールドは、ブロック データのサイズを指定します。境界が指定されている場合、境界のピクセルはサイズに含まれません。
datamn 列または m x n x p のブロック データの行列。
imageSize[rows cols] 形式の 2 要素ベクトル。imageSize は、入力イメージのフル サイズを指定します。
location[row col] 形式の 2 要素ベクトル。location フィールドは、入力イメージにあるブロック データの最初のピクセル (最小行、最小列) の位置を指定します。境界が指定されている場合、位置は、追加された境界のピクセルではなく、離散ブロック データの最初のピクセルのことです。

ヒント

  • 適切なブロックサイズを選択すると、パフォーマンスが著しく高まります。詳細は、ブロックのサイズとパフォーマンスを参照してください。

  • 出力行列 B が大きすぎてメモリに入らない場合、出力引数を省略し、その代わりに Destination の名前と値のペア引数を使用して出力をファイルへ書き込むことができます。

拡張機能

R2009b で導入