Я пытаюсь найти контур изображения, перед этим применяю детектор краев Канни. Это дает разные результаты для разных изображений. Для одного изображения он дает идеальные контуры при пороговом значении - min-40 max-240, а для другого изображения - 30-120. Я хочу сделать его универсальным.
Пороговые значения детектора Canny Edge дают разные результаты
Ответы (1)
С точки зрения непрофессионала, обнаружение краев требует порога, чтобы определить, какое различие/изменение следует считать краем. Подробнее читайте здесь.
Таким образом, края зависят от содержимого изображения, т.е. уровня яркости/темноты/контрастности. Я предлагаю вам просто найти среднее значение всего серого изображения и принять пороговое значение следующим образом:
мин_порог = 0,66 * среднее
макс_порог = 1,33 * среднее
Я проверил это, и это дает впечатляющий результат. Вы можете использовать медиану вместо среднего с почти таким же результатом. Другой вариант - сначала выровнять изображение, а затем попробовать порог по вашему выбору/экспериментальный.
Но опять же настоятельно рекомендую попробовать средний метод. В случае возникновения вопросов пишите сюда.
Удачного кодирования :)