Рассматривайте каждое изображение как отдельную задачу оптимизации, цель которой состоит в том, чтобы оценить параметры наилучшего прямоугольника, который наиболее вероятно соответствует лицевой панели.Таким образом, наша модель - theta = (p_1, p_2, p_3, p_4)
, четыре 2D расположения панели на изображении.Нам нужна энергетическая функция E
для минимизации относительно theta
(например, использование градиентного спуска с импульсом или RANSAC).Есть несколько терминов, которые вы можете использовать, как некоторые идеи:
a.По крайней мере, некоторые из углов должны быть «угловыми»: запустите простой детектор углов и определите энергию E_corner
, которая штрафует расстояние до ближайшего угла.
b.По крайней мере, некоторые из ребер (например, между p_1
и p_2
или p_3
) должны быть "подобными ребру": вычислите величину градиента изображения M = || \nabla I ||
и убедитесь, что по краю панели значенияM
должно быть больше, используя энергию E_edge
.Например, для x,y
вдоль ребра пусть E_edge(x,y)=1/(1+M(x,y))
( Надежные потери здесь, как правило, лучше).
c.Используйте тот факт, что каждая дверь представляет собой проецируемый трехмерный прямоугольник: например, см. этот вопрос .Интересная идея состоит в том, чтобы начать с прямоугольника (представляющего панель) и вместо того, чтобы регрессировать p_i
, вместо этого регрессировать параметры аффинного преобразования или даже преобразования перспективной проекции (хотя это требует глубины оценки алгоритма), который отображаетначальный прямоугольник в единицу на изображении.Затем вы можете упорядочить параметры оценочного преобразования, чтобы предотвратить вывод маловероятных преобразований.
d.Используйте знания о том, что должно быть внутри прямоугольника.Например, учитывая четыре угла, вы можете определить эллипс, определяющий круглую дверь машины.Статистика внешнего вида в этом эллипсе должна быть несколько уникальной, равно как и грани ребер / изображения на границе двери;следовательно, вы можете определить энергетический термин, побуждающий модель выбирать углы, так чтобы внутри был темный эллиптический объект на белом фоне.
В целом, этот подход похож на змей или модели активных контуров , что, возможно, стоит посмотреть на тебя, я думаю.Однако минимизирующие энергию змеи, как правило, не учитывают внутреннюю часть области, которую они окружают;следовательно, некоторый вариант функционала Мамфорда-Шаха может быть полезным дополнением (хотя обратите внимание, что плавность "области двери" не совсем желательна в вашем случае).