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

findHomography и обрезка картинки

Recommended Posts

Всем привет

Есть проблема с матрицей перспективных преобразований

Для получения матрицы я использую функцию findHomography

Все отрабатывает хорошо

Далее я использую функцию warpPerspective (понимаю это очевидно)

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

Вот пример у меня есть исходное

https://dl.dropbox.com/u/20178650/Univ2.jpg

Вот после преобразований

https://dl.dropbox.com/u/20178650/diff_002.png

Понятно что надо подправить одно из значений матрицы преобразования, которую мы получили из findHomography

В этом и заключаеться вопрос

В итоге изображение должно быть в центре, а не c краю

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

Буду рад помощи

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну свдиг в матрице гомографии это элементы m13-x m23-y, не очень понятно что вы делаете что оно у вас уезжает.

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

это наверно имеется ввиду максимальный вписанный прямоугольник получить? надо как раз посмотреть куда углы перейдут по формуле.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот использую вот этот пример https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/cpp/brief_match_test.cpp?rev=3921

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

Но в итоге я имею получаю склееное изображение, но обрезанное с одного боку

Мне надо его "подвинуть" чтоб получить полное изображение

смотрел еще вот этот пример

http://hashcode.ru/questions/106160/c-%D1%81%D0%BA%D0%BB%D0%B5%D0%B9%D0%BA%D0%B0-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9-opencv-%D0%B2%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

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

но он коректно склеивает и при этом двигает картинку, если склеивание происходит сверху или с левого бока

как то так

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

возможно не ту картинку варпаете? вроде как надо правую.

и как выбираете размер результирующего изображения (можно брать w=w1+w2 h=h1+h2 с запасом)

обратите внимание на порядок

Mat H = findHomography(Mat(mpts_2), Mat(mpts_1), outlier_mask, RANSAC, 1);

warpPerspective(im2, warped, H, im1.size());

п.с. какая матрица получается?

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

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По поводу порядка пробывал двумя способами, все работает на втором примере, и не работает на первом

(может в С++ интерфесе findHomography как то отлично работает от от C интрефейса )

результирущая картинка - да пока беру побольше, потом что-нибудь умное придумаю, чтоб было точно под размер

п.с. какая матрица получается?

не понял вопроса

ну матрица получаеться 3 на 3

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

да я знаю что есть, мне надо просто дописывать доп функционал, под мою задачу так что не вариант

все равно спасибо за ответ

будем разбираться, если что получиться отпишусь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Quote

п.с. какая матрица получается?

не понял вопроса

ну матрица получаеться 3 на 3

я про сами значения матрицы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

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

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×