Я не знаю, какой формат у вас сохранен. Есть два возможных сценария на ваш вопрос, который зависит от того, как хранится граница:
- Если граница хранится в виде изображения
- Если граница хранится в виде 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
, относительно центра. Кроме того, помните, что свойство Centroid
regionprops
магазинов центра масс таким образом, что первый элемент является x
или столбец координат, а второй элемент является y
или строки координат.
Граница, как массив 2D точек
Предполагая, что ваши точки сохраняются в 2D-массив, где первый столбец обозначает строку координат, а второй столбец обозначает столбец координат и массив называется points
, это было бы просто стать:
centre = props.Centroid;
dists = sqrt((points(:,1)-centre(2)).^2 + (points(:,2)-centre(1)).^2);
dists
является тот же массив, как показано в первом сценарии.
Вам нужно больше информации. Как хранится ваша граница? Сохраняется ли она как изображение или как массив точек? – rayryeng
Что такое * border image *? – knedlsepp