Jump to content
Compvision.ru

Smorodov

Главные администраторы
  • Content count

    3,819
  • Joined

  • Last visited

  • Days Won

    342

Everything posted by Smorodov

  1. Можно применить автокорреляцию, не обязательно на сырых изображений. Можно предварительно прогнать через что ни будь типа OpenPose. По автокорреляции прикинуть полный период. А дальше выделить фазы. Ну и по вашему плану.
  2. А стандартный пример из исходников OpenCV пробовали ? https://github.com/opencv/opencv/blob/master/samples/cpp/calibration.cpp
  3. Если только смещение, без поворота то попробуйте, phaseCorrelate() . Можно еще вырезать шаблон и использовать templateMatching, Есть и более продвинутые способы, например : https://www.sicara.ai/blog/2019-07-16-image-registration-deep-learning
  4. Если изображения трансформированы сдвигом, масштабом и поворотом, можно попробовать estimateRigidTransform . Если только смещение, без поворота то, как альтернатива - phaseCorrelate() . Для того чтобы np.stack работала, изображения должны быть одинакового размера и типа, то есть придется их как-то привести к стандартному формату. Вначале посчитать среднее смещение, и принять эту точку за начало отсчета, затем создать пустое изображение для каждого слоя и вклеить в них со смещением, поворотом исходные изображения. Можно использовать warpAffine (попробовать можно здесь.
  5. А что должно получиться ? Насколько я помню, stack сделает 6 слойное изображение. Вы этого добиваетесь? Или нужно просто визуальное наложение с прозрачностью ?
  6. Я на шарпе не пишу, на C++ это было бы так, конвертировать матрицы в тип float при помощи convertTo, затем просто суммировать S=S+m и в конце разделить на количество кадров S=S/n. Или применить addWeighted beta = ( 1.0 - alpha ); addWeighted( src1, alpha, src2, beta, 0.0, dst); alpha в вашем случае 1/n src2=dst , src1 - новое изображение с камеры. dst - буфер где будет вычисляться среднее.
  7. Классически делается при помощи взвешенной суммы addWeigted с коэффициентом 1/n , где n - количество усредняемых кадров. Можно использовать как усреднение в видеопотоке. Описание тут: http://www.emgu.com/wiki/files/3.1.0/document/html/180ae243-ff3c-f59c-7e3a-a8e474583e8e.htm
  8. Ну если знаем 2 точки то alpha=atan2(dy,dx)
  9. Коррекция кадров видео

    Поздно но наткнулся на пакет для решения подобных задач: https://github.com/cruxopen/openISP
  10. Извиняюсь что запоздал с ответом, был в отъезде. Сишный пример из стандартного набора: #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src, dst, color_dst; if( argc != 2 || !(src=imread(argv[1], 0)).data) return -1; Canny( src, dst, 50, 200, 3 ); cvtColor( dst, color_dst, COLOR_GRAY2BGR ); vector<Vec4i> lines; HoughLinesP( dst, lines, 1, CV_PI/180, 80, 30, 10 ); for( size_t i = 0; i < lines.size(); i++ ) { line( color_dst, Point(lines[i][0], lines[i][1]), Point( lines[i][2], lines[i][3]), Scalar(0,0,255), 3, 8 ); } namedWindow( "Source", 1 ); imshow( "Source", src ); namedWindow( "Detected Lines", 1 ); imshow( "Detected Lines", color_dst ); waitKey(0); return 0; } По поводу морфологических операций, cv::dilate затем cv::erode. Для детектора линий, нужно белое изображение на черном фоне.
  11. dilate - утолщит все с сольет в блоки. Структурный элемент взять высотой с символ, шириной примерно в 1.5 - 2.5 от ширины символа. после него erode с тем же ядром, чтобы вернуть размеры блоков. Повторить поиск контуров.
  12. На английском конечно, но по теме ) : https://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/ GetStructuringElement создает структурный элемент для морфологических операций (эрозия, дилатация, открытие, закрытие .... ) элемент представляет собой маленький шаблончик в виде прямоугольника заполненного единицами, реже используется эллипс, крест, и т.д. Посмотрите про морфологические операции и все станет ясно. https://ru.wikipedia.org/wiki/Математическая_морфология
  13. На CPP это cv::resize , на шарпе не знаю. Ну если все получилось, поздравляю! ))
  14. Может там фильтр по минимальной площади текста стоит, попробуйте увеличить размер изображения, или посмотрите параметры тессеракта, помнится таи их огромная куча была. Вот, кстати: https://www.sk-spell.sk.cx/tesseract-ocr-parameters-in-302-version
  15. Ну сетка это слишком жестко ) Под видео ссылка на гитхаб.
  16. В OpenCv ecть встроенные детекторы текста, гляньте здесь: https://www.pyimagesearch.com/2018/08/20/opencv-text-detection-east-text-detector/
  17. Прислушайтесь к тому, что советует Nuzhny, начните с tesseract-ocr, есть даже бинды под шарп https://github.com/charlesw/tesseract например. Пример применения : https://github.com/charlesw/tesseract-samples Но если есть много энергии и желание повозиться, пишите, посоветуем по шагам, но это длинный путь )
  18. Коррекция кадров видео

    Можно попробовать белый ящик для фотографирования разных вещей, может оттуда белый более менее получится взять. Погуглите "light box for photography".
  19. Коррекция кадров видео

    переводить в hsv и выделять цвет, можно было бы, если бы изображение листа было без цвета, но так не бывает в реальном мире лист не белый и не серый, он тоже цветной.
  20. Коррекция кадров видео

    Нет, снимаем любые изображения. Сейчас подумал, что способ будет работать при аддитивной модели искажения i=i_0+i_noise. А здесь, похоже мультипликативная: i=i_0*i_v Так как черное изображение остается черным. PCA пожалуй не разделит в этом случае. Видимо надо сильно размыть изображение белого листа, нормализовать цвет в каждой точке (r=r/norm(rgb), g=g/norm(rgb),b=b/norm(rgb)). Ну и разделить попиксельно исходное изображение на полученные коэффициенты.
  21. Коррекция кадров видео

    Готовых решений не знаю, но можно попробовать слепое разделение источников (blind source separation). Снимаете 2 кадра A и B. делаете из них 3 смеси в разных пропорциях. I1=k1*A+(1-k1)*B I2=k2*A+(1-k2)*B I3=k3*A+(1-k3)*B На самом деле это будут смеси из 3 изображений A, B, и виньетки. Раскладываем на 3 источника, затем вычисляем коэффициенты искажения цвета. Что то типа этого:
  22. Можно, для начала, попробовать что то подобрать здесь: https://github.com/topics/license-plate-recognition
  23. Так это, однослойное требует Проверьте shape загруженного изображения, если слоев 3, просто отцепите один, в сером они все одинаковые.
  24. Расчёт дистанции до объекта

    Да, disparity как то не сошлось. Видимо картинка не подходящая, квадратики гладкие и регулярные текстуры. Не то что любят алгоритмы стерео матчинга. Посмотрите примеры здесь: https://answers.opencv.org/question/117141/triangulate-3d-points-from-a-stereo-camera-and-chessboard/ может наведет на мысли. А почему калибруете через матлаб ? OpenCv - шная тулза не подходит ? Можно попробовать откалибровать opencv-шным и сравнить коэффициенты.
×