Smorodov 579 Жалоба Опубликовано March 7, 2011 Level set сегментация: http://www.engr.uconn.edu/~cmli/DRLSE/ OpenCvLevelSetSegmentation.rar В аттаче проект для VS2008 и документ с описанием (англ). Реализован только простейший вариант. После оптимизации должно получиться что то типа этого: или этого: PS: Именно эти видео сделаны матлабовским кодом localized_seg.rar взятым отсюда: http://www.shawnlankton.com/2008/04/active-contour-matlab-code-demo/ PSS: Много полезного материала по сегментации: http://www.jgmalcolm.com/ 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Виталий 6 Жалоба Опубликовано March 16, 2011 Имеется задача произвести сегментацию изображения. Хочу использовать PyrMeanShiftFiltering, но программа вылетает на этой строке. Оба изображения трехканальные размера 640*480. Код: segment = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 3 ); cvPyrMeanShiftFiltering(img, segment, 20, 40, 2); Ошибка: Unhandled exception at 0x774e1f70 in tracking_1.5.exe: 0xC0000005: Access violation reading location 0x0000027f. Из-за чего это может быть? msvs 2008 + opencv 2.1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Виталий 6 Жалоба Опубликовано March 16, 2011 Может ли это быть связано с библиотекой Videoinput? Тоже самое с функцией PyrDown. Inpaint работает, как нужно. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kudukSweetone 3 Жалоба Опубликовано March 17, 2011 Что-то я ни как не соображу, проект для VS2008 из файла OpenCvLevelSetSegmentation.rar запускается, но с ошибками - не может найти и подключить следующие файлы: #include <opencv2/objdetect/objdetect.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/calib3d/calib3d.hpp> #include <opencv2/imgproc/imgproc_c.h> #include <opencv2/imgproc/imgproc.hpp> Не подскажете где искать эти файлы? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
noonv 3 Жалоба Опубликовано March 22, 2011 сам недавно столкнулся с такой проблемой (делал Генератор комиксов) дело в том, что в версии 2.1 в реализации этой функции есть ошибка, впрочем у меня она нормально работала в Release-версиях программы. можете погуглить и найти как пофиксить эту ошибку и пересобрать библиотеку. или же использовать версию 2.2, где эта ошибка пофиксена 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Виталий 6 Жалоба Опубликовано March 23, 2011 Спасибо. Я думал в чем-то ошибка, а оказалось, что функция неправильно работает. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Виталий 6 Жалоба Опубликовано March 23, 2011 синтаксис похож на 2.2 версию opencv. У вас какая версия? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kudukSweetone 3 Жалоба Опубликовано March 26, 2011 синтаксис похож на 2.2 версию opencv. У вас какая версия? У меня версия 2.0. Поиском файлы не нашлись. Жаль не выходит запустить проект, хотел погонять алгоритм, очень занятный показался. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 9, 2011 OpenSource библиотека для анизотропной фильтрации и сегментации изображений методом Level set: http://www.sintef.no/Projectweb/Geometry-Toolkits/LSSEG/ Набор демонстрационных программ к ней: http://www.sintef.no/upload/IKT/9011/geometri/lsseg/doc/html/sample_programs_page.html Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано January 24, 2012 Level Set сегментация на CUDA 4.0 и VS2010. Время на 640 итераций примерно 0.5 сек. Можно переделать для работы с видео. На каждом кадре выполнять небольшое количество итераций и передавать функции сегментации результаты предыдущей итерации. Солюшн для 2010 студии. Я переделал на CUDA алгоритм c первого поста. Пытался оптимизировать, но что-то не очень поддается , опыта программирования GPU маловато. В архиве небольшой бардак, но лень разбирать: OpenCV_HW.rar 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано January 27, 2012 в опенцв есть cvSnakeImage это не то же самое? пример http://blog.csdn.net/crond123/article/details/3951879 для ImageJ но немного не то http://athena.physics.lehigh.edu/jfilament/index.chy Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано January 27, 2012 LevelSet - позволяет выделять несколько областей с похожими свойствами текстуры, а классические змеи только одну. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 7, 2012 а можно заранее задавать шаблон? чтобы контур как бы к нему сходился? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 7, 2012 Не очень понял вопрос. В Level-Set задается начальное приближение (у меня в примерах просто рамка вокруг изображения). С него он начинает сжиматься. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 11, 2012 да, я просто не очень понял как он работает. что там означает что "Реализован только простейший вариант."? т.е. без разницы какой формы начальная область? по сути захватятся\обведутся все элементы которые попали под критерии настройки? можно как то обвести на картинке область и чтобы все остальные области выделились уже на основе обведенной? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 11, 2012 Есть еще быстрый вариант, который работает только с окрестностью границы. Да, он должен захватывать все элементы, чтобы среднее значение по области при изменении границы разделения областей менялось заметно. Плюс обычный змеиный учет градиента на границе и критерий гладкости контура. Топология не играет большого значения, то есть контуры в процессе итераций могут сливаться/разделяться. По поводу третьего вопроса, нужно экспериментировать. Растить область он точно может, но как и любые змеиные алгоритмы, его останавливают резкие границы (хотя он учитывает еще и содержимое области), то есть если мы нарисуем начальное приближение внутри блоба, то я думаю, что будет выделен именно этот блоб (не проверял). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 12, 2012 ну я спрашивал скорее вопрос такой, что если я выделю одну "амёбу"(не знаю что там точно на картинке сверху) (причем тут учитывается, что я просто аккуратно (или даже не очень, а просто обвожу овалом и по какому либо алгоритму выделяется автоматом более точно) выделяю 1 область, т.е. я ничего не знаю о настройках змеи, а они выставляются из первого выделенного мной объекта), то все остальные амебы на картинке смогут выделится самостоятельно? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 12, 2012 вообщем если спросить еще проще, то вопрос сводится к возможно ли получить настройки змеи из в ручную выделенной области? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 12, 2012 Можно попробовать сделать так: размываем картинку смотрим чему равно средне по выделенной нами амебе бинаризируем + дилатация -> бинарное изображение, которым инициализируем Level-Set (хотя и не знаю даже уже, нужен-ли Level-Set ). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 13, 2012 ну среднее по области это не то. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано September 24, 2012 Еще одна змейка (сделано по руководству http://www.iacl.ece.jhu.edu/static/gvf/): GVS_FIELD.cpp Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано September 25, 2012 Поправьте интерполятор, я там накосячил: эту строчку //p=k1*vmm+k2*vmp+k3*vpm+k4*vpp; поменяйте на эту p=(k1*(vmp+vpm+vpp)+k2*(vmm+vpm+vpp)+k3*(vmm+vmp+vpp)+k4*(vmm+vmp+vpm))/3.0;[/code] Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
totsam 0 Жалоба Опубликовано February 4, 2013 Солюшн для 2010 студии. Я переделал на CUDA алгоритм c первого поста. Пытался оптимизировать, но что-то не очень поддается , опыта программирования GPU маловато. Вроде бы в архиве отсутствуют файлы CommonTools.h, HelloWorld.cpp и kernel.cu (я так думаю, что в нем собственно исходный код этого алгоритма на cuda), без которых проект не соберется. Было просто замечательно добавить их в архив и выложить по новой. Спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 4, 2013 Спасибо за сигнал , все недостающее нашел и перезалил. Даже больше Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах