Предлагаемый метод решения поставленной задачи по распознаванию геометрических образов и подсчета количества трубной продукции состоит из трех частей. Первая част, включает в себя предварительную подготовку изображения к непосредственной обработке. В последующих двух этапах применяется ряд методов обработки изображений из библиотеки OpenCV.
Преобразование окружности Хафа работает примерно так же, как и преобразование линии Хафа, описанное в предыдущей главе.
В случае определения линии, линия определялась двумя параметрами (r,θ). В случае с окружностью для определения окружности нам нужны три параметра:
(4)
где (xcenter,ycenter) определяет положение центра (зеленая точка), а r - радиус, что позволяет нам полностью определить круг, как это видно ниже на рисунке 37.
Рисунок 37 – Применение метода «Hough Circle Transform», библиотека OpenCV42
Преобразование Хафа — это метод обнаружения прямых и кривых линий на полутоновых или цветных изображениях. Метод позволяет указать параметры семейства кривых и обеспечивает поиск на изображении множества кривых заданного семейства. Мы рассмотрим его применение для поиска на изображении прямолинейных отрезков и дуг окружностей. На сегодняшний день применение преобразования Хафа для поиска окружностей является популярным, так как метод является эффективным и позволяет находить на изображении необходимую кривую (или окружность).
Точки окружности можно представить формулой:
(5)
где (a, b) – координаты центра окружности, а R – ее радиус. Для однозначного задания окружности необходимо знать уже три параметра координаты ее центра и радиус. Это приводит к увеличению пространства Хафа на целое измерение. Задача упрощается, если радиус искомых окружностей заранее известен. В таком случае необходимо находить только координаты центров окружностей, и задача снова становится двумерной. Очевидно, что набор центров всех возможных окружностей радиуса R, проходящих через каждую конкретную точку, образует окружность радиуса R вокруг этой точки. Таким образом, геометрическое место точек, которые могли бы быть центрами окружности данного размера, проходящей через эту точку, представляет собой окружность такого же размера с центром в голосующей точке (рисунок 38).
Рисунок 38 – Распознавание окружности методом Хафа43
Наилучшее решение относительно положения центра “наиболее вероятной” присутствующей в конкретном точечном множестве окружности соответствует точке пересечения максимального числа голосующих окружностей. Таким образом, алгоритм поиска окружностей заданного радиуса на изображении сводится к “рисованию” в фазовом пространстве окружностей с центрами во всех непустых точках изображения и дальнейшему поиску локальных максимумов пространства Хафа. При этом могут использоваться различные методы анализа пространства параметров, например, поиск фиксированного числа локальных максимумов, пороговая сегментация аккумуляторной функции или поэтапный исключающий поиск глобального максимума аккумуляторной функции.
На рисунке 39 представлен код с применением метода преобразования Хафа для поиска окружностей.
Рисунок 39 – применение cv.HoughCircles()44
Используются две библиотеки – NumPy и OpenCV.
Прежде, чем применять метод Хафа, мы используем размытие границ по Гауссу (GaussianBlur). Размытие по Гауссу названо в честь математика Карла Фридриха Гаусса (Carl Friedrich Gauss). Это применение математической функции для размытия изображения. Размытие по Гауссу — это низкочастотный фильтр, который сглаживает неравномерные значения пикселей изображения, обрезая самые высокие значения и смягчая изображение.
Сам принцип нахождения кругов делится на этапы:
используется детектор границ Кенни для нахождения границ на изображении;
для ненулевых точек высчитывается градиент (через вычисление первой производной по X и Y через cvSobel());
определяются центры кругов;
относительно центра определяются ненулевые точки, лежащие на одном расстоянии.
Алгоритм работы детектор границ Канни можно разбить на следующие пункты:
Сглаживание. Размытие изображения для удаления шума.
Поиск градиентов. Границы отмечаются там, где градиент изображения приобретает максимальное значение.
Подавление не-максимумов. Только локальные максимумы отмечаются как границы.
Двойная пороговая фильтрация. Потенциальные границы определяются порогами.
Трассировка области неоднозначности. Итоговые границы определяются путём подавления всех краёв, несвязанных с определенными (сильными) границами.
Перед применением детектора, преобразуем изображение в оттенки серого, чтобы уменьшить вычислительные затраты. Этот этап характерен для многих методов обработки изображений.
Исходное изображение представлено на рисунке 40.
Рисунок 4014 – Исходное изображение45
После применения ряда методов для подготовки изображения к последующей обработке, мы получаем изображение, как представлено на рисунке 41.
Рисунок 41 – Изображение после обработки46
После применения преобразований Хафа мы получаем изображение с распознанными окружностями (рисунок 42).
Рисунок 42 – Изображение с подсчитанным количеством труб47 Часть из применяемого кода представлена ниже:
circles_guassian = cv2.HoughCircles(img_gaussian, cv2.cv2.HOUGH_GRADIENT, 0.9, 120, param1=0.9, param2=30,
minRadius=60, maxRadius=90)
circles_rounded_guassian = np.uint16(np.around(circles_guassian))
46 Составлено автором по: [30,31,32]
Но так как не все окружности были определены, а именно полуокружность справа разработанный алгоритм не увидел, то были внесены некоторые доработки в коде.
Для определения полуокружности применяем другой подход. Представленный исходник изображения с полуокружностью расположен на рисунке 43.
Рисунок 43 – Исходное изображение48
После преобразований алгоритм увидел несколько окружностей (рисунок
44).
Рисунок 44 – Изображение после преобразований49
Далее представлено изображение, на котором алгоритм «достроил» увиденные окружности (рисунок 45).
Рисунок 45 – Полученное изображение50
Применим измененный алгоритм на наше первое изображение. Видим, что и полуокружность определилась (рисунок 46).
49 Составлено автором по: [30,31,32]
Рисунок 46 – Полученное изображение с применением доработанного алгоритма51
Do'stlaringiz bilan baham: |