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

Khludenkov

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

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

  • Посещение

  • Days Won

    1

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

  1. Код. Нашёл в бескрайних просторах инета и слегка подредактировал. Подскажите, где здесь настройки задать можно (шкалу расстояний). #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <stdlib.h> #include <cv.h> #include <highgui.h> #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/legacy/legacy.hpp" using namespace cv; int main(int argc, char* argv[]) { IplImage *image_ = 0; IplImage *image1_ = 0; //загрузка тестовых картинок image_ = cvLoadImage("D:\\stereoVision\\left.jpg", 1 ); image1_ = cvLoadImage("D:\\stereoVision\\right.jpg", 1 ); //создание дополнительных изображений IplImage *image_g = cvCreateImage( cvSize(image_->width,image_->height), 8, 1); IplImage *image1_g = cvCreateImage( cvSize(image_->width,image_->height), 8, 1); CvSize size = cvGetSize(image_); //создание матриц CvMat* disparity_left = cvCreateMat( size.height, size.width, CV_16S ); CvMat* disparity_right = cvCreateMat( size.height, size.width, CV_16S ); //перевод изображений к градациям серого cvCvtColor( image_, image_g, CV_BGR2GRAY ); cvCvtColor( image1_, image1_g, CV_BGR2GRAY ); //задание начальных параметров стереозрения CvStereoGCState* state = cvCreateStereoGCState(16, 2); //выполнение основной функции стереозрения, возвращающей матрицу 3d cvFindStereoCorrespondenceGC( image_g, image1_g, disparity_left, disparity_right, state, 0 ); cvReleaseStereoGCState( &state ); //вывод матрицы в файл CvMat* disparity_left_visual = cvCreateMat( size.height, size.width, CV_8U ); cvConvertScale( disparity_left, disparity_left_visual, -16 ); cvSave("D:\\333\\disparity.png", disparity_left_visual ); cvSaveImage("D:\\333\\disparity.jpg", disparity_left_visual ); return 0; }
  2. Нашёл пример http://blog.vidikon.com/?p=148 Но там используется CvStereoGCState. В моём openCV такой функции нет.Где его взять?
  3. Точность также примерно 1 метр. Вдалеке - до километра. То есть снимки полностью параллельны? Или что это означает? Можно ли как-то учесть непараллельность снимков?
  4. Здравствуйте. Продолжаю делать сшивку изображений (OpenCV). Допустим есть два снимка в формате cv::Mat. Я их совмещаю, к примеру, с 20-ти процентным перекрытием. И применяю в полученном изображении в области совмещения блендинг. Есть ли какие специальные функции для этого? Или придётся строить ROI для областей совмещения, копировать эти части в отдельные массивы, смешивать, а затем вставлять обратно?
  5. Спасибо. Буду изучать.
  6. Спасибо большое! А если, к примеру, соединять по сложной линии? Например зубцами? Это для каждого изображения вначале создавать и накладывать маску?
  7. И желательно, конечно, чтобы градиентный блендинг был. Теорию понимаю. Прошу помочь с названием opencv функций, которые при этом надо использовать. Наверное это http://www.swarthmore.edu/NatSci/mzucker1/opencv-2.4.10-docs/doc/tutorials/core/adding_images/adding_images.html Читал замечательный pdf про blending, там хорошая теория, про градиентный блендинг, но не указано, как это реализовать на opencv. Прошу подсказать.
  8. Продолжаю разбирать код ститчера (файл stitcher.cpp). Там по всему файлу проходят параметры cameras, например: cameras[i].K().convertTo(K, CV_32F); или вот: for (int i = 0; i < num_images; ++i) { // Update intrinsics cameras[i].focal *= compose_work_aspect; cameras[i].ppx *= compose_work_aspect; cameras[i].ppy *= compose_work_aspect; // Update corner and size Size sz = full_img_sizes[i]; if (std::abs(compose_scale - 1) > 1e-1) { sz.width = cvRound(full_img_sizes[i].width * compose_scale); sz.height = cvRound(full_img_sizes[i].height * compose_scale); } Mat K; cameras[i].K().convertTo(K, CV_32F); Rect roi = warper->warpRoi(sz, K, cameras[i].R); corners[i] = roi.tl(); sizes[i] = roi.size(); } Скажите, что это за камеры такие? Где можно подробнее посмотреть?
  9. Вроде понимать начал. K - коэф увеличения R - вращение
  10. Здравствуйте. Продолжаю изучать панорамирование изображений средствами openCV. Дошёл до блендера. Как я понял, в него последовательно добавляются снимки для создания общего. Не понял для чего нужна маска и можно ли её выкинуть. Скажите, где про его использование почитать можно. Имено про блендинг изображений, а не пикселей
  11. Прочёл про Pyramid Blending. Такие сложности для соединения...
  12. В частности, вот эта часть кода (файл stitcher.cpp) // Blend the current image blender_->feed(img_warped_s, mask_warped, corners[img_idx]); } Mat result, result_mask; blender_->blend(result, result_mask); Получается, у него где-то внутри есть объект в котором набираются изображения, а result, result_mask формируются именно в этих строках?
  13. Здравствуйте. Изучаю код для ститчера. Там есть такая строка: vector<int> indices = leaveBiggestComponent(features, pairwise_matches, conf_thresh); Скажите, что она означает. Доку по opencv читал. Не очень понял.
  14. Спасибо. leave значит оставить, а не выкинуть...
  15. Но как я понимаю, даже в классе stitcher есть его конструктор: Stitcher::createDefault(try_use_gpu); То есть как-то он его использует.
  16. Спасибо. Если можно, ещё вопросы. Тут мне предложили в моём девайсе использовать чип nVidia Tegra K1. Посмотрел описание, достаточно мощный и не очень дорогой (около 100 долларов). Как я понимаю, nVidia специализируется на графике. Какие у них есть ещё преимущества для панорамирования помимо использования CUDA?
  17. А что за процессор? Если надо для встроенной системы сделать, то на FPGA? ARM наверное не потянет? Признаю - понятия матчинг и варпинг относительно сшивки изображений услышал совсем недавно. Скажите, как всё это делается? Если можно, статью или мануал. Книгу Шилезского (или как правильно по транскрипции) посмотрел, там не очень про это написано. Читаю про варпинг. Если это аффинные преобразования, то почему прямые линии переходят в изогнутые?
  18. А может быть подскажите, что занимает большее время: поиск особых точек, собственно соединение изображений или выравнивание получившейся панорамы? Кстати, где вам репутацию плюсануть?
  19. Спасибо, mrgloom. Ищу способы ускорения. Допустим я знаю как расположены снимки друг относительно друга. Я думаю, это должно помочь. Пробую переписать Stitcer::stitch()
  20. Нет, дольше всех работает всё-таки stitching...
  21. Сейчас продебажил демо код. Нашёл что дольше всех работает фукнция setSeamFinder. Сейчас смотрю исходники, буду думать как ускорить процесс.
  22. Версия 2.4.3

    Здравствуйте. Скажите, а версия 2.4.3 в природе встречается? Поставил вепсию 2.4.9. Что-то с ней не так. Делаю простейший пример. В ответ: "не найден класс Мат". "Версия", да, а не "вепсия", конечно.
  23. Версия 2.4.3

    Спасибо. Поставлю тоже 2.4.13. Они ещё версии 3.хх продвигают. Там сильное отличие?
  24. Версия 2.4.3

    Спасибо. Все примеры по установке для 2.2 и 2.4.3 Делаю простейший пример. В ответ: "не найден класс Мат". Фруктовый, может подскажите, что прописать надо, чтобы работало. Где что плюсовать и сказать "спасибо"?
×