Jump to content
Compvision.ru
OmgZomg

Определение угла поворота камеры

Recommended Posts

Добрый день!

Как с помощью openCV можно определить угол поворота камеры

Спасибо

Share this post


Link to post
Share on other sites

Погуглите slam, ptam, dtam, multiple view geometry, Это не маленький объем математики, и привести его здесь проблематично. Посмотрите библиотечку OpenMVG .

  • Thanks 1

Share this post


Link to post
Share on other sites

Благодарю за ответ!

Вообще, суть задачи следующая:

Есть изображения (пример во вложении). По ним нужно определить угол поворота камеры. Вот хотя бы с чего начать решение задачи?

14_30906_23018.png

Share this post


Link to post
Share on other sites

Как минимум нужно опорное изображение, где камера имеет нулевые углы. Если эти изображения плоские.

Посмотрите еще здесь: https://docs.opencv.org/master/dc/d2c/tutorial_real_time_pose.html

Share this post


Link to post
Share on other sites

Хорошо, тогда нужно будет сравнивать кейпоинты изображений с кейпоинтами опорного изображения?

Share this post


Link to post
Share on other sites

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

По нему и определяют углы поворота и смещения.

Share this post


Link to post
Share on other sites

Там в ответе про угол обзора камеры, а не про поворот вообще. 

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

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

Share this post


Link to post
Share on other sites
10 minutes ago, Smorodov said:

Там в ответе про угол обзора камеры, а не про поворот вообще. 

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

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

Микроскоп едет по столу, где находится образец ткани и фотографирует его.

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

 

Из входных данных имеем фотографии под разными углами и координаты изображений.

 

Прикладываю несколько изображений для примера

Здесь все изображения

https://1drv.ms/u/s!AspbIoSXqblwgoYEys3rWo9Fp9tLDg?e=Rs4VnP

5_24762_23018.png

10_28197_23018.png

Share this post


Link to post
Share on other sites

Если что то вроде оптической мышки получается, то есть изображения с приличным перекрытием, то попробуйте https://github.com/Smorodov/LogPolarFFTTemplateMatcher

или посмотрите cv::estimateRigidTransform + какие-нибудь фичи (sift, surf, orb, ...).

  • Thanks 1

Share this post


Link to post
Share on other sites

Посмотрел Ваш код на гитхабе. Я так понял,чт он основан на питоновской библиотеке imreg. Мне как раз на питоне и нужно.Функция 'imreg.similarity' как раз возвращет angle. Это именно тот угол,который я пытаюсь определить?


 

 

Share this post


Link to post
Share on other sites

У вас он даст угол между двумя изображениями. Они должны перекрываться. Если работать по последовательности кадров, то углы нужно суммировать. 

А тот ли это угол ? Хм... ну это вам лучше знать :) Задача то вами ставится.

  • Thanks 1

Share this post


Link to post
Share on other sites

А если взять опорное изображение,где камера имеет нулевые углы, и сравнивать это изображение со всеми остальными функцией 'imreg.similarity'? Тогда будет давать угол между изображениями

Share this post


Link to post
Share on other sites

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

Короче, если взяв эти деве картинки вы на глаз можете определить поворот, то и комп сможет, если нет, то нет. 

  • Thanks 1

Share this post


Link to post
Share on other sites

Кажется, что лучшее решение - это всё таки 3D реконструкция, например smf.

Скормите ему все свои картинки и получите координаты камеры в 3D для каждого снимка.

  • Thanks 1

Share this post


Link to post
Share on other sites
В 04.05.2020 at 20:57, Smorodov сказал:

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

 

В 04.05.2020 at 15:45, OmgZomg сказал:

А если с помощью координат центрального пикселя и фокусного расстояния?

Возможно человеку нужно вычислить оптический поток и поворот камеры относительно предыдущих снимков по z?

Выделить особые точки на соседних снимках и применить

cv2.estimateRigidTransform(src, dst, fullAffine)

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×