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


10

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

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

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

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


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

да, они концентрически и интервал не постоянен.
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);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.