2015-03-28 4 views
1

Я пишу код в формате MATLAB, который берет фотографию и обнаруживает круглый объект. После использования некоторых фильтров я получил изображение ниже.Обнаружение круга с помощью преобразования Hough

enter image description here

Чтобы обнаружить округлый объект (это не идеальный круг), я попытался применить Hough Transform проходя различные значения радиуса и порога, но он не смог обнаружить должным образом. Почему это происходит? Это о форме объекта или фона изображения?

Также возможно определить один и тот же объект на следующем изображении с использованием преобразования Hough?

enter image description here

Грани круглого объекта кажется человеческим глазом, но я не уверен, что фон может быть исключен из изображения полностью с помощью преобразования Хока.

ответ

4

Вы можете использовать imfindcircles в Image Processing Toolbox. Использование морфологии для заполнения круга и проворачивая чувствительность может помочь:

im = imread('pattern.jpg'); 
im2 = rgb2gray(im(100:end-100, 100:end-100, :)); 
im3 = im2bw(im2, 0.1); 
im4 = imclose(im3, strel('disk', 4, 4)); 
im5 = imfill(im4, 'holes'); 
imshow(im5); 
[centers, radii] = imfindcircles(im5, [180, 200], 'Sensitivity', .99); 
viscircles(centers, radii); 

enter image description here

+0

Я уже использовал imfindcircles, но это не сработало. –

+1

@ user3319676 - Вы должны сделать это в следующий раз. Вы не упомянули о том, что вы использовали Циркулярное Преобразование Хафа. Вы указали ссылку на скрипт MATLAB FEX, который ** не ** 'imfindcircles'. – rayryeng

+0

Я использовал ваше решение для второго изображения без «imfill» и «imclose», это сработало. –

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

  • Нет связанных вопросов^_^