Я работаю над проблемой расширения в C++ с opencv. Я захватил видеокарты автостоянки и, чтобы получить лучшие капли, я придумал это.Dilation Gradient w/different ROI (оптимизация blob) OPENCV
- Эрозия (5x5 ядра прямоугольными), 3 итерации
- дилатация ГРАДИЕНТНЫЕ (думают об этом, как цветной градиент вдоль оси у)
Так что я сделал, чтобы получить эту работу? Сначала мне нужно было знать 2 точки (x, y) и 2 хорошие дилатационные ядра в этих точках. С помощью этой информации можно интерполировать и экстраполировать эти значения по всему изображению. Поэтому я вычислил ROI (размер и дилатацию ядра) из этих параметров. Таким образом, каждый рентабельность инвестиций имеет собственный предопределенный ядро, используемый для расширения. Обратите внимание, что между двумя последовательными ROI (opencv rectangles) нет пробела. Все работает отлично, но есть две побочные эффекты:
- Buldges по бокам сгустков. Черная линия - это граница ROI! buldges picture
- Blobs, которые «отрезаны» от основной капли. На самом деле они не обрезаны, но ROI под одним из blob выше расширяет (я думаю, получает информацию о пикселях из вышеописанного ROI) в капли, которые разделены. Это должен быть один массивный капля. blob who shoudn't be there picture
Я пробовал все об изменении размеров ROI и оставил некоторое пространство между ними, но недостатком является то, что пятно от 2-х отделено ROI не расширено.
Так что мои вопросы:
- Что вызывает эти побочные эффекты точно?
- Что мне нужно сделать, чтобы заставить их уйти?
EDIT
Так что я нашел свое решение: при вызове функции OpenCV Разбавить, один должен быть уверен, что то же самое резюме :: Mat может быть использован в качестве конечного изображения. Если нет, вы будете использовать части оригинального и нового изображения. Таким образом, все, что мне нужно было сделать, это включить пункт назначения cv :: Mat.
Благодарим за отзыв, если я не нашел свое решение, это было бы моим последним средством. –