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

Smorodov

Главные администраторы
  • Количество публикаций

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

  • Посещение

  • Days Won

    346

Сообщения, опубликованные пользователем Smorodov


  1. Посмотрите еще TLD tracker, ну и https://github.com/Smorodov/Multitarget-tracker   .
    LK tracker быстрый, но не самый надежный вариант.
    Я имею ввиду, комбинацию трекеров, простой и быстрый, для коротких треков, между вызовами сложных и точных, для захвата/восстановления трека. Это даст регулируесый уровень компромиса между надежностью и вычислительными затратами/плавностью трека.

    Кстати, я как то делал проект с BFM : https://github.com/Smorodov/nano_bfm
    И еще SMPL: https://github.com/Smorodov/nano_smpl 

    • Like 1

  2. Здравствуйте, предварительныя обработка может убрать шум, если усрежнять кадры или делать морфологию, но, как вы заметили, это не сильно добавляет стабильности, за исключением некоторых редких случаев. 
    Намного лучшие результаты дают фильтры по модели. Это предполагает, что лицо имеет меньше степеней свободы чем независимые точки в том количестве что выдает детектор. Если кратко то у точек 3*N степеней свободы, а у лица M + 6,  где N - количество точек, M - количество независимых групп мышц. 

    Соответственно, точки не могут гулять как попало, они должны принадлежать модели. 
    Есть параметрические модели лиц, например Basel Face model одна из наиьолее популярных, она довольно тяжелая, но можно достать из нее только нужные точки. 
    Дальше линейная оптимизация, поможет сопоставить 2D и 3D, найти поворот, масштаб, смещение и параметры формы. 

    Вот тут посмотрите: https://github.com/3d-morphable-models/curated-list-of-awesome-3D-Morphable-Model-software-and-data

    • Like 1

  3. Если шаблон в изображении встпечается всегда, то можно использовать https://www.ccoderun.ca/programming/doxygen/opencv/group__imgproc__object.html#ga586ebfb0a7fb604b35a23d85391329be

    . Функция matchTemplate поможет найти положение шаблона, но это не детектор, который скажет о наличии или отсутствии его на изображении.

    Если нужен детектор, то надо обучить его на ваш объект. Погуглите OpenCV objtct detector.


  4. Посмотрите тут: 

    Конечно это  не встраивание, но может это и лучше )

    Ну а если более гибкий интерфейс нужен посмотрите в сторону ImGui или Qt 

    шаблон для Imgui + opencv можно взять здесь: https://github.com/Smorodov/imgui_opencv_template

    русский язык и ttf шрифты поддерживаются.


  5. Ну может я что то упустил. 

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

    А сеть постарается собрать что то максимально близкое из данных ей деталей. Как то так.


  6. Ну допустим так:
    GAN получает рендеренные картинки как они должны выглядеть. 

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

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

    Еще посмотрите обратный рендеринг (inverse rendering), например matsuba2. 


    VTK - все же больше для других целей, реалистично в нем сложно отрендерить. 

     


  7. Я имел ввиду сделать рендерилку, на взоде 3Д моделька с параметрами положения каждого зуба, 

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

    Итого, картинка будет функцией от 16*32 параметров. 

    А GAN будет обычный, картинковый ) , датасет тоже картинки. 

    Сейчас есть хорошие PBR рендерилки, ну например googlовский filament иу или что нибудь из либов Nvidia.

     

    PS: погуглите еще 3d morphable models может наведет на новые идеи.

    Ну и вот это гляньте: https://github.com/NVlabs/nvdiffrast


  8. Да нет, просто вопрос как генерировать и как оценивать.

    Можно, например, генерировать изображение лица с улыбкой из тестируемых зубов, а димкриминатор булет оценивать красоту )

    Задаем параметры на входе генератора с матрицами трансформаций, например, на выходе - изображение, далее как обычный ГАН.

    Можно напрямую, , без изображений, но надо как то обучить дискриминатор . 


  9. Занятно, но тут ведь не только эстетика важна, нужно же и поверности совместить правильно.

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

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

    После этого, можно попытаться решить задачку регистрации 3д сеток. (Найти совмещение шаблона и нашей сетки). Классика здесь алгоритм iterative closest point.

    Ну дальше по необходимости  и фантазии )

     

    PS: Вот кстати про 3д зубы ) : https://github.com/Tai-Hsien/MeshSegNet

    ну и вот тут покопайтесь: https://github.com/QiujieDong/Mesh_Segmentation

     

     


  10. Так что имеем то ?

    Сцену в 3д формате, и надо выставить объекты по некоторой ориентированной кривой ?

    Так объекты аннотированны? Или где верх/низ, и т.д. должна решать сеть?

    В общем пока не очень понял что дано, а что ищем.
    Может пару картинок привелете, если не секретно конечно )


  11. Один раз решив PnP, имеем матрицу поворота / переноса.
    Если добавленное смещение мало, можно взять любой треугольник и его проекцию, и по ним вычислить новый базис. 
    И можно не городить огород )


  12. Здравствуйте, в стандартном комплекте есть пример 3D калибровки, у меня это 
    f:\Documents\opencv\samples\cpp\3calibration.cpp 

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

    Фотки для примера (тоже из стандартного набора) 0.ZIP


  13. Как варианты:

    1. Найти 2д ключевые точки, и TPS сплайном выровнять по ним кадры, усреднить, дальше как обычно.

    2. Найти 3д модель руки, содрать текстуру, дальше как обычно.

    Ссылки по теме:

    https://github.com/xinghaochen/awesome-hand-pose-estimation


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

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

    Много методов бинаризации здесь:

    DOXA

    Получить скелет можно при помощи:

    https://github.com/LingDong-/skeleton-tracing

    или мой пост здесь:

    Skeleton

    Кстати, при помощи скелета силуэта руки можно делать выравнивание.

    Ну и можно посмотреть в сторону алгоритма A*, для восстановления связности графа.


  15. Интересно, я имел ввиду чисто цифровое масштабирование драйвером камеры. Ведь мы используем одну и ту же камеру. Как меняется размер сенсора? Ну я могу представить, что можно извратиться, и сфокусировать его на меньший участок сенсора, тогда да, но не думал что так делают ... 


  16. Как раз лучше когда не в одной плоскости.

    По поводу PnP есть неплохой пример здесь: https://learnopencv.com/head-pose-estimation-using-opencv-and-dlib/

    Для плоских объектов лучше использовать что то вроде: https://github.com/arthur1026/RobustPlanarPose

    Вот, как то делал что то такое: MarkerTracker.rar

    • Thanks 1

  17. Как я понял из описания:

    Функция возвращает ROI с корректными пикселями в параметре validPixROI .

    Alpha -задает порог по используемым пикселям, допустим пиксели ценные (сильные угловые точки), то они пройдут высокий порог, а на однотонном гладком участке точки будут малоценными и будут давать большую погрешность при сопоставлении, их ценность близка к 0. Вот из alpha и отсечет в зависимости от значения.  

    • Thanks 1

  18. Не знаю как в шарпе это будет выглядеть, но вообще надо перебрать все контуры, а в контурах перебрать все точки. Двухуровневый цикл.
    Может тут что интересное найдете: https://csharp.hotexamples.com/ru/examples/Emgu.CV.Util/VectorOfVectorOfPoint/-/php-vectorofvectorofpoint-class-examples.html

     


  19. Набрел недавно на прикольный набор инструментов для обработки текстов на русском языке:
    https://github.com/natasha 

    Просто чтобы не забыть )

    Хочу в перспективе соединить со зрением, (другими датчиками) слухом и голосом :)

×