Создание списка массивов переменной длины в MATLAB

Я хотел бы обработать список изображений с помощью regionprops и сохранить результат в массив или какой-либо список.

Моя проблема в том, что regionprops возвращает структуру переменного размера. В моем случае это выглядит так:

stats = regionprops(L,'Centroid');

2x1 struct array with fields:
    Centroid

Размер структуры зависит от изображения к изображению.

Как создать объект, содержащий все мои структуры? Нужно ли использовать массивы ячеек?

Я пробовал следующее:

mycell = struct2cell(stats);
centers(i,:) = mycell;

Но это работает только до тех пор, пока мои массивы ячеек имеют одинаковый размер. Здесь это не так, так как количество обнаруженных объектов меняется от кадра к кадру.

Как хранить в контейнере структуры переменной длины или массивы ячеек?

Что мне следует использовать, структуры массивов ячеек?


person hyperknot    schedule 02.11.2011    source источник


Ответы (1)


Просто поместите каждый массив структур stats в отдельную ячейку. Например:

>> stats1(3).test = 1

stats1 = 

1x3 struct array with fields:
    test

>> stats2(2).test = 1

stats2 = 

1x2 struct array with fields:
    test

>> [{stats1} {stats2}]

ans = 

    [1x3 struct]    [1x2 struct]
person John Colby    schedule 02.11.2011
comment
Но как мне сделать [{stats1} {stats2}] по алгоритму в цикле? Я хотел бы сделать что-то вроде for i = 1:size(images) .... allstats{i} = stats или что-то подобное? - person hyperknot; 02.11.2011
comment
Ты получил это! Удачи с проектом! - person John Colby; 02.11.2011