画像を任意のサイズに​等分割するにはどうす​れば良いですか?

12 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2017 年 3 月 8 日
回答済み: MathWorks Support Team 2017 年 3 月 8 日
画像を任意のサイズに分割したいと考えています。 
FOR ループを使用しないで、一度に分割する方法を教えてください。 

採用された回答

MathWorks Support Team
MathWorks Support Team 2017 年 3 月 8 日
1枚の画像を、指定したサイズで分割して新しいサブ画像セットを作成するには、brockproc 関数を使います。
brockproc 関数では、ユーザが指定した関数(処理)を、入力画像のそれぞれのブロックに対して実行することができます。
以下のサンプルコードは、3次元の RGB 画像を使用した例です。 
まず、brockproc 関数で指定するための関数 cropAndSaveBlock.m を作成します。この関数では、分割した画像を imwrite 関数で書き込みを行います。 
function cropAndSaveBlock(bs)
save_loc = pwd;
fileName = [save_loc, '\img', int2str(bs.location(1)), '_', int2str(bs.location(2)), '.jpg'];
imwrite(bs.data, fileName)
end
次に、上記関数を blockproc 関数から呼び出します。
ここでは、以下のように画像を imread 関数で読み込み、切り出したい画像サイズをピクセルで指定した後、 blockproc 関数の fun に当たる入力引数(今回の場合第三引数)として cropAndSaveBlock.m 関数を指定します。 
 
>> I = imread('peppers.png');
>> blockSize = [200 200];
>> blockproc(I, blockSize, @cropAndSaveBlock);

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeRead, Write, and Modify Image についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!