Я не буду вдаваться в конкретные биты, связанные с Matlab, но расскажу об алгоритме, который я бы использовал.
Учитывая только один лист бумаги, алгоритм выглядит примерно так.
- Найдите углы бумаги
- Выберите один набор параллельных ребер и найдите их пересечение на изображении, назовите эту точку P1
- Найдите точку пересечения другой пары параллельных ребер. Назовите это P2.
- Ваша линия горизонта (или линия на бесконечности) - это линия, соединяющая P1 и P2 (простирающаяся за ними)
Однако я не уверен, насколько это будет устойчиво к
- Артефакты обработки изображений
- Не совсем прямоугольная бумага.
- Числовые вопросы.
Вы должны быть в состоянии использовать обе части, чтобы получить улучшенное приближение к решению. Например, вы можете рассчитать P1 и P2 для обеих фигур и найти линию наилучшего соответствия через 4 точки.
Надеюсь, это даст вам некоторые идеи.