MATLABで複数のフォルダから情報を読み込む方法

このQ&Aのポイント
  • MATLABを使用して複数のフォルダから画像を読み込む方法を教えてください。
  • 80個以上のフォルダから合計800枚の画像を読み込む方法をご教示ください。
  • MATLABで画像読み込みのプログラムは完成していますが、80個のフォルダから画像を読み込む方法がわかりません。アドバイスをお願いします。
回答を見る
  • ベストアンサー

MATLABで複数のフォルダから情報を読み込む方法

matlabで複数のフォルダ(ディレクトリ)に入った画像が読み込みたいのですが、 どうしたらいいのかアドバイスお願いします。 フォルダの名前は B01_P00 B01_P01 B01_P02 ... B02_P00 B02_P01 ... といったような感じで合計80個近くあります。 それぞれのフォルダには60枚ずつ画像が入っています。 フォルダ内の画像は頭にフォルダと同じ名前が付いており、末尾に番号が付いています。 フォルダB01_P00なら、 B01_P00_1.pgm B01_P00_2.pgm ... といった感じです。 (画像は合計4800枚になるわけで, 全ての画像を読み込めなくてもいいと思っていますが) 80個のフォルダからたとえば自分で決めた10枚を読み込んで 合計800枚の画像を読み込んで(縮小などの処理後)全てをひとつの行列に収納したい と思っています。 縮小などの処理→行列に収納 のプログラムは完成しているのですが、 肝心の読み込みがどうしたらいいのかわかりません。 わかる方、ぜひ教えていただきたいです!

質問者が選んだベストアンサー

  • ベストアンサー
  • m0r1_2006
  • ベストアンサー率36% (169/464)
回答No.1

for loop_folder1 = 1:10 for loop_folder2 = 1:10 for loop_image_no = 1:10 [A] = imread(['B', num2str(loop_folder1,'%02d'), '_P',... num2str(loop_folder1,'%02d'), '/B', num2str(loop_folder1,'%02d'), '_P',... num2str(loop_folder1,'%02d'),'_',num2str(loop_image_no),'.pgm']); A には unit8 で pgm 画像が入る. 後は,double(A) とか [文字列, 文字列 ] で文字列つなぐ / サブディレクトリに移る. num2str 数字を文字列へ

その他の回答 (1)

  • Kules
  • ベストアンサー率47% (292/619)
回答No.2

>といったような感じで合計80個近くあります。 と言われても、これだとフォルダの名前が結局どのようについてるかわからないですね… B01_P09の次はB01_P10なのか、それともB02_P00なのか。 また、画像ファイル名もB01_P00_9の次はB01_P00_10ってことでいいんですかね? 自分で読み込むものを決める時は手打ちでいいですかね? とりあえず、仮に B01_P01_1 B02_P02_5 B04_P08_7 B05_P04_10 B06_P02_54 B08_P09_32 の6枚を読み込む、ということにしたいと思います。(数字は適当です) Idx=[1,1,1;2,2,5;4,8,7;5,4,10;6,2,54;8,9,32]; for k=1:length(Idx(:,1)); A=imread(sprintf('B%02d_P%02d\\B%02d_P%02d_%d.pgm',Idx(k,[1,2,1:3]))); end; Matlab無しの環境で書いているのでどこかにエラーが出るかも。 こんな感じですかね?あとはkのループ内でAをいろいろ加工するなり好きにしてやればいいかと思います。 エラーが出るor何をしているのかわからないなどありましたら補足願います。 参考になれば幸いです。

関連するQ&A

  • MATLABにおける行の挿入方法

    こんにちは,現在データ整理のためにMATLABを用いて以下のようなプログラムを構築しています 1.ファイルを読み,その値を100行7列の行列Aとする 2.Aの10行目と11行目の間に1行7列の行列B1を挿入する (イメージ的にはEXCELの行の挿入です) 3.同様に20行目と21行目の間に1行7列の行列B2を挿入する 4.以降10行ごとに繰り返す となります.ここで2の処理にあたる「行列の特定の列の間に別の行列を挿入する」方法がわかりません いろいろ調べたのですが、このような方法はどこにもありませんでした MATLABに詳しい方,教えていただけないでしょうか?

  • C言語→MATLABへの変換で、困っています。

    学生研究でMATLABを使用しています。 光学測定系で画像を取り込み、それを解析する実験を行っています。 MATLABはプログラム内の値の変更や処理の追加できることから 大変助かっています。 そこで、もともとはC言語でやっていた3種類の処理を 一つのMファイルで行いたいと思い。 只今、C→MATLAB変換するプログラムの書き直しを行っています。 そのうち2種のプログラムは行列の計算がメインだったため何とか Mファイルに書き直すことができたのですが、 最後のひとつが難しい関数らしきものが多く、 MATLABに書き直すことができるプログラムなのかもわからない状態です。 そこで、 ・C→MATLAB変換可能なプログラムか? ・書き直すにあたってどこを部分を直せばよいのか? をアドバイスいただけないでしょうか? ↓MATLAB化したいC言語ファイル http://karispace.web.fc2.com/cmat2.c 一枚のbmp画像から4枚のdatデータを出力するプログラムです。 C言語とMATLABの三ヶ月前に勉強して、使用しており、基礎がわかる程度です。 よろしくお願いします。

  • 複数のフォルダに入っている画像をインデックス印刷する方法

    複数のフォルダに入っている画像をインデックス印刷する方法 複数のフォルダに入っている画像を、一括してインデックス印刷したいのですが、よいソフトや方法はありませんか?VIXを使用したのですが、フォルダ毎になってしまって都合が悪いのです。 【例】 Aフォルダ(画像20枚)Bフォルダ(画像5枚)Cフォルダ(画像7枚)として、A・B・Cのフォルダ内全て32枚の画像を一括してA4サイズにインデックス印刷したいのです。各画像にはフォルダ名と画像名を表示させて印刷。 一つのフォルダに画像をまとめて印刷すればいいのですが、フォルダ名で管理しているので、都合が悪いのです。 または、各フォルダに入っている画像の名前を一括して「フォルダ名+画像名」に変換できれば、一つのフォルダにまとめて、インデックス印刷すれば用途はすむのでそちらでも構いません。 ご存知の方宜しくお願いいたします。

  • MATLABのrbboxについての質問です。

    MATLABのrbboxについての質問です。 MATLABである画像の領域内の情報を取得できるようにしたいのですが、調べてみると、rbboxという関数を使って出来るらしいです。実際にMATLABのHPにあったソースコードを動かしてみると、画像にマウスでドラッグした領域の枠が描かれるのですが、その画像の領域をどうやって処理を行えるように出来るのかがわかりません。出来れば教えてほしいです。rbboxのソースコードを下に示します。宜しくお願いします。 figure; pcolor(peaks); k = waitforbuttonpress; point1 = get(gca,'CurrentPoint'); % ボタンダウンの検出 finalRect = rbbox; % figure単位の出力 point2 = get(gca,'CurrentPoint'); % ボタンアップの検出 point1 = point1(1,1:2); % x と y の抽出 point2 = point2(1,1:2); p1 = min(point1,point2); % 位置と大きさの計算 offset = abs(point1-point2); % x = [p1(1) p1(1)+offset(1) p1(1)+offset(1) p1(1) p1(1)]; y = [p1(2) p1(2) p1(2)+offset(2) p1(2)+offset(2) p1(2)]; hold on axis manual plot(x,y,'r','linewidth',5) % ボックスの回りに選択した領域の描画

  • ペイントで画像を縮小する場合、フォルダ内全ての画像に対して一度に縮小する方法は有りますか?

    ペイントで画像を縮小する場合、 フォルダ内全ての画像に対して 一度に縮小する方法は有りますか? 現在1枚1枚画像を開いてから、 縮小を行っていますが、 フォルダ内にたくさんの写真があるため、 1枚1枚の作業が面倒なのですが、 一度に全ての画像ファイルを縮小する事が できればと思い、ご質問させて頂きます。 よろしくご指導の程お願いいたします。

  • MATLABのプログラミングについてご質問です(3)

    MATLAB初心者です。 いつもお世話になります。 現在、以下の環境を使っています。 ------------------------------- OS:Windows XP MATLABのバージョン:R2007a ------------------------------- 以下の内容をプログラムでどう組み込めばよいのか分らないため、質問させて頂きました。 詳しい方、ご教授のほどお願いします。 (1)カレントディレクトリ内のフォルダ(hoge)の中に「JPEGファイル」が何個あるかをカウントする方法 (2)MATLABの guide のプロパティ インスペクターの中に文字の水平位置(left, center, right)を設定する  「HorizontalAlignment」があると思います。  垂直位置を設定する箇所ってどこかにあるのでしょうか?  あれば、教えて頂きたいです。 (3)2つの画像ファイル「A.tif」「B.tif」を合成(論理和)して「C.tif」を出力する事って可能なのでしょうか?  色々と試してみましたが、今の自分の力量では無理でした。もし可能であれば、やり方を教えて頂きたいです。 全てでなくても、判る範囲までのご回答でもかまいません。 よろしくお願いします。

  • 「Thumbs.db」をフォルダ内に作成させるには

    Windows8.1を使ってます。 多数の画像フォルダ内に大量の画像が保存されており、これを高頻度で利用しています。 エクスプローラーの縮小版表示が役に立っているのですが、困ったことにフォルダを開くたびに縮小版が初めから作成されてます。 各フォルダ内にキャッシュ保存用の「Thumbs.db」が見当たらず、ユーザー・フォルダの下の(%LOCALAPPDATA%\Microsoft\Windows\Explorer)にまとめて置かれ、名前は「thumbcache_96.db」や「thumbcache_256.db」のようになってます。 縮小版キャッシュの容量合計が小さいうちはそのキャッシュは保存されているのですが、キャッシュ量が増えてくるとキャッシュが破棄されてます。その結果、画像フォルダを開くたびに大量の画像を初めから順次読み込んで縮小版が作成されます。 HDDの負荷がハンパじゃなくなるため、縮小版をキチンとキャッシュしておきたいのですが、何とかなりませんか。 画像フォルダ内に「Thumbs.db」が生成されればキャッシュ保存が生きるように思うのですが、どうすれば「Thumbs.db」がフォルダ内に作成されるようになるのでしょう。 普通と逆の質問ですいません。

  • 複数の写真に一括でフレームをつけてかつ縮小できる画像編集ソフト

    複数のデジカメ画像について、一度に下記の処理ができたらな、と思っています。 1.フレームをつける(またはフェードアウト) 2.webサイト用掲載用に画像を縮小 3.画像中の決まったところにテキストをいれる 特定のフォルダーに入っている全ての画像(想定としては1度に50程度)を2,3ステップで1.2.3の全てを処理して、他のフォルダに保存できるような、という意味です。 2.は「縮小専用」でできたと思うのです。 でも、これらを1つのソフトで処理できるソフトを私は知りません。 詮索しても、そのあたりのことについて踏み込んで説明のあるソフトを探し出すことはできませんでした。 1&2だけでも結構です。もしご存じでしたらお教えください。 ちなみにOSはWINDOWSXPです。 よろしくお願いします。

  • フォルダのカスタマイズについて

    フォルダのカスタマイズについて困ってます。OSはWindowsXPです。画像の表示を縮小版で統一したいのですが、画像フォルダ右クリック→プロパティ→カスタマイズ→フォルダの種類で画像(多くのファイルに最適)にし、「このテンプレートを全てのサブフォルダに適用する」にチェックして適用させました。問題なく縮小版で表示するようになったのですが、意外なフォルダまで縮小版で表示されてしまい、ウィンドウの右下に画像フォルダのイラストが表示されるのです。例えば、プログラムファイルとか、マイドキュメントとかです。 おかしいと思い、何度も全フォルダをリセットしてやり直したり、Thumbs.dbを削除したりしましたが、このおかしな現象が起きます。決まったフォルダではなく、ほんとに意外な所が画像フォルダになってしまっているので困っています。この「全てのサブフォルダに適用する」とはどのフォルダを指しているのでしょうか?単にXPのバグなのでしょうか? 駄文ですいませんが、皆さんの知恵をお貸しください。

  • 複数のフォルダ内データを1つのフォルダに移動したい

    写真整理をしています。 今、撮影日付ごとにフォルダが分かれています。 1月1日のフォルダに5枚の画像データ、1月2日のフォルダに10枚の画像データ・・・という感じです。 これらの画像データを、例えば1つの「写真」というフォルダに全てまとめたい場合に、一括して作業できる方法はありますか?今は、ひとつひとつのフォルダを開いて移動していますが、かなり面倒です。 windows7です。よろしくお願いします。