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

fotomer

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

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

  • Посещение

  • Days Won

    14

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


  1. 2 часа назад, mult1plexer сказал:

     

    Единственная проблема это вычислительная сложность алгоритмов и их реализация.

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


  2. 2 часа назад, mult1plexer сказал:

    Добрый день. Возникла задача в 3d реконструкции местности, с помощью стерео системы.

    Стерео-система имеется ввиду 2 камеры или обычный Structure from motion с одной камеры?


  3. 23 минуты назад, mrgloom сказал:

    Чо то я там про ортофотоплан не увидел.

    И что должно подаваться на вход для построение ортофотоплана? т.к. как я понимаю в классической постановке SFM имеет в результате sparse point cloud?

     

    Ортофотоплан это скорее простая сшивка панорамы, т.к. все снимки с одной высоты и в одной плоскости. SFM это расчет положений снимков друг относительно друга в пространстве, а потом можно делать с этим что хош, можно получить точки, а можно развернуть снимки по рассчитанным R и t и положить их на одну плоскость. Впрочем SFM для плоскости и должен выдать плоскость с натянутыми текстурами.


  4. 34 минуты назад, Nuzhny сказал:

    А параметры камеры в Фотоскане указывали? Там можно и без них, но если указать, то результат получается точнее.

    Снимки были без дисторсии, камера сама ее исправляет и весьма хорошо, объектив фикс 20мм указан в EXIF, по идее Фотоскан должен оттуда взять. А больше параметров вроде и не нужно. Но теперь понятно, для sfm и Фотоскана надо весьма много снимков делать и с малым ракурсом. Для ДТП это не очень подходит, там обычно совсем мало снимков.

    P.S.  Еще интересный момент, я когда делал калибровку камер для своего треугольника, то шахматной доски не достаточно, надо расставлять фишки вдоль метров на 20 и рассчитывать для этого параметры. Тогда камера и вблизи и в дали хорошо измеряет. Если только по шахматной доски, то вблизи хорошо, вдали размеры уплывают.

    P.S.S. Еще вопросик, актуально ли в обработке видео с камер рассчитывать 3D координаты движущихся объектов?  Можно привернуть 2 камеры, положить на местность треугольник, камеры закоординируются по треугольнику друг относительно друга, и убрать треугольник. После чего можно точно измерять например рост идущего человека и расстояние до него.

     


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

    OpenCV обычно отрабатывает хуже специализированных библиотек. 

    PS: Может брать не два, а больше снимков ?

    Спасибо, посмотрю. Похоже догадываюсь в чем дело, SFM хорошо работает когда много снимков с близких ракурсов и так называемую фундаментальную матрицу можно усреднять по большому кол-ву точек. Если есть только 2-3 снимка и всего 8-10 точек на них, а так обычно и бывает в случае ДТП, то большой точности видимо не получить. Еще интересно, что sfm более менее работает, если взять 8 точек с 2 снимков на плоскости (шахматная доска), а если взять 8 точек условно через 10 м уходящие вдаль, то метод сыпется.

    P.S. Если получится допилить, потом выложу библиотечку, аналог sfm, которая дает 1-2% погрешности для 2 снимков и 8-10 точек раскиданных на местности.

    C треугольником вот такая точность получается на обычную мыльницу, т.е. практически в "0", 200мм между делениями на линейке.

    calib3.jpg

     

     


  6. Уже задавал такой вопрос, но может у кого есть новая информация. Есть метод 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, но результат тоже не впечатлил, сетка кривоватая получается, хотя на вход давал фотки без дисторсии.


  7. 38 минут назад, Khludenkov сказал:

    То есть распберри к примеру не потянет?

    Зависит от кол-ва пикселей в картинке, например Win7 x64 с планкой 4Гб (все лишне отключено) на  поиске соответствия на 2 снимках по 18 МегаПикселей вылетает по памяти.


  8. В findFundamentalMat передаются сходственные точки в количестве 7,8 или больше. Допустим найдено 100 сходственных точек, но некоторые из них ложные. Как лучше работать с этой функцией, передавать сразу 100 точек и findFundamentalMat по идее должен внутри отсеивать ложные точки? Или самим выбирать много вариантов по 8 точек и каким-то образом усреднять?


  9. 14 часа назад, BeS сказал:

    Не понял вопроса. Формула перехода от диспаритета к дистанции стандартная: depth = focal * baseline / disparity. 

    Я имел ввиду точность измерения линейного размера. Я в свое время делал для ГАИ фотограмметрическую программу, погрешность измерения была до 30 метров не более 1%, до 50метров не более 3%, съемка на обычный фотоаппарат.

     

    Еще не подскажешь, есть метод findFundamentalMat. который выдает фундаментальную матрицу для 2 снимков. Есть stereoRectify который выпрямляет снимки, но метод требует матрицы R и T. Как из фундаментальной матрицы получить  R и T ?


  10. Здесь http://www.compvision.ru/forum/index.php?/topic/1923-создание-3d-моделей-из-2-снимков/  тоже хотел выяснить  для произвольных снимков, но так и не понял как найти матрицу R и T. Если фотоаппараты закреплены на жесткой планке, то  R и T можно найти через stereoCalibrate. А какое порядок расстояний надо определять с базой 1м и какая точность желательна?

     

     


  11. 14 часа назад, Smorodov сказал:

    Посмотрите OpenMVG там, я как то делал 3D облако из нескольких снимков.

    Нашел простой пример, который я делал в процессе изучения либы, путем вырезания лишнего  main_3dRec.cpp .

    Спасибо. Но у них своя математика, не OpenCV. Сколько не искал, но у всех примеры openCV 3D реконструкции половинчатые. 


  12. 1. Сделал калибровку фотоаппарата по шахматным доскам, получил cameraMatrix и distorCoeff.

    2. Взял 2 стерео-снимка на местности и одним из методов (я использовал Akaze) нашел массив ключевых точек.

    Далее как я понял алгоритм такой

    3. При помощи  stereoRectify выпрямляем снимки.

    4. Выпрямленные снимки кладем в stereoBM и получаем карту смещений.

    5. Карту смещений подаем в reprojectImageTo3D и получаем искомые 3-х мерные координаты.

     

    И сразу спотыкаюсь на stereoRectify которая требует матрицы переноса и вращения R и T. Есть 7 и 8-ми точечные методы для получения фундаментальной матрицы. Но как вытащить из нее  R и T непонятно. Подскажите откуда можно добыть  R и T между кадрами?


  13. 10 час назад, And36 said:

    Есть рабочий алгоритм обработки видео в реальном масштабе времени построенный в Матлабе. Хочу реализовать его с помощью С++. Исходя из тех рекомендаций, которые нашел в интернете, остановился на VS10+OpenCV231 (Win7x64). может нужно как-то изменить версию Framework?

    У вас же код на managed C++, типа C#, только синтаксис другой. Попробйте на обычном С++. Если делаете все сначала, имхо сразу надо ставить VS13 или 15 и OpenCV 3.1. 

    Если будете удалять VS2010, лучше делать через эту утилиту https://blogs.msdn.microsoft.com/heaths/2010/08/23/visual-studio-2010-uninstall-utility/

    • Like 1
×