![]() |
|
![]() ![]() ![]() |
|
Kasa89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2011 Репутация: нет Всего: нет |
Привет всем!
Работаю в среде Visual 2005 на С++. для Windows ХР (возможно на W/2000 или типа того) Суть задачи: имеется BMP изображение,работаем с ним,как-то надо среди всех контуров выбрать нужный (т.е. объект), и показать его прямоугольником на исходной бмп-шке, кароч выделить объект на BMP изображении. Затем сохранить это изображение с выделенным объектом как второе bmp. Н-р, выделить рамкой машину на каком-то изображении, или выделить рамкой кружку,которая стоит на столе на столе... кто какими пользовался библиотеками или какие лучше... Может кто-нить сможет подсказать ход процесса....как нужно действовать,чтоб его выделить. илиу кто-нить есть близкая к этой задаче прога... Заранее Гроомадное спасибо ВСЕМ! Это сообщение отредактировал(а) Kasa89 - 23.8.2011, 18:07 |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
И еще неоднократно выйдет зайчик погулять... О чем это я?... Ах да, и еще неоднократно буду рекомендовать эту книжку.
По поводу же помочь написать, по Вашему описанию за вечер такое не сделаешь, поэтому вряд-ли кто-то из дружеских чувств смастерит. Следовательно видятся такие варианты подхода:
![]() Это сообщение отредактировал(а) _Y_ - 20.8.2011, 13:41 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
Без проблем. Но конкретно описывайте - что хотите. Т.к. подобную задачу можно поставить и на супервысоком уровне (например, задача трекинга объектов - выделение рамками движущихся пешеходов и машин на видео, или поиск на фото морд лица и выделение их рамками). |
|||
|
||||
Kasa89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2011 Репутация: нет Всего: нет |
_Y_, спасибо за советы, они бы оч помогли... с чего начать хотя б,какой метод подойдет.
VictorTsaregorodtsev, т.к. я полный новичок в этом)) то было принято решение сначала выделить объект пока на одной фотке, но по сути задача стояла- выделить на видео (.avi), выделение рамками движущихся объектов. Конкретного объекта мне не дали,поэтому надо как-то решить задачу для любого объекта. Т.е. выделить по цвету-не подходит, по размеру - хз, объекты то все разные. И как действовать? С чего начать - с одной картинки? хотя бы с кружки, вообще какие библиотеки подойдут (много слышала про openCV - вроде не для винды ХР, & GDI+), нужно ли переходить в монохромный и там искать контуры, а потом обратно переводить изоб-е... или проги у кого завалялись...буду оч благодарна! спасибо |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Kasa89, т.е. нужен именно тракинг движущегося объекта. Я такое делал на LabVIEW - довольно просто, но с использованием имевшихся там библиотек. В той книжке принципы их работы описаны, кстати. У меня была задача отследить перемещения робота в потоке видео с USB-камеры. Задавалось априори как выглядит робот с точки зрения камеры. А дальше на мониторе был виден робот, бегающий по экрану в наведенной на него рамке.
Если надо - могу поискать в бакапах и описать словесно как делалось. Но это вряд-ли поможет, т.к. там весь Шекспир был именно в библиотеках. Поэтому книжка та принесет гораздо большую пользу, чем мои рассказы о последовательности применения библиотек. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Kasa89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2011 Репутация: нет Всего: нет |
Было бы классно,если б народ подсказал хотя бы библиотеки, работающие с этим...
а если использовать несколько библиотек-они не будут конфликтовать? |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Kasa89, ну, наверное, этот вопрос надо задавать в ветке по С++. Вроде "Какие имеются библиотеки для обработки изображений и/или изображений в видеопотоке?". Наверняка есть. Но я бы еще спросил какие из них хорошие, а какие косые.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
Как-как - с задачай поточнее определиться ;) Есть 2 варианта. 1) Четкое выделение нужных объектов. Тут можно специально обучать систему поиску-распознаванию нужных объектов. Например, см в сторону алгоритма Виолы-Джонса (на форуме его регулярно вспоминают) - для обучения поиску-выделению лиц, людей на изображении. 2) Вычитание из картинки некоторого "эталонного" фона (в качестве результата остаются объекты). Эталон фона либо предварительно фотается, либо восстанавливается в процессе обработки видео (но в последнем случае надо, чтобы объекты двигались - неподвижных объектов от фона ведь не отличить). В простейшем случае - всё великолепно (например, алгоритм chromakey для сплошного зелёного фона). Если же фон меняется (если, например, выделяются объекты на фоне живой природы, а листья-трава при этом колеблются ветром) или меняется освещение - то проблем больше (найденный эталон фона надо адаптировать). Также является проблемой отделение теней, отбрасываемых объектом, от объекта (если тени надо обязательно резать). В общем, тут объекты выделяются в виде криволинейных клякс, а рамками их потом можно при желании обвести. Но если стоит задача типа "видеокараоке" (выделить объект и перенести его на другой фон) - то, естественно, нужны не рамки, а реальная форма объектов. Со вторым вариантом я сейчас сам вожусь, нашел-скачал-прочитал полторы сотни статей на английском, запрограммировал уже 11 алгоритмов (половину - просто в качестве какого-то "наивного" эталона либо для понимания, куда нужно идти для повышения качества решения задачи, например, для понимания необходимости работы либо в цвете, либо в ч/б, для понимания необходимости работы либо с отдельными пикселами, либо с окрестностями пикселов (т.е. с текстурой изображения), и т.д.). Но моих рассказов о полученных практических результатах не будет - сами читайте статьи и думайте, что раскрыли, а о чём умолчали авторы, а также сами реализуйте алгоритмы и их тестируйте в конкретных Ваших условиях. Я максимум могу назвать алгоритм (как поступил выше, упомянув хромакей и Виолу-Джонса) или дать авторов-название какой-то статьи. |
|||
|
||||
Kasa89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2011 Репутация: нет Всего: нет |
_Y_, а меня переместили сюда!
VictorTsaregorodtsev, спасибо за поддержку, в этом вопросе мало кто вообще станет помогать ) А ты как давно занимаешься этим проектом? Задача то ведь серьезная! и на чем пишешь...в какой среде... Тут еще есть одим вопрос,Victor. Может вообще он глупый! Но как ты думаешь, когда следует решить проблему о взаимодеиствии моей будущей проги по распознанию с картой видеозахвата? Просто один руководитель говорит что лучше понять это до того как начнешь писать,а другой говорит,что сначала напиши,а потом будешь думать как они будут взаимодействовать! |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
Вообще-то в той же библиотеке OpenCV есть все необходимые средства для решения этой задачи. Эта библиотека собирается и под Windows.
В самой же библиотеке есть пример захвата видео с веб-камеры и поиска там лиц на основе уже упомянутого алгоритма Виолы-Джонса. Статей в интернете о OpenCV море, на русском в том числе. С минимальным количеством затрат эту задачу можно решить и средствами Matlab, в последней версии которого уже есть строенные toolbox'ы и для захвата видео, и для процессинга всех данных. Описание примеров решения такой задачи с помощью Matlab ещё больше, особенно на английском. В общем, задача очень распространённая и на начальном уровне можно вполне выехать на всём готовом. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Kasa89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2011 Репутация: нет Всего: нет |
Народ,как подключить библиотеку OpenCV (и какую) для Visual Studio 2005 (Microsoft Visual C++)?
|
|||
|
||||
Kasa89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2011 Репутация: нет Всего: нет |
А без библиотек быстродействие лучше?
если используешь,н-р, библиотеку OpenCV или пишешь свою прогу, т.е. без библиотек.... если нужно в итоге 25 кадров в секунду библиотека будет тормозить процесс немного? Это сообщение отредактировал(а) Kasa89 - 22.8.2011, 11:21 |
|||
|
||||
Kasa89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2011 Репутация: нет Всего: нет |
нужно выделение рамкой, а выделение реальной формы объектов не нужно. Я работаю со вторым вариантом. Найти контрастные точки на изображении (работа с контрастом). Т.е. как ты и говорил, VictorTsaregorodtsev, либо двигается объект, и его можно найти на фоне, либо двигается (меняется) фон, и снова выделяется объект... Ну что-то вроде этого... |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
Borland C++ Builder, сильно тяжелую математику при необходимости переписываю на ассемблере. Решайте сами. Там реально 2 блока программы получается - один касается настроек параметров видеозахвата, другой относится к грабежу отдельного кадра. Алгоритм распознавания должен взаимодействовать только со вторым блоком (хотя может и получать от первого блока отдельные результаты, типа установленного размера захватываемого кадра, чтобы сделать какие-то относящиеся к шагу инициализации вещи сразу после успешной настройке видеозахвата). В общем, я не вижу никаких проблем разделить видеозахват и алгоритм обработки. Объектно-ориентированное программирование рулит. От использования веб-камеры или карты видеозахвата ничего реально не меняется (т.к. захват реально пойдёт через VideoForWindows или через DirectShow, а эти стандартные виндовозовские интерфейсы уже сами будут использовать конкретный драйвер того или иного устройства; OPenCV - это вроде обёртка поверх DirectShow, я сам с OpenCV не работал - но веду весь этот разговор к тому, что под работу с каждым новым устройством прогу Вам переделывать не придётся, т.к. прога будет общаться с "промежуточным" (между драйвером реального устройства и Вашей прогой) универсальным (виндовозным или ещё более высокоуровневым библиотечным) программным интерфейсом).
Будет зависеть в первую очередь от реализованного алгоритма. У меня для веб-камеры с разрешением 640*480 все алгоритмы выдают без проблем 15 кадров в секунду, а 30 кадров в секунду уже для отдельных алгоритмов не идёт (но прога пока работает на одном ядре процессора, в однопоточном режиме - т.е. при распараллеливании проги 30 кадров пойдут). Но у меня просто суперские требования к качеству решения задачи (тени резать, к изменению искусственного и естественного освещения адаптироваться,...) - поэтому и алгоритмы использую с тяжеловесной математикой (хотя заказчик поначалу раскатывал губу до желания работы даже с 2мегапиксельными вебкамерами). |
|||
|
||||
Kasa89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2011 Репутация: нет Всего: нет |
Вопрос может и дурацкий... А как ее можно распараллелить? У тя обработка не в реальном времени? Добавлено через 44 секунды А вообще спасибо за инфу =) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |