Этот алгоритм (а вернее, представленная здесь его настройка) больше ориентирован на документы, для фотографий можно воспользоваться этой же идеей, только алгоритм придется настраивать по-другому. Общим у них является использование «изображений» локальных минимумов, максимумов и средних, а вот коэффициент контрастирования и количество уровней в пирамидальном разложении нужно подбирать по-другому.
После уменьшения картинки, на низком разрешении, влияние бочки уже не столь велико. Гораздо большее влияние оказывает изгиб листа. Всплеск получается несколько размытым, конечно. Тем не менее, на низком разрешении этими факторами можно пренебречь.
По сути, отсутствие одной из сторон документа влечет неопределенность при последующем исправлении перспективных искажений. Всегда предполагать, что их нет — тоже неправильно. Единственный вариант в этом случае — анализировать содержимое документа, искать линии, образованные строками текста (таблицами, сепараторами...), и пытаться исправить геометрические искажения, основываясь на этой информации. Описанный здесь алгоритм этой задачи не решает, для него необходимо наличие всех сторон документа в кадре. Пользователю будет предложено скорректировать полученный результат вручную.
Ничто не мешает углам быть за пределами изображения с точки зрения описанного алгоритма. Тем не менее, конкретная реализация может иметь некоторые ограничения. Спасибо за подсказанный признак, правда, следует учесть, что бумага не обязательно должна быть белой — алгоритм должен работать и на документах с темным фоном.
Соотношение противоположных границ не должно выходить за указанные пределы. Это никак не ограничивает пропорции документа.
Сглаживание и уменьшение с использованием «nearest neighbor» — не коммутативные операции, в этом легко убедиться. У вас будут получаться совсем другие изображения.
Соотношение противоположных границ не должно выходить за указанные пределы. Это никак не ограничивает пропорции документа.