Как эффективно представить капли в двоичном изображении с эллипсом? | OpenCV - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу представить BLOB-объекты с ориентированным эллипсом.

Я достиг этого с findContours() в opencv.Но я думаю, что в режиме реального времени контуры приложения или детектор BLOB-объектов, которые будут работать лучше.

GaussianBlur(im, tempIm, Size(9, 9), 1, 1, BORDER_REFLECT);
findContours(tempIm, contours, hierarchy, RETR_TREE, CHAIN_APPROX_TC89_KCOS);

Также Blur расширяет границу BLOB-объекта, который не требуется.

ВводИзображение

Input image

Выходное изображение

Output image

1 Ответ

0 голосов
/ 03 апреля 2019

Контуры - это контур объекта, а Детектор BLOB-объектов - алгоритм поверх findContours. Детектор BLOB-объектов не только находит границы, но также вычисляет центр и соответствует ли он определенным формам и размерам, которые вы определяете. Он тяжелее, чем findContours, и его не следует использовать, если вы заботитесь о производительности и не нуждаетесь в этих функциях.

Вы можете использовать медианное размытие вместо гауссовского, если хотите сохранить двоичное изображение и не расширять контуры. Также вы можете использовать операции расширения / разрушения / открытия / закрытия и их комбинации для удаления шума из двоичного изображения. Эти подходы относительно сопоставимы на двоичных изображениях, и вы можете протестировать как на лучшую производительность, так и на результат и выбрать один для своей задачи.

Код учебника здесь описывает, как представлять найденные контуры эллипсами. cv::fitEllipse используется для создания эллипса для контура. Затем вы можете отобразить его с помощью функции cv::ellipse.

...