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

fotomer

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

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

  • Посещение

  • Days Won

    14

Все публикации пользователя fotomer

  1. stereo 3d reconstruction

    Это да ))) Тут или фреймворки копать или самим писать на основе OpenCV http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html
  2. stereo 3d reconstruction

    Стерео-система имеется ввиду 2 камеры или обычный Structure from motion с одной камеры?
  3. Ортофотоплан это скорее простая сшивка панорамы, т.к. все снимки с одной высоты и в одной плоскости. SFM это расчет положений снимков друг относительно друга в пространстве, а потом можно делать с этим что хош, можно получить точки, а можно развернуть снимки по рассчитанным R и t и положить их на одну плоскость. Впрочем SFM для плоскости и должен выдать плоскость с натянутыми текстурами.
  4. Уже задавал такой вопрос, но может у кого есть новая информация. Есть метод Structure From Motion, который из двух и более снимков получает координаты сходственных точек снимков в пространстве. В OpenCV это реализованно: CameraCalibrate выдает параметры для конкретной камеры(фокус, дисторсия), потом для 2 снимков и 7,8 сходственных точек методом findFundamentalMat рассчитывается матрица их взаимного положения, потом по формуле E = K'TF K получаем матрицу и всовываем ее в функцию SVD (sinagular value decomposition) и получаем искомые R и t, матрица переноса и вращения между 2 снимками. И сколько я не бился погрешность меньше 7% по размеру не получалось, т.е. снимок шахматной доски сверху размер 100 единиц, снизу 93, или хуже. Или я где-то ошибся или сам метод фундаментальной матрицы не очень точен. Интересно что на глаз разница в размерах 7-10% не заметна, и сетка кажется правильной. Т.е. не факт что всякие 3D модельки в интернете получаются точные. Может кто-нибудь оценивал точность измерений? Мне это нужно для замеров при автомобильных авариях, где точность надо уместить в 1%. До этого делал программу, где на местности лежал равносторонний треугольник как мерный объект и удавалось вогнать погрешность в 0.5-1%, но SFM конечно более прогрессивный, когда указывается только 1 размер на местности для масштаба. Еще пробовал программу Agisoft Photoscan, но результат тоже не впечатлил, сетка кривоватая получается, хотя на вход давал фотки без дисторсии.
  5. Снимки были без дисторсии, камера сама ее исправляет и весьма хорошо, объектив фикс 20мм указан в EXIF, по идее Фотоскан должен оттуда взять. А больше параметров вроде и не нужно. Но теперь понятно, для sfm и Фотоскана надо весьма много снимков делать и с малым ракурсом. Для ДТП это не очень подходит, там обычно совсем мало снимков. P.S. Еще интересный момент, я когда делал калибровку камер для своего треугольника, то шахматной доски не достаточно, надо расставлять фишки вдоль метров на 20 и рассчитывать для этого параметры. Тогда камера и вблизи и в дали хорошо измеряет. Если только по шахматной доски, то вблизи хорошо, вдали размеры уплывают. P.S.S. Еще вопросик, актуально ли в обработке видео с камер рассчитывать 3D координаты движущихся объектов? Можно привернуть 2 камеры, положить на местность треугольник, камеры закоординируются по треугольнику друг относительно друга, и убрать треугольник. После чего можно точно измерять например рост идущего человека и расстояние до него.
  6. Спасибо, посмотрю. Похоже догадываюсь в чем дело, SFM хорошо работает когда много снимков с близких ракурсов и так называемую фундаментальную матрицу можно усреднять по большому кол-ву точек. Если есть только 2-3 снимка и всего 8-10 точек на них, а так обычно и бывает в случае ДТП, то большой точности видимо не получить. Еще интересно, что sfm более менее работает, если взять 8 точек с 2 снимков на плоскости (шахматная доска), а если взять 8 точек условно через 10 м уходящие вдаль, то метод сыпется. P.S. Если получится допилить, потом выложу библиотечку, аналог sfm, которая дает 1-2% погрешности для 2 снимков и 8-10 точек раскиданных на местности. C треугольником вот такая точность получается на обычную мыльницу, т.е. практически в "0", 200мм между делениями на линейке.
  7. Вышла OpenCV 3.2

    http://opencv.org/opencv-3-2.html
  8. Нахождение грузовиков на видео

    Если повесить 2-ю камеру хотя бы в метре от первой, то можно точно рассчитывать высоту движущихся объектов от дорожного полотна.
  9. Величина reprojection error

    Есть функция calibrateCamera которая рассчитывает внутренние параметры камеры и возвращает reprojection error. Какой порядок этой ошибки должен быть? И сколько снимков обычно нужно скармливать?
  10. OpenMP

    Попробуй еще std::thread, в нем имхо больше возможностей ручной настройки распараллеливания.
  11. Зависит от кол-ва пикселей в картинке, например Win7 x64 с планкой 4Гб (все лишне отключено) на поиске соответствия на 2 снимках по 18 МегаПикселей вылетает по памяти.
  12. А памяти точно достаточно? Фунции распознования довольно прожорливые. Еще если программа под х86, то в VisualStudio в настройках желательно указать Linker-System - Enable Large Adresses.
  13. Вопрос по findFundamentalMat

    В findFundamentalMat передаются сходственные точки в количестве 7,8 или больше. Допустим найдено 100 сходственных точек, но некоторые из них ложные. Как лучше работать с этой функцией, передавать сразу 100 точек и findFundamentalMat по идее должен внутри отсеивать ложные точки? Или самим выбирать много вариантов по 8 точек и каким-то образом усреднять?
  14. Dll точно релизные? Сделать, если нет, try-catch. Может зависать на выделении памяти. Ну и в релиз отладчиком тоже можно войти.
  15. Я имел ввиду точность измерения линейного размера. Я в свое время делал для ГАИ фотограмметрическую программу, погрешность измерения была до 30 метров не более 1%, до 50метров не более 3%, съемка на обычный фотоаппарат. Еще не подскажешь, есть метод findFundamentalMat. который выдает фундаментальную матрицу для 2 снимков. Есть stereoRectify который выпрямляет снимки, но метод требует матрицы R и T. Как из фундаментальной матрицы получить R и T ?
  16. Здесь http://www.compvision.ru/forum/index.php?/topic/1923-создание-3d-моделей-из-2-снимков/ тоже хотел выяснить для произвольных снимков, но так и не понял как найти матрицу R и T. Если фотоаппараты закреплены на жесткой планке, то R и T можно найти через stereoCalibrate. А какое порядок расстояний надо определять с базой 1м и какая точность желательна?
  17. 1. Сделал калибровку фотоаппарата по шахматным доскам, получил cameraMatrix и distorCoeff. 2. Взял 2 стерео-снимка на местности и одним из методов (я использовал Akaze) нашел массив ключевых точек. Далее как я понял алгоритм такой 3. При помощи stereoRectify выпрямляем снимки. 4. Выпрямленные снимки кладем в stereoBM и получаем карту смещений. 5. Карту смещений подаем в reprojectImageTo3D и получаем искомые 3-х мерные координаты. И сразу спотыкаюсь на stereoRectify которая требует матрицы переноса и вращения R и T. Есть 7 и 8-ми точечные методы для получения фундаментальной матрицы. Но как вытащить из нее R и T непонятно. Подскажите откуда можно добыть R и T между кадрами?
  18. Интересно, а как происходит образование облака точек и сетки? Определение позиции кадра в пространстве -> выделение контуров на снимке -> сопоставление контуров при помощи эпиполярных линий?
  19. Спасибо. Но у них своя математика, не OpenCV. Сколько не искал, но у всех примеры openCV 3D реконструкции половинчатые.
  20. У вас же код на managed C++, типа C#, только синтаксис другой. Попробйте на обычном С++. Если делаете все сначала, имхо сразу надо ставить VS13 или 15 и OpenCV 3.1. Если будете удалять VS2010, лучше делать через эту утилиту https://blogs.msdn.microsoft.com/heaths/2010/08/23/visual-studio-2010-uninstall-utility/
  21. Наложение текстуры на сетку это скорее к OpenGL или DirectX.
  22. Вышла OpenCV 3.1

    Сейчас скачал 3.1 для Windows, есть сборка под платформу х64. Под х86 сборка отсуствует. Может кто в курсе почему? В 3.0 х86 присуствует.
  23. Книги по OpenCV

    Из новенького для начинающих: https://www.packtpub.com/tech/opencv#
  24. OpenCV + не_Cuda

    Можно и на процессоре распаралелить при помощи std::thread.
×