Я полностью повторяю то, что сказал Мэтт Грум ... попытка автоматического "выравнивания" изображения на основе чисто логического алгоритма действительно будет эффективной только в идеальной ситуации: когда у вас идеально ровный горизонт в правильно отцентрированном изображении, которое минимизирует искажения объектива и перспективы.
Рассмотрим сценарий, когда вы, как фотограф, делали ровный снимок чего-то, например, озера, у которого нет идеально «горизонтально плоского» берега… берег изгибается вокруг и в конечном итоге встречает вас. Компьютерный алгоритм может попытаться выровнять такое изображение, сделав берег озера как можно более плоским ... но это неверно. Берег озера должен быть наклонен и в конечном итоге изогнут к вам. Человеческий глаз может обнаружить такую вещь, поскольку он включает в себя многочисленные сигналы от всей сцены, а не только от основных линий. Маленькие вещи, такие как то, как выглядят «вертикальные» деревья (что может быть очень эфемерным, что трудно приспособить компьютерному алгоритму).
Я думаю, что это один из тех хороших аргументов для того, чтобы сделать все возможное в камере, прежде чем делать снимок, чтобы убедиться, что ваши снимки выровнены. Помимо технических трудностей, связанных с точным выравниванием снимков с помощью автоматического алгоритма, повороты не на 90 градусов являются одним из самых разрушительных правок, которые вы можете сделать, поскольку для этого требуется повторная выборка каждого пикселя в изображении. Если вы можете делать снимки в камере так, чтобы они были выровнены должным образом, вам не придется выполнять какие-либо повороты, вызывающие ухудшение детализации изображения.