Comments 23
А если еще выявлять ключевой объект сцены с наибольшим весом и делать обрезку с учетом правил композиции и золотого сечения?
Мне кажется, картинка выбрана не самая удачная, потому что кажется, что её просто кропнули.
Гугль предлагает гораздо больше интересных вариантов:
https://www.google.ru/search?q=content+aware+image+resizing&tbm=isch
Собрал код за репозиторием: виснет при попытке уменьшить окно, с виду, просто растягивает изображения при увеличении.
https://github.com/martinhath/content-aware-resize/issues/new — это лучше у автора кода спросить
Если интересна реализация на C#, то у меня есть: Seam-Carving-Advanced. Реализация переписана с C++ кода CAIR. Для него, кстати, также доступен враппер.
В качестве дополнительных возможностей есть выбор функции энергии (в статье используется только Sobel), параметр Forward Energy, который позволяет уменьшить зубчатость. Также доступен параметр HD, который влияет на соотношение качество/производительность и написана многопоточная версия алгоритма.
Интересно, а можно ли для аудио?жать кепстры?
Интересно, а если этому алгоритму необрезанное фото Лены скормить — какую часть тела он посчитает самой важной? :-}
Цели могут быть разными. Например если нужно из кожи вон сделать квадратное изображение вместо прямоугольного. Данный способ для этого подойдет как нельзя кстати: быстро и приемлимо.
Как я уже писал ранее, можно помечать области, которые алгоритм трогать не должен или наоборот вырезать в первую очередь. И этот алгоритм не универсален.
Я уверен, через какое-то время все будут со смехом вспоминать эту идею, а здесь, на Хабре, будет статья: "… Представьте, в середине 2010-х нашлись 2 идиота, предложившие уменьшать изображение таким вот образом"…
А я уверен, что такого не будет. Идея хороша для своего времени. Понятное дело, что методы, учитывающие контент, будут работать лучше, чем простые методы. Однако в реализации и обучающей выборке они проигрывают.
Изменение размера изображения с учётом содержимого