Pull to refresh

Comments 24

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

image
Мне не ясно, как можно посчитать у обычной картинки магнитуду, т.к. она считается у комплексных чисел, насколько мне известно.

Заранее спасибо.
В данном случае магнитуда градиента это просто модуль градиента. Корень квадратный из суммы квадратов векторов направления градиентов по X и Y. Короче, гипотенузу они считают: en.wikipedia.org/wiki/Hypot

Вычисление модуля градиента — это очень распространённая процедура при обработке изображений и детектировании границ.

Для уменьшения шума часто используют гауссово сглаживание. Вот, статья на тему:
habrahabr.ru/post/114489
Уже ответили, действительно неточность, это амплитуда градиента, у нас корень из суммы квадратов.
Зубчатое колесо в центре осталось нераспознанным.
Тоже сразу бросилось в глаза
image
Вот увеличенная и раскрашенная картинка, видно что в двух верхних секторах всего две прямые, а нам надо три. Внизу часть арки восстановили.


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

Android 4.4 обязательное требование у приложения на play? Можно понизить?
Понижу до 4.0, только google play медленно обновляется займет несколько часов. Есть еще простенькая игрушка на основе этого детекта, у нее требования с 4.0 и для win phone.
Можете сделать сравнение с готовыми реализациями? Например в OpenCV?
Если сравнивать с первоисточником то целевых изображениях результат не сильно отличается, в opencv я знаю про findContours, но он работает на бинарных изображениях, так что шансов у него немного, и HoughCircles но это не эллипсы.
Детектор границ Canny работает на чб изображении. Я выделял эллипсы достаточно просто: считал площадь (contourArea) замкнутого контура, описывал вокруг него эллипс (fitEllipse) и сравнивал значение их площадей. Если они близки, значит контур похож на эллипс.
замкнутый контур бывает далеко не всегда, вот
картинка из оригинальной статьи
Есть функция аппроксимации, но в целом да, если контур после ее работы не будет целым, то мой вариант не сработает.
У Вас приложение написано на Xamarin, плюс C++ библиотека для обработки изображения?
нет, на java забор с камеры и отрисовка, детект на с++
Работа отличная, особенно если учесть что все в реал-тайме на мобильном устройстве. Однако есть несколько замечаний и комментов.

>> Для дополнения реальности остается лишь восстановить положение плоскости и…
Для определения плоскости вам одной монетки не хватит. Да и двух может не хватить если смотреть на них под определенными углами. Т.е. три монетки, не на одной линии, (т.е. треугольником) должны быть видны, как минимум.

Линзу вы моделируете? Lens Distortion может быть очень значительный, особенно на недорогих камерафонах.

В вашем случае решается сложная задача — поиск границ эллипсов, а что если упростить и искать целые овальчики :)
В случае с колесами велосипеда конечно не прокатит, а в случае с монетками может и прокатить, они же более-менее однородного цвета.
Вот работа моих коллег, там они используют катибрационный паттерн с нарисованными кружочками чтобы потом калибровать положение камеры.
www.ee.oulu.fi/~jkannala/bmvc.html
Проблема клнечно в том что монетка неизвестного цвета, а значит не понятно что трешхолдить. Но можно конечно и выкрутиться.
Плоскость восстанавливается частично, мы не можем восстановить поворот вокруг нормали монеты.

Проблема с поиском овалов — это необходимость удачно бинаризировать изображение.

За статью спасибо, почитаем.
У нас большие сомнения, что детект преобразования Хафа можно сделать в течении нужного нам временного интервала.
Sign up to leave a comment.

Articles