for文の書き方

1 vue (au cours des 30 derniers jours)
hiro
hiro le 30 Nov 2020
Commenté : hiro le 4 Déc 2020
I1 = imread('img001.jpg');
BW1 = edge(I1, 'Canny');
NZ1 = BW1.^2;
BT1 = NZ1(:);
SM1 = sum(BT1);
'img001.jpg'は、白黒画像です。上記のように、白黒画像を読み取り、キャニー法でエッジを検出し、検出したエッジ画像(BW1)の各要素を二乗しました。そして、行列の形だったNZ1を縦長の1つのベクトル(BT1)に変換し、BT1の要素を全部合計して1つのスカラー値としてSM1を出力しました。
これを'img002.jpg', 'img003.jpg', ・・・, 'img010.jpg', ・・・, 'img100.jpg', ・・・, 'imgN.jpg'のようにN個まとめて行いたいのですがどのようにコードを書けば良いのかご教示いただきたいです。
また、出力されたSM1~SMNのスカラー値のうち、値が大きい順に上位30個を抜き出し、それと対応する30個の白黒画像だけを読み込んで30フレームの1つの動画にするコードの書き方もご教示いただけたら幸いです。

Réponse acceptée

Hiroshi Miyagawa
Hiroshi Miyagawa le 1 Déc 2020
まずは以下をご参照ください。
ImageFileName = {...
'sampleImage1.jpg',...
'sampleImage2.jpg',...
'sampleImage3.jpg',...
'sampleImage4.jpg',...
}
%
for ii = 1:4
Image = imread(ImageFileName{ii});
BW = edge(Image,'Canny');
NZ = BW.^2;
BT = NZ(:);
SM(ii) = sum(BT);
end
  3 commentaires
Hiroshi Miyagawa
Hiroshi Miyagawa le 1 Déc 2020
参考リンク先をたどるとサンプルコードが載ってますので、具体的かと存じます。
頑張ってモノにしてください!
hiro
hiro le 4 Déc 2020
参考になりました! ありがとうございました!

Connectez-vous pour commenter.

Plus de réponses (1)

Hiroshi Miyagawa
Hiroshi Miyagawa le 1 Déc 2020
名前が異なる複数要素(ファイル名など)に対して同様の処理をしたい場合、タイトルにあるように for文が便利です。
以下のページご参考にしてみてください。
また、ご質問にあるその後の処理については、以下が参考になると思います。
配列にインデックスをつける:
並び替え:
ムービーフレームの作成:
  1 commentaire
hiro
hiro le 1 Déc 2020
Modifié(e) : hiro le 1 Déc 2020
Hiroshi Miyagawa様
ご回答ありがとうございます。 貼っていただいたページを参考にさせていただいて、for文やそのあとの処理についていろいろ試してみたのですがプログラミング初心者というのもあり、うまくできませんでした。お手数をお掛けしてしまいますが、具体的なコードをご教示いただけたら幸いです。よろしくお願い申し上げます。

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!