2015-01-25 2 views
-1

Я нашел центр массы объекта в среде MATLAB:Как я могу найти расстояние каждого пикселя в граничном изображении до центра изображения?

props= regionprops(image, 'centroid'); 

Я также нашел границу массы. Как я могу найти расстояние от каждого пикселя в граничном изображении до центра изображения?

+1

Вам нужно больше информации. Как хранится ваша граница? Сохраняется ли она как изображение или как массив точек? – rayryeng

+0

Что такое * border image *? – knedlsepp

ответ

2

Я не знаю, какой формат у вас сохранен. Есть два возможных сценария на ваш вопрос, который зависит от того, как хранится граница:

  1. Если граница хранится в виде изображения
  2. Если граница хранится в виде 2D массива точек

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

Граница как образ

Просто извлечь координаты строки и столбца из граничного изображения, а затем найти евклидово расстояние между центром координат и каждая точка вдоль границы. Если предположить, что граница изображение хранится в B, вы бы просто сделать это:

centre = props.Centroid; 
[rows, cols] = find(B); 
dists = sqrt((rows-centre(2)).^2 + (cols-centre(1)).^2); 

rows и cols будет содержать строки и столбца местоположения каждой точки контура вдоль границы. dists будет содержать расстояния между каждой из точек контура, хранящиеся в rows и cols, относительно центра. Кроме того, помните, что свойство Centroidregionprops магазинов центра масс таким образом, что первый элемент является x или столбец координат, а второй элемент является y или строки координат.

Граница, как массив 2D точек

Предполагая, что ваши точки сохраняются в 2D-массив, где первый столбец обозначает строку координат, а второй столбец обозначает столбец координат и массив называется points, это было бы просто стать:

centre = props.Centroid; 
dists = sqrt((points(:,1)-centre(2)).^2 + (points(:,2)-centre(1)).^2); 

dists является тот же массив, как показано в первом сценарии.

+0

моя граница как изображение (b) – maryam

+0

мое изображение в. Я написал вот так: props = regionprops (a, 'centroid'); центр = реквизит.Центроид; [rows, cols] = find (b); dists = sqrt ((rows-centre.Centroid (2)).^2 + (cols-centre.Centroid (1)).^2); – maryam

+0

, но он дает ошибку: Попытка ссылаться на поле неструктурного массива. – maryam

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