У меня есть изображение в MATLAB:
im = rgb2gray(imread('some_image.jpg');
% normalize the image to be between 0 and 1
im = im/max(max(im));
И я сделал некоторую обработку, которая привела к ряду пунктов, которые я хочу выделить:
points = some_processing(im);
Где points
- матрица того же размера, что и im
с единицами в интересных точках.
Теперь я хочу нарисовать круг на изображении во всех местах, где points
равно 1.
Есть ли какая-нибудь функция в MATLAB, которая делает это? Лучшее, что я могу придумать, это:
[x_p, y_p] = find (points);
[x, y] = meshgrid(1:size(im,1), 1:size(im,2))
r = 5;
circles = zeros(size(im));
for k = 1:length(x_p)
circles = circles + (floor((x - x_p(k)).^2 + (y - y_p(k)).^2) == r);
end
% normalize circles
circles = circles/max(max(circles));
output = im + circles;
imshow(output)
Это кажется более чем несколько неэлегантным. Есть ли способ рисовать круги, подобные функции line
?