MATLAB: использование преобразования Хафа для обнаружения круга

Я пишу код Matlab, который делает снимок и обнаруживает круглый объект. Например, функция получает изображение персика (круглый объект) в качестве входных данных и возвращает то же изображение с обведенным персиком.

В настоящее время я использую преобразование hough, используя функцию imfindcircles. Однако эта функция требует, чтобы я указал диапазон радиуса и какое-то значение чувствительности/порога. Эти значения различаются для разных размеров изображения и круглых объектов. Итак, чтобы получить желаемый результат, мне придется вручную изменить эти значения для каждого входного изображения, а это не то, что мне нужно. Я собираюсь использовать эту функцию на более чем 100 изображениях, поэтому я не могу сделать это вручную.

Мой вопрос: есть ли способ сделать мою функцию обнаружения круглых объектов менее ручной и, возможно, полностью автоматической (не требует ввода каких-либо значений, только изображение)?


person needhelp    schedule 19.03.2014    source источник
comment
Ваш вопрос не о программировании. Рассмотрите размещение на сайте обработки сигналов.   -  person Cape Code    schedule 19.03.2014


Ответы (3)


Сложность обнаружения круга

Преобразование Хафа — это процедура голосования, которая требует предположений о минимальном и максимальном радиусах ваших кругов. Вообще говоря, используя рандомизированное преобразование Хафа для кругов, вы бы выбрали три точки а затем попытайтесь сформировать круг и проверьте, находится ли радиус в желаемом диапазоне. Запустив это в течение большого количества итераций, вы должны найти пики (несколько совпадений) в вашей матрице аккумулятора, которые представляют собой круги. Если бы вы не делали никаких предположений о размере объекта, я думаю, очевидно, что этот метод не сработает.

person Cameron Lowell Palmer    schedule 24.12.2015

Выполните рутинную предварительную обработку, чтобы настроить контрастность и яркость, например. растяжение контраста, выравнивание гистограммы. Если у вас может быть некоторый шум на изображениях, примените также немного сглаживания по Гауссу.

Нормализация изображений таким образом уменьшит дисперсию между изображениями и поможет вам установить пороговые значения.

person magarwal    schedule 26.04.2014

Преобразование Хафа можно использовать для обнаружения кругов, линий и т. д. Вы можете обратиться к демонстрациям в Matlab. Есть несколько случаев применения преобразования Хафа.

person Qiuqin Sun    schedule 07.09.2016