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

Мне нужно иметь возможность определять края карты, в настоящее время она работает, когда фон не нарушает работу, и лучше всего, когда он контрастный, но все еще работает довольно хорошо на неконтрастном фоне.

Проблема возникает, когда карта находится на разрушающем фоне, двусторонний фильтр пропускает слишком много шума и вызывает неточное определение краев.

Вот код, который я использую:

bilateralFilter(imgGray, detectedEdges, 0, 175, 3, 0);
Canny( detectedEdges, detectedEdges, 20, 65, 3 );

dilate(detectedEdges, detectedEdges, Mat::ones(3,3,CV_8UC1));

imgGray будучи серой версией оригинального изображения.

Вот несколько тестов на разрушительный фон и результаты (контактная информация искажена на всех изображениях):

Цветная карта:

введите описание изображения здесь

Результат:

введите описание изображения здесь

А вот и белая карточка:

введите описание изображения здесь

Результаты:

введите описание изображения здесь

Может кто-нибудь сказать мне, как я могу сохранить края карты независимо от фона, цвета при удалении шума?

1

Решение

Найти края, используя canny что вы уже делаете, затем найдите contour в образе и найти подходящий rectangle using bounding box и применить некоторый порог на занятость и размеры прямоугольника. Это должно привести к нулю к вашему прямоугольнику, то есть к краям вашей карты, и принять его как ROI на котором вы можете дальше работать.

1

Другие решения


По вопросам рекламы [email protected]