Jump to content
Compvision.ru

All Activity

This stream auto-updates     

  1. Last week
  2. Кусок кода слишком мал, ничего не ясно из него.
  3. На предыдущем шаге в некоторых центрах контуров рисую белые точки. Тут проверяю, если центры не белые то ставлю там большую черную точку, прорисовываю этот контур и добавляю в список, иначе добавляю в другой. Списки изначально пустые.Точки ставит верно но контура рисуются абсолютно все и естественно добавляются все в оба спискаЧто я делаю не так? for i, v in enumerate(c1): for m, z in enumerate(centers): pixel = imgcopy1[z[1], z[0]] if (pixel<200)==True: cv.circle(imvvv, z, 0, (0, 0, 255), 5) # нарисовали точки ellip = cv2.fitEllipse(v) cv2.ellipse(imvvv, ellip, (0, 0, 255), 2) dee.append(v) n = n + 1 else: deliq.append(v)
  4. Earlier
  5. Сейчас в основном нейросетями сравнивают. Точность повыше обычно, чем у классических способов. Хотя, классику тоже нужно помнить и любить ))
  6. Мы же не знаем, что ты хочешь получить в итоге. Надо сделать тестовую выборку, с правильным результатом и проверять на ней.
  7. Задача у меня такая сравнить 2 картинки и сказать похожи ли они. Для начала я нахожу гистограммы каждого изображения и сравниваю их мерой сходства. Далее полученное расстояние и сравниваю с неким порогом, если оно меньше порога, то выполняю подсчет дескриптора AKAZE, отфильтровываю по расстоянию хемминга и фильтром RANSAC. далее проверяю что после фильтрации свсязей осталось больше 6, если больше то говорю что изображения похожи. как вам мой подход? он верен?
  8. работа с 3D объектами

    Я так понимаю он десктопный. Что насчет моб. приложени? я так начитал, что можно использовать VTK? это нормальное решение? на его основе вроде как VIZ и работает?
  9. работа с 3D объектами

    В OpenCV есть cv::viz, который умеет.
  10. Подскажите, позволяет ли OprnCV загружать и хоть как-то рендерить 3Д объектов? Насколько я понимаю нельзя, но мало ли... Может как-то можно подключить OpenGL и через него? Или подскажите какую нибудь кроссплатформенную либу для отображения 3Д на экране мобилы (с возможностью вращения желательно)
  11. Это видео облегченные условия. Здесь прекрасно работает мой детектор движения. Но значительно быстрее, обрабатывает 25 кадров с загрузкой 15%. Но с резким изменением освещенности он не работает.
  12. Вариантов много. Ну и реал-тайм - это не требования. Правильное требование: процессор + память + видеокарта, разрешение видео и сколько времени на обработку одного кадра. А то может оказаться, что детекцию нейросетями надо будет делать на слабом CPU и 25 кадров/сек на видео 6МП. Хотя тут тоже можно натренировать tiny YOLO или MobileNet SSD.
  13. Интенсивность, к сожалению будет тоже разной (интенсивность подсветки разная). На мой взгляд нужно сравнивать 2 соседних кадра и каким то образом не сравнивать кадры с большими изменениями. Но как будет работать при большом количестве людей? kmeans - тормознутый алгоритм, а нужен реал-тайм. Могу сбросить на почту. Напишите в личку.
  14. К сожалению скачать ролик с ютуба не могу, пишет запрещен доступ.
  15. А можно ли вашу программу запустить на этом видео? Если работает - могу дать Вам контакты заказчика.
  16. На первый взгляд кажется, что можно - мы же глазами видим движение по изображению с этой камеры. Очевидно, что классическое вычитание фона тут не справится, потому что оно смотрит на изменение интенсивности пикселей. Первая мысль - избавиться от цвета, то есть перейти в цветовое пространство типа HSV или Lab, а далее работать исключительно с каналом интенсивности (V или L). Далее использовать dense optical flow, например Farneback, получить поле векторов. Далее это поле уже сегментировать (kmeans или что-то сложнее). Результатом сегментации должны стать уже блобы и фон. Это так, взгляд со стороны.
  17. я бы поступил банальным образом. Обучил сетку искать головы, адаптировал под железо. Обучение на разных цветовых моделях. Пример как это у меня работает (на arm)
  18. Я не знаю, как построить детектор движения с обычной камерой в условиях резкого изменения освещения. Я сам пришел к выводу, что нужна камера в ИК-диапазоне, но нужно несколько дней доставка/установка/запись видео. Но остается теоретический вопрос, можно ли построить детектор движения с обычной камерой в таких условиях?
  19. То есть никакого детектора нет? Есть возможность снимать камерой с датчиком глубины? Или камерой в ИК диапазоне?
  20. Потолок этого помещения состоит из множества разноцветных люстр и прожекторов. Когда человек перемещается необходимо управлять освещением и подсвечивать человека. Трудность состоит в том, что для детектора движения невозможно создать background из-за постоянно изменяющегося освещения. Для любого объекта, который перемещается в кадре, нужно вычислять координаты и управлять освещением. Людей может быть много, они могут уходить и приходить.
  21. А что вообще есть на входе? Обычно трекинг понимается в 2-х ипостасях: 1. Visual objects tracking (VOT). Всё это направление подразумевает, что на первом кадре объект как-то нашёлся (детектором, классификатором или был выделен оператором), а дальше на каждом кадре его ищет исключительно сам трекер. Тут можно посмотреть на модуль tracking из opencv_contrib, в частности на CSRT оттуда. Другой классический метод - это STAPLE, но лидеры на сегодняшний день - сиамские нейронные сети (там и датасет, и результаты, и победители). 2. Tracking by detection. Тут принцип другой: непрерывно на видео работает детектор, объект(ы) находится достаточно регулярно. Если объект не находится, то его траектория интерполируется (фильтр Кальмана), он доискивается с помощью VOT и т.д. Когда объект снова находится, то срабатывает какой-то re-id, чтобы узнать, что найден именно тот самый объект (re-id - это сравнение размеров, гистограмм, нейросети и т.д.). Если используется трекинг сразу нескольких объектов, то необходим алгоритм межкадрового связывания: для двух кадров Венгерский алгоритм или аналоги, но популярнее сейчас поиск максимального потока в графе, например.
  22. Добрый день! Необходимо отслеживать перемещения людей (идеально головы человека), при постоянно изменяющемся освещении. Цвет может быть красным, зеленым, синим, дневное освещение и может постоянно меняться. Можно ли стандартными методами и какими решить данную задачу?
  23. Тогда так просто с дивана трудно сказать в чём причина. Реально так и происходит, когда некоторых ресурсов не хватает или есть просадки по времени: в кадре появляется большой объект или движение самой камеры, поток с камеры резко возрастает на P или B frames и они не успевают декодироваться либо теряются. Ведь битрейт - это что-то среднее в секунду, а тут резкое в 1-2 кадра увеличение изменений. Можешь ещё поставить fixed bitrate, если камера это умеет. Кстати, а какая частота I-frames? Обычно он идёт раз в 1-2 fps, то есть у тебя каждый 25-50 кадры.
  24. 1. Это студенческая задача? 2. Это одно изображение или есть множество таких изображений? 3. Если есть множество таких изображений, то эту задачу решается применением нейронных сетей, т.к. быстродействие здесь не требуется.
  25. Я согласен интересный метод, для провода или ветки без листьев. Качание ветки с листьями дает большую плотность и таким методом не возможно отличить от движущегося объекта, в котором тоже не все отличается от фона (например, стекла автомобилей могут не отличатся от асфальта, который был получен на фоне). Я выбрал максимальный битрейд 15 000 кбит/сек и 25 кадров в секунду для FULL HD, так как хочу получить максимальное качество. Реально в диспетчере задач вижу загрузку ~1000 кбит/сек. Я использую DXVA2. Еще могу d3d11. Разницы между ними не увидел. Чем они отличаются? Так как я работаю на ассемблере, то декодер выполнил в виде загружаемой *.dll. Декодер меняться не будет, он на все случаи жизни. Я запускаю 6 потоков: декодер, управляющий поток и 4 потока обработки кадров, т.к. в Intel Atom Z8350 имеет 4 ядра. Декодер заполняет одну из 4 областей памяти и передает сообщение (setenent) управляющему потоку. Управляющий поток дает разрешение на обработку в один из 4 обработчиков. По окончании обработки обработчик передает сообщение в управляющий поток.
  26. Неплохо получилось. 1. Ложные срабатывания на качающихся деревьях и проводах можно легко отбросить с помощью простой оценки плотности: N_pix / A_bb > alpha, где * N_pix - число пикселей переднего плана внутри прямоугольника; * A_bb - площадь прямоугольника (width * height); * 0 < alpha < 1, например alpha = 0.3. Физический смысл очень просто: когда качается ветка или провод, то прямоугольник получается большим, а самого объекта в нём очень мало. Если плотность больше некоторого небольшого alpha, то объект реальный. Иначе отбрасывать. 2. NV12, YUV420, YUV422, YUV444 - это нормально для h.264, RGB там не бывавет. 3. Глюки сигнализируют о том, что потерялся кадр. Причин может быть много: - потерялся в сети, тут можно уменьшить битрейт, можно снизить частоту ключевых кадров; - не успевает декодер - можно попробовать другой, лучше аппаратный; - у тебя однопоточное приложение и все действия (декодирование, детекция, отображение) в сумме занимают больше 1000 / fps млсек. Тогда кадры будут время от времени отбрасываться.
  1. Load more activity
×