2013-06-13 2 views
0

Я довольно новичок в обработке изображений и хотел бы создать массив, в котором хранятся 10 изображений. После этого я хотел бы запустить цикл for через некоторый код, который идентифицирует некоторые свойства изображений, в частности, площадь поверхности биологического образца, который затем выплескивает массив, содержащий 10 областей.Matlab Query: Обработка изображений, редактирование скрипта

Ниже то, что мне удалось ломом до сих пор, и это последующее сообщение об ошибке:

??? 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 

ответ

0

Есть несколько способов сохранить изображение в виде структуры массива в Matlab. Вы можете использовать массив struct s. В этом случае вы могли бы сделать, как вы делали:

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

Вы получаете доступ первого изображения с nova(1).img, вторым один с nova(2).img и т.д.


Другим способом сделать это состоит в использовании массива клеток (аналогичные массивам, но более гибкие в том смысле, что элементы могут иметь различный тип):

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

Вы acc ESS первого изображения с nova{1}, второй один с nova{2} и т.д.


[ВАЖНО] В обоих случаях вы должны удалить эту строку из кода:

nova = zeros(1,nfile); 

Я полагаю, вы уже пробовали предварительно выделить память для изображений, а так как вы новичок, я советую вам не беспокоиться об этом. Это проблема оптимизации, которую нужно решить, если вы столкнетесь с некоторыми проблемами производительности - и если вы их не встретите, воспользуйтесь распределением автоматической памяти Matlab (re).

Смежные вопросы