Найдите круги с помощью кругового Преобразования Хафа
centers = imfindcircles(A,radius)
[centers,radii]
= imfindcircles(A,radiusRange)
[centers,radii,metric]
= imfindcircles(A,radiusRange)
[___]
= imfindcircles(___,Name,Value)
[
находит круги с радиусами в области значений заданными centers
,radii
]
= imfindcircles(A
,radiusRange
)radiusRange
. Дополнительный выходной аргумент, radii
, содержит предполагаемые радиусы, соответствующие каждому центру круга в centers
.
[
также возвращает вектор-столбец, centers
,radii
,metric
]
= imfindcircles(A
,radiusRange
)metric
, содержа значения peaks аккумулятора массивов для каждого круга (в порядке убывания). Строки centers
и radii
соответствуют строкам metric
.
[___]
= imfindcircles(___,
задает дополнительные опции с одним или несколькими аргументами пары Name,Value
)Name,Value
, с помощью любого из предыдущих синтаксисов.
Задайте относительно маленький radiusRange
для лучшей точности. Хорошее эмпирическое правило должно выбрать radiusRange
, таким образом что rmax < 3*rmin
и (rmax-rmin) < 100
.
Точность imfindcircles
ограничивается, когда значение radius
(или rmin
) меньше чем или равно 5.
Шаг оценки радиуса обычно быстрее, если вы используете метод 'PhaseCode'
(по умолчанию) вместо 'TwoStage'
.
И методы вычисления, 'PhaseCode'
и 'TwoStage'
ограничиваются в их способности обнаружить концентрические круги. Результаты для концентрических кругов могут отличаться в зависимости от входного изображения.
imfindcircles
не находит круги с центрами вне области изображения.
imfindcircles
предварительно обрабатывает бинарные (логические) изображения, чтобы улучшить точность результата. Это преобразовывает изображения истинного цвета в шкалу полутонов с помощью функционального rgb2gray
прежде, чем обработать их.
imfindcircles
использует основанный на Круговом преобразовании Хафа (CHT) алгоритм для нахождения кругов в изображениях. Этот подход используется из-за его робастности в присутствии шума, поглощения газов и переменного освещения.
CHT не является строго заданным алгоритмом, скорее существует много разных подходов, которые могут быть проявлены в его реализации. Однако в общем и целом существует три существенных шага, которые характерны для всех.
Вычисление аккумулятора массивов
Приоритетные пиксели высокого градиента определяются как являющийся пикселями кандидата и позволены отдать 'голоса' в массиве аккумулятора. В классической реализации CHT пиксели кандидата голосуют в шаблоне вокруг них, который формирует полный круг фиксированного радиуса. Рисунок 1a показывает пример пикселя кандидата, лежащего на фактическом круге (твердый круг) и классический избирательный шаблон CHT (подчеркнутые штриховой линией круги) для пикселя кандидата.
Классический избирательный шаблон CHT
Центральная оценка
Голоса пикселей кандидата, принадлежащих кругу изображений, имеют тенденцию накапливаться в интервале аккумулятора массивов, соответствующем центру круга. Поэтому центры круга оцениваются путем обнаружения peaks в массиве аккумулятора. Рисунок 1b показывает пример пикселей кандидата (твердые точки) лежащий на фактическом круге (твердый круг), и их избирательные шаблоны (подчеркнутые штриховой линией круги), которые совпадают в центре фактического круга.
Оценка радиуса
Если тот же массив аккумулятора используется больше чем для одного значения радиуса, как обычно делается в алгоритмах CHT, радиусы обнаруженных кругов должны быть оценены как отдельный шаг.
imfindcircles
предоставляет два алгоритма для нахождения кругов в изображениях: кодирование фазы (значение по умолчанию) и 2D Этап. Обе доли некоторые общие вычислительные шаги, но у каждого есть ее собственные специфические аспекты также.
Общие вычислительные функции, совместно использованные обоими алгоритмами, следующие:
Использование 2D массива аккумулятора
Классическое Преобразование Хафа требует трехмерного массива для хранения голосов за несколько радиусов, который приводит к большим требованиям устройства хранения данных и долгие времена вычислений. Оба методы Кодирования Фазы и 2D Этапа решают эту проблему при помощи одного 2D массива аккумулятора для всех радиусов. Несмотря на то, что этот подход требует дополнительного шага оценки радиуса, полная вычислительная загрузка обычно ниже, особенно при переработке большой области значений радиуса. Это - широко принятая практика в современных реализациях CHT.
Использование краевых пикселей
Полными требованиями к памяти и скоростью строго управляет количество пикселей кандидата. Чтобы ограничить их номер, величина градиента входного изображения является порогом так, чтобы только пиксели высокого градиента были включены в соответствие голосам.
Использование информации об ориентации ребра
Другой способ оптимизировать производительность состоит в том, чтобы ограничить количество интервалов, доступных пикселям кандидата. Это выполняется путем использования локально доступной информации о ребре, чтобы только разрешить голосовать в ограниченном интервале вдоль направления градиента (рисунок 2).
Режим голосования: несколько радиусов, вдоль направления градиента
rmin | Минимальный поисковый радиус |
rmax | Максимальный поисковый радиус |
ractual | Радиус круга, которому принадлежит пиксель кандидата |
cmin | Центр круга радиуса rmin |
cmax | Центр круга радиуса rmax |
cactual | Центр круга радиуса ractual |
Два метода CHT, используемые функциональным imfindcircles
существенно, отличаются таким образом, которым вычисляются круговые радиусы.
2D этап
Радиусы явным образом оцениваются, используя предполагаемые центры круга наряду с данными изображения. Метод основан на вычислительном радиальном [2] [3] гистограмм.
Кодирование фазы
Ключевая идея в Фазе, Кодирующей [1], является использованием комплексных чисел в массиве аккумулятора с информацией о радиусе, закодированной в фазе записей массива. Голоса краевыми пикселями содержат информацию не только о возможных центральных местоположениях, но также и о радиусе круга, сопоставленного с центральным местоположением. В отличие от метода 2D Этапа, где радиус должен быть оценен явным образом с помощью радиальных гистограмм в Фазе, Кодирующей радиус, может быть оценен путем простого декодирования информации о фазе от предполагаемого центрального местоположения в массиве аккумулятора.
[1] T.J Атертон, Д.Дж. Кербизон. "Инвариант размера круговое обнаружение". Изображение и Вычисление Видения. Объем 17, Номер 11, 1999, стр 795-803.
[2] Х.К Юэн.J. Princen, Дж. Иллингуорт и Дж. Киттлер. "Сравнительное исследование методов Преобразования Хафа для открытия круга". Изображение и Вычисление Видения. Объем 8, Номер 1, 1990, стр 71–77.
[3] Э.Р. Дэвис, машинное зрение: теория, алгоритмы, практичность. Глава 10. 3-й выпуск. Издатели Моргана Кауфмана, 2005,
hough
| houghlines
| houghpeaks
| viscircles