ProgRoman 9 Жалоба Опубликовано April 16, 2012 Добрый день, как можно реализовать Blob detector почитал в интернете и как я понял он строится на основе разности гаусиан int sz,rd,k; GaussianBlur(img1,gim1,Size(sz,sz),rd); GaussianBlur(img1,gim2,Size(sz,sz),k*rd); Mat nimg = gim2-gim1; как я понимаю rd это радиус блоба sz размер гауссова ядра, не совсем понятно как задаётя sz он один для всех rd или нет... как задаётся сам радиус блоба rd и значение k как задаётся просто последовательно от 1 и до какого-то значения... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 16, 2012 Laplacian of the Gaussian вообще то контуры вроде как выделяет, хз что они там под блобами имеют ввиду. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgRoman 9 Жалоба Опубликовано April 16, 2012 а в opencv нет реализованного blob detector?, Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 16, 2012 есть вроде по цвету, в примерах. и еще есть вроде gaussian mixture для отделения объектов от фона. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgRoman 9 Жалоба Опубликовано April 16, 2012 ок спасибо по цвету сейчас смотрю.. ещё такой вопрос.. пусть у нас есть изображение с ключевыми точками можно ли как то выбрать область вокруг ключевой точки что бы она была инвариантна к масштабу?... что бы потом можно было эту область использовать для сравнения Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 16, 2012 хотя врLOG используется в SIFT так что косвенно это как бы относится https://computation.llnl.gov/casc/sapphire/saliency/saliency.html у точки есть дескриптор и по дескриптору сравнивается. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgRoman 9 Жалоба Опубликовано April 17, 2012 а радиус этой области как определить через матрицу Гессе так? вот неплохая ссылка на описание сифта заодно он использует DoG детектор SIFT habrahabr Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgRoman 9 Жалоба Опубликовано April 17, 2012 и ещё вопрос в этой статье есть раздел Уточнение особых точек Как это ни странно, на предыдущем пункте поиск ключевых точек не окончен. Следующим шагом будет пара проверок пригодности точки экстремума на роль ключевой. Первым делом определяются координаты особой точки с субпиксельной точностью. Это достигается с помощью аппроксимирования функции DoG многочленом Тейлора второго порядка, взятого в точке вычисленного экстремума. и приводится формула... я думал что особые точки проверяются не разложением а вот такой формулой из http://courses.graphicon.ru/files/courses/vision/2011/lectures/cv2011_05_features.pdf R=det(M)-k(trace(M))^2, где k=0.04-0.06 или просто отношение R=det(M)/trace(M) или я что-то не то понял?) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 17, 2012 не ну я конечно весь матан не осилил, но Будем считать точку особой, если она является локальным экстремумом разности гауссианов. +всякие там проверки и уточнения. а далее вычисляется дескриптор и на картинке как я понял каждый квадратик это пиксель. из каких соображений выбирается размер окрестности скорее всего надо уточнять по бумагам Lowe. п.с. а зачем вам "радиус этой области"? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 17, 2012 я думал что особые точки проверяются не разложением а вот такой формулой из http://courses.graph...05_features.pdf R=det(M)-k(trace(M))^2, где k=0.04-0.06 или просто отношение R=det(M)/trace(M) или я что-то не то понял?) вы перепутали с детектором хариса, который не инвариантен к масштабу. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 17, 2012 да и мы все таки про блобы говорим или про особые точки? меня вот больше интересует как работает MSER ибо там вроде как какие то регионы, но в opencv все равно при его использовании на выходе точки. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
zloibobig 4 Жалоба Опубликовано April 29, 2012 Есть хорошая библиотека cvblob. Использует основные типы данных из Opencv, правда она на С, но перейти от IplImage к Mat и обратно не составляет труда. Туда передается CV_8UC1 изоражение после преварительной обработки, например, функцией threshold. Дальше библиотека по какому-то алгоритму находит "8-connected components". Подробностей не знаю. Еще можно по идее сегментацию по цвету сделать, чтобы вообще красиво было. Кстати, не подскажете быстрый алгоритм сегментации по цвету? Знаю только в OpenCV MeanShift segmentation алгоритм, но он очень медленный, и все. Также в модуле OpenCV features2d есть класс SimpleBlobDetector. Но он в моем случае ничего не находит, поэтому я использовал cvblob. Кстати, cvblob имеет структуру CvBlob, она хранит уже вычесленные центр блоба, моменты контура, площадь. Могу выложить пример кода использования cvblob. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BeS 53 Жалоба Опубликовано June 25, 2012 да и мы все таки про блобы говорим или про особые точки? меня вот больше интересует как работает MSER ибо там вроде как какие то регионы, но в opencv все равно при его использовании на выходе точки. В OpenCV в качестве точки берется центр региона. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах