Как стать автором
Обновить

Комментарии 33

Возможно ли такое решение каким то образом использовать для захвата движения в стиле MoCap?
Ну вообще можно, но нужно будет получше потрудиться.
НЛО прилетело и опубликовало эту надпись здесь
Если в кадр попадёт что-то, совпадающее с цветом лимона (рубашка, обои, ...), то будут ошибки?
Да, здесь нужна дополнительная обработка, например по контуру.
НЛО прилетело и опубликовало эту надпись здесь
Можете даже и не читать. Обработка по контурам сводится в практических приложениях к примитивным 3х3-фильтрам-дифференциаторам типа Собеля или Канни, которые только увеличивают шум (как и положено ВЧ-фильтрам) и выдают такую кашу, что в ней даже человек часто ни черта понять не может (что уж говорить про машину!). Фактически, контурная обработка даёт какие-то более-менее вменяемые результаты при дикой контрастности фона и предмета (например, самолёт в небе, тёмные детали на светлом фоне и т.д.). А реально все пользуются гистограмно-пороговыми методами с последующими рекурсивными уточнениями контуров (методы этих уточнений, как правило, и являются основным «ноу-хау» таких алгоритмов).
На самом деле очень плохой тон — кидать куски кода с минимальными комментариями и выдавать это за статью. Простите.
Будем исправляться.
Освещение влияет очень на такой способ.
А, так и где, собственно, лимон? Я увидел только карту попадания в пределы цветов. А координат лимона не нашел.
Я прошу прощения, а для диких людей вроде меня можно уточнить язык (вроде C++) и то, чем собрать это в исполняемый файл в Linux? Я врач, но мне это актуально весьма в экспериментальной работе. Я бы потыкал мануалы.
Похоже на C++, собирать, видимо, g++.
Спасибо) придётся выучить C++ за месяц)))
Если будут вопросы, пишите:)
Хорошо, спасибо) возможно, мне хватит имеющихся инструментов.
Пипетку реализуйте. А бегунки — это уже подстройка будет.
Собственно мне когда-то нужна была именно HSV пипетка для быстрого определения верхних и нижних границ HSV в функции inRange. Реализовано на python, но используется OpenCV, поэтому должно легко перекладывается на C++
И с пипеткой можно ещебольше улучшить распознавание. Сейчас 6 ползунками вы фактически ограничивается параллелепипед в цветовом пространстве. Пипеткой можно брать несколько точек и строить произвольный объем. Правда, проверка вхождения точки в этот объем усложнится.
Занятно. Использовал такой же способ для поиска потерянного квадрокоптера на видео с GoPro. (C++, Qt)
blog.kopterovod.ru/kompyuternoe-zrenie-na-quadrocopter/
Мне удобнее было использовать пипетку + подстройку руками.
Ни фига себе он у вас из каши объекты находит…
Ну, приходилось очень точно подбирать интервалы поиска цвета. Фактически на это ушло примерно столько же времени, сколько на написание самой программки :-)
Ну, дружище, а что мешает построить 4х-мерную гистограмму цвета и найти на ней выбросы. Ибо что бы найти ярко-ядовито-зелёные лопасти на почти сером фоне долго пороги двигать, ну извините… А как бы вы тогда, простите, решали бы задачу летом? А ведь с таким цветом лопастей, поверьте, она решаема! Вам бы игра в пороги бы вообще не помогла!
Конечно я знал, что мой метод «втупую», однако для меня он был самым быстрым. С каким-нибудь умным методом провозился бы дольше, чем с подбором. Бритва Оккама и все дела, дружище :-)
Во как надо кармадрочерством заниматься: всякие хеллоуворлды никому не нужные штамповать!
Как-то пытался по сходному алгоритму детектировать по цвету униформы персонал (магазины) на видео. В целом результат получился не совсем удовлетворительным. Основные проблемы: 1) Внешнее освещение сильно влияет на цвет объекта. Тон (hue) объекта вариабелен меньше всего, но тоже существенно. 2) При сегментации объекта возможны ошибки с выделением его границ. 3) В объекте, особенно при виде сверху, видна не только униформа, но и волосы, кожа и другая одежда — что дополнительно осложняет анализ.

Из полезного от того проекта осталось разве что функция быстрого получения Hue компоненты пространства (HSV) из YUV420p. Реализация, если что здесь.
Ну и результат получился убогим до невозможности. Очевидно, что контрастный жёлтый лимон на фото должен выделяться в лёт. А ваш алгоритм изуродовал бедный лимончик почти до неузнаваемости. Да, область его нахождения (плюс-минус километр) он выделил и даже связность каким-то чудом сохранил, только вот если его дальше распознавать потребуется (например, тип фрукта), то даже человек вряд ли поймет, что изображено в окне «Threshold». Просто цвет не распознают глобально-пороговым методом, иначе получится результат как у вас. Цветовое разделение делается местно-рекурсивным способом с поиском сначала местных границ гистограммно-медианным способом (этот метод официально носит имя какого-то японца, но я его даже запоминать нехочу), а затем уже принимают решение о границе объекта по совокупности обнаруженных местных границ. И вот такой способ работает. По-крайней мере при выделении дорожных знаков (коим я занимаюсь) он «вытаскивает» даже в хлам выцветшие знаки при никаком освещении :)
Я OpenCV изучать начал совсем недавно. Ясное дело я еще очень многого не знаю. Плюс вся нормальная информация на англ. языке, а с ним у меня не настолько все хорошо. Поэтому буду как-то крутиться, может скоро и смогу сложные алгоритмы применять.
Ну если недавно, то тогда — даже неплохо. Давайте продвигайтесь и не забывайте результаты здесь выкладывать :))
та что-то страшно мне уже здесь выкладывать, вот когда будет что-то стоящие:)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории