Info

This question is closed. Reopen it to edit or answer.

I don't know why this code incorrect. ( I want detect circle using canny method.)

2 views (last 30 days)
image = imread('example5.png');
image = edge(imgaussfilt(rgb2gray(image), 2), 'canny');
[x y] = find(image == 1);
pindex = cat(2, y, x);
hough_matrix = zeros(1000, 1000);
rad = [51 55 56 64 66 69 72 75]
pindex = pindex + 245;
for k = 1:3
for p=1:size(pindex, 1)
center = pindex(p, :);
for i = center(1)-rad(k):center(1)+rad(k)
x = i - center(1);
for j = center(2)-rad(k):center(2)+rad(k)
y = j - center(2);
if round(sqrt(x*x + y*y)) == rad(k)
hough_matrix(j, i) = hough_matrix(j, i) + 1;
end
end
end
end
end
[x y] = find(hough_matrix == max(hough_matrix, [], 'all'));
center = cat(2, y, x);
center = center - 245;
figure; imshow(image);
viscircles(center, rad);
  2 Comments
SUNGDEOK KIM
SUNGDEOK KIM on 5 Dec 2019
Thank you for your reply about my question.
So, I revise my code. Can you examine my code?
(I want detect every circle in this edge image)
addtionally, i find four circle using this code.
------------------------------------------------------------------------------------------------------------------------------
clear
clc
image = imread('example5.PNG');
image = edge(imgaussfilt(rgb2gray(image), 2), 'Canny');
[x y] = find(image == 1);
pindex = cat(2, y, x);
hough_matrix = zeros(1000, 1000);
rad = [55 56 64 65 51 52];
pindex = pindex + 245;
for k = 1 : 6
for p=1:size(pindex, 1)
center = pindex(p, :);
for i = center(1)-rad(k):center(1)+rad(k)
x = i - center(1);
for j = center(2)-rad(k):center(2)+rad(k)
y = j - center(2);
if round(sqrt(x*x + y*y)) == rad(k)
hough_matrix(j, i) = hough_matrix(j, i) + 1;
end
end
end
end
[x y] = find(hough_matrix == max(hough_matrix, [], 'all'));
center = cat(2, y, x);
center = center - 245;
if k==1
figure;imshow(image);
else
viscircles(center, rad(k));
end
end

Answers (1)

Mahesh Taparia
Mahesh Taparia on 10 Dec 2019
Hi Kim,
You can find your answer here.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!