как определить центр размытого круга с помощью opencv

10

Я получил следующее изображение:

введите описание изображения здесь

Есть кривые на картинке. Я хотел бы найти центр кругов, содержащих кривые.

Я пробовал OpenCV и Hough Circle Transform, но безрезультатно.

Jingke
источник
все кривые концентрически? интервал между ними переменный?
эндолит
да, они концентрически и интервал не постоянен.
JingKe

Ответы:

3

Сначала вам нужно улучшить контрастность изображения, а затем сильно его отфильтровать, чтобы убрать шум. поскольку круги «толстые» (размытые), вы можете отфильтровать немного, не разрушая структуру кругов.

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

Я получаю следующее изображение края из вашего изображения: введите описание изображения здесь

Используя следующие команды MATLAB:

 % x is the input grayscale image. First we adaptively improve the contrast over the image
 y= adapthisteq(x);

 % next we use the Canny edge detector with a strong Gaussian lowpass filter
 ee=edge(y, 'canny', [], 5);
nimrodm
источник