Придумал следующее доказательство: выполним описанные в статье построения для окружности, а потом растянем или сожмем изображение по одной из осей, у нас получился эллипс, прямые по-прежнему проходят через середины хорд и пересекаются в центре.
В данном случае магнитуда градиента это просто модуль градиента. Корень квадратный из суммы квадратов векторов направления градиентов по X и Y. Короче, гипотенузу они считают: en.wikipedia.org/wiki/Hypot
Вычисление модуля градиента — это очень распространённая процедура при обработке изображений и детектировании границ.
Для уменьшения шума часто используют гауссово сглаживание. Вот, статья на тему: habrahabr.ru/post/114489
Понижу до 4.0, только google play медленно обновляется займет несколько часов. Есть еще простенькая игрушка на основе этого детекта, у нее требования с 4.0 и для win phone.
Если сравнивать с первоисточником то целевых изображениях результат не сильно отличается, в opencv я знаю про findContours, но он работает на бинарных изображениях, так что шансов у него немного, и HoughCircles но это не эллипсы.
Детектор границ Canny работает на чб изображении. Я выделял эллипсы достаточно просто: считал площадь (contourArea) замкнутого контура, описывал вокруг него эллипс (fitEllipse) и сравнивал значение их площадей. Если они близки, значит контур похож на эллипс.
Работа отличная, особенно если учесть что все в реал-тайме на мобильном устройстве. Однако есть несколько замечаний и комментов.
>> Для дополнения реальности остается лишь восстановить положение плоскости и…
Для определения плоскости вам одной монетки не хватит. Да и двух может не хватить если смотреть на них под определенными углами. Т.е. три монетки, не на одной линии, (т.е. треугольником) должны быть видны, как минимум.
Линзу вы моделируете? Lens Distortion может быть очень значительный, особенно на недорогих камерафонах.
В вашем случае решается сложная задача — поиск границ эллипсов, а что если упростить и искать целые овальчики :)
В случае с колесами велосипеда конечно не прокатит, а в случае с монетками может и прокатить, они же более-менее однородного цвета.
Вот работа моих коллег, там они используют катибрационный паттерн с нарисованными кружочками чтобы потом калибровать положение камеры.
www.ee.oulu.fi/~jkannala/bmvc.html
Проблема клнечно в том что монетка неизвестного цвета, а значит не понятно что трешхолдить. Но можно конечно и выкрутиться.
Детектор эллипсов в реальном времени