Перейти к содержимому
Compvision.ru

testkorob

Пользователи
  • Количество публикаций

    8
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем testkorob


  1. так всё в конечном итоге сводится к линейным уравнениям, даже та же окружность от системы из 3 уравнений преходим к двум, квадраты пропадают и уравнения становятся линейными

    за approxPolyDP  спасибо, пойду изучать

     


  2. 5 минут назад, Nuzhny сказал:

    Ну, чуть выше Smorodov скинул ссылку на репозиторий с RANSAC, его же можно просто проверить, работает или нет.
    Далее про Дугласа-Пекера. Раз уж ищутся контуры, то можно их там же упростить/апроксимировать встроенными средствами. Можно даже просто так брать не все точки, а, скажем, каждую десятую.

    извините, не заметил, что по той ссылке есть ссылка на гитхаб:rolleyes: там всё равно как то все очень сложно

    я только за апроксимацию/упрощение встроенными средствами, вот только какими? я только эрозию пытался использовать, линии всё равно толстые. про метод Дугласа-Пекера если честно впервые слышу:( беглое гугленье опять меня напугало большим количеством непонятного кода

    неужели в opencv нельзя получить кривую? прямую же там можно найти, оно как то её усредняет, а почему с кривыми такая беда?


  3. 26 минут назад, Nuzhny сказал:

    Так а RANSAC не сработал? Он уж точно должен был.

    По поводу всех точек: можно брать только точки контура. Контур также можно брать не целиком по точкам, а аппроксимированный методом Дугласа-Рамера-Пекера - OpenCV это умеет. И точек будет совсем немного

    сколько умных людей Вы упомянули...

    я имел ввиду все точки контуров у меня их получается, в зависимости от ситуации конечно, где то  600-800 каждый кадр и каждый кадр считать всю эту громоздкую математику?

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


  4. но ведь для МНК нужно обрабатывать все найденные точки, ведь если я буду брать только часть нет уверенности что они будут нормально распределены, а точек то там огого сколько боюсь не справится комп при работе в реальном времени...

    может быть в opencv есть какой то встроенный метод усреднения?


  5. 1 час назад, Smorodov сказал:

    Если точки знаем точно, окружность определяется тремя точками. Центр можно найти пересечением нормалей, радиус - расстояние от центра до любой точки.
    Есть много кода по этому поводу. 


    Если координаты с шумом, или точность хромает, то 
    есть метод RANSAC который использует статистические методы для улучшения точности. 

    https://sdg002.github.io/ransac-circle/index.html

    в том то и дело, что вопрос, как найти точки, если использовать метод findContours, то в массиве оказывается две линии (внешний край дуги и внутренний)при чём они мам перепутаны и как их разделить я не знаю, между ними хоть расстояние и не большое, но это существенно влияет на детектирование окружности методом трёх точек

    а как найти центр окружности и радиус по трём точкам вообще вопросов нет, это ж система из трёх уравнений с тремя неизвестными, немного алгебраических преобразований и координаты центра находятся решением системы из двух линейных уравнений, радиус же находится подставив точки в уравнение окружности

    вот что получается после findContours  с апроксимацией, извините за кривые руки

    дуга1.png


  6. 5 часов назад, Nuzhny сказал:

    В OpenCV есть функция HoughCircles, не пробовал?

    она как то не адекватно работает, по крайней мере у меня, когда дуга такая как на фотке выше, она её не находит, когда больше похожа на окружность находит сразу штук 10, даже если использовать упрощения и убрать мусор

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

×