Как собрать значения из каждого цикла в Matlab? - PullRequest
0 голосов
/ 19 марта 2019

у меня последовательность из 10 кадров. Изображения имеют черные точки.
Я пытаюсь сохранить все координаты центроида (для всех точек), но всякий раз, когда на изображении появляется более одного центроида, я получаю сообщение об ошибке [Ошибка при использовании horzcat Размеры сцепляемых матриц несовместимы.] Мой вопрос может быть глупым, потому что, конечно, ошибка ясна и очевидна, но все же, как сохранить координаты из каждого цикла?

temp = [];

for j = 1:1:10

img = imread('img.tif, j);
grayImg = mat2gray(img);
bwImg = imbinarize(grayImg, Threshold);

s  = regionprops(bwImg, 'centroid');
centroids = cat(1, s.Centroid);

temp2 = [temp2, centroids];

end

1 Ответ

1 голос
/ 19 марта 2019

N.Cvala,

Рассматривали ли вы использование клеточных массивов (см. help cell)?Я переписал ваш код, чтобы учесть это.

  nCells = 10;
  temp = cell(1, nCells);
  for j = 1:nCells
        img = imread('img.tif', j);
        grayImg = mat2gray(img);
        bwImg = imbinarize(grayImg, Threshold);
        s = regionprops(bwImg, 'centroid');            
        centroids = cat(1, s.Centroid);
        temp{j} = centroids;
  end
  % Access the centroids computed in the first iteration
  temp{1}  

Ячейки хороши тем, что они представляют собой массивы, которые позволяют хранить в них данные любого типа.Если вы хотите более структурированный способ хранения ваших данных, вы можете посмотреть на структуры (doc struct)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...