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

61 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2017 年 3 月 8 日
コメント済み: Yuka Sashihara 2022 年 4 月 20 日
画像を任意のサイズに分割したいと考えています。 
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);
  1 件のコメント
Yuka Sashihara
Yuka Sashihara 2022 年 4 月 20 日
これをループ処理で複数の画像について行い、通し番号をファイル名に含めたい場合はどうすればよいでしょうか。
cropAndSaveBlock.m を別ファイルに作成することは必須ですか。

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!