Используйте opencv & python, чтобы изменить то, на какую часть изображения камера «смотрит» (перспективное преобразование) - PullRequest
0 голосов
/ 02 октября 2018

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

  • Камера выглядит какнепосредственно в выбранном пикселе вдоль главной оси (то есть ортогонально плоскости датчика изображения).Выбранный пиксель теперь является «главной точкой» изображения (http://ksimek.github.io/2013/08/13/intrinsic/).

  • ). Перспектива изображения преобразуется, предполагая только вращение неподвижной камеры вокруг своей фокусной точки. Преобразование основано нана вращении между старой главной осью и новой "синтетической" главной осью.

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

Изображение было снято с помощью камеры с калиброванным объективом (т. е. объектив камеры был откалиброван с помощью opencv, и, следовательно, внутренняя матрица камеры K известнаПредположим, что в изображении / объективе нет искажений.

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

Однако я не могу найти opencv или другую функцию python, которая делает это.Я полагаю, что я могу рассчитать углы Эйлера вращения и построить гомографию из внутренней матрицы камеры и матрицы вращения.Я не понимаю, как это сделать, и мне интересно, есть ли более элегантный подход.

Может кто-нибудь дать руководство о том, как использовать opencv / python для изменения основной точки изображения с использованием деформации перспективы

...