На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Распознавание изображений
    Поиск окружностей и их частей на изображении
    На шаге 32 из цикла уроков "OpenCV шаг за шагом" на robocraft.ru приводится способ определения окружности на изображения. Площадь окружности делится на квадрат ее периметра. Данное отношение постоянно для контура окружности любого диаметра и всегда равно 1/(4*pi) или 1/4*CV_PI = 0,079577 как в уроке (исправлено 21.11.16).
    . Данный метод позволяет распознать только полностью видимые окружности с контурами, близкими к правильным окружностям. А как осуществить поиск окружности, частично видимой на изображении?
    Начнем с простого. Возьмем идеальный контур окружности. Для начала выделим ее с помощью прямоугольной области минимального размера. Размеры области можно получить, оперируя с моментами контура окружности. Для окружности область выделения совпадает с описанным квадратом, те получим окружность, вписанную в квадрат. Площадь этого квадрата равна квадрату диаметра или 4 квадратам радиуса, Sкв=4*r^2.
    Возьмем отношение площади рассматриваемого контура, т.е окружности к площади описанного квадрата. Его значение равно pi/4 и не зависит от размера окружности. Площадь контура можно поискать в моментах.
    Теперь рассмотрим случай, когда на изображении видно только половину окружности.
    Я сделал расчеты и получил то же самое отношение - pi/4. См. рисунок. Соотношение сохраняется для случая, когда окружность перекрывается другим изображением по диагонали описанного квадрата, но математические выкладки носят чисто теоретический характер, т.к. на практике достаточно трудно точно определить границы выделяющего треугольника. Возможно, что потребуется использование законов симметрии и отзеркалить видимую часть по диаметру для получения полного изображения окружности. Однако на изображении может остаться только часть дуги окружности и восстановление симметрии позволит получить фигуру, далекую от окружности.
    В итоге я сделал предположение, что отношение площади любой видимой области окружности к выделяющей области будет постоянным и равным pi/4.
    Стоит отметить, что данный метод достаточно трудно реализовать на практике и, видимо, есть более надежные методы поиска.
    Например, если сравнивать дугу окружности с прямой линией (касательной), станет видно, что точки окружности смещаются, уходят на некоторую, скорее всего, постоянную величину. Далее можно перейти к инвариантной величине, постоянной для всех окружностей. Стоит поискать в этом направлении.
    Прикреплённый файлПрикреплённый файлcikle.jpg (59,75 Кбайт, скачиваний: 411)

    Добавлено
    Если по кривой восстановить закон изменения координат ее точек ("момент искривления" ;)), то можно будет востановить недостающие части контура путем интерполяции. Пройдя из любой точки части дуги окружности можно будет прорисовать невидимую окружность и вернуться в исходную точку.
    Сообщение отредактировано: webcoder88 -
      Вариант, показанный на рисунке 3, сводится к варианту, показанному на 2-м. Поворот изображения.
      Как известно, окружность обладает симметрией во всех направлениях, поэтому любая прямая, пересекающая окружность, отсекает правильную дугу. Для нее придумали название - хорда. Хо́рда (от греч. χορδή — струна) в планиметрии — отрезок, соединяющий две точки данной кривой (например, окружности, эллипса, параболы, гиперболы). Прямая, параллельная хорде, пересечет точку дуги по касательной. Перпендикуляры, построенные из центра хорд данной кривой сойдутся в одной точке - центре окружности. Радиус = длина любого перпендикуляра + высота дуги. Зная радиус, можно восстановить окружность по ее видимой части. Зная хорду, можно построить область выделения.
      Отношение площади дуги любого размера к площади выделения величина постоянная, раная pi/4.
      Это первый признак окружности или ее дуги, который можно проверять в 1-ю очередь.
      Второй признак - определение радиуса r окружности и проверка условия - любая точка исследуемой кривой (но в общем случае это часть контура) принадлежит окружности с радиусом r
      Третий признак - отношение площади контура к квадрату его периметра (все это вычисляется через отношение моментов) для окружности равно 1/4/pi. Позволяет распознавать окружности и отличить ее от дуги или любой часть окружности.

      Если взять любое произвольное бинарное изображение (или в градациях серого) и вычислить отношение площадей светлых участков к площади фонового прямоугольника, то отношение будет примерно постоянным на любом масштабе. Изображение объекта на фоне прямоугольной области можно разбить на несколько прямоугольных областей и вычислять отношение площадей для каждой из них. Это дополнительные признаки для быстрой классификации объектов.
      Сообщение отредактировано: webcoder88 -
        также можно вычислять количества светлых точек и количества темных точек и их отношения для ускорения расчетов.

        Сообщения были разделены в тему "спам"
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script Execution time: 0,1058 ]   [ 19 queries used ]   [ Generated: 6.12.19, 15:21 GMT ]