0

私は画像処理が初めてで、10 個の画像を格納する配列を作成したいと考えています。その後、画像のいくつかのプロパティ、特に生物学的標本の表面積を特定するコードを for ループで実行したいと思います。これにより、10 の領域を含む配列が出力されます。

以下は、これまでになんとかスクラップしたものであり、これはその後のエラーメッセージです。

??? Index exceeds matrix dimensions.

Error in ==> Testing1 at 14
    nova(i).img = imread([myDir B(i).name]);

以下は、これまでに取り組んできたコードです。

my_Dir = 'AC04/';
ext_img='*.jpg';

B = dir([my_Dir ext_img]);
nfile = max(size(B));

nova = zeros(1,nfile);

for i = 1:nfile
    nova(i).img = imread([myDir B(i).name]);
end

areaarray = zeros(1,nfile);

for k = 1:nfile

[nova(k), threshold] = edge(nova(k), 'sobel');
.
.
.
.%code in this area is irrelevant to the problem I think%
.
.
.
areaarray(k) = bwarea(BWfinal);

end

areaarray
4

1 に答える 1

0

Matlab の一種の配列構造に画像を格納する方法はいくつかあります。の配列を使用できますstruct。その場合、あなたがしたように行うことができます:

nova(i).img = imread([myDir B(i).name]);

nova(1).img最初の画像は で、2 番目の画像はnova(2).imgなどでアクセスします。


それを行う他の方法は、セル配列を使用することです(配列に似ていますが、メンバーが異なる型である可能性があるという意味でより柔軟です)。

nova{i} = imread([myDir B(i).name]);

nova{1}最初の画像は で、2 番目の画像はnova{2}などでアクセスします。


[重要]どちらの場合も、コードから次の行を削除する必要があります。

nova = zeros(1,nfile);

画像用にメモリを事前に割り当てようとしたと思いますが、初心者なので気にしないことをお勧めします。パフォーマンスの問題が発生した場合に対処するのは最適化の問題です。問題が発生しない場合は、Matlab の自動メモリ (再) 割り当てを利用してください。

于 2013-06-13T16:31:43.890 に答える