Перейти к содержимому
Compvision.ru
ProgRoman

Blob detector

Recommended Posts

Добрый день, как можно реализовать 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 и до какого-то значения...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Laplacian of the Gaussian вообще то контуры вроде как выделяет, хз что они там под блобами имеют ввиду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

есть вроде по цвету, в примерах.

и еще есть вроде gaussian mixture для отделения объектов от фона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ок спасибо по цвету сейчас смотрю..

ещё такой вопрос.. пусть у нас есть изображение с ключевыми точками можно ли как то выбрать область вокруг ключевой точки что бы она была инвариантна к масштабу?... что бы потом можно было эту область использовать для сравнения

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хотя врLOG используется в SIFT

так что косвенно это как бы относится

https://computation.llnl.gov/casc/sapphire/saliency/saliency.html

у точки есть дескриптор и по дескриптору сравнивается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а радиус этой области как определить через матрицу Гессе так?

вот неплохая ссылка на описание сифта заодно он использует DoG детектор

SIFT habrahabr

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

и ещё вопрос в этой статье есть раздел

Уточнение особых точек

Как это ни странно, на предыдущем пункте поиск ключевых точек не окончен. Следующим шагом будет пара проверок пригодности точки экстремума на роль ключевой.

Первым делом определяются координаты особой точки с субпиксельной точностью. Это достигается с помощью аппроксимирования функции 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)

или я что-то не то понял?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не ну я конечно весь матан не осилил, но

Будем считать точку особой, если она является локальным экстремумом разности гауссианов.

+всякие там проверки и уточнения.

а далее вычисляется дескриптор и на картинке как я понял каждый квадратик это пиксель.

из каких соображений выбирается размер окрестности скорее всего надо уточнять по бумагам Lowe.

fe6b57079b5e7a2f195173ad982ecccc.png

п.с. а зачем вам "радиус этой области"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
я думал что особые точки проверяются не разложением а вот такой формулой из http://courses.graph...05_features.pdf

R=det(M)-k(trace(M))^2, где k=0.04-0.06 или просто отношение R=det(M)/trace(M)

или я что-то не то понял?)

вы перепутали с детектором хариса, который не инвариантен к масштабу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да и мы все таки про блобы говорим или про особые точки?

меня вот больше интересует как работает MSER ибо там вроде как какие то регионы, но в opencv все равно при его использовании на выходе точки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть хорошая библиотека cvblob. Использует основные типы данных из Opencv, правда она на С, но перейти от IplImage к Mat и обратно не составляет труда. Туда передается CV_8UC1 изоражение после преварительной обработки, например, функцией threshold. Дальше библиотека по какому-то алгоритму находит "8-connected components". Подробностей не знаю.

Еще можно по идее сегментацию по цвету сделать, чтобы вообще красиво было. Кстати, не подскажете быстрый алгоритм сегментации по цвету? Знаю только в OpenCV MeanShift segmentation алгоритм, но он очень медленный, и все.

Также в модуле OpenCV features2d есть класс SimpleBlobDetector. Но он в моем случае ничего не находит, поэтому я использовал cvblob.

Кстати, cvblob имеет структуру CvBlob, она хранит уже вычесленные центр блоба, моменты контура, площадь.

Могу выложить пример кода использования cvblob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да и мы все таки про блобы говорим или про особые точки?

меня вот больше интересует как работает MSER ибо там вроде как какие то регионы, но в opencv все равно при его использовании на выходе точки.

В OpenCV в качестве точки берется центр региона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×