Добавить центроид к графику — Matlab

В следующем скрипте я получаю координаты и монеты на изображении, позже они отображаются. Как я могу также добавить на график центроид, рассчитанный с использованием статистики (красный, отмеченный как X)?

Скрипт:

clc;
clear;
I = imread('coins.png');
imshow(I)
BW = im2bw(I);


BW_filled = imfill(BW,'holes');
stat = regionprops(BW_filled,'centroid');
boundaries = bwboundaries(BW_filled);

for k=1:10
    b = boundaries{k};
    plot(b(:,2),b(:,1),'g','LineWidth',3);
    hold on;
end

person dkin    schedule 19.10.2015    source источник


Ответы (1)


Добавлять

plot(stat(k).Centroid(1), stat(k).Centroid(2), 'rx');

после

plot(b(:,2), b(:,1), 'g', 'LineWidth', 3);
hold on;

Вы также можете применить любые дополнительные настройки к центроиду, например

plot(stat(k).Centroid(1), stat(k).Centroid(2), 'rx', 'LineWidth', 3);

Объяснение

stat(k) получит k элемент stat. stat(k).Centroid извлечет центроид как [x, y], а затем мы можем указать координату x центроида как stat(k).Centroid(1), а y как stat(k).Centroid(2).


Альтернативные улучшения

Некоторые улучшения вашего кода, которые я бы предложил,

  • Поместите close all в начало скрипта. Это закроет все открытые в данный момент фигуры.
  • Добавьте figure; hold on; перед циклом for и удалите hold on внутри цикла for. Многократный вызов hold on; является излишним.
person IKavanagh    schedule 19.10.2015